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
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
//input element
|
|
2
|
+
export default function(cell, onRendered, success, cancel, editorParams){
|
|
3
|
+
var inputFormat = editorParams.format,
|
|
4
|
+
DT = inputFormat ? (window.DateTime || luxon.DateTime) : null,
|
|
5
|
+
newDatetime;
|
|
6
|
+
|
|
7
|
+
//create and style input
|
|
8
|
+
var cellValue = cell.getValue(),
|
|
9
|
+
input = document.createElement("input");
|
|
10
|
+
|
|
11
|
+
input.type = "time";
|
|
12
|
+
input.style.padding = "4px";
|
|
13
|
+
input.style.width = "100%";
|
|
14
|
+
input.style.boxSizing = "border-box";
|
|
15
|
+
|
|
16
|
+
if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){
|
|
17
|
+
for (let key in editorParams.elementAttributes){
|
|
18
|
+
if(key.charAt(0) == "+"){
|
|
19
|
+
key = key.slice(1);
|
|
20
|
+
input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
|
|
21
|
+
}else{
|
|
22
|
+
input.setAttribute(key, editorParams.elementAttributes[key]);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
cellValue = typeof cellValue !== "undefined" ? cellValue : "";
|
|
28
|
+
|
|
29
|
+
if(inputFormat){
|
|
30
|
+
if(DT){
|
|
31
|
+
if(DT.isDateTime(cellValue)){
|
|
32
|
+
newDatetime = cellValue;
|
|
33
|
+
}else if(inputFormat === "iso"){
|
|
34
|
+
newDatetime = DT.fromISO(String(cellValue));
|
|
35
|
+
}else{
|
|
36
|
+
newDatetime = DT.fromFormat(String(cellValue), inputFormat);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
cellValue = newDatetime.toFormat("hh:mm");
|
|
40
|
+
|
|
41
|
+
}else{
|
|
42
|
+
console.error("Editor Error - 'date' editor 'inputFormat' param is dependant on luxon.js");
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
input.value = cellValue;
|
|
47
|
+
|
|
48
|
+
onRendered(function(){
|
|
49
|
+
input.focus({preventScroll: true});
|
|
50
|
+
input.style.height = "100%";
|
|
51
|
+
|
|
52
|
+
if(editorParams.selectContents){
|
|
53
|
+
input.select();
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
function onChange(e){
|
|
58
|
+
var value = input.value;
|
|
59
|
+
|
|
60
|
+
if(((cellValue === null || typeof cellValue === "undefined") && value !== "") || value !== cellValue){
|
|
61
|
+
|
|
62
|
+
if(value && inputFormat){
|
|
63
|
+
value = DT.fromFormat(String(value), "hh:mm").toFormat(inputFormat);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if(success(value)){
|
|
67
|
+
cellValue = input.value; //persist value if successfully validated incase editor is used as header filter
|
|
68
|
+
}
|
|
69
|
+
}else{
|
|
70
|
+
cancel();
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
//submit new value on blur or change
|
|
75
|
+
input.addEventListener("change", onChange);
|
|
76
|
+
input.addEventListener("blur", onChange);
|
|
77
|
+
|
|
78
|
+
//submit new value on enter
|
|
79
|
+
input.addEventListener("keydown", function(e){
|
|
80
|
+
switch(e.keyCode){
|
|
81
|
+
// case 9:
|
|
82
|
+
case 13:
|
|
83
|
+
onChange(e);
|
|
84
|
+
break;
|
|
85
|
+
|
|
86
|
+
case 27:
|
|
87
|
+
cancel();
|
|
88
|
+
break;
|
|
89
|
+
|
|
90
|
+
case 35:
|
|
91
|
+
case 36:
|
|
92
|
+
e.stopPropagation();
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
return input;
|
|
98
|
+
}
|
|
@@ -2,6 +2,9 @@ import input from './editors/input.js';
|
|
|
2
2
|
import textarea from './editors/textarea.js';
|
|
3
3
|
import number from './editors/number.js';
|
|
4
4
|
import range from './editors/range.js';
|
|
5
|
+
import date from './editors/date.js';
|
|
6
|
+
import time from './editors/time.js';
|
|
7
|
+
import datetime from './editors/datetime.js';
|
|
5
8
|
import select from './editors/select.js';
|
|
6
9
|
import list from './editors/list.js';
|
|
7
10
|
import autocomplete from './editors/autocomplete.js';
|
|
@@ -12,8 +15,11 @@ import tickCross from './editors/tickCross.js';
|
|
|
12
15
|
export default {
|
|
13
16
|
input:input,
|
|
14
17
|
textarea:textarea,
|
|
15
|
-
|
|
16
|
-
|
|
18
|
+
number:number,
|
|
19
|
+
range:range,
|
|
20
|
+
date:date,
|
|
21
|
+
time:time,
|
|
22
|
+
datetime:datetime,
|
|
17
23
|
select:select,
|
|
18
24
|
list:list,
|
|
19
25
|
autocomplete:autocomplete,
|
|
@@ -2,8 +2,7 @@ export default function maskInput(el, options){
|
|
|
2
2
|
var mask = options.mask,
|
|
3
3
|
maskLetter = typeof options.maskLetterChar !== "undefined" ? options.maskLetterChar : "A",
|
|
4
4
|
maskNumber = typeof options.maskNumberChar !== "undefined" ? options.maskNumberChar : "9",
|
|
5
|
-
maskWildcard = typeof options.maskWildcardChar !== "undefined" ? options.maskWildcardChar : "*"
|
|
6
|
-
success = false;
|
|
5
|
+
maskWildcard = typeof options.maskWildcardChar !== "undefined" ? options.maskWildcardChar : "*";
|
|
7
6
|
|
|
8
7
|
function fillSymbols(index){
|
|
9
8
|
var symbol = mask[index];
|
|
@@ -21,42 +20,36 @@ export default function maskInput(el, options){
|
|
|
21
20
|
if(index >= mask.length){
|
|
22
21
|
e.preventDefault();
|
|
23
22
|
e.stopPropagation();
|
|
24
|
-
success = false;
|
|
25
23
|
return false;
|
|
26
24
|
}else{
|
|
27
25
|
switch(mask[index]){
|
|
28
26
|
case maskLetter:
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
break;
|
|
27
|
+
if(char.toUpperCase() == char.toLowerCase()){
|
|
28
|
+
e.preventDefault();
|
|
29
|
+
e.stopPropagation();
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
break;
|
|
36
33
|
|
|
37
34
|
case maskNumber:
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
break;
|
|
35
|
+
if(isNaN(char)){
|
|
36
|
+
e.preventDefault();
|
|
37
|
+
e.stopPropagation();
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
break;
|
|
45
41
|
|
|
46
42
|
case maskWildcard:
|
|
47
|
-
|
|
43
|
+
break;
|
|
48
44
|
|
|
49
45
|
default:
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}
|
|
46
|
+
if(char !== mask[index]){
|
|
47
|
+
e.preventDefault();
|
|
48
|
+
e.stopPropagation();
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
56
51
|
}
|
|
57
52
|
}
|
|
58
|
-
|
|
59
|
-
success = true;
|
|
60
53
|
}
|
|
61
54
|
|
|
62
55
|
return;
|
|
@@ -12,7 +12,7 @@ class Export extends Module{
|
|
|
12
12
|
this.cloneTableStyle = true;
|
|
13
13
|
this.colVisProp = "";
|
|
14
14
|
|
|
15
|
-
this.registerTableOption("htmlOutputConfig", false); //html
|
|
15
|
+
this.registerTableOption("htmlOutputConfig", false); //html output config
|
|
16
16
|
|
|
17
17
|
this.registerColumnOption("htmlOutput");
|
|
18
18
|
this.registerColumnOption("titleHtmlOutput");
|
|
@@ -42,10 +42,10 @@ class Export extends Module{
|
|
|
42
42
|
return headers.concat(body);
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
generateTable(config, style, range, colVisProp){
|
|
46
46
|
var list = this.generateExportList(config, style, range, colVisProp);
|
|
47
47
|
|
|
48
|
-
return this.
|
|
48
|
+
return this.generateTableElement(list);
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
rowLookup(range){
|
|
@@ -63,24 +63,24 @@ class Export extends Module{
|
|
|
63
63
|
switch(range){
|
|
64
64
|
case true:
|
|
65
65
|
case "visible":
|
|
66
|
-
|
|
67
|
-
|
|
66
|
+
rows = this.table.rowManager.getVisibleRows(false, true);
|
|
67
|
+
break;
|
|
68
68
|
|
|
69
69
|
case "all":
|
|
70
|
-
|
|
71
|
-
|
|
70
|
+
rows = this.table.rowManager.rows;
|
|
71
|
+
break;
|
|
72
72
|
|
|
73
73
|
case "selected":
|
|
74
|
-
|
|
75
|
-
|
|
74
|
+
rows = this.table.modules.selectRow.selectedRows;
|
|
75
|
+
break;
|
|
76
76
|
|
|
77
77
|
case "active":
|
|
78
78
|
default:
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
79
|
+
if(this.table.options.pagination){
|
|
80
|
+
rows = this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length - 2);
|
|
81
|
+
}else{
|
|
82
|
+
rows = this.table.rowManager.getDisplayRows();
|
|
83
|
+
}
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
86
|
|
|
@@ -148,7 +148,13 @@ class Export extends Module{
|
|
|
148
148
|
}
|
|
149
149
|
|
|
150
150
|
columnVisCheck(column){
|
|
151
|
-
|
|
151
|
+
var visProp = column.definition[this.colVisProp];
|
|
152
|
+
|
|
153
|
+
if(typeof visProp === "function"){
|
|
154
|
+
visProp = visProp.call(this.table, column.getComponent());
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
return visProp !== false && (column.visible || (!column.visible && visProp));
|
|
152
158
|
}
|
|
153
159
|
|
|
154
160
|
headersToExportRows(columns){
|
|
@@ -192,7 +198,7 @@ class Export extends Module{
|
|
|
192
198
|
}
|
|
193
199
|
}
|
|
194
200
|
|
|
195
|
-
//calculate maximum header
|
|
201
|
+
//calculate maximum header depth
|
|
196
202
|
columns.forEach(function(column){
|
|
197
203
|
if(column.depth > headerDepth){
|
|
198
204
|
headerDepth = column.depth;
|
|
@@ -245,16 +251,13 @@ class Export extends Module{
|
|
|
245
251
|
rows = rows.filter((row) => {
|
|
246
252
|
switch(row.type){
|
|
247
253
|
case "group":
|
|
248
|
-
|
|
249
|
-
break;
|
|
254
|
+
return this.config.rowGroups !== false;
|
|
250
255
|
|
|
251
256
|
case "calc":
|
|
252
|
-
|
|
253
|
-
break;
|
|
257
|
+
return this.config.columnCalcs !== false;
|
|
254
258
|
|
|
255
259
|
case "row":
|
|
256
|
-
|
|
257
|
-
break;
|
|
260
|
+
return !(this.table.options.dataTree && this.config.dataTree === false && row.modules.dataTree.parent);
|
|
258
261
|
}
|
|
259
262
|
|
|
260
263
|
return true;
|
|
@@ -267,20 +270,20 @@ class Export extends Module{
|
|
|
267
270
|
|
|
268
271
|
switch(row.type){
|
|
269
272
|
case "group":
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
+
indent = row.level;
|
|
274
|
+
exportCols.push(new ExportColumn(row.key, row.getComponent(), columns.length, 1));
|
|
275
|
+
break;
|
|
273
276
|
|
|
274
277
|
case "calc" :
|
|
275
278
|
case "row" :
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
+
columns.forEach((col) => {
|
|
280
|
+
exportCols.push(new ExportColumn(col._column.getFieldValue(rowData), col, 1, 1));
|
|
281
|
+
});
|
|
279
282
|
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
283
|
+
if(this.table.options.dataTree && this.config.dataTree !== false){
|
|
284
|
+
indent = row.modules.dataTree.index;
|
|
285
|
+
}
|
|
286
|
+
break;
|
|
284
287
|
}
|
|
285
288
|
|
|
286
289
|
exportRows.push(new ExportRow(row.type, exportCols, row.getComponent(), indent));
|
|
@@ -289,7 +292,7 @@ class Export extends Module{
|
|
|
289
292
|
return exportRows;
|
|
290
293
|
}
|
|
291
294
|
|
|
292
|
-
|
|
295
|
+
generateTableElement(list){
|
|
293
296
|
var table = document.createElement("table"),
|
|
294
297
|
headerEl = document.createElement("thead"),
|
|
295
298
|
bodyEl = document.createElement("tbody"),
|
|
@@ -320,24 +323,27 @@ class Export extends Module{
|
|
|
320
323
|
}
|
|
321
324
|
|
|
322
325
|
list.forEach((row, i) => {
|
|
326
|
+
let rowEl;
|
|
327
|
+
|
|
323
328
|
switch(row.type){
|
|
324
329
|
case "header":
|
|
325
|
-
|
|
326
|
-
|
|
330
|
+
headerEl.appendChild(this.generateHeaderElement(row, setup, styles));
|
|
331
|
+
break;
|
|
327
332
|
|
|
328
333
|
case "group":
|
|
329
|
-
|
|
330
|
-
|
|
334
|
+
bodyEl.appendChild(this.generateGroupElement(row, setup, styles));
|
|
335
|
+
break;
|
|
331
336
|
|
|
332
337
|
case "calc":
|
|
333
|
-
|
|
334
|
-
|
|
338
|
+
bodyEl.appendChild(this.generateCalcElement(row, setup, styles));
|
|
339
|
+
break;
|
|
335
340
|
|
|
336
341
|
case "row":
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
342
|
+
rowEl = this.generateRowElement(row, setup, styles);
|
|
343
|
+
|
|
344
|
+
this.mapElementStyles(((i % 2) && styles.evenRow) ? styles.evenRow : styles.oddRow, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]);
|
|
345
|
+
bodyEl.appendChild(rowEl);
|
|
346
|
+
break;
|
|
341
347
|
}
|
|
342
348
|
});
|
|
343
349
|
|
|
@@ -373,7 +379,7 @@ class Export extends Module{
|
|
|
373
379
|
return styles;
|
|
374
380
|
}
|
|
375
381
|
|
|
376
|
-
|
|
382
|
+
generateHeaderElement(row, setup, styles){
|
|
377
383
|
var rowEl = document.createElement("tr");
|
|
378
384
|
|
|
379
385
|
row.columns.forEach((column) => {
|
|
@@ -416,7 +422,7 @@ class Export extends Module{
|
|
|
416
422
|
return rowEl;
|
|
417
423
|
}
|
|
418
424
|
|
|
419
|
-
|
|
425
|
+
generateGroupElement(row, setup, styles){
|
|
420
426
|
|
|
421
427
|
var rowEl = document.createElement("tr"),
|
|
422
428
|
cellEl = document.createElement("td"),
|
|
@@ -427,9 +433,7 @@ class Export extends Module{
|
|
|
427
433
|
if(setup.groupHeader && setup.groupHeader[row.indent]){
|
|
428
434
|
group.value = setup.groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);
|
|
429
435
|
}else{
|
|
430
|
-
if(setup.groupHeader
|
|
431
|
-
group.value = group.value;
|
|
432
|
-
}else{
|
|
436
|
+
if(setup.groupHeader !== false){
|
|
433
437
|
group.value = row.component._group.generator(group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);
|
|
434
438
|
}
|
|
435
439
|
}
|
|
@@ -452,8 +456,8 @@ class Export extends Module{
|
|
|
452
456
|
return rowEl;
|
|
453
457
|
}
|
|
454
458
|
|
|
455
|
-
|
|
456
|
-
var rowEl = this.
|
|
459
|
+
generateCalcElement(row, setup, styles){
|
|
460
|
+
var rowEl = this.generateRowElement(row, setup, styles);
|
|
457
461
|
|
|
458
462
|
rowEl.classList.add("tabulator-print-table-calcs");
|
|
459
463
|
this.mapElementStyles(styles.calcRow, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]);
|
|
@@ -461,17 +465,18 @@ class Export extends Module{
|
|
|
461
465
|
return rowEl;
|
|
462
466
|
}
|
|
463
467
|
|
|
464
|
-
|
|
468
|
+
generateRowElement(row, setup, styles){
|
|
465
469
|
var rowEl = document.createElement("tr");
|
|
466
470
|
|
|
467
471
|
rowEl.classList.add("tabulator-print-table-row");
|
|
468
472
|
|
|
469
|
-
row.columns.forEach((col) => {
|
|
473
|
+
row.columns.forEach((col, i) => {
|
|
470
474
|
if(col){
|
|
471
475
|
var cellEl = document.createElement("td"),
|
|
472
476
|
column = col.component._column,
|
|
473
477
|
index = this.table.columnManager.findColumnIndex(column),
|
|
474
|
-
value = col.value
|
|
478
|
+
value = col.value,
|
|
479
|
+
cellStyle;
|
|
475
480
|
|
|
476
481
|
var cellWrapper = {
|
|
477
482
|
modules:{},
|
|
@@ -510,15 +515,12 @@ class Export extends Module{
|
|
|
510
515
|
}else{
|
|
511
516
|
switch(typeof value){
|
|
512
517
|
case "object":
|
|
513
|
-
|
|
514
|
-
|
|
518
|
+
value = value !== null ? JSON.stringify(value) : "";
|
|
519
|
+
break;
|
|
515
520
|
|
|
516
521
|
case "undefined":
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
default:
|
|
521
|
-
value = value;
|
|
522
|
+
value = "";
|
|
523
|
+
break;
|
|
522
524
|
}
|
|
523
525
|
}
|
|
524
526
|
|
|
@@ -528,8 +530,10 @@ class Export extends Module{
|
|
|
528
530
|
cellEl.innerHTML = value;
|
|
529
531
|
}
|
|
530
532
|
|
|
531
|
-
|
|
532
|
-
|
|
533
|
+
cellStyle = styles.styleCells && styles.styleCells[index] ? styles.styleCells[index] : styles.firstCell;
|
|
534
|
+
|
|
535
|
+
if(cellStyle){
|
|
536
|
+
this.mapElementStyles(cellStyle, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom", "border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "text-align"]);
|
|
533
537
|
|
|
534
538
|
if(column.definition.align){
|
|
535
539
|
cellEl.style.textAlign = column.definition.align;
|
|
@@ -562,10 +566,10 @@ class Export extends Module{
|
|
|
562
566
|
return rowEl;
|
|
563
567
|
}
|
|
564
568
|
|
|
565
|
-
|
|
569
|
+
generateHTMLTable(list){
|
|
566
570
|
var holder = document.createElement("div");
|
|
567
571
|
|
|
568
|
-
holder.appendChild(this.
|
|
572
|
+
holder.appendChild(this.generateTableElement(list));
|
|
569
573
|
|
|
570
574
|
return holder.innerHTML;
|
|
571
575
|
}
|
|
@@ -573,7 +577,7 @@ class Export extends Module{
|
|
|
573
577
|
getHtml(visible, style, config, colVisProp){
|
|
574
578
|
var list = this.generateExportList(config || this.table.options.htmlOutputConfig, style, visible, colVisProp || "htmlOutput");
|
|
575
579
|
|
|
576
|
-
return this.
|
|
580
|
+
return this.generateHTMLTable(list);
|
|
577
581
|
}
|
|
578
582
|
|
|
579
583
|
mapElementStyles(from, to, props){
|