Compare View
Commits (6)
Showing
2 changed files
Show diff stats
js/app/views/CatalogUI.js
... | ... | @@ -106,10 +106,13 @@ Ext.define('amdaUI.CatalogUI', { |
106 | 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 | 113 | var me = this; |
112 | 114 | this.TTGrid.getSelectionModel().deselectAll(); |
115 | + | |
113 | 116 | AmdaAction.addCacheInterval({'start': start, 'stop': stop, 'index': row, 'isCatalog': true}, function (result, e) { |
114 | 117 | this.status = result.status; |
115 | 118 | if (!this.TTGrid.getStore().loading) { |
... | ... | @@ -122,6 +125,16 @@ Ext.define('amdaUI.CatalogUI', { |
122 | 125 | }); |
123 | 126 | } |
124 | 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 | 140 | updateCount: function () { |
... | ... |
js/app/views/PlotComponents/intervalSelection/InsertToTTCatlog.js
1 | 1 | Ext.define('amdaPlotComp.intervalSelection.InsertToTTCatlog', { |
2 | 2 | extend: 'Ext.form.FieldSet', |
3 | 3 | |
4 | - collapsible: false, | |
4 | + collapsible: true, | |
5 | 5 | layout: LAYOUT_STYLE, |
6 | 6 | title: 'Add in Time Table or Catalog', |
7 | 7 | name: 'tt-insertion-fieldset', |
... | ... | @@ -26,6 +26,7 @@ Ext.define('amdaPlotComp.intervalSelection.InsertToTTCatlog', { |
26 | 26 | }); |
27 | 27 | |
28 | 28 | Ext.apply(self, { |
29 | + | |
29 | 30 | items: [{ |
30 | 31 | xtype: 'combo', |
31 | 32 | fieldLabel: 'Insert In', |
... | ... | @@ -38,13 +39,21 @@ Ext.define('amdaPlotComp.intervalSelection.InsertToTTCatlog', { |
38 | 39 | name: self.fieldTypeTTCat, |
39 | 40 | itemId: self.fieldTypeTTCat, |
40 | 41 | }, |
42 | + | |
41 | 43 | { |
42 | - xtype: 'textfield', | |
44 | + xtype: 'combo', | |
43 | 45 | fieldLabel: 'Name', |
46 | + editable: true, | |
47 | + hideTrigger: true, | |
48 | + store: Ext.create('Ext.data.Store', { | |
49 | + fields: ['text'] | |
50 | + }), | |
44 | 51 | name: self.fieldTypeName, |
45 | 52 | itemId: self.fieldTypeName, |
46 | - listeners: | |
47 | - { | |
53 | + queryMode: 'local', | |
54 | + displayField: 'text', | |
55 | + valueField: 'text', | |
56 | + listeners: { | |
48 | 57 | render: function (o, op) { |
49 | 58 | var field = this; |
50 | 59 | var el = this.el; |
... | ... | @@ -63,12 +72,166 @@ Ext.define('amdaPlotComp.intervalSelection.InsertToTTCatlog', { |
63 | 72 | if (!this.valid) |
64 | 73 | return false; |
65 | 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 | 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 | 236 | xtype: 'button', |
74 | 237 | width: width, |
... | ... | @@ -79,13 +242,13 @@ Ext.define('amdaPlotComp.intervalSelection.InsertToTTCatlog', { |
79 | 242 | |
80 | 243 | var TTCatType = self._getFieldTypeTTCat().getValue(); |
81 | 244 | var TTCatName = self._getFieldNameTTCat().getValue(); |
82 | - | |
83 | 245 | var isCatalog = (TTCatType == 'catalog'); |
84 | 246 | myDesktopApp.getLoadedModule(isCatalog ? this.catModuleId : this.ttModuleId, true, function (module) { |
85 | 247 | var targetModuleUI = module.getUiContent(); |
86 | 248 | if (me.linkedTTCatNode && (me.linkedTTCatNode.get('text') == TTCatName) && (me.linkedTTCatNode.get('nodeType') == TTCatType)) { |
87 | 249 | if (targetModuleUI) |
88 | 250 | me.insertInterval(); |
251 | + | |
89 | 252 | else { |
90 | 253 | me.linkedTTCatNode.editLeaf(function () { |
91 | 254 | me.insertInterval(); |
... | ... | @@ -95,14 +258,16 @@ Ext.define('amdaPlotComp.intervalSelection.InsertToTTCatlog', { |
95 | 258 | else { |
96 | 259 | var explorerTree = Ext.getCmp(amdaUI.ExplorerUI.RESRC_TAB.TREE_ID); |
97 | 260 | var ttCatRootNode = explorerTree.getRootNode().findChild('id', isCatalog ? 'catalog-treeRootNode' : 'timeTable-treeRootNode', true); |
261 | + | |
98 | 262 | amdaModel.InteractiveNode.preloadNodes(ttCatRootNode, function () { |
99 | 263 | var nodeWithSameName = null; |
100 | 264 | |
101 | - if (TTCatName != '') | |
265 | + if (TTCatName != ''){ | |
102 | 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 | 271 | else { |
107 | 272 | module.createLinkedNode(); |
108 | 273 | module.getLinkedNode().set('text', TTCatName); |
... | ... | @@ -111,6 +276,7 @@ Ext.define('amdaPlotComp.intervalSelection.InsertToTTCatlog', { |
111 | 276 | name: TTCatName, |
112 | 277 | fromPlugin: true |
113 | 278 | }; |
279 | + | |
114 | 280 | if (isCatalog) { |
115 | 281 | Ext.Msg.prompt('Define Parameters', 'Please enter parameters number for the new catalog:', function (btn, text) { |
116 | 282 | if (btn == 'ok') { |
... | ... | @@ -118,6 +284,8 @@ Ext.define('amdaPlotComp.intervalSelection.InsertToTTCatlog', { |
118 | 284 | if (isNaN(obj.nbParameters)) { |
119 | 285 | obj.nbParameters = 1; |
120 | 286 | } |
287 | + module.name = 'color'; | |
288 | + | |
121 | 289 | module.createObject(obj); |
122 | 290 | me.linkedTTCatNode.editLeaf(function () { |
123 | 291 | me.insertInterval(); |
... | ... | @@ -158,16 +326,48 @@ Ext.define('amdaPlotComp.intervalSelection.InsertToTTCatlog', { |
158 | 326 | * add Interval to Time table or Catalog |
159 | 327 | */ |
160 | 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 | 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 | 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 | 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 | }); |
... | ... |