@odoo/o-spreadsheet 16.4.4 → 16.4.6
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/dist/o-spreadsheet.cjs.js +72 -28
- package/dist/o-spreadsheet.d.ts +11 -3
- package/dist/o-spreadsheet.esm.js +72 -28
- package/dist/o-spreadsheet.iife.js +72 -28
- package/dist/o-spreadsheet.iife.min.js +76 -76
- package/package.json +1 -1
|
@@ -6062,7 +6062,7 @@
|
|
|
6062
6062
|
};
|
|
6063
6063
|
}
|
|
6064
6064
|
get childrenHaveIcon() {
|
|
6065
|
-
return this.props.menuItems.some((menuItem) => !!
|
|
6065
|
+
return this.props.menuItems.some((menuItem) => !!this.getIconName(menuItem));
|
|
6066
6066
|
}
|
|
6067
6067
|
getIconName(menu) {
|
|
6068
6068
|
if (menu.icon(this.env)) {
|
|
@@ -16875,6 +16875,7 @@
|
|
|
16875
16875
|
aggregated;
|
|
16876
16876
|
type = "line";
|
|
16877
16877
|
dataSetsHaveTitle;
|
|
16878
|
+
cumulative;
|
|
16878
16879
|
constructor(definition, sheetId, getters) {
|
|
16879
16880
|
super(definition, sheetId, getters);
|
|
16880
16881
|
this.dataSets = createDataSets(this.getters, definition.dataSets, sheetId, definition.dataSetsHaveTitle);
|
|
@@ -16886,6 +16887,7 @@
|
|
|
16886
16887
|
this.stacked = definition.stacked;
|
|
16887
16888
|
this.aggregated = definition.aggregated;
|
|
16888
16889
|
this.dataSetsHaveTitle = definition.dataSetsHaveTitle;
|
|
16890
|
+
this.cumulative = definition.cumulative;
|
|
16889
16891
|
}
|
|
16890
16892
|
static validateChartDefinition(validator, definition) {
|
|
16891
16893
|
return validator.checkValidations(definition, checkDataset, checkLabelRange);
|
|
@@ -16906,6 +16908,7 @@
|
|
|
16906
16908
|
labelRange: context.auxiliaryRange || undefined,
|
|
16907
16909
|
stacked: false,
|
|
16908
16910
|
aggregated: false,
|
|
16911
|
+
cumulative: false,
|
|
16909
16912
|
};
|
|
16910
16913
|
}
|
|
16911
16914
|
getDefinition() {
|
|
@@ -16926,6 +16929,7 @@
|
|
|
16926
16929
|
labelsAsText: this.labelsAsText,
|
|
16927
16930
|
stacked: this.stacked,
|
|
16928
16931
|
aggregated: this.aggregated,
|
|
16932
|
+
cumulative: this.cumulative,
|
|
16929
16933
|
};
|
|
16930
16934
|
}
|
|
16931
16935
|
getContextCreation() {
|
|
@@ -17136,6 +17140,16 @@
|
|
|
17136
17140
|
if (chart.stacked) {
|
|
17137
17141
|
backgroundRGBA.a = LINE_FILL_TRANSPARENCY;
|
|
17138
17142
|
}
|
|
17143
|
+
if (chart.cumulative) {
|
|
17144
|
+
let accumulator = 0;
|
|
17145
|
+
data = data.map((value) => {
|
|
17146
|
+
if (!isNaN(value)) {
|
|
17147
|
+
accumulator += parseFloat(value);
|
|
17148
|
+
return accumulator;
|
|
17149
|
+
}
|
|
17150
|
+
return value;
|
|
17151
|
+
});
|
|
17152
|
+
}
|
|
17139
17153
|
const backgroundColor = rgbaToHex(backgroundRGBA);
|
|
17140
17154
|
const dataset = {
|
|
17141
17155
|
label,
|
|
@@ -18010,6 +18024,7 @@
|
|
|
18010
18024
|
labelsAsText: false,
|
|
18011
18025
|
stacked: false,
|
|
18012
18026
|
aggregated: false,
|
|
18027
|
+
cumulative: false,
|
|
18013
18028
|
labelRange: labelRangeXc,
|
|
18014
18029
|
type: "line",
|
|
18015
18030
|
dataSetsHaveTitle,
|
|
@@ -18173,6 +18188,13 @@
|
|
|
18173
18188
|
elements: rows,
|
|
18174
18189
|
});
|
|
18175
18190
|
};
|
|
18191
|
+
const CAN_REMOVE_COLUMNS_ROWS = (dimension, env) => {
|
|
18192
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
18193
|
+
const selectedElements = env.model.getters.getElementsFromSelection(dimension);
|
|
18194
|
+
const includesAllVisibleHeaders = env.model.getters.checkElementsIncludeAllVisibleHeaders(sheetId, dimension, selectedElements);
|
|
18195
|
+
const includesAllNonFrozenHeaders = env.model.getters.checkElementsIncludeAllNonFrozenHeaders(sheetId, dimension, selectedElements);
|
|
18196
|
+
return !includesAllVisibleHeaders && !includesAllNonFrozenHeaders;
|
|
18197
|
+
};
|
|
18176
18198
|
const REMOVE_COLUMNS_NAME = (env) => {
|
|
18177
18199
|
if (env.model.getters.getSelectedZones().length > 1) {
|
|
18178
18200
|
return _lt("Delete columns");
|
|
@@ -18197,7 +18219,7 @@
|
|
|
18197
18219
|
const NOT_ALL_VISIBLE_ROWS_SELECTED = (env) => {
|
|
18198
18220
|
const sheetId = env.model.getters.getActiveSheetId();
|
|
18199
18221
|
const selectedRows = env.model.getters.getElementsFromSelection("ROW");
|
|
18200
|
-
return env.model.getters.
|
|
18222
|
+
return !env.model.getters.checkElementsIncludeAllVisibleHeaders(sheetId, "ROW", selectedRows);
|
|
18201
18223
|
};
|
|
18202
18224
|
const REMOVE_COLUMNS_ACTION = (env) => {
|
|
18203
18225
|
let columns = [...env.model.getters.getActiveCols()];
|
|
@@ -18216,7 +18238,7 @@
|
|
|
18216
18238
|
const NOT_ALL_VISIBLE_COLS_SELECTED = (env) => {
|
|
18217
18239
|
const sheetId = env.model.getters.getActiveSheetId();
|
|
18218
18240
|
const selectedCols = env.model.getters.getElementsFromSelection("COL");
|
|
18219
|
-
return env.model.getters.
|
|
18241
|
+
return !env.model.getters.checkElementsIncludeAllVisibleHeaders(sheetId, "COL", selectedCols);
|
|
18220
18242
|
};
|
|
18221
18243
|
const INSERT_ROWS_BEFORE_ACTION = (env) => {
|
|
18222
18244
|
const activeRows = env.model.getters.getActiveRows();
|
|
@@ -18488,7 +18510,7 @@
|
|
|
18488
18510
|
const deleteRows = {
|
|
18489
18511
|
name: REMOVE_ROWS_NAME,
|
|
18490
18512
|
execute: REMOVE_ROWS_ACTION,
|
|
18491
|
-
isVisible:
|
|
18513
|
+
isVisible: (env) => CAN_REMOVE_COLUMNS_ROWS("ROW", env),
|
|
18492
18514
|
};
|
|
18493
18515
|
const deleteRow = {
|
|
18494
18516
|
...deleteRows,
|
|
@@ -18501,7 +18523,7 @@
|
|
|
18501
18523
|
const deleteCols = {
|
|
18502
18524
|
name: REMOVE_COLUMNS_NAME,
|
|
18503
18525
|
execute: REMOVE_COLUMNS_ACTION,
|
|
18504
|
-
isVisible:
|
|
18526
|
+
isVisible: (env) => CAN_REMOVE_COLUMNS_ROWS("COL", env),
|
|
18505
18527
|
};
|
|
18506
18528
|
const deleteCol = {
|
|
18507
18529
|
...deleteCols,
|
|
@@ -20728,34 +20750,25 @@
|
|
|
20728
20750
|
}
|
|
20729
20751
|
|
|
20730
20752
|
function startDnd(onMouseMove, onMouseUp, onMouseDown = () => { }) {
|
|
20731
|
-
const _onMouseDown = (ev) => {
|
|
20732
|
-
ev.preventDefault();
|
|
20733
|
-
onMouseDown(ev);
|
|
20734
|
-
};
|
|
20735
|
-
const _onMouseMove = (ev) => {
|
|
20736
|
-
ev.preventDefault();
|
|
20737
|
-
onMouseMove(ev);
|
|
20738
|
-
};
|
|
20739
20753
|
const _onMouseUp = (ev) => {
|
|
20740
|
-
ev.preventDefault();
|
|
20741
20754
|
onMouseUp(ev);
|
|
20742
|
-
window.removeEventListener("mousedown",
|
|
20755
|
+
window.removeEventListener("mousedown", onMouseDown);
|
|
20743
20756
|
window.removeEventListener("mouseup", _onMouseUp);
|
|
20744
20757
|
window.removeEventListener("dragstart", _onDragStart);
|
|
20745
|
-
window.removeEventListener("mousemove",
|
|
20746
|
-
window.removeEventListener("wheel",
|
|
20758
|
+
window.removeEventListener("mousemove", onMouseMove);
|
|
20759
|
+
window.removeEventListener("wheel", onMouseMove);
|
|
20747
20760
|
};
|
|
20748
20761
|
function _onDragStart(ev) {
|
|
20749
20762
|
ev.preventDefault();
|
|
20750
20763
|
}
|
|
20751
|
-
window.addEventListener("mousedown",
|
|
20764
|
+
window.addEventListener("mousedown", onMouseDown);
|
|
20752
20765
|
window.addEventListener("mouseup", _onMouseUp);
|
|
20753
20766
|
window.addEventListener("dragstart", _onDragStart);
|
|
20754
|
-
window.addEventListener("mousemove",
|
|
20767
|
+
window.addEventListener("mousemove", onMouseMove);
|
|
20755
20768
|
// mouse wheel on window is by default a passive event.
|
|
20756
20769
|
// preventDefault() is not allowed in passive event handler.
|
|
20757
20770
|
// https://chromestatus.com/feature/6662647093133312
|
|
20758
|
-
window.addEventListener("wheel",
|
|
20771
|
+
window.addEventListener("wheel", onMouseMove, { passive: false });
|
|
20759
20772
|
}
|
|
20760
20773
|
/**
|
|
20761
20774
|
* Function to be used during a mousedown event, this function allows to
|
|
@@ -21485,6 +21498,11 @@
|
|
|
21485
21498
|
aggregated: ev.target.checked,
|
|
21486
21499
|
});
|
|
21487
21500
|
}
|
|
21501
|
+
onUpdateCumulative(ev) {
|
|
21502
|
+
this.props.updateChart(this.props.figureId, {
|
|
21503
|
+
cumulative: ev.target.checked,
|
|
21504
|
+
});
|
|
21505
|
+
}
|
|
21488
21506
|
}
|
|
21489
21507
|
|
|
21490
21508
|
class LineChartDesignPanel extends LineBarPieDesignPanel {
|
|
@@ -26773,7 +26791,8 @@
|
|
|
26773
26791
|
}
|
|
26774
26792
|
let prevCol = col;
|
|
26775
26793
|
let prevRow = row;
|
|
26776
|
-
const onMouseMove = (col, row) => {
|
|
26794
|
+
const onMouseMove = (col, row, ev) => {
|
|
26795
|
+
ev.preventDefault();
|
|
26777
26796
|
if ((col !== prevCol && col != -1) || (row !== prevRow && row != -1)) {
|
|
26778
26797
|
prevCol = col === -1 ? prevCol : col;
|
|
26779
26798
|
prevRow = row === -1 ? prevRow : row;
|
|
@@ -28457,6 +28476,7 @@
|
|
|
28457
28476
|
legendPosition: chartData.legendPosition,
|
|
28458
28477
|
stacked: chartData.stacked || false,
|
|
28459
28478
|
aggregated: false,
|
|
28479
|
+
cumulative: chartData.cumulative || false,
|
|
28460
28480
|
labelsAsText: false,
|
|
28461
28481
|
};
|
|
28462
28482
|
}
|
|
@@ -33117,7 +33137,7 @@
|
|
|
33117
33137
|
|
|
33118
33138
|
class HeaderVisibilityPlugin extends CorePlugin {
|
|
33119
33139
|
static getters = [
|
|
33120
|
-
"
|
|
33140
|
+
"checkElementsIncludeAllVisibleHeaders",
|
|
33121
33141
|
"getHiddenColsGroups",
|
|
33122
33142
|
"getHiddenRowsGroups",
|
|
33123
33143
|
"isRowHiddenByUser",
|
|
@@ -33151,7 +33171,7 @@
|
|
|
33151
33171
|
if (!this.getters.tryGetSheet(cmd.sheetId)) {
|
|
33152
33172
|
return 28 /* CommandResult.InvalidSheetId */;
|
|
33153
33173
|
}
|
|
33154
|
-
if (
|
|
33174
|
+
if (this.checkElementsIncludeAllVisibleHeaders(cmd.sheetId, cmd.dimension, cmd.elements)) {
|
|
33155
33175
|
return 8 /* CommandResult.NotEnoughElements */;
|
|
33156
33176
|
}
|
|
33157
33177
|
return 0 /* CommandResult.Success */;
|
|
@@ -33201,9 +33221,9 @@
|
|
|
33201
33221
|
}
|
|
33202
33222
|
return;
|
|
33203
33223
|
}
|
|
33204
|
-
|
|
33224
|
+
checkElementsIncludeAllVisibleHeaders(sheetId, dimension, elements) {
|
|
33205
33225
|
const visibleHeaders = this.getAllVisibleHeaders(sheetId, dimension);
|
|
33206
|
-
return
|
|
33226
|
+
return includesAll(elements, visibleHeaders);
|
|
33207
33227
|
}
|
|
33208
33228
|
isRowHiddenByUser(sheetId, index) {
|
|
33209
33229
|
return this.hiddenHeaders[sheetId].ROW[index];
|
|
@@ -34308,6 +34328,7 @@
|
|
|
34308
34328
|
"checkZonesExistInSheet",
|
|
34309
34329
|
"getCommandZones",
|
|
34310
34330
|
"getUnboundedZone",
|
|
34331
|
+
"checkElementsIncludeAllNonFrozenHeaders",
|
|
34311
34332
|
];
|
|
34312
34333
|
sheetIdsMapName = {};
|
|
34313
34334
|
orderedSheetIds = [];
|
|
@@ -34364,6 +34385,9 @@
|
|
|
34364
34385
|
if (Math.min(...cmd.elements) < 0 || Math.max(...cmd.elements) > elements) {
|
|
34365
34386
|
return 87 /* CommandResult.InvalidHeaderIndex */;
|
|
34366
34387
|
}
|
|
34388
|
+
else if (this.checkElementsIncludeAllNonFrozenHeaders(cmd.sheetId, cmd.dimension, cmd.elements)) {
|
|
34389
|
+
return 8 /* CommandResult.NotEnoughElements */;
|
|
34390
|
+
}
|
|
34367
34391
|
else {
|
|
34368
34392
|
return 0 /* CommandResult.Success */;
|
|
34369
34393
|
}
|
|
@@ -34656,6 +34680,20 @@
|
|
|
34656
34680
|
}
|
|
34657
34681
|
this.history.update("sheets", sheetId, "panes", panes);
|
|
34658
34682
|
}
|
|
34683
|
+
/**
|
|
34684
|
+
* Checks if all non-frozen header indices are present in the provided elements of selected rows/columns.
|
|
34685
|
+
* This validation ensures that all rows or columns cannot be deleted when frozen panes exist.
|
|
34686
|
+
*/
|
|
34687
|
+
checkElementsIncludeAllNonFrozenHeaders(sheetId, dimension, elements) {
|
|
34688
|
+
const paneDivisions = this.getters.getPaneDivisions(sheetId);
|
|
34689
|
+
const startIndex = dimension === "ROW" ? paneDivisions.ySplit : paneDivisions.xSplit;
|
|
34690
|
+
const endIndex = this.getters.getNumberHeaders(sheetId, dimension);
|
|
34691
|
+
if (!startIndex) {
|
|
34692
|
+
return false;
|
|
34693
|
+
}
|
|
34694
|
+
const indicesToCheck = range(startIndex, endIndex);
|
|
34695
|
+
return includesAll(elements, indicesToCheck);
|
|
34696
|
+
}
|
|
34659
34697
|
// ---------------------------------------------------------------------------
|
|
34660
34698
|
// Row/Col manipulation
|
|
34661
34699
|
// ---------------------------------------------------------------------------
|
|
@@ -43942,6 +43980,9 @@
|
|
|
43942
43980
|
const sheetId = this.sheetId;
|
|
43943
43981
|
this.left = this.searchHeaderIndex("COL", this.offsetScrollbarX, this.boundaries.left);
|
|
43944
43982
|
this.right = Math.min(this.boundaries.right, this.searchHeaderIndex("COL", this.viewportWidth, this.left));
|
|
43983
|
+
if (this.left === -1) {
|
|
43984
|
+
this.left = this.boundaries.left;
|
|
43985
|
+
}
|
|
43945
43986
|
if (this.right === -1) {
|
|
43946
43987
|
this.right = this.getters.getNumberCols(sheetId) - 1;
|
|
43947
43988
|
}
|
|
@@ -43955,6 +43996,9 @@
|
|
|
43955
43996
|
const sheetId = this.sheetId;
|
|
43956
43997
|
this.top = this.searchHeaderIndex("ROW", this.offsetScrollbarY, this.boundaries.top);
|
|
43957
43998
|
this.bottom = Math.min(this.boundaries.bottom, this.searchHeaderIndex("ROW", this.viewportHeight, this.top));
|
|
43999
|
+
if (this.top === -1) {
|
|
44000
|
+
this.top = this.boundaries.top;
|
|
44001
|
+
}
|
|
43958
44002
|
if (this.bottom === -1) {
|
|
43959
44003
|
this.bottom = this.getters.getNumberRows(sheetId) - 1;
|
|
43960
44004
|
}
|
|
@@ -50557,9 +50601,9 @@
|
|
|
50557
50601
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
50558
50602
|
|
|
50559
50603
|
|
|
50560
|
-
__info__.version = '16.4.
|
|
50561
|
-
__info__.date = '2023-
|
|
50562
|
-
__info__.hash = '
|
|
50604
|
+
__info__.version = '16.4.6';
|
|
50605
|
+
__info__.date = '2023-09-12T11:43:54.243Z';
|
|
50606
|
+
__info__.hash = '5746355';
|
|
50563
50607
|
|
|
50564
50608
|
|
|
50565
50609
|
})(this.o_spreadsheet = this.o_spreadsheet || {}, owl);
|