Members
-
autoEditEventsEnabled
-
Включены ли обработчики изменения поля в случае изменения поля программно
- Source:
-
events
-
Обработчики в формате 'event selector': 'handlerName'
- Source:
Examples
events: { 'field:edit #Name': 'onChangeName' }
events: { 'field:edit #Date__d_Contact_Date_Matrix': 'onChangeDateMatrix' }
-
IrisCardController
-
Родительский "класс" для карточек. На каждую карточку (для каждой записи) должен создаваться отдельный экземпляр контроллера.
- Source:
-
IrisController
-
Родительский "класс" для карточек, таблиц и фильтров
- Source:
-
IrisGridController
-
Родительский "класс" для таблиц
- Source:
-
T
-
Многоязычность
Основная задача класса - перевод интерфейса на различные языки. Большая часть переводов происходит на стороне сервера, для этого служит класс Language на PHP. Класс T работает полностью аналогичным образом, но занимается переводами только тех элементов интерфейса, которые динамически создаются именно на стороне клиента. С помощью этого класса также склонять слова в различных падежах. Переводы хранятся в каталоге language. Основной язык системы - русский, поэтому файл language/ru/ru.php почти пуст, а language/ru/ru.js и вовсе отсутствует.
Файлы с переводами вызывают метод setLanguage и передают в него объект, ключами которого являются фразы для перевода, а значениями - переводы этих фраз на нужный язвк. Ключи сгруппированы в логические группы. Описание групп ключей полностью аналогично описанию в классе Language.
Для примера см. файл language/en/en.js.
- Source:
-
Transport
-
Обмен данными с сервером
- Source:
Methods
-
bindFields(masterFieldName, dependentFieldName, parentFieldNameopt)
-
Зависимость полей-справочников
Работает только для lookup-lookup и select-select. В случае select-select может быть немколько зависимых полей для одного master.
TODO: Реализовать также связи для lookup-select, select-lookup
TODO: Реализация с filter_where нецелесообразна
Parameters:
Name Type Attributes Description masterFieldName
Код основного поля
dependentFieldName
Код поля, значение в котором надо фильтровать
parentFieldName
<optional>
Название поля в таблице, по которому надо фильтровать значения.
- Source:
Example
onChangeAccountID: function () { this.updateName(); // Поле Контакт зависит от поля Компания this.bindFields('AccountID', 'ContactID'); }, onOpen: function () { this.getField('Number').attr('readonly', 'readonly'); // Поле Контакт зависит от поля Компания this.bindFields('AccountID', 'ContactID'); this.onChangePaymentTypeID(); }
-
customGrid(params)
-
Запрос к серверу для построения пользовательского грида
Parameters:
Name Type Description params
Object Параметры для передачи на сервер. Допустимые свойства:
- section - Код раздела, в котором расположен файл с серверной логикой
- class - Название класса с серверной логикой
- method - Название серверного обработчика
- [parameters] - Параметры для передачи на сервер. Эти параметры передаются в серверный обработчик
- [properties] - Свойства грида
- onSelect - JS-обработчик выбора записи в гриде, который принимает id выбранной в гриде записи.
Метод, указанный в свойстве method, должен возвращать ассоциативный массив с элементами:
- Card - HTML карточки с пользовательским гридом
- GridId - Идентификатор грида
- Или Error - С текустом ошибки в случае ошибки.
Для примера серверного обработчика см. config/sections/Task/c_task.php
- Source:
Example
selectNextTarget: function() { var self = this; this.customGrid({ section: 'Task', 'class': 'c_Task', method: 'renderSelectRecordDialog', parameters: { taskid: this.parameter('id'), projectid: this.fieldValue('ProjectID'), targetid: this.fieldValue('TaskTargetID'), nexttargetid: this.fieldValue('NextTaskTargetID') }, onSelect: function(record_id) { self.fieldValue('NextTaskTargetID', record_id); } }); },
-
fieldData(id, property, valueopt, eventopt) → {string|this}
-
Получить или установить значение атрибута вида data-<атрибут>.
Parameters:
Name Type Attributes Description id
string Код поля
property
string Название атрибута
value
string <optional>
Значение атрибута поля. Если параметр не передан, то метод вернет текущее значение поля.
event
Object <optional>
Событие. Его необходимо передавать только для поля matrix. Если метод вызывается для получения значения matrix, то можно аргумент event передавать третьим по счету, вместо value.
- Source:
Returns:
Значение атрибута, если метод используется для получения значения. this, если присваивается знаечние.
- Type
- string | this
Example
// Для поля Name значение атрибута data-mydata = myvalue. this.fieldData('Name', 'mydata', 'myvalue');
-
fieldDisplayValue(id, displayValueopt, eventopt) → {string|this}
-
Получить или установить отображаемое значение поля. Имеет смысл для lookup-полей.
Parameters:
Name Type Attributes Description id
string Код поля
displayValue
string <optional>
Отображаемое значение поля. Если параметр не передан, то метод вернет текущее значение поля.
event
Object <optional>
Событие. Его необходимо передавать только для поля matrix. Если метод вызывается для matrix, то можно аргумент event передавать вторым по счету, вместо value.
- Source:
Returns:
Отображаемое значение поля, если метод используется для получения значения поля. this, если присваивается знаечние.
- Type
- string | this
Examples
// Поле Name = Иванов Иван this.fieldDisplayValue('OwnerID', 'Иванов Иван'); // Вывод: Иванов Иван console.log(this.fieldDisplayValue('OwnerID'));
events: { 'field:edit #Date__d_Contact_Date_Matrix': 'myEvent' }, myEvent: function(event) { console.log(this.fieldDisplayValue('ProductID', event)); }
-
fieldProperty(id, property, valueopt, eventopt) → {string|this}
-
Получить или установить значение атрибута поля.
Некоторые особенности
- В случае изменения атрибута required (или mandatory), изменяется и css-класс заголовка поля.
- В случае изменения readonly для lookup-поля, меняется доступ к кнопке "...".
- В случае установки readonly для select-поля, поле становится disabled.
Parameters:
Name Type Attributes Description id
string Код поля
property
string Название атрибута
value
string <optional>
Значение атрибута поля. Если параметр не передан, то метод вернет текущее значение поля.
event
Object <optional>
Событие. Его необходимо передавать только для поля matrix. Если метод вызывается для получения значения matrix, то можно аргумент event передавать третьим по счету, вместо value.
- Source:
Returns:
Значение атрибута, если метод используется для получения значения. this, если присваивается знаечние.
- Type
- string | this
Example
// Делаем поле CreateID недоступным для изменения this.fieldProperty('CreateID', 'readonly', true);
-
fieldRemoveProperty(id, property, eventopt)
-
Удалить атрибут у поля
Parameters:
Name Type Attributes Description id
string Код поля
property
string Название атрибута
event
Object <optional>
Событие. Его необходимо передавать только для поля matrix.
- Source:
-
fieldType(id, eventopt) → {string}
-
Получить тип поля
Parameters:
Name Type Attributes Description id
string Код поля
event
Object <optional>
Событие. Этот параметр необходимо заполнять только в случае получения поля matrix.
- Source:
Returns:
Тип поля (значение атрибута elem_type).
- Type
- string
-
fieldValue(id, valueopt, eventopt) → {string|this}
-
Получить или установить значение поля по названию поля
Parameters:
Name Type Attributes Description id
string Код поля
value
string <optional>
Значение поля. Если параметр не передан, то метод вернет текущее значение поля.
event
Object <optional>
Событие. Его необходимо передавать только для поля matrix. Если метод вызывается для matrix, то можно аргумент event передавать вторым по счету, вместо value.
- Source:
Returns:
Значение поля, если метод используется для получения значения поля. this, если присваивается знаечние.
- Type
- string | this
Examples
// Поле Name = Иванов Иван this.fieldValue('Name', 'Иванов Иван'); // Вывод: Иванов Иван console.log(this.fieldValue('Name'));
events: { 'field:edit #Date__d_Contact_Date_Matrix': 'myEvent' }, myEvent: function(event) { console.log(this.fieldValue('Date', event)); }
-
getField(id, eventopt) → {jQuery}
-
Получить поле по названию поля
Parameters:
Name Type Attributes Description id
string Код поля
event
Object <optional>
Событие. Этот параметр необходимо заполнять только в случае получения поля matrix.
- Source:
Returns:
Найденное поле
- Type
- jQuery
Examples
var code = this.getField('TaskStateID') .find('[value=' + this.fieldValue('TaskStateID') + ']').attr('code');
irisControllers.classes.c_Contact = IrisCardController.extend({ events: { 'field:edit #Date__d_Contact_Date_Matrix': 'myEvent' }, myEvent: function(event) { console.log(this.getField('Date', event).val()); } });
-
getFields(detailCode, id) → {Array.<jQuery>}
-
Получить поля matrix
По коду вкладки и названию поля возвращает массив найденных полей. Количество элементов равно количеству строк в matrix. Поля возвращаются в порядке их следования на форме.
Parameters:
Name Type Description detailCode
string Код вкладки
id
string Код поля
- Source:
Returns:
Поля
- Type
- Array.<jQuery>
Example
var fields = this.getFields('d_Contact_Date_Matrix', 'Date'); _.each(fields, function(elem) { console.log(elem.val()); });
-
hideField(id)
-
Скрыть поле
Parameters:
Name Type Description id
string Код поля
- Source:
-
onChangeEvent(event)
-
Стандартный обработчик для случая, когда обработкой события изменения поля занимается сервер. Этот обработчик отправляет запрос для вызова серверного onBeforePost<Код поля>(), который должен быть расположен в файле с префиксом s_ для раздела или ds_ для вкладки.
Parameters:
Name Type Description event
Object Событие
- Source:
Examples
events: { 'change #Price, #Count, #UnitID, #Discount': 'onChangeEvent', 'lookup:changed #ProductID': 'onChangeEvent' }
public function onBeforePostPrice($parameters) { list ($count, $price, $discount) = $this->getActualValue($parameters['old_data'], $parameters['new_data'], array('count', 'price', 'discount')); $parameters['new_data'] = FieldValueFormat('Amount', ((100 - $discount) * $count * $price) / 100, null, $parameters['new_data']); return $parameters['new_data']; }
-
parameter(id, valueopt, eventopt) → {string|this}
-
Получить или установить значение параметра карточки
Parameters:
Name Type Attributes Description id
string Код параметра
value
string <optional>
Значение параметра. Если не указан, то метод вернет текущее значение параметра.
event
Object <optional>
Событие. Его необходимо передавать только для matrix. Если метод вызывается для параметра matrix, то можно аргумент event передавать вторым по счету, вместо value.
- Source:
Returns:
Значение параметра, если метод используется для получения значения. this, если присваивается знаечние.
- Type
- string | this
Example
// Если карточку открыли не в режиме добавления новой записи if (this.parameter('mode') != 'insert') { // .. }
-
request(params)
-
Отправка запроса на сервер
Parameters:
Name Type Description params
Object Объект с параметрами, который содержит возможные свойства
- {String} section Раздел, в котором должен отработать метод на сервере
- {String} class Название объекта, в котором содержится метод
- {String} method Метод/событие, которое необходимо вызвать на сервере
- {Object} [parameters] Параметры для передачи на сервер
- {function} [onSuccess] Обработчик, который должен быть вызван после получения ответа с сервера
- {function} [skipErrors] Массив кодов ошибок, которые надо пропустить (с которыми допускается вызвать обработчик)
- Source:
Example
irisControllers.classes.dc_Account_Link = IrisCardController.extend({ onAfterSave: function (p_rec_id, p_mode) { // После сохранения добавляем ссылку к связанной компании, // если такая связь отсутствует Transport.request({ section: 'Account', 'class': 'dc_Account_Link', method: 'checkReverseLink', parameters: { id: p_rec_id } }); } });
-
serverEvent(eventName, fieldNameopt)
-
Вызвать событие на сервере (в файле с s_ для раздела или ds_ для вкладки).
Будет выполнена попытка вызова серверного обработчика, название которого образовано формулой eventName + fieldName
Parameters:
Name Type Attributes Description eventName
string вызываемое событие
fieldName
string <optional>
Изменяемое поле
- Source:
-
setLanguage(language)
-
Сменить язык
При смене языка интерфейс не перерисовывается. Этот метод используется ядром для выбора языка сразу после входа в систему.
Parameters:
Name Type Description language
Object Объект с переводами
- Source:
-
setPhoneFieldValue(field, value) → {this}
-
Присвоить значение полю с телефонным номером. При присваивании выполняется форматирование номера к формату "xx xxx xxx-xx-xx". Если присваивается значение полю с дополнительным номером, формат номера будет "xxxx".
Parameters:
Name Type Description field
jQuery Поле
value
string Телефонный номер
- Source:
Returns:
- Type
- this
Example
// Поле Phone1 = 7 925 555-55-55 this.setPhoneFieldValue(this.getField('Phone1'), '+79255555555');
-
showField(id, showopt)
-
Показать/скрыть поле
Parameters:
Name Type Attributes Default Description id
string Код поля
show
bool <optional>
true Показать или скрыть поле
- Source:
-
showTotal(windowIdopt)
-
Отображает итоги внизу таблицы
Parameters:
Name Type Attributes Default Description windowId
string <optional>
$(this.el.id) Id таблицы.
- Source:
-
t(message, sectionopt, typeopt, section_typeopt) → {string}
-
Выполнить перевод фразы на текущий язык
Parameters:
Name Type Attributes Default Description message
string Сообщение, которое необходимо перевести
section
string <optional>
null Код раздела или справочника, в котором необходмио выполнить перевод. Если перевод для этого раздела не найден, то будет выполнен поиск фразы среди общих переводов. Регистр важен. Примеры: 'Account', 'Contact', 'Task'
type
string <optional>
null Уточнение, где именно искать перевод. Регистр важен. Примеры: 'Card', 'Filter', 'Domain'
section_type
int <optional>
1 Куда указывает section
- 1 - искать перевод для раздела.
- 2 - для справочника.
- Source:
Returns:
Переведенная строка. Если перевод не был найден, то возвращается исходная строка.
- Type
- string
Example
var message = T.t('Текст сообщения'); var caption = T.t('Название') + '…';
-
triggerAutoEditEvents(field)
-
Вызвать событие изменения поля, если это разрешено
Parameters:
Name Type Description field
jQuery Поле, которое изменилось программно
- Source: