ru.coon 2.7.53 → 2.7.55

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.
Files changed (28) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/package.json +1 -1
  3. package/src/report/component/ReportPanel.js +53 -5
  4. package/src/report/component/reportpanel/ReportGrid.js +3 -5
  5. package/src/report/component/reportpanel/ReportTree.js +3 -5
  6. package/src/report/component/settings/plugin/PluginSelectWindow.js +1 -1
  7. package/src/report/component/settings/plugin/ReportFormPluginPanelController.js +4 -1
  8. package/src/report/component/settings/plugin/ReportToolbarFunctions.js +176 -0
  9. package/src/report/plugin/configPanel/ReportToolbarPluginConfigPanel.js +195 -0
  10. package/src/report/plugin/grid/ExportReportDataToFilePlugin.js +7 -0
  11. package/src/report/plugin/grid/GroupButtonsPlugin.js +4 -1
  12. package/src/report/plugin/grid/ToolbarItemPlugin.js +5 -4
  13. package/src/report/plugin/report/ReportToolbarPlugin.js +66 -0
  14. package/src/report/toolbar/ButtonsByType.scss +168 -0
  15. package/src/report/toolbar/ReportGridToolbar.js +248 -0
  16. package/src/report/toolbar/ReportGridToolbar.scss +9 -0
  17. package/src/report/toolbar/dropdown/ToolbarConfigurationPanel.js +234 -0
  18. package/src/report/toolbar/dropdown/ToolbarConfigurationPanel.scss +13 -0
  19. package/src/report/toolbar/dropdown/ToolbarOverflowButton.js +113 -0
  20. package/src/report/toolbar/dropdown/ToolbarOverflowButton.scss +94 -0
  21. package/src/report/toolbar/dropdown/ToolbarOverflowPanel.js +188 -0
  22. package/src/report/toolbar/dropdown/ToolbarOverflowPanel.scss +37 -0
  23. package/src/report/toolbar/layout/ReportToolbarOverflow.js +374 -0
  24. package/src/uielement/component/settings/UiAceEditor.js +3 -0
  25. package/src/uielement/component/settings/plugin/UiCustomPanelPluginGrid.js +6 -31
  26. package/src/uielement/component/settings/plugin/UiCustomPanelPluginModel.js +30 -0
  27. package/src/uielement/component/settings/plugin/UiCustomPanelPluginStore.js +5 -0
  28. package/src/version.js +1 -1
@@ -0,0 +1,37 @@
1
+ .ToolbarOverflowPanel {
2
+
3
+ border: 1px solid #9DB2BF;
4
+ border-top: none;
5
+ .x-btn-button > .fix-btn-width {
6
+ width: 30px;
7
+ }
8
+ .white-space{
9
+ background-color: transparent;
10
+ border-top: 1px solid #9DB2BF;
11
+ width: 100%;
12
+ height: 1px;
13
+ position: absolute;
14
+ top: 0;
15
+ right: 32px;
16
+ }
17
+
18
+ .panel-body-buttons > .x-panel-bodyWrap > .x-panel-body{
19
+ border-bottom: 1px solid #9DB2BF !important;
20
+ //padding-bottom: 20px;
21
+ }
22
+
23
+ .panel-body-buttons .x-btn{
24
+ margin: 0 3px 5px 3px !important;
25
+ border: 1px solid transparent;
26
+ }
27
+
28
+
29
+ }
30
+ .shadow-elem{
31
+ background-repeat: no-repeat;
32
+ background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iMzUiIHZpZXdCb3g9IjAgMCA0MCAzNSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMzY4MV84MTY1MCkiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTQgMEMxMC42ODYzIDAgOCAyLjY4NjI5IDggNlYyNkM4IDI3LjA1MDYgNy43OTMwNyAyOC4wOTA5IDcuMzkxMDQgMjkuMDYxNUM2Ljk4OSAzMC4wMzIxIDYuMzk5NzIgMzAuOTE0IDUuNjU2ODUgMzEuNjU2OUM0LjkxMzk5IDMyLjM5OTcgNC4wMzIwNyAzMi45ODkgMy4wNjE0NyAzMy4zOTFDMi4wOTA4NiAzMy43OTMxIDEuMDUwNTggMzQgMCAzNFYzNUg4SDlINDBWNkM0MCAyLjY4NjI5IDM3LjMxMzcgMCAzNCAwSDE0WiIgZmlsbD0id2hpdGUiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTMwLjUzMDMgMTguNTMwM0MzMC4yMzc0IDE4LjgyMzIgMjkuNzYyNiAxOC44MjMyIDI5LjQ2OTcgMTguNTMwM0wyNCAxMy4wNjA3TDE4LjUzMDMgMTguNTMwM0MxOC4yMzc0IDE4LjgyMzIgMTcuNzYyNiAxOC44MjMyIDE3LjQ2OTcgMTguNTMwM0MxNy4xNzY4IDE4LjIzNzQgMTcuMTc2OCAxNy43NjI2IDE3LjQ2OTcgMTcuNDY5N0wyMy40Njk3IDExLjQ2OTdDMjMuNzYyNiAxMS4xNzY4IDI0LjIzNzQgMTEuMTc2OCAyNC41MzAzIDExLjQ2OTdMMzAuNTMwMyAxNy40Njk3QzMwLjgyMzIgMTcuNzYyNiAzMC44MjMyIDE4LjIzNzQgMzAuNTMwMyAxOC41MzAzWiIgZmlsbD0iIzNENjc4MCIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNOSA2QzkgMy4yMzg1OCAxMS4yMzg2IDEgMTQgMUgzNEMzNi43NjE0IDEgMzkgMy4yMzg1OCAzOSA2VjI2VjM0VjM1SDQwVjZDNDAgMi42ODYyOSAzNy4zMTM3IDAgMzQgMEgxNEMxMC42ODYzIDAgOCAyLjY4NjI5IDggNlYyNkM4IDI3LjA1MDYgNy43OTMwNyAyOC4wOTA5IDcuMzkxMDQgMjkuMDYxNUM2Ljk4OSAzMC4wMzIxIDYuMzk5NzIgMzAuOTE0IDUuNjU2ODUgMzEuNjU2OUM0LjkxMzk5IDMyLjM5OTcgNC4wMzIwNyAzMi45ODkgMy4wNjE0NyAzMy4zOTFDMi4wOTA4NiAzMy43OTMxIDEuMDUwNTggMzQgMCAzNFYzNUMxLjE4MTkgMzUgMi4zNTIyMiAzNC43NjcyIDMuNDQ0MTUgMzQuMzE0OUMzLjY3NTExIDM0LjIxOTIgMy45MDE2MSAzNC4xMTQyIDQuMTIzMSAzNEM0Ljk0ODc5IDMzLjU3NDQgNS43MDUgMzMuMDIyOSA2LjM2Mzk2IDMyLjM2NEM2LjQ2ODQzIDMyLjI1OTUgNi41NzAxOSAzMi4xNTI2IDYuNjY5MTkgMzIuMDQzM0M3LjM2MjEzIDMxLjI3ODYgNy45MTkxNiAzMC4zOTk2IDguMzE0OTIgMjkuNDQ0MkM4Ljc2NzIxIDI4LjM1MjIgOSAyNy4xODE5IDkgMjZWNloiIGZpbGw9IiMzRDY3ODAiIGZpbGwtb3BhY2l0eT0iMC41Ii8+PC9nPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDBfMzY4MV84MTY1MCI+PHJlY3Qgd2lkdGg9IjQwIiBoZWlnaHQ9IjM1IiBmaWxsPSJ3aGl0ZSIvPjwvY2xpcFBhdGg+PC9kZWZzPjwvc3ZnPg==");
33
+ position: absolute;
34
+ cursor: pointer;
35
+ width: 40px;
36
+ height: 40px;
37
+ }
@@ -0,0 +1,374 @@
1
+ Ext.define('Coon.report.toolbar.layout.ReportToolbarOverflow', {
2
+ extend: 'Ext.layout.container.boxOverflow.Menu',
3
+ alias: 'box.overflow.ReportToolbarOverflow',
4
+
5
+ pTypePriority: {
6
+ CopyRowsFromGrid: 1,
7
+ ExportReportDataToFilePlugin: 2,
8
+ ExporterPlugin: 3,
9
+ PrintPdfButtonPlugin: 4,
10
+ GroupButtonsPlugin: 5,
11
+ },
12
+
13
+ constructor: function(config) {
14
+ const me = this;
15
+
16
+ me.callParent([config]);
17
+
18
+ /**
19
+ * @property {Array} menuItems
20
+ * Array of all items that are currently hidden and should go into the dropdown menu
21
+ */
22
+ me.menuItems = [];
23
+
24
+ /**
25
+ * @property {Array} buttons
26
+ * Массив системных кнопок
27
+ */
28
+ me.systemItems = [];
29
+ },
30
+
31
+ beginLayout: function(ownerContext) {
32
+ this.callParent([ownerContext]);
33
+ // Before layout, we need to re-show all items which we may have hidden due to a
34
+ // previous overflow...
35
+ if (this.menuButton.dropDownMenu) {
36
+ this.layout.owner.foldItemsContainer.items.items.forEach((button) => {
37
+ if (button.hasCls(this.menuItemOverflowedCls)) {
38
+ this.layout.owner.add(button);
39
+ button.removeCls(this.menuItemOverflowedCls);
40
+ }
41
+ });
42
+ }
43
+ this.clearOverflow(ownerContext);
44
+ },
45
+
46
+ beginLayoutCycle: function(ownerContext, firstCycle) {
47
+ this.callParent([ownerContext, firstCycle]);
48
+
49
+ if (!firstCycle) {
50
+ // if we are being re-run, we need to clear any overflow from the last run and
51
+ // recache the childItems collection
52
+ this.clearOverflow(ownerContext);
53
+
54
+ this.layout.cacheChildItems(ownerContext);
55
+ }
56
+ },
57
+
58
+ /**
59
+ * @private
60
+ * Called by the layout, when it determines that there is no overflow.
61
+ * Also called as an interceptor to the layout's onLayout method to reshow
62
+ * previously hidden overflowing items.
63
+ */
64
+ clearOverflow: function(ownerContext) {
65
+ const me = this;
66
+ const items = me.menuItems;
67
+ const length = items.length;
68
+ const owner = me.layout.owner;
69
+ const asLayoutRoot = owner._asLayoutRoot;
70
+ let item; let i;
71
+
72
+ owner.suspendLayouts();
73
+ me.captureChildElements();
74
+ me.hideSystemToolbar();
75
+ owner.resumeLayouts();
76
+
77
+ for (i = 0; i < length; i++) {
78
+ item = items[i];
79
+
80
+ // What we are doing here is preventing the layout bubble from invalidating our
81
+ // owner component. We need just the button to be added to the layout run.
82
+ item.suspendLayouts();
83
+ item.removeCls(me.menuItemOverflowedCls);
84
+ me.clearItem(item);
85
+ item.resumeLayouts(asLayoutRoot);
86
+ }
87
+
88
+ items.length = 0;
89
+ },
90
+
91
+ hideSystemToolbar: function() {
92
+ const systemContainer = this.systemContainer;
93
+
94
+ if (systemContainer) {
95
+ systemContainer.setWidth(this.systemContainerTotalWidth);
96
+ }
97
+ },
98
+
99
+ // Вызывается в hbox лейауте в шаблоне
100
+ getSuffixConfig: function() {
101
+ const me = this;
102
+ const layout = me.layout;
103
+ const owner = layout.owner;
104
+ const oid = owner.id;
105
+
106
+ /*
107
+ picker
108
+ me.menuButton = Ext.create('Coon.report.toolbar.dropdown.TestPicker', {
109
+ width: 200,
110
+ minWidth: 10,
111
+ });
112
+
113
+ me.menuButton.on({
114
+ scope: me,
115
+ expand: me.beforeMenuShow,
116
+ });*/
117
+ me.menuButton = Ext.widget('ToolbarOverflowButton', {
118
+ id: oid + '-menu-trigger',
119
+ // To enable the Menu to ascertain a valid zIndexManager owner in the same tree
120
+ ownerCt: owner,
121
+ ownerLayout: layout,
122
+ reportToolbar: owner,
123
+ position: 999,
124
+ style: {
125
+ marginRight: '10px',
126
+ marginLeft: '10px',
127
+ },
128
+ });
129
+ me.menuButton.dropDownMenu.on({
130
+ scope: me,
131
+ beforeshow: me.beforeMenuShow,
132
+ });
133
+
134
+ const systemItemsList = [...me.systemItems, me.menuButton];
135
+
136
+ me.systemContainer = Ext.create({
137
+ xtype: 'container',
138
+ itemId: 'systemContainer',
139
+ layout: 'hbox',
140
+ width: 2,
141
+ defaults: {
142
+ style: {
143
+ marginLeft: '10px',
144
+ },
145
+ },
146
+ style: {
147
+ borderLeft: '3px solid #D3D3D3',
148
+ },
149
+ items: systemItemsList,
150
+ });
151
+
152
+ return me.systemContainer.getRenderTree();
153
+ },
154
+
155
+ // Добавление кнопки в системный тулбар
156
+ addButton: function(button) {
157
+ const me = this;
158
+ if (button.pType !== 'ToolbarOverflowButton') {
159
+ button.setTooltip(button.getText());
160
+ button.setText('');
161
+ this.setIconClsByType(button);
162
+ }
163
+ button.arrowVisible = false;
164
+ me.systemItems.push(button);
165
+ me.systemContainer.insert(0, button);
166
+ this.setButtonsPositionsByPType();
167
+ this.sortButtons();
168
+ if (!me.systemContainer.rendered) {
169
+ me.systemContainer.on('afterrender', function(btn) {
170
+ this.systemContainer.setWidth(this.systemContainer.getWidth() + btn.getWidth());
171
+ }, me, {single: true});
172
+ }
173
+ },
174
+
175
+ setIconClsByType(button) {
176
+ let cls = '';
177
+ switch (button.pType) {
178
+ case 'CopyRowsFromGrid':
179
+ cls = 'print-excel-button';
180
+ break;
181
+ case 'ExportReportDataToFilePlugin':
182
+ switch (button.exportFileFormat) {
183
+ case 'excel':
184
+ default:
185
+ cls = 'print-excel-button';
186
+ break;
187
+ case 'pdf':
188
+ cls = 'print-pdf-button';
189
+ break;
190
+ case 'csv':
191
+ cls = 'print-csv-button';
192
+ break;
193
+ case 'txt':
194
+ cls = 'print-txt-button';
195
+ break;
196
+ }
197
+ break;
198
+ case 'ExporterPlugin':
199
+ cls = 'print-excel-button';
200
+ break;
201
+ case 'PrintPdfButtonPlugin':
202
+ cls = 'print-pdf-button';
203
+ break;
204
+ case 'GroupButtonsPlugin':
205
+ cls = 'go-to-button';
206
+ break;
207
+ default:
208
+ cls = 'fa fa-plus';
209
+ break;
210
+ }
211
+ button.setIconCls(' masked-system-button '+ cls);
212
+ },
213
+ setButtonsPositionsByPType() {
214
+ const buttons = this.systemContainer.items.items;
215
+ if (buttons.length <= 1) {
216
+ return false;
217
+ }
218
+ buttons.forEach((button) => {
219
+ if (button.xtype !== 'ToolbarOverflowButton') {
220
+ button.position = this.pTypePriority[button.pType] || 0;
221
+ }
222
+ });
223
+ },
224
+
225
+ sortButtons() {
226
+ if (this.systemContainer.items.length <= 1) {
227
+ return;
228
+ }
229
+ this.systemContainer.items.doSort((a, b) => {
230
+ if (a.position < b.position) {
231
+ return -1;
232
+ }
233
+ if (a.position > b.position) {
234
+ return 1;
235
+ }
236
+ return 0;
237
+ });
238
+ },
239
+ /**
240
+ * Вычисление ширины системной части тулбара
241
+ */
242
+ calculateSystemContainerWidth() {
243
+ const me = this;
244
+ const systemContainer = me.systemContainer;
245
+ const names = me.layout.names;
246
+ const DEFAULT_BUTTON_WIDTH = 0;
247
+ const systemButtonsWidth = me.systemItems.reduce((acc, button) => {
248
+ // console.log('button width', button.rendered && Ext.isFunction(button.getWidth) ?
249
+ // button.getWidth() + 10:
250
+ // DEFAULT_BUTTON_WIDTH);
251
+ acc += button.rendered && Ext.isFunction(button.getWidth) ?
252
+ button.getWidth() + 10:
253
+ DEFAULT_BUTTON_WIDTH;
254
+ return acc;
255
+ }, 0);
256
+ // console.log('buttons width', systemButtonsWidth);
257
+ // console.log('menuButton', me.menuButton.getWidth());
258
+ // console.log('getMargin', systemContainer.el.getMargin(names.parallelMargins));
259
+ const width = systemButtonsWidth +
260
+ (me.menuButton.getWidth() || 30) + 20 +
261
+ systemContainer.el.getMargin(names.parallelMargins);
262
+ // console.log('allWidth', width);
263
+ return width;
264
+ },
265
+ calculate: function(ownerContext) {
266
+ const me = this;
267
+ const plan = ownerContext.state.boxPlan;
268
+ let overflow;
269
+ if (plan /* && plan.tooNarrow*/) { // Не учитываем, есть переполнение или нет
270
+ overflow = me.handleOverflow(ownerContext);
271
+ if (overflow) {
272
+ if (overflow.reservedSpace) {
273
+ me.layout.publishInnerCtSize(ownerContext, overflow.reservedSpace);
274
+ }
275
+ }
276
+ }
277
+ },
278
+
279
+ handleOverflow: function(ownerContext) {
280
+ const me = this;
281
+ const layout = me.layout;
282
+
283
+ me.showSystemToolbar(ownerContext);
284
+
285
+ // Center the systemContainer button only if we are not vertical.
286
+ if (layout.direction !== 'vertical') {
287
+ me.systemContainer.setLocalY(
288
+ (ownerContext.state.boxPlan.maxSize - me.systemContainer[layout.names.getHeight]()) / 2
289
+ );
290
+ }
291
+ return {
292
+ reservedSpace: me.systemContainerTotalWidth,
293
+ };
294
+ },
295
+
296
+ beforeMenuShow: function(toolbarOverflowPanel) {
297
+ const me = this;
298
+ const layout = me.layout;
299
+ const owner = layout.owner;
300
+ const report = owner.up('ReportPanel');
301
+ const reportId = report.reportId;
302
+ const allChildItems = this.layout.owner.items.getRange().filter((item) => !item.isContainer); // Все кнопки
303
+ const overvlowedItems = allChildItems.filter((b) => b.hasCls(this.menuItemOverflowedCls) === true);
304
+ const foldItems = owner.foldItemsContainer.items.getRange().filter((b) => b.hasCls(this.menuItemOverflowedCls) !== true);
305
+ // Контейнер, содержащий припаркованные кнопки
306
+ toolbarOverflowPanel.getController().doInit(reportId, allChildItems, overvlowedItems, foldItems);
307
+ },
308
+
309
+ /**
310
+ * @private
311
+ * Shows the overflow trigger when enableOverflow is set to true and the items
312
+ * in the layout are too wide to fit in the space available
313
+ */
314
+ showSystemToolbar: function(ownerContext) {
315
+ const me = this;
316
+ const layout = me.layout;
317
+ const owner = layout.owner;
318
+ const names = layout.names;
319
+ const startProp = names.x;
320
+ const sizeProp = names.width;
321
+ const plan = ownerContext.state.boxPlan;
322
+ let available = plan.targetSize[sizeProp];
323
+ const childItems = ownerContext.childItems;
324
+ const systemContainer = me.systemContainer;
325
+ const menuItems = me.menuItems;
326
+ let childContext; let comp; let i; let props; let len;
327
+
328
+ // We don't want the systemContainer.show to cause owner's layout to be invalidated, so
329
+ // we force just the button to be invalidated and added to the current run.
330
+ systemContainer.suspendLayouts();
331
+ systemContainer.show();
332
+ systemContainer.resumeLayouts(me._asLayoutRoot);
333
+
334
+ available -= me.systemContainerTotalWidth;
335
+ owner.suspendLayouts();
336
+ // Hide all items which are off the end, and store them to allow them to be restored
337
+ // before each layout operation.
338
+ for (i = 0, len = menuItems.length; i < len; ++i) {
339
+ me.clearItem(menuItems[i]);
340
+ }
341
+
342
+ menuItems.length = 0;
343
+ let indicator = false;
344
+ for (i = 0, len = childItems.length; i < len; i++) {
345
+ childContext = childItems[i];
346
+ props = childContext.props;
347
+ if (props[startProp] + props[sizeProp] > available) {
348
+ comp = childContext.target;
349
+ if (comp.itemId === 'hiddenDisplayElement') {
350
+ continue;
351
+ }
352
+ comp.addCls(me.menuItemOverflowedCls);
353
+ indicator = true;
354
+ me.menuItems.push(comp);
355
+ }
356
+ }
357
+ this.menuButton.setOverflowIndicator(indicator);
358
+ owner.resumeLayouts();
359
+ },
360
+
361
+ captureChildElements: function() {
362
+ const me = this;
363
+ const systemContainer = me.systemContainer;
364
+ const names = me.layout.names;
365
+
366
+ // The rendering flag is set when getRenderTree is called which we do
367
+ // when returning markup string for the owning layout's "suffix"
368
+ if (systemContainer.rendering) {
369
+ systemContainer.finishRender();
370
+ }
371
+ const calculatedWidth = me.calculateSystemContainerWidth();
372
+ me.systemContainerTotalWidth = calculatedWidth + systemContainer.el.getMargin(names.parallelMargins);
373
+ },
374
+ });
@@ -239,6 +239,9 @@ Ext.define('Coon.uielement.component.settings.UiAceEditor', {
239
239
  renderEditor: function() {
240
240
  this.editor = Ext.xAceEditor.edit(this.getId());
241
241
  this.editor.setTheme('ace/theme/xcode');
242
+ if (this.mode === 'javascript') {
243
+ this.editor.session.setOption('useWorker', !Ext.isProduction);
244
+ }
242
245
  if (typeof this.mode === 'string') {
243
246
  this.editor.session.setMode(`ace/mode/${this.mode}`);
244
247
  } else {
@@ -7,6 +7,8 @@ Ext.define('Coon.uielement.component.settings.plugin.UiCustomPanelPluginGrid', {
7
7
  requires: [
8
8
  'Coon.uielement.component.settings.plugin.UiCustomPanelPluginSelectWindow',
9
9
  'Coon.uielement.component.settings.plugin.UiCustomPanelPluginGridController',
10
+ 'Coon.uielement.component.settings.plugin.UiCustomPanelPluginModel',
11
+ 'Coon.uielement.component.settings.plugin.UiCustomPanelPluginStore',
10
12
  'Coon.stateProvider'
11
13
  ],
12
14
  controller: 'UiCustomPanelPluginGridController',
@@ -22,37 +24,10 @@ Ext.define('Coon.uielement.component.settings.plugin.UiCustomPanelPluginGrid', {
22
24
 
23
25
  stateId: 'UiCustomPanelPluginGrid',
24
26
 
25
- store: Ext.create('Ext.data.ArrayStore', {
26
- storeId: 'UiCustomPanelPluginStore',
27
- model: Ext.define('UiCustomPanelPluginModel', {
28
- extend: 'Ext.data.Model',
29
- fields: [
30
- {name: 'isSingle', type: 'boolean'},
31
- {name: 'isNew', type: 'boolean'},
32
- {name: 'sequenceNumber', type: 'number'},
33
- {name: 'sortSequence', type: 'number'},
34
- {name: 'ptype', type: 'string'},
35
- {name: 'xtype', type: 'string', convert(_, plugin) {
36
- return plugin.data.ptype;
37
- }},
38
- {
39
- name: 'handlerName',
40
- type: 'string',
41
- convert(v) {
42
- return v || '-/-';
43
- }},
44
- {
45
- name: 'name',
46
- type: 'string',
47
- convert(val, plugin) {
48
- return `${plugin.data.ptype}${plugin.data.handlerName ? '.'+plugin.data.handlerName : ''}`;
49
- },
50
- },
51
- 'properties',
52
- 'jsonProperties'
53
- ],
54
- }),
55
- }),
27
+ store: {
28
+ type: 'UiCustomPanelPluginStore',
29
+ },
30
+
56
31
  viewConfig: {
57
32
  getRowClass: function(rec) {
58
33
  if (rec.get('isDeleted')) {
@@ -0,0 +1,30 @@
1
+ Ext.define('Coon.uielement.component.settings.plugin.UiCustomPanelPluginModel', {
2
+ extend: 'Ext.data.Model',
3
+ entityName: 'UiCustomPanelPluginModel',
4
+
5
+ fields: [
6
+ {name: 'isSingle', type: 'boolean'},
7
+ {name: 'isNew', type: 'boolean'},
8
+ {name: 'sequenceNumber', type: 'number'},
9
+ {name: 'sortSequence', type: 'number'},
10
+ {name: 'ptype', type: 'string'},
11
+ {name: 'xtype', type: 'string', convert(_, plugin) {
12
+ return plugin.data.ptype;
13
+ }},
14
+ {
15
+ name: 'handlerName',
16
+ type: 'string',
17
+ convert(v) {
18
+ return v || '-/-';
19
+ }},
20
+ {
21
+ name: 'name',
22
+ type: 'string',
23
+ convert(val, plugin) {
24
+ return `${plugin.data.ptype}${plugin.data.handlerName ? '.'+plugin.data.handlerName : ''}`;
25
+ },
26
+ },
27
+ 'properties',
28
+ 'jsonProperties'
29
+ ],
30
+ });
@@ -0,0 +1,5 @@
1
+ Ext.define('Coon.uielement.component.settings.plugin.UiCustomPanelPluginStore', {
2
+ extend: 'Ext.data.Store',
3
+ alias: 'store.UiCustomPanelPluginStore',
4
+ model: 'Coon.uielement.component.settings.plugin.UiCustomPanelPluginModel',
5
+ });
package/src/version.js CHANGED
@@ -1,4 +1,4 @@
1
1
  Ext.define('Coon.version', {
2
2
  singleton: true,
3
- number: '2.7.53',
3
+ number: '2.7.55',
4
4
  });