@odoo/o-spreadsheet 16.3.9 → 16.3.10
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 +123 -123
- package/package.json +1 -1
|
@@ -7463,6 +7463,7 @@
|
|
|
7463
7463
|
aggregated;
|
|
7464
7464
|
type = "line";
|
|
7465
7465
|
dataSetsHaveTitle;
|
|
7466
|
+
cumulative;
|
|
7466
7467
|
constructor(definition, sheetId, getters) {
|
|
7467
7468
|
super(definition, sheetId, getters);
|
|
7468
7469
|
this.dataSets = createDataSets(this.getters, definition.dataSets, sheetId, definition.dataSetsHaveTitle);
|
|
@@ -7474,6 +7475,7 @@
|
|
|
7474
7475
|
this.stacked = definition.stacked;
|
|
7475
7476
|
this.aggregated = definition.aggregated;
|
|
7476
7477
|
this.dataSetsHaveTitle = definition.dataSetsHaveTitle;
|
|
7478
|
+
this.cumulative = definition.cumulative;
|
|
7477
7479
|
}
|
|
7478
7480
|
static validateChartDefinition(validator, definition) {
|
|
7479
7481
|
return validator.checkValidations(definition, checkDataset, checkLabelRange);
|
|
@@ -7494,6 +7496,7 @@
|
|
|
7494
7496
|
labelRange: context.auxiliaryRange || undefined,
|
|
7495
7497
|
stacked: false,
|
|
7496
7498
|
aggregated: false,
|
|
7499
|
+
cumulative: false,
|
|
7497
7500
|
};
|
|
7498
7501
|
}
|
|
7499
7502
|
getDefinition() {
|
|
@@ -7514,6 +7517,7 @@
|
|
|
7514
7517
|
labelsAsText: this.labelsAsText,
|
|
7515
7518
|
stacked: this.stacked,
|
|
7516
7519
|
aggregated: this.aggregated,
|
|
7520
|
+
cumulative: this.cumulative,
|
|
7517
7521
|
};
|
|
7518
7522
|
}
|
|
7519
7523
|
getContextCreation() {
|
|
@@ -7722,6 +7726,16 @@
|
|
|
7722
7726
|
if (chart.stacked) {
|
|
7723
7727
|
backgroundRGBA.a = LINE_FILL_TRANSPARENCY;
|
|
7724
7728
|
}
|
|
7729
|
+
if (chart.cumulative) {
|
|
7730
|
+
let accumulator = 0;
|
|
7731
|
+
data = data.map((value) => {
|
|
7732
|
+
if (!isNaN(value)) {
|
|
7733
|
+
accumulator += parseFloat(value);
|
|
7734
|
+
return accumulator;
|
|
7735
|
+
}
|
|
7736
|
+
return value;
|
|
7737
|
+
});
|
|
7738
|
+
}
|
|
7725
7739
|
const backgroundColor = rgbaToHex(backgroundRGBA);
|
|
7726
7740
|
const dataset = {
|
|
7727
7741
|
label,
|
|
@@ -8543,6 +8557,7 @@
|
|
|
8543
8557
|
labelsAsText: false,
|
|
8544
8558
|
stacked: false,
|
|
8545
8559
|
aggregated: false,
|
|
8560
|
+
cumulative: false,
|
|
8546
8561
|
labelRange: labelRangeXc,
|
|
8547
8562
|
type: "line",
|
|
8548
8563
|
dataSetsHaveTitle,
|
|
@@ -8905,6 +8920,13 @@
|
|
|
8905
8920
|
elements: rows,
|
|
8906
8921
|
});
|
|
8907
8922
|
};
|
|
8923
|
+
const CAN_REMOVE_COLUMNS_ROWS = (dimension, env) => {
|
|
8924
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
8925
|
+
const selectedElements = env.model.getters.getElementsFromSelection(dimension);
|
|
8926
|
+
const includesAllVisibleHeaders = env.model.getters.checkElementsIncludeAllVisibleHeaders(sheetId, dimension, selectedElements);
|
|
8927
|
+
const includesAllNonFrozenHeaders = env.model.getters.checkElementsIncludeAllNonFrozenHeaders(sheetId, dimension, selectedElements);
|
|
8928
|
+
return !includesAllVisibleHeaders && !includesAllNonFrozenHeaders;
|
|
8929
|
+
};
|
|
8908
8930
|
const REMOVE_COLUMNS_NAME = (env) => {
|
|
8909
8931
|
if (env.model.getters.getSelectedZones().length > 1) {
|
|
8910
8932
|
return _lt("Delete columns");
|
|
@@ -8929,7 +8951,7 @@
|
|
|
8929
8951
|
const NOT_ALL_VISIBLE_ROWS_SELECTED = (env) => {
|
|
8930
8952
|
const sheetId = env.model.getters.getActiveSheetId();
|
|
8931
8953
|
const selectedRows = env.model.getters.getElementsFromSelection("ROW");
|
|
8932
|
-
return env.model.getters.
|
|
8954
|
+
return !env.model.getters.checkElementsIncludeAllVisibleHeaders(sheetId, "ROW", selectedRows);
|
|
8933
8955
|
};
|
|
8934
8956
|
const REMOVE_COLUMNS_ACTION = (env) => {
|
|
8935
8957
|
let columns = [...env.model.getters.getActiveCols()];
|
|
@@ -8948,7 +8970,7 @@
|
|
|
8948
8970
|
const NOT_ALL_VISIBLE_COLS_SELECTED = (env) => {
|
|
8949
8971
|
const sheetId = env.model.getters.getActiveSheetId();
|
|
8950
8972
|
const selectedCols = env.model.getters.getElementsFromSelection("COL");
|
|
8951
|
-
return env.model.getters.
|
|
8973
|
+
return !env.model.getters.checkElementsIncludeAllVisibleHeaders(sheetId, "COL", selectedCols);
|
|
8952
8974
|
};
|
|
8953
8975
|
const INSERT_CELL_SHIFT_DOWN = (env) => {
|
|
8954
8976
|
const zone = env.model.getters.getSelectedZone();
|
|
@@ -9405,7 +9427,7 @@
|
|
|
9405
9427
|
const deleteRows = {
|
|
9406
9428
|
name: REMOVE_ROWS_NAME,
|
|
9407
9429
|
execute: REMOVE_ROWS_ACTION,
|
|
9408
|
-
isVisible:
|
|
9430
|
+
isVisible: (env) => CAN_REMOVE_COLUMNS_ROWS("ROW", env),
|
|
9409
9431
|
};
|
|
9410
9432
|
const deleteRow = {
|
|
9411
9433
|
...deleteRows,
|
|
@@ -9418,7 +9440,7 @@
|
|
|
9418
9440
|
const deleteCols = {
|
|
9419
9441
|
name: REMOVE_COLUMNS_NAME,
|
|
9420
9442
|
execute: REMOVE_COLUMNS_ACTION,
|
|
9421
|
-
isVisible:
|
|
9443
|
+
isVisible: (env) => CAN_REMOVE_COLUMNS_ROWS("COL", env),
|
|
9422
9444
|
};
|
|
9423
9445
|
const deleteCol = {
|
|
9424
9446
|
...deleteCols,
|
|
@@ -18466,6 +18488,11 @@
|
|
|
18466
18488
|
aggregated: ev.target.checked,
|
|
18467
18489
|
});
|
|
18468
18490
|
}
|
|
18491
|
+
onUpdateCumulative(ev) {
|
|
18492
|
+
this.props.updateChart(this.props.figureId, {
|
|
18493
|
+
cumulative: ev.target.checked,
|
|
18494
|
+
});
|
|
18495
|
+
}
|
|
18469
18496
|
}
|
|
18470
18497
|
|
|
18471
18498
|
class LineChartDesignPanel extends LineBarPieDesignPanel {
|
|
@@ -26405,6 +26432,7 @@
|
|
|
26405
26432
|
legendPosition: chartData.legendPosition,
|
|
26406
26433
|
stacked: chartData.stacked || false,
|
|
26407
26434
|
aggregated: false,
|
|
26435
|
+
cumulative: chartData.cumulative || false,
|
|
26408
26436
|
labelsAsText: false,
|
|
26409
26437
|
};
|
|
26410
26438
|
}
|
|
@@ -31085,7 +31113,7 @@
|
|
|
31085
31113
|
|
|
31086
31114
|
class HeaderVisibilityPlugin extends CorePlugin {
|
|
31087
31115
|
static getters = [
|
|
31088
|
-
"
|
|
31116
|
+
"checkElementsIncludeAllVisibleHeaders",
|
|
31089
31117
|
"getHiddenColsGroups",
|
|
31090
31118
|
"getHiddenRowsGroups",
|
|
31091
31119
|
"isRowHiddenByUser",
|
|
@@ -31119,7 +31147,7 @@
|
|
|
31119
31147
|
if (!this.getters.tryGetSheet(cmd.sheetId)) {
|
|
31120
31148
|
return 27 /* CommandResult.InvalidSheetId */;
|
|
31121
31149
|
}
|
|
31122
|
-
if (
|
|
31150
|
+
if (this.checkElementsIncludeAllVisibleHeaders(cmd.sheetId, cmd.dimension, cmd.elements)) {
|
|
31123
31151
|
return 8 /* CommandResult.NotEnoughElements */;
|
|
31124
31152
|
}
|
|
31125
31153
|
return 0 /* CommandResult.Success */;
|
|
@@ -31169,9 +31197,9 @@
|
|
|
31169
31197
|
}
|
|
31170
31198
|
return;
|
|
31171
31199
|
}
|
|
31172
|
-
|
|
31200
|
+
checkElementsIncludeAllVisibleHeaders(sheetId, dimension, elements) {
|
|
31173
31201
|
const visibleHeaders = this.getAllVisibleHeaders(sheetId, dimension);
|
|
31174
|
-
return
|
|
31202
|
+
return includesAll(elements, visibleHeaders);
|
|
31175
31203
|
}
|
|
31176
31204
|
isRowHiddenByUser(sheetId, index) {
|
|
31177
31205
|
return this.hiddenHeaders[sheetId].ROW[index];
|
|
@@ -32258,6 +32286,7 @@
|
|
|
32258
32286
|
"getPaneDivisions",
|
|
32259
32287
|
"checkZonesExistInSheet",
|
|
32260
32288
|
"getCommandZones",
|
|
32289
|
+
"checkElementsIncludeAllNonFrozenHeaders",
|
|
32261
32290
|
];
|
|
32262
32291
|
sheetIdsMapName = {};
|
|
32263
32292
|
orderedSheetIds = [];
|
|
@@ -32314,6 +32343,9 @@
|
|
|
32314
32343
|
if (Math.min(...cmd.elements) < 0 || Math.max(...cmd.elements) > elements) {
|
|
32315
32344
|
return 86 /* CommandResult.InvalidHeaderIndex */;
|
|
32316
32345
|
}
|
|
32346
|
+
else if (this.checkElementsIncludeAllNonFrozenHeaders(cmd.sheetId, cmd.dimension, cmd.elements)) {
|
|
32347
|
+
return 8 /* CommandResult.NotEnoughElements */;
|
|
32348
|
+
}
|
|
32317
32349
|
else {
|
|
32318
32350
|
return 0 /* CommandResult.Success */;
|
|
32319
32351
|
}
|
|
@@ -32596,6 +32628,20 @@
|
|
|
32596
32628
|
}
|
|
32597
32629
|
this.history.update("sheets", sheetId, "panes", panes);
|
|
32598
32630
|
}
|
|
32631
|
+
/**
|
|
32632
|
+
* Checks if all non-frozen header indices are present in the provided elements of selected rows/columns.
|
|
32633
|
+
* This validation ensures that all rows or columns cannot be deleted when frozen panes exist.
|
|
32634
|
+
*/
|
|
32635
|
+
checkElementsIncludeAllNonFrozenHeaders(sheetId, dimension, elements) {
|
|
32636
|
+
const paneDivisions = this.getters.getPaneDivisions(sheetId);
|
|
32637
|
+
const startIndex = dimension === "ROW" ? paneDivisions.ySplit : paneDivisions.xSplit;
|
|
32638
|
+
const endIndex = this.getters.getNumberHeaders(sheetId, dimension);
|
|
32639
|
+
if (!startIndex) {
|
|
32640
|
+
return false;
|
|
32641
|
+
}
|
|
32642
|
+
const indicesToCheck = range(startIndex, endIndex);
|
|
32643
|
+
return includesAll(elements, indicesToCheck);
|
|
32644
|
+
}
|
|
32599
32645
|
// ---------------------------------------------------------------------------
|
|
32600
32646
|
// Row/Col manipulation
|
|
32601
32647
|
// ---------------------------------------------------------------------------
|
|
@@ -34560,6 +34606,9 @@
|
|
|
34560
34606
|
const sheetId = this.sheetId;
|
|
34561
34607
|
this.left = this.searchHeaderIndex("COL", this.offsetScrollbarX, this.boundaries.left);
|
|
34562
34608
|
this.right = Math.min(this.boundaries.right, this.searchHeaderIndex("COL", this.viewportWidth, this.left));
|
|
34609
|
+
if (this.left === -1) {
|
|
34610
|
+
this.left = this.boundaries.left;
|
|
34611
|
+
}
|
|
34563
34612
|
if (this.right === -1) {
|
|
34564
34613
|
this.right = this.getters.getNumberCols(sheetId) - 1;
|
|
34565
34614
|
}
|
|
@@ -34573,6 +34622,9 @@
|
|
|
34573
34622
|
const sheetId = this.sheetId;
|
|
34574
34623
|
this.top = this.searchHeaderIndex("ROW", this.offsetScrollbarY, this.boundaries.top);
|
|
34575
34624
|
this.bottom = Math.min(this.boundaries.bottom, this.searchHeaderIndex("ROW", this.viewportHeight, this.top));
|
|
34625
|
+
if (this.top === -1) {
|
|
34626
|
+
this.top = this.boundaries.top;
|
|
34627
|
+
}
|
|
34576
34628
|
if (this.bottom === -1) {
|
|
34577
34629
|
this.bottom = this.getters.getNumberRows(sheetId) - 1;
|
|
34578
34630
|
}
|
|
@@ -47654,9 +47706,9 @@
|
|
|
47654
47706
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
47655
47707
|
|
|
47656
47708
|
|
|
47657
|
-
__info__.version = '16.3.
|
|
47658
|
-
__info__.date = '2023-
|
|
47659
|
-
__info__.hash = '
|
|
47709
|
+
__info__.version = '16.3.10';
|
|
47710
|
+
__info__.date = '2023-09-12T11:41:57.775Z';
|
|
47711
|
+
__info__.hash = '3a95562';
|
|
47660
47712
|
|
|
47661
47713
|
|
|
47662
47714
|
})(this.o_spreadsheet = this.o_spreadsheet || {}, owl);
|