tabulator-tables 5.4.3 → 5.5.0
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/.babelrc.json +3 -3
- package/.editorconfig +6 -6
- package/.eslintignore +3 -3
- package/.eslintrc.js +28 -28
- package/.github/ISSUE_TEMPLATE/bug_report.md +58 -58
- package/.github/ISSUE_TEMPLATE/documentation.md +14 -14
- package/.github/ISSUE_TEMPLATE/feature_request.md +24 -24
- package/.github/ISSUE_TEMPLATE/question.md +12 -12
- package/.github/workflows/bad-files-check.yml +39 -39
- package/.github/workflows/lint-and-test.yml +30 -30
- package/CODE_OF_CONDUCT.md +46 -46
- package/CONTRIBUTING.md +22 -22
- package/LICENSE +20 -20
- package/README.md +76 -76
- package/bower.json +40 -40
- package/build/Bundler.js +185 -185
- package/build/rollup.js +6 -6
- package/dist/css/tabulator.css +80 -53
- 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 +89 -58
- 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 +106 -73
- 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 +110 -75
- 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 +95 -62
- 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 +93 -63
- 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 +90 -59
- 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 +96 -62
- 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 +233 -182
- 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 +80 -53
- 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 +88 -57
- 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 +55 -55
- package/dist/js/tabulator.js +26054 -25713
- 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 +26131 -25790
- 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 +65 -65
- package/src/js/builds/esm.js +14 -14
- package/src/js/builds/jquery_wrapper.js +55 -55
- package/src/js/core/ColumnManager.js +745 -730
- package/src/js/core/CoreFeature.js +138 -138
- package/src/js/core/FooterManager.js +101 -101
- package/src/js/core/Module.js +141 -141
- package/src/js/core/RowManager.js +1128 -1101
- package/src/js/core/Tabulator.js +895 -892
- package/src/js/core/TabulatorFull.js +10 -10
- package/src/js/core/cell/Cell.js +295 -295
- package/src/js/core/cell/CellComponent.js +78 -76
- package/src/js/core/column/Column.js +949 -949
- package/src/js/core/column/ColumnComponent.js +152 -152
- package/src/js/core/column/defaults/options.js +17 -17
- package/src/js/core/defaults/options.js +65 -65
- package/src/js/core/modules/core.js +2 -2
- package/src/js/core/modules/optional.js +34 -34
- package/src/js/core/rendering/Renderer.js +203 -203
- package/src/js/core/rendering/renderers/BasicHorizontal.js +24 -19
- package/src/js/core/rendering/renderers/BasicVertical.js +83 -79
- package/src/js/core/rendering/renderers/VirtualDomHorizontal.js +582 -577
- package/src/js/core/rendering/renderers/VirtualDomVertical.js +634 -580
- package/src/js/core/row/PseudoRow.js +44 -44
- package/src/js/core/row/Row.js +457 -457
- package/src/js/core/row/RowComponent.js +93 -93
- package/src/js/core/tools/Alert.js +61 -61
- package/src/js/core/tools/ComponentFunctionBinder.js +32 -32
- package/src/js/core/tools/DataLoader.js +119 -119
- package/src/js/core/tools/DeprecationAdvisor.js +46 -46
- package/src/js/core/tools/ExternalEventBus.js +104 -104
- package/src/js/core/tools/Helpers.js +46 -46
- package/src/js/core/tools/InteractionMonitor.js +321 -321
- package/src/js/core/tools/InternalEventBus.js +161 -161
- package/src/js/core/tools/ModuleBinder.js +104 -104
- package/src/js/core/tools/OptionsList.js +44 -40
- package/src/js/core/tools/Popup.js +304 -304
- package/src/js/core/tools/TableRegistry.js +61 -61
- package/src/js/modules/Accessor/Accessor.js +115 -115
- package/src/js/modules/Ajax/Ajax.js +143 -143
- package/src/js/modules/Ajax/defaults/config.js +2 -2
- package/src/js/modules/Ajax/defaults/contentTypeFormatters.js +44 -44
- package/src/js/modules/Ajax/defaults/loaderPromise.js +86 -86
- package/src/js/modules/Ajax/defaults/urlGenerator.js +43 -43
- package/src/js/modules/Clipboard/Clipboard.js +279 -279
- package/src/js/modules/Clipboard/defaults/pasteActions.js +10 -10
- package/src/js/modules/Clipboard/defaults/pasteParsers.js +74 -74
- package/src/js/modules/ColumnCalcs/CalcComponent.js +47 -47
- package/src/js/modules/ColumnCalcs/ColumnCalcs.js +581 -568
- package/src/js/modules/ColumnCalcs/defaults/calculations.js +92 -85
- package/src/js/modules/Comms/Comms.js +51 -51
- package/src/js/modules/DataTree/DataTree.js +603 -603
- package/src/js/modules/Download/Download.js +148 -148
- package/src/js/modules/Download/defaults/downloaders/csv.js +61 -61
- package/src/js/modules/Download/defaults/downloaders/html.js +4 -4
- package/src/js/modules/Download/defaults/downloaders/json.js +33 -33
- package/src/js/modules/Download/defaults/downloaders/jsonLines.js +31 -31
- package/src/js/modules/Download/defaults/downloaders/pdf.js +111 -111
- package/src/js/modules/Download/defaults/downloaders/xlsx.js +102 -99
- package/src/js/modules/Download/defaults/downloaders.js +14 -14
- package/src/js/modules/Edit/Edit.js +734 -736
- package/src/js/modules/Edit/List.js +1048 -1033
- package/src/js/modules/Edit/defaults/editors/autocomplete.js +11 -11
- package/src/js/modules/Edit/defaults/editors/date.js +138 -110
- package/src/js/modules/Edit/defaults/editors/datetime.js +125 -97
- package/src/js/modules/Edit/defaults/editors/input.js +76 -74
- package/src/js/modules/Edit/defaults/editors/list.js +6 -6
- package/src/js/modules/Edit/defaults/editors/number.js +109 -107
- package/src/js/modules/Edit/defaults/editors/progress.js +126 -126
- package/src/js/modules/Edit/defaults/editors/range.js +80 -78
- package/src/js/modules/Edit/defaults/editors/select.js +9 -9
- package/src/js/modules/Edit/defaults/editors/star.js +145 -145
- package/src/js/modules/Edit/defaults/editors/textarea.js +122 -120
- package/src/js/modules/Edit/defaults/editors/tickCross.js +94 -96
- package/src/js/modules/Edit/defaults/editors/time.js +126 -98
- package/src/js/modules/Edit/defaults/editors.js +28 -28
- package/src/js/modules/Edit/inputMask.js +73 -73
- package/src/js/modules/Export/Export.js +626 -623
- package/src/js/modules/Export/ExportColumn.js +10 -10
- package/src/js/modules/Export/ExportRow.js +9 -9
- package/src/js/modules/Filter/Filter.js +903 -892
- package/src/js/modules/Filter/defaults/filters.js +107 -107
- package/src/js/modules/Format/Format.js +215 -212
- package/src/js/modules/Format/defaults/formatters/buttonCross.js +2 -2
- package/src/js/modules/Format/defaults/formatters/buttonTick.js +2 -2
- package/src/js/modules/Format/defaults/formatters/color.js +3 -3
- package/src/js/modules/Format/defaults/formatters/datetime.js +36 -36
- package/src/js/modules/Format/defaults/formatters/datetimediff.js +40 -40
- package/src/js/modules/Format/defaults/formatters/handle.js +3 -3
- package/src/js/modules/Format/defaults/formatters/html.js +2 -2
- package/src/js/modules/Format/defaults/formatters/image.js +39 -39
- package/src/js/modules/Format/defaults/formatters/link.js +77 -77
- package/src/js/modules/Format/defaults/formatters/lookup.js +9 -9
- package/src/js/modules/Format/defaults/formatters/money.js +43 -36
- package/src/js/modules/Format/defaults/formatters/plaintext.js +2 -2
- package/src/js/modules/Format/defaults/formatters/progress.js +132 -132
- package/src/js/modules/Format/defaults/formatters/responsiveCollapse.js +43 -43
- package/src/js/modules/Format/defaults/formatters/rowSelection.js +59 -59
- package/src/js/modules/Format/defaults/formatters/rownum.js +9 -9
- package/src/js/modules/Format/defaults/formatters/star.js +37 -37
- package/src/js/modules/Format/defaults/formatters/textarea.js +3 -3
- package/src/js/modules/Format/defaults/formatters/tickCross.js +21 -21
- package/src/js/modules/Format/defaults/formatters/traffic.js +46 -46
- package/src/js/modules/Format/defaults/formatters.js +42 -42
- package/src/js/modules/FrozenColumns/FrozenColumns.js +299 -299
- package/src/js/modules/FrozenRows/FrozenRows.js +169 -159
- package/src/js/modules/GroupRows/Group.js +597 -598
- package/src/js/modules/GroupRows/GroupComponent.js +70 -66
- package/src/js/modules/GroupRows/GroupRows.js +639 -639
- package/src/js/modules/History/History.js +171 -171
- package/src/js/modules/History/defaults/redoers.js +24 -24
- package/src/js/modules/History/defaults/undoers.js +24 -24
- package/src/js/modules/HtmlTableImport/HtmlTableImport.js +181 -181
- package/src/js/modules/Import/Import.js +193 -193
- package/src/js/modules/Import/defaults/importers/array.js +4 -4
- package/src/js/modules/Import/defaults/importers/csv.js +62 -62
- package/src/js/modules/Import/defaults/importers/json.js +7 -7
- package/src/js/modules/Import/defaults/importers.js +8 -8
- package/src/js/modules/Interaction/Interaction.js +337 -325
- package/src/js/modules/Keybindings/Keybindings.js +172 -172
- package/src/js/modules/Keybindings/defaults/actions.js +118 -118
- package/src/js/modules/Keybindings/defaults/bindings.js +12 -12
- package/src/js/modules/Layout/Layout.js +49 -49
- package/src/js/modules/Layout/defaults/modes/fitColumns.js +171 -171
- package/src/js/modules/Layout/defaults/modes/fitData.js +9 -9
- package/src/js/modules/Layout/defaults/modes/fitDataGeneral.js +9 -9
- package/src/js/modules/Layout/defaults/modes/fitDataStretch.js +39 -39
- package/src/js/modules/Layout/defaults/modes.js +11 -11
- package/src/js/modules/Localize/Localize.js +185 -185
- package/src/js/modules/Localize/defaults/langs.js +36 -36
- package/src/js/modules/Menu/Menu.js +302 -302
- package/src/js/modules/MoveColumns/MoveColumns.js +299 -299
- package/src/js/modules/MoveRows/MoveRows.js +635 -635
- package/src/js/modules/Mutator/Mutator.js +161 -161
- package/src/js/modules/Page/Page.js +881 -881
- package/src/js/modules/Page/defaults/pageCounters/pages.js +32 -32
- package/src/js/modules/Page/defaults/pageCounters/rows.js +39 -39
- package/src/js/modules/Page/defaults/pageCounters.js +7 -7
- package/src/js/modules/Persistence/Persistence.js +472 -458
- package/src/js/modules/Persistence/defaults/readers.js +29 -29
- package/src/js/modules/Persistence/defaults/writers.js +12 -12
- package/src/js/modules/Popup/Popup.js +231 -231
- package/src/js/modules/Print/Print.js +137 -137
- package/src/js/modules/ReactiveData/ReactiveData.js +408 -408
- package/src/js/modules/ResizeColumns/ResizeColumns.js +309 -309
- package/src/js/modules/ResizeRows/ResizeRows.js +111 -111
- package/src/js/modules/ResizeTable/ResizeTable.js +159 -159
- package/src/js/modules/ResponsiveLayout/ResponsiveLayout.js +348 -345
- package/src/js/modules/SelectRow/SelectRow.js +474 -444
- package/src/js/modules/Sort/Sort.js +470 -470
- package/src/js/modules/Sort/defaults/sorters/alphanum.js +43 -43
- package/src/js/modules/Sort/defaults/sorters/array.js +53 -53
- package/src/js/modules/Sort/defaults/sorters/boolean.js +6 -6
- package/src/js/modules/Sort/defaults/sorters/date.js +9 -9
- package/src/js/modules/Sort/defaults/sorters/datetime.js +43 -43
- package/src/js/modules/Sort/defaults/sorters/exists.js +6 -6
- package/src/js/modules/Sort/defaults/sorters/number.js +39 -39
- package/src/js/modules/Sort/defaults/sorters/string.js +33 -33
- package/src/js/modules/Sort/defaults/sorters/time.js +9 -9
- package/src/js/modules/Sort/defaults/sorters.js +20 -20
- package/src/js/modules/Tooltip/Tooltip.js +130 -130
- package/src/js/modules/Validate/Validate.js +305 -305
- package/src/js/modules/Validate/defaults/validators.js +138 -138
- package/src/scss/tabulator.scss +1496 -1467
- package/src/scss/themes/bootstrap/functions4.scss +118 -118
- package/src/scss/themes/bootstrap/functions5.scss +302 -302
- package/src/scss/themes/bootstrap/tabulator_bootstrap3.scss +288 -284
- package/src/scss/themes/bootstrap/tabulator_bootstrap4.scss +552 -544
- package/src/scss/themes/bootstrap/tabulator_bootstrap5.scss +584 -574
- package/src/scss/themes/bootstrap/variables3.scss +870 -870
- package/src/scss/themes/bootstrap/variables4.scss +930 -930
- package/src/scss/themes/bootstrap/variables5.scss +1641 -1641
- package/src/scss/themes/bulma/tabulator_bulma.scss +258 -252
- package/src/scss/themes/bulma/variables.scss +197 -197
- package/src/scss/themes/materialize/tabulator_materialize.scss +269 -265
- package/src/scss/themes/materialize/variables.scss +70 -70
- package/src/scss/themes/semanticui/tabulator_semanticui.scss +586 -561
- package/src/scss/themes/semanticui/variables.scss +839 -839
- package/src/scss/themes/semanticui/variables_table.scss +247 -247
- package/src/scss/themes/tabulator_midnight.scss +162 -158
- package/src/scss/themes/tabulator_modern.scss +239 -231
- package/src/scss/themes/tabulator_simple.scss +102 -102
- package/src/scss/themes/tabulator_site.scss +193 -189
|
@@ -1,50 +1,50 @@
|
|
|
1
|
-
import Module from '../../core/Module.js';
|
|
2
|
-
|
|
3
|
-
import defaultModes from './defaults/modes.js';
|
|
4
|
-
|
|
5
|
-
class Layout extends Module{
|
|
6
|
-
|
|
7
|
-
constructor(table){
|
|
8
|
-
super(table, "layout");
|
|
9
|
-
|
|
10
|
-
this.mode = null;
|
|
11
|
-
|
|
12
|
-
this.registerTableOption("layout", "fitData"); //layout type
|
|
13
|
-
this.registerTableOption("layoutColumnsOnNewData", false); //update column widths on setData
|
|
14
|
-
|
|
15
|
-
this.registerColumnOption("widthGrow");
|
|
16
|
-
this.registerColumnOption("widthShrink");
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
//initialize layout system
|
|
20
|
-
initialize(){
|
|
21
|
-
var layout = this.table.options.layout;
|
|
22
|
-
|
|
23
|
-
if(Layout.modes[layout]){
|
|
24
|
-
this.mode = layout;
|
|
25
|
-
}else{
|
|
26
|
-
console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : " + layout);
|
|
27
|
-
this.mode = 'fitData';
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
this.table.element.setAttribute("tabulator-layout", this.mode);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
getMode(){
|
|
34
|
-
return this.mode;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
//trigger table layout
|
|
38
|
-
layout(dataChanged){
|
|
39
|
-
this.dispatch("layout-refreshing");
|
|
40
|
-
Layout.modes[this.mode].call(this, this.table.columnManager.columnsByIndex, dataChanged);
|
|
41
|
-
this.dispatch("layout-refreshed");
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
Layout.moduleName = "layout";
|
|
46
|
-
|
|
47
|
-
//load defaults
|
|
48
|
-
Layout.modes = defaultModes;
|
|
49
|
-
|
|
1
|
+
import Module from '../../core/Module.js';
|
|
2
|
+
|
|
3
|
+
import defaultModes from './defaults/modes.js';
|
|
4
|
+
|
|
5
|
+
class Layout extends Module{
|
|
6
|
+
|
|
7
|
+
constructor(table){
|
|
8
|
+
super(table, "layout");
|
|
9
|
+
|
|
10
|
+
this.mode = null;
|
|
11
|
+
|
|
12
|
+
this.registerTableOption("layout", "fitData"); //layout type
|
|
13
|
+
this.registerTableOption("layoutColumnsOnNewData", false); //update column widths on setData
|
|
14
|
+
|
|
15
|
+
this.registerColumnOption("widthGrow");
|
|
16
|
+
this.registerColumnOption("widthShrink");
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
//initialize layout system
|
|
20
|
+
initialize(){
|
|
21
|
+
var layout = this.table.options.layout;
|
|
22
|
+
|
|
23
|
+
if(Layout.modes[layout]){
|
|
24
|
+
this.mode = layout;
|
|
25
|
+
}else{
|
|
26
|
+
console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : " + layout);
|
|
27
|
+
this.mode = 'fitData';
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
this.table.element.setAttribute("tabulator-layout", this.mode);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
getMode(){
|
|
34
|
+
return this.mode;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
//trigger table layout
|
|
38
|
+
layout(dataChanged){
|
|
39
|
+
this.dispatch("layout-refreshing");
|
|
40
|
+
Layout.modes[this.mode].call(this, this.table.columnManager.columnsByIndex, dataChanged);
|
|
41
|
+
this.dispatch("layout-refreshed");
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
Layout.moduleName = "layout";
|
|
46
|
+
|
|
47
|
+
//load defaults
|
|
48
|
+
Layout.modes = defaultModes;
|
|
49
|
+
|
|
50
50
|
export default Layout;
|
|
@@ -1,171 +1,171 @@
|
|
|
1
|
-
//resize columns to fit
|
|
2
|
-
export default function(columns, forced){
|
|
3
|
-
var totalWidth = this.table.rowManager.element.getBoundingClientRect().width; //table element width
|
|
4
|
-
var fixedWidth = 0; //total width of columns with a defined width
|
|
5
|
-
var flexWidth = 0; //total width available to flexible columns
|
|
6
|
-
var flexGrowUnits = 0; //total number of widthGrow blocks across all columns
|
|
7
|
-
var flexColWidth = 0; //desired width of flexible columns
|
|
8
|
-
var flexColumns = []; //array of flexible width columns
|
|
9
|
-
var fixedShrinkColumns = []; //array of fixed width columns that can shrink
|
|
10
|
-
var flexShrinkUnits = 0; //total number of widthShrink blocks across all columns
|
|
11
|
-
var overflowWidth = 0; //horizontal overflow width
|
|
12
|
-
var gapFill = 0; //number of pixels to be added to final column to close and half pixel gaps
|
|
13
|
-
|
|
14
|
-
function calcWidth(width){
|
|
15
|
-
var colWidth;
|
|
16
|
-
|
|
17
|
-
if(typeof(width) == "string"){
|
|
18
|
-
if(width.indexOf("%") > -1){
|
|
19
|
-
colWidth = (totalWidth / 100) * parseInt(width);
|
|
20
|
-
}else{
|
|
21
|
-
colWidth = parseInt(width);
|
|
22
|
-
}
|
|
23
|
-
}else{
|
|
24
|
-
colWidth = width;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
return colWidth;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
//ensure columns resize to take up the correct amount of space
|
|
31
|
-
function scaleColumns(columns, freeSpace, colWidth, shrinkCols){
|
|
32
|
-
var oversizeCols = [],
|
|
33
|
-
oversizeSpace = 0,
|
|
34
|
-
remainingSpace = 0,
|
|
35
|
-
nextColWidth = 0,
|
|
36
|
-
remainingFlexGrowUnits = flexGrowUnits,
|
|
37
|
-
gap = 0,
|
|
38
|
-
changeUnits = 0,
|
|
39
|
-
undersizeCols = [];
|
|
40
|
-
|
|
41
|
-
function calcGrow(col){
|
|
42
|
-
return (colWidth * (col.column.definition.widthGrow || 1));
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
function calcShrink(col){
|
|
46
|
-
return (calcWidth(col.width) - (colWidth * (col.column.definition.widthShrink || 0)));
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
columns.forEach(function(col, i){
|
|
50
|
-
var width = shrinkCols ? calcShrink(col) : calcGrow(col);
|
|
51
|
-
if(col.column.minWidth >= width){
|
|
52
|
-
oversizeCols.push(col);
|
|
53
|
-
}else{
|
|
54
|
-
if(col.column.maxWidth && col.column.maxWidth < width){
|
|
55
|
-
col.width = col.column.maxWidth;
|
|
56
|
-
freeSpace -= col.column.maxWidth;
|
|
57
|
-
|
|
58
|
-
remainingFlexGrowUnits -= shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);
|
|
59
|
-
|
|
60
|
-
if(remainingFlexGrowUnits){
|
|
61
|
-
colWidth = Math.floor(freeSpace/remainingFlexGrowUnits);
|
|
62
|
-
}
|
|
63
|
-
}else{
|
|
64
|
-
undersizeCols.push(col);
|
|
65
|
-
changeUnits += shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
if(oversizeCols.length){
|
|
71
|
-
oversizeCols.forEach(function(col){
|
|
72
|
-
oversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;
|
|
73
|
-
col.width = col.column.minWidth;
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
remainingSpace = freeSpace - oversizeSpace;
|
|
77
|
-
|
|
78
|
-
nextColWidth = changeUnits ? Math.floor(remainingSpace/changeUnits) : remainingSpace;
|
|
79
|
-
|
|
80
|
-
gap = scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);
|
|
81
|
-
}else{
|
|
82
|
-
gap = changeUnits ? freeSpace - (Math.floor(freeSpace/changeUnits) * changeUnits) : freeSpace;
|
|
83
|
-
|
|
84
|
-
undersizeCols.forEach(function(column){
|
|
85
|
-
column.width = shrinkCols ? calcShrink(column) : calcGrow(column);
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
return gap;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){
|
|
93
|
-
this.table.modules.responsiveLayout.update();
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
//adjust for vertical scrollbar if present
|
|
97
|
-
if(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){
|
|
98
|
-
totalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
columns.forEach(function(column){
|
|
102
|
-
var width, minWidth, colWidth;
|
|
103
|
-
|
|
104
|
-
if(column.visible){
|
|
105
|
-
|
|
106
|
-
width = column.definition.width;
|
|
107
|
-
minWidth = parseInt(column.minWidth);
|
|
108
|
-
|
|
109
|
-
if(width){
|
|
110
|
-
|
|
111
|
-
colWidth = calcWidth(width);
|
|
112
|
-
|
|
113
|
-
fixedWidth += colWidth > minWidth ? colWidth : minWidth;
|
|
114
|
-
|
|
115
|
-
if(column.definition.widthShrink){
|
|
116
|
-
fixedShrinkColumns.push({
|
|
117
|
-
column:column,
|
|
118
|
-
width:colWidth > minWidth ? colWidth : minWidth
|
|
119
|
-
});
|
|
120
|
-
flexShrinkUnits += column.definition.widthShrink;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
}else{
|
|
124
|
-
flexColumns.push({
|
|
125
|
-
column:column,
|
|
126
|
-
width:0,
|
|
127
|
-
});
|
|
128
|
-
flexGrowUnits += column.definition.widthGrow || 1;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
});
|
|
132
|
-
|
|
133
|
-
//calculate available space
|
|
134
|
-
flexWidth = totalWidth - fixedWidth;
|
|
135
|
-
|
|
136
|
-
//calculate correct column size
|
|
137
|
-
flexColWidth = Math.floor(flexWidth / flexGrowUnits);
|
|
138
|
-
|
|
139
|
-
//generate column widths
|
|
140
|
-
gapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);
|
|
141
|
-
|
|
142
|
-
//increase width of last column to account for rounding errors
|
|
143
|
-
if(flexColumns.length && gapFill > 0){
|
|
144
|
-
flexColumns[flexColumns.length-1].width += gapFill;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
//calculate space for columns to be shrunk into
|
|
148
|
-
flexColumns.forEach(function(col){
|
|
149
|
-
flexWidth -= col.width;
|
|
150
|
-
});
|
|
151
|
-
|
|
152
|
-
overflowWidth = Math.abs(gapFill) + flexWidth;
|
|
153
|
-
|
|
154
|
-
//shrink oversize columns if there is no available space
|
|
155
|
-
if(overflowWidth > 0 && flexShrinkUnits){
|
|
156
|
-
gapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
//decrease width of last column to account for rounding errors
|
|
160
|
-
if(gapFill && fixedShrinkColumns.length){
|
|
161
|
-
fixedShrinkColumns[fixedShrinkColumns.length-1].width -= gapFill;
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
flexColumns.forEach(function(col){
|
|
165
|
-
col.column.setWidth(col.width);
|
|
166
|
-
});
|
|
167
|
-
|
|
168
|
-
fixedShrinkColumns.forEach(function(col){
|
|
169
|
-
col.column.setWidth(col.width);
|
|
170
|
-
});
|
|
171
|
-
}
|
|
1
|
+
//resize columns to fit
|
|
2
|
+
export default function(columns, forced){
|
|
3
|
+
var totalWidth = this.table.rowManager.element.getBoundingClientRect().width; //table element width
|
|
4
|
+
var fixedWidth = 0; //total width of columns with a defined width
|
|
5
|
+
var flexWidth = 0; //total width available to flexible columns
|
|
6
|
+
var flexGrowUnits = 0; //total number of widthGrow blocks across all columns
|
|
7
|
+
var flexColWidth = 0; //desired width of flexible columns
|
|
8
|
+
var flexColumns = []; //array of flexible width columns
|
|
9
|
+
var fixedShrinkColumns = []; //array of fixed width columns that can shrink
|
|
10
|
+
var flexShrinkUnits = 0; //total number of widthShrink blocks across all columns
|
|
11
|
+
var overflowWidth = 0; //horizontal overflow width
|
|
12
|
+
var gapFill = 0; //number of pixels to be added to final column to close and half pixel gaps
|
|
13
|
+
|
|
14
|
+
function calcWidth(width){
|
|
15
|
+
var colWidth;
|
|
16
|
+
|
|
17
|
+
if(typeof(width) == "string"){
|
|
18
|
+
if(width.indexOf("%") > -1){
|
|
19
|
+
colWidth = (totalWidth / 100) * parseInt(width);
|
|
20
|
+
}else{
|
|
21
|
+
colWidth = parseInt(width);
|
|
22
|
+
}
|
|
23
|
+
}else{
|
|
24
|
+
colWidth = width;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return colWidth;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
//ensure columns resize to take up the correct amount of space
|
|
31
|
+
function scaleColumns(columns, freeSpace, colWidth, shrinkCols){
|
|
32
|
+
var oversizeCols = [],
|
|
33
|
+
oversizeSpace = 0,
|
|
34
|
+
remainingSpace = 0,
|
|
35
|
+
nextColWidth = 0,
|
|
36
|
+
remainingFlexGrowUnits = flexGrowUnits,
|
|
37
|
+
gap = 0,
|
|
38
|
+
changeUnits = 0,
|
|
39
|
+
undersizeCols = [];
|
|
40
|
+
|
|
41
|
+
function calcGrow(col){
|
|
42
|
+
return (colWidth * (col.column.definition.widthGrow || 1));
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function calcShrink(col){
|
|
46
|
+
return (calcWidth(col.width) - (colWidth * (col.column.definition.widthShrink || 0)));
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
columns.forEach(function(col, i){
|
|
50
|
+
var width = shrinkCols ? calcShrink(col) : calcGrow(col);
|
|
51
|
+
if(col.column.minWidth >= width){
|
|
52
|
+
oversizeCols.push(col);
|
|
53
|
+
}else{
|
|
54
|
+
if(col.column.maxWidth && col.column.maxWidth < width){
|
|
55
|
+
col.width = col.column.maxWidth;
|
|
56
|
+
freeSpace -= col.column.maxWidth;
|
|
57
|
+
|
|
58
|
+
remainingFlexGrowUnits -= shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);
|
|
59
|
+
|
|
60
|
+
if(remainingFlexGrowUnits){
|
|
61
|
+
colWidth = Math.floor(freeSpace/remainingFlexGrowUnits);
|
|
62
|
+
}
|
|
63
|
+
}else{
|
|
64
|
+
undersizeCols.push(col);
|
|
65
|
+
changeUnits += shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
if(oversizeCols.length){
|
|
71
|
+
oversizeCols.forEach(function(col){
|
|
72
|
+
oversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;
|
|
73
|
+
col.width = col.column.minWidth;
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
remainingSpace = freeSpace - oversizeSpace;
|
|
77
|
+
|
|
78
|
+
nextColWidth = changeUnits ? Math.floor(remainingSpace/changeUnits) : remainingSpace;
|
|
79
|
+
|
|
80
|
+
gap = scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);
|
|
81
|
+
}else{
|
|
82
|
+
gap = changeUnits ? freeSpace - (Math.floor(freeSpace/changeUnits) * changeUnits) : freeSpace;
|
|
83
|
+
|
|
84
|
+
undersizeCols.forEach(function(column){
|
|
85
|
+
column.width = shrinkCols ? calcShrink(column) : calcGrow(column);
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return gap;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){
|
|
93
|
+
this.table.modules.responsiveLayout.update();
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
//adjust for vertical scrollbar if present
|
|
97
|
+
if(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){
|
|
98
|
+
totalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
columns.forEach(function(column){
|
|
102
|
+
var width, minWidth, colWidth;
|
|
103
|
+
|
|
104
|
+
if(column.visible){
|
|
105
|
+
|
|
106
|
+
width = column.definition.width;
|
|
107
|
+
minWidth = parseInt(column.minWidth);
|
|
108
|
+
|
|
109
|
+
if(width){
|
|
110
|
+
|
|
111
|
+
colWidth = calcWidth(width);
|
|
112
|
+
|
|
113
|
+
fixedWidth += colWidth > minWidth ? colWidth : minWidth;
|
|
114
|
+
|
|
115
|
+
if(column.definition.widthShrink){
|
|
116
|
+
fixedShrinkColumns.push({
|
|
117
|
+
column:column,
|
|
118
|
+
width:colWidth > minWidth ? colWidth : minWidth
|
|
119
|
+
});
|
|
120
|
+
flexShrinkUnits += column.definition.widthShrink;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
}else{
|
|
124
|
+
flexColumns.push({
|
|
125
|
+
column:column,
|
|
126
|
+
width:0,
|
|
127
|
+
});
|
|
128
|
+
flexGrowUnits += column.definition.widthGrow || 1;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
//calculate available space
|
|
134
|
+
flexWidth = totalWidth - fixedWidth;
|
|
135
|
+
|
|
136
|
+
//calculate correct column size
|
|
137
|
+
flexColWidth = Math.floor(flexWidth / flexGrowUnits);
|
|
138
|
+
|
|
139
|
+
//generate column widths
|
|
140
|
+
gapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);
|
|
141
|
+
|
|
142
|
+
//increase width of last column to account for rounding errors
|
|
143
|
+
if(flexColumns.length && gapFill > 0){
|
|
144
|
+
flexColumns[flexColumns.length-1].width += gapFill;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
//calculate space for columns to be shrunk into
|
|
148
|
+
flexColumns.forEach(function(col){
|
|
149
|
+
flexWidth -= col.width;
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
overflowWidth = Math.abs(gapFill) + flexWidth;
|
|
153
|
+
|
|
154
|
+
//shrink oversize columns if there is no available space
|
|
155
|
+
if(overflowWidth > 0 && flexShrinkUnits){
|
|
156
|
+
gapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
//decrease width of last column to account for rounding errors
|
|
160
|
+
if(gapFill && fixedShrinkColumns.length){
|
|
161
|
+
fixedShrinkColumns[fixedShrinkColumns.length-1].width -= gapFill;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
flexColumns.forEach(function(col){
|
|
165
|
+
col.column.setWidth(col.width);
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
fixedShrinkColumns.forEach(function(col){
|
|
169
|
+
col.column.setWidth(col.width);
|
|
170
|
+
});
|
|
171
|
+
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
//resize columns to fit data they contain
|
|
2
|
-
export default function(columns, forced){
|
|
3
|
-
if(forced){
|
|
4
|
-
this.table.columnManager.renderer.reinitializeColumnWidths(columns);
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){
|
|
8
|
-
this.table.modules.responsiveLayout.update();
|
|
9
|
-
}
|
|
1
|
+
//resize columns to fit data they contain
|
|
2
|
+
export default function(columns, forced){
|
|
3
|
+
if(forced){
|
|
4
|
+
this.table.columnManager.renderer.reinitializeColumnWidths(columns);
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){
|
|
8
|
+
this.table.modules.responsiveLayout.update();
|
|
9
|
+
}
|
|
10
10
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
//resize columns to fit data they contain and stretch row to fill table, also used for fitDataTable
|
|
2
|
-
export default function(columns, forced){
|
|
3
|
-
columns.forEach(function(column){
|
|
4
|
-
column.reinitializeWidth();
|
|
5
|
-
});
|
|
6
|
-
|
|
7
|
-
if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){
|
|
8
|
-
this.table.modules.responsiveLayout.update();
|
|
9
|
-
}
|
|
1
|
+
//resize columns to fit data they contain and stretch row to fill table, also used for fitDataTable
|
|
2
|
+
export default function(columns, forced){
|
|
3
|
+
columns.forEach(function(column){
|
|
4
|
+
column.reinitializeWidth();
|
|
5
|
+
});
|
|
6
|
+
|
|
7
|
+
if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){
|
|
8
|
+
this.table.modules.responsiveLayout.update();
|
|
9
|
+
}
|
|
10
10
|
}
|
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
//resize columns to fit data the contain and stretch last column to fill table
|
|
2
|
-
export default function(columns, forced){
|
|
3
|
-
var colsWidth = 0,
|
|
4
|
-
tableWidth = this.table.rowManager.element.clientWidth,
|
|
5
|
-
gap = 0,
|
|
6
|
-
lastCol = false;
|
|
7
|
-
|
|
8
|
-
columns.forEach((column, i) => {
|
|
9
|
-
if(!column.widthFixed){
|
|
10
|
-
column.reinitializeWidth();
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
if(this.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible){
|
|
14
|
-
lastCol = column;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
if(column.visible){
|
|
18
|
-
colsWidth += column.getWidth();
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
if(lastCol){
|
|
23
|
-
gap = tableWidth - colsWidth + lastCol.getWidth();
|
|
24
|
-
|
|
25
|
-
if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){
|
|
26
|
-
lastCol.setWidth(0);
|
|
27
|
-
this.table.modules.responsiveLayout.update();
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
if(gap > 0){
|
|
31
|
-
lastCol.setWidth(gap);
|
|
32
|
-
}else{
|
|
33
|
-
lastCol.reinitializeWidth();
|
|
34
|
-
}
|
|
35
|
-
}else{
|
|
36
|
-
if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){
|
|
37
|
-
this.table.modules.responsiveLayout.update();
|
|
38
|
-
}
|
|
39
|
-
}
|
|
1
|
+
//resize columns to fit data the contain and stretch last column to fill table
|
|
2
|
+
export default function(columns, forced){
|
|
3
|
+
var colsWidth = 0,
|
|
4
|
+
tableWidth = this.table.rowManager.element.clientWidth,
|
|
5
|
+
gap = 0,
|
|
6
|
+
lastCol = false;
|
|
7
|
+
|
|
8
|
+
columns.forEach((column, i) => {
|
|
9
|
+
if(!column.widthFixed){
|
|
10
|
+
column.reinitializeWidth();
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
if(this.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible){
|
|
14
|
+
lastCol = column;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
if(column.visible){
|
|
18
|
+
colsWidth += column.getWidth();
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
if(lastCol){
|
|
23
|
+
gap = tableWidth - colsWidth + lastCol.getWidth();
|
|
24
|
+
|
|
25
|
+
if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){
|
|
26
|
+
lastCol.setWidth(0);
|
|
27
|
+
this.table.modules.responsiveLayout.update();
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if(gap > 0){
|
|
31
|
+
lastCol.setWidth(gap);
|
|
32
|
+
}else{
|
|
33
|
+
lastCol.reinitializeWidth();
|
|
34
|
+
}
|
|
35
|
+
}else{
|
|
36
|
+
if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){
|
|
37
|
+
this.table.modules.responsiveLayout.update();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
40
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import fitData from './modes/fitData.js';
|
|
2
|
-
import fitDataGeneral from './modes/fitDataGeneral.js';
|
|
3
|
-
import fitDataStretch from './modes/fitDataStretch.js';
|
|
4
|
-
import fitColumns from './modes/fitColumns.js';
|
|
5
|
-
|
|
6
|
-
export default {
|
|
7
|
-
fitData:fitData,
|
|
8
|
-
fitDataFill:fitDataGeneral,
|
|
9
|
-
fitDataTable:fitDataGeneral,
|
|
10
|
-
fitDataStretch:fitDataStretch,
|
|
11
|
-
fitColumns:fitColumns ,
|
|
1
|
+
import fitData from './modes/fitData.js';
|
|
2
|
+
import fitDataGeneral from './modes/fitDataGeneral.js';
|
|
3
|
+
import fitDataStretch from './modes/fitDataStretch.js';
|
|
4
|
+
import fitColumns from './modes/fitColumns.js';
|
|
5
|
+
|
|
6
|
+
export default {
|
|
7
|
+
fitData:fitData,
|
|
8
|
+
fitDataFill:fitDataGeneral,
|
|
9
|
+
fitDataTable:fitDataGeneral,
|
|
10
|
+
fitDataStretch:fitDataStretch,
|
|
11
|
+
fitColumns:fitColumns ,
|
|
12
12
|
};
|