tabulator-tables 5.0.2 → 5.0.7
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/bower.json +1 -1
- package/build/rollup.js +1 -1
- package/dist/css/tabulator_bootstrap3.css +9 -0
- 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 +0 -4
- 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_bulma.css +5 -1
- 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_semanticui.css +11 -2
- 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/js/tabulator.js +460 -308
- 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 +426 -297
- 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 +1 -1
- package/src/js/core/ColumnManager.js +15 -16
- package/src/js/core/RowManager.js +5 -3
- package/src/js/core/Tabulator.js +178 -117
- package/src/js/core/column/Column.js +2 -2
- package/src/js/core/tools/DataLoader.js +1 -1
- package/src/js/core/tools/ExternalEventBus.js +3 -2
- package/src/js/core/tools/Helpers.js +24 -7
- package/src/js/modules/Accessor/Accessor.js +1 -1
- package/src/js/modules/Ajax/defaults/contentTypeFormatters.js +22 -1
- package/src/js/modules/DataTree/DataTree.js +1 -1
- package/src/js/modules/Edit/Edit.js +7 -6
- package/src/js/modules/Edit/defaults/editors/progress.js +2 -2
- package/src/js/modules/Filter/Filter.js +9 -4
- package/src/js/modules/Format/defaults/formatters/money.js +8 -1
- package/src/js/modules/FrozenColumns/FrozenColumns.js +21 -0
- package/src/js/modules/FrozenRows/FrozenRows.js +4 -1
- package/src/js/modules/GroupRows/Group.js +2 -0
- package/src/js/modules/GroupRows/GroupRows.js +40 -35
- package/src/js/modules/History/History.js +3 -1
- package/src/js/modules/History/defaults/redoers.js +1 -0
- package/src/js/modules/History/defaults/undoers.js +1 -0
- package/src/js/modules/HtmlTableImport/HtmlTableImport.js +4 -22
- package/src/js/modules/MoveColumns/MoveColumns.js +6 -4
- package/src/js/modules/Page/Page.js +0 -4
- package/src/js/modules/ReactiveData/ReactiveData.js +28 -27
- package/src/js/modules/ResponsiveLayout/ResponsiveLayout.js +5 -1
- package/src/js/modules/SelectRow/SelectRow.js +1 -2
- package/src/scss/themes/bootstrap/tabulator_bootstrap3.scss +9 -0
- package/src/scss/themes/bootstrap/tabulator_bootstrap4.scss +0 -4
- package/src/scss/themes/bulma/tabulator_bulma.scss +5 -1
- package/src/scss/themes/semanticui/tabulator_semanticui.scss +12 -7
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
function generateParamsList(data, prefix){
|
|
2
|
+
var output = [];
|
|
3
|
+
|
|
4
|
+
prefix = prefix || "";
|
|
5
|
+
|
|
6
|
+
if(Array.isArray(data)){
|
|
7
|
+
data.forEach((item, i) => {
|
|
8
|
+
output = output.concat(generateParamsList(item, prefix ? prefix + "[" + i + "]" : i));
|
|
9
|
+
});
|
|
10
|
+
}else if (typeof data === "object"){
|
|
11
|
+
for (var key in data){
|
|
12
|
+
output = output.concat(generateParamsList(data[key], prefix ? prefix + "[" + key + "]" : key));
|
|
13
|
+
}
|
|
14
|
+
}else{
|
|
15
|
+
output.push({key:prefix, value:data});
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
return output;
|
|
19
|
+
}
|
|
20
|
+
|
|
1
21
|
export default {
|
|
2
22
|
"json":{
|
|
3
23
|
headers:{
|
|
@@ -11,7 +31,8 @@ export default {
|
|
|
11
31
|
headers:{
|
|
12
32
|
},
|
|
13
33
|
body:function(url, config, params){
|
|
14
|
-
|
|
34
|
+
|
|
35
|
+
var output = generateParamsList(params),
|
|
15
36
|
form = new FormData();
|
|
16
37
|
|
|
17
38
|
output.forEach(function(item){
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import Module from '../../core/Module.js';
|
|
2
|
+
import Helpers from '../../core/tools/Helpers.js';
|
|
2
3
|
|
|
3
4
|
import defaultEditors from './defaults/editors.js';
|
|
4
5
|
|
|
@@ -150,7 +151,7 @@ class Edit extends Module{
|
|
|
150
151
|
nextCell = this.findNextEditableCell(prevRow, prevRow.cells.length);
|
|
151
152
|
|
|
152
153
|
if(nextCell){
|
|
153
|
-
nextCell.edit();
|
|
154
|
+
nextCell.getComponent().edit();
|
|
154
155
|
return true;
|
|
155
156
|
}
|
|
156
157
|
}
|
|
@@ -181,7 +182,7 @@ class Edit extends Module{
|
|
|
181
182
|
nextCell = this.findNextEditableCell(nextRow, -1);
|
|
182
183
|
|
|
183
184
|
if(nextCell){
|
|
184
|
-
nextCell.edit();
|
|
185
|
+
nextCell.getComponent().edit();
|
|
185
186
|
return true;
|
|
186
187
|
}
|
|
187
188
|
}
|
|
@@ -205,7 +206,7 @@ class Edit extends Module{
|
|
|
205
206
|
nextCell = this.findPrevEditableCell(cell.row, index);
|
|
206
207
|
|
|
207
208
|
if(nextCell){
|
|
208
|
-
nextCell.edit();
|
|
209
|
+
nextCell.getComponent().edit();
|
|
209
210
|
return true;
|
|
210
211
|
}
|
|
211
212
|
}
|
|
@@ -227,7 +228,7 @@ class Edit extends Module{
|
|
|
227
228
|
nextCell = this.findNextEditableCell(cell.row, index);
|
|
228
229
|
|
|
229
230
|
if(nextCell){
|
|
230
|
-
nextCell.edit();
|
|
231
|
+
nextCell.getComponent().edit();
|
|
231
232
|
return true;
|
|
232
233
|
}
|
|
233
234
|
}
|
|
@@ -249,7 +250,7 @@ class Edit extends Module{
|
|
|
249
250
|
nextRow = this.table.rowManager.prevDisplayRow(cell.row, true);
|
|
250
251
|
|
|
251
252
|
if(nextRow){
|
|
252
|
-
nextRow.cells[index].edit();
|
|
253
|
+
nextRow.cells[index].getComponent().edit();
|
|
253
254
|
return true;
|
|
254
255
|
}
|
|
255
256
|
}
|
|
@@ -271,7 +272,7 @@ class Edit extends Module{
|
|
|
271
272
|
nextRow = this.table.rowManager.nextDisplayRow(cell.row, true);
|
|
272
273
|
|
|
273
274
|
if(nextRow){
|
|
274
|
-
nextRow.cells[index].edit();
|
|
275
|
+
nextRow.cells[index].getComponent().edit();
|
|
275
276
|
return true;
|
|
276
277
|
}
|
|
277
278
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
//draggable progress bar
|
|
2
2
|
export default function(cell, onRendered, success, cancel, editorParams){
|
|
3
3
|
var element = cell.getElement(),
|
|
4
|
-
max = typeof editorParams.max === "undefined" ? ( element.getElementsByTagName("div")[0]
|
|
5
|
-
min = typeof editorParams.min === "undefined" ? ( element.getElementsByTagName("div")[0]
|
|
4
|
+
max = typeof editorParams.max === "undefined" ? ( element.getElementsByTagName("div")[0]?.getAttribute("max") || 100) : editorParams.max,
|
|
5
|
+
min = typeof editorParams.min === "undefined" ? ( element.getElementsByTagName("div")[0]?.getAttribute("min") || 0) : editorParams.min,
|
|
6
6
|
percent = (max - min) / 100,
|
|
7
7
|
value = cell.getValue() || 0,
|
|
8
8
|
handle = document.createElement("div"),
|
|
@@ -15,6 +15,7 @@ class Filter extends Module{
|
|
|
15
15
|
this.prevHeaderFilterChangeCheck = "{}";
|
|
16
16
|
|
|
17
17
|
this.changed = false; //has filtering changed since last render
|
|
18
|
+
this.tableInitialized = false;
|
|
18
19
|
|
|
19
20
|
this.registerTableOption("filterMode", "local"); //local or remote filtering
|
|
20
21
|
|
|
@@ -82,6 +83,8 @@ class Filter extends Module{
|
|
|
82
83
|
}
|
|
83
84
|
});
|
|
84
85
|
}
|
|
86
|
+
|
|
87
|
+
this.tableInitialized = true;
|
|
85
88
|
}
|
|
86
89
|
|
|
87
90
|
remoteFilterParams(data, config, silent, params){
|
|
@@ -546,10 +549,12 @@ class Filter extends Module{
|
|
|
546
549
|
}
|
|
547
550
|
|
|
548
551
|
refreshFilter(){
|
|
549
|
-
if(this.
|
|
550
|
-
this.
|
|
551
|
-
|
|
552
|
-
|
|
552
|
+
if(this.tableInitialized){
|
|
553
|
+
if(this.table.options.filterMode === "remote"){
|
|
554
|
+
this.reloadData();
|
|
555
|
+
}else{
|
|
556
|
+
this.refreshData();
|
|
557
|
+
}
|
|
553
558
|
}
|
|
554
559
|
|
|
555
560
|
//TODO - Persist left position of row manager
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
export default function(cell, formatterParams, onRendered){
|
|
2
2
|
var floatVal = parseFloat(cell.getValue()),
|
|
3
|
+
sign = "",
|
|
3
4
|
number, integer, decimal, rgx;
|
|
4
5
|
|
|
5
6
|
var decimalSym = formatterParams.decimal || ".";
|
|
6
7
|
var thousandSym = formatterParams.thousand || ",";
|
|
8
|
+
var negativeSign = formatterParams.negativeSign || "-";
|
|
7
9
|
var symbol = formatterParams.symbol || "";
|
|
8
10
|
var after = !!formatterParams.symbolAfter;
|
|
9
11
|
var precision = typeof formatterParams.precision !== "undefined" ? formatterParams.precision : 2;
|
|
@@ -12,6 +14,11 @@ export default function(cell, formatterParams, onRendered){
|
|
|
12
14
|
return this.emptyToSpace(this.sanitizeHTML(cell.getValue()));
|
|
13
15
|
}
|
|
14
16
|
|
|
17
|
+
if(floatVal < 0){
|
|
18
|
+
floatVal = Math.abs(floatVal);
|
|
19
|
+
sign = negativeSign;
|
|
20
|
+
}
|
|
21
|
+
|
|
15
22
|
number = precision !== false ? floatVal.toFixed(precision) : floatVal;
|
|
16
23
|
number = String(number).split(".");
|
|
17
24
|
|
|
@@ -24,5 +31,5 @@ export default function(cell, formatterParams, onRendered){
|
|
|
24
31
|
integer = integer.replace(rgx, "$1" + thousandSym + "$2");
|
|
25
32
|
}
|
|
26
33
|
|
|
27
|
-
return after ? integer + decimal + symbol : symbol + integer + decimal;
|
|
34
|
+
return after ? sign + integer + decimal + symbol : sign + symbol + integer + decimal;
|
|
28
35
|
};
|
|
@@ -135,12 +135,33 @@ class FrozenColumns extends Module{
|
|
|
135
135
|
if(this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow){
|
|
136
136
|
this.layoutRow(this.table.modules.columnCalcs.topRow);
|
|
137
137
|
}
|
|
138
|
+
|
|
138
139
|
if(this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow){
|
|
139
140
|
this.layoutRow(this.table.modules.columnCalcs.botRow);
|
|
140
141
|
}
|
|
142
|
+
|
|
143
|
+
if(this.table.modExists("groupRows")){
|
|
144
|
+
this.layoutGroupCalcs(this.table.modules.groupRows.getGroups())
|
|
145
|
+
}
|
|
141
146
|
}
|
|
142
147
|
}
|
|
143
148
|
|
|
149
|
+
layoutGroupCalcs(groups){
|
|
150
|
+
groups.forEach((group) => {
|
|
151
|
+
if(group.calcs.top){
|
|
152
|
+
this.layoutRow(group.calcs.top);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
if(group.calcs.bottom){
|
|
156
|
+
this.layoutRow(group.calcs.bottom);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
if(group.groupList && group.groupList.length){
|
|
160
|
+
this.layoutGroupCalcs(group.groupList && group.groupList);
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
|
|
144
165
|
//calculate column positions and layout headers
|
|
145
166
|
layoutColumnPosition(allCells){
|
|
146
167
|
|
|
@@ -99,7 +99,10 @@ class FrozenRows extends Module{
|
|
|
99
99
|
|
|
100
100
|
if(index > -1){
|
|
101
101
|
var rowEl = row.getElement();
|
|
102
|
-
|
|
102
|
+
|
|
103
|
+
if(rowEl.parentNode){
|
|
104
|
+
rowEl.parentNode.removeChild(rowEl);
|
|
105
|
+
}
|
|
103
106
|
|
|
104
107
|
this.rows.splice(index, 1);
|
|
105
108
|
}
|
|
@@ -45,6 +45,34 @@ class GroupRows extends Module{
|
|
|
45
45
|
|
|
46
46
|
//initialize group configuration
|
|
47
47
|
initialize(){
|
|
48
|
+
if(this.table.options.groupBy){
|
|
49
|
+
|
|
50
|
+
this.configureGroupSetup();
|
|
51
|
+
|
|
52
|
+
if(this.table.options.groupUpdateOnCellEdit){
|
|
53
|
+
this.subscribe("cell-value-updated", this.cellUpdated.bind(this));
|
|
54
|
+
this.subscribe("row-data-changed", this.reassignRowToGroup.bind(this), 0);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
this.subscribe("row-deleting", this.rowDeleting.bind(this));
|
|
58
|
+
this.subscribe("row-deleted", this.rowsUpdated.bind(this));
|
|
59
|
+
this.subscribe("scroll-horizontal", this.scrollHeaders.bind(this));
|
|
60
|
+
this.subscribe("rows-wipe", this.wipe.bind(this));
|
|
61
|
+
this.subscribe("rows-added", this.rowsUpdated.bind(this));
|
|
62
|
+
this.subscribe("row-moving", this.rowMoving.bind(this));
|
|
63
|
+
this.subscribe("row-adding-index", this.rowAddingIndex.bind(this));
|
|
64
|
+
|
|
65
|
+
this.subscribe("rows-sample", this.rowSample.bind(this));
|
|
66
|
+
|
|
67
|
+
this.subscribe("render-virtual-fill", this.virtualRenderFill.bind(this));
|
|
68
|
+
|
|
69
|
+
this.registerDisplayHandler(this.displayHandler, 20);
|
|
70
|
+
|
|
71
|
+
this.initialized = true;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
configureGroupSetup(){
|
|
48
76
|
if(this.table.options.groupBy){
|
|
49
77
|
var groupBy = this.table.options.groupBy,
|
|
50
78
|
startOpen = this.table.options.groupStartOpen,
|
|
@@ -133,27 +161,6 @@ class GroupRows extends Module{
|
|
|
133
161
|
if(groupHeader){
|
|
134
162
|
this.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];
|
|
135
163
|
}
|
|
136
|
-
|
|
137
|
-
if(this.table.options.groupUpdateOnCellEdit){
|
|
138
|
-
this.subscribe("cell-value-updated", this.cellUpdated.bind(this));
|
|
139
|
-
this.subscribe("row-data-changed", this.reassignRowToGroup.bind(this), 0);
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
this.subscribe("row-deleting", this.rowDeleting.bind(this));
|
|
143
|
-
this.subscribe("row-deleted", this.rowsUpdated.bind(this));
|
|
144
|
-
this.subscribe("scroll-horizontal", this.scrollHeaders.bind(this));
|
|
145
|
-
this.subscribe("rows-wipe", this.wipe.bind(this));
|
|
146
|
-
this.subscribe("rows-added", this.rowsUpdated.bind(this));
|
|
147
|
-
this.subscribe("row-moving", this.rowMoving.bind(this));
|
|
148
|
-
this.subscribe("row-adding-index", this.rowAddingIndex.bind(this));
|
|
149
|
-
|
|
150
|
-
this.subscribe("rows-sample", this.rowSample.bind(this));
|
|
151
|
-
|
|
152
|
-
this.subscribe("render-virtual-fill", this.virtualRenderFill.bind(this));
|
|
153
|
-
|
|
154
|
-
this.registerDisplayHandler(this.displayHandler, 20);
|
|
155
|
-
|
|
156
|
-
this.initialized = true;
|
|
157
164
|
}
|
|
158
165
|
}
|
|
159
166
|
|
|
@@ -218,23 +225,23 @@ class GroupRows extends Module{
|
|
|
218
225
|
|
|
219
226
|
setGroupBy(groups){
|
|
220
227
|
this.table.options.groupBy = groups;
|
|
221
|
-
this.
|
|
222
|
-
this.refreshData(
|
|
228
|
+
this.configureGroupSetup();
|
|
229
|
+
this.refreshData();
|
|
223
230
|
|
|
224
231
|
this.trackChanges();
|
|
225
232
|
}
|
|
226
233
|
|
|
227
234
|
setGroupValues(groupValues){
|
|
228
235
|
this.table.options.groupValues = groupValues;
|
|
229
|
-
this.
|
|
230
|
-
this.refreshData(
|
|
236
|
+
this.configureGroupSetup();
|
|
237
|
+
this.refreshData();
|
|
231
238
|
|
|
232
239
|
this.trackChanges();
|
|
233
240
|
}
|
|
234
241
|
|
|
235
242
|
setGroupStartOpen(values){
|
|
236
243
|
this.table.options.groupStartOpen = values;
|
|
237
|
-
this.
|
|
244
|
+
this.configureGroupSetup();
|
|
238
245
|
|
|
239
246
|
if(this.table.options.groupBy){
|
|
240
247
|
this.refreshData();
|
|
@@ -247,7 +254,7 @@ class GroupRows extends Module{
|
|
|
247
254
|
|
|
248
255
|
setGroupHeader(values){
|
|
249
256
|
this.table.options.groupHeader = values;
|
|
250
|
-
this.
|
|
257
|
+
this.configureGroupSetup();
|
|
251
258
|
|
|
252
259
|
if(this.table.options.groupBy){
|
|
253
260
|
this.refreshData();
|
|
@@ -328,16 +335,14 @@ class GroupRows extends Module{
|
|
|
328
335
|
|
|
329
336
|
//return appropriate rows with group headers
|
|
330
337
|
getRows(rows){
|
|
331
|
-
if(this.groupIDLookups.length){
|
|
338
|
+
if(this.table.options.groupBy && this.groupIDLookups.length){
|
|
332
339
|
|
|
333
|
-
|
|
334
|
-
this.dispatchExternal("dataGrouping");
|
|
340
|
+
this.dispatchExternal("dataGrouping");
|
|
335
341
|
|
|
336
|
-
|
|
342
|
+
this.generateGroups(rows);
|
|
337
343
|
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
}
|
|
344
|
+
if(this.subscribedExternal("dataGrouped")){
|
|
345
|
+
this.dispatchExternal("dataGrouped", this.getGroups(true));
|
|
341
346
|
}
|
|
342
347
|
|
|
343
348
|
return this.updateGroupRows();
|
|
@@ -445,7 +450,7 @@ class GroupRows extends Module{
|
|
|
445
450
|
var oldGroups = this.groups;
|
|
446
451
|
|
|
447
452
|
this.groups = {};
|
|
448
|
-
this.groupList =[];
|
|
453
|
+
this.groupList = [];
|
|
449
454
|
|
|
450
455
|
if(this.allowedValues && this.allowedValues[0]){
|
|
451
456
|
this.allowedValues[0].forEach((value) => {
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import Module from '../../core/Module.js';
|
|
2
|
+
import Row from '../../core/row/Row.js';
|
|
3
|
+
import Cell from '../../core/cell/Cell.js';
|
|
2
4
|
|
|
3
5
|
import defaultUndoers from './defaults/undoers.js';
|
|
4
6
|
import defaultRedoers from './defaults/redoers.js';
|
|
@@ -58,7 +60,7 @@ class History extends Module{
|
|
|
58
60
|
}
|
|
59
61
|
}
|
|
60
62
|
|
|
61
|
-
this.
|
|
63
|
+
this.action("rowDelete", row, {data:row.getData(), pos:!index, index:index});
|
|
62
64
|
}
|
|
63
65
|
|
|
64
66
|
cellUpdated(cell){
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import Module from '../../core/Module.js';
|
|
2
|
+
import Column from '../../core/column/Column.js';
|
|
2
3
|
|
|
3
4
|
class HtmlTableImport extends Module{
|
|
4
5
|
|
|
@@ -10,17 +11,17 @@ class HtmlTableImport extends Module{
|
|
|
10
11
|
}
|
|
11
12
|
|
|
12
13
|
initialize(){
|
|
13
|
-
this.
|
|
14
|
+
this.tableElementCheck();
|
|
14
15
|
}
|
|
15
16
|
|
|
16
17
|
tableElementCheck(){
|
|
17
|
-
if(this.table.
|
|
18
|
+
if(this.table.originalElement && this.table.originalElement.tagName === "TABLE"){
|
|
18
19
|
this.parseTable();
|
|
19
20
|
}
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
parseTable(){
|
|
23
|
-
var element = this.table.
|
|
24
|
+
var element = this.table.originalElement,
|
|
24
25
|
options = this.table.options,
|
|
25
26
|
columns = options.columns,
|
|
26
27
|
headers = element.getElementsByTagName("th"),
|
|
@@ -65,28 +66,9 @@ class HtmlTableImport extends Module{
|
|
|
65
66
|
data.push(item);
|
|
66
67
|
}
|
|
67
68
|
|
|
68
|
-
//create new element
|
|
69
|
-
var newElement = document.createElement("div");
|
|
70
|
-
|
|
71
|
-
//transfer attributes to new element
|
|
72
|
-
var attributes = element.attributes;
|
|
73
|
-
|
|
74
|
-
// loop through attributes and apply them on div
|
|
75
|
-
|
|
76
|
-
for(var i in attributes){
|
|
77
|
-
if(typeof attributes[i] == "object"){
|
|
78
|
-
newElement.setAttribute(attributes[i].name, attributes[i].value);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
// replace table with div element
|
|
83
|
-
element.parentNode.replaceChild(newElement, element);
|
|
84
|
-
|
|
85
69
|
options.data = data;
|
|
86
70
|
|
|
87
71
|
this.dispatchExternal("htmlImported");
|
|
88
|
-
|
|
89
|
-
this.table.element = newElement;
|
|
90
72
|
}
|
|
91
73
|
|
|
92
74
|
//extract tabulator attribute options
|
|
@@ -165,7 +165,9 @@ class MoveColumns extends Module{
|
|
|
165
165
|
}
|
|
166
166
|
|
|
167
167
|
startMove(e, column){
|
|
168
|
-
var element = column.getElement()
|
|
168
|
+
var element = column.getElement(),
|
|
169
|
+
headerElement = this.table.columnManager.getElement(),
|
|
170
|
+
headersElement = this.table.columnManager.getHeadersElement();
|
|
169
171
|
|
|
170
172
|
this.moving = column;
|
|
171
173
|
this.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(element).left;
|
|
@@ -186,7 +188,7 @@ class MoveColumns extends Module{
|
|
|
186
188
|
this.table.columnManager.getElement().appendChild(this.hoverElement);
|
|
187
189
|
|
|
188
190
|
this.hoverElement.style.left = "0";
|
|
189
|
-
this.hoverElement.style.bottom = "
|
|
191
|
+
this.hoverElement.style.bottom = (headerElement.clientHeight - headersElement.offsetHeight) + "px";
|
|
190
192
|
|
|
191
193
|
if(!this.touchMove){
|
|
192
194
|
this._bindMouseMove();
|
|
@@ -224,7 +226,7 @@ class MoveColumns extends Module{
|
|
|
224
226
|
column.getCells().forEach(function(cell, i){
|
|
225
227
|
var cellEl = cell.getElement(true);
|
|
226
228
|
|
|
227
|
-
if(cellEl.parentNode){
|
|
229
|
+
if(cellEl.parentNode && movingCells[i]){
|
|
228
230
|
cellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling);
|
|
229
231
|
}
|
|
230
232
|
});
|
|
@@ -232,7 +234,7 @@ class MoveColumns extends Module{
|
|
|
232
234
|
column.getCells().forEach(function(cell, i){
|
|
233
235
|
var cellEl = cell.getElement(true);
|
|
234
236
|
|
|
235
|
-
if(cellEl.parentNode){
|
|
237
|
+
if(cellEl.parentNode && movingCells[i]){
|
|
236
238
|
cellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl);
|
|
237
239
|
}
|
|
238
240
|
});
|
|
@@ -260,8 +260,6 @@ class Page extends Module{
|
|
|
260
260
|
pageSizes = this.table.options.paginationSizeSelector;
|
|
261
261
|
this.pageSizes = pageSizes;
|
|
262
262
|
|
|
263
|
-
console.log("gen",this.size)
|
|
264
|
-
|
|
265
263
|
if(this.pageSizes.indexOf(this.size) == -1){
|
|
266
264
|
pageSizes.unshift(this.size);
|
|
267
265
|
}
|
|
@@ -521,8 +519,6 @@ class Page extends Module{
|
|
|
521
519
|
this.generatePageSizeSelectList();
|
|
522
520
|
}
|
|
523
521
|
|
|
524
|
-
console.log("set", size, this.size)
|
|
525
|
-
|
|
526
522
|
this.trackChanges();
|
|
527
523
|
}
|
|
528
524
|
|
|
@@ -26,7 +26,8 @@ class ReactiveData extends Module{
|
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
watchData(data){
|
|
29
|
-
var
|
|
29
|
+
var self = this,
|
|
30
|
+
pushFunc, version;
|
|
30
31
|
|
|
31
32
|
this.currentVersion ++;
|
|
32
33
|
|
|
@@ -42,16 +43,16 @@ class ReactiveData extends Module{
|
|
|
42
43
|
Object.defineProperty(this.data, "push", {
|
|
43
44
|
enumerable: false,
|
|
44
45
|
configurable: true,
|
|
45
|
-
value: ()
|
|
46
|
+
value: function(){
|
|
46
47
|
var args = Array.from(arguments);
|
|
47
48
|
|
|
48
|
-
if(!
|
|
49
|
+
if(!self.blocked && version === self.currentVersion){
|
|
49
50
|
args.forEach((arg) => {
|
|
50
|
-
|
|
51
|
+
self.table.rowManager.addRowActual(arg, false);
|
|
51
52
|
});
|
|
52
53
|
}
|
|
53
54
|
|
|
54
|
-
return
|
|
55
|
+
return self.origFuncs.push.apply(data, arguments);
|
|
55
56
|
}
|
|
56
57
|
});
|
|
57
58
|
|
|
@@ -61,16 +62,16 @@ class ReactiveData extends Module{
|
|
|
61
62
|
Object.defineProperty(this.data, "unshift", {
|
|
62
63
|
enumerable: false,
|
|
63
64
|
configurable: true,
|
|
64
|
-
value: ()
|
|
65
|
+
value: function(){
|
|
65
66
|
var args = Array.from(arguments);
|
|
66
67
|
|
|
67
|
-
if(!
|
|
68
|
+
if(!self.blocked && version === self.currentVersion){
|
|
68
69
|
args.forEach((arg) => {
|
|
69
|
-
|
|
70
|
+
self.table.rowManager.addRowActual(arg, true);
|
|
70
71
|
});
|
|
71
72
|
}
|
|
72
73
|
|
|
73
|
-
return
|
|
74
|
+
return self.origFuncs.unshift.apply(data, arguments);
|
|
74
75
|
}
|
|
75
76
|
});
|
|
76
77
|
|
|
@@ -81,12 +82,12 @@ class ReactiveData extends Module{
|
|
|
81
82
|
Object.defineProperty(this.data, "shift", {
|
|
82
83
|
enumerable: false,
|
|
83
84
|
configurable: true,
|
|
84
|
-
value: ()
|
|
85
|
+
value: function(){
|
|
85
86
|
var row;
|
|
86
87
|
|
|
87
|
-
if(!
|
|
88
|
-
if(
|
|
89
|
-
row =
|
|
88
|
+
if(!self.blocked && version === self.currentVersion){
|
|
89
|
+
if(self.data.length){
|
|
90
|
+
row = self.table.rowManager.getRowFromDataObject(self.data[0]);
|
|
90
91
|
|
|
91
92
|
if(row){
|
|
92
93
|
row.deleteActual();
|
|
@@ -94,7 +95,7 @@ class ReactiveData extends Module{
|
|
|
94
95
|
}
|
|
95
96
|
}
|
|
96
97
|
|
|
97
|
-
return
|
|
98
|
+
return self.origFuncs.shift.call(data);
|
|
98
99
|
}
|
|
99
100
|
});
|
|
100
101
|
|
|
@@ -104,18 +105,18 @@ class ReactiveData extends Module{
|
|
|
104
105
|
Object.defineProperty(this.data, "pop", {
|
|
105
106
|
enumerable: false,
|
|
106
107
|
configurable: true,
|
|
107
|
-
value: ()
|
|
108
|
+
value: function(){
|
|
108
109
|
var row;
|
|
109
|
-
if(!
|
|
110
|
-
if(
|
|
111
|
-
row =
|
|
110
|
+
if(!self.blocked && version === self.currentVersion){
|
|
111
|
+
if(self.data.length){
|
|
112
|
+
row = self.table.rowManager.getRowFromDataObject(self.data[self.data.length - 1]);
|
|
112
113
|
|
|
113
114
|
if(row){
|
|
114
115
|
row.deleteActual();
|
|
115
116
|
}
|
|
116
117
|
}
|
|
117
118
|
}
|
|
118
|
-
return
|
|
119
|
+
return self.origFuncs.pop.call(data);
|
|
119
120
|
}
|
|
120
121
|
});
|
|
121
122
|
|
|
@@ -126,28 +127,28 @@ class ReactiveData extends Module{
|
|
|
126
127
|
Object.defineProperty(this.data, "splice", {
|
|
127
128
|
enumerable: false,
|
|
128
129
|
configurable: true,
|
|
129
|
-
value: ()
|
|
130
|
+
value: function(){
|
|
130
131
|
var args = Array.from(arguments),
|
|
131
132
|
start = args[0] < 0 ? data.length + args[0] : args[0],
|
|
132
133
|
end = args[1],
|
|
133
134
|
newRows = args[2] ? args.slice(2) : false,
|
|
134
135
|
startRow;
|
|
135
136
|
|
|
136
|
-
if(!
|
|
137
|
+
if(!self.blocked && version === self.currentVersion){
|
|
137
138
|
|
|
138
139
|
//add new rows
|
|
139
140
|
if(newRows){
|
|
140
|
-
startRow = data[start] ?
|
|
141
|
+
startRow = data[start] ? self.table.rowManager.getRowFromDataObject(data[start]) : false;
|
|
141
142
|
|
|
142
143
|
if(startRow){
|
|
143
144
|
newRows.forEach((rowData) => {
|
|
144
|
-
|
|
145
|
+
self.table.rowManager.addRowActual(rowData, true, startRow, true);
|
|
145
146
|
});
|
|
146
147
|
}else{
|
|
147
148
|
newRows = newRows.slice().reverse();
|
|
148
149
|
|
|
149
150
|
newRows.forEach((rowData) => {
|
|
150
|
-
|
|
151
|
+
self.table.rowManager.addRowActual(rowData, true, false, true);
|
|
151
152
|
});
|
|
152
153
|
}
|
|
153
154
|
}
|
|
@@ -157,7 +158,7 @@ class ReactiveData extends Module{
|
|
|
157
158
|
var oldRows = data.slice(start, typeof args[1] === "undefined" ? args[1] : start + end);
|
|
158
159
|
|
|
159
160
|
oldRows.forEach((rowData, i) => {
|
|
160
|
-
var row =
|
|
161
|
+
var row = self.table.rowManager.getRowFromDataObject(rowData);
|
|
161
162
|
|
|
162
163
|
if(row){
|
|
163
164
|
row.deleteActual(i !== oldRows.length - 1);
|
|
@@ -166,11 +167,11 @@ class ReactiveData extends Module{
|
|
|
166
167
|
}
|
|
167
168
|
|
|
168
169
|
if(newRows || end !== 0){
|
|
169
|
-
|
|
170
|
+
self.table.rowManager.reRenderInPosition();
|
|
170
171
|
}
|
|
171
172
|
}
|
|
172
173
|
|
|
173
|
-
return
|
|
174
|
+
return self.origFuncs.splice.apply(data, arguments);
|
|
174
175
|
}
|
|
175
176
|
});
|
|
176
177
|
}
|