group

Свойство с типом group предназначено для группировки в себе части или всех контейнеров из какого либо виртуального массива. При инициализации данного свойства htmlix ищет в html разметке контейнеры объявленные внутри него и добавляет их в поле groupChild, а также добавляет ссылку на их виртуальный массив в поле groupArray.

В дальнейшем если понадобится добавить в группу новые контейнеры можно просто вызвать метод: setProp({container_prop1: "данные1", container_prop2: "данные2", и т.д. }) - чтобы добавить контейнер в группу, либо setProp([ {container_prop1: "данные1", container_prop2: "данные2", и т.д. }, {container_prop1: "данные1", container_prop2: "данные2", и т.д. }]) - чтобы перезаписать группу.

Htmlix создаст контейнеры для группы из массива который был сохранен в свойство groupArray. Если при инициализации в свойстве с типом group не будет контейнеров, то соответственно ссылка на массив не будет создана, поэтому при добавлении новых контейнеров в группу htmlix попробует отискать ссылку на groupArray в свойствах group смежных контейнеров (если они не пустые) и если не найдет выдаст ошибку. Поэтому при создании свойства с типом group в нем либо должен быть контейнер который здесь будет отображаться либо шаблон template в свойстве group нулевого контейнера. Либо при использовании метода setProp напрямую указать виртуальный массив из которого брать шаблоны:

setProp( {componentName: "имя_виртуального_массива", group: [ {container_prop1: "данные1", container_prop2: "данные2", и т.д. },  {container_prop1: "данные1", container_prop2: "данные2", и т.д. }] } );

Открыв в консоли свойство с типом group можно увидеть следующие поля:

  • groupArray - ссылка на виртуальный массив контейнеров данной группы;
  • groupChild - группа контейнеров из виртуального массива, порядковый номер совпадает с полем groupId конкретного контейнера группы.

Также у свойства с типом group имеются дополнительные методы:

  • .removeFromGroup(groupID) - удаляет контейнер из группы а также из виртуального массива, где groupID - индекс контейнера в группе;

  • .clearGroup() - удаляет все контейнеры из данного свойства а также из виртуального массива;

  • .addToGroup(container, insertLocation) - добавляет контейнер в группу и создает в нем поля .groupId - индекс группы, .groupParent - ссылка на свойство в котором находится контейнер где container - сам контейнер, insertLocation - позиция для вставки, если не указать то вставит в конец группы;

  • reuseGroup(arrayWithObjects) - аналогичен reuseAll(arrayWithObjects) - только не для массива а для группы, единственная особенность его работы заключается в том, что в свойстве должна быть ссылка на виртуальный массив данной группы this.groupArray если в данном свойстве ее нет, то он попытается отыскать ее в свойствах смежных контейнеров, если не найдет то не сработает. Поэтому при создании разметки, в свойстве с типом group нулевого контейнера, должен находиться контейнер который здесь будет отображаться, чтобы запомнить на него ссылку, если необходимо создать пустое свойство для всех контейнеров и только в процессе добавлять туда контейнеры, необходимо создать шаблон с типом "template" и (style="display: non") для того чтобы запомнить ссылку на массив группы, либо использовать метод .createNewGroup(groupArr, componentName)

  • .createInGroup(props, insertLocation) - создает контейнер в виртуальном массиве и затем добавляет в группу на указанную позицию, если не указать добавит в конец, для работы требует наличие поля this.groupArray !=null которое добавляется при инициализации приложения. Поэтому при создании разметки, в свойстве с типом group нулевого контейнера, должен находиться контейнер который здесь будет отображаться, чтобы запомнить на него ссылку, если необходимо создать пустое свойство для всех контейнеров и только в процессе добавлять туда контейнеры, необходимо создать шаблон с типом "template" и (style="display: non") для того чтобы запомнить ссылку на массив группы.

  • .createNewGroup(groupArr, componentName) - если виртуальный массив данной группы this.groupArray.pathToComponent совпадает с именем componentName то вызывает метод reuseGroup(groupArr) , если не совпадает, удаляет все из группы и создает новую с контейнерами из виртуального массива componentName, где groupArr - массив с объектами, ключи которых - имена свойств, а данные этих ключей, данные для свойств.

Вызов метода setProp(val) - в свойстве с типом group:

  • если val -объект с начальными данными для свойств в формате ключ - значение, вызовет метод .createInGroup(val, insertLocation), insertLocation=val.location
  • если val - массив с объектами, ключами которых являются имена свойств - вызовет метод reuseGroup(val)
  • если val объект с полями val.componentName-имя виртуального массива, val.group- массив с объектами, ключами которых являются имена свойств - вызовет метод .createNewGroup(val.group, val.componentName)

Вызов метода removeProp(val)

  • если не передать параметр вызовет .clearGroup()
  • если передать вызовет .removeFromGroup(val=groupID)

Вызов метода getProp() возвращает массив с объектами ключами которых будут названия свойств, а значения, данные полученные из этих свойств на каждом контейнере, использует работает на основе метода getAllProps(), если передать параметром mapObject={key1: "", key2: {ke1: ""} } .getProp(mapObject), вернет свойства только совпадающие по названиям с key, таким образом можно получить развернутый объект со всеми значениями свойств либо со всеми нужными значениями свойств из дочерних контейнеров;