Commit 49688b3c authored by Sergey Antonovich's avatar Sergey Antonovich 🇯🇵

multi-registry-chooser.conf

parent 6bdb1783
<?xml version="1.0" encoding="utf-8"?>
<configuration version="1" date="2018-03-28 16:43:15" synergyVersion="3.15">
<objects version="1" date="2018-03-28 16:43:15" synergyVersion="3.15">
<customComponent code="registry_chooser"
name="Мультивыбор записей реестра" use_in_forms="true">
<javascript>// Инструкция по использованию
// 1. добавить данный пользовательский компонент на форму
// 2. в поле код скрипта компонента прописать код реестра и позволять ли мульти выбор
// model.registryCode = 'playertestForm';
// model.multiple = true;
// Формат данных
// {id : "id",
// type : "custom",
// value : "значащее содержимое документов через запятую",
// keys : [массив выбранных идентификаторов],
// key : "первый идентификатор если он есть",
// valueID : "хэш fnv32 отсортированных по возрастанию идентификаторов скленных через пробел"}
//
//
AS.FORMS.hash = function(str, asString, seed){
/*jshint bitwise:false */
var i, l,
hval = (seed === undefined) ? 0x811c9dc5 : seed;
for (i = 0, l = str.length; i &lt; l; i++) {
hval ^= str.charCodeAt(i);
hval += (hval &lt;&lt; 1) + (hval &lt;&lt; 4) + (hval &lt;&lt; 7) + (hval &lt;&lt; 8) + (hval &lt;&lt; 24);
}
if( asString ){
// Convert to 8 digit hex string
return ("0000000" + (hval &gt;&gt;&gt; 0).toString(16)).substr(-8);
}
return hval &gt;&gt;&gt; 0;
};
// ИНициалиация модели
model.onOnce = function(event, name, handler){
if(!model.handlers){
model.handlers = {};
}
if(model.handlers[event+"_"+name]){
model.off(event, model.handlers[event+"_"+name]);
}
model.handlers[event+"_"+name] = handler;
model.on(event, handler);
}
if(!model.selectedDocuments) {
model.selectedDocuments = [];
model.textValue = "";
}
model.updateTextView = function () {
if(!model.registry) return;
model.selectedDocuments = [];
model.textValue = "";
if (!model.getSelectedIds() || model.getSelectedIds().length == 0) {
model.textValue = "";
model.asfDataId = null;
model.trigger(AS.FORMS.EVENT_TYPE.dataLoad, [model]);
return;
}
var asfDataPromises = [];
model.getSelectedIds().forEach(function(documentId){
asfDataPromises.push(AS.FORMS.ApiUtils.simpleAsyncGet('rest/api/formPlayer/getAsfDataUUID?documentID=' + documentId, null, "text"));
model.selectedDocuments.push({documentId : documentId});
});
jQuery.when.apply(jQuery, asfDataPromises)
.then(function(){
var docMeaningPromises = [];
for(var i=0; i&lt;arguments.length; i++){
model.selectedDocuments[i].asfDataId = arguments[i];
docMeaningPromises.push(AS.FORMS.ApiUtils.simpleAsyncGet('rest/api/formPlayer/getDocMeaningContent?registryID=' + model.registry.registryID + "&amp;asfDataUUID=" + arguments[i], null, "text"));
}
jQuery.when.apply(jQuery, docMeaningPromises).then(function(){
var sign = "";
for(var i=0; i&lt;arguments.length; i++){
model.selectedDocuments[i].meaning = arguments[i];
if(model.selectedDocuments[i].meaning == '') {
model.selectedDocuments[i].meaning = i18n.tr('Документ');
}
model.textValue = model.textValue + sign + model.selectedDocuments[i].meaning;
sign = ", ";
}
model.trigger(AS.FORMS.EVENT_TYPE.dataLoad, [model]);
});
});
};
model.getTextValue = function () {
return model.textValue;
};
model.setAsfData = function (asfData) {
if(asfData.keys || asfData.key){
if(!asfData.keys) {
asfData.keys = [asfData.key];
}
model.setValue(asfData.keys);
} else {
model.setValue([]);
}
};
model.getSelectedIds = function(){
return model.value;
};
model.getValue = function(){
if(model.multiple) {
return model.value;
} else {
if(model.value.length ==0){
return null;
} else {
return model.value[0];
}
}
};
model.getAsfData = function (blockNumber) {
var valueID = "";
if(model.value) {
var array = model.value.slice().sort();
valueID = AS.FORMS.hash(array.join(" "));
}
var asfData = AS.FORMS.ASFDataUtils.getBaseAsfData(model.asfProperty, blockNumber, model.textValue, null);
asfData.keys = model.value;
if(asfData.keys &amp;&amp; asfData.keys.length &gt; 0) {
asfData.key = asfData.keys[0];
}
asfData.valueID = valueID;
return asfData;
};
model.onOnce(AS.FORMS.EVENT_TYPE.valueChange, "updateTextView", function () {
model.updateTextView();
});
// ИНициализация отображения
view.init = function() {
var tagArea = new AS.FORMS.TagArea({width: "calc(100% - 30px)"}, 0, model.multiple, false, false);
var chooserButton = jQuery("&lt;div/&gt;", {style: "border: 1px solid #e2e2e2; border-radius: 0 4px 4px 0; vertical-align: top;" +
"height: 28px; width: 30px; align-self: center; padding: 4px 0 0;cursor: pointer;display: inline-block; " +
"box-sizing: border-box; font-weight: bold; font-size: 20px; padding-left: 5px;"}).html("...");
var fileNameLabel = jQuery('&lt;div&gt;', {style: "font-family: arial, tahoma, sans-serif; font-size: 12px; align-self: center; word-wrap: break-word; padding-right: 2px; padding-left: 1px;"});
tagArea.on("tagDelete", function () {
var documentIds = [];
tagArea.getValues().forEach(function(tagItem){
documentIds.push(tagItem.documentId);
});
model.setValueFromInput(documentIds);
});
if (editable) {
var div = jQuery('&lt;div&gt;');
div.append(tagArea.getWidget());
div.append(chooserButton);
view.container.prepend(div);
} else {
view.container.prepend(fileNameLabel);
}
chooserButton.click(function(){
var selectedIds = [];
if(model.getSelectedIds()) {
selectedIds = model.getSelectedIds();
}
var chooser = new RegistryChooser(model.registry, model.multiple, model.filterIds, selectedIds, function(selected){
var documentIds = [];
selected.forEach(function(item){
documentIds.push(item.documentId);
});
model.setValueFromInput(documentIds);
});
chooser.show();
});
AS.FORMS.ApiUtils.simpleAsyncGet('rest/api/registry/info?code=' + model.registryCode, function (reg) {
model.registry = reg;
model.registry.registryID = reg.registryID;
model.updateTextView();
});
view.updateValueFromModel = function () {
fileNameLabel.html("");
tagArea.setValues([]);
if (model.getSelectedIds() &amp;&amp; model.getSelectedIds().length &gt; 0) {
model.selectedDocuments.forEach(function(selectedDocument){
selectedDocument.tagName = selectedDocument.meaning;
var docComponent = jQuery("&lt;div&gt;", {style : "font-family: arial, tahoma, sans-serif; font-size: 12px; " +
"align-self: center; word-wrap: break-word; padding-right: 2px;" +
"padding-left: 1px; cursor : pointer; text-decoration: underline;" +
"line-height:20px"}).html(selectedDocument.meaning);
docComponent.click(function(){
AS.SERVICES.showDocument(selectedDocument.documentId);
});
fileNameLabel.append(docComponent);
});
tagArea.setValues(model.selectedDocuments);
}
};
view.updateValueFromModel();
model.on("dataLoad", function () {
view.updateValueFromModel();
});
};
if(model.registryCode) {
view.init();
} else {
model.on("loadComponentAdditionalInfo", function(){
view.init();
});
}
var KEY_CODES = Object.freeze({
backspace : 8,
delete : 46,
insert : 45,
left : 37,
up : 38,
right : 39,
down : 40,
home : 36,
end : 35,
pageUp : 33,
pageDown : 34,
tab : 9,
MINUS : 189,
DOT: 190,
COMMA : 188,
ENTER : 13,
escape : 27,
Z_KEY : 90
});
// ТАБЛИЦА
var MultiTableEvent = {
dataClicked : "dataClicked",
dataSelected : "dataSelected",
dataDeselected : "dataDeselected",
columnSortClicked : "columnSortClicked",
inited : "inited",
colResized : "colResized",
colResizeStarted : "colResizeStarted",
dataLoaded : "dataLoaded"
};
var MultiTable = function(multiChoose, initialSelect) {
var instance = this;
instance.bus = jQuery({});
this.trigger = function (eventType, args) {
instance.bus.trigger(eventType, args);
};
this.on = function (eventType, handler) {
instance.bus.on(eventType, handler);
};
this.off = function (eventType, handler) {
instance.bus.off(eventType, handler);
};
var headerRowHeight = 32;
var rowHeight = 26;
var width = 500;
var headerRow = null;
var rows = [];
var container = jQuery("&lt;div&gt;", {style : "font-family: DroidSans, arial, serif;font-size: 14px;color: #606060; display: inline-block;text-align: left;", tabIndex : "0"});
var selectedData = [];
initialSelect.forEach(function(item){
selectedData.push(item);
});
var idField = "id";
var columns = [];
this.init = function(options, newColumns){
instance.clear();
headerRow = new MultiTableHeaderRow(instance, -1);
container.append(headerRow.getWidget());
columns = newColumns;
headerRowHeight = options["headerRowHeight"] || headerRowHeight;
rowHeight = options["rowHeight"] || rowHeight;
width = options["width"] || width;
idField = options["idField"] || idField;
instance.trigger(MultiTableEvent.inited, []);
};
instance.on(MultiTableEvent.dataClicked, function(evt, data){
if(multiChoose) {
if (!instance.isSelected(data)) {
selectedData.push(data);
instance.trigger(MultiTableEvent.dataSelected, data);
} else {
var index = -1;
selectedData.forEach(function(candidate, candidateIndex){
if(candidate[idField] == data[idField]) {
index = candidateIndex;
}
});
selectedData.splice(index, 1);
instance.trigger(MultiTableEvent.dataDeselected, data);
}
} else {
while(selectedData.length &gt; 0) {
var d = selectedData[0];
var i = selectedData.indexOf(d);
selectedData.splice(i, 1);
instance.trigger(MultiTableEvent.dataDeselected, d);
}
selectedData.push(data);
instance.trigger(MultiTableEvent.dataSelected, data);
}
container.focus();
});
this.isSelected = function(data) {
var selected = false;
selectedData.forEach(function(item){
if(item[idField] == data[idField]) {
selected = true;
}
});
return selected;
};
this.getSelectedData = function() {
return selectedData;
};
this.getColumns = function(){
return columns;
};
this.getHeaderRowHeight = function(){
return headerRowHeight;
};
this.getRowHeight = function(){
return rowHeight;
};
this.clear = function() {
container.empty();
};
this.setData = function(data, append) {
if(!append) {
rows.forEach(function(row){
row.getWidget().detach();
row.getWidget().empty();
});
rows = [];
}
var rowsCount = rows.length;
data.forEach(function(data, dataIndex){
var row = new MultiTableRow(instance, data, dataIndex+rowsCount);
rows.push(row);
container.append(row.getWidget());
});
instance.trigger(MultiTableEvent.dataLoaded, []);
};
this.setSelectedData = function(newSelectedData){
while(selectedData.length &gt; 0) {
var d = selectedData[0];
var i = selectedData.indexOf(d);
selectedData.splice(i, 1);
instance.trigger(MultiTableEvent.dataDeselected, d);
}
if(!newSelectedData) return;
newSelectedData.forEach(function(newSelectData){
selectedData.push(newSelectData);
instance.trigger(MultiTableEvent.dataSelected, newSelectData);
});
};
this.getWidget = function(){
return container;
};
};
var MultiTableHeaderRow = function(table, rowIndex) {
var headerRow = jQuery("&lt;div&gt;", {style : "border-bottom: 1px solid #d6d6d6;background: #fbfbfb;white-space: nowrap;"});
headerRow.css("height" , table.getHeaderRowHeight()+"px");
headerRow.css("line-height" , table.getHeaderRowHeight()+"px");
var cells = [];
table.on(MultiTableEvent.inited, function(){
cells = [];
headerRow.empty();
var columns = table.getColumns();
columns.forEach(function(column, columnIndex){
var headerCell = new MultiTableHeaderCell(table, column, columnIndex);
cells.push(headerCell);
headerRow.append(headerCell.getWidget());
});
});
this.getWidget = function() {
return headerRow;
};
var startX = -1;
var movingColumn = null;
var movingColumnIndex = -1;
table.on(MultiTableEvent.colResizeStarted, function(evt, screenX, columnIndex){
startX = screenX;
movingColumn = table.getColumns()[columnIndex];
movingColumnIndex = columnIndex;
});
headerRow.mousemove(function(evt){
if(!movingColumn) {
return;
}
var targetWidth = movingColumn.width - (startX - evt.screenX);
if(movingColumn.minWidth) {
targetWidth = Math.max(movingColumn.minWidth, targetWidth);
}
if(startX === -1) {
return;
}
movingColumn.width = targetWidth;
table.trigger(MultiTableEvent.colResized, [movingColumn, movingColumnIndex]);
startX = evt.screenX;
});
headerRow.mouseup(function(){
startX = -1;
movingColumn = null;
movingColumnIndex = -1;
});
headerRow.mouseout(function(){
startX = -1;
movingColumn = null;
movingColumnIndex = -1;
});
};
var MultiTableHeaderCell = function(table, columnOption, columnIndex) {
var header = jQuery("&lt;div&gt;", {style : "padding-left: 12px;display: inline-block;border-right: 1px solid #d6d6d6;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;height: 100%;box-sizing: border-box;", title : columnOption.name});
header.css("width", columnOption.width+"px");
var text = jQuery("&lt;div&gt;", {style : "display: inline-block;width: calc(100% - 12px);overflow: hidden;white-space: nowrap;text-overflow: ellipsis;height: 100%;"});
text.html(columnOption.name);
var movingAnchor = jQuery("&lt;div&gt;", {style : "cursor: ew-resize;width: 12px;height: 100%;display: inline-block;"});
var sortImage = jQuery("&lt;div&gt;", {style : "margin-left: 9px;margin-bottom: 9px;"});
sortImage.hide();
var sortAsc = null;
header.append(text);
header.append(sortImage);
header.append(movingAnchor);
this.getWidget = function() {
return header;
};
this.cancelEventDispatch = function(element, event){
element.on(event, function (evt) {
evt.cancelBubble = true;
evt.stopped = true;
evt.stopPropagation();
evt.preventDefault();
});
};
this.notMovingClick = function(element, handler) {
var moving = false;
element.mousedown(function () {
moving = false;
});
element.mousemove(function () {
moving = true;
});
element.mouseup(function () {
if (moving) {
return;
}
handler(arguments);
});
};
this.cancelEventDispatch(movingAnchor, 'mouseout');
this.cancelEventDispatch(header, 'mouseout');
this.cancelEventDispatch(text, 'mouseout');
/** resizing header **/
movingAnchor.mousedown(function(evt){
table.trigger(MultiTableEvent.colResizeStarted, [evt.screenX, columnIndex]);
evt.cancelBubble = true;
evt.stopped = true;
evt.stopPropagation();
});
table.on(MultiTableEvent.colResized, function(evt, column){
if(columnOption === column) {
header.css("width", columnOption.width+"px");
}
});
/** sorting header **/
if(columnOption.sortable) {
this.notMovingClick(header, function(){
sortAsc = !sortAsc;
table.trigger(MultiTableEvent.columnSortClicked, [columnIndex, sortAsc, columnOption]);
});
table.on(MultiTableEvent.columnSortClicked, function(event, columnIndex, sortAsc, column){
if(columnOption === column ) {
text.css("width", "calc(100% - 31px)");
sortImage.css("display", "inline-block");
if(sortAsc) {
sortImage.addClass("ns-tableSortDescIcon");
sortImage.removeClass("ns-tableSortAscIcon");
} else {
sortImage.removeClass("ns-tableSortDescIcon");
sortImage.addClass("ns-tableSortAscIcon");
}
} else {
text.css("width", "");
sortAsc = null;
sortImage.hide();
}
});
}
};
var MultiTableRow = function(table, data, rowIndex) {
var row = jQuery("&lt;div&gt;", {style : "border-bottom: 1px dotted #d6d6d6;white-space: nowrap;"});
if(rowIndex%2 &gt; 0) {
row.css("background", "#fbfbfb");
}
row.css("height" , table.getRowHeight()+"px");
row.css("line-height" , table.getRowHeight()+"px");
var cells = [];
var columns = table.getColumns();
columns.forEach(function(column){
var cell = new MultiTableCell(column.width, data[column.id]);
cells.push(cell);
row.append(cell.getWidget());
});
var selected = false;
var hover = false;
this.validateBackground = function(){
if(selected) {
if(hover) {
row.css("background", "#e7e8b1");
} else {
row.css("background", "#deefff");
}
} else if (hover){
row.css("background", "#f5f5dc");
} else {
if (rowIndex % 2 &gt; 0) {
row.css("background", "#fbfbfb");
} else {
row.css("background", "");
}
}
};
var instance = this;
table.on(MultiTableEvent.colResized, function(evt, column, columnIndex){
cells[columnIndex].setWidth(column.width);
});
row.click(function(){
table.trigger(MultiTableEvent.dataClicked, [data]);
});
table.on(MultiTableEvent.dataSelected, function(){
selected = table.isSelected(data);
instance.validateBackground();
});
table.on(MultiTableEvent.dataDeselected, function(){
selected = table.isSelected(data);
instance.validateBackground();
});
this.getWidget = function() {
return row;
};
selected = table.isSelected(data);
this.validateBackground(false, false);
};
var MultiTableCell = function(width, value) {
var cell = jQuery("&lt;div&gt;", {style : "padding-left: 12px; padding-right: 12px;display: inline-block; border-right: 1px dotted #d6d6d6; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; height: 100%; box-sizing: border-box;", title : value});
cell.text(value);
this.getWidget = function() {
return cell;
};
this.setWidth = function(width) {
cell.css("width", width+"px");
};
this.setWidth(width);
};
// ТАБЛИЦА РЕЕСТРА
var RegistryTable = function(registry, multiChoose, filterIds, selectedData) {
var columns = [];
var recordsCount = 0;
var currentPage = 0;
var search = null;
var sortCmpId = null;
var sortAsc = null;
var countInPage = 15;
var instance = this;
this.filterID = null;
var width = 780;
registry.columns.forEach(function(col){
if(col.visible != 1) {
return;
}
col.id = col.columnID;
col.name = col.label;
columns.push(col);
});
var columnWidth = 150;
if(columns.length &lt;= 5) {
columnWidth = (width - 1)/columns.length;
}
columns = columns.sort(function(item1, item2){
var number1 = item1.order;
var number2 = item2.order;
if(number1 === number2) {
if(item1.name &lt; item2.name) {
return -1;
} else if(item1.name &gt; item2.name) {
return 1;
}
} else {
if(number1 === 0 ) {
return 1;
} else if(number2 === 0 ) {
return -1;
} else if(number1 &lt; number2) {
return -1;
} else {
return 1;
}
}
return 0;
});
console.log(columns);
columns.forEach(function(column){
column.width = columnWidth;
column.minWidth = 35;
});
var table = new MultiTable(multiChoose, selectedData);
table.init({idField : 'documentId'}, columns);
this.dblclick = function(handler){
table.getWidget().dblclick(handler);
};
table.on(MultiTableEvent.columnSortClicked, function(event, columnIndex, sortAsc, columnOption){
instance.sort(columnOption.id, sortAsc);
});
this.addDataClicked = function(handler){
table.on(MultiTableEvent.dataClicked, handler);
};
this.search = function(newSearch) {
search = newSearch;
this.loadData(0, this.filterID);
};
this.sort = function(cmpId, asc){
sortCmpId = cmpId;
sortAsc = asc;
this.loadData(0, this.filterID);
};
this.parseData = function(data){
var registryData = [];
data.result.forEach(function (item) {
var mergedItem = item.fieldValue;
mergedItem.documentId = item.documentID;
mergedItem.asfDataId = item.dataUUID;
mergedItem.uuid = item.documentID;
registryData.push(mergedItem);
});
return registryData;
};
this.loadData = function(pageNumber){
currentPage = pageNumber;
var params = {
registryID: registry.registryID,
pageNumber: pageNumber,
countInPart: countInPage,
searchString: search,
sortCmpID: sortCmpId,
sortDesc: sortAsc
};
if(model.additionalParams) {
params = Object.assign(params, model.additionalParams);
}
if(filterIds){
params.pageNumber=0;
params.countInPart=0;
}
AS.SERVICES.showWaitWindow();
AS.FORMS.ApiUtils.simpleAsyncGet('rest/api/registry/data_ext?' + $.param(params), function(data){
data = instance.filterData(data, pageNumber);
recordsCount = data.recordsCount;
table.setData(instance.parseData(data));
AS.SERVICES.hideWaitWindow();
});
};
this.selectAll = function() {
if(!multiChoose ) return;
var params = {
registryID: registry.registryID,
pageNumber: 0,
countInPart: 0,
searchString: search,
sortCmpID: sortCmpId,
sortDesc: sortAsc
};
AS.SERVICES.showWaitWindow();
AS.FORMS.ApiUtils.simpleAsyncGet('rest/api/registry/data_ext?' + $.param(params), function(data){
data = instance.filterData(data, 0);
table.setSelectedData(instance.parseData(data));
AS.SERVICES.hideWaitWindow();
});
};
this.filterData = function(data, pageNumber){
if(!filterIds) return data;
var result = {recordsCount : 0, result : []};
var start = pageNumber*countInPage;
var finish = start+countInPage;
data.result.forEach(function(record){
if(filterIds.indexOf(record.documentID) &gt; -1) {
if(!pageNumber || (result.recordsCount &gt;= start &amp;&amp; result.recordsCount &lt; finish)) {
result.result.push(record);
}
result.recordsCount++;
}
});
return result;
}
this.getCurrentPage = function(){
return currentPage;
};
this.getRecordsCount = function() {
return recordsCount;
};
this.getPagesCount = function(){
var pagesCount = Math.floor(recordsCount/countInPage);
if(recordsCount%countInPage) {
pagesCount++;
}
return pagesCount;
};
this.getSelectedData = function() {
return table.getSelectedData();
};
this.loadData(0, this.filterID);
this.on = function(event, handler){
table.on(event, handler);
};
this.getSelectedData = function(){
return table.getSelectedData();
};
this.getWidget = function(){
return table.getWidget();
};
};
var RegistryChooser = function(registry, multiChoose, filterIds, selectedIds, handler){
var instance = this;
this.container = jQuery("&lt;div&gt;");
var searchInput = jQuery("&lt;input&gt;", {style : "color: #606060; height: 32px;box-sizing: border-box; " +
"border: #e2e2e2 1px solid;border-radius: 4px;padding-left: 9px;" +
"vertical-align:top; width: 480px; margin-right:20px", placeHolder : i18n.tr("Поиск")});
var prevPage = jQuery("&lt;div&gt;", {style : "height: 32px; width: 34px;border: 1px solid #d6d6d6;" +
"border-top-left-radius: 4px; border-bottom-left-radius: 4px; display: inline-block; " +
"box-sizing: border-box;vertical-align:top;vertical-align: middle;font-size: 20px;" +
"padding-left: 5px; line-height: 30px; color: #afafaf; user-select: none"}).html("◄");
var nextPage = jQuery("&lt;div&gt;", {style : "height: 32px; width: 34px;border: 1px solid #d6d6d6;" +
"border-top-right-radius: 4px; border-bottom-right-radius: 4px; display: inline-block;" +
"box-sizing: border-box;vertical-align: middle;font-size: 20px;" +
"padding-left: 5px; line-height: 30px; color: #afafaf; user-select: none"}).html("►");
var pageNumber = jQuery("&lt;div&gt;", {style : "display: inline-block;border: #e2e2e2 1px solid;width: 80px;" +
"height: 32px;box-sizing: border-box;vertical-align:top;text-align: center; line-height: 32px;"});
var selectedButton = jQuery("&lt;div&gt;", {style : "padding-left : 20px; padding-right:20px; height: 30px;" +
"line-height: 30px;border:#55cc95 1px solid; border-radius: 4px; cursor: pointer;" +
"text-align: center; color: #ffffff; background-color:#55cc95; font-family: DroidSansBold;" +
"font-size: 14px; width:130px; margin:0 auto"});
var selectAll = jQuery('&lt;input/&gt;', {type: "checkbox", style: 'display: inline-block ; vertical-align: middle;'});
var selectAllLabel = jQuery('&lt;label/&gt;', {style: "color: #606060; font-family: DroidSans, arial, serif; " +
"font-size: 13px; display: inline-block; margin-right:30px"});
selectAllLabel.append(selectAll);
selectAllLabel.append(jQuery("&lt;span&gt;").html(i18n.tr("Выбрать все")));
selectedButton.html(i18n.tr("Выбрать"));
var tableScroll = jQuery("&lt;div&gt;", {style : "width: 780px; height : 460px; border: 1px solid #efefef; overflow : auto; margin-top: 5px; margin-bottom: 5px;"});
var headerPanel = jQuery("&lt;div&gt;");
headerPanel.append(searchInput);
if(multiChoose) {
headerPanel.append(selectAllLabel);
} else {
searchInput.css("width", "610px");
}
headerPanel.append(prevPage);
headerPanel.append(pageNumber);
headerPanel.append(nextPage);
var selectedData = [];
selectedIds.forEach(function(selectedId){
selectedData.push({documentId : selectedId});
});
var registryTable = new RegistryTable(registry, multiChoose, filterIds, selectedData);
registryTable.addDataClicked(function(){
selectAll.removeAttr("checked");
});
var currentPage = 1;
registryTable.on(MultiTableEvent.dataLoaded, function () {
currentPage = registryTable.getCurrentPage() + 1;
var totalPage = registryTable.getPagesCount();
if (isNaN(totalPage)) {
totalPage = 0;
}
if (totalPage === 0) {
currentPage = 0;
}
pageNumber.html(currentPage+"/"+totalPage);
});
registryTable.dblclick(function () {
if(multiChoose) return;
if (registryTable.getSelectedData().length == 0) return;
instance.close(true);
});
selectedButton.click(function(){
instance.close(true);
});
this.close = function (executeHandler){
if(executeHandler === true) {
handler(registryTable.getSelectedData());
}
instance.container.dialog("destroy");
};
prevPage.click(function(){
if(currentPage &lt;= 1) return;
currentPage = currentPage - 1;
registryTable.loadData(currentPage-1);
});
nextPage.click(function(){
if(currentPage &gt;= registryTable.getPagesCount()) return;
currentPage = currentPage + 1;
registryTable.loadData(currentPage-1);
});
selectAll.click(function(){
registryTable.selectAll();
});
searchInput.keypress(function (event) {
if (event.keyCode == KEY_CODES.ENTER) {
registryTable.search(searchInput.val());
}
});
this.show = function(){
instance.container.dialog({
width : 800,
height : 600,
title: i18n.tr("Выбор записей реестра: ")+registry.name,
modal: true,
close : function(){
instance.close(false);
}
});
};
tableScroll.append(registryTable.getWidget());
this.container.append(headerPanel);
this.container.append(tableScroll);
this.container.append(selectedButton);
};
</javascript>
<html></html>
</customComponent>
</objects>
<dependencies/>
</configuration>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment