Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.12.2016, 04:30
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

grid: Программное изменение ширины колонки
Подглядев код http://docs.sencha.com/extjs/6.2.0/c...eaderResize r

я узнал, чтобы изменить ширину колонки недостаточно вызова метода

Ext.grid.column.Column.setWidth()


нужно отменить свойство flex этой колонки.
А делается это при помощи следующего хака:

delete column.flex;


В документации об этом ни слова. Там вообще такого свойства как flex нет.

Вопрос:

Как обойтись без хака?


П.С. Изменение ширины мне потребовалось чтобы сделать синхронизацию внешнего вида двух таблиц (размеры колонок, расположение колонок, видимость колонок и прочее).
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
  #2 (permalink)  
Старый 03.01.2017, 22:03
Аватар для nohuhu
Профессор
Отправить личное сообщение для nohuhu Посмотреть профиль Найти все сообщения от nohuhu
 
Регистрация: 21.05.2015
Сообщений: 321

Сообщение от khusamov Посмотреть сообщение
Вопрос:

Как обойтись без хака?
Ответ: использовать метод reconfigure, передавая ему массив с конфигурацией колонок, включающей фиксированную ширину.
Ответить с цитированием
  #3 (permalink)  
Старый 04.01.2017, 17:23
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Спасибо за ответ!
Не ясно как делать reconfigure.

Я сделал плагин columnSync, который подключаю к этим таблицам.

Но в таблицах колонки могут иметь очень сложные настройки (всякие actions, references, renderer связанные с контроллером вида, байдинги и прочее). Не говоря о колонках, которые генерируются динамически.

В итоге, как на основе имеющейся таблицы вытащить исходные конфиги колонок, да так чтобы все это хозяйство не порушилось, ума не приложу.
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
  #4 (permalink)  
Старый 09.01.2017, 23:42
Аватар для nohuhu
Профессор
Отправить личное сообщение для nohuhu Посмотреть профиль Найти все сообщения от nohuhu
 
Регистрация: 21.05.2015
Сообщений: 321

Изначальный конфиг вытащить легко, он хранится на всех компонентах в свойстве initialConfig. Но это именно изначальный конфиг, использованный в момент создания компонента конструктором. Если какие-либо свойства изменялись впоследствии, то в initialConfig они, конечно, не попадут.

В вашем случае reconfigure может быть слишком накладно, поэтому лучше всё же менять ширину на существующих колонках. Вы их как изначально конфигурируете, с фиксированной шириной? Если её нет в конфиге, то ColumnLayout будет пытаться считать сам, и свойство flex служит ему индикатором, какие колонки считать, а какие нет.
Ответить с цитированием
  #5 (permalink)  
Старый 10.01.2017, 13:52
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

flex слишком удобный способ задания ширины, от него сложно отказаться. Поэтому конечно некоторые колонки с flex

Так что я делаю вывод что придется удалять свойство flex перед изменением ширины. Тем более что это подсмотрено в исходниках extjs
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
  #6 (permalink)  
Старый 12.01.2017, 21:50
Аватар для nohuhu
Профессор
Отправить личное сообщение для nohuhu Посмотреть профиль Найти все сообщения от nohuhu
 
Регистрация: 21.05.2015
Сообщений: 321

В таком случае хак скорее оправдан, чем нет. Я не вижу в нашем коде поддержку для таких случаев, когда колонки сперва определяют ширину динамически через flex, а потом внезапно становятся фиксированной ширины.

В таких случаях я обычно оставляю комментарий, чтобы потом ответить на закономерный WTF. :)
Ответить с цитированием
  #7 (permalink)  
Старый 13.01.2017, 16:27
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Цитата:
... не вижу в нашем коде поддержку для таких случаев, когда колонки сперва определяют ширину динамически через flex, а потом внезапно становятся фиксированной ширины
Так то оно так, конечно, но если создать грид с flex-колонками, а потом мышкой менять размеры колонок, то flex удаляется, а колонки становятся фиксированной ширины.

Это не удобно, ибо хотелось бы чтобы значение flex корректировалось (мышкой). Потом при изменения ширины таблицы появляется либо горизонтальная прокрутка либо пустое место справа - и все это из-за того, что ширины колонок фиксированные.

В итоге в коде сенчи собственно хак и используется. Которым придется воспользоваться.

Спасибо за ответы!
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение ширины таблицы с JS igory Элементы интерфейса 5 14.11.2013 15:47
изменение значения в grid demi ExtJS 4 21.08.2013 07:24
Grid - изменение ширины колонки aleksill ExtJS 0 29.04.2013 13:40
Как обработать программное изменение checked nickolasha Events/DOM/Window 1 22.08.2011 15:21
IFRAME согласно разрешения экрана и ширины колонки?? reDDevil Элементы интерфейса 0 30.10.2009 19:11