Изменение поля в Groupedit в зависимости от значения в другом поле

В ember-flexberry существует возможность настроить зависимость одного поля в groupedit от значения другого поля этой же строки. Логику зависимости можно определить согласно конкретной задаче.

Например, существует задача, согласно которой требуется, чтобы поле Flag становилось недоступно для изменения в том случае, если в поле Enumeration введено значение Block Flag.

Пример GroupEdit

Для реализации данной логики нужно:

  1. Создать в контроллере observer, отлавливающий изменения в каждом поле столбца Enumeration:
  enumerationObserver: observer('model.details.@each.enumeration', function () {
    const details = this.get('model.details').toArray();

    details.forEach((detail) => {
      let rowConfig = detail.rowConfig;
      if (rowConfig) {
        this.send('configurateRow', rowConfig, detail);
      }
    });
  }),
  1. В экшене configurateRow, к которому обращается enumerationObserver, реализовать логику зависимости поля Flag от значения поля Enumeration соответствующей строки:
  actions: {
    configurateRow(rowConfig, detail) {
      let enumeration = detail.enumeration;

      if (enumeration === 'Block Flag') {
        set(rowConfig, 'readonlyColumns', ['flag']);
      } else {
        set(rowConfig, 'readonlyColumns', []);
      }
    }
  }

Реализация данного примера доступна на тестовом стенде. Для блокировки поля Flag нужно выбрать Block Flag в списке поля Enumeration.