Commit c9db9962b0bb6b2ee173e793958673406a5f4b9f

Authored by Benjamin Renard
1 parent 04084c4e

WIP

js/app/models/PlotObjects/MultiplotRequestObject.js
... ... @@ -18,7 +18,8 @@ Ext.define('amdaPlotObj.MultiplotRequestObject', {
18 18 idProperty: 'id',
19 19  
20 20 requires: [
21   - 'amdaModel.PlotNode'
  21 + 'amdaModel.PlotNode',
  22 + 'amdaPlotObj.PlotRequestObject'
22 23 ],
23 24  
24 25 hasMany: {
... ... @@ -44,11 +45,25 @@ Ext.define('amdaPlotObj.MultiplotRequestObject', {
44 45 },
45 46  
46 47 createNewPlot: function() {
  48 + var plotObject = Ext.create('amdaPlotObj.PlotRequestObject');
  49 + return this.createNewPlotFromObject(plotObject);
  50 + },
  51 +
  52 + duplicatePlot: function(plotNode) {
  53 + var clonedObject = plotNode.get('object').copy();
  54 + console.log(plotNode);
  55 + this.plots().each(function(node) {
  56 + console.log(node);
  57 + });
  58 + //this.plots().store.removeAt(index);
  59 + //store.insert(index, newValue);
  60 + },
  61 +
  62 + createNewPlotFromObject: function(plotObject) {
47 63 var plotNode = Ext.create('amdaModel.PlotNode', {
48 64 leaf : true,
49 65 contextNode : this
50 66 });
51   - var plotObject = Ext.create(plotNode.get('objectDataModel'));
52 67 plotNode.set('object',plotObject);
53 68 this.plots().add(plotNode);
54 69 return this.plots().getAt(this.plots().count()-1);
... ...
js/app/models/PlotObjects/PlotRequestObject.js
... ... @@ -233,6 +233,7 @@ Ext.define('amdaPlotObj.PlotRequestObject', {
233 233 var requestValues = new Object();
234 234  
235 235 requestValues['nodeType'] = 'request';
  236 + requestValues['leaf'] = true;
236 237  
237 238 requestValues['id'] = this.get('id');
238 239  
... ...
js/app/views/PlotComponents/PlotTabContent.js
... ... @@ -49,11 +49,82 @@ Ext.define('amdaPlotComp.PlotTabContent', {
49 49 this.plotNode.execute();
50 50 },
51 51  
52   - init : function(config) {
  52 + savePlot : function() {
  53 + var object = this.plotNode.get('object');
  54 + if (!object)
  55 + return;
  56 +
  57 + if ((object.get('id') != '') && (this.plotNode.get('text') == object.get('name'))) {
  58 + //update existing request
  59 + this.plotNode.update();
  60 + return;
  61 + }
  62 +
  63 + //save new request
53 64 var me = this;
54   - me.plotNode = config.plotNode;
  65 + this.plotNode.isValidName(object.get('name'), function (res) {
  66 + if (!res) {
  67 + myDesktopApp.errorMsg('Error during object validation');
  68 + return;
  69 + }
  70 + if (!res.valid) {
  71 + if (res.error) {
  72 + if (res.error.search('subtree') != -1) {
  73 + Ext.Msg.show( { title : 'Warning',
  74 + msg: res.error + '<br/>Do you want to overwrite it?',
  75 + width: 300,
  76 + buttons: Ext.Msg.OKCANCEL,
  77 + icon: Ext.Msg.WARNING,
  78 + fn : me.overwritePlot,
  79 + scope : me
  80 + });
  81 + }
  82 + else {
  83 + myDesktopApp.errorMsg(res.error);
  84 + }
  85 + }
  86 + else {
  87 + myDesktopApp.errorMsg('Invalid object name');
  88 + }
  89 + return;
  90 + }
  91 + me.saveProcess(false);
  92 + });
  93 + },
  94 +
  95 + overwritePlot : function(btn) {
  96 + if (btn == 'cancel') return;
  97 + this.saveProcess(true);
  98 + },
  99 +
  100 + saveProcess : function(toRename) {
  101 + if (toRename) {
  102 + this.plotNode.update();
  103 + }
  104 + else {
  105 + if (this.plotNode.get('object').get('id') != '') {
  106 + //Duplicate request
  107 + var plotModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.plot.id);
  108 + if (!plotModule)
  109 + return;
  110 + this.plotNode = plotModule.linkedNode.get('object').duplicatePlot(this.plotNode);
  111 + this.updateUI();
  112 + }
  113 + this.plotNode.create();
  114 + }
  115 + },
  116 +
  117 + updateUI : function() {
  118 + this.plotOutput.setObject(this.plotNode.get('object'));
  119 + this.timeSelector.intervalSel.setInterval(this.plotNode.get('object').get('startDate'), this.plotNode.get('object').get('stopDate'));
  120 + this.timeSelector.setTTTab(this.plotNode.get('object').get('timeTables'));
  121 + this.treePlot.buildTree(this.plotNode.get('object'));
  122 + },
  123 +
  124 + init : function(config) {
  125 + this.plotNode = config.plotNode;
55 126  
56   - this.timeSelector = new amdaUI.TimeSelectorUI( { id: 'plotTimeSelectorTab' + me.plotNode.id, border : false, flex: 6, collapsible: true, collapseDirection : 'bottom'} );
  127 + this.timeSelector = new amdaUI.TimeSelectorUI( { id: 'plotTimeSelectorTab' + this.plotNode.id, border : false, flex: 6, collapsible: true, collapseDirection : 'bottom'} );
57 128 this.plotElement = new amdaPlotComp.PlotElementPanel({flex: 11});
58 129 this.treePlot = new amdaPlotComp.PlotTree({flex: 11, plotElementPanel: this.plotElement});
59 130 this.plotOutput = new amdaPlotComp.PlotOutputForm({flex: 6, collapseDirection : 'bottom', collapsible : true });
... ... @@ -110,10 +181,7 @@ Ext.define(&#39;amdaPlotComp.PlotTabContent&#39;, {
110 181 ],
111 182 listeners: {
112 183 afterrender: function(comp, eOpts) {
113   - this.plotOutput.setObject(this.plotNode.get('object'));
114   - this.timeSelector.intervalSel.setInterval(this.plotNode.get('object').get('startDate'), this.plotNode.get('object').get('stopDate'));
115   - this.timeSelector.setTTTab(this.plotNode.get('object').get('timeTables'));
116   - this.treePlot.buildTree(this.plotNode.get('object'));
  184 + this.updateUI();
117 185 },
118 186 scope: this
119 187 }
... ...
js/app/views/PlotUI.js
... ... @@ -37,39 +37,6 @@ Ext.define(&#39;amdaUI.PlotUI&#39;, {
37 37 this.plotTabs.setMultiplotObject(this.object);
38 38 },
39 39  
40   - /**
41   - * overwrite metod called by Save button
42   - */
43   - overwriteProcess : function(btn)
44   - {
45   - if (btn == 'cancel') return;
46   - this.saveProcess(true);
47   - },
48   -
49   -
50   - /**
51   - * save method called by Save button to launch the save process
52   - */
53   - saveProcess : function(toRename) {
54   - var plotModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.plot.id);
55   - if (!plotModule)
56   - return;
57   -
58   - if (toRename) {
59   - plotModule.linkedNode.set('object',this.object);
60   - plotModule.linkedNode.update();
61   - }
62   - else {
63   - //Save
64   - if (this.object.get('id') != '') {
65   - //Duplicate request
66   - plotModule.createLinkedNode();
67   - plotModule.linkedNode.set('object',this.object);
68   - }
69   - plotModule.linkedNode.create();
70   - }
71   - },
72   -
73 40 resetProcess : function(){
74 41 var plotModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.plot.id);
75 42 plotModule.createLinkedNode();
... ... @@ -209,66 +176,11 @@ Ext.define(&#39;amdaUI.PlotUI&#39;, {
209 176 });
210 177 },
211 178  
212   - savePlotRequest : function(allTabs) {
213   - var plotModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.plot.id);
214   - if (!plotModule)
215   - return;
216   - this.updateObject();
217   - this.object.set('active-tab-id', this.plotTabs.getSelectedTabId());
218   - var me = this;
219   -
220   - if ((this.object.get('id') != '') && (plotModule.linkedNode.get('text') == this.object.get('name'))) {
221   - //update existing request
222   - if (!allTabs) {
223   - this.keepOnlySelectedTabInObject(true, function() {
224   - plotModule.linkedNode.update();
225   - });
226   - }
227   - else {
228   - plotModule.linkedNode.update();
229   - }
230   - return;
231   - }
232   -
233   - //save new request
234   - var me = this;
235   - plotModule.linkedNode.isValidName(this.object.get('name'), function (res) {
236   - if (!res) {
237   - myDesktopApp.errorMsg('Error during object validation');
238   - return;
239   - }
240   - if (!res.valid) {
241   - if (res.error) {
242   - if (res.error.search('subtree') != -1) {
243   - Ext.Msg.show( { title : 'Warning',
244   - msg: res.error + '<br/>Do you want to overwrite it?',
245   - width: 300,
246   - buttons: Ext.Msg.OKCANCEL,
247   - icon: Ext.Msg.WARNING,
248   - fn : me.overwriteProcess,
249   - scope : me
250   - });
251   - }
252   - else {
253   - myDesktopApp.errorMsg(res.error);
254   - }
255   - }
256   - else {
257   - myDesktopApp.errorMsg('Invalid object name');
258   - }
259   - return;
260   - }
261   - if (!allTabs) {
262   - me.keepOnlySelectedTabInObject((me.object.get('id') == ''), function() {
263   - me.saveProcess(false);
264   - me.setObject(me.object);
265   - });
266   - }
267   - else {
268   - me.saveProcess(false);
269   - }
270   - });
271   - },
  179 + savePlotRequest : function() {
  180 + var plotTab = this.plotTabs.getCurrentPlotTabContent();
  181 + if (plotTab)
  182 + plotTab.savePlot();
  183 + },
272 184  
273 185 init : function(config) {
274 186 this.plotTabs = new amdaPlotComp.PlotTabPanel({plotUI : this});
... ... @@ -306,22 +218,11 @@ Ext.define(&#39;amdaUI.PlotUI&#39;, {
306 218 this.resetProcess();
307 219 }
308 220 },'->', '-', {
309   - xtype: 'splitbutton',
310   - text: 'Save All Tabs',
311   - menu: {
312   - items: [
313   - {
314   - text: 'Save Current Tab',
315   - scope: this,
316   - handler: function() {
317   - this.savePlotRequest(false);
318   - }
319   - },
320   - ]
321   - },
  221 + xtype: 'button',
  222 + text: 'Save',
322 223 scope: this,
323 224 handler: function(button) {
324   - this.savePlotRequest(true);
  225 + this.savePlotRequest();
325 226 }
326 227 }
327 228 ]
... ...
php/classes/RequestMgr.php
... ... @@ -258,17 +258,12 @@ class RequestMgr extends AmdaObjectMgr
258 258 switch ($obj->nodeType)
259 259 {
260 260 case 'request' :
261   - foreach ($obj->tabs as $tab)
262   - {
263   - $timesrc = $tab->{'multi-plot-linked'} ? $obj->timesrc : $tab->timesrc;
264   -
  261 +
265 262 //TODO check TT as well (first start and last stop ?)
266   - if ($timesrc != 'Interval') continue;
267   - // select active tab
268   - if (!$tab->{'multi-plot-linked'} && $tab->id != $obj->{'last-plotted-tab'}) continue;
  263 + if ($obj->timesrc != 'Interval') continue;
269 264  
270 265 $argsTab = array();
271   - foreach ($tab->panels as $panel)
  266 + foreach ($obj->panels as $panel)
272 267 {
273 268 $params = array();
274 269 foreach ($panel->params as $param)
... ... @@ -283,12 +278,11 @@ class RequestMgr extends AmdaObjectMgr
283 278 if (count($params) > 0)
284 279 {
285 280 $argsTab['param'] = array_unique($params);
286   - $argsTab['startTime'] = $tab->{'multi-plot-linked'} ? $obj->startDate : $tab->startDate;
287   - $argsTab['stopTime'] = $tab->{'multi-plot-linked'} ? $obj->stopDate : $tab->stopDate;
  281 + $argsTab['startTime'] = $obj->startDate;
  282 + $argsTab['stopTime'] = $$obj->stopDate;
288 283 }
289 284 }
290 285 if (count($argsTab) > 0) $args[] = $argsTab;
291   - }
292 286 break;
293 287 case 'condition' :
294 288 //$argsTab = array();
... ...