Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
synergy-components
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
community
synergy-components
Commits
90b4375b
Commit
90b4375b
authored
Mar 27, 2018
by
Sergey Antonovich
🇯🇵
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Конфигурация: пользовательского компонента - Иерархический справочник на основе реестров
parent
6b6b3bee
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
866 additions
and
0 deletions
+866
-0
form-cmp/tree-registry-chooser.conf.xml
form-cmp/tree-registry-chooser.conf.xml
+866
-0
No files found.
form-cmp/tree-registry-chooser.conf.xml
0 → 100644
View file @
90b4375b
<?xml version="1.0" encoding="utf-8"?>
<configuration
version=
"1"
date=
"2018-03-27 14:56:58"
synergyVersion=
"3.15"
>
<objects
version=
"1"
date=
"2018-03-27 14:56:58"
synergyVersion=
"3.15"
>
<customComponent
code=
"tree_registry_chooser"
name=
"Иерархический справочник на основе реестров"
use_in_forms=
"true"
>
<javascript>
/**
* пример настройки:
*
model.config = {
code: 'reestr_colvir_tariffs', // код реестра
nameField: 'colvir_name_tariff', // поле отображаемое в окне выбора записи. должен быть в столбцах реестра
parentField: 'parent_tarif_link', // поле со ссылкой на родительскую запись
parentFieldType: 'key', // тип поля parentField
sortCmpID: 'colvir_code_tariff', // поле сортировки записей, необязательное
sortDesc: true, // тип сортировки, необязательное
browseDisable: false, // деактивировать выбор, необязательное
deleteDisable: false, // деактивировать удаление, необязательное
createDisable: false // деактивировать создание, необязательное
};
*/
/**
* обновить текстовое представление записи реестра
*/
model.updateTextView = function (fromInit) {
if (!model.getValue()) {
model.textValue = "";
model.asfDataId = null;
model.trigger(AS.FORMS.EVENT_TYPE.dataLoad, [model]);
return;
}
if (!registry || !registry.registryID) {
return;
}
AS.FORMS.ApiUtils.getAsfDataUUID(model.getValue(), function (newAsfDataId) {
model.asfDataId = newAsfDataId;
AS.FORMS.ApiUtils.getDocMeaningContent(registry.registryID, newAsfDataId, function (text) {
if (text === null || text === '') {
model.textValue = i18n.tr('Документ');
} else {
model.textValue = text;
}
model.trigger(AS.FORMS.EVENT_TYPE.dataLoad, [model]);
if (fromInit) {
model.trigger('loadFromInit', [model]);
}
});
});
};
/**
* получить тесктовое представление записи реестра
* @returns {string|string|*}
*/
model.getTextValue = function () {
return model.textValue;
};
// подписываемся на событие модели об изменении содержания, чтобы подгрузить дополнительные данные
model.on(AS.FORMS.EVENT_TYPE.valueChange, function () {
model.updateTextView();
});
/**
* метод реализовывает вставку asfData
* @param asfData
*/
model.setAsfData = function (asfData) {
model.setValue(asfData.key);
};
/**
* метод реализовывает получение данных компонента для сохранения
* @param blockNumber
* @returns {*}
*/
model.getAsfData = function (blockNumber) {
return AS.FORMS.ASFDataUtils.getBaseAsfData(model.asfProperty, blockNumber, model.textValue, model.value);
};
/**
* реестр
* @type {object}
*/
var registry = null;
/**
* видимые колонки реестра
* @type {Array}
*/
var registryColumns = [];
/**
* поле ввода для поиска записей реестра
* @type {XMLList|*}
*/
var input = jQuery(view.container).children("[innerId='name']");
/**
* поле для отображения выбранной записи реестра
* @type {XMLList|*}
*/
var textView = jQuery(view.container).children("[innerId='textView']");
/**
* кнопка добавления записи
* @type {XMLList|*}
*/
var addIcon = jQuery(view.container).children("[innerId='add']");
/**
* кнопка выбора записи из реестра
* @type {XMLList|*}
*/
var browseIcon = jQuery(view.container).children("[innerId='browse']");
/**
* кнопка удаления текущей выбранной записи
* @type {XMLList|*}
*/
var deleteIcon = jQuery(view.container).children("[innerId='delete']");
// кнопку удаления текущей выбраннйо записи скрываем
deleteIcon.hide();
// по нажатию на кнопку "выбрать из реестра" открываем стандартный диалог выбра записи реестра
browseIcon.click(function () {
model.showDialog(registry);
});
/**
* компонента выбора записи реестра
*
*/
function TreeRegistryChooser(locale, registry, config){
var instance = this;
var hasChildField = 'hasChilds';
var dialog = new AS.FORMS.BasicChooserDialog();
dialog.init({
showListItemIcon : false,
showListItemInfo : false,
showListItemStatus : false,
multiSelect : false,
showSearchField : false,
title : i18n.tr("Выбор записи реестра"),
showSelectedStack : false
});
var treeItem;
this.setTreeItem = function(item) {
this.treeItem = item;
}
this.getTreeItem = function() {
return this.treeItem;
}
this.correctListArray = function(records) {
if(!records) {
return [];
}
records.forEach(function (record) {
record.id = record.documentID;
record.name = record.fieldValue[config.nameField];
});
return records;
};
// получить записи реестра по ID родительской записи
this.fetchData = function(parentId, locale, handler){
var registryCode = model.config.code;
var params = {
registryCode : registryCode,
locale: locale
};
if(config.sortCmpID) {
params.sortCmpID = config.sortCmpID;
}
if(config.sortDesc) {
params.sortDesc = config.sortDesc;
}
var parentQuery = '';
if(parentId) {
parentQuery = "
&
field=" + config.parentField + "
&
condition=CONTAINS
&
" + config.parentFieldType + "=" + parentId;
} else {
parentQuery = "
&
field=" + config.parentField + "
&
condition=NOT_CONTAINS
&
" + config.parentFieldType + "=-";
}
AS.FORMS.ApiUtils.simpleAsyncGet('rest/api/registry/data_ext?' + $.param(params) + parentQuery, handler);
}
// есть ли дочерние записи
this.hasChildsDeferred = function(nodeId, locale) {
var dfd = new $.Deferred();
this.fetchData(nodeId, locale, function(data){
dfd.resolve({
nodeId: nodeId,
hasChild: data.result.length
>
0
});
});
return dfd.promise();
}
// получение дочерних записей
this.fetchChilds = function(parentId, locale, handler) {
var me = this;
this.fetchData(parentId, locale, function(data){
var requests = [];
$.each(data.result, function(i, record){
record[config.nameField] = record.fieldValue[config.nameField];
requests.push(me.hasChildsDeferred(record.documentID, locale));
});
$.when.apply($, requests).done(function () {
var total = 0;
$.each(arguments, function (i, details) {
data.result[i][hasChildField] = details.hasChild;
});
handler(data);
});
});
}
dialog.addTree("treeRecords", function(parentNode, tree){
var nodeID = undefined;
if(parentNode) {
nodeID = parentNode.id;
}
instance.fetchChilds(nodeID, locale, function(data){
dialog.setTreeNodeData("treeRecords", nodeID, instance.correctListArray(data.result), "documentID", config.nameField, hasChildField);
});
}, function(parentNode, tree){
instance.setTreeItem(parentNode);
dialog.setListTitle(parentNode.name);
dialog.showList("listRecords", parentNode, true);
});
dialog.addListType("listRecords", function(search, startRecord, recordsCount, selectedNodeId, stackId){
instance.fetchChilds(selectedNodeId, locale, function(data){
var listToShow = data.result.length
>
0 ? data.result : [instance.getTreeItem()];
dialog.setListData("listRecords", instance.correctListArray(listToShow), false);
});
}, function(search, selectedNodeId, stackId){
});
dialog.addStack("registry", registry.name, "treeRecords", false, false, function(){});
dialog.showStack("registry");
this.setSelectedItems = function(newSelectedPersons){
dialog.setSelectedItems(instance.correctListArray(newSelectedPersons));
};
this.getSelectedItems = function(){
return dialog.getSelectedItems();
};
this.showDialog = function(){
dialog.show();
};
/**
*
* @param event SEE BasicChooserEvent
* @param handler
*/
this.on = function(event, handler) {
dialog.on(event, handler);
};
}
model.getDataByDocumentId = function (handler) {
if (!registry || !registry.registryID) {
handler(null);
}
jQuery.when(AS.FORMS.ApiUtils.loadAsfData(model.asfDataId, 0)).then(function (data) {
handler(data);
});
};
model.showDialog = function (registry) {
var locale = 'ru';
var config = model.config;
model.getDataByDocumentId(function(data) {
if(!data.fieldValue){
data.fieldValue = {};
}
$.each(data.data, function(item){
if(item.id === config.nameField){
data.fieldValue[config.nameField] = item.value;
}
});
var chooser = new TreeRegistryChooser(locale, registry, config);
if(data
&&
data.uuid) {
chooser.setSelectedItems([data]);
}
chooser.showDialog();
chooser.on(AS.FORMS.BasicChooserEvent.applyClicked, function(){
model.setValue(chooser.getSelectedItems()[0].id);
});
});
};
var advancedSearch = function (sf) {
AS.FORMS.ApiUtils.getRegistryFilterDataOriginal = AS.FORMS.ApiUtils.getRegistryFilterData;
AS.FORMS.ApiUtils.getRegistryDataOriginal = AS.FORMS.ApiUtils.getRegistryData;
var docId = model.playerModel.getModelWithId(sf.from).getValue();
AS.FORMS.ApiUtils.getRegistryData = function (registryID, pageNumber, countInPart, searchText, sortCmpID, sortDesc, handler) {
var params = {
registryID: registryID,
pageNumber: pageNumber,
countInPart: countInPart,
searchString: searchText,
sortCmpID: sortCmpID,
sortDesc: sortDesc
};
AS.SERVICES.showWaitWindow();
this.simpleAsyncGet('rest/api/registry/data_ext?' + $.param(params) + "
&
field=" + sf.field + "
&
condition=CONTAINS
&
key=" + docId, AS.FORMS.ApiUtils.getHandler(handler, true));
};
AS.FORMS.ApiUtils.getRegistryFilterData = function (registryID, filterID, pageNumber, countInPart, searchText, sortCmpID, sortDesc, handler) {
var params = {
registryID: registryID,
filterID: filterID,
pageNumber: pageNumber,
countInPart: countInPart,
searchString: searchText,
sortCmpID: sortCmpID,
sortDesc: sortDesc
};
AS.SERVICES.showWaitWindow();
this.simpleAsyncGet('rest/api/registry/data_ext?' + $.param(params) + "
&
field=" + sf.field + "
&
condition=CONTAINS
&
key=" + docId, AS.FORMS.ApiUtils.getHandler(handler, true));
};
};
var pmodel = model.playerModel;
// по нажатию на кнопку "создать" открываем форму создания записи реестра
model.createRegistryRecord = function () {
if (!registry.rr_create) {
alert("У вас нет прав на создание записей данного реестра");
return;
}
var createPlayerDiv = jQuery("
<
div
>
");
createPlayerDiv.css("width", view.width ? view.width + "px" : "1000px");
createPlayerDiv.css("height", view.height ? view.height + "px" : "700px");
createPlayerDiv.css("border", "1px solid #afafaf");
var saveButton = jQuery("
<
button
>
", {class: "ns-approveButton ns-basicChooserApplyButton"});
saveButton.button();
saveButton.html(i18n.tr("Создать"));
saveButton.css("margin", "auto");
saveButton.css("display", "block");
saveButton.css("margin-top", "10px");
saveButton.css("margin-bottom", "10px");
var player = AS.FORMS.createPlayer();
player.model.isCreate = true;
createPlayerDiv.on('dialogbeforeclose', function () {
if (model.onDialogClose) {
model.onDialogClose(player);
}
});
player.view.setEditable(true);
player.showFormData(registry.formId);
player.view.appendTo(createPlayerDiv);
player.model.on(AS.FORMS.EVENT_TYPE.dataLoad, function () {
var registryModel = null;
if (player.model.formCode === 'crm_form_contact') {
registryModel = player.model.getModelWithId('crm_form_contact_lead_lead', 'crm_form_contact_lead');
}
if (player.model.formCode === 'crm_form_account') {
registryModel = player.model.getModelWithId('crm_form_account_lead_lead', 'crm_form_account_lead');
}
if (player.model.formCode === 'crm_form_dealActivity') {
registryModel = player.model.getModelWithId('crm_form_dealActivity_main_deal');
}
if (player.model.formCode === 'crm_form_leadActivity') {
registryModel = player.model.getModelWithId('crm_form_leadActivity_main_lead');
}
if (registryModel != null) {
registryModel.setValue(AS.SERVICES.getParameterByName("document_identifier", window.location.href));
}
if (player.model.formCode === 'crm_form_activity') {
var org = player.model.getModelWithId('crm_form_activity_organization');
var fromOrg = pmodel.getModelWithId('crm_form_lead_main_account');
if (fromOrg != null
&&
fromOrg.getValue() != null
&&
!fromOrg.getValue().isEmpty()) {
org.setValue(fromOrg.getValue());
}
fromOrg = pmodel.getModelWithId('crm_form_deal_main_account');
if (fromOrg != null
&&
fromOrg.getValue() != null
&&
!fromOrg.getValue().isEmpty()) {
org.setValue(fromOrg.getValue());
}
}
if (model.onDataLoad) {
model.onDataLoad(player);
}
});
createPlayerDiv.append(saveButton);
createPlayerDiv.dialog({
width: view.width ? view.width : 1000,
height: view.height ? view.height : 700,
modal: true
});
collateLinksData(player, model.links);
collateCurrentData(player, model.cmpMap, model.asfProperty.tableBlockIndex);
collateFixedData(player, model.fixedData);
saveButton.click(function () {
var valid = player.model.isValid();
if (!valid
&&
model.showErrorMessage) {
model.showErrorMessage(i18n.tr("Введите все обязательные поля"));
return;
} else if (!valid) {
AS.SERVICES.showErrorMessage(i18n.tr("Введите все обязательные поля"));
return;
}
AS.SERVICES.showWaitWindow();
AS.FORMS.ApiUtils.simpleAsyncGet("rest/api/registry/create_doc?registryID=" + registry.registryID, function (result) {
if (result.errorCode != 0) {
AS.SERVICES.hideWaitWindow();
alert(i18n.tr("Во время сохранения данных по форме произошли ошибки. Обратитесь к администратору"));
return;
}
player.model.asfDataId = result.dataUUID;
player.saveFormData(function (result) {
AS.SERVICES.hideWaitWindow();
if (_.isUndefined(result)) {
alert(i18n.tr("Во время сохранения данных по форме произошли ошибки. Обратитесь к администратору"));
return;
}
player.model.saved = true;
AS.SERVICES.showWaitWindow();
AS.FORMS.ApiUtils.getDocumentIdentifier(result, function (documentID) {
AS.SERVICES.hideWaitWindow();
model.setValue(documentID);
createPlayerDiv.dialog("close");
createPlayerDiv.dialog("destroy");
});
});
});
});
};
model.createOrShowRecord = function (asfDataId) {
if (!model.getValue()) {
model.createRegistryRecord();
} else {
model.showRegistryRecord(asfDataId);
}
};
addIcon.click(function () {
model.createRegistryRecord();
});
// по нажатию на кнопку удалить - удаляем выбранное значение
deleteIcon.click(function () {
model.setValue(null);
});
model.showRegistryRecord = function (asfDataId, editableChooser) {
var createPlayerDiv = jQuery("
<
div
>
");
createPlayerDiv.css("width", view.width ? view.width + "px" : "1000px");
createPlayerDiv.css("height", view.height ? view.height + "px" : "700px");
var editButton = jQuery('
<
div class="edit"
><
/div
>
');
var saveButton = jQuery("
<
button
>
", {class: "ns-approveButton ns-basicChooserApplyButton"});
saveButton.button();
saveButton.html(i18n.tr("Сохранить"));
saveButton.css("margin", "auto");
saveButton.css("display", "block");
saveButton.css("margin-top", "10px");
saveButton.css("margin-bottom", "10px");
saveButton.hide();
createPlayerDiv.css("border", "1px solid #afafaf");
var player = AS.FORMS.createPlayer();
createPlayerDiv.on('dialogbeforeclose', function () {
if (model.onDialogClose) {
model.onDialogClose(player);
}
});
player.view.setEditable(editableChooser);
player.showFormData(null, null, asfDataId, 0);
if (registry.code == 'crm_registry_activity' || registry.code == 'crm_registry_accounts' || registry.code == 'crm_registry_contacts' || editableChooser) {
createPlayerDiv.append(editButton);
if (player.view.editable) {
editButton.addClass('edited');
saveButton.show();
} else {
editButton.removeClass('edited');
saveButton.hide();
}
editButton.click(function () {
if (player.view.editable) {
player.view.setEditable(false);
editButton.removeClass('edited');
saveButton.hide();
} else {
player.view.setEditable(true);
editButton.addClass('edited');
saveButton.show();
}
});
}
player.view.appendTo(createPlayerDiv);
createPlayerDiv.append(saveButton);
player.model.on(AS.FORMS.EVENT_TYPE.dataLoad, function () {
if (model.onDataLoad) {
model.onDataLoad(player);
}
});
createPlayerDiv.dialog({
width: view.width ? view.width : 1000,
height: view.height ? view.height : 700,
modal: true
});
collateOnShowFixedData(player, model.showFixedData);
saveButton.click(function () {
var valid = player.model.isValid();
if (!valid
&&
model.showErrorMessage) {
model.showErrorMessage(i18n.tr("Введите все обязательные поля"));
return;
} else if (!valid) {
AS.SERVICES.showErrorMessage(i18n.tr("Введите все обязательные поля"));
return;
}
AS.SERVICES.showWaitWindow();
player.saveFormData(function (result) {
AS.SERVICES.hideWaitWindow();
if (_.isUndefined(result)) {
alert(i18n.tr("Во время сохранения данных по форме произошли ошибки. Обратитесь к администратору"));
return;
}
player.model.saved = true;
AS.SERVICES.showWaitWindow();
AS.FORMS.ApiUtils.getDocumentIdentifier(result, function (documentID) {
AS.SERVICES.hideWaitWindow();
model.setValue();
model.setValue(documentID);
createPlayerDiv.dialog("close");
createPlayerDiv.dialog("destroy");
});
});
});
};
// по нажатию на текстовое отображение - открываем запись реестра на просмотр
textView.click(function () {
model.showRegistryRecord(model.asfDataId);
});
collateFixedData = function (player, fixedData) {
player.model.on(AS.FORMS.EVENT_TYPE.dataLoad, function () {
if (fixedData) {
fixedData.forEach(function (fixedItem) {
player.model.getModelWithId(fixedItem.id).setValue(fixedItem.value);
});
}
});
};
collateOnShowFixedData = function (player, fixedData) {
player.model.on(AS.FORMS.EVENT_TYPE.dataLoad, function () {
if (fixedData) {
fixedData.forEach(function (fixedItem) {
player.model.getModelWithId(fixedItem.id).setValue(fixedItem.value);
});
fixedData = [];
}
});
};
collateCurrentData = function (player, map, tableBlockIndex) {
player.model.on(AS.FORMS.EVENT_TYPE.dataLoad, function () {
var data = model.playerModel.getAsfData();
if (map) {
map.forEach(function (map) {
if (map.fromTable) {
data.data.forEach(function (item) {
if (item.id === map.fromTable) {
replaceValue(player, item.data, map.from + '-b' + tableBlockIndex, map.to, map.disabled, map.entityField);
}
});
} else {
replaceValue(player, data.data, map.from, map.to, map.disabled, map.entityField);
}
});
}
});
};
var pmodel = model.playerModel;
collateLinksData = function (player, links) {
player.model.on(AS.FORMS.EVENT_TYPE.dataLoad, function () {
if (links) {
links.forEach(function (link) {
var model = pmodel.getModelWithId(link.from);
AS.FORMS.ApiUtils.getAsfDataUUID(model.getValue(), function (dataUUID) {
jQuery.when(AS.FORMS.ApiUtils.loadAsfData(dataUUID)).then(function (data) {
replaceValue(player, data.data, link.valueCmp, link.toCmp, link.disabled, link.entityField);
});
});
});
}
});
};
replaceValue = function (player, data, fromCmp, toCmp, disabled) {
data.forEach(function (item) {
if (item.id === fromCmp) {
var m = player.model.getModelWithId(toCmp);
var v = player.view.getViewWithId(toCmp);
if (m !== null) {
if (item.type === "entity"
&&
m.asfProperty.type !== "entity") {
m.setValue(item.value + "");
} else {
if (item.key
&&
item.key !== null
&&
item.key !== '') {
if (m.asfProperty.type == "entity") {
if (item.id.indexOf('position_head') === 0) {
m.setValue({elementID: item.key + "", elementName: item.value, tagName: item.value});
} else {
m.setValue({personID: item.key + "", personName: item.value});
}
} else {
m.setValue(item.key + "");
}
} else if (item.value) {
m.setValue(item.value + "");
}
}
if (disabled) {
v.setEnabled(false);
}
}
}
});
};
// скрываем или отображаем поля ввода в зависимости от того режим чтения это или редактирования
if (editable) {
if (model.config.browseDisable) {
browseIcon.hide();
}
} else {
input.hide();
addIcon.hide();
browseIcon.hide();
deleteIcon.hide();
}
addIcon.text('+' + i18n.tr('Создать'));
browseIcon.text(i18n.tr('Выбрать из реестра'));
deleteIcon.html('
<
div style="color:#606060; margin-left:10px; text-decoration:underline" class="asf-InlineBlock asf-cursorPointer" innerId="delete"
>
' + i18n.tr('Удалить') + '
<
/div
>
');
// реализовываем метод обновления отображения согласно изменившимся данным модели
view.updateValueFromModel = function () {
input.val("");
if (model.getValue()) {
textView.css("display", "");
input.hide();
textView.html(model.getTextValue());
input.hide();
if (editable) {
if (!model.config.deleteDisable) {
deleteIcon.css("display", "");
} else {
browseIcon.hide();
}
if (model.config.browseDisable) {
browseIcon.hide();
}
if (model.config.createDisable) {
addIcon.hide();
}
} else {
input.hide();
addIcon.hide();
browseIcon.hide();
deleteIcon.hide();
}
} else {
if (editable) {
input.css("display", "");
if (model.config.browseDisable) {
browseIcon.hide();
}
} else {
input.hide();
addIcon.hide();
browseIcon.hide();
deleteIcon.hide();
}
textView.html("");
input.text("");
deleteIcon.hide();
}
};
// подписываем на событие подгрузки дополнительных данных значения
model.on(AS.FORMS.EVENT_TYPE.dataLoad, function () {
view.updateValueFromModel();
});
/**
* если нет прав создания записи реестра, то кнопки создать не должно быть видно
*/
function validateIconsState() {
addIcon.hide();
if (registry.rr_create
&&
editable
&&
!model.onlyRead) {
addIcon.css("display", "");
}
}
model.initComponent = function () {
initComponent();
};
/**
* инициализируем компонент (получаем реестр, колонки)
*/
function initComponent() {
AS.FORMS.ApiUtils.simpleAsyncGet('rest/api/registry/info?code=' + model.config.code, function (reg) {
registry = reg;
registry.registryID = reg.registryID;
registryColumns = [];
if (!registry.columns) {
return;
}
registry.columns.forEach(function (col) {
if (col.visible != 1) {
return;
}
registryColumns.push(col);
});
registryColumns = registryColumns.sort(function (item1, item2) {
var number1 = item1.order;
var number2 = item2.order;
if (number1 === number2) {
if (item1.name
<
item2.name) {
return -1;
} else if (item1.name
>
item2.name) {
return 1;
}
} else {
if (number1 === 0) {
return 1;
} else if (number2 === 0) {
return -1;
} else if (number1
<
number2) {
return -1;
} else {
return 1;
}
}
return 0;
});
model.updateTextView(true);
view.updateValueFromModel();
validateIconsState();
model.trigger('registryChooserLoaded', [model]);
});
}
// при вводе пользователя отображаем первые 10 результатов поиска
input.on("input", function () {
var search = input.val();
if (search.length === 0 || !registry) {
AS.SERVICES.showDropDown([]);
return;
}
AS.FORMS.ApiUtils.getRegistryFilterDataOriginal = AS.FORMS.ApiUtils.getRegistryFilterData;
AS.FORMS.ApiUtils.getRegistryDataOriginal = AS.FORMS.ApiUtils.getRegistryData;
var sf = model.seachField;
if (sf) {
advancedSearch(sf);
}
AS.FORMS.ApiUtils.getRegistryData(registry.registryID, 0, 10, search, null, null, function (foundData) {
var values = [];
foundData.result.forEach(function (record) {
var value = {value: record.documentID};
var label = "";
registryColumns.forEach(function (column) {
if (record.fieldValue[column.columnID] !== undefined) {
label += record.fieldValue[column.columnID] + " - ";
}
});
value.title = label;
values.push(value);
});
AS.FORMS.ApiUtils.getRegistryFilterData = AS.FORMS.ApiUtils.getRegistryFilterDataOriginal;
AS.FORMS.ApiUtils.getRegistryData = AS.FORMS.ApiUtils.getRegistryDataOriginal;
AS.SERVICES.showDropDown(values, input, null, function (selectedValue) {
model.setValue(selectedValue);
view.updateValueFromModel();
AS.FORMS.ApiUtils.getRegistryFilterData = AS.FORMS.ApiUtils.getRegistryFilterDataOriginal;
AS.FORMS.ApiUtils.getRegistryData = AS.FORMS.ApiUtils.getRegistryDataOriginal;
});
});
});
initComponent();
AS.SERVICES.getParameterByName = function (name, url) {
if (!url) {
url = window.location.href;
}
name = name.replace(/[\[\]]/g, "\\$
&
");
var regex = new RegExp("[?
&
]" + name + "(=([^
&
#]*)|
&
|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
};
</javascript>
<html>
<
style
>
.edit {border: 1px solid black;float: right;background: url('light/images/buttons/dark.gray/edit.png') 50%;width: 30px;height: 22px;background-repeat: no-repeat;border-radius: 5px;border-color: gray;position: relative;z-index: 99999;}
.edited{background-color: #efefef;}
<
/style
>
<
div innerId="textView" style="text-decoration:underline; cursor:pointer;width:calc(100% ); color:#06f; margin-bottom:2px"
><
/div
>
<
input type="text" class="asf-textBox" innerId="name" style="width:calc(100% )"/
>
<
div style="color:#606060; margin-right:10px; text-decoration:underline" class="asf-InlineBlock asf-cursorPointer" innerId="add"
>
+Создать
<
/div
>
<
div style="color:#606060; margin-right:10px; text-decoration:underline" class="asf-InlineBlock asf-cursorPointer" innerId="browse"
>
Выбрать из реестра
<
/div
>
<
div style="color:#606060; text-decoration:underline" class="asf-InlineBlock asf-cursorPointer" innerId="delete"
>&
#10005; Удалить
<
/div
>
</html>
</customComponent>
</objects>
<dependencies/>
</configuration>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment