Compare View

switch
from
...
to
 
Commits (6)
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 });
... ...