@odoo/o-spreadsheet 16.4.5 → 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 +63 -11
- package/dist/o-spreadsheet.d.ts +11 -3
- package/dist/o-spreadsheet.esm.js +63 -11
- package/dist/o-spreadsheet.iife.js +63 -11
- package/dist/o-spreadsheet.iife.min.js +76 -76
- package/package.json +1 -1
|
@@ -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,
|
|
@@ -21476,6 +21498,11 @@
|
|
|
21476
21498
|
aggregated: ev.target.checked,
|
|
21477
21499
|
});
|
|
21478
21500
|
}
|
|
21501
|
+
onUpdateCumulative(ev) {
|
|
21502
|
+
this.props.updateChart(this.props.figureId, {
|
|
21503
|
+
cumulative: ev.target.checked,
|
|
21504
|
+
});
|
|
21505
|
+
}
|
|
21479
21506
|
}
|
|
21480
21507
|
|
|
21481
21508
|
class LineChartDesignPanel extends LineBarPieDesignPanel {
|
|
@@ -28449,6 +28476,7 @@
|
|
|
28449
28476
|
legendPosition: chartData.legendPosition,
|
|
28450
28477
|
stacked: chartData.stacked || false,
|
|
28451
28478
|
aggregated: false,
|
|
28479
|
+
cumulative: chartData.cumulative || false,
|
|
28452
28480
|
labelsAsText: false,
|
|
28453
28481
|
};
|
|
28454
28482
|
}
|
|
@@ -33109,7 +33137,7 @@
|
|
|
33109
33137
|
|
|
33110
33138
|
class HeaderVisibilityPlugin extends CorePlugin {
|
|
33111
33139
|
static getters = [
|
|
33112
|
-
"
|
|
33140
|
+
"checkElementsIncludeAllVisibleHeaders",
|
|
33113
33141
|
"getHiddenColsGroups",
|
|
33114
33142
|
"getHiddenRowsGroups",
|
|
33115
33143
|
"isRowHiddenByUser",
|
|
@@ -33143,7 +33171,7 @@
|
|
|
33143
33171
|
if (!this.getters.tryGetSheet(cmd.sheetId)) {
|
|
33144
33172
|
return 28 /* CommandResult.InvalidSheetId */;
|
|
33145
33173
|
}
|
|
33146
|
-
if (
|
|
33174
|
+
if (this.checkElementsIncludeAllVisibleHeaders(cmd.sheetId, cmd.dimension, cmd.elements)) {
|
|
33147
33175
|
return 8 /* CommandResult.NotEnoughElements */;
|
|
33148
33176
|
}
|
|
33149
33177
|
return 0 /* CommandResult.Success */;
|
|
@@ -33193,9 +33221,9 @@
|
|
|
33193
33221
|
}
|
|
33194
33222
|
return;
|
|
33195
33223
|
}
|
|
33196
|
-
|
|
33224
|
+
checkElementsIncludeAllVisibleHeaders(sheetId, dimension, elements) {
|
|
33197
33225
|
const visibleHeaders = this.getAllVisibleHeaders(sheetId, dimension);
|
|
33198
|
-
return
|
|
33226
|
+
return includesAll(elements, visibleHeaders);
|
|
33199
33227
|
}
|
|
33200
33228
|
isRowHiddenByUser(sheetId, index) {
|
|
33201
33229
|
return this.hiddenHeaders[sheetId].ROW[index];
|
|
@@ -34300,6 +34328,7 @@
|
|
|
34300
34328
|
"checkZonesExistInSheet",
|
|
34301
34329
|
"getCommandZones",
|
|
34302
34330
|
"getUnboundedZone",
|
|
34331
|
+
"checkElementsIncludeAllNonFrozenHeaders",
|
|
34303
34332
|
];
|
|
34304
34333
|
sheetIdsMapName = {};
|
|
34305
34334
|
orderedSheetIds = [];
|
|
@@ -34356,6 +34385,9 @@
|
|
|
34356
34385
|
if (Math.min(...cmd.elements) < 0 || Math.max(...cmd.elements) > elements) {
|
|
34357
34386
|
return 87 /* CommandResult.InvalidHeaderIndex */;
|
|
34358
34387
|
}
|
|
34388
|
+
else if (this.checkElementsIncludeAllNonFrozenHeaders(cmd.sheetId, cmd.dimension, cmd.elements)) {
|
|
34389
|
+
return 8 /* CommandResult.NotEnoughElements */;
|
|
34390
|
+
}
|
|
34359
34391
|
else {
|
|
34360
34392
|
return 0 /* CommandResult.Success */;
|
|
34361
34393
|
}
|
|
@@ -34648,6 +34680,20 @@
|
|
|
34648
34680
|
}
|
|
34649
34681
|
this.history.update("sheets", sheetId, "panes", panes);
|
|
34650
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
|
+
}
|
|
34651
34697
|
// ---------------------------------------------------------------------------
|
|
34652
34698
|
// Row/Col manipulation
|
|
34653
34699
|
// ---------------------------------------------------------------------------
|
|
@@ -43934,6 +43980,9 @@
|
|
|
43934
43980
|
const sheetId = this.sheetId;
|
|
43935
43981
|
this.left = this.searchHeaderIndex("COL", this.offsetScrollbarX, this.boundaries.left);
|
|
43936
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
|
+
}
|
|
43937
43986
|
if (this.right === -1) {
|
|
43938
43987
|
this.right = this.getters.getNumberCols(sheetId) - 1;
|
|
43939
43988
|
}
|
|
@@ -43947,6 +43996,9 @@
|
|
|
43947
43996
|
const sheetId = this.sheetId;
|
|
43948
43997
|
this.top = this.searchHeaderIndex("ROW", this.offsetScrollbarY, this.boundaries.top);
|
|
43949
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
|
+
}
|
|
43950
44002
|
if (this.bottom === -1) {
|
|
43951
44003
|
this.bottom = this.getters.getNumberRows(sheetId) - 1;
|
|
43952
44004
|
}
|
|
@@ -50549,9 +50601,9 @@
|
|
|
50549
50601
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
50550
50602
|
|
|
50551
50603
|
|
|
50552
|
-
__info__.version = '16.4.
|
|
50553
|
-
__info__.date = '2023-
|
|
50554
|
-
__info__.hash = '
|
|
50604
|
+
__info__.version = '16.4.6';
|
|
50605
|
+
__info__.date = '2023-09-12T11:43:54.243Z';
|
|
50606
|
+
__info__.hash = '5746355';
|
|
50555
50607
|
|
|
50556
50608
|
|
|
50557
50609
|
})(this.o_spreadsheet = this.o_spreadsheet || {}, owl);
|