ru.coon 3.0.60 → 3.0.61

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/.husky/pre-commit +0 -0
  2. package/CHANGELOG.md +10 -2
  3. package/package.json +1 -1
  4. package/src/common/field/FieldsHelper.js +0 -0
  5. package/src/common/panel/WindowWrap.js +0 -0
  6. package/src/common/plugin/form/RequiredFlagPlugin.js +0 -29
  7. package/src/format.js +30 -0
  8. package/src/report/component/ReportFilterForm.js +10 -2
  9. package/src/report/component/ReportPanel.js +34 -40
  10. package/src/report/component/ReportPanel.scss +13 -0
  11. package/src/report/component/reportpanel/FilterPanel.js +2 -2
  12. package/src/report/component/reportpanel/FilterPanelLegend.js +8 -0
  13. package/src/report/component/reportpanel/FilterPanelLegend.scss +2 -2
  14. package/src/report/component/reportpanel/NorthPanel.js +132 -98
  15. package/src/report/component/reportpanel/NorthPanel.scss +75 -6
  16. package/src/report/component/reportpanel/ReportGrid.js +0 -1
  17. package/src/report/component/reportpanel/SideFilterPanel.js +512 -0
  18. package/src/report/component/reportpanel/SideFilterPanel.scss +88 -0
  19. package/src/report/plugin/configPanel/ControlColumnByParamPluginConfigPanel.js +56 -2
  20. package/src/report/plugin/configPanel/ControlColumnByParamPluginConfigPanelGrid.js +1 -1
  21. package/src/report/plugin/form/ReportGroupsFieldValidationPlugin.js +5 -8
  22. package/src/report/plugin/grid/ControlColumnByParamPlugin.js +34 -35
  23. package/src/report/util.js +27 -27
  24. package/src/uielement/component/formchips/FilterConditionToolbarController.js +7 -0
  25. package/src/util.js +9 -7
  26. package/src/validator.js +22 -33
  27. package/src/version.js +1 -1
  28. package/src/common/AbstractPlugin.js +0 -17
@@ -8,43 +8,7 @@ Ext.define('Coon.report.component.report.NorthPanel', {
8
8
  type: 'vbox',
9
9
  align: 'stretch',
10
10
  },
11
- tbar: {
12
- hidden: true,
13
- xtype: 'panel',
14
- height: 20,
15
- reference: 'tbar',
16
- layout: {
17
- type: 'hbox',
18
- align: 'stretch',
19
- },
20
- items: [
21
- {
22
- xtype: 'container',
23
- reference: 'allowBlankDescription',
24
- margin: '0 18px',
25
- },
26
- {
27
- xtype: 'tbfill',
28
- },
29
- {
30
- xtype: 'button',
31
- cls: 'x-unselectable btn-toggle',
32
- style: {
33
- backgroundColor: 'transparent!important',
34
- marginRight: '8px',
35
- },
36
- scale: 'small',
37
- hidden: true,
38
- reference: 'toggleBtn',
39
- enableToggle: true,
40
- iconCls: 'x-fa fa-toggle-on activeToggle',
41
- focusOnToFront: false,
42
- handler: function(cmp) {
43
- cmp.up('NorthPanel').onExpanderClick(cmp);
44
- },
45
- }
46
- ],
47
- },
11
+
48
12
  requires: [
49
13
  'Coon.Function',
50
14
  'Coon.report.component.SimplestReportCombo',
@@ -53,28 +17,43 @@ Ext.define('Coon.report.component.report.NorthPanel', {
53
17
  'Ext.layout.container.HBox',
54
18
  'Coon.report.component.reportpanel.FilterPanel'
55
19
  ],
20
+
56
21
  uses: [],
22
+
57
23
  config: {
58
24
  hideFilterPanel: false,
59
25
  hideFilterButtons: false,
60
26
  enableHighlightingRequiredFields: false,
61
27
  enableChipToolbar: false,
62
28
  },
63
- onExpanderClick(btn) {
64
- btn.setIconCls(btn.pressed ? 'fa fa-toggle-on fa-rotate-180 inactiveToggle' : 'x-fa fa-toggle-on activeToggle');
65
- btn.up().down('[reference=allowBlankDescription]').setHidden(btn.pressed);
66
- if (btn.pressed) {
67
- this.setHeight(null);
68
- }
69
- this.filterContainer.setHidden(btn.pressed);
70
- if (!btn.pressed) {
71
- this.setHeight(this.getHeight());
72
- }
29
+
30
+ sideFilterConfig: {
31
+ windowWidth: 400,
32
+ windowPadding: 8,
33
+ minWidth: 326,
34
+ maxWidth: 1282,
73
35
  },
36
+
37
+ viewModel: {
38
+ parent: null,
39
+ data: {},
40
+ },
41
+
42
+ sideFilterPanelConfig: {
43
+ enable: true,
44
+ dockToComponent: undefined,
45
+ ownerContainer: undefined,
46
+ },
47
+
74
48
  initComponent() {
49
+ this.vm = this.getViewModel();
75
50
  this.searchButton = Ext.widget('splitbutton', Ext.apply({
76
51
  ui: 'orange-button-ext',
77
52
  text: 'Поиск',
53
+ bind: {
54
+ disabled: '{!enableSearch}',
55
+ tooltip: '{searchButtonTooltip}',
56
+ },
78
57
  }, this.findButtonConfig || {}));
79
58
 
80
59
  // arrowVisible is not working, so we need this hack
@@ -89,7 +68,6 @@ Ext.define('Coon.report.component.report.NorthPanel', {
89
68
  }, this.clearButtonConfig || {}));
90
69
 
91
70
  this.buttonsContainer = Ext.widget('panel', Ext.apply({
92
- // margin: '10 0',
93
71
  autoHeight: true,
94
72
  layout: {
95
73
  type: 'hbox',
@@ -112,6 +90,15 @@ Ext.define('Coon.report.component.report.NorthPanel', {
112
90
  autoHeight: true,
113
91
  });
114
92
 
93
+ this.legendContainer = Ext.widget('container', {
94
+ height: 16,
95
+ padding: '2 30 0 0',
96
+ layout: {
97
+ type: 'hbox',
98
+ pack: 'end',
99
+ },
100
+ });
101
+
115
102
  this.items = [
116
103
  {
117
104
  xtype: 'container',
@@ -125,6 +112,7 @@ Ext.define('Coon.report.component.report.NorthPanel', {
125
112
  this.buttonsContainer
126
113
  ],
127
114
  },
115
+ this.legendContainer,
128
116
  {
129
117
  xtype: 'container',
130
118
  reference: 'bottomContainer',
@@ -141,12 +129,27 @@ Ext.define('Coon.report.component.report.NorthPanel', {
141
129
 
142
130
  this.on('afterrender', function() {
143
131
  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);
132
+ this.searchButton.handler = this.getSearchHandler();
133
+ this.clearButton.handler = this.getClearHandler();
149
134
  }, this);
135
+
136
+ this.sideFilter = Ext.create({
137
+ xtype: 'SideFilterPanel',
138
+ northPanel: this,
139
+ sideFilterPanelConfig: this.sideFilterPanelConfig,
140
+ vm: this.vm,
141
+ });
142
+ },
143
+
144
+ getSearchHandler() {
145
+ return this.reportPanel ? Ext.bind(this.reportPanel.filterHandler, this.reportPanel) : Ext.emptyFn;
146
+ },
147
+
148
+ getClearHandler() {
149
+ return Ext.bind(function() {
150
+ this.clearFilter();
151
+ this.clearData();
152
+ }, this.reportPanel);
150
153
  },
151
154
 
152
155
  getFields() {
@@ -163,33 +166,31 @@ Ext.define('Coon.report.component.report.NorthPanel', {
163
166
  },
164
167
 
165
168
  configureFilterPanel: function(reportFormBean) {
166
- const report = this.up('ReportPanel');
167
- const properties = report && report.configProperties ||
169
+ this.reportPanel = this.reportPanel || this.up('ReportPanel');
170
+ const properties = this.reportPanel && this.reportPanel.configProperties ||
168
171
  Coon.Function.convertAdvancedProperties(reportFormBean.properties) || {};
169
172
  Ext.merge(this, properties);
170
- this.filterPlugins.push({
171
- ptype: 'EnterConfirmFormPlugin',
172
- confirmHandler: report ? Ext.bind(report.filterHandler, report) : Ext.emptyFn,
173
- });
174
- this.filterPlugins.push(Ext.apply({
175
- ptype: 'FormFieldFocusPlugin',
176
- }, properties.formFieldFocusPluginConfig || {}, {defaultFocusFirstField: true}));
173
+
174
+ this.filterPlugins.push(...this.getDefaultFilterPanelPlugins());
177
175
 
178
176
  const [enableHighlightingRequiredFields, hiddenLegend] = this.hasPropertiesFilterPanel(reportFormBean.plugins, properties);
179
177
  this.hiddenLegend = !!hiddenLegend;
180
178
  this.enableHighlightingRequiredFields = enableHighlightingRequiredFields;
181
- const filterPanel = Ext.widget('FilterPanel', {
179
+
180
+ const filterPanelConfig = {
182
181
  configurationList: reportFormBean.parameters,
183
182
  itemsOnRow: properties['filterItemsOnRow'] || 2,
184
183
  enableHighlightingRequiredFields,
185
184
  plugins: this.filterPlugins,
186
- });
187
- this.filterPanel = filterPanel;
185
+ };
188
186
 
189
- this.on('searchbuttontoggle', function(isValid, errorMessage) {
190
- this.searchButton.setDisabled(!isValid);
191
- this.searchButton.setTooltip(!isValid ? errorMessage : '');
192
- }, this);
187
+ const getFiltersFromPlugin = !!this.filterPlugins.find((plugin) => plugin.ptype === 'FilterFormEditingPlugin');
188
+ if (getFiltersFromPlugin) {
189
+ filterPanelConfig.configurationList = [];
190
+ }
191
+
192
+ const filterPanel = Ext.widget('FilterPanel', filterPanelConfig);
193
+ this.filterPanel = filterPanel;
193
194
 
194
195
  this.filterContainer.removeAll();
195
196
  filterPanel.on('afterlayoutanimation', function(cmp) {
@@ -211,6 +212,18 @@ Ext.define('Coon.report.component.report.NorthPanel', {
211
212
  this.changeTbarStates();
212
213
  },
213
214
 
215
+ getDefaultFilterPanelPlugins() {
216
+ return [
217
+ {
218
+ ptype: 'EnterConfirmFormPlugin',
219
+ confirmHandler: this.reportPanel ? Ext.bind(this.reportPanel.filterHandler, this.reportPanel) : Ext.emptyFn,
220
+ },
221
+ Ext.apply({
222
+ ptype: 'FormFieldFocusPlugin',
223
+ }, this.formFieldFocusPluginConfig || {}, {defaultFocusFirstField: true})
224
+ ];
225
+ },
226
+
214
227
  recalculateHeight(filterPanelHeight) {
215
228
  this.setHeight(Math.max(filterPanelHeight, this.minimalHeight) + this.tbarsHeight);
216
229
  },
@@ -219,44 +232,51 @@ Ext.define('Coon.report.component.report.NorthPanel', {
219
232
  if (!this.items) {
220
233
  return;
221
234
  }
222
- const tbar = this.down('[reference="tbar"]');
223
235
  const bottomContainer = this.down('[reference="bottomContainer"]');
224
236
  let tbarsHeight = 0;
225
- const tbarH = 20;
226
237
  const bottomContainerH = 30;
227
- if (!tbar || !bottomContainer || this.hideFilterPanel) {
238
+ if (!bottomContainer || this.hideFilterPanel) {
228
239
  return;
229
240
  }
230
241
  if (this.enableHighlightingRequiredFields || this.getEnableChipToolbar()) {
231
- tbarsHeight += tbarH + 10;
232
- tbar.show();
242
+ tbarsHeight += 16;
233
243
  if (this.isLegendHidden() && this.enableHighlightingRequiredFields && !this.legend) {
234
244
  this.legend = this.buildLegend();
235
- tbar.down('[reference="allowBlankDescription"]').add(this.legend);
245
+ this.legendContainer.add(this.legend);
236
246
  }
237
247
  } else {
238
- tbar.hide();
248
+ this.legendContainer.hide();
239
249
  }
250
+
251
+ if (!this.filterPanelBtnContainer && this.sideFilter.checkSideFilterPanelEnable()) {
252
+ this.filterPanelBtnContainer = this.sideFilter.getSideFilterButtonContainer(this.toggleNorthPanelFilterHidden.bind(this));
253
+ bottomContainer.add(this.filterPanelBtnContainer);
254
+ this.sideFilter.sideFilterAutoShow = !this.reportPanel.autoFilter;
255
+ }
256
+
240
257
  if (!this.filterConditionToolbar) {
241
258
  this.filterConditionToolbar = Ext.widget('FilterConditionToolbar', {
242
259
  flex: 1,
243
260
  closableFilterCondition: false,
244
261
  searchForm: this,
262
+ height: 36,
245
263
  });
246
264
  bottomContainer.add(this.filterConditionToolbar);
247
265
  this.chipsInit();
248
266
  }
249
267
  if (this.getEnableChipToolbar()) {
250
- this.down('[reference="toggleBtn"]').show();
251
268
  bottomContainer.show();
252
269
  this.filterConditionToolbar.show();
253
270
  if (!this.buttonsContainer.hidden) {
254
271
  bottomContainer.add(this.buttonsContainer);
255
272
  }
273
+ this.buttonsContainer.setLayout({
274
+ type: 'hbox',
275
+ align: 'middle',
276
+ });
256
277
  tbarsHeight += bottomContainerH;
257
278
  this.filterConditionToolbar.getController().addChangeReaction();
258
279
  } else {
259
- this.down('[reference="toggleBtn"]').hide();
260
280
  bottomContainer.hide();
261
281
  if (!this.buttonsContainer.hidden) {
262
282
  this.down('[reference="topContainer"]').add(this.buttonsContainer);
@@ -268,10 +288,17 @@ Ext.define('Coon.report.component.report.NorthPanel', {
268
288
  }
269
289
  },
270
290
 
291
+ toggleNorthPanelFilterHidden(btn) {
292
+ this.filterPanel[btn.pressed ? 'hide' : 'show']();
293
+ this.legendContainer[btn.pressed ? 'hide' : 'show']();
294
+ this.buttonsContainer.setHidden(btn.pressed);
295
+ },
296
+
271
297
  setEnableChipToolbar(enableChipToolbar) {
272
298
  this.enableChipToolbar = enableChipToolbar;
273
299
  this.changeTbarStates();
274
300
  },
301
+
275
302
  getEnableChipToolbar() {
276
303
  return this.enableChipToolbar;
277
304
  },
@@ -300,32 +327,38 @@ Ext.define('Coon.report.component.report.NorthPanel', {
300
327
  this.filterConditionToolbar.fireEvent('rememberconditions');
301
328
  }
302
329
  }, this);
330
+
331
+ this.filterConditionToolbar.on('unusableChips', (count) => {
332
+ this.sideFilter.sideFilterAutoShow = count > 0;
333
+ });
303
334
  }
304
335
  },
336
+
305
337
  onChipDelete: function(reportPanel) {
306
338
  if (!reportPanel) {
307
339
  return;
308
340
  }
309
341
  reportPanel.filterHandler();
310
342
  },
343
+
311
344
  /**
312
345
  * Активация деактивация кнопки поиска и изменение тултипа легенды.
313
346
  * @param {boolean} isValid валидность формы
314
347
  * @param {string} msg сообщение о невалидности
315
348
  */
316
349
  searchButtonToggle(isValid, msg) {
317
- if (this.isLegendHidden() && this.legend) {
318
- this.legend.setTooltipMsg(isValid ? '': msg);
319
- this.legend.fireEvent('validitychange', isValid);
320
- }
321
- this.fireEvent('searchbuttontoggle', isValid, 'Обязательные поля не заполнены!');
350
+ this.vm.set('enableSearch', isValid);
351
+ this.vm.set('searchButtonTooltip', !isValid ? 'Обязательные поля не заполнены!' : '');
352
+ this.vm.set('validityLegendValid', isValid);
353
+ this.vm.set('validityLegendMsg', !isValid ? msg : '');
322
354
  },
355
+
323
356
  /**
324
357
  * Создание легенды к форме фильтра
325
358
  * @returns {Ext.Component}
326
359
  */
327
360
  buildLegend() {
328
- const legend = Ext.widget('FilterPanelLegend');
361
+ const legend = Ext.widget(this.getLegendConfig());
329
362
  const filterPanel = this.down('FilterPanel');
330
363
  legend.on('boxready', filterPanel.validateRequired, filterPanel);
331
364
  return legend;
@@ -377,8 +410,8 @@ Ext.define('Coon.report.component.report.NorthPanel', {
377
410
  }
378
411
  },
379
412
 
380
- fillFilter(useURIParameters, params, filterDefaults) {
381
- const fields = this.getFields();
413
+ fillFilter(useURIParameters, params, filterDefaults, fields) {
414
+ fields = fields || this.getFields();
382
415
  // Простановка переданых параметров фильтров
383
416
  filterDefaults = Ext.apply({}, params, filterDefaults);
384
417
  for (let i = 0; i < fields.length; i++) {
@@ -395,18 +428,6 @@ Ext.define('Coon.report.component.report.NorthPanel', {
395
428
  }
396
429
  },
397
430
 
398
- togglePanel(tool) {
399
- if (this.isHidden()) {
400
- this.show();
401
- tool.setIconCls('x-fa fa-eye-slash');
402
- tool.setTooltip(tool.tooltipTexts.show);
403
- } else {
404
- this.hide();
405
- tool.setIconCls('x-fa fa-eye');
406
- tool.setTooltip(tool.tooltipTexts.hide);
407
- }
408
- },
409
-
410
431
  addToSearchButtonMenu(menuItems = []) {
411
432
  if (!menuItems) {
412
433
  return;
@@ -432,7 +453,20 @@ Ext.define('Coon.report.component.report.NorthPanel', {
432
453
  this.searchButton.btnWrap.addCls(this.searchButton.getSplitCls());
433
454
  }
434
455
  },
456
+
435
457
  onChipDeleteHandler() {
436
458
  Coon.log.debug('onChipDeleteHandler', 'Удалили чип, делаем поиск');
437
459
  },
460
+
461
+ getLegendConfig() {
462
+ return {
463
+ xtype: 'FilterPanelLegend',
464
+ height: 20,
465
+ hidden: true,
466
+ bind: {
467
+ validity: '{validityLegendValid}',
468
+ tooltipMsg: '{validityLegendMsg}',
469
+ },
470
+ };
471
+ },
438
472
  });
@@ -1,4 +1,3 @@
1
-
2
1
  .NorthPanel{
3
2
  .activeToggle{
4
3
  color: #A9A9A9;
@@ -17,10 +16,80 @@
17
16
  margin: 0 4px 0 0 !important;
18
17
  }
19
18
 
19
+ .x-btn-icon-el-green-button-ext-small,
20
+ .x-btn-icon-el-orange-button-ext-small {
21
+ min-width: 16px !important;
22
+ min-height: 16px !important;
23
+ mask-size: 16px !important;
24
+ -webkit-mask-size: 16px !important;
25
+ }
26
+
27
+ .filterPanelBtn {
28
+ border: 1px solid #888888;
29
+ border-radius: 5px;
30
+ padding: 4px;
31
+ background-color: #fff;
32
+ width: 26px;
33
+ height: 26px;
34
+
35
+ &.x-btn-pressed, &.x-btn-focus, &.x-btn-default-small.x-btn-pressed.x-btn-focus {
36
+ background-color: #fff;
37
+ border-color: #888;
38
+ }
39
+
40
+ &.toggle-filter-show-btn {
41
+ padding: 5px;
42
+ &._pressed {
43
+ box-shadow: inset 0px 0px 4px #bdbdbd;
44
+ }
45
+ }
46
+
47
+ .filter-toolbar-iconCls {
48
+ mask-size: 16px;
49
+ -webkit-mask-size: 16px;
50
+ mask-repeat: no-repeat;
51
+ -webkit-mask-repeat: no-repeat;
52
+ background-color: #888888;
53
+ }
54
+
55
+ .toggle-filter-position-iconBtn {
56
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTguNjY2NjcgMkM5LjAzNDg2IDIgOS4zMzMzMyAyLjI5ODQ4IDkuMzMzMzMgMi42NjY2N1YxMy4zMzMzTDkuMzMwMDggMTMuNDAxN0M5LjI5ODE0IDEzLjcxNTMgOS4wNDg2NCAxMy45NjQ4IDguNzM1MDMgMTMuOTk2N0w4LjY2NjY3IDE0SDIuNjY2NjdMMi41OTgzMSAxMy45OTY3QzIuMjg0NjkgMTMuOTY0OCAyLjAzNTE5IDEzLjcxNTMgMi4wMDMyNiAxMy40MDE3TDIgMTMuMzMzM1YyLjY2NjY3QzIgMi4yOTg0OCAyLjI5ODQ4IDIgMi42NjY2NyAySDguNjY2NjdaTTEzLjMzMzMgMkMxMy43MDE1IDIgMTQgMi4yOTg0OCAxNCAyLjY2NjY3VjEzLjMzMzNMMTMuOTk2NyAxMy40MDE3QzEzLjk2NDggMTMuNzE1MyAxMy43MTUzIDEzLjk2NDggMTMuNDAxNyAxMy45OTY3TDEzLjMzMzMgMTRIMTEuMzMzM0wxMS4yNjUgMTMuOTk2N0MxMC45NTE0IDEzLjk2NDggMTAuNzAxOSAxMy43MTUzIDEwLjY2OTkgMTMuNDAxN0wxMC42NjY3IDEzLjMzMzNWMi42NjY2N0MxMC42NjY3IDIuMjk4NDggMTAuOTY1MSAyIDExLjMzMzMgMkgxMy4zMzMzWk0zLjMzMzMzIDEyLjY2NjdIOFYzLjMzMzMzSDMuMzMzMzNWMTIuNjY2N1pNMTIgMTIuNjY2N0gxMi42NjY3VjMuMzMzMzNIMTJWMTIuNjY2N1oiIGZpbGw9IiM4ODg4ODgiLz4KPC9zdmc+Cg==");
57
+ -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTguNjY2NjcgMkM5LjAzNDg2IDIgOS4zMzMzMyAyLjI5ODQ4IDkuMzMzMzMgMi42NjY2N1YxMy4zMzMzTDkuMzMwMDggMTMuNDAxN0M5LjI5ODE0IDEzLjcxNTMgOS4wNDg2NCAxMy45NjQ4IDguNzM1MDMgMTMuOTk2N0w4LjY2NjY3IDE0SDIuNjY2NjdMMi41OTgzMSAxMy45OTY3QzIuMjg0NjkgMTMuOTY0OCAyLjAzNTE5IDEzLjcxNTMgMi4wMDMyNiAxMy40MDE3TDIgMTMuMzMzM1YyLjY2NjY3QzIgMi4yOTg0OCAyLjI5ODQ4IDIgMi42NjY2NyAySDguNjY2NjdaTTEzLjMzMzMgMkMxMy43MDE1IDIgMTQgMi4yOTg0OCAxNCAyLjY2NjY3VjEzLjMzMzNMMTMuOTk2NyAxMy40MDE3QzEzLjk2NDggMTMuNzE1MyAxMy43MTUzIDEzLjk2NDggMTMuNDAxNyAxMy45OTY3TDEzLjMzMzMgMTRIMTEuMzMzM0wxMS4yNjUgMTMuOTk2N0MxMC45NTE0IDEzLjk2NDggMTAuNzAxOSAxMy43MTUzIDEwLjY2OTkgMTMuNDAxN0wxMC42NjY3IDEzLjMzMzNWMi42NjY2N0MxMC42NjY3IDIuMjk4NDggMTAuOTY1MSAyIDExLjMzMzMgMkgxMy4zMzMzWk0zLjMzMzMzIDEyLjY2NjdIOFYzLjMzMzMzSDMuMzMzMzNWMTIuNjY2N1pNMTIgMTIuNjY2N0gxMi42NjY3VjMuMzMzMzNIMTJWMTIuNjY2N1oiIGZpbGw9IiM4ODg4ODgiLz4KPC9zdmc+Cg==");
58
+ }
59
+
60
+ .toggle-filter-show-iconBtn {
61
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTciIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNyAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTMuMzg2MzkgMi42NjY1OUw3LjcwNzcyIDguMDY3MjVDNy44OTY4OCA4LjMwMzggNy45OTk4NyA4LjU5NzcgNy45OTk3MiA4LjkwMDU5VjEzLjMzMzNMOS4zMzMwNiAxMi4zMzMzVjguODk5OTJDOS4zMzMwNyA4LjU5NzI3IDkuNDM2MDQgOC4zMDM2MiA5LjYyNTA2IDguMDY3MjVMMTMuOTQ2NCAyLjY2NjU5SDMuMzg2MzlaTTMuMzg2MzkgMS4zMzMyNUgxMy45NDY0QzE0LjE5NzYgMS4zMzMyOCAxNC40NDM2IDEuNDA0MjcgMTQuNjU2MyAxLjUzODAzQzE0Ljg2ODkgMS42NzE3OSAxNS4wMzk0IDEuODYyODkgMTUuMTQ4MSAyLjA4OTMxQzE1LjI1NjkgMi4zMTU3MyAxNS4yOTk0IDIuNTY4MjcgMTUuMjcxIDIuODE3ODNDMTUuMjQyNSAzLjA2NzQgMTUuMTQ0IDMuMzAzODQgMTQuOTg3MSAzLjQ5OTkyTDEwLjY2NjQgOC44OTk5MlYxMi4zMzMzQzEwLjY2NjQgMTIuNTQwMiAxMC42MTgyIDEyLjc0NDQgMTAuNTI1NiAxMi45Mjk1QzEwLjQzMzEgMTMuMTE0NyAxMC4yOTg3IDEzLjI3NTcgMTAuMTMzMSAxMy4zOTk5TDguNzk5NzIgMTQuMzk5OUM4LjYwMTYzIDE0LjU0ODUgOC4zNjYwOCAxNC42MzkgOC4xMTk0NiAxNC42NjEyQzcuODcyODUgMTQuNjgzNCA3LjYyNDkxIDE0LjYzNjYgNy40MDM0NCAxNC41MjU4QzcuMTgxOTYgMTQuNDE1MSA2Ljk5NTcgMTQuMjQ0OSA2Ljg2NTUyIDE0LjAzNDJDNi43MzUzNCAxMy44MjM2IDYuNjY2MzkgMTMuNTgwOSA2LjY2NjM5IDEzLjMzMzNWOC44OTk5MkwyLjM0NTcyIDMuNDk5OTJDMi4xODg3MyAzLjMwMzg0IDIuMDkwMzIgMy4wNjc0IDIuMDYxODMgMi44MTc4M0MyLjAzMzM0IDIuNTY4MjcgMi4wNzU5MiAyLjMxNTczIDIuMTg0NjcgMi4wODkzMUMyLjI5MzQyIDEuODYyODkgMi40NjM5MiAxLjY3MTc5IDIuNjc2NTMgMS41MzgwM0MyLjg4OTE0IDEuNDA0MjcgMy4xMzUyIDEuMzMzMjggMy4zODYzOSAxLjMzMzI1WiIgZmlsbD0iIzg4ODg4OCIvPgo8L3N2Zz4K");
62
+ -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTciIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNyAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTMuMzg2MzkgMi42NjY1OUw3LjcwNzcyIDguMDY3MjVDNy44OTY4OCA4LjMwMzggNy45OTk4NyA4LjU5NzcgNy45OTk3MiA4LjkwMDU5VjEzLjMzMzNMOS4zMzMwNiAxMi4zMzMzVjguODk5OTJDOS4zMzMwNyA4LjU5NzI3IDkuNDM2MDQgOC4zMDM2MiA5LjYyNTA2IDguMDY3MjVMMTMuOTQ2NCAyLjY2NjU5SDMuMzg2MzlaTTMuMzg2MzkgMS4zMzMyNUgxMy45NDY0QzE0LjE5NzYgMS4zMzMyOCAxNC40NDM2IDEuNDA0MjcgMTQuNjU2MyAxLjUzODAzQzE0Ljg2ODkgMS42NzE3OSAxNS4wMzk0IDEuODYyODkgMTUuMTQ4MSAyLjA4OTMxQzE1LjI1NjkgMi4zMTU3MyAxNS4yOTk0IDIuNTY4MjcgMTUuMjcxIDIuODE3ODNDMTUuMjQyNSAzLjA2NzQgMTUuMTQ0IDMuMzAzODQgMTQuOTg3MSAzLjQ5OTkyTDEwLjY2NjQgOC44OTk5MlYxMi4zMzMzQzEwLjY2NjQgMTIuNTQwMiAxMC42MTgyIDEyLjc0NDQgMTAuNTI1NiAxMi45Mjk1QzEwLjQzMzEgMTMuMTE0NyAxMC4yOTg3IDEzLjI3NTcgMTAuMTMzMSAxMy4zOTk5TDguNzk5NzIgMTQuMzk5OUM4LjYwMTYzIDE0LjU0ODUgOC4zNjYwOCAxNC42MzkgOC4xMTk0NiAxNC42NjEyQzcuODcyODUgMTQuNjgzNCA3LjYyNDkxIDE0LjYzNjYgNy40MDM0NCAxNC41MjU4QzcuMTgxOTYgMTQuNDE1MSA2Ljk5NTcgMTQuMjQ0OSA2Ljg2NTUyIDE0LjAzNDJDNi43MzUzNCAxMy44MjM2IDYuNjY2MzkgMTMuNTgwOSA2LjY2NjM5IDEzLjMzMzNWOC44OTk5MkwyLjM0NTcyIDMuNDk5OTJDMi4xODg3MyAzLjMwMzg0IDIuMDkwMzIgMy4wNjc0IDIuMDYxODMgMi44MTc4M0MyLjAzMzM0IDIuNTY4MjcgMi4wNzU5MiAyLjMxNTczIDIuMTg0NjcgMi4wODkzMUMyLjI5MzQyIDEuODYyODkgMi40NjM5MiAxLjY3MTc5IDIuNjc2NTMgMS41MzgwM0MyLjg4OTE0IDEuNDA0MjcgMy4xMzUyIDEuMzMzMjggMy4zODYzOSAxLjMzMzI1WiIgZmlsbD0iIzg4ODg4OCIvPgo8L3N2Zz4K");
63
+ }
64
+ &.toggle-filter-position-btn {
65
+ position: relative;
66
+ overflow: visible;
67
+
68
+ &._pressed {
69
+ .filter-toolbar-iconCls {
70
+ transform: rotate(-90deg);
71
+ }
72
+ }
73
+
74
+ &:after {
75
+ content: '';
76
+ position: absolute;
77
+ top: -1px;
78
+ right: -12px;
79
+ height: 26px;
80
+ width: 0px;
81
+ border: solid 1px #D3D3D3;
82
+ border-radius: 5px;
83
+ }
84
+ }
85
+ }
86
+ }
87
+
88
+ .NorthPanel, .SideFilterWindow, .SideFilterPanel {
20
89
  @include sigma-button-small-ui(
21
90
  $ui: 'orange-button-ext',
22
91
  $background-color: $base-color-light,
23
- $border-radius: 6px,
92
+ $border-radius: 5px,
24
93
  $border-width: 1px,
25
94
  $border-color: $base-color-light,
26
95
  $border-color-disabled: lighten($base-color-light, 20%),
@@ -33,8 +102,8 @@
33
102
  $background-color-disabled: lighten($base-color-light, 20%),
34
103
  $icon-size: 16px,
35
104
  $font-size: 12px,
36
- $padding: 6px 12px,
37
- //$text-padding: 2px
105
+ $padding: 5px 10px,
106
+ //$text-padding: 2px
38
107
  );
39
108
 
40
109
  @include sigma-button-small-ui(
@@ -44,7 +113,7 @@
44
113
  $iconColor : $base-color-light,
45
114
  $border-width: 1px,
46
115
  $inner-border-width-focus: 2px,
47
- $border-radius: 6px,
116
+ $border-radius: 5px,
48
117
  $border-color: $base-color-light,
49
118
  $border-color-disabled: lighten($base-color-light, 20%),
50
119
  $color-over: white,
@@ -61,7 +130,7 @@
61
130
  $background-color-disabled: transparent,
62
131
  $icon-size: 16px,
63
132
  $font-size: 12px,
64
- $padding: 6px 12px,
133
+ $padding: 5px 10px,
65
134
  );
66
135
  .x-btn-icon-el-green-button-ext-small,
67
136
  .x-btn-icon-el-orange-button-ext-small {
@@ -57,7 +57,6 @@ Ext.define('Coon.report.component.reportpanel.ReportGrid', {
57
57
  try {
58
58
  this.addPlugin(plugin);
59
59
  } catch (e) {
60
- console.error('plugin error', e);
61
60
  pluginErrors.push(e.message);
62
61
  }
63
62
  });