").css( {"margin-top" : "5px"} ).dxToolbar( {
items : [
{ location : "after", template : function() { return instance.button.element() }}
]
}).appendTo( content );
return content;
}
}
]
})// .appendTo( instance.rootElement );
/*
$("
").dxToolbar( {
items : [
{
location : "after",
template : function() { return instance.resetButton.element() }
},
{
location : "after",
template : function() { return instance.saveButton.element() }
}
]
}).appendTo( instance.rootElement ).css( { "margin-top" : "5px" } );
*/
instance.rootElement.dxBox( {
direction : "col",
items : [
{
baseSize : 535,
template : function() {
return innerBox;
}
},
{
baseSize : "auto",
template : function( ) {
return $("
").dxToolbar( {
items : [
{
location : "after",
template : function() { return instance.resetButton.element() }
},
{
location : "after",
template : function() { return instance.saveButton.element() }
}
]
})
}
}
]
})
instance.refresh();
}
WorkflowFormSections.prototype.constructor = WorkflowFormSections;
WorkflowFormSections.prototype.element = function() {
return this.rootElement;
}
WorkflowFormSections.prototype.refresh = function() {
let instance = this;
let refreshPromise = $.Deferred();
instance.dataGrid.cancelEditData();
instance.load().done( function() {
instance.fieldDataGrids = {};
instance.dataGrid.option( "dataSource", {
store : { type : "array", data : instance.fieldSets, key : "fieldSetId" },
sort : [ "fieldSetRank" ],
filter : [ "deleted", "=", false ]
})
instance.flexFields.forEach( function( ff ) {
ff.disabled = false;
})
let flexFieldStore = new DevExpress.data.ArrayStore( {
data : instance.flexFields, key : "fieldId",
})
instance.fieldSets.forEach( function( fs ) {
fs.fields.forEach( function( f ) {
flexFieldStore.update( f.fieldId, { disabled : true } );
});
});
instance.updateAddToSectionButton();
instance.fieldList.option( "dataSource", {
store : flexFieldStore,
filter : [ "disabled", "=", false ],
sort : [ "sortRank" ]
})
instance.saveButton.option( { "disabled": true } );
refreshPromise.resolve();
})
return refreshPromise;
}
WorkflowFormSections.prototype.load = function() {
let instance = this;
instance.newFieldSetId = 0;
let loading = $.Deferred();
let waitingCount = 0;
loading.progress( function() {
waitingCount--;
if( waitingCount == 0 ) {
loading.resolve();
}
})
waitingCount++;
let fieldSetsDataSource = Fse.Data.newDataSource( { object : "WRK.fieldSets", objectParams : { formId : instance.formId }, paginate : false, keyField : "fieldSetId" } );
fieldSetsDataSource.load().done( function( data ) {
instance.fieldSets = data;
instance.fieldSets.forEach( function( fs ) {
fs.deleted = false;
if( ! fs.fields ) {
fs.fields = [];
}
})
loading.notify();
})
waitingCount++;
let flexFieldDataSource = Fse.Data.newDataSource( {
object : "WRK.flexFields", objectParams : { domain : instance.fieldDomain, category : instance.fieldCategory }, paginate : false, keyField : "fieldId"
})
flexFieldDataSource.load().done( function( data ) {
instance.flexFields = data;
loading.notify();
})
return loading;
}
WorkflowFormSections.prototype.save = function() {
let instance = this;
let savePromise = $.Deferred();
instance.dataGrid.saveEditData().done( function() {
let saveData = {
formId : instance.formId,
fieldSets : instance.fieldSets
};
Fse.Ajax.performAction( {
object : "WRK.saveFieldSets",
data : saveData
} ).done( function( saveResult ) {
instance.refresh();
savePromise.resolve();
})
})
return savePromise;
}
WorkflowFormSections.prototype.updateAddToSectionButton = function() {
let instance = this;
let sectionButtonItems = [ {
text : "Add selected fields to section...", id : 0
}];
instance.fieldSets.forEach( function( fs ) {
if( fs.deleted ) {
return;
}
sectionButtonItems.push( {
text : fs.fieldSetName,
id : fs.fieldSetId
});
});
instance.button.option( { items : sectionButtonItems, selectedItemKey : 0 } );
}
WorkflowFormSections.prototype.addSection = function() {
let instance = this;
instance.newFieldSetId--;
let fieldSet = { fieldSetId : instance.newFieldSetId, fieldSetName : "New Section", fieldSetRank : 10, fields : [], deleted : false };
instance.fieldSets.push( fieldSet );
instance.dataGrid.refresh();
instance.saveButton.option( { "disabled": false } );
instance.updateAddToSectionButton();
return;
}
WorkflowFormSections.prototype.deleteSection = function( data ) {
let instance = this;
instance.saveButton.option( { "disabled": false } );
instance.fieldSets.forEach( function( fs ) {
if( fs.fieldSetId == data.fieldSetId ) {
let fieldsDataGrid = instance.fieldDataGrids[fs.fieldSetId];
let availableFieldsStore = instance.fieldList.getDataSource().store();
let sectionFieldsStore = fieldsDataGrid.getDataSource().store();
let selectedFields = fs.fields;
let fieldIds = [];
selectedFields.forEach( function( field ) {
fieldIds.push( field.fieldId );
});
fieldIds.forEach( function( fieldId ) {
sectionFieldsStore.remove( fieldId );
availableFieldsStore.update( fieldId, { disabled : false } );
})
fs.deleted = true;
fieldsDataGrid.getDataSource().sort( [ "sortRank" ] );
fieldsDataGrid.refresh();
instance.fieldList.reload()
instance.fieldList.option( { selectedItemKeys : fieldIds } );
}
})
instance.dataGrid.refresh();
}