initi.doc/docfiles/custom/publishers.js

82 lines
4.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* ### Протокол и данные паблишера
*
* @name 01
* @publishers
* @memberof publishers
*/
/**
* #### DragData - описание того, как работать с драгом из паблишера
*
* Важно понимать, что если вы положили component, то model или group класть уже не нужно, т.к. данные о них у вас уже есть
*
* <br>
*
* #### Структура
* ```
* // dragType - один из типов, того что возможно перетаскивать
* // Map(String, String) - определяет какой атрибут будет использован для получения данных
* // короче говоря, у нас есть список колонок, которые приходят в responseTableInfo под полем tableInfo : List(VariableContainer)
* // и там есть поле colId - это идентификатор колонки.
* // Так вот, ключ в этой мапе и есть colId,
* // Значением же выступает имя опции, под которым значение в поле перетаскиваемой строчки будет положено в данные клипборда
* // в таблице ниже, приведены атрибуты соответствующие dragType'ам
*
* // структура
* VariableContainer [
* <dragType> : Deque(Structure[
* type: Number, // 0 - обычный режим (установит по значению cbAttrId то, что в ячейке colId)
* // 1 - установит в cbAttrId имя ячейки
* // 2 - установит в cbAttrId значение ячейки
* colId: String, // этот атрибут нужен только когда type=0,
* cbAttrId: String // этот атрибут нужен всегда, т.к. он указывает идентификатор поля в объекте клипборда
* ])
* ]
*
* // пример
* // Здесь мы видим dragType "model"
* // Дальше мы находим colId "modelAddr" и получаем данные из паблишера в нужной строчке по этому полю
* // затем мы укладываем по clipboardOptionId "address" в объект клипборда значение, которое было получено из таблицы
* VariableContainer [
* model: Deque(VariableContainer)[
* VariableContainer [type: 0, colId: "modelAddr", cbAttrId: "address" ]
* ]
* ]
*
* // результат
* new CBModel({"address": Address[]})
*
* // Если тип = 0, тогда мы берем по colId "modelAddr", вынимаем значение по нему, и укладываем в поле "addr"
* VariableContainer [
* component: Deque(VariableContainer)[
* VariableContainer [ type: 0, colId: "modelAddr", cbAttrId: "address" ]
* VariableContainer [ type: 0, colId: "cTag", cbAttrId: "cTag" ],
* VariableContainer [ type: 0, colId: "cid", cbAttrId: "id" ]
* ]
* ]
* // результат
* new CBComponent({"address": Address[],"cTag": "someCTag","id": "someId"})
* ```
*
* <br>
*
* #### Описание dragType'ов
*
*| dragType | description | attributes
*|---------------- |------------------------------------------------ |-------------------------------------------------------------------------------------------------
*| model | позволяет перетаскивать устройства | address:Address
*| group | позволяет перетаскивать группу | address: Address, cTag: String
*| component | позволяет перетаскивать компонент | address: Address, cTag: String, id: String
*| attribute | позволяет перетаскивать атрибут | address: Address, cTag: String, id: String, name: String
*| attributeValue | позволяет перетаскивать значение атрибута | address: Address, cTag: String, id: String, name: String, value: Any
*| componentCell | позволяет перетаскивать из паблишера компонент | address: Address, cTag: String, id: String, name: String, value: Any, componentTypeName: String
*| alarmCell | позволяет перетаскивать из паблишера аварий | address: Address, cTag: String, id: String, name: String, value: Any, componentTypeName: String
*| node | позволяет перетащить ноду | nodeId: Integer, treeTag: String
*
*
* @name 02
* @publishers
* @memberof publishers
*/