ru.coon 2.8.47 → 2.8.49

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,3 +1,19 @@
1
+ # Version 2.8.49, [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/ec11e7b7b820f1b1cb4623353bc6d1b43974f369)
2
+ * ## Features
3
+ * <span style='color:green'>feat: HT-11123: Обработка конфига компоненты вынесена из контроллера для получения конфига вложенного компонента до его инициализации</span> ([4f3f0d], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/4f3f0d7a1fb29b5582c52e75912e5a12631bffde))
4
+
5
+ * ## Fixes
6
+ * <span style='color:red'>fix</span> ([f7ce88], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/f7ce88d8859e702af4521253068bda50df90c39b))
7
+
8
+ * remove template 'beforeComplete' ([e746ea], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/e746ea99a3adbb1b0b5e6eadac6068e1250a567a))
9
+ * update: CHANGELOG.md ([58846f], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/58846fbc62873ca4c56f685e85420bad0e56652b))
10
+
11
+ # Version 2.8.48, [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/201d12dfc121f4045867a23b2d92f9fe252191cf)
12
+ * ## Fixes
13
+ * <span style='color:red'>fix afterlayout -> afterlayoutanimation</span> ([4c5351], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/4c535139895c0622dbacf836c5fc81b2d0d95727))
14
+
15
+ * update: CHANGELOG.md ([c0d9e3], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/c0d9e3e6975abd06fe70dfa62f1b84cb82fb2561))
16
+
1
17
  # Version 2.8.47, [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/5517082c79a0635a115fa036d9b16f6c3d973858)
2
18
  * ## Fixes
3
19
  * <span style='color:red'>fix ace version</span> ([4053a5], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/4053a550fe3a2f49af198e6f44eff7c0a80d8b15))
@@ -111,16 +127,24 @@ remove unusual alternateClassName</span> ([7427bf], [link](http://gitlab-dbr.sig
111
127
  * <span style='color:red'>fix mode in booleaniconcolumn</span> ([5e360d], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/5e360d5194ee371e8f98a80e805c6385adefb766))
112
128
  * <span style='color:red'>fix xtype booleaniconcolumn</span> ([d02e5f], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/d02e5f191336db50627339b44ab5a4c55ea8aaac))
113
129
 
130
+ * BFL-17254 рефактор типа сохранения userPropStorage ([d1ae82], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/d1ae82d2d5d856da5dc04cb9cc64c5fbbd1c84b1))
131
+ * BFL-17254 Улучшение читаемости алгоритма ([11aa89], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/11aa89bb7c27efd2593a6be5444fa45a03522f54))
132
+ * исправление опечатки ([e57a17], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/e57a171eddfc5f3615ce17f9f3f0708764ed7644))
133
+ * исправление замечаний ([0ee5a8], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/0ee5a8addd7a5630f29a706fdc7b7535a06d71c2))
134
+ * upd ([934879], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/93487925e08f8639bb474e19f5a9056a72bf6fad))
114
135
  * update: CHANGELOG.md ([f65bf5], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/f65bf563dbeb9d18d6330ee6db7bab486ba5ced9))
115
136
 
116
137
  # Version 2.8.32, [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/396f1c8296522012f1f98d8dd7a0bb9296b990e0)
117
138
  * ## Features
139
+ * <span style='color:green'>feat: запись при поиске параметров репорта, имеющих настройку автоподскановки</span> ([21b6c3], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/21b6c3cd5bafe96663842f117614df370b7fde34))
140
+ * <span style='color:green'>feat: добавлен extraProps в параметры репорта</span> ([f6bfb8], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/f6bfb8e3d4bad8f9f1f3683414c7d98a61396c68))
118
141
  * <span style='color:green'>feat: [ReportPanel] htmlEncode tooltip. Closes NEVA-665.</span> ([7a95ab], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/7a95ab2b56300ee0fcd4e2af1e3a2e491b42df12))
119
142
  * <span style='color:green'>feat: [ReportPanel] Добавлены tooltip на группы столбцов таблицы. Closes NEVA-665.</span> ([b19f87], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/b19f87c6fc5f1825da39249a96042bb297493a3b))
120
143
  * <span style='color:green'>feat new status icon</span> ([40a654], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/40a6541c23af2f7955b46d5181c4ec1bea7e7fe6))
121
144
 
122
145
  * ## Fixes
123
146
  * <span style='color:red'>fix condition</span> ([d16526], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/d165266b8c349fbfbd250b12b6b39d5fa237d2f2))
147
+ * <span style='color:red'> редактирование поля параметров репорта по двойному клику</span> ([f28ac1], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/f28ac1cbe0a9192838840b0882acb2eb7009d511))
124
148
 
125
149
  * HT-10932 Исправление применения настроек чекбокса в SetSingleParameterPlugin ([a619ec], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/a619eccc567f07cf3c131529dd75de3f0d7e9ed8))
126
150
  * HT-10676 Доработка проверки корректности расположения плагина BindCustomPanelPlugin ([c48842], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/c48842c7c39c3908f1d98ca4b0b84c7b829470cb))
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "name": "ru.coon"
5
5
  },
6
6
  "description": "",
7
- "version": "2.8.47",
7
+ "version": "2.8.49",
8
8
  "repository": {
9
9
  "type": "git",
10
10
  "url": "git+http://gitlab-dbr.sigma-it.local/dbr/ru.coon"
package/src/app/Router.js CHANGED
@@ -69,7 +69,7 @@ Ext.define('Coon.app.Router', {
69
69
  });
70
70
  },
71
71
  getRouterView() {
72
- return Ext.ComponentQuery.query('centerview').shift();
72
+ return Ext.ComponentQuery.query('centerview')[0];
73
73
  },
74
74
  getActiveComponent() {
75
75
  const routerView = this.getRouterView();
@@ -37,6 +37,7 @@ Ext.define('Coon.app.viewPort.CenterViewController', {
37
37
  }
38
38
  }
39
39
  },
40
+
40
41
  onRenderEditor(editor, id) {
41
42
  const c = editor.getController();
42
43
  typeof c.doInit === 'function' && c.doInit.call(c, id);
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Сохранение параметров пользователя по ключу:
3
+ * component:componentId:module:key
4
+ *
5
+ * Сохранение происходит в зависимости от saveType:
6
+ * localStorage (saveType = 'ls')
7
+ * сервер (saveType = 'server')
8
+ **/
9
+ Ext.define('Coon.common.UserPropStorage', {
10
+ component: undefined,
11
+ componentId: undefined,
12
+ module: undefined,
13
+ propList: undefined,
14
+ saveType: undefined,
15
+
16
+ constructor(config) {
17
+ Ext.apply(this, config);
18
+ },
19
+
20
+ saveProps(allProps) {
21
+ const saveProp = {};
22
+ this.propList.forEach((prop) => {
23
+ saveProp[prop] = allProps[prop];
24
+ });
25
+ switch (this.saveType) {
26
+ case 'ls':
27
+ return this.savePropsToLocalStorage(saveProp);
28
+ case 'server':
29
+ return this.savePropsToServer(saveProp);
30
+ }
31
+ },
32
+
33
+ deleteProps(props) {
34
+ switch (this.saveType) {
35
+ case 'ls':
36
+ return this.deletePropsFromLocalStorage(props || this.propList);
37
+ case 'server':
38
+ return this.deletePropsFromServer(props || this.propList);
39
+ }
40
+ },
41
+
42
+ getSavedProps() {
43
+ const currentKey = this.getCurrentKey();
44
+ switch (this.saveType) {
45
+ case 'ls':
46
+ const savedProps = Object.entries(localStorage)
47
+ .filter(([key]) => key.includes(currentKey));
48
+ return this.getDecodedValues(savedProps, currentKey);
49
+ case 'server':
50
+ // TODO: replace command
51
+ return Coon.util.promisifyCmd('command.GetDynamicReportDataCommand', {key: currentKey})
52
+ .then((data) => {
53
+ return this.getDecodedValues(data, currentKey);
54
+ });
55
+ }
56
+ },
57
+
58
+ getDecodedValues(data, currentKey) {
59
+ return data.reduce((acc, [key, value]) => {
60
+ acc[key.replace(currentKey + ':', '')] = Ext.decode(value);
61
+ return acc;
62
+ }, {});
63
+ },
64
+
65
+ savePropsToLocalStorage(props) {
66
+ for (const [key, value] of Object.entries(props)) {
67
+ const propKey = this.getKey(key);
68
+ this.saveToLocalStorage(propKey, value);
69
+ }
70
+ },
71
+
72
+ savePropsToServer(props) {
73
+ let saveProps;
74
+ for (const [key, value] of Object.entries(props)) {
75
+ const propKey = this.getKey(key);
76
+ saveProps[propKey] = value;
77
+ }
78
+ // TODO: replace command
79
+ return Coon.util.promisifyCmd('command.GetDynamicReportDataCommand', {props: saveProps});
80
+ },
81
+
82
+ deletePropsFromLocalStorage(props) {
83
+ props.forEach((key) => {
84
+ localStorage.removeItem(this.getKey(key));
85
+ });
86
+ },
87
+
88
+ deletePropsFromServer(props) {
89
+ const deleteKeys = props.map((key) => this.getKey(key));
90
+ // TODO: replace command
91
+ return Coon.util.promisifyCmd('command.GetDynamicReportDataCommand', {keys: deleteKeys});
92
+ },
93
+
94
+ getCurrentKey() {
95
+ return `${this.component}:${this.componentId}:${this.module}`;
96
+ },
97
+
98
+ getKey(key) {
99
+ return `${this.getCurrentKey()}:${key}`;
100
+ },
101
+
102
+ saveToLocalStorage(key, value) {
103
+ localStorage.setItem(key, Ext.encode(value));
104
+ },
105
+ });
@@ -13,4 +13,22 @@ Ext.define('Coon.common.component.formeditor.UiCFCell', {
13
13
  listeners: {
14
14
  beforeadd: 'onBeforeAdd',
15
15
  },
16
+ initComponent: function() {
17
+ const component = this.items[0];
18
+ if (component) {
19
+ if (component.rawCfg) {
20
+ Object.keys(component.rawCfg).forEach((key) => {
21
+ const value = component.rawCfg[key]+'';
22
+ if (value && Coon.format.startsWith(value, 'function')) {
23
+ try {
24
+ component[key] = eval('(' + value + ')').call(component);
25
+ } catch (e) {
26
+ Coon.log.error(`[UiCFCell] for property:${key} & value:${value}, error: ${e}`);
27
+ }
28
+ }
29
+ });
30
+ }
31
+ }
32
+ this.callParent();
33
+ },
16
34
  });
@@ -5,25 +5,10 @@ Ext.define('Coon.common.component.formeditor.UiCFCellController', {
5
5
  oldWidth: 0,
6
6
  minCellWidth: 150,
7
7
  readOnly: false,
8
- init: function() {
8
+ init: function(cfg) {
9
9
  this.setDefaultMenuItems();
10
10
  this.initMouseEvents();
11
11
  },
12
- onBeforeAdd(cell, component, index, eOpts) {
13
- // console.log(component);
14
- if (component.initialConfig.rawCfg) {
15
- Object.keys(component.initialConfig.rawCfg).forEach((key) => {
16
- const value = component.initialConfig.rawCfg[key]+'';
17
- if (value && Coon.format.startsWith(value, 'function')) {
18
- try {
19
- component[key] = eval('(' + value + ')').call(component);
20
- } catch (e) {
21
- Coon.log.error(`[UiCFCellController] for property:${key} & value:${value}, error: ${e}`);
22
- }
23
- }
24
- });
25
- }
26
- },
27
12
  setDefaultMenuItems() {
28
13
  const rowCnt = this.getUiCFRowController();
29
14
  this.menuItems = {
@@ -28,6 +28,7 @@ Ext.define('Coon.report.component.ReportPanel', {
28
28
  'Coon.report.plugin.grid.GridContextPlugin',
29
29
  'Coon.report.command.LoadDynamicReportCommand',
30
30
  'Coon.common.plugin.*',
31
+ 'Coon.common.UserPropStorage',
31
32
  'Ext.button.Button',
32
33
  'Ext.container.Container',
33
34
  'Ext.grid.feature.Grouping',
@@ -605,10 +606,36 @@ Ext.define('Coon.report.component.ReportPanel', {
605
606
  this.isConfigured = true;
606
607
  this.fireEvent('configured', response, this);
607
608
  this.grid.fireEvent('configured', response, this);
609
+ this.initUserPropStorage(response.parameters);
608
610
  }, this);
609
611
  command.execute(this.reportId);
610
612
  },
611
613
 
614
+ async initUserPropStorage(parameters) {
615
+ if (!parameters) {
616
+ return;
617
+ }
618
+ const saveParamList = parameters
619
+ .filter((param) => param.properties.saveLastUsedValue)
620
+ .map((param) => param.reportParameterCd);
621
+
622
+ const userParamStorage = Ext.create('Coon.common.UserPropStorage', {
623
+ component: 'report',
624
+ componentId: this.reportId,
625
+ module: 'reportParameter',
626
+ propList: saveParamList,
627
+ saveType: 'ls',
628
+ });
629
+ this.northPanel.on('filterhandlerevent', userParamStorage.saveProps, userParamStorage);
630
+ this.northPanel.clearButton.on('click', function() {
631
+ userParamStorage.deleteProps();
632
+ });
633
+ const savedProps = await userParamStorage.getSavedProps();
634
+ if (savedProps) {
635
+ this.fillFilter(true, savedProps);
636
+ }
637
+ },
638
+
612
639
  /* checkPluginsCompatibility: function(plugins) {
613
640
  if (this.hideFilterPanel) {
614
641
  return plugins.filter((plugin) => plugin.uiElement.xtype !== 'ReportGroupsFieldValidationPlugin');
@@ -1033,7 +1060,7 @@ Ext.define('Coon.report.component.ReportPanel', {
1033
1060
  this.grid.clear();
1034
1061
  this.currentParamList = this.northPanel.collectParams();
1035
1062
  this.filtered = true;
1036
- this.northPanel.fireEvent('filterhandlerevent');
1063
+ this.northPanel.fireEvent('filterhandlerevent', Object.assign({}, this.currentParamList));
1037
1064
  this.beforeCommandExecuter(this.beforeApplyFilterCommand(this), [this.currentParamList], function() {
1038
1065
  this.loadData(this.currentParamList, typeof invalidateCache === 'boolean' && invalidateCache);
1039
1066
  });
@@ -191,7 +191,7 @@ Ext.define('Coon.report.component.report.NorthPanel', {
191
191
  }, this);
192
192
 
193
193
  this.filterContainer.removeAll();
194
- filterPanel.on('afterlayout', function(cmp) {
194
+ filterPanel.on('afterlayoutanimation', function(cmp) {
195
195
  this.recalculateHeight(cmp.getHeight());
196
196
  }, this, {single: true});
197
197
  this.filterContainer.add(filterPanel);
@@ -0,0 +1,123 @@
1
+ Ext.define('Coon.report.component.settings.ReportParametersExtraPropsGrid', {
2
+ extend: 'Ext.grid.Panel',
3
+ alias: 'widget.ReportParametersExtraPropsGrid',
4
+ title: 'Дополнительные свойства',
5
+
6
+ controller: {
7
+
8
+ mainRecord: null,
9
+
10
+ init: function() {
11
+ this.parameterPropertiesGrid = this.getView().parameterPropertiesGrid;
12
+ this.parametersGrid = this.getView().parametersGrid;
13
+ this.parameterPropertiesGrid.getStore().on('datachanged', this.loadData, this);
14
+ this.initLoad();
15
+ },
16
+
17
+ initLoad() {
18
+ this.defaultProps = {
19
+ 'общее свойство': [
20
+ {
21
+ name: 'saveLastUsedValue',
22
+ description: 'Сохраняет значение параметра после поиска, и подставляет их при повторном открытии.',
23
+ type: 'boolean',
24
+ fields: 'all',
25
+ value: 'true',
26
+ }
27
+ ],
28
+ };
29
+ this.loadData();
30
+ },
31
+
32
+ loadData: function() {
33
+ this.getView().hide();
34
+ this.getViewModel().getStore('mainStore').removeAll();
35
+ const selection = this.parametersGrid.getSelectionModel().getSelection();
36
+ const mainRecord = selection.length > 0 ? selection[0] : null;
37
+ if (!mainRecord) {
38
+ return;
39
+ }
40
+ const data = [];
41
+ const propertySet = this.parameterPropertiesGrid.getStore().getRange().reduce((acc, item) => {
42
+ if (!item.get('isDeleted')) {
43
+ acc.add(item.get('key'));
44
+ }
45
+ return acc;
46
+ }, new Set());
47
+ Object.keys(this.defaultProps).forEach((key) => {
48
+ this.defaultProps[key].forEach((config) => {
49
+ if (propertySet.has(config.name)) {
50
+ return;
51
+ }
52
+ if (config.fields === 'all' || !config.fields) {
53
+ config['plugin'] = key;
54
+ data.push(config);
55
+ }
56
+ if (Ext.isArray(config.fields) && config.fields.includes(mainRecord.get('reportFieldCd'))) {
57
+ config['plugin'] = key;
58
+ data.push(config);
59
+ }
60
+ });
61
+ });
62
+ this.getViewModel().getStore('mainStore').loadData(data);
63
+ this.getView().setHidden(!data.length);
64
+ },
65
+
66
+ addHandler: function(grid, rowIndex, colIndex) {
67
+ const rec = grid.getStore().getAt(rowIndex);
68
+ const parameterPropertiesGrid = this.parameterPropertiesGrid;
69
+ const usedProp = parameterPropertiesGrid
70
+ .getStore()
71
+ .getRange()
72
+ .filter((record) => record.get('key') === rec.get('name') && record.get('isDeleted') === true);
73
+ if (usedProp.length) {
74
+ usedProp.forEach((item) => item.set('isDeleted', false));
75
+ } else {
76
+ parameterPropertiesGrid.getStore().add({
77
+ sequenceNumber: parameterPropertiesGrid.getController().generateSequenceNumber(),
78
+ key: rec.get('name'),
79
+ value: rec.get('value') || '',
80
+ isDeleted: false,
81
+ isNew: true,
82
+ });
83
+ }
84
+ parameterPropertiesGrid.getController().updateProperties();
85
+ },
86
+ },
87
+
88
+ viewModel: {
89
+ stores: {
90
+ mainStore: {
91
+ type: 'json',
92
+ data: [],
93
+ },
94
+ },
95
+ },
96
+
97
+ bind: {
98
+ store: '{mainStore}',
99
+ },
100
+
101
+ columns: {
102
+ defaults: {
103
+ xtype: 'hintColumn',
104
+ },
105
+ items: [
106
+ {text: 'Плагин', dataIndex: 'plugin', flex: 1},
107
+ {text: 'Наименование', dataIndex: 'name', flex: 1},
108
+ {text: 'Описание', dataIndex: 'description', flex: 3},
109
+ {text: 'Тип', dataIndex: 'type', flex: 1},
110
+ {
111
+ width: 40,
112
+ xtype: 'actioncolumn',
113
+ items: [
114
+ {
115
+ iconCls: 'x-fa fa-plus',
116
+ tooltip: 'Добавить',
117
+ handler: 'addHandler',
118
+ }
119
+ ],
120
+ }
121
+ ],
122
+ },
123
+ });
@@ -4,7 +4,8 @@ Ext.define('Coon.report.component.settings.parameter.ReportFormParameterEditPane
4
4
  alternateClassName: 'Sigma.component.report.settings.ReportFormParameterEditPanel',
5
5
  requires: [
6
6
  'Coon.report.component.settings.ReportFieldPropertiesGrid',
7
- 'Coon.report.component.settings.parameter.ReportFormParametersGrid'
7
+ 'Coon.report.component.settings.parameter.ReportFormParametersGrid',
8
+ 'Coon.report.component.settings.ReportParametersExtraPropsGrid'
8
9
  ],
9
10
  controller: 'reportformparametereditpanelcontroller',
10
11
  frame: true,
@@ -31,17 +32,29 @@ Ext.define('Coon.report.component.settings.parameter.ReportFormParameterEditPane
31
32
  },
32
33
  },
33
34
  {
34
- xtype: 'ReportPropertiesGrid',
35
+ xtype: 'panel',
36
+ reference: 'parametersPropsPanel',
37
+ layout: {
38
+ type: 'vbox',
39
+ align: 'stretch',
40
+ },
41
+ flex: 1,
42
+ region: 'east',
35
43
  width: 500,
36
44
  scrollable: true,
37
45
  split: true,
38
46
  frame: false,
39
- region: 'east',
40
- reference: 'parameterProperties',
41
- bind: {
42
- enableAddProps: '{enableAddParamProps}',
43
- data: '{parametersGrid.selection.properties}',
44
- },
47
+ items: [
48
+ {
49
+ xtype: 'ReportPropertiesGrid',
50
+ flex: 2,
51
+ reference: 'parameterProperties',
52
+ bind: {
53
+ enableAddProps: '{enableAddParamProps}',
54
+ data: '{parametersGrid.selection.properties}',
55
+ },
56
+ }
57
+ ],
45
58
  }
46
59
  ],
47
60
  },
@@ -60,5 +73,17 @@ Ext.define('Coon.report.component.settings.parameter.ReportFormParameterEditPane
60
73
  }],
61
74
  }
62
75
  ],
76
+
77
+ initComponent() {
78
+ this.callParent();
79
+ const parametersPropsPanel = this.lookup('parametersPropsPanel');
80
+ parametersPropsPanel.add({
81
+ xtype: 'ReportParametersExtraPropsGrid',
82
+ flex: 1,
83
+ title: 'extraProps',
84
+ parameterPropertiesGrid: this.lookup('parameterProperties'),
85
+ parametersGrid: this.lookup('parametersGrid'),
86
+ });
87
+ },
63
88
  });
64
89
 
@@ -231,7 +231,7 @@ Ext.define('Coon.report.component.settings.parameter.ReportFormParametersGrid',
231
231
  ],
232
232
  },
233
233
  plugins: [
234
- {ptype: 'rowediting', clicksToEdit: 1}
234
+ {ptype: 'rowediting', clicksToEdit: 2}
235
235
  // {ptype: 'gridexporter'}
236
236
  ],
237
237
  });
@@ -19,6 +19,7 @@ Ext.define('Coon.uielement.UiCPEntity', {
19
19
  constructor: function(config) {
20
20
  this.mixins.observable.constructor.call(this, config);
21
21
  },
22
+
22
23
  loadJSON5(str) {
23
24
  try {
24
25
  this.ui = JSON5.parse(str);
package/src/version.js CHANGED
@@ -1,4 +1,4 @@
1
1
  Ext.define('Coon.version', {
2
2
  singleton: true,
3
- number: '2.8.47',
3
+ number: '2.8.49',
4
4
  });