Commit 0dbd1d09a7c0bf06c3881fddd3deb0e093a54ece
Exists in
master
and in
2 other branches
Merge remote-tracking branch 'akkodis/SEL_11428' into amdadev
Showing
2 changed files
with
229 additions
and
16 deletions
Show diff stats
js/app/views/CatalogUI.js
@@ -106,10 +106,13 @@ Ext.define('amdaUI.CatalogUI', { | @@ -106,10 +106,13 @@ Ext.define('amdaUI.CatalogUI', { | ||
106 | return updateStatus; | 106 | return updateStatus; |
107 | }, | 107 | }, |
108 | 108 | ||
109 | - addInterval: function (start, stop) { | ||
110 | - var row = this.TTGrid.getStore().getTotalCount(); | 109 | + addInterval: function (start, stop, index, parametersData) { |
110 | + | ||
111 | + //var row = this.TTGrid.getStore().getTotalCount(); | ||
112 | + var row = index; | ||
111 | var me = this; | 113 | var me = this; |
112 | this.TTGrid.getSelectionModel().deselectAll(); | 114 | this.TTGrid.getSelectionModel().deselectAll(); |
115 | + | ||
113 | AmdaAction.addCacheInterval({'start': start, 'stop': stop, 'index': row, 'isCatalog': true}, function (result, e) { | 116 | AmdaAction.addCacheInterval({'start': start, 'stop': stop, 'index': row, 'isCatalog': true}, function (result, e) { |
114 | this.status = result.status; | 117 | this.status = result.status; |
115 | if (!this.TTGrid.getStore().loading) { | 118 | if (!this.TTGrid.getStore().loading) { |
@@ -122,6 +125,16 @@ Ext.define('amdaUI.CatalogUI', { | @@ -122,6 +125,16 @@ Ext.define('amdaUI.CatalogUI', { | ||
122 | }); | 125 | }); |
123 | } | 126 | } |
124 | }, this); | 127 | }, this); |
128 | + | ||
129 | + // update the parameters | ||
130 | + if(index){ | ||
131 | + var obj = { | ||
132 | + 'cacheId': index, | ||
133 | + 'isCatalog': true, | ||
134 | + 'data': parametersData | ||
135 | + }; | ||
136 | + AmdaAction.modifyCacheInterval(obj); | ||
137 | + } | ||
125 | }, | 138 | }, |
126 | 139 | ||
127 | updateCount: function () { | 140 | updateCount: function () { |
js/app/views/PlotComponents/intervalSelection/InsertToTTCatlog.js
1 | Ext.define('amdaPlotComp.intervalSelection.InsertToTTCatlog', { | 1 | Ext.define('amdaPlotComp.intervalSelection.InsertToTTCatlog', { |
2 | extend: 'Ext.form.FieldSet', | 2 | extend: 'Ext.form.FieldSet', |
3 | 3 | ||
4 | - collapsible: false, | 4 | + collapsible: true, |
5 | layout: LAYOUT_STYLE, | 5 | layout: LAYOUT_STYLE, |
6 | title: 'Add in Time Table or Catalog', | 6 | title: 'Add in Time Table or Catalog', |
7 | name: 'tt-insertion-fieldset', | 7 | name: 'tt-insertion-fieldset', |
@@ -26,6 +26,7 @@ Ext.define('amdaPlotComp.intervalSelection.InsertToTTCatlog', { | @@ -26,6 +26,7 @@ Ext.define('amdaPlotComp.intervalSelection.InsertToTTCatlog', { | ||
26 | }); | 26 | }); |
27 | 27 | ||
28 | Ext.apply(self, { | 28 | Ext.apply(self, { |
29 | + | ||
29 | items: [{ | 30 | items: [{ |
30 | xtype: 'combo', | 31 | xtype: 'combo', |
31 | fieldLabel: 'Insert In', | 32 | fieldLabel: 'Insert In', |
@@ -38,13 +39,21 @@ Ext.define('amdaPlotComp.intervalSelection.InsertToTTCatlog', { | @@ -38,13 +39,21 @@ Ext.define('amdaPlotComp.intervalSelection.InsertToTTCatlog', { | ||
38 | name: self.fieldTypeTTCat, | 39 | name: self.fieldTypeTTCat, |
39 | itemId: self.fieldTypeTTCat, | 40 | itemId: self.fieldTypeTTCat, |
40 | }, | 41 | }, |
42 | + | ||
41 | { | 43 | { |
42 | - xtype: 'textfield', | 44 | + xtype: 'combo', |
43 | fieldLabel: 'Name', | 45 | fieldLabel: 'Name', |
46 | + editable: true, | ||
47 | + hideTrigger: true, | ||
48 | + store: Ext.create('Ext.data.Store', { | ||
49 | + fields: ['text'] | ||
50 | + }), | ||
44 | name: self.fieldTypeName, | 51 | name: self.fieldTypeName, |
45 | itemId: self.fieldTypeName, | 52 | itemId: self.fieldTypeName, |
46 | - listeners: | ||
47 | - { | 53 | + queryMode: 'local', |
54 | + displayField: 'text', | ||
55 | + valueField: 'text', | ||
56 | + listeners: { | ||
48 | render: function (o, op) { | 57 | render: function (o, op) { |
49 | var field = this; | 58 | var field = this; |
50 | var el = this.el; | 59 | var el = this.el; |
@@ -63,12 +72,166 @@ Ext.define('amdaPlotComp.intervalSelection.InsertToTTCatlog', { | @@ -63,12 +72,166 @@ Ext.define('amdaPlotComp.intervalSelection.InsertToTTCatlog', { | ||
63 | if (!this.valid) | 72 | if (!this.valid) |
64 | return false; | 73 | return false; |
65 | field.setValue(data.records[0].get('text')); | 74 | field.setValue(data.records[0].get('text')); |
75 | + var store = field.getStore(); | ||
76 | + store.loadData([{ text: data.records[0].get('text') }], false); | ||
77 | + field.setValue(data.records[0].get('text')); | ||
78 | + field.fireEvent('select', field, [field.getStore().findRecord('text', data.records[0].get('text'))]); | ||
66 | return true; | 79 | return true; |
67 | } | 80 | } |
68 | }); | 81 | }); |
82 | + }, | ||
83 | + change: function (field, newValue) { | ||
84 | + // change event to handle the case when the user types a name | ||
85 | + var explorerTree = Ext.getCmp(amdaUI.ExplorerUI.RESRC_TAB.TREE_ID); | ||
86 | + var ttCatRootNode = explorerTree.getRootNode().findChild('id', 'catalog-treeRootNode', true); | ||
87 | + | ||
88 | + var matchingNodes = []; | ||
89 | + var store = field.getStore(); | ||
90 | + | ||
91 | + amdaModel.InteractiveNode.preloadNodes(ttCatRootNode, function () { | ||
92 | + matchingNodes = []; // Clear previous matches | ||
93 | + ttCatRootNode.eachChild(function (node) { | ||
94 | + if (newValue && node.get('text').toLowerCase().includes(newValue.toLowerCase())) { | ||
95 | + matchingNodes.push({ text: node.get('text') }); | ||
96 | + } | ||
97 | + }); | ||
98 | + | ||
99 | + if ((self._getFieldTypeTTCat().getValue() == 'catalog') && (matchingNodes.length > 0)) { | ||
100 | + store.removeAll(); | ||
101 | + store.loadData(matchingNodes); | ||
102 | + field.expand(); | ||
103 | + } else { | ||
104 | + store.removeAll(); | ||
105 | + if (newValue) { | ||
106 | + store.add({ text: newValue }); | ||
107 | + field.setValue(newValue); | ||
108 | + field.fireEvent('select', field, [store.findRecord('text', newValue)]); | ||
109 | + field.expand(); | ||
110 | + } else { | ||
111 | + store.removeAll(); | ||
112 | + var parametersGrid = self.down('#parametersGrid'); | ||
113 | + parametersGrid.getStore().removeAll(); | ||
114 | + field.collapse(); | ||
115 | + } | ||
116 | + } | ||
117 | + | ||
118 | + self._getFieldTypeTTCat().on('change', function () { | ||
119 | + field.setValue(''); | ||
120 | + store.removeAll(); | ||
121 | + var parametersGrid = self.down('#parametersGrid'); | ||
122 | + parametersGrid.getStore().removeAll(); | ||
123 | + }); | ||
124 | + | ||
125 | + field.focus(false, 100); | ||
126 | + }); | ||
127 | + }, | ||
128 | + select: function (combo) { | ||
129 | + // select event to handle the case when the user selects a name from the dropdown | ||
130 | + if(self._getFieldTypeTTCat().getValue() == 'catalog'){ | ||
131 | + var selectedName = combo.getRawValue(); | ||
132 | + var panel = combo.up('fieldset').down('panel'); | ||
133 | + var store = panel.down('#parametersGrid').getStore(); | ||
134 | + | ||
135 | + var explorerTree = Ext.getCmp(amdaUI.ExplorerUI.RESRC_TAB.TREE_ID); | ||
136 | + var ttCatRootNode = explorerTree.getRootNode().findChild('id', 'catalog-treeRootNode', true); | ||
137 | + var nodeWithSameName = ttCatRootNode.findChild('text', selectedName, true); | ||
138 | + | ||
139 | + if (nodeWithSameName) { | ||
140 | + | ||
141 | + var opt = { | ||
142 | + 'typeTT': 'catalog', | ||
143 | + 'id': nodeWithSameName.data.id, | ||
144 | + 'name': selectedName | ||
145 | + }; | ||
146 | + | ||
147 | + // Get parameters for the selected catalog | ||
148 | + AmdaAction.readIntervalsForChart(opt, function (result, e) { | ||
149 | + if (result && result.success) { | ||
150 | + store.removeAll(); | ||
151 | + Ext.Array.each(result.parameters, function (param) { | ||
152 | + if (param.size > 1 || param.id.includes('COMPONENT')) | ||
153 | + return; // Skip parameters with size > 1 | ||
154 | + store.add({ | ||
155 | + name: param.name, | ||
156 | + id : param.id, | ||
157 | + value: '' | ||
158 | + }); | ||
159 | + }); | ||
160 | + } | ||
161 | + }); | ||
162 | + } else { | ||
163 | + store.removeAll(); | ||
164 | + } | ||
165 | + } | ||
166 | + self.selectUsed = true; // flag to indicate that the select event was triggered by the user | ||
167 | + }, | ||
168 | + blur: function (field) { | ||
169 | + // blur event to handle the case when the user types a name and then clicks outside the field | ||
170 | + if (!self.selectUsed) { | ||
171 | + var value = field.getRawValue(); | ||
172 | + field.fireEvent('select', field); | ||
173 | + } | ||
174 | + self.selectUsed = false; | ||
175 | + | ||
176 | + } | ||
177 | + } | ||
178 | + }, | ||
179 | + { | ||
180 | + // Panel for parameters | ||
181 | + xtype: 'panel', | ||
182 | + layout: 'fit', | ||
183 | + title: 'Parameters', | ||
184 | + collapsible: true, | ||
185 | + hidden: true, | ||
186 | + // tbar: [ | ||
187 | + // { | ||
188 | + // xtype: 'tbtext', | ||
189 | + // text: 'Parameters' | ||
190 | + // }, | ||
191 | + // '->', | ||
192 | + // { | ||
193 | + // iconCls: 'icon-add', | ||
194 | + // text: 'Add Parameter', | ||
195 | + // handler: function () { | ||
196 | + // var grid = this.up('panel').down('#parametersGrid'); | ||
197 | + // var store = grid.getStore(); | ||
198 | + // store.add({ name: '', value: '' }); | ||
199 | + // } | ||
200 | + // } | ||
201 | + // ], | ||
202 | + items: [ | ||
203 | + { | ||
204 | + xtype: 'grid', | ||
205 | + store: Ext.create('Ext.data.Store', { | ||
206 | + fields: ['name', 'value'] | ||
207 | + }), | ||
208 | + columns: [ | ||
209 | + { text: 'Name', dataIndex: 'name', editor: 'textfield', flex: 1 }, | ||
210 | + { text: 'Value', dataIndex: 'value', editor: 'textfield', flex: 1 } | ||
211 | + ], | ||
212 | + selType: 'cellmodel', | ||
213 | + plugins: { | ||
214 | + ptype: 'cellediting', | ||
215 | + clicksToEdit: 1 | ||
216 | + }, | ||
217 | + height: 200, | ||
218 | + width: 400, | ||
219 | + itemId: 'parametersGrid', | ||
220 | + } | ||
221 | + ], | ||
222 | + listeners: { | ||
223 | + beforerender: function () { | ||
224 | + var TTCatType = self._getFieldTypeTTCat().getValue(); | ||
225 | + this.setVisible(TTCatType == 'catalog'); | ||
226 | + }, | ||
227 | + render: function (o, op) { | ||
228 | + self._getFieldTypeTTCat().on('change', function (field, newValue) { | ||
229 | + this.setVisible(newValue == 'catalog'); | ||
230 | + }, this); | ||
69 | } | 231 | } |
70 | } | 232 | } |
71 | }, | 233 | }, |
234 | + | ||
72 | { | 235 | { |
73 | xtype: 'button', | 236 | xtype: 'button', |
74 | width: width, | 237 | width: width, |
@@ -79,13 +242,13 @@ Ext.define('amdaPlotComp.intervalSelection.InsertToTTCatlog', { | @@ -79,13 +242,13 @@ Ext.define('amdaPlotComp.intervalSelection.InsertToTTCatlog', { | ||
79 | 242 | ||
80 | var TTCatType = self._getFieldTypeTTCat().getValue(); | 243 | var TTCatType = self._getFieldTypeTTCat().getValue(); |
81 | var TTCatName = self._getFieldNameTTCat().getValue(); | 244 | var TTCatName = self._getFieldNameTTCat().getValue(); |
82 | - | ||
83 | var isCatalog = (TTCatType == 'catalog'); | 245 | var isCatalog = (TTCatType == 'catalog'); |
84 | myDesktopApp.getLoadedModule(isCatalog ? this.catModuleId : this.ttModuleId, true, function (module) { | 246 | myDesktopApp.getLoadedModule(isCatalog ? this.catModuleId : this.ttModuleId, true, function (module) { |
85 | var targetModuleUI = module.getUiContent(); | 247 | var targetModuleUI = module.getUiContent(); |
86 | if (me.linkedTTCatNode && (me.linkedTTCatNode.get('text') == TTCatName) && (me.linkedTTCatNode.get('nodeType') == TTCatType)) { | 248 | if (me.linkedTTCatNode && (me.linkedTTCatNode.get('text') == TTCatName) && (me.linkedTTCatNode.get('nodeType') == TTCatType)) { |
87 | if (targetModuleUI) | 249 | if (targetModuleUI) |
88 | me.insertInterval(); | 250 | me.insertInterval(); |
251 | + | ||
89 | else { | 252 | else { |
90 | me.linkedTTCatNode.editLeaf(function () { | 253 | me.linkedTTCatNode.editLeaf(function () { |
91 | me.insertInterval(); | 254 | me.insertInterval(); |
@@ -95,14 +258,16 @@ Ext.define('amdaPlotComp.intervalSelection.InsertToTTCatlog', { | @@ -95,14 +258,16 @@ Ext.define('amdaPlotComp.intervalSelection.InsertToTTCatlog', { | ||
95 | else { | 258 | else { |
96 | var explorerTree = Ext.getCmp(amdaUI.ExplorerUI.RESRC_TAB.TREE_ID); | 259 | var explorerTree = Ext.getCmp(amdaUI.ExplorerUI.RESRC_TAB.TREE_ID); |
97 | var ttCatRootNode = explorerTree.getRootNode().findChild('id', isCatalog ? 'catalog-treeRootNode' : 'timeTable-treeRootNode', true); | 260 | var ttCatRootNode = explorerTree.getRootNode().findChild('id', isCatalog ? 'catalog-treeRootNode' : 'timeTable-treeRootNode', true); |
261 | + | ||
98 | amdaModel.InteractiveNode.preloadNodes(ttCatRootNode, function () { | 262 | amdaModel.InteractiveNode.preloadNodes(ttCatRootNode, function () { |
99 | var nodeWithSameName = null; | 263 | var nodeWithSameName = null; |
100 | 264 | ||
101 | - if (TTCatName != '') | 265 | + if (TTCatName != ''){ |
102 | nodeWithSameName = ttCatRootNode.findChild('text', TTCatName, true); | 266 | nodeWithSameName = ttCatRootNode.findChild('text', TTCatName, true); |
267 | + } | ||
103 | 268 | ||
104 | - if (nodeWithSameName !== null) | ||
105 | - me.linkedTTCatNode = nodeWithSameName; | 269 | + if (nodeWithSameName !== null){ |
270 | + me.linkedTTCatNode = nodeWithSameName;} | ||
106 | else { | 271 | else { |
107 | module.createLinkedNode(); | 272 | module.createLinkedNode(); |
108 | module.getLinkedNode().set('text', TTCatName); | 273 | module.getLinkedNode().set('text', TTCatName); |
@@ -111,6 +276,7 @@ Ext.define('amdaPlotComp.intervalSelection.InsertToTTCatlog', { | @@ -111,6 +276,7 @@ Ext.define('amdaPlotComp.intervalSelection.InsertToTTCatlog', { | ||
111 | name: TTCatName, | 276 | name: TTCatName, |
112 | fromPlugin: true | 277 | fromPlugin: true |
113 | }; | 278 | }; |
279 | + | ||
114 | if (isCatalog) { | 280 | if (isCatalog) { |
115 | Ext.Msg.prompt('Define Parameters', 'Please enter parameters number for the new catalog:', function (btn, text) { | 281 | Ext.Msg.prompt('Define Parameters', 'Please enter parameters number for the new catalog:', function (btn, text) { |
116 | if (btn == 'ok') { | 282 | if (btn == 'ok') { |
@@ -118,6 +284,8 @@ Ext.define('amdaPlotComp.intervalSelection.InsertToTTCatlog', { | @@ -118,6 +284,8 @@ Ext.define('amdaPlotComp.intervalSelection.InsertToTTCatlog', { | ||
118 | if (isNaN(obj.nbParameters)) { | 284 | if (isNaN(obj.nbParameters)) { |
119 | obj.nbParameters = 1; | 285 | obj.nbParameters = 1; |
120 | } | 286 | } |
287 | + module.name = 'color'; | ||
288 | + | ||
121 | module.createObject(obj); | 289 | module.createObject(obj); |
122 | me.linkedTTCatNode.editLeaf(function () { | 290 | me.linkedTTCatNode.editLeaf(function () { |
123 | me.insertInterval(); | 291 | me.insertInterval(); |
@@ -158,16 +326,48 @@ Ext.define('amdaPlotComp.intervalSelection.InsertToTTCatlog', { | @@ -158,16 +326,48 @@ Ext.define('amdaPlotComp.intervalSelection.InsertToTTCatlog', { | ||
158 | * add Interval to Time table or Catalog | 326 | * add Interval to Time table or Catalog |
159 | */ | 327 | */ |
160 | insertInterval: function () { | 328 | insertInterval: function () { |
161 | - const start = this.parent.getField1Value(); | ||
162 | - const stop = this.parent.getField2Value(); | 329 | + const self = this; |
330 | + const start = self.parent.getField1Value(); | ||
331 | + const stop = self.parent.getField2Value(); | ||
163 | 332 | ||
164 | - const TTCatType = this._getFieldTypeTTCat().getValue(); | 333 | + const TTCatType = self._getFieldTypeTTCat().getValue(); |
165 | const isCatalog = (TTCatType == 'catalog'); | 334 | const isCatalog = (TTCatType == 'catalog'); |
166 | 335 | ||
167 | - myDesktopApp.getLoadedModule(isCatalog ? this.catModuleId : this.ttModuleId, true, function (module) { | 336 | + myDesktopApp.getLoadedModule(isCatalog ? self.catModuleId : self.ttModuleId, true, function (module) { |
168 | var targetModuleUI = module.getUiContent(); | 337 | var targetModuleUI = module.getUiContent(); |
338 | + var parametersGrid = self.down('#parametersGrid'); | ||
339 | + var parametersStore = parametersGrid.getStore(); | ||
340 | + var parametersData = {}; | ||
341 | + var index = targetModuleUI.object.data.nbIntervals; | ||
342 | + | ||
343 | + // Add parameters and values to the interval | ||
344 | + parametersStore.each(function(record) { | ||
345 | + parametersData[record.get('id')] = record.get('value'); | ||
346 | + }); | ||
169 | if (targetModuleUI) | 347 | if (targetModuleUI) |
170 | - targetModuleUI.addInterval(start, stop); | 348 | + targetModuleUI.addInterval(start, stop, index, parametersData); |
171 | }); | 349 | }); |
172 | - } | 350 | + }, |
351 | + // getCatalogParameters: function(catalogId) { | ||
352 | + // const self = this; | ||
353 | + | ||
354 | + // AmdaAction.readIntervalsForChart({ | ||
355 | + // 'typeTT': 'catalog', | ||
356 | + // 'id': catalogId, | ||
357 | + // 'name': this.linkedTTCatNode.get('name') | ||
358 | + // }, function(result, e) { | ||
359 | + // if (result && result.success) { | ||
360 | + // const parametersGrid = self.down('#parametersGrid'); | ||
361 | + // const store = parametersGrid.getStore(); | ||
362 | + // store.removeAll(); | ||
363 | + | ||
364 | + // Ext.Array.each(result.parameters, function(param) { | ||
365 | + // store.add({ | ||
366 | + // name: param.id, | ||
367 | + // value: '' | ||
368 | + // }); | ||
369 | + // }); | ||
370 | + // } | ||
371 | + // }); | ||
372 | + // } | ||
173 | }); | 373 | }); |