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
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import Module from '../../core/Module.js';
|
|
2
2
|
import Helpers from '../../core/tools/Helpers.js';
|
|
3
3
|
|
|
4
|
-
import
|
|
4
|
+
import defaultAccessors from './defaults/accessors.js';
|
|
5
5
|
|
|
6
6
|
class Accessor extends Module{
|
|
7
7
|
|
|
8
8
|
constructor(table){
|
|
9
9
|
super(table);
|
|
10
10
|
|
|
11
|
-
this.allowedTypes = ["", "data", "download", "clipboard", "print", "htmlOutput"] //list of accessor types
|
|
11
|
+
this.allowedTypes = ["", "data", "download", "clipboard", "print", "htmlOutput"]; //list of accessor types
|
|
12
12
|
|
|
13
13
|
this.registerColumnOption("accessor");
|
|
14
14
|
this.registerColumnOption("accessorParams");
|
|
@@ -47,7 +47,7 @@ class Accessor extends Module{
|
|
|
47
47
|
config[key] = {
|
|
48
48
|
accessor:accessor,
|
|
49
49
|
params: column.definition[key + "Params"] || {},
|
|
50
|
-
}
|
|
50
|
+
};
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
});
|
|
@@ -63,16 +63,16 @@ class Accessor extends Module{
|
|
|
63
63
|
//set column accessor
|
|
64
64
|
switch(typeof value){
|
|
65
65
|
case "string":
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
66
|
+
if(Accessor.accessors[value]){
|
|
67
|
+
accessor = Accessor.accessors[value];
|
|
68
|
+
}else{
|
|
69
|
+
console.warn("Accessor Error - No such accessor found, ignoring: ", value);
|
|
70
|
+
}
|
|
71
|
+
break;
|
|
72
72
|
|
|
73
73
|
case "function":
|
|
74
|
-
|
|
75
|
-
|
|
74
|
+
accessor = value;
|
|
75
|
+
break;
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
return accessor;
|
|
@@ -87,7 +87,7 @@ class Accessor extends Module{
|
|
|
87
87
|
var data = Helpers.deepClone(row.data || {});
|
|
88
88
|
|
|
89
89
|
this.table.columnManager.traverse(function(column){
|
|
90
|
-
var value, accessor, params,
|
|
90
|
+
var value, accessor, params, colComponent;
|
|
91
91
|
|
|
92
92
|
if(column.modules.accessor){
|
|
93
93
|
|
|
@@ -97,9 +97,9 @@ class Accessor extends Module{
|
|
|
97
97
|
value = column.getFieldValue(data);
|
|
98
98
|
|
|
99
99
|
if(value != "undefined"){
|
|
100
|
-
|
|
101
|
-
params = typeof accessor.params === "function" ? accessor.params(value, data, type,
|
|
102
|
-
column.setFieldValue(data, accessor.accessor(value, data, type, params,
|
|
100
|
+
colComponent = column.getComponent();
|
|
101
|
+
params = typeof accessor.params === "function" ? accessor.params(value, data, type, colComponent, rowComponent) : accessor.params;
|
|
102
|
+
column.setFieldValue(data, accessor.accessor(value, data, type, params, colComponent, rowComponent));
|
|
103
103
|
}
|
|
104
104
|
}
|
|
105
105
|
}
|
|
@@ -111,6 +111,6 @@ class Accessor extends Module{
|
|
|
111
111
|
|
|
112
112
|
//load defaults
|
|
113
113
|
Accessor.moduleName = "accessor";
|
|
114
|
-
Accessor.accessors =
|
|
114
|
+
Accessor.accessors = defaultAccessors;
|
|
115
115
|
|
|
116
116
|
export default Accessor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export default {}
|
|
1
|
+
export default {};
|
|
@@ -95,7 +95,7 @@ class Ajax extends Module{
|
|
|
95
95
|
|
|
96
96
|
//load config object
|
|
97
97
|
generateConfig(config = {}){
|
|
98
|
-
var ajaxConfig = Object.assign({}, this.config)
|
|
98
|
+
var ajaxConfig = Object.assign({}, this.config);
|
|
99
99
|
|
|
100
100
|
if(typeof config == "string"){
|
|
101
101
|
ajaxConfig.method = config;
|
|
@@ -120,13 +120,13 @@ class Ajax extends Module{
|
|
|
120
120
|
sendRequest(url, params, config){
|
|
121
121
|
if(this.table.options.ajaxRequesting.call(this.table, url, params) !== false){
|
|
122
122
|
return this.loaderPromise(url, config, params)
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
123
|
+
.then((data)=>{
|
|
124
|
+
if(this.table.options.ajaxResponse){
|
|
125
|
+
data = this.table.options.ajaxResponse.call(this.table, url, params, data);
|
|
126
|
+
}
|
|
127
127
|
|
|
128
|
-
|
|
129
|
-
|
|
128
|
+
return data;
|
|
129
|
+
});
|
|
130
130
|
}else{
|
|
131
131
|
return Promise.reject();
|
|
132
132
|
}
|
|
@@ -61,27 +61,27 @@ export default function(url, config, params){
|
|
|
61
61
|
|
|
62
62
|
//send request
|
|
63
63
|
fetch(url, config)
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
64
|
+
.then((response)=>{
|
|
65
|
+
if(response.ok) {
|
|
66
|
+
response.json()
|
|
67
|
+
.then((data)=>{
|
|
68
|
+
resolve(data);
|
|
69
|
+
}).catch((error)=>{
|
|
70
|
+
reject(error);
|
|
71
|
+
console.warn("Ajax Load Error - Invalid JSON returned", error);
|
|
72
|
+
});
|
|
73
|
+
}else{
|
|
74
|
+
console.error("Ajax Load Error - Connection Error: " + response.status, response.statusText);
|
|
75
|
+
reject(response);
|
|
76
|
+
}
|
|
77
|
+
})
|
|
78
|
+
.catch((error)=>{
|
|
79
|
+
console.error("Ajax Load Error - Connection Error: ", error);
|
|
80
|
+
reject(error);
|
|
81
|
+
});
|
|
82
82
|
}else{
|
|
83
83
|
console.warn("Ajax Load Error - No URL Set");
|
|
84
84
|
resolve([]);
|
|
85
85
|
}
|
|
86
86
|
});
|
|
87
|
-
}
|
|
87
|
+
}
|
|
@@ -18,7 +18,7 @@ class Clipboard extends Module{
|
|
|
18
18
|
this.registerTableOption("clipboard", false); //enable clipboard
|
|
19
19
|
this.registerTableOption("clipboardCopyStyled", true); //formatted table data
|
|
20
20
|
this.registerTableOption("clipboardCopyConfig", false); //clipboard config
|
|
21
|
-
this.registerTableOption("clipboardCopyFormatter", false); //
|
|
21
|
+
this.registerTableOption("clipboardCopyFormatter", false); //DEPRECATED - REMOVE in 5.0
|
|
22
22
|
this.registerTableOption("clipboardCopyRowRange", "active"); //restrict clipboard to visible rows only
|
|
23
23
|
this.registerTableOption("clipboardPasteParser", "table"); //convert pasted clipboard data to rows
|
|
24
24
|
this.registerTableOption("clipboardPasteAction", "insert"); //how to insert pasted data into the table
|
|
@@ -47,9 +47,9 @@ class Clipboard extends Module{
|
|
|
47
47
|
}
|
|
48
48
|
}else{
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
list = this.table.modules.export.generateExportList(this.table.options.clipboardCopyConfig, this.table.options.clipboardCopyStyled, this.rowRange, "clipboard");
|
|
51
51
|
|
|
52
|
-
html = this.table.modules.export.
|
|
52
|
+
html = this.table.modules.export.generateHTMLTable(list);
|
|
53
53
|
plain = html ? this.generatePlainContent(list) : "";
|
|
54
54
|
|
|
55
55
|
if(this.table.options.clipboardCopyFormatter){
|
|
@@ -116,15 +116,15 @@ class Clipboard extends Module{
|
|
|
116
116
|
}else{
|
|
117
117
|
switch(typeof col.value){
|
|
118
118
|
case "object":
|
|
119
|
-
|
|
120
|
-
|
|
119
|
+
value = JSON.stringify(col.value);
|
|
120
|
+
break;
|
|
121
121
|
|
|
122
122
|
case "undefined":
|
|
123
|
-
|
|
124
|
-
|
|
123
|
+
value = "";
|
|
124
|
+
break;
|
|
125
125
|
|
|
126
126
|
default:
|
|
127
|
-
|
|
127
|
+
value = col.value;
|
|
128
128
|
}
|
|
129
129
|
}
|
|
130
130
|
}
|
|
@@ -139,7 +139,7 @@ class Clipboard extends Module{
|
|
|
139
139
|
}
|
|
140
140
|
|
|
141
141
|
copy (range, internal) {
|
|
142
|
-
var
|
|
142
|
+
var sel, textRange;
|
|
143
143
|
this.blocked = false;
|
|
144
144
|
this.customSelection = false;
|
|
145
145
|
|
|
@@ -177,32 +177,32 @@ class Clipboard extends Module{
|
|
|
177
177
|
|
|
178
178
|
switch(typeof action){
|
|
179
179
|
case "string":
|
|
180
|
-
|
|
180
|
+
this.pasteAction = Clipboard.pasteActions[action];
|
|
181
181
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
182
|
+
if(!this.pasteAction){
|
|
183
|
+
console.warn("Clipboard Error - No such paste action found:", action);
|
|
184
|
+
}
|
|
185
|
+
break;
|
|
186
186
|
|
|
187
187
|
case "function":
|
|
188
|
-
|
|
189
|
-
|
|
188
|
+
this.pasteAction = action;
|
|
189
|
+
break;
|
|
190
190
|
}
|
|
191
191
|
}
|
|
192
192
|
|
|
193
193
|
setPasteParser(parser){
|
|
194
194
|
switch(typeof parser){
|
|
195
195
|
case "string":
|
|
196
|
-
|
|
196
|
+
this.pasteParser = Clipboard.pasteParsers[parser];
|
|
197
197
|
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
198
|
+
if(!this.pasteParser){
|
|
199
|
+
console.warn("Clipboard Error - No such paste parser found:", parser);
|
|
200
|
+
}
|
|
201
|
+
break;
|
|
202
202
|
|
|
203
203
|
case "function":
|
|
204
|
-
|
|
205
|
-
|
|
204
|
+
this.pasteParser = parser;
|
|
205
|
+
break;
|
|
206
206
|
}
|
|
207
207
|
}
|
|
208
208
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
export default {
|
|
2
2
|
table:function(clipboard){
|
|
3
3
|
var data = [],
|
|
4
|
-
success = false,
|
|
5
4
|
headerFindSuccess = true,
|
|
6
5
|
columns = this.table.columnManager.columns,
|
|
7
6
|
columnMap = [],
|
|
@@ -15,7 +14,6 @@ export default {
|
|
|
15
14
|
});
|
|
16
15
|
|
|
17
16
|
if(data.length && !(data.length === 1 && data[0].length < 2)){
|
|
18
|
-
success = true;
|
|
19
17
|
|
|
20
18
|
//check if headers are present by title
|
|
21
19
|
data[0].forEach(function(value){
|
|
@@ -7,10 +7,10 @@ class CalcComponent{
|
|
|
7
7
|
if (typeof target[name] !== "undefined") {
|
|
8
8
|
return target[name];
|
|
9
9
|
}else{
|
|
10
|
-
return target._row.table.componentFunctionBinder.handle("row", target._row, name)
|
|
10
|
+
return target._row.table.componentFunctionBinder.handle("row", target._row, name);
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
|
-
})
|
|
13
|
+
});
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
getData(transform){
|
|
@@ -93,7 +93,7 @@ class ColumnCalcs extends Module{
|
|
|
93
93
|
|
|
94
94
|
rowsUpdated(row){
|
|
95
95
|
if(this.table.options.groupBy){
|
|
96
|
-
this.recalcRowGroup(
|
|
96
|
+
this.recalcRowGroup(row);
|
|
97
97
|
}else{
|
|
98
98
|
this.recalcActiveRows();
|
|
99
99
|
}
|
|
@@ -135,7 +135,7 @@ class ColumnCalcs extends Module{
|
|
|
135
135
|
|
|
136
136
|
//initialize column calcs
|
|
137
137
|
initializeColumn(column){
|
|
138
|
-
var def = column.definition
|
|
138
|
+
var def = column.definition;
|
|
139
139
|
|
|
140
140
|
var config = {
|
|
141
141
|
topCalcParams:def.topCalcParams || {},
|
|
@@ -146,16 +146,16 @@ class ColumnCalcs extends Module{
|
|
|
146
146
|
|
|
147
147
|
switch(typeof def.topCalc){
|
|
148
148
|
case "string":
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
149
|
+
if(ColumnCalcs.calculations[def.topCalc]){
|
|
150
|
+
config.topCalc = ColumnCalcs.calculations[def.topCalc];
|
|
151
|
+
}else{
|
|
152
|
+
console.warn("Column Calc Error - No such calculation found, ignoring: ", def.topCalc);
|
|
153
|
+
}
|
|
154
|
+
break;
|
|
155
155
|
|
|
156
156
|
case "function":
|
|
157
|
-
|
|
158
|
-
|
|
157
|
+
config.topCalc = def.topCalc;
|
|
158
|
+
break;
|
|
159
159
|
|
|
160
160
|
}
|
|
161
161
|
|
|
@@ -173,16 +173,16 @@ class ColumnCalcs extends Module{
|
|
|
173
173
|
if(def.bottomCalc){
|
|
174
174
|
switch(typeof def.bottomCalc){
|
|
175
175
|
case "string":
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
176
|
+
if(ColumnCalcs.calculations[def.bottomCalc]){
|
|
177
|
+
config.botCalc = ColumnCalcs.calculations[def.bottomCalc];
|
|
178
|
+
}else{
|
|
179
|
+
console.warn("Column Calc Error - No such calculation found, ignoring: ", def.bottomCalc);
|
|
180
|
+
}
|
|
181
|
+
break;
|
|
182
182
|
|
|
183
183
|
case "function":
|
|
184
|
-
|
|
185
|
-
|
|
184
|
+
config.botCalc = def.bottomCalc;
|
|
185
|
+
break;
|
|
186
186
|
|
|
187
187
|
}
|
|
188
188
|
|
|
@@ -199,7 +199,7 @@ class ColumnCalcs extends Module{
|
|
|
199
199
|
}
|
|
200
200
|
|
|
201
201
|
//dummy functions to handle being mock column manager
|
|
202
|
-
registerColumnField(){}
|
|
202
|
+
registerColumnField(){}
|
|
203
203
|
|
|
204
204
|
removeCalcs(){
|
|
205
205
|
var changed = false;
|
|
@@ -237,7 +237,11 @@ class ColumnCalcs extends Module{
|
|
|
237
237
|
|
|
238
238
|
scrollHorizontal(left){
|
|
239
239
|
if(this.botInitialized && this.botRow){
|
|
240
|
-
this.
|
|
240
|
+
if(this.table.rtl){
|
|
241
|
+
this.botRow.getElement().style.marginRight = (left) + "px";
|
|
242
|
+
}else{
|
|
243
|
+
this.botRow.getElement().style.marginLeft = (-left) + "px";
|
|
244
|
+
}
|
|
241
245
|
}
|
|
242
246
|
}
|
|
243
247
|
|
|
@@ -252,7 +256,7 @@ class ColumnCalcs extends Module{
|
|
|
252
256
|
this.topRow.deleteCells();
|
|
253
257
|
}
|
|
254
258
|
|
|
255
|
-
row = this.generateRow("top",
|
|
259
|
+
row = this.generateRow("top", data);
|
|
256
260
|
this.topRow = row;
|
|
257
261
|
while(this.topElement.firstChild) this.topElement.removeChild(this.topElement.firstChild);
|
|
258
262
|
this.topElement.appendChild(row.getElement());
|
|
@@ -264,7 +268,7 @@ class ColumnCalcs extends Module{
|
|
|
264
268
|
this.botRow.deleteCells();
|
|
265
269
|
}
|
|
266
270
|
|
|
267
|
-
row = this.generateRow("bottom",
|
|
271
|
+
row = this.generateRow("bottom", data);
|
|
268
272
|
this.botRow = row;
|
|
269
273
|
while(this.botElement.firstChild) this.botElement.removeChild(this.botElement.firstChild);
|
|
270
274
|
this.botElement.appendChild(row.getElement());
|
|
@@ -384,38 +388,38 @@ class ColumnCalcs extends Module{
|
|
|
384
388
|
|
|
385
389
|
this.table.columnManager.columnsByIndex.forEach((column) => {
|
|
386
390
|
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
391
|
+
//set field name of mock column
|
|
392
|
+
this.genColumn.setField(column.getField());
|
|
393
|
+
this.genColumn.hozAlign = column.hozAlign;
|
|
390
394
|
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
395
|
+
if(column.definition[pos + "CalcFormatter"] && this.table.modExists("format")){
|
|
396
|
+
this.genColumn.modules.format = {
|
|
397
|
+
formatter: this.table.modules.format.getFormatter(column.definition[pos + "CalcFormatter"]),
|
|
398
|
+
params: column.definition[pos + "CalcFormatterParams"] || {},
|
|
399
|
+
};
|
|
400
|
+
}else{
|
|
401
|
+
this.genColumn.modules.format = {
|
|
402
|
+
formatter: this.table.modules.format.getFormatter("plaintext"),
|
|
403
|
+
params:{}
|
|
404
|
+
};
|
|
405
|
+
}
|
|
402
406
|
|
|
403
|
-
|
|
404
|
-
|
|
407
|
+
//ensure css class definition is replicated to calculation cell
|
|
408
|
+
this.genColumn.definition.cssClass = column.definition.cssClass;
|
|
405
409
|
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
410
|
+
//generate cell and assign to correct column
|
|
411
|
+
var cell = new Cell(this.genColumn, row);
|
|
412
|
+
cell.getElement();
|
|
413
|
+
cell.column = column;
|
|
414
|
+
cell.setWidth();
|
|
411
415
|
|
|
412
|
-
|
|
413
|
-
|
|
416
|
+
column.cells.push(cell);
|
|
417
|
+
cells.push(cell);
|
|
414
418
|
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
+
if(!column.visible){
|
|
420
|
+
cell.hide();
|
|
421
|
+
}
|
|
422
|
+
});
|
|
419
423
|
|
|
420
424
|
row.cells = cells;
|
|
421
425
|
};
|
|
@@ -481,7 +485,7 @@ class ColumnCalcs extends Module{
|
|
|
481
485
|
results = {
|
|
482
486
|
top: this.topRow ? this.topRow.getData() : {},
|
|
483
487
|
bottom: this.botRow ? this.botRow.getData() : {},
|
|
484
|
-
}
|
|
488
|
+
};
|
|
485
489
|
}
|
|
486
490
|
|
|
487
491
|
return results;
|
|
@@ -502,7 +506,7 @@ class ColumnCalcs extends Module{
|
|
|
502
506
|
top: groupObj.calcs.top ? groupObj.calcs.top.getData() : {},
|
|
503
507
|
bottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {},
|
|
504
508
|
groups: subGroupResults,
|
|
505
|
-
}
|
|
509
|
+
};
|
|
506
510
|
|
|
507
511
|
return results;
|
|
508
512
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export default {
|
|
2
2
|
"avg":function(values, data, calcParams){
|
|
3
3
|
var output = 0,
|
|
4
|
-
precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : 2
|
|
4
|
+
precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : 2;
|
|
5
5
|
|
|
6
6
|
if(values.length){
|
|
7
7
|
output = values.reduce(function(sum, value){
|
|
@@ -2,6 +2,8 @@ import Module from '../../core/Module.js';
|
|
|
2
2
|
|
|
3
3
|
import Row from '../../core/row/Row.js';
|
|
4
4
|
|
|
5
|
+
import RowComponent from '../../core/row/RowComponent.js';
|
|
6
|
+
|
|
5
7
|
class DataTree extends Module{
|
|
6
8
|
|
|
7
9
|
constructor(table){
|
|
@@ -29,7 +31,7 @@ class DataTree extends Module{
|
|
|
29
31
|
this.registerTableOption("dataTreeExpandElement", false);//data tree row expand element
|
|
30
32
|
this.registerTableOption("dataTreeStartExpanded", false);
|
|
31
33
|
this.registerTableOption("dataTreeChildColumnCalcs", false);//include visible data tree rows in column calculations
|
|
32
|
-
this.registerTableOption("dataTreeSelectPropagate", false);//
|
|
34
|
+
this.registerTableOption("dataTreeSelectPropagate", false);//selecting a parent row selects its children
|
|
33
35
|
|
|
34
36
|
//register component functions
|
|
35
37
|
this.registerComponentFunction("row", "treeCollapse", this.collapseRow.bind(this));
|
|
@@ -49,6 +51,10 @@ class DataTree extends Module{
|
|
|
49
51
|
this.field = options.dataTreeChildField;
|
|
50
52
|
this.indent = options.dataTreeChildIndent;
|
|
51
53
|
|
|
54
|
+
if(this.options("movableRows")){
|
|
55
|
+
console.warn("The movableRows option is not available with dataTree enabled, moving of child rows could result in unpredictable behavior");
|
|
56
|
+
}
|
|
57
|
+
|
|
52
58
|
if(options.dataTreeBranchElement){
|
|
53
59
|
|
|
54
60
|
if(options.dataTreeBranchElement === true){
|
|
@@ -98,20 +104,20 @@ class DataTree extends Module{
|
|
|
98
104
|
|
|
99
105
|
switch(typeof options.dataTreeStartExpanded){
|
|
100
106
|
case "boolean":
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
107
|
+
this.startOpen = function(row, index){
|
|
108
|
+
return options.dataTreeStartExpanded;
|
|
109
|
+
};
|
|
110
|
+
break;
|
|
105
111
|
|
|
106
112
|
case "function":
|
|
107
|
-
|
|
108
|
-
|
|
113
|
+
this.startOpen = options.dataTreeStartExpanded;
|
|
114
|
+
break;
|
|
109
115
|
|
|
110
116
|
default:
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
117
|
+
this.startOpen = function(row, index){
|
|
118
|
+
return options.dataTreeStartExpanded[index];
|
|
119
|
+
};
|
|
120
|
+
break;
|
|
115
121
|
}
|
|
116
122
|
|
|
117
123
|
this.subscribe("row-init", this.initializeRow.bind(this));
|
|
@@ -257,9 +263,10 @@ class DataTree extends Module{
|
|
|
257
263
|
|
|
258
264
|
generateControlElement(row, el){
|
|
259
265
|
var config = row.modules.dataTree,
|
|
260
|
-
el = el || row.getCells()[0].getElement(),
|
|
261
266
|
oldControl = config.controlEl;
|
|
262
267
|
|
|
268
|
+
el = el || row.getCells()[0].getElement();
|
|
269
|
+
|
|
263
270
|
if(config.children !== false){
|
|
264
271
|
|
|
265
272
|
if(config.open){
|
|
@@ -433,7 +440,7 @@ class DataTree extends Module{
|
|
|
433
440
|
}
|
|
434
441
|
|
|
435
442
|
getTreeParentRoot(row){
|
|
436
|
-
return row.modules.dataTree.parent ? this.getTreeParentRoot(row.modules.dataTree.parent) : row;
|
|
443
|
+
return row.modules.dataTree && row.modules.dataTree.parent ? this.getTreeParentRoot(row.modules.dataTree.parent) : row;
|
|
437
444
|
}
|
|
438
445
|
|
|
439
446
|
getFilteredTreeChildren(row){
|
|
@@ -540,10 +547,12 @@ class DataTree extends Module{
|
|
|
540
547
|
match = match.data;
|
|
541
548
|
}
|
|
542
549
|
}
|
|
550
|
+
}else if(subject === null){
|
|
551
|
+
match = false;
|
|
543
552
|
}
|
|
544
553
|
|
|
545
|
-
}else if(typeof subject == "undefined"
|
|
546
|
-
match = false
|
|
554
|
+
}else if(typeof subject == "undefined"){
|
|
555
|
+
match = false;
|
|
547
556
|
}else{
|
|
548
557
|
//subject should be treated as the index of the row
|
|
549
558
|
match = parent.data[this.field].find((row) => {
|
|
@@ -7,7 +7,10 @@ class Download extends Module{
|
|
|
7
7
|
constructor(table){
|
|
8
8
|
super(table);
|
|
9
9
|
|
|
10
|
-
this.registerTableOption("
|
|
10
|
+
this.registerTableOption("downloadEncoder", function(data, mimeType){
|
|
11
|
+
return new Blob([data],{type:mimeType});
|
|
12
|
+
}); //function to manipulate download data
|
|
13
|
+
this.registerTableOption("downloadReady", undefined); //warn of function deprecation
|
|
11
14
|
this.registerTableOption("downloadConfig", {}); //download config
|
|
12
15
|
this.registerTableOption("downloadRowRange", "active"); //restrict download to active rows only
|
|
13
16
|
|
|
@@ -16,10 +19,16 @@ class Download extends Module{
|
|
|
16
19
|
}
|
|
17
20
|
|
|
18
21
|
initialize(){
|
|
22
|
+
this.deprecatedOptionsCheck();
|
|
23
|
+
|
|
19
24
|
this.registerTableFunction("download", this.download.bind(this));
|
|
20
25
|
this.registerTableFunction("downloadToTab", this.downloadToTab.bind(this));
|
|
21
26
|
}
|
|
22
27
|
|
|
28
|
+
deprecatedOptionsCheck(){
|
|
29
|
+
this.deprecationCheck("downloadReady", "downloadEncoder");
|
|
30
|
+
}
|
|
31
|
+
|
|
23
32
|
///////////////////////////////////
|
|
24
33
|
///////// Table Functions /////////
|
|
25
34
|
///////////////////////////////////
|
|
@@ -93,16 +102,14 @@ class Download extends Module{
|
|
|
93
102
|
|
|
94
103
|
triggerDownload(data, mime, type, filename, newTab){
|
|
95
104
|
var element = document.createElement('a'),
|
|
96
|
-
blob =
|
|
97
|
-
filename = filename || "Tabulator." + (typeof type === "function" ? "txt" : type);
|
|
98
|
-
|
|
99
|
-
blob = this.table.options.downloadReady(data, blob);
|
|
105
|
+
blob = this.table.options.downloadEncoder(data, mime);
|
|
100
106
|
|
|
101
107
|
if(blob){
|
|
102
|
-
|
|
103
108
|
if(newTab){
|
|
104
109
|
window.open(window.URL.createObjectURL(blob));
|
|
105
110
|
}else{
|
|
111
|
+
filename = filename || "Tabulator." + (typeof type === "function" ? "txt" : type);
|
|
112
|
+
|
|
106
113
|
if(navigator.msSaveOrOpenBlob){
|
|
107
114
|
navigator.msSaveOrOpenBlob(blob, filename);
|
|
108
115
|
}else{
|
|
@@ -128,8 +135,8 @@ class Download extends Module{
|
|
|
128
135
|
commsReceived(table, action, data){
|
|
129
136
|
switch(action){
|
|
130
137
|
case "intercept":
|
|
131
|
-
|
|
132
|
-
|
|
138
|
+
this.download(data.type, "", data.options, data.active, data.intercept);
|
|
139
|
+
break;
|
|
133
140
|
}
|
|
134
141
|
}
|
|
135
142
|
}
|