/** * Project  : AMDA-NG * Name : PlotRequestObject.js * @class amdaPlotObj.PlotRequestObject * @extends amdaModel.AmdaTimeObject * @brief Plot Request Business Object Definition * @author Benjamin Renard * @version $Id: PlotTabObject.js benjamin $ ****************************************************************************** * FT Id : Date : Name - Description ****************************************************************************** * : :22/07/2015: BRE - file creation * 20/03/2020: BRE - full rework */ Ext.define('amdaPlotObj.PlotRequestObject', { extend: 'amdaModel.AmdaTimeObject', idProperty: 'id', requires: [ 'amdaPlotObj.PlotObjectConfig', 'amdaPlotObj.PlotPanelObject', 'amdaPlotObj.PlotLayoutVerticalObject', 'amdaPlotObj.PlotLayoutAutoObject', 'amdaPlotObj.PlotLayoutManualObject' ], fields : [ {name: 'tab-index', type: 'int', defaultValue: 0, persist: false}, {name: 'tab-title', type: 'string', defaultValue: '', persist: false}, {name: 'file-format', type: 'string'}, {name: 'file-output', type: 'string'}, {name: 'file-prefix', type: 'string'}, {name: 'one-file-per-interval', type: 'boolean'}, {name: 'tree-full-view', type: 'boolean'}, {name: 'page-node-state', type: 'int', defaultValue: 2}, //0 : collapsed, 1 : expanded, 2 : not set {name: 'panels-node-state', type: 'int', defaultValue: 2}, //0 : collapsed, 1 : expanded, 2 : not set {name: 'page-title-text', type: 'string'}, {name: 'page-title-color', type: 'string'}, {name: 'page-title-position', type: 'string'}, {name: 'page-title-alignment', type: 'string'}, {name: 'page-title-font-activated', type: 'boolean'}, {name: 'page-title-font-name', type: 'string'}, {name: 'page-title-font-size', type: 'int'}, {name: 'page-title-font-bold', type: 'boolean'}, {name: 'page-title-font-italic', type: 'boolean'}, {name: 'page-margins-activated', type: 'boolean'}, {name: 'page-margin-x', type: 'float'}, {name: 'page-margin-y', type: 'float'}, {name: 'page-mode', type: 'string'}, {name: 'page-orientation', type: 'string'}, {name: 'page-dimension', type: 'string'}, {name: 'page-superpose-mode', type: 'boolean'}, {name: 'page-font-activated', type: 'boolean'}, {name: 'page-font-name', type: 'string'}, {name: 'page-font-size', type: 'int'}, {name: 'page-font-bold', type: 'boolean'}, {name: 'page-font-italic', type: 'boolean'}, {name: 'page-layout-type', type: 'string'}, {name: 'page-layout-object', type: 'auto', defaultValue: null}, {name: 'last-panel-id', type: 'int', defaultValue: 0} ], associations : [ { type : 'hasMany', model : 'amdaPlotObj.PlotPanelObject', name : 'panels' } ], constructor: function(){ var me = this; me.callParent(arguments); if ((arguments.length > 0) && arguments[0]) { if (arguments[0].panels) me.loadPanels(arguments[0].panels); if (arguments[0]['page-layout-object']) me.loadLayoutObject(arguments[0]['page-layout-object']); } else { //new object, set default fields values me.setDefaultValues(); } this.dirty = false; }, loadPanels: function(panels) { this.panels().loadData(panels); this.updatePanelIndex(); }, loadLayoutObject: function(layout) { this.set('page-layout-object', this.createLayoutByType(this.get('page-layout-type'), layout)); if (this.get('page-layout-object') != null) this.get('page-layout-object').dirty = false; }, createNewPanel: function() { this.set('last-panel-id', this.get('last-panel-id') + 1); var recs = this.panels().add({id : this.get('last-panel-id')}); recs[0].setDefaultValues(); this.dirty = true; this.updatePanelIndex(); return recs[0]; }, removePanelById: function(panelId) { //Retrieve panel record var panelRecord = this.panels().getById(panelId); if (panelRecord == null) return false; this.panels().remove(panelRecord); this.dirty = true; this.updatePanelIndex(); return true; }, updatePanelIndex: function() { this.panels().each(function(panel, index) { panel.set('panel-index', index); }); }, createLayoutByType : function(layoutType, data) { //Create layout object in relation with the type switch (layoutType) { case 'vertical' : return new amdaPlotObj.PlotLayoutVerticalObject(data); case 'auto' : return new amdaPlotObj.PlotLayoutAutoObject(data); case 'manual' : return new amdaPlotObj.PlotLayoutManualObject(data); default : return null; } }, setLayout: function(layoutType) { if (layoutType == this.get('page-layout-type')) return; this.set('page-layout-type', layoutType); this.set('page-layout-object', this.createLayoutByType(layoutType)); }, setDefaultValues: function() { this.set('file-format', amdaPlotObj.PlotObjectConfig.defaultValues.file.format); this.set('file-output', amdaPlotObj.PlotObjectConfig.defaultValues.file.output); this.set('file-prefix', ''); this.set('one-file-per-interval', amdaPlotObj.PlotObjectConfig.defaultValues.file.oneFilePerInterval); this.set('name', ''); this.set('tree-full-view', amdaPlotObj.PlotObjectConfig.defaultValues.tree.fullView); this.set('page-title-text', ''); this.set('page-title-color', amdaPlotObj.PlotObjectConfig.defaultValues.page.title.color); this.set('page-title-position', amdaPlotObj.PlotObjectConfig.defaultValues.page.title.position); this.set('page-title-alignment', amdaPlotObj.PlotObjectConfig.defaultValues.page.title.alignment); this.set('page-title-font-activated', false); this.set('page-title-font-name', amdaPlotObj.PlotObjectConfig.defaultValues.page.font.name); this.set('page-title-font-size', amdaPlotObj.PlotObjectConfig.defaultValues.page.font.size); this.set('page-title-font-bold', false); this.set('page-title-font-italic', false); this.set('page-margins-activated', false); this.set('page-margin-x', amdaPlotObj.PlotObjectConfig.defaultValues.page.xMargin); this.set('page-margin-y', amdaPlotObj.PlotObjectConfig.defaultValues.page.yMargin); this.set('page-mode', amdaPlotObj.PlotObjectConfig.defaultValues.page.mode); this.set('page-orientation', amdaPlotObj.PlotObjectConfig.defaultValues.page.orientation); this.set('page-dimension', amdaPlotObj.PlotObjectConfig.defaultValues.page.dimension); this.set('page-superpose-mode', false); this.set('page-font-activated', false); this.set('page-font-name', amdaPlotObj.PlotObjectConfig.defaultValues.page.font.name); this.set('page-font-size', amdaPlotObj.PlotObjectConfig.defaultValues.page.font.size); this.set('page-font-bold', false); this.set('page-font-italic', false); this.setLayout(amdaPlotObj.PlotObjectConfig.defaultValues.page.layout.type); }, getPageShortInfo : function() { var dimension = amdaPlotObj.PlotObjectConfig.getValueByKey(amdaPlotObj.PlotObjectConfig.availablePageDimensions, this.get('page-dimension')); var orientation = amdaPlotObj.PlotObjectConfig.getValueByKey(amdaPlotObj.PlotObjectConfig.availablePageOrientations, this.get('page-orientation')); var info = dimension+', '+orientation; if (this.get('page-superpose-mode')) info += ', Epoch superposed mode'; return info; }, getLayoutShortInfo : function() { var type = amdaPlotObj.PlotObjectConfig.getValueByKey(amdaPlotObj.PlotObjectConfig.availablePageLayouts, this.get('page-layout-type')); return type; }, isDirty : function() { if (this.dirty) return true; if (this.get('page-layout-object') != null) if (this.get('page-layout-object').dirty) return true; var d = false; this.panels().each(function (panel, index) { if (panel.isDirty()) d = true; }); return d; }, getJsonValues : function() { var requestValues = new Object(); requestValues['nodeType'] = 'request'; requestValues['leaf'] = true; requestValues['id'] = this.get('id'); requestValues['tab-index'] = this.get('tab-index'); requestValues['tab-title'] = this.get('tab-title'); requestValues['name'] = this.get('name'); requestValues['file-format'] = this.get('file-format'); requestValues['file-output'] = this.get('file-output'); requestValues['file-prefix'] = this.get('file-prefix'); requestValues['one-file-per-interval'] = this.get('one-file-per-interval'); requestValues['tree-full-view'] = this.get('tree-full-view'); requestValues['page-node-state'] = this.get('page-node-state'); requestValues['panels-node-state'] = this.get('panels-node-state'); requestValues['page-title-text'] = this.get('page-title-text'); requestValues['page-title-color'] = this.get('page-title-color'); requestValues['page-title-position'] = this.get('page-title-position'); requestValues['page-title-alignment'] = this.get('page-title-alignment'); requestValues['page-title-font-activated'] = this.get('page-title-font-activated'); requestValues['page-title-font-name'] = this.get('page-title-font-name'); requestValues['page-title-font-size'] = this.get('page-title-font-size'); requestValues['page-title-font-bold'] = this.get('page-title-font-bold'); requestValues['page-title-font-italic'] = this.get('page-title-font-italic'); requestValues['page-margins-activated'] = this.get('page-margins-activated'); requestValues['page-margin-x'] = this.get('page-margin-x'); requestValues['page-margin-y'] = this.get('page-margin-y'); requestValues['page-mode'] = this.get('page-mode'); requestValues['page-orientation'] = this.get('page-orientation'); requestValues['page-dimension'] = this.get('page-dimension'); requestValues['page-superpose-mode'] = this.get('page-superpose-mode'); requestValues['page-font-activated'] = this.get('page-font-activated'); requestValues['page-font-name'] = this.get('page-font-name'); requestValues['page-font-size'] = this.get('page-font-size'); requestValues['page-font-bold'] = this.get('page-font-bold'); requestValues['page-font-italic'] = this.get('page-font-italic'); requestValues['timesrc'] = this.get('timesrc'); // if there's at least one timeTable name into 'timeTables' collection if (this.get('timesrc') == amdaModel.AmdaTimeObject.inputTimeSrc[0] && this.get('timeTables') && this.get('timeTables').length){ // get complete timeTables collection var timeTables = this.get('timeTables'); // init an empty array for timeTables requestValues['timeTables'] = []; // for each interval record Ext.Array.each(timeTables, function(item, index, all){ if (!item.$className) { requestValues['timeTables'][index] = {timeTableName : item.timeTableName, id : item.id}; } // get Json simplified value else { requestValues['timeTables'][index] = item.getJsonValues(); } }); } else { requestValues['startDate'] = this.get('startDate'); requestValues['stopDate'] = this.get('stopDate'); requestValues['durationDay'] = this.get('durationDay'); requestValues['durationHour'] = this.get('durationHour'); requestValues['durationMin'] = this.get('durationMin'); requestValues['durationSec'] = this.get('durationSec'); } requestValues['page-layout-type'] = this.get('page-layout-type'); if (this.get('page-layout-object') != null) requestValues['page-layout-object'] = this.get('page-layout-object').getJsonValues(); requestValues['panels'] = []; this.panels().each(function (panel, index) { requestValues['panels'][index] = panel.getJsonValues(); }); requestValues['last-panel-id'] = this.get('last-panel-id'); return requestValues; } });