ru.coon 3.0.2 → 3.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
- # Version 3.0.2, [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/c32c302a68ca27da589552539e7e0695810e7e45)
2
- * add setCustomPanelTitle method to UiCustomController ([40a7bd], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/40a7bd4c83a29dac561c9cd18e528ff1da5d6005))
1
+ # Version 3.0.4, [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/2e89a5f1e7ef7e24ea4984b55dd164b542f7c8c1)
2
+ * add tooltips for CenterView tabs
3
+ remove first menuItem autoload for Menu ([29ead4], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/29ead462b5631357f3662ff3aeb2ca4449f2aa97))
4
+ * refactor: change jsdoc on UiCPWrapper ([be109a], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/be109a9cc9bb97543f9a864d7b719396a93e9f81))
5
+ * update: CHANGELOG.md ([2e3043], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/2e3043674a608c6216eb6ff492a17c0f90aa53b9))
6
+
7
+ # Version 3.0.3, [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/db7fcf17875ed26df5b2204f1a55ebdc7245f738)
8
+ # Version 3.0.2, [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/fd1cfdb7d1b73853fc8a21a5a67435b66402d6cd)
9
+ * ## Features
10
+ * <span style='color:green'>feat: Доработано описание UICPWrapper, исправлена ошибка закрытия окна в UnifiedButtonToolbarPlugin</span> ([c08ceb], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/c08cebfa1e2814d2b4d0b6157be773b8dcc7a525))
11
+
12
+ * ## Fixes
13
+ * <span style='color:red'> HT-12066 scroller display only for CenterViewTabBar</span> ([2d8a87], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/2d8a8782c9b28265b3f2c3f455de4a7ea8629ed9))
14
+ * <span style='color:red'> HT-12083 NorthPanel search button handler bind</span> ([292cec], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/292cecb1463110c53151814f0565d56916945d99))
15
+
16
+ * add title method to UiCustomPanel controller ([19a3a7], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/19a3a71ead9faef63e2dde5d4809170c1d1d9c3d))
3
17
  * update: CHANGELOG.md ([7f363d], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/7f363d646b1974c0ad434318269172a985972f4f))
4
18
 
5
19
  # Version 3.0.1, [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/eae268432af51c758229ca68dd19980528a2cc98)
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "name": "ru.coon"
5
5
  },
6
6
  "description": "",
7
- "version": "3.0.2",
7
+ "version": "3.0.4",
8
8
  "repository": {
9
9
  "type": "git",
10
10
  "url": "git+http://gitlab-dbr.sigma-it.local/dbr/ru.coon"
@@ -122,12 +122,6 @@ Ext.define('Coon.app.viewPort.CenterView', {
122
122
  }
123
123
  this.add(component);
124
124
 
125
- component.on('titlechange', function(view, title) {
126
- if (view.tab) {
127
- view.tab.setText(title);
128
- }
129
- });
130
-
131
125
  component.on('destroy', function() {
132
126
  const activeTab = this.getActiveTab();
133
127
  if (!activeTab || !activeTab.menuItem) {
@@ -109,6 +109,28 @@
109
109
  .x-tab-focus {
110
110
  background-color: #ECECEC;
111
111
  }
112
+ .x-box-scroller {
113
+ display: none !important;
114
+ font: 13px / 26px Material Icons, "Font Awesome 5 Free";
115
+ height: 28px;
116
+ &.x-box-scroller-left {
117
+ border-right: solid 1px #dedede;
118
+ }
119
+ &.x-box-scroller-right {
120
+ border-left: solid 1px #dedede;
121
+ }
122
+ }
123
+ .x-box-scroller-body-horizontal {
124
+ margin: 0;
125
+ }
126
+ &.display-sliders {
127
+ .x-box-scroller {
128
+ display: block !important;
129
+ }
130
+ .x-box-scroller-body-horizontal {
131
+ margin-left: 24px;
132
+ }
133
+ }
112
134
  }
113
135
  .title-block:hover{
114
136
  .add-to-favorite:not(.is-favorite-item):hover{
@@ -125,27 +147,5 @@
125
147
  color: #ff9800 !important;
126
148
  }
127
149
  }
128
- .x-box-scroller {
129
- display: none !important;
130
- font: 13px / 26px Material Icons, "Font Awesome 5 Free";
131
- height: 28px;
132
- &.x-box-scroller-left {
133
- border-right: solid 1px #dedede;
134
- }
135
- &.x-box-scroller-right {
136
- border-left: solid 1px #dedede;
137
- }
138
- }
139
- .x-box-scroller-body-horizontal {
140
- margin: 0;
141
- }
142
- .display-sliders {
143
- .x-box-scroller {
144
- display: block !important;
145
- }
146
- .x-box-scroller-body-horizontal {
147
- margin-left: 24px;
148
- }
149
- }
150
150
  }
151
151
 
@@ -1,6 +1,6 @@
1
1
  changeUrl->Router.routes./\#r/ReportId{label: загрузить репорт в dev-режиме}
2
- changeUrl->Router.routes./\#p/CustomPanelId{label: загрузить кастомную панель в dev-режиме}
3
- changeUrl->Router.routes./\#UiElementCd{label: начитать uiElementCd для загрузки компонента пункта меню}
2
+ changeUrl->Router.routes./\#p/CustomPanelId :загрузить кастомную панель в dev-режиме
3
+ changeUrl->Router.routes./\#UiElementCd :начитать uiElementCd для загрузки компонента пункта меню
4
4
 
5
5
  Router: {
6
6
  routes: {
@@ -56,6 +56,7 @@ Ext.define('Coon.nav.AppNavigationPanelController', {
56
56
  beforeitemmouseleave: {fn: this.mouseOut, scope: this},
57
57
  });
58
58
  },
59
+
59
60
  onMenuItemToFavoriteClick(menuEntryCd, cmp) {
60
61
  const props = Coon.nav.menu.FavoriteCfg.get().favorite || [];
61
62
  const index = props.indexOf(menuEntryCd);
@@ -110,6 +111,7 @@ Ext.define('Coon.nav.AppNavigationPanelController', {
110
111
  this.goTo(this.getFirstAvailable());
111
112
  }
112
113
  },
114
+
113
115
  goTo(menuEntryCd, force = false) {
114
116
  if (menuEntryCd) {
115
117
  let prefix = '';
@@ -289,7 +291,7 @@ Ext.define('Coon.nav.AppNavigationPanelController', {
289
291
  this.getViewModel().set('map', map);
290
292
  this.menuReady = true;
291
293
  Ext.fireEvent('nav:ready');
292
- this.onMenuReady();
294
+ // this.onMenuReady();
293
295
  }
294
296
  // view.unmask();
295
297
  });
@@ -137,14 +137,16 @@ Ext.define('Coon.report.component.report.NorthPanel', {
137
137
  }
138
138
  ];
139
139
 
140
- this.reportPanel = this.up('ReportPanel,ReportFilterForm');
141
- this.searchButton.handler = this.reportPanel ? Ext.bind(this.reportPanel.filterHandler, this.reportPanel) : Ext.emptyFn;
142
- this.clearButton.handler = Ext.bind(function() {
143
- this.clearFilter();
144
- this.clearData();
145
- }, this.reportPanel);
146
-
147
140
  this.callParent();
141
+
142
+ this.on('afterrender', function() {
143
+ this.reportPanel = this.up('ReportPanel,ReportFilterForm');
144
+ this.searchButton.handler = this.reportPanel ? Ext.bind(this.reportPanel.filterHandler, this.reportPanel) : Ext.emptyFn;
145
+ this.clearButton.handler = Ext.bind(function() {
146
+ this.clearFilter();
147
+ this.clearData();
148
+ }, this.reportPanel);
149
+ }, this);
148
150
  },
149
151
 
150
152
  getFields() {
@@ -150,28 +150,20 @@ Ext.define('Coon.report.plugin.grid.OpenCustomPanelButtonPlugin', {
150
150
  },
151
151
 
152
152
  buildContext(properties, params) {
153
- const ctx = {
154
- record: this.getCmp().selection && this.getCmp().selection.getData(),
155
- records: typeof this.getCmp().getSelection === 'function' && this.getCmp().getSelection().map((el) => el.getData()),
156
- };
157
153
  const parent = this.getCmp().up('[componentContextId]');
158
154
  if (parent && parent.componentContextId) {
159
- const uniqueContext = Object.assign(
160
- {},
161
- params,
162
- {
163
- uiElementCd: properties.uiElementCd,
164
- xtype: properties.xtype,
165
- }
166
- );
167
-
168
155
  properties.ctxMgr = Coon.util.ContextManager;
169
156
  properties.componentContextId = properties.ctxMgr.createContext(
170
157
  parent.componentContextId,
171
- Object.assign(ctx, uniqueContext),
172
- uniqueContext
173
- );
174
- };
158
+ Object.assign(
159
+ {},
160
+ params,
161
+ {
162
+ uiElementCd: properties.uiElementCd,
163
+ xtype: properties.xtype,
164
+ }
165
+ ));
166
+ }
175
167
  },
176
168
 
177
169
  configureCustomPanel(params) {
@@ -248,6 +240,7 @@ Ext.define('Coon.report.plugin.grid.OpenCustomPanelButtonPlugin', {
248
240
 
249
241
  this.buildContext(properties, params);
250
242
  const panel = Ext.create(properties);
243
+ Coon.log.debug('OCPB.openPanel', xtype, properties.uiElementCd, {properties, params, panel});
251
244
  let parentWidget = panel;
252
245
 
253
246
  Coon.eventBus.emit(
File without changes
@@ -24,6 +24,7 @@ Ext.define('Coon.uielement.command.GetUIElementCommand', {
24
24
  }
25
25
  props.uiElementCd = this.uiElementCd;
26
26
  props.accessDecision = data.accessDecision;
27
+ Coon.log.debug('GetUIElementCommand.props', props);
27
28
  data.propertyData = JSON5.stringify(props);
28
29
  } catch (ex) {
29
30
  Coon.log.error('GetUIElementCommand.UiCustomPanel: invalid propertyData JSON5');
@@ -18,6 +18,42 @@
18
18
  * вызов doInit также возможен на компоненте. Обращается к doInit вызываемой кастомной панели:
19
19
  * const panel = this.lookup('testPanel);
20
20
  * panel.doInit('1123fss');
21
+ *
22
+ * Режимы работы с viewModel.
23
+ * Кастомная панель может иметь разные настройки viewModel в зависимости от конфигурации. Ее работа зависит от двух параметров:
24
+ *
25
+ * parentViewModel: boolean / null / Ext.app.ViewModel
26
+ * Родительская viewModel. Отвечает за наличие/определение родительской viewModel.
27
+ * - false / null: Родительская viewModel отсутствует, viewModel панели не связанная с панелью, в которую встроена.
28
+ * - Ext.app.ViewModel: Указанная viewModel будет использована в качестве родительской viewModel.
29
+ * - отсутствие значения: В качестве родительской viewModel будет использована viewModel панели, в которую она встроена.
30
+ *
31
+ * inheritViewModel: boolean
32
+ * Наследование viewModel. Решает в качестве чего будет установлена parentViewModel: родительской или текущей viewModel.
33
+ * - false: parentViewModel будет установлена в качестве родительской viewModel.
34
+ * - true: parentViewModel будет установлена в качестве данной viewModel.
35
+ *
36
+ * Сценарии работы с viewModel:
37
+ * - по умолчанию (viewModel в качестве родителя имеет viewModel панели, в которую она встроена, востанавливается иерархия)
38
+ * - parentViewModel = null || false (viewModel никак не связанна с родительской viewModel, в которую она встроена)
39
+ * - parentViewModel = Ext.app.ViewModel (в качестве родительской viewModel будет указана заданная viewModel)
40
+ * - inheritViewModel = true, parentViewModel = не указана (общая viewModel с панелью, в которую она встроена)
41
+ * - inheritViewModel = true, parentViewModel = Ext.app.ViewModel (в качестве viewModel панели будет установлена
42
+ * указанная parentViewModel)
43
+ *
44
+ *
45
+ * События вызванные в панели могут отслеживаться UiCPWrapper, если задать их в конфигурации в customBubbleEvents:
46
+ * customBubbleEvent: [
47
+ * {
48
+ * sourceEventName - string (событие вызванное в панели)
49
+ * targetEventName - string (событие, которое будет вызвано при срабатывании события sourceEventName)
50
+ * targetComponent // 'reference' || '[itemId=item1]' || view - string || object (компонент куда будет передано событие)
51
+ * targetHandlerName - string (метод, который будет вызван при срабатывании события sourceEventName)
52
+ * }
53
+ * ]
54
+ *
55
+ * Если UiCPWrapper является элементом tabpanel, он будет отслеживать события активации и деактивации табы и передавать их в панель.
56
+ * Также UiCPWrapper отселживает событие dirtychange панели и вызывает его у себя, для отображения статуса несохраненных изменений в tabpanel.
21
57
  */
22
58
 
23
59
 
@@ -36,6 +72,10 @@ Ext.define('Coon.uielement.component.UiCPWrapper', {
36
72
  layout: 'fit',
37
73
  },
38
74
 
75
+ inheritViewModel: false,
76
+ parentViewModel: undefined,
77
+ customBubbleEvents: [],
78
+
39
79
  initComponent: function() {
40
80
  const parentCustomPanel = this.findParentByType('UiCustomPanel');
41
81
  if (parentCustomPanel) {
@@ -68,13 +108,12 @@ Ext.define('Coon.uielement.component.UiCPWrapper', {
68
108
  renderPanel: function(panelConfig) {
69
109
  const config = Object.assign({}, panelConfig, this.initConfig);
70
110
  config.inheritViewModel = this.inheritViewModel;
71
- if (this.inheritViewModel) {
72
- const parentViewModel = this.findParentByType('UiCustomPanel').getViewModel();
73
- config.viewModel = parentViewModel;
74
- }
75
111
  config.isChildCP = true;
112
+ this.setViewModelConfig(config);
113
+
76
114
  const panel = Ext.create('widget.UiCustomPanel', config);
77
115
  this.uiPanel = panel;
116
+
78
117
  panel.on('afterrender', function() {
79
118
  this.autoLoad && this.panelDoInit(this.doInitParams);
80
119
  const doInitPanel = panel.getController() && panel.getController().doInit;
@@ -83,6 +122,7 @@ Ext.define('Coon.uielement.component.UiCPWrapper', {
83
122
  }
84
123
  }, this);
85
124
  this.add(panel);
125
+
86
126
  if (Array.isArray(this.customBubbleEvents) && this.customBubbleEvents.length) {
87
127
  this.setCustomBubbleEvents(panel);
88
128
  }
@@ -97,6 +137,21 @@ Ext.define('Coon.uielement.component.UiCPWrapper', {
97
137
  });
98
138
  },
99
139
 
140
+ setViewModelConfig(config) {
141
+ config.viewModel = {};
142
+ if ([null, false].includes(this.parentViewModel)) {
143
+ return;
144
+ }
145
+ const parentViewModel = (this.parentViewModel && this.parentViewModel.isViewModel) ?
146
+ this.parentViewModel :
147
+ this.up('UiCustomPanel').getViewModel();
148
+ if (this.inheritViewModel) {
149
+ config.viewModel = parentViewModel;
150
+ } else {
151
+ config.viewModel.parent = parentViewModel;
152
+ }
153
+ },
154
+
100
155
  setCustomBubbleEvents(srcComponent) {
101
156
  const parent = this.up(this.parentComponent || 'UiCustomPanel');
102
157
  if (typeof parent.__processCustomBubbleEvents === 'function') {
@@ -130,6 +130,9 @@ Ext.define('Coon.uielement.component.UiCustomController', {
130
130
  return;
131
131
  }
132
132
  this.getView().fireEvent('titlechange', this.getView(), title);
133
+ if (this.getView().tab && typeof this.getView().tab.setTooltip === 'function') {
134
+ this.getView().tab.setTooltip(title);
135
+ }
133
136
  },
134
137
 
135
138
  });
@@ -9,6 +9,7 @@ Ext.define('Coon.uielement.component.UiCustomPanel', {
9
9
  'Coon.uielement.component.UiCustomPanelTraceWindow'
10
10
  ],
11
11
  controller: 'UiCustomController',
12
+ // viewModel: {type: 'UiCustomPanelViewModel'},
12
13
 
13
14
  keyMap: {
14
15
  'Ctrl+Shift+Alt+F8': {
@@ -127,17 +127,21 @@ Ext.define('Coon.uielement.plugin.UnifiedButtonToolbarPlugin', {
127
127
  setBeforeCloseListener(view) {
128
128
  this.controller.callDialog = this.callDialog.bind(this);
129
129
  view.on('afterrender', () => {
130
- const window = view.up('WindowWrap');
131
- if (window && this.checkChangesOnSave !== false) {
130
+ const panelOwner = this.getPanelOwner();
131
+ if (panelOwner && this.checkChangesOnSave !== false) {
132
132
  if (this.getCmp().isParentCP) {
133
- window.on('beforeclose', this.onBeforeCloseWindowByParent, this);
133
+ panelOwner.on('beforeclose', this.onBeforeCloseWindowByParent, this);
134
134
  } else {
135
- window.on('beforeclose', this.onBeforeCloseWindow, this);
135
+ panelOwner.on('beforeclose', this.onBeforeCloseWindow, this);
136
136
  }
137
137
  }
138
138
  }, this);
139
139
  },
140
140
 
141
+ getPanelOwner() {
142
+ return this.getCmp().up('WindowWrap') || this.getCmp();
143
+ },
144
+
141
145
  /**
142
146
  * Проверка наличия несохраненных изменений в дочерних панелях.
143
147
  * Если они есть, выводится диалоговое окно с их перечнем.
@@ -304,7 +308,7 @@ Ext.define('Coon.uielement.plugin.UnifiedButtonToolbarPlugin', {
304
308
  },
305
309
 
306
310
  closeWindow() {
307
- this.controller.getView().up('WindowWrap').close();
311
+ this.getPanelOwner().close();
308
312
  },
309
313
 
310
314
  save(isWindowClose) {
@@ -1,7 +1,5 @@
1
1
  Ext.define('Coon.uielement.plugin.configPanel.ExecuteFunctionPluginConfigPanelFormEditor', {
2
- extend: 'Coon.uielement.plugin.configPanel.UiCPPluginFormPanel',
3
-
4
- requires: ['Coon.uielement.plugin.configPanel.UiCPPluginFormPanel'],
2
+ extend: 'Ext.panel.Panel',
5
3
 
6
4
  alias: 'widget.ExecuteFunctionPluginConfigPanelFormEditor',
7
5
  description: 'Плагин позволяет выполнить написанную вами функцию (fnBody) после срабатывания определенного события (handler)',
@@ -11,7 +9,36 @@ Ext.define('Coon.uielement.plugin.configPanel.ExecuteFunctionPluginConfigPanelFo
11
9
  handlerName: '',
12
10
  },
13
11
  },
12
+ layout: {
13
+ type: 'vbox',
14
+ align: 'stretch',
15
+ },
14
16
  items: [
17
+ {
18
+ xtype: 'pluginDescriptionLabel',
19
+ bind: {
20
+ value: '{description}',
21
+ },
22
+ },
23
+ {
24
+ xtype: 'comboBtnWrapper',
25
+ combobox: {
26
+ reference: 'handlerCombo',
27
+ xtype: 'BaseComboBox',
28
+ fieldLabel: 'handlerName',
29
+ labelWidth: 60,
30
+ flex: 1,
31
+ loadOnRender: false,
32
+ hideMode: 'offsets',
33
+ allowBlank: false,
34
+ store: 'codeHandlers',
35
+ bind: {
36
+ value: '{handlerName}',
37
+ },
38
+ valueField: 'id',
39
+ displayField: 'id',
40
+ },
41
+ },
15
42
  {
16
43
  xtype: 'textfield',
17
44
  fieldLabel: 'Параметры функции',
@@ -32,7 +59,12 @@ Ext.define('Coon.uielement.plugin.configPanel.ExecuteFunctionPluginConfigPanelFo
32
59
  },
33
60
  }
34
61
  ],
35
-
62
+ getData: function() {
63
+ return this.getConfiguration();
64
+ },
65
+ setData: function(data) {
66
+ data && this.doInit(data);
67
+ },
36
68
  doInit: function(config) {
37
69
  this.getViewModel().set('description', this.description);
38
70
  for (const parameterName in config) {
@@ -1,8 +1,5 @@
1
1
  Ext.define('Coon.uielement.plugin.configPanel.FireEventPluginConfigPanelFormEditor', {
2
- extend: 'Coon.uielement.plugin.configPanel.UiCPPluginFormPanel',
3
-
4
- requires: ['Coon.uielement.plugin.configPanel.UiCPPluginFormPanel'],
5
-
2
+ extend: 'Ext.panel.Panel',
6
3
  alias: 'widget.FireEventPluginConfigPanelFormEditor',
7
4
  description: 'Вызывает определенное событие панели',
8
5
  viewModel: {
@@ -12,7 +9,36 @@ Ext.define('Coon.uielement.plugin.configPanel.FireEventPluginConfigPanelFormEdit
12
9
  parameters: '[]',
13
10
  },
14
11
  },
12
+ layout: {
13
+ type: 'vbox',
14
+ align: 'stretch',
15
+ },
15
16
  items: [
17
+ {
18
+ xtype: 'pluginDescriptionLabel',
19
+ bind: {
20
+ value: '{description}',
21
+ },
22
+ },
23
+ {
24
+ xtype: 'comboBtnWrapper',
25
+ combobox: {
26
+ reference: 'handlerCombo',
27
+ xtype: 'BaseComboBox',
28
+ fieldLabel: 'handlerName',
29
+ labelWidth: 60,
30
+ flex: 1,
31
+ loadOnRender: false,
32
+ hideMode: 'offsets',
33
+ allowBlank: false,
34
+ store: 'codeHandlers',
35
+ bind: {
36
+ value: '{handlerName}',
37
+ },
38
+ valueField: 'id',
39
+ displayField: 'id',
40
+ },
41
+ },
16
42
  {
17
43
  xtype: 'textfield',
18
44
  fieldLabel: 'eventName',
@@ -31,7 +57,12 @@ Ext.define('Coon.uielement.plugin.configPanel.FireEventPluginConfigPanelFormEdit
31
57
  },
32
58
  }
33
59
  ],
34
-
60
+ getData: function() {
61
+ return this.getConfiguration();
62
+ },
63
+ setData: function(data) {
64
+ data && this.doInit(data);
65
+ },
35
66
  doInit: function(config) {
36
67
  this.getViewModel().set('description', this.description);
37
68
  for (const parameterName in config) {
@@ -1,9 +1,7 @@
1
1
  Ext.define('Coon.uielement.plugin.configPanel.MethodChainPluginConfigPanelFormEditor', {
2
- extend: 'Coon.uielement.plugin.configPanel.UiCPPluginFormPanel',
3
-
2
+ extend: 'Ext.panel.Panel',
4
3
  alias: 'widget.MethodChainPluginConfigPanelFormEditor',
5
4
  requires: [
6
- 'Coon.uielement.plugin.configPanel.UiCPPluginFormPanel',
7
5
  'Coon.report.plugin.SearchByPropButton'
8
6
  ],
9
7
  description: 'Запускает последовательно цепочку методов по срабатыванию handler',
@@ -30,7 +28,36 @@ Ext.define('Coon.uielement.plugin.configPanel.MethodChainPluginConfigPanelFormEd
30
28
  },
31
29
  },
32
30
  },
31
+ layout: {
32
+ type: 'vbox',
33
+ align: 'stretch',
34
+ },
33
35
  items: [
36
+ {
37
+ xtype: 'pluginDescriptionLabel',
38
+ bind: {
39
+ value: '{description}',
40
+ },
41
+ },
42
+ {
43
+ xtype: 'comboBtnWrapper',
44
+ combobox: {
45
+ reference: 'handlerCombo',
46
+ xtype: 'BaseComboBox',
47
+ fieldLabel: 'handlerName',
48
+ labelWidth: 60,
49
+ flex: 1,
50
+ loadOnRender: false,
51
+ hideMode: 'offsets',
52
+ allowBlank: false,
53
+ store: 'codeHandlers',
54
+ bind: {
55
+ value: '{handlerName}',
56
+ },
57
+ valueField: 'id',
58
+ displayField: 'id',
59
+ },
60
+ },
34
61
  {
35
62
  xtype: 'checkbox',
36
63
  boxLabel: 'Прерывать выполнение последовательности если Обработчик возвращает false',
@@ -144,7 +171,12 @@ Ext.define('Coon.uielement.plugin.configPanel.MethodChainPluginConfigPanelFormEd
144
171
  },
145
172
  }
146
173
  ],
147
-
174
+ getData: function() {
175
+ return this.getConfiguration();
176
+ },
177
+ setData: function(data) {
178
+ data && this.doInit(data);
179
+ },
148
180
  doInit: function(config) {
149
181
  this.getViewModel().set('description', this.description);
150
182
  if (config['handlerName']) {
@@ -1,8 +1,7 @@
1
1
  Ext.define('Coon.uielement.plugin.configPanel.OpenPanelPluginConfigPanelFormEditor', {
2
- extend: 'Coon.uielement.plugin.configPanel.UiCPPluginFormPanel',
2
+ extend: 'Ext.panel.Panel',
3
3
  alias: 'widget.OpenPanelPluginConfigPanelFormEditor',
4
4
  requires: [
5
- 'Coon.uielement.plugin.configPanel.UiCPPluginFormPanel',
6
5
  'Coon.report.plugin.SearchByPropButton'
7
6
  ],
8
7
 
@@ -19,13 +18,42 @@ Ext.define('Coon.uielement.plugin.configPanel.OpenPanelPluginConfigPanelFormEdit
19
18
  activeAceTab: 'parameters',
20
19
  },
21
20
  },
21
+ layout: {
22
+ type: 'vbox',
23
+ align: 'stretch',
24
+ },
22
25
  scrollable: 'y',
23
26
  items: [
27
+ {
28
+ xtype: 'pluginDescriptionLabel',
29
+ bind: {
30
+ value: '{description}',
31
+ },
32
+ },
24
33
  {
25
34
  xtype: 'textfield',
26
35
  fieldLabel: 'uiElementCd',
27
36
  bind: '{uiElementCd}',
28
37
  },
38
+ {
39
+ xtype: 'comboBtnWrapper',
40
+ combobox: {
41
+ reference: 'handlerCombo',
42
+ xtype: 'BaseComboBox',
43
+ fieldLabel: 'handlerName',
44
+ labelWidth: 60,
45
+ flex: 1,
46
+ loadOnRender: false,
47
+ hideMode: 'offsets',
48
+ allowBlank: false,
49
+ store: 'codeHandlers',
50
+ bind: {
51
+ value: '{handlerName}',
52
+ },
53
+ valueField: 'id',
54
+ displayField: 'id',
55
+ },
56
+ },
29
57
  {
30
58
  xtype: 'textfield',
31
59
  fieldLabel: 'panelXType',
@@ -126,6 +154,14 @@ Ext.define('Coon.uielement.plugin.configPanel.OpenPanelPluginConfigPanelFormEdit
126
154
  aceEditor.setValue(vm.get(curPanel.vmName));
127
155
  },
128
156
 
157
+ getData: function() {
158
+ return this.getConfiguration();
159
+ },
160
+
161
+ setData: function(data) {
162
+ data && this.doInit(data);
163
+ },
164
+
129
165
  doInit: function(config) {
130
166
  const vm = this.getViewModel();
131
167
  vm.set('description', this.description);
@@ -1,6 +1,5 @@
1
1
  Ext.define('Coon.uielement.plugin.configPanel.PrintPdfPluginConfigPanelFormEditor', {
2
- extend: 'Coon.uielement.plugin.configPanel.UiCPPluginFormPanel',
3
- requires: ['Coon.uielement.plugin.configPanel.UiCPPluginFormPanel'],
2
+ extend: 'Ext.panel.Panel',
4
3
  alias: 'widget.PrintPdfPluginConfigPanelFormEditor',
5
4
  description: 'Выполняет команду, позволяет отслеживать её выполнение и менять сообщения об различных событиях в ходе выполнения',
6
5
  viewModel: {
@@ -48,8 +47,42 @@ Ext.define('Coon.uielement.plugin.configPanel.PrintPdfPluginConfigPanelFormEdito
48
47
  },
49
48
  },
50
49
  },
50
+ layout: {
51
+ type: 'vbox',
52
+ align: 'stretch',
53
+ },
51
54
  scrollable: 'y',
52
55
  items: [
56
+ {
57
+ xtype: 'pluginDescriptionLabel',
58
+ bind: {
59
+ value: '{description}',
60
+ },
61
+ },
62
+ /* {
63
+ xtype: 'textfield',
64
+ fieldLabel: 'Имя комманды',
65
+ bind: '{ctype}',
66
+ }, */
67
+ {
68
+ xtype: 'comboBtnWrapper',
69
+ combobox: {
70
+ reference: 'handlerCombo',
71
+ xtype: 'BaseComboBox',
72
+ fieldLabel: 'handlerName',
73
+ labelWidth: 60,
74
+ flex: 1,
75
+ loadOnRender: false,
76
+ hideMode: 'offsets',
77
+ allowBlank: false,
78
+ store: 'codeHandlers',
79
+ bind: {
80
+ value: '{handlerName}',
81
+ },
82
+ valueField: 'id',
83
+ displayField: 'id',
84
+ },
85
+ },
53
86
  {
54
87
  xtype: 'ConstantList',
55
88
  data: [
@@ -1,6 +1,5 @@
1
1
  Ext.define('Coon.uielement.plugin.configPanel.UnifiedButtonToolbarPluginConfigPanelFormEditor', {
2
- extend: 'Coon.uielement.plugin.configPanel.UiCPPluginFormPanel',
3
- requires: ['Coon.uielement.plugin.configPanel.UiCPPluginFormPanel'],
2
+ extend: 'Ext.panel.Panel',
4
3
  alias: 'widget.UnifiedButtonToolbarPluginConfigPanelFormEditor',
5
4
  description: 'Добавляет стандартный тулбар',
6
5
  viewModel: {
@@ -14,7 +13,17 @@ Ext.define('Coon.uielement.plugin.configPanel.UnifiedButtonToolbarPluginConfigPa
14
13
  needReloadEventOnSave: false,
15
14
  },
16
15
  },
16
+ layout: {
17
+ type: 'vbox',
18
+ align: 'stretch',
19
+ },
17
20
  items: [
21
+ {
22
+ xtype: 'pluginDescriptionLabel',
23
+ bind: {
24
+ value: '{description}',
25
+ },
26
+ },
18
27
  {
19
28
  xtype: 'SearchByPropCombo',
20
29
  fieldLabel: 'Обработчик подготовки данных для сохранения (необходим синхронный метод)',
@@ -84,7 +93,12 @@ Ext.define('Coon.uielement.plugin.configPanel.UnifiedButtonToolbarPluginConfigPa
84
93
  },
85
94
  }
86
95
  ],
87
-
96
+ getData: function() {
97
+ return this.getConfiguration();
98
+ },
99
+ setData: function(data) {
100
+ data && this.doInit(data);
101
+ },
88
102
  doInit: function(config) {
89
103
  this.getViewModel().set('description', this.description);
90
104
  for (const parameterName in config) {
package/src/version.js CHANGED
@@ -1,4 +1,4 @@
1
1
  Ext.define('Coon.version', {
2
2
  singleton: true,
3
- number: '3.0.2',
3
+ number: '3.0.4',
4
4
  });
@@ -1,81 +0,0 @@
1
- Ext.define('Coon.app.viewPort.TabHistory', {
2
- singleton: true,
3
-
4
-
5
- getCenterView() {
6
- if (!this.centerview) {
7
- this.centerview = Ext.ComponentQuery.query('centerview')[0];
8
- }
9
- return this.centerview;
10
- },
11
-
12
- registerTab(component) {
13
- const routeId = component.menuItem && component.menuItem.MENU_ENTRY_CD ||
14
- component.reportId || component.uiElementCd;
15
- const config = {
16
- ui: component.uiElementCd,
17
- reportId: component.reportId,
18
- routeId,
19
- ctxId: component.componentContextId,
20
- text: component.getTitle && component.getTitle(),
21
- ctx: Coon.util.ContextManager.getContext(component.componentContextId),
22
- };
23
- if (!this.inited && this.getHeaderCt()) {
24
- this.inited = true;
25
- this.ct.add(this.getHistoryComponent());
26
- const menu = this.ct.down('#TabHistoryMenu');
27
- menu.on('click', function(_, item) {
28
- console.log('item.inHistory', item, item.inHistory);
29
- if (item.inHistory) {
30
- return;
31
- }
32
- this.getCenterView().setActiveComponent({componentContextId: item.ctxId});
33
- }, this);
34
- }
35
- if (this.inited) {
36
- const menu = this.ct.down('#TabHistoryMenu');
37
- console.log('config', config, component);
38
- component.on('titlechange', function(_, title) {
39
- menu.down(`[menuItemId=${config.ctxId}]`).setText(title);
40
- });
41
- component.on('beforedestroy', function() {
42
- const menuItem = menu.down(`[menuItemId=${config.ctxId}]`);
43
- menuItem.inHistory = true;
44
- menuItem.setIconCls('');
45
- return true;
46
- });
47
- const menuItem = menu.down(`[menuItemId=${config.ctxId}]`);
48
- if (menuItem) {
49
- menuItem.inHistory = false;
50
- menuItem.setIconCls('x-fa fa-home');
51
- } else {
52
- menu.add({
53
- iconCls: 'x-fa fa-home',
54
- text: config.text || config.routeId,
55
- menuItemId: config.ctxId,
56
- });
57
- }
58
- }
59
- },
60
-
61
- getHistoryComponent() {
62
- return {
63
- xtype: 'button',
64
- text: '...',
65
- menu: {
66
- itemId: 'TabHistoryMenu',
67
- maxWidth: 560,
68
- margin: 4,
69
- items: [],
70
- },
71
- };
72
- },
73
-
74
- getHeaderCt() {
75
- if (this.ct) {
76
- return this.ct;
77
- }
78
- this.ct = Ext.ComponentQuery.query('#headerFlexCt')[0];
79
- return this.ct;
80
- },
81
- });
@@ -1,54 +0,0 @@
1
- Ext.define('Coon.uielement.plugin.configPanel.UiCPPluginFormPanel', {
2
- extend: 'Ext.panel.Panel',
3
- xtype: 'UiCPPluginFormPanel',
4
-
5
- layout: {
6
- type: 'vbox',
7
- align: 'stretch',
8
- },
9
-
10
- commonItems: [
11
- {
12
- xtype: 'pluginDescriptionLabel',
13
- bind: {
14
- value: '{description}',
15
- },
16
- },
17
- {
18
- xtype: 'comboBtnWrapper',
19
- combobox: {
20
- reference: 'handlerCombo',
21
- xtype: 'BaseComboBox',
22
- fieldLabel: 'handlerName',
23
- labelWidth: 60,
24
- flex: 1,
25
- loadOnRender: false,
26
- hideMode: 'offsets',
27
- allowBlank: false,
28
- store: 'codeHandlers',
29
- bind: {
30
- value: '{handlerName}',
31
- },
32
- valueField: 'id',
33
- displayField: 'id',
34
- },
35
- }
36
- ],
37
-
38
-
39
- initComponent() {
40
- this.items = this.items || [];
41
- this.items = this.commonItems.concat(this.items);
42
- this.callParent(arguments);
43
- },
44
-
45
- getData: function() {
46
- return typeof this.getConfiguration === 'function' && this.getConfiguration();
47
- },
48
- setData: function(data) {
49
- if (data && typeof this.doInit === 'function') {
50
- this.doInit(data);
51
- }
52
- },
53
-
54
- });