tabulator-tables 5.2.7 → 5.3.2
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/.eslintignore +3 -0
- package/.eslintrc.js +28 -0
- package/.github/workflows/bad-files-check.yml +39 -0
- package/.github/workflows/lint-and-test.yml +31 -0
- package/README.md +3 -3
- package/bower.json +1 -1
- package/build/Bundler.js +77 -77
- package/dist/css/tabulator.css +12 -7
- package/dist/css/tabulator.css.map +1 -1
- package/dist/css/tabulator.min.css +1 -1
- package/dist/css/tabulator.min.css.map +1 -1
- package/dist/css/tabulator_bootstrap3.css +12 -7
- package/dist/css/tabulator_bootstrap3.css.map +1 -1
- package/dist/css/tabulator_bootstrap3.min.css +1 -1
- package/dist/css/tabulator_bootstrap3.min.css.map +1 -1
- package/dist/css/tabulator_bootstrap4.css +12 -7
- package/dist/css/tabulator_bootstrap4.css.map +1 -1
- package/dist/css/tabulator_bootstrap4.min.css +1 -1
- package/dist/css/tabulator_bootstrap4.min.css.map +1 -1
- package/dist/css/tabulator_bootstrap5.css +12 -7
- package/dist/css/tabulator_bootstrap5.css.map +1 -1
- package/dist/css/tabulator_bootstrap5.min.css +1 -1
- package/dist/css/tabulator_bootstrap5.min.css.map +1 -1
- package/dist/css/tabulator_bulma.css +12 -7
- package/dist/css/tabulator_bulma.css.map +1 -1
- package/dist/css/tabulator_bulma.min.css +1 -1
- package/dist/css/tabulator_bulma.min.css.map +1 -1
- package/dist/css/tabulator_materialize.css +12 -7
- package/dist/css/tabulator_materialize.css.map +1 -1
- package/dist/css/tabulator_materialize.min.css +1 -1
- package/dist/css/tabulator_materialize.min.css.map +1 -1
- package/dist/css/tabulator_midnight.css +12 -7
- package/dist/css/tabulator_midnight.css.map +1 -1
- package/dist/css/tabulator_midnight.min.css +1 -1
- package/dist/css/tabulator_midnight.min.css.map +1 -1
- package/dist/css/tabulator_modern.css +12 -7
- package/dist/css/tabulator_modern.css.map +1 -1
- package/dist/css/tabulator_modern.min.css +1 -1
- package/dist/css/tabulator_modern.min.css.map +1 -1
- package/dist/css/tabulator_semanticui.css +12 -7
- package/dist/css/tabulator_semanticui.css.map +1 -1
- package/dist/css/tabulator_semanticui.min.css +1 -1
- package/dist/css/tabulator_semanticui.min.css.map +1 -1
- package/dist/css/tabulator_simple.css +12 -7
- package/dist/css/tabulator_simple.css.map +1 -1
- package/dist/css/tabulator_simple.min.css +1 -1
- package/dist/css/tabulator_simple.min.css.map +1 -1
- package/dist/css/tabulator_site.css +12 -7
- package/dist/css/tabulator_site.css.map +1 -1
- package/dist/css/tabulator_site.min.css +1 -1
- package/dist/css/tabulator_site.min.css.map +1 -1
- package/dist/js/jquery_wrapper.js +37 -37
- package/dist/js/tabulator.js +1551 -793
- package/dist/js/tabulator.js.map +1 -1
- package/dist/js/tabulator.min.js +2 -2
- package/dist/js/tabulator.min.js.map +1 -1
- package/dist/js/tabulator_esm.js +4300 -3581
- package/dist/js/tabulator_esm.js.map +1 -1
- package/dist/js/tabulator_esm.min.js +2 -2
- package/dist/js/tabulator_esm.min.js.map +1 -1
- package/package.json +4 -1
- package/src/js/builds/jquery_wrapper.js +37 -37
- package/src/js/core/ColumnManager.js +270 -232
- package/src/js/core/CoreFeature.js +16 -2
- package/src/js/core/FooterManager.js +10 -10
- package/src/js/core/Module.js +8 -8
- package/src/js/core/RowManager.js +139 -156
- package/src/js/core/Tabulator.js +88 -74
- package/src/js/core/TabulatorFull.js +1 -1
- package/src/js/core/cell/Cell.js +15 -16
- package/src/js/core/cell/CellComponent.js +2 -2
- package/src/js/core/column/Column.js +81 -68
- package/src/js/core/column/ColumnComponent.js +4 -4
- package/src/js/core/column/defaults/options.js +1 -1
- package/src/js/core/defaults/options.js +4 -2
- package/src/js/core/rendering/Renderer.js +19 -19
- package/src/js/core/rendering/renderers/BasicHorizontal.js +1 -2
- package/src/js/core/rendering/renderers/BasicVertical.js +1 -1
- package/src/js/core/rendering/renderers/VirtualDomHorizontal.js +42 -58
- package/src/js/core/rendering/renderers/VirtualDomVertical.js +31 -22
- package/src/js/core/row/Row.js +32 -8
- package/src/js/core/row/RowComponent.js +8 -4
- package/src/js/core/tools/Alert.js +44 -45
- package/src/js/core/tools/ComponentFunctionBinder.js +4 -2
- package/src/js/core/tools/DataLoader.js +3 -3
- package/src/js/core/tools/DeprecationAdvisor.js +47 -0
- package/src/js/core/tools/ExternalEventBus.js +5 -5
- package/src/js/core/tools/InteractionMonitor.js +41 -39
- package/src/js/core/tools/InternalEventBus.js +5 -5
- package/src/js/core/tools/ModuleBinder.js +6 -6
- package/src/js/core/tools/OptionsList.js +4 -4
- package/src/js/core/tools/Popup.js +211 -202
- package/src/js/modules/Accessor/Accessor.js +16 -16
- package/src/js/modules/Accessor/defaults/accessors.js +1 -1
- package/src/js/modules/Ajax/Ajax.js +7 -7
- package/src/js/modules/Ajax/defaults/loaderPromise.js +19 -19
- package/src/js/modules/Ajax/defaults/urlGenerator.js +1 -1
- package/src/js/modules/Clipboard/Clipboard.js +23 -23
- package/src/js/modules/Clipboard/defaults/pasteParsers.js +0 -2
- package/src/js/modules/ColumnCalcs/CalcComponent.js +2 -2
- package/src/js/modules/ColumnCalcs/ColumnCalcs.js +55 -51
- package/src/js/modules/ColumnCalcs/defaults/calculations.js +1 -1
- package/src/js/modules/DataTree/DataTree.js +24 -15
- package/src/js/modules/Download/Download.js +15 -8
- package/src/js/modules/Download/defaults/downloaders/csv.js +28 -28
- package/src/js/modules/Download/defaults/downloaders/html.js +2 -2
- package/src/js/modules/Download/defaults/downloaders/json.js +14 -14
- package/src/js/modules/Download/defaults/downloaders/jsonLines.js +1 -1
- package/src/js/modules/Download/defaults/downloaders/pdf.js +17 -19
- package/src/js/modules/Download/defaults/downloaders/xlsx.js +2 -2
- package/src/js/modules/Edit/Edit.js +219 -201
- package/src/js/modules/Edit/List.js +1026 -1006
- package/src/js/modules/Edit/defaults/editors/autocomplete.js +3 -3
- package/src/js/modules/Edit/defaults/editors/date.js +110 -0
- package/src/js/modules/Edit/defaults/editors/datetime.js +97 -0
- package/src/js/modules/Edit/defaults/editors/input.js +7 -7
- package/src/js/modules/Edit/defaults/editors/list.js +2 -2
- package/src/js/modules/Edit/defaults/editors/number.js +12 -12
- package/src/js/modules/Edit/defaults/editors/progress.js +11 -11
- package/src/js/modules/Edit/defaults/editors/range.js +5 -5
- package/src/js/modules/Edit/defaults/editors/select.js +3 -3
- package/src/js/modules/Edit/defaults/editors/star.js +9 -9
- package/src/js/modules/Edit/defaults/editors/textarea.js +97 -92
- package/src/js/modules/Edit/defaults/editors/tickCross.js +1 -3
- package/src/js/modules/Edit/defaults/editors/time.js +98 -0
- package/src/js/modules/Edit/defaults/editors.js +8 -2
- package/src/js/modules/Edit/inputMask.js +19 -26
- package/src/js/modules/Export/Export.js +69 -65
- package/src/js/modules/Filter/Filter.js +88 -95
- package/src/js/modules/Format/Format.js +24 -26
- package/src/js/modules/Format/defaults/formatters/buttonCross.js +1 -1
- package/src/js/modules/Format/defaults/formatters/buttonTick.js +1 -1
- package/src/js/modules/Format/defaults/formatters/color.js +1 -1
- package/src/js/modules/Format/defaults/formatters/datetime.js +7 -7
- package/src/js/modules/Format/defaults/formatters/datetimediff.js +7 -7
- package/src/js/modules/Format/defaults/formatters/handle.js +1 -1
- package/src/js/modules/Format/defaults/formatters/html.js +1 -1
- package/src/js/modules/Format/defaults/formatters/image.js +9 -9
- package/src/js/modules/Format/defaults/formatters/link.js +10 -10
- package/src/js/modules/Format/defaults/formatters/lookup.js +1 -1
- package/src/js/modules/Format/defaults/formatters/money.js +1 -1
- package/src/js/modules/Format/defaults/formatters/plaintext.js +1 -1
- package/src/js/modules/Format/defaults/formatters/progress.js +41 -42
- package/src/js/modules/Format/defaults/formatters/responsiveCollapse.js +3 -3
- package/src/js/modules/Format/defaults/formatters/rowSelection.js +1 -1
- package/src/js/modules/Format/defaults/formatters/rownum.js +9 -2
- package/src/js/modules/Format/defaults/formatters/star.js +1 -1
- package/src/js/modules/Format/defaults/formatters/textarea.js +1 -1
- package/src/js/modules/Format/defaults/formatters/tickCross.js +1 -1
- package/src/js/modules/Format/defaults/formatters/traffic.js +14 -14
- package/src/js/modules/FrozenColumns/FrozenColumns.js +6 -8
- package/src/js/modules/FrozenRows/FrozenRows.js +37 -7
- package/src/js/modules/GroupRows/Group.js +7 -7
- package/src/js/modules/GroupRows/GroupComponent.js +2 -2
- package/src/js/modules/GroupRows/GroupRows.js +34 -11
- package/src/js/modules/History/History.js +2 -2
- package/src/js/modules/HtmlTableImport/HtmlTableImport.js +3 -6
- package/src/js/modules/Import/Import.js +158 -159
- package/src/js/modules/Import/defaults/importers/array.js +5 -0
- package/src/js/modules/Import/defaults/importers/csv.js +49 -49
- package/src/js/modules/Import/defaults/importers/json.js +6 -6
- package/src/js/modules/Import/defaults/importers.js +2 -0
- package/src/js/modules/Interaction/Interaction.js +42 -43
- package/src/js/modules/Keybindings/Keybindings.js +14 -14
- package/src/js/modules/Keybindings/defaults/actions.js +1 -2
- package/src/js/modules/Layout/Layout.js +4 -5
- package/src/js/modules/Layout/defaults/modes/fitColumns.js +13 -16
- package/src/js/modules/Layout/defaults/modes/fitData.js +6 -4
- package/src/js/modules/Layout/defaults/modes/fitDataGeneral.js +2 -2
- package/src/js/modules/Layout/defaults/modes/fitDataStretch.js +2 -2
- package/src/js/modules/Localize/Localize.js +7 -7
- package/src/js/modules/Menu/Menu.js +8 -11
- package/src/js/modules/MoveColumns/MoveColumns.js +3 -6
- package/src/js/modules/MoveRows/MoveRows.js +30 -36
- package/src/js/modules/Mutator/Mutator.js +9 -9
- package/src/js/modules/Page/Page.js +73 -80
- package/src/js/modules/Page/defaults/pageCounters/pages.js +2 -2
- package/src/js/modules/Page/defaults/pageCounters/rows.js +1 -1
- package/src/js/modules/Persistence/Persistence.js +40 -44
- package/src/js/modules/Persistence/defaults/readers.js +1 -1
- package/src/js/modules/Popup/Popup.js +4 -5
- package/src/js/modules/Print/Print.js +2 -2
- package/src/js/modules/ReactiveData/ReactiveData.js +178 -115
- package/src/js/modules/ResizeColumns/ResizeColumns.js +3 -3
- package/src/js/modules/ResizeRows/ResizeRows.js +1 -1
- package/src/js/modules/ResizeTable/ResizeTable.js +77 -46
- package/src/js/modules/ResponsiveLayout/ResponsiveLayout.js +3 -5
- package/src/js/modules/SelectRow/SelectRow.js +26 -28
- package/src/js/modules/Sort/Sort.js +113 -85
- package/src/js/modules/Sort/defaults/sorters/alphanum.js +1 -1
- package/src/js/modules/Sort/defaults/sorters/array.js +24 -28
- package/src/js/modules/Sort/defaults/sorters/boolean.js +1 -1
- package/src/js/modules/Sort/defaults/sorters/date.js +1 -1
- package/src/js/modules/Sort/defaults/sorters/datetime.js +13 -13
- package/src/js/modules/Sort/defaults/sorters/exists.js +1 -1
- package/src/js/modules/Sort/defaults/sorters/number.js +1 -1
- package/src/js/modules/Sort/defaults/sorters/string.js +7 -7
- package/src/js/modules/Sort/defaults/sorters/time.js +1 -1
- package/src/js/modules/Tooltip/Tooltip.js +5 -7
- package/src/js/modules/Validate/Validate.js +10 -13
- package/src/js/modules/Validate/defaults/validators.js +8 -3
- package/src/scss/tabulator.scss +28 -17
- package/src/scss/themes/bootstrap/functions4.scss +1 -1
- package/src/scss/themes/bootstrap/tabulator_bootstrap3.scss +8 -8
- package/src/scss/themes/bootstrap/tabulator_bootstrap4.scss +8 -8
- package/src/scss/themes/bootstrap/tabulator_bootstrap5.scss +8 -8
- package/src/scss/themes/bulma/tabulator_bulma.scss +7 -7
- package/src/scss/themes/materialize/tabulator_materialize.scss +6 -6
- package/src/scss/themes/materialize/variables.scss +1 -1
- package/src/scss/themes/semanticui/tabulator_semanticui.scss +7 -7
- package/src/scss/themes/tabulator_midnight.scss +7 -7
- package/src/scss/themes/tabulator_modern.scss +14 -14
- package/src/scss/themes/tabulator_simple.scss +8 -8
- package/src/scss/themes/tabulator_site.scss +15 -15
|
@@ -10,10 +10,10 @@ import RendererVirtualDomHorizontal from './rendering/renderers/VirtualDomHorizo
|
|
|
10
10
|
import defaultColumnOptions from './column/defaults/options.js';
|
|
11
11
|
|
|
12
12
|
export default class ColumnManager extends CoreFeature {
|
|
13
|
-
|
|
13
|
+
|
|
14
14
|
constructor (table){
|
|
15
15
|
super(table);
|
|
16
|
-
|
|
16
|
+
|
|
17
17
|
this.blockHozScrollEvent = false;
|
|
18
18
|
this.headersElement = null;
|
|
19
19
|
this.element = null ; //containing element
|
|
@@ -22,86 +22,89 @@ export default class ColumnManager extends CoreFeature {
|
|
|
22
22
|
this.columnsByField = {}; //columns by field
|
|
23
23
|
this.scrollLeft = 0;
|
|
24
24
|
this.optionsList = new OptionsList(this.table, "column definition", defaultColumnOptions);
|
|
25
|
-
|
|
25
|
+
|
|
26
|
+
this.redrawBlock = false; //prevent redraws to allow multiple data manipulations before continuing
|
|
27
|
+
this.redrawBlockUpdate = null; //store latest redraw update only status
|
|
28
|
+
|
|
26
29
|
this.renderer = null;
|
|
27
30
|
}
|
|
28
|
-
|
|
31
|
+
|
|
29
32
|
////////////// Setup Functions /////////////////
|
|
30
|
-
|
|
33
|
+
|
|
31
34
|
initialize(){
|
|
32
35
|
this.initializeRenderer();
|
|
33
|
-
|
|
36
|
+
|
|
34
37
|
this.headersElement = this.createHeadersElement();
|
|
35
38
|
this.element = this.createHeaderElement();
|
|
36
|
-
|
|
39
|
+
|
|
37
40
|
this.element.insertBefore(this.headersElement, this.element.firstChild);
|
|
38
|
-
|
|
41
|
+
|
|
39
42
|
this.subscribe("scroll-horizontal", this.scrollHorizontal.bind(this));
|
|
40
43
|
}
|
|
41
|
-
|
|
44
|
+
|
|
42
45
|
initializeRenderer(){
|
|
43
46
|
var renderClass;
|
|
44
|
-
|
|
47
|
+
|
|
45
48
|
var renderers = {
|
|
46
49
|
"virtual": RendererVirtualDomHorizontal,
|
|
47
50
|
"basic": RendererBasicHorizontal,
|
|
48
51
|
};
|
|
49
|
-
|
|
52
|
+
|
|
50
53
|
if(typeof this.table.options.renderHorizontal === "string"){
|
|
51
54
|
renderClass = renderers[this.table.options.renderHorizontal];
|
|
52
55
|
}else{
|
|
53
56
|
renderClass = this.table.options.renderHorizontal;
|
|
54
57
|
}
|
|
55
|
-
|
|
58
|
+
|
|
56
59
|
if(renderClass){
|
|
57
60
|
this.renderer = new renderClass(this.table, this.element, this.tableElement);
|
|
58
61
|
this.renderer.initialize();
|
|
59
62
|
}else{
|
|
60
|
-
console.error("Unable to find matching renderer:", table.options.renderHorizontal);
|
|
63
|
+
console.error("Unable to find matching renderer:", this.table.options.renderHorizontal);
|
|
61
64
|
}
|
|
62
65
|
}
|
|
63
|
-
|
|
64
|
-
|
|
66
|
+
|
|
67
|
+
|
|
65
68
|
createHeadersElement (){
|
|
66
69
|
var el = document.createElement("div");
|
|
67
|
-
|
|
70
|
+
|
|
68
71
|
el.classList.add("tabulator-headers");
|
|
69
72
|
el.setAttribute("role", "row");
|
|
70
|
-
|
|
73
|
+
|
|
71
74
|
return el;
|
|
72
75
|
}
|
|
73
|
-
|
|
76
|
+
|
|
74
77
|
createHeaderElement (){
|
|
75
78
|
var el = document.createElement("div");
|
|
76
|
-
|
|
79
|
+
|
|
77
80
|
el.classList.add("tabulator-header");
|
|
78
81
|
el.setAttribute("role", "rowgroup");
|
|
79
|
-
|
|
82
|
+
|
|
80
83
|
if(!this.table.options.headerVisible){
|
|
81
84
|
el.classList.add("tabulator-header-hidden");
|
|
82
85
|
}
|
|
83
|
-
|
|
86
|
+
|
|
84
87
|
return el;
|
|
85
88
|
}
|
|
86
|
-
|
|
89
|
+
|
|
87
90
|
//return containing element
|
|
88
91
|
getElement(){
|
|
89
92
|
return this.element;
|
|
90
93
|
}
|
|
91
|
-
|
|
94
|
+
|
|
92
95
|
//return header containing element
|
|
93
96
|
getHeadersElement(){
|
|
94
97
|
return this.headersElement;
|
|
95
98
|
}
|
|
96
|
-
|
|
99
|
+
|
|
97
100
|
//scroll horizontally to match table body
|
|
98
101
|
scrollHorizontal(left){
|
|
99
102
|
var hozAdjust = 0,
|
|
100
103
|
scrollWidth = this.element.scrollWidth - this.table.element.clientWidth;
|
|
101
|
-
|
|
104
|
+
|
|
102
105
|
// this.tempScrollBlock();
|
|
103
106
|
this.element.scrollLeft = left;
|
|
104
|
-
|
|
107
|
+
|
|
105
108
|
//adjust for vertical scrollbar moving table when present
|
|
106
109
|
if(left > scrollWidth){
|
|
107
110
|
hozAdjust = left - scrollWidth;
|
|
@@ -109,135 +112,135 @@ export default class ColumnManager extends CoreFeature {
|
|
|
109
112
|
}else{
|
|
110
113
|
this.element.style.marginLeft = 0;
|
|
111
114
|
}
|
|
112
|
-
|
|
115
|
+
|
|
113
116
|
this.scrollLeft = left;
|
|
114
|
-
|
|
117
|
+
|
|
115
118
|
this.renderer.scrollColumns(left);
|
|
116
119
|
}
|
|
117
|
-
|
|
120
|
+
|
|
118
121
|
///////////// Column Setup Functions /////////////
|
|
119
122
|
generateColumnsFromRowData(data){
|
|
120
123
|
var cols = [],
|
|
121
124
|
definitions = this.table.options.autoColumnsDefinitions,
|
|
122
125
|
row, sorter;
|
|
123
|
-
|
|
126
|
+
|
|
124
127
|
if(data && data.length){
|
|
125
|
-
|
|
128
|
+
|
|
126
129
|
row = data[0];
|
|
127
|
-
|
|
130
|
+
|
|
128
131
|
for(var key in row){
|
|
129
132
|
let col = {
|
|
130
133
|
field:key,
|
|
131
134
|
title:key,
|
|
132
135
|
};
|
|
133
|
-
|
|
136
|
+
|
|
134
137
|
let value = row[key];
|
|
135
|
-
|
|
138
|
+
|
|
136
139
|
switch(typeof value){
|
|
137
140
|
case "undefined":
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
+
sorter = "string";
|
|
142
|
+
break;
|
|
143
|
+
|
|
141
144
|
case "boolean":
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
+
sorter = "boolean";
|
|
146
|
+
break;
|
|
147
|
+
|
|
145
148
|
case "object":
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
}else{
|
|
149
|
-
sorter = "string";
|
|
150
|
-
}
|
|
151
|
-
break;
|
|
152
|
-
|
|
153
|
-
default:
|
|
154
|
-
if(!isNaN(value) && value !== ""){
|
|
155
|
-
sorter = "number";
|
|
156
|
-
}else{
|
|
157
|
-
if(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){
|
|
158
|
-
sorter = "alphanum";
|
|
149
|
+
if(Array.isArray(value)){
|
|
150
|
+
sorter = "array";
|
|
159
151
|
}else{
|
|
160
152
|
sorter = "string";
|
|
161
153
|
}
|
|
162
|
-
|
|
163
|
-
|
|
154
|
+
break;
|
|
155
|
+
|
|
156
|
+
default:
|
|
157
|
+
if(!isNaN(value) && value !== ""){
|
|
158
|
+
sorter = "number";
|
|
159
|
+
}else{
|
|
160
|
+
if(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){
|
|
161
|
+
sorter = "alphanum";
|
|
162
|
+
}else{
|
|
163
|
+
sorter = "string";
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
break;
|
|
164
167
|
}
|
|
165
|
-
|
|
168
|
+
|
|
166
169
|
col.sorter = sorter;
|
|
167
|
-
|
|
170
|
+
|
|
168
171
|
cols.push(col);
|
|
169
172
|
}
|
|
170
|
-
|
|
173
|
+
|
|
171
174
|
if(definitions){
|
|
172
|
-
|
|
175
|
+
|
|
173
176
|
switch(typeof definitions){
|
|
174
177
|
case "function":
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
+
this.table.options.columns = definitions.call(this.table, cols);
|
|
179
|
+
break;
|
|
180
|
+
|
|
178
181
|
case "object":
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
182
|
+
if(Array.isArray(definitions)){
|
|
183
|
+
cols.forEach((col) => {
|
|
184
|
+
var match = definitions.find((def) => {
|
|
185
|
+
return def.field === col.field;
|
|
186
|
+
});
|
|
187
|
+
|
|
188
|
+
if(match){
|
|
189
|
+
Object.assign(col, match);
|
|
190
|
+
}
|
|
183
191
|
});
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
});
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
this.table.options.columns = cols;
|
|
199
|
-
break;
|
|
192
|
+
|
|
193
|
+
}else{
|
|
194
|
+
cols.forEach((col) => {
|
|
195
|
+
if(definitions[col.field]){
|
|
196
|
+
Object.assign(col, definitions[col.field]);
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
this.table.options.columns = cols;
|
|
202
|
+
break;
|
|
200
203
|
}
|
|
201
204
|
}else{
|
|
202
205
|
this.table.options.columns = cols;
|
|
203
206
|
}
|
|
204
|
-
|
|
207
|
+
|
|
205
208
|
this.setColumns(this.table.options.columns);
|
|
206
209
|
}
|
|
207
210
|
}
|
|
208
|
-
|
|
211
|
+
|
|
209
212
|
setColumns(cols, row){
|
|
210
213
|
while(this.headersElement.firstChild) this.headersElement.removeChild(this.headersElement.firstChild);
|
|
211
|
-
|
|
214
|
+
|
|
212
215
|
this.columns = [];
|
|
213
216
|
this.columnsByIndex = [];
|
|
214
217
|
this.columnsByField = {};
|
|
215
|
-
|
|
218
|
+
|
|
216
219
|
this.dispatch("columns-loading");
|
|
217
|
-
|
|
220
|
+
|
|
218
221
|
cols.forEach((def, i) => {
|
|
219
222
|
this._addColumn(def);
|
|
220
223
|
});
|
|
221
|
-
|
|
224
|
+
|
|
222
225
|
this._reIndexColumns();
|
|
223
|
-
|
|
226
|
+
|
|
224
227
|
this.dispatch("columns-loaded");
|
|
225
|
-
|
|
226
|
-
this.
|
|
227
|
-
|
|
228
|
+
|
|
229
|
+
this.rerenderColumns(false, true);
|
|
230
|
+
|
|
228
231
|
this.redraw(true);
|
|
229
232
|
}
|
|
230
|
-
|
|
233
|
+
|
|
231
234
|
_addColumn(definition, before, nextToColumn){
|
|
232
235
|
var column = new Column(definition, this),
|
|
233
236
|
colEl = column.getElement(),
|
|
234
237
|
index = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;
|
|
235
|
-
|
|
238
|
+
|
|
236
239
|
if(nextToColumn && index > -1){
|
|
237
|
-
var topColumn = nextToColumn.getTopColumn()
|
|
240
|
+
var topColumn = nextToColumn.getTopColumn();
|
|
238
241
|
var parentIndex = this.columns.indexOf(topColumn);
|
|
239
242
|
var nextEl = topColumn.getElement();
|
|
240
|
-
|
|
243
|
+
|
|
241
244
|
if(before){
|
|
242
245
|
this.columns.splice(parentIndex, 0, column);
|
|
243
246
|
nextEl.parentNode.insertBefore(colEl, nextEl);
|
|
@@ -254,57 +257,62 @@ export default class ColumnManager extends CoreFeature {
|
|
|
254
257
|
this.headersElement.appendChild(column.getElement());
|
|
255
258
|
}
|
|
256
259
|
}
|
|
257
|
-
|
|
260
|
+
|
|
258
261
|
column.columnRendered();
|
|
259
|
-
|
|
262
|
+
|
|
260
263
|
return column;
|
|
261
264
|
}
|
|
262
|
-
|
|
265
|
+
|
|
263
266
|
registerColumnField(col){
|
|
264
267
|
if(col.definition.field){
|
|
265
268
|
this.columnsByField[col.definition.field] = col;
|
|
266
269
|
}
|
|
267
270
|
}
|
|
268
|
-
|
|
271
|
+
|
|
269
272
|
registerColumnPosition(col){
|
|
270
273
|
this.columnsByIndex.push(col);
|
|
271
274
|
}
|
|
272
|
-
|
|
275
|
+
|
|
273
276
|
_reIndexColumns(){
|
|
274
277
|
this.columnsByIndex = [];
|
|
275
|
-
|
|
278
|
+
|
|
276
279
|
this.columns.forEach(function(column){
|
|
277
280
|
column.reRegisterPosition();
|
|
278
281
|
});
|
|
279
282
|
}
|
|
280
|
-
|
|
283
|
+
|
|
281
284
|
//ensure column headers take up the correct amount of space in column groups
|
|
282
285
|
verticalAlignHeaders(){
|
|
283
286
|
var minHeight = 0;
|
|
284
|
-
|
|
285
|
-
this.
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
287
|
+
|
|
288
|
+
if(!this.redrawBlock){
|
|
289
|
+
|
|
290
|
+
this.columns.forEach((column) => {
|
|
291
|
+
column.clearVerticalAlign();
|
|
292
|
+
});
|
|
293
|
+
|
|
294
|
+
this.columns.forEach((column) => {
|
|
295
|
+
var height = column.getHeight();
|
|
296
|
+
|
|
297
|
+
if(height > minHeight){
|
|
298
|
+
minHeight = height;
|
|
299
|
+
}
|
|
300
|
+
});
|
|
301
|
+
|
|
302
|
+
this.columns.forEach((column) => {
|
|
303
|
+
column.verticalAlign(this.table.options.columnHeaderVertAlign, minHeight);
|
|
304
|
+
});
|
|
305
|
+
|
|
306
|
+
this.table.rowManager.adjustTableSize();
|
|
307
|
+
}
|
|
302
308
|
}
|
|
303
|
-
|
|
309
|
+
|
|
304
310
|
//////////////// Column Details /////////////////
|
|
305
311
|
findColumn(subject){
|
|
306
|
-
|
|
312
|
+
var columns;
|
|
307
313
|
|
|
314
|
+
if(typeof subject == "object"){
|
|
315
|
+
|
|
308
316
|
if(subject instanceof Column){
|
|
309
317
|
//subject is column element
|
|
310
318
|
return subject;
|
|
@@ -312,279 +320,287 @@ export default class ColumnManager extends CoreFeature {
|
|
|
312
320
|
//subject is public column component
|
|
313
321
|
return subject._getSelf() || false;
|
|
314
322
|
}else if(typeof HTMLElement !== "undefined" && subject instanceof HTMLElement){
|
|
323
|
+
|
|
324
|
+
columns = [];
|
|
325
|
+
|
|
326
|
+
this.columns.forEach((column) => {
|
|
327
|
+
columns.push(column);
|
|
328
|
+
columns = columns.concat(column.getColumns(true));
|
|
329
|
+
});
|
|
330
|
+
|
|
315
331
|
//subject is a HTML element of the column header
|
|
316
|
-
let match =
|
|
332
|
+
let match = columns.find((column) => {
|
|
317
333
|
return column.element === subject;
|
|
318
334
|
});
|
|
319
|
-
|
|
335
|
+
|
|
320
336
|
return match || false;
|
|
321
337
|
}
|
|
322
|
-
|
|
338
|
+
|
|
323
339
|
}else{
|
|
324
340
|
//subject should be treated as the field name of the column
|
|
325
341
|
return this.columnsByField[subject] || false;
|
|
326
342
|
}
|
|
327
|
-
|
|
343
|
+
|
|
328
344
|
//catch all for any other type of input
|
|
329
345
|
return false;
|
|
330
346
|
}
|
|
331
|
-
|
|
347
|
+
|
|
332
348
|
getColumnByField(field){
|
|
333
349
|
return this.columnsByField[field];
|
|
334
350
|
}
|
|
335
|
-
|
|
351
|
+
|
|
336
352
|
getColumnsByFieldRoot(root){
|
|
337
353
|
var matches = [];
|
|
338
|
-
|
|
354
|
+
|
|
339
355
|
Object.keys(this.columnsByField).forEach((field) => {
|
|
340
356
|
var fieldRoot = field.split(".")[0];
|
|
341
357
|
if(fieldRoot === root){
|
|
342
358
|
matches.push(this.columnsByField[field]);
|
|
343
359
|
}
|
|
344
360
|
});
|
|
345
|
-
|
|
361
|
+
|
|
346
362
|
return matches;
|
|
347
363
|
}
|
|
348
|
-
|
|
364
|
+
|
|
349
365
|
getColumnByIndex(index){
|
|
350
366
|
return this.columnsByIndex[index];
|
|
351
367
|
}
|
|
352
|
-
|
|
353
|
-
getFirstVisibleColumn(
|
|
368
|
+
|
|
369
|
+
getFirstVisibleColumn(){
|
|
354
370
|
var index = this.columnsByIndex.findIndex((col) => {
|
|
355
371
|
return col.visible;
|
|
356
372
|
});
|
|
357
|
-
|
|
373
|
+
|
|
358
374
|
return index > -1 ? this.columnsByIndex[index] : false;
|
|
359
375
|
}
|
|
360
|
-
|
|
376
|
+
|
|
361
377
|
getColumns(){
|
|
362
378
|
return this.columns;
|
|
363
379
|
}
|
|
364
|
-
|
|
380
|
+
|
|
365
381
|
findColumnIndex(column){
|
|
366
382
|
return this.columnsByIndex.findIndex((col) => {
|
|
367
383
|
return column === col;
|
|
368
384
|
});
|
|
369
385
|
}
|
|
370
|
-
|
|
386
|
+
|
|
371
387
|
//return all columns that are not groups
|
|
372
388
|
getRealColumns(){
|
|
373
389
|
return this.columnsByIndex;
|
|
374
390
|
}
|
|
375
|
-
|
|
376
|
-
//
|
|
391
|
+
|
|
392
|
+
//traverse across columns and call action
|
|
377
393
|
traverse(callback){
|
|
378
394
|
this.columnsByIndex.forEach((column,i) =>{
|
|
379
395
|
callback(column, i);
|
|
380
396
|
});
|
|
381
397
|
}
|
|
382
|
-
|
|
383
|
-
//get
|
|
398
|
+
|
|
399
|
+
//get definitions of actual columns
|
|
384
400
|
getDefinitions(active){
|
|
385
401
|
var output = [];
|
|
386
|
-
|
|
402
|
+
|
|
387
403
|
this.columnsByIndex.forEach((column) => {
|
|
388
404
|
if(!active || (active && column.visible)){
|
|
389
405
|
output.push(column.getDefinition());
|
|
390
406
|
}
|
|
391
407
|
});
|
|
392
|
-
|
|
408
|
+
|
|
393
409
|
return output;
|
|
394
410
|
}
|
|
395
|
-
|
|
411
|
+
|
|
396
412
|
//get full nested definition tree
|
|
397
413
|
getDefinitionTree(){
|
|
398
414
|
var output = [];
|
|
399
|
-
|
|
415
|
+
|
|
400
416
|
this.columns.forEach((column) => {
|
|
401
417
|
output.push(column.getDefinition(true));
|
|
402
418
|
});
|
|
403
|
-
|
|
419
|
+
|
|
404
420
|
return output;
|
|
405
421
|
}
|
|
406
|
-
|
|
422
|
+
|
|
407
423
|
getComponents(structured){
|
|
408
424
|
var output = [],
|
|
409
425
|
columns = structured ? this.columns : this.columnsByIndex;
|
|
410
|
-
|
|
426
|
+
|
|
411
427
|
columns.forEach((column) => {
|
|
412
428
|
output.push(column.getComponent());
|
|
413
429
|
});
|
|
414
|
-
|
|
430
|
+
|
|
415
431
|
return output;
|
|
416
432
|
}
|
|
417
|
-
|
|
433
|
+
|
|
418
434
|
getWidth(){
|
|
419
435
|
var width = 0;
|
|
420
|
-
|
|
436
|
+
|
|
421
437
|
this.columnsByIndex.forEach((column) => {
|
|
422
438
|
if(column.visible){
|
|
423
439
|
width += column.getWidth();
|
|
424
440
|
}
|
|
425
441
|
});
|
|
426
|
-
|
|
442
|
+
|
|
427
443
|
return width;
|
|
428
444
|
}
|
|
429
|
-
|
|
445
|
+
|
|
430
446
|
moveColumn(from, to, after){
|
|
431
|
-
this.moveColumnActual(from, to, after);
|
|
432
|
-
|
|
433
447
|
to.element.parentNode.insertBefore(from.element, to.element);
|
|
434
|
-
|
|
448
|
+
|
|
435
449
|
if(after){
|
|
436
450
|
to.element.parentNode.insertBefore(to.element, from.element);
|
|
437
451
|
}
|
|
452
|
+
|
|
453
|
+
this.moveColumnActual(from, to, after);
|
|
438
454
|
|
|
439
455
|
this.verticalAlignHeaders();
|
|
440
|
-
|
|
456
|
+
|
|
441
457
|
this.table.rowManager.reinitialize();
|
|
442
458
|
}
|
|
443
|
-
|
|
459
|
+
|
|
444
460
|
moveColumnActual(from, to, after){
|
|
445
461
|
if(from.parent.isGroup){
|
|
446
462
|
this._moveColumnInArray(from.parent.columns, from, to, after);
|
|
447
463
|
}else{
|
|
448
464
|
this._moveColumnInArray(this.columns, from, to, after);
|
|
449
465
|
}
|
|
450
|
-
|
|
466
|
+
|
|
451
467
|
this._moveColumnInArray(this.columnsByIndex, from, to, after, true);
|
|
452
|
-
|
|
453
|
-
this.
|
|
454
|
-
|
|
468
|
+
|
|
469
|
+
this.rerenderColumns(true);
|
|
470
|
+
|
|
455
471
|
this.dispatch("column-moved", from, to, after);
|
|
456
|
-
|
|
472
|
+
|
|
457
473
|
if(this.subscribedExternal("columnMoved")){
|
|
458
474
|
this.dispatchExternal("columnMoved", from.getComponent(), this.table.columnManager.getComponents());
|
|
459
475
|
}
|
|
460
476
|
}
|
|
461
|
-
|
|
477
|
+
|
|
462
478
|
_moveColumnInArray(columns, from, to, after, updateRows){
|
|
463
479
|
var fromIndex = columns.indexOf(from),
|
|
464
480
|
toIndex, rows = [];
|
|
465
|
-
|
|
481
|
+
|
|
466
482
|
if (fromIndex > -1) {
|
|
467
|
-
|
|
483
|
+
|
|
468
484
|
columns.splice(fromIndex, 1);
|
|
469
|
-
|
|
485
|
+
|
|
470
486
|
toIndex = columns.indexOf(to);
|
|
471
|
-
|
|
487
|
+
|
|
472
488
|
if (toIndex > -1) {
|
|
473
|
-
|
|
489
|
+
|
|
474
490
|
if(after){
|
|
475
491
|
toIndex = toIndex+1;
|
|
476
492
|
}
|
|
477
|
-
|
|
493
|
+
|
|
478
494
|
}else{
|
|
479
495
|
toIndex = fromIndex;
|
|
480
496
|
}
|
|
481
|
-
|
|
497
|
+
|
|
482
498
|
columns.splice(toIndex, 0, from);
|
|
483
|
-
|
|
499
|
+
|
|
484
500
|
if(updateRows){
|
|
485
|
-
|
|
501
|
+
|
|
486
502
|
rows = this.chain("column-moving-rows", [from, to, after], null, []) || [];
|
|
487
|
-
|
|
503
|
+
|
|
488
504
|
rows = rows.concat(this.table.rowManager.rows);
|
|
489
|
-
|
|
505
|
+
|
|
490
506
|
rows.forEach(function(row){
|
|
491
507
|
if(row.cells.length){
|
|
492
508
|
var cell = row.cells.splice(fromIndex, 1)[0];
|
|
493
509
|
row.cells.splice(toIndex, 0, cell);
|
|
494
510
|
}
|
|
495
511
|
});
|
|
496
|
-
|
|
512
|
+
|
|
497
513
|
}
|
|
498
514
|
}
|
|
499
515
|
}
|
|
500
|
-
|
|
516
|
+
|
|
501
517
|
scrollToColumn(column, position, ifVisible){
|
|
502
518
|
var left = 0,
|
|
503
519
|
offset = 0,
|
|
504
520
|
adjust = 0,
|
|
505
521
|
colEl = column.getElement();
|
|
506
|
-
|
|
522
|
+
|
|
507
523
|
return new Promise((resolve, reject) => {
|
|
508
|
-
|
|
524
|
+
|
|
509
525
|
if(typeof position === "undefined"){
|
|
510
526
|
position = this.table.options.scrollToColumnPosition;
|
|
511
527
|
}
|
|
512
|
-
|
|
528
|
+
|
|
513
529
|
if(typeof ifVisible === "undefined"){
|
|
514
530
|
ifVisible = this.table.options.scrollToColumnIfVisible;
|
|
515
531
|
}
|
|
516
|
-
|
|
532
|
+
|
|
517
533
|
if(column.visible){
|
|
518
|
-
|
|
534
|
+
|
|
519
535
|
//align to correct position
|
|
520
536
|
switch(position){
|
|
521
537
|
case "middle":
|
|
522
538
|
case "center":
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
539
|
+
adjust = -this.element.clientWidth / 2;
|
|
540
|
+
break;
|
|
541
|
+
|
|
526
542
|
case "right":
|
|
527
|
-
|
|
528
|
-
|
|
543
|
+
adjust = colEl.clientWidth - this.headersElement.clientWidth;
|
|
544
|
+
break;
|
|
529
545
|
}
|
|
530
|
-
|
|
546
|
+
|
|
531
547
|
//check column visibility
|
|
532
548
|
if(!ifVisible){
|
|
533
|
-
|
|
549
|
+
|
|
534
550
|
offset = colEl.offsetLeft;
|
|
535
|
-
|
|
551
|
+
|
|
536
552
|
if(offset > 0 && offset + colEl.offsetWidth < this.element.clientWidth){
|
|
537
553
|
return false;
|
|
538
554
|
}
|
|
539
555
|
}
|
|
540
|
-
|
|
556
|
+
|
|
541
557
|
//calculate scroll position
|
|
542
558
|
left = colEl.offsetLeft + adjust;
|
|
543
|
-
|
|
559
|
+
|
|
544
560
|
left = Math.max(Math.min(left, this.table.rowManager.element.scrollWidth - this.table.rowManager.element.clientWidth),0);
|
|
545
|
-
|
|
561
|
+
|
|
546
562
|
this.table.rowManager.scrollHorizontal(left);
|
|
547
563
|
this.scrollHorizontal(left);
|
|
548
|
-
|
|
564
|
+
|
|
549
565
|
resolve();
|
|
550
566
|
}else{
|
|
551
567
|
console.warn("Scroll Error - Column not visible");
|
|
552
568
|
reject("Scroll Error - Column not visible");
|
|
553
569
|
}
|
|
554
|
-
|
|
570
|
+
|
|
555
571
|
});
|
|
556
572
|
}
|
|
557
|
-
|
|
573
|
+
|
|
558
574
|
//////////////// Cell Management /////////////////
|
|
559
575
|
generateCells(row){
|
|
560
576
|
var cells = [];
|
|
561
|
-
|
|
577
|
+
|
|
562
578
|
this.columnsByIndex.forEach((column) => {
|
|
563
579
|
cells.push(column.generateCell(row));
|
|
564
580
|
});
|
|
565
|
-
|
|
581
|
+
|
|
566
582
|
return cells;
|
|
567
583
|
}
|
|
568
|
-
|
|
584
|
+
|
|
569
585
|
//////////////// Column Management /////////////////
|
|
570
586
|
getFlexBaseWidth(){
|
|
571
587
|
var totalWidth = this.table.element.clientWidth, //table element width
|
|
572
588
|
fixedWidth = 0;
|
|
573
|
-
|
|
589
|
+
|
|
574
590
|
//adjust for vertical scrollbar if present
|
|
575
591
|
if(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){
|
|
576
592
|
totalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;
|
|
577
593
|
}
|
|
578
|
-
|
|
594
|
+
|
|
579
595
|
this.columnsByIndex.forEach(function(column){
|
|
580
596
|
var width, minWidth, colWidth;
|
|
581
|
-
|
|
597
|
+
|
|
582
598
|
if(column.visible){
|
|
583
|
-
|
|
599
|
+
|
|
584
600
|
width = column.definition.width || 0;
|
|
585
|
-
|
|
601
|
+
|
|
586
602
|
minWidth = parseInt(column.minWidth);
|
|
587
|
-
|
|
603
|
+
|
|
588
604
|
if(typeof(width) == "string"){
|
|
589
605
|
if(width.indexOf("%") > -1){
|
|
590
606
|
colWidth = (totalWidth / 100) * parseInt(width) ;
|
|
@@ -594,83 +610,105 @@ export default class ColumnManager extends CoreFeature {
|
|
|
594
610
|
}else{
|
|
595
611
|
colWidth = width;
|
|
596
612
|
}
|
|
597
|
-
|
|
613
|
+
|
|
598
614
|
fixedWidth += colWidth > minWidth ? colWidth : minWidth;
|
|
599
|
-
|
|
615
|
+
|
|
600
616
|
}
|
|
601
617
|
});
|
|
602
|
-
|
|
618
|
+
|
|
603
619
|
return fixedWidth;
|
|
604
620
|
}
|
|
605
|
-
|
|
621
|
+
|
|
606
622
|
addColumn(definition, before, nextToColumn){
|
|
607
623
|
return new Promise((resolve, reject) => {
|
|
608
624
|
var column = this._addColumn(definition, before, nextToColumn);
|
|
609
|
-
|
|
625
|
+
|
|
610
626
|
this._reIndexColumns();
|
|
611
|
-
|
|
627
|
+
|
|
612
628
|
this.dispatch("column-add", definition, before, nextToColumn);
|
|
613
|
-
|
|
629
|
+
|
|
614
630
|
if(this.layoutMode() != "fitColumns"){
|
|
615
631
|
column.reinitializeWidth();
|
|
616
632
|
}
|
|
617
|
-
|
|
633
|
+
|
|
618
634
|
this.redraw(true);
|
|
619
|
-
|
|
635
|
+
|
|
620
636
|
this.table.rowManager.reinitialize();
|
|
621
|
-
|
|
622
|
-
this.
|
|
623
|
-
|
|
637
|
+
|
|
638
|
+
this.rerenderColumns();
|
|
639
|
+
|
|
624
640
|
resolve(column);
|
|
625
641
|
});
|
|
626
642
|
}
|
|
627
|
-
|
|
643
|
+
|
|
628
644
|
//remove column from system
|
|
629
645
|
deregisterColumn(column){
|
|
630
646
|
var field = column.getField(),
|
|
631
647
|
index;
|
|
632
|
-
|
|
648
|
+
|
|
633
649
|
//remove from field list
|
|
634
650
|
if(field){
|
|
635
651
|
delete this.columnsByField[field];
|
|
636
652
|
}
|
|
637
|
-
|
|
653
|
+
|
|
638
654
|
//remove from index list
|
|
639
655
|
index = this.columnsByIndex.indexOf(column);
|
|
640
|
-
|
|
656
|
+
|
|
641
657
|
if(index > -1){
|
|
642
658
|
this.columnsByIndex.splice(index, 1);
|
|
643
659
|
}
|
|
644
|
-
|
|
660
|
+
|
|
645
661
|
//remove from column list
|
|
646
662
|
index = this.columns.indexOf(column);
|
|
647
|
-
|
|
663
|
+
|
|
648
664
|
if(index > -1){
|
|
649
665
|
this.columns.splice(index, 1);
|
|
650
666
|
}
|
|
651
|
-
|
|
667
|
+
|
|
652
668
|
this.verticalAlignHeaders();
|
|
653
|
-
|
|
669
|
+
|
|
654
670
|
this.redraw();
|
|
655
671
|
}
|
|
656
|
-
|
|
672
|
+
|
|
673
|
+
rerenderColumns(update, silent){
|
|
674
|
+
if(!this.redrawBlock){
|
|
675
|
+
this.renderer.rerenderColumns(update, silent);
|
|
676
|
+
}else{
|
|
677
|
+
if(update === false || (update === true && this.redrawBlockUpdate === null)){
|
|
678
|
+
this.redrawBlockUpdate = update;
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
}
|
|
682
|
+
|
|
683
|
+
blockRedraw(){
|
|
684
|
+
this.redrawBlock = true;
|
|
685
|
+
this.redrawBlockUpdate = null;
|
|
686
|
+
}
|
|
687
|
+
|
|
688
|
+
restoreRedraw(){
|
|
689
|
+
this.redrawBlock = false;
|
|
690
|
+
this.verticalAlignHeaders();
|
|
691
|
+
this.renderer.rerenderColumns(this.redrawBlockUpdate);
|
|
692
|
+
|
|
693
|
+
}
|
|
694
|
+
|
|
657
695
|
//redraw columns
|
|
658
696
|
redraw(force){
|
|
659
697
|
if(Helpers.elVisible(this.element)){
|
|
660
698
|
this.verticalAlignHeaders();
|
|
661
699
|
}
|
|
662
|
-
|
|
700
|
+
|
|
663
701
|
if(force){
|
|
664
702
|
this.table.rowManager.resetScroll();
|
|
665
703
|
this.table.rowManager.reinitialize();
|
|
666
704
|
}
|
|
667
|
-
|
|
705
|
+
|
|
668
706
|
if(!this.confirm("table-redrawing", force)){
|
|
669
|
-
this.layoutRefresh();
|
|
707
|
+
this.layoutRefresh(force);
|
|
670
708
|
}
|
|
671
|
-
|
|
709
|
+
|
|
672
710
|
this.dispatch("table-redraw", force);
|
|
673
|
-
|
|
711
|
+
|
|
674
712
|
this.table.footerManager.redraw();
|
|
675
713
|
}
|
|
676
714
|
}
|