@odoo/o-spreadsheet 16.1.19 → 16.1.20

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.
@@ -4827,6 +4827,7 @@
4827
4827
  this.labelsAsText = definition.labelsAsText;
4828
4828
  this.stacked = definition.stacked;
4829
4829
  this.aggregated = definition.aggregated;
4830
+ this.cumulative = definition.cumulative;
4830
4831
  }
4831
4832
  static validateChartDefinition(validator, definition) {
4832
4833
  return validator.checkValidations(definition, checkDataset, checkLabelRange);
@@ -4847,6 +4848,7 @@
4847
4848
  labelRange: context.auxiliaryRange || undefined,
4848
4849
  stacked: false,
4849
4850
  aggregated: false,
4851
+ cumulative: false,
4850
4852
  };
4851
4853
  }
4852
4854
  getDefinition() {
@@ -4867,6 +4869,7 @@
4867
4869
  labelsAsText: this.labelsAsText,
4868
4870
  stacked: this.stacked,
4869
4871
  aggregated: this.aggregated,
4872
+ cumulative: this.cumulative,
4870
4873
  };
4871
4874
  }
4872
4875
  getContextCreation() {
@@ -5060,6 +5063,16 @@
5060
5063
  if (chart.stacked) {
5061
5064
  backgroundRGBA.a = LINE_FILL_TRANSPARENCY;
5062
5065
  }
5066
+ if (chart.cumulative) {
5067
+ let accumulator = 0;
5068
+ data = data.map((value) => {
5069
+ if (!isNaN(value)) {
5070
+ accumulator += parseFloat(value);
5071
+ return accumulator;
5072
+ }
5073
+ return value;
5074
+ });
5075
+ }
5063
5076
  const backgroundColor = rgbaToHex(backgroundRGBA);
5064
5077
  const dataset = {
5065
5078
  label,
@@ -6401,6 +6414,7 @@
6401
6414
  labelsAsText: false,
6402
6415
  stacked: false,
6403
6416
  aggregated: false,
6417
+ cumulative: false,
6404
6418
  labelRange: labelRangeXc,
6405
6419
  type: "line",
6406
6420
  dataSetsHaveTitle,
@@ -6754,6 +6768,13 @@
6754
6768
  elements: rows,
6755
6769
  });
6756
6770
  };
6771
+ const CAN_REMOVE_COLUMNS_ROWS = (dimension, env) => {
6772
+ const sheetId = env.model.getters.getActiveSheetId();
6773
+ const selectedElements = env.model.getters.getElementsFromSelection(dimension);
6774
+ const includesAllVisibleHeaders = env.model.getters.checkElementsIncludeAllVisibleHeaders(sheetId, dimension, selectedElements);
6775
+ const includesAllNonFrozenHeaders = env.model.getters.checkElementsIncludeAllNonFrozenHeaders(sheetId, dimension, selectedElements);
6776
+ return !includesAllVisibleHeaders && !includesAllNonFrozenHeaders;
6777
+ };
6757
6778
  const REMOVE_COLUMNS_NAME = (env) => {
6758
6779
  if (env.model.getters.getSelectedZones().length > 1) {
6759
6780
  return _lt("Delete columns");
@@ -7344,11 +7365,7 @@
7344
7365
  name: REMOVE_COLUMNS_NAME,
7345
7366
  sequence: 90,
7346
7367
  action: REMOVE_COLUMNS_ACTION,
7347
- isVisible: (env) => {
7348
- const sheetId = env.model.getters.getActiveSheetId();
7349
- const selectedCols = env.model.getters.getElementsFromSelection("COL");
7350
- return env.model.getters.canRemoveHeaders(sheetId, "COL", selectedCols);
7351
- },
7368
+ isVisible: (env) => CAN_REMOVE_COLUMNS_ROWS("COL", env),
7352
7369
  })
7353
7370
  .add("clear_column", {
7354
7371
  name: DELETE_CONTENT_COLUMNS_NAME,
@@ -7362,7 +7379,7 @@
7362
7379
  isVisible: (env) => {
7363
7380
  const sheetId = env.model.getters.getActiveSheetId();
7364
7381
  const selectedCols = env.model.getters.getElementsFromSelection("COL");
7365
- return env.model.getters.canRemoveHeaders(sheetId, "COL", selectedCols);
7382
+ return !env.model.getters.checkElementsIncludeAllVisibleHeaders(sheetId, "COL", selectedCols);
7366
7383
  },
7367
7384
  separator: true,
7368
7385
  })
@@ -7436,11 +7453,7 @@
7436
7453
  name: REMOVE_ROWS_NAME,
7437
7454
  sequence: 70,
7438
7455
  action: REMOVE_ROWS_ACTION,
7439
- isVisible: (env) => {
7440
- const sheetId = env.model.getters.getActiveSheetId();
7441
- const selectedRows = env.model.getters.getElementsFromSelection("ROW");
7442
- return env.model.getters.canRemoveHeaders(sheetId, "ROW", selectedRows);
7443
- },
7456
+ isVisible: (env) => CAN_REMOVE_COLUMNS_ROWS("ROW", env),
7444
7457
  })
7445
7458
  .add("clear_row", {
7446
7459
  name: DELETE_CONTENT_ROWS_NAME,
@@ -7454,7 +7467,7 @@
7454
7467
  isVisible: (env) => {
7455
7468
  const sheetId = env.model.getters.getActiveSheetId();
7456
7469
  const selectedRows = env.model.getters.getElementsFromSelection("ROW");
7457
- return env.model.getters.canRemoveHeaders(sheetId, "ROW", selectedRows);
7470
+ return !env.model.getters.checkElementsIncludeAllVisibleHeaders(sheetId, "ROW", selectedRows);
7458
7471
  },
7459
7472
  separator: true,
7460
7473
  })
@@ -19331,11 +19344,13 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
19331
19344
  name: REMOVE_ROWS_NAME,
19332
19345
  sequence: 80,
19333
19346
  action: REMOVE_ROWS_ACTION,
19347
+ isVisible: (env) => CAN_REMOVE_COLUMNS_ROWS("ROW", env),
19334
19348
  })
19335
19349
  .addChild("edit_delete_column", ["edit"], {
19336
19350
  name: REMOVE_COLUMNS_NAME,
19337
19351
  sequence: 90,
19338
19352
  action: REMOVE_COLUMNS_ACTION,
19353
+ isVisible: (env) => CAN_REMOVE_COLUMNS_ROWS("COL", env),
19339
19354
  })
19340
19355
  .addChild("edit_delete_cell_shift_up", ["edit"], {
19341
19356
  name: _lt("Delete cell and shift up"),
@@ -20515,6 +20530,11 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
20515
20530
  aggregated: ev.target.checked,
20516
20531
  });
20517
20532
  }
20533
+ onUpdateCumulative(ev) {
20534
+ this.props.updateChart(this.props.figureId, {
20535
+ cumulative: ev.target.checked,
20536
+ });
20537
+ }
20518
20538
  }
20519
20539
  LineConfigPanel.template = "o-spreadsheet-LineConfigPanel";
20520
20540
 
@@ -25485,6 +25505,7 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
25485
25505
  legendPosition: chartData.legendPosition,
25486
25506
  stacked: chartData.stacked || false,
25487
25507
  aggregated: false,
25508
+ cumulative: chartData.cumulative || false,
25488
25509
  labelsAsText: false,
25489
25510
  };
25490
25511
  }
@@ -30049,7 +30070,7 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
30049
30070
  if (!this.getters.tryGetSheet(cmd.sheetId)) {
30050
30071
  return 27 /* CommandResult.InvalidSheetId */;
30051
30072
  }
30052
- if (!this.canRemoveHeaders(cmd.sheetId, cmd.dimension, cmd.elements)) {
30073
+ if (this.checkElementsIncludeAllVisibleHeaders(cmd.sheetId, cmd.dimension, cmd.elements)) {
30053
30074
  return 8 /* CommandResult.NotEnoughElements */;
30054
30075
  }
30055
30076
  return 0 /* CommandResult.Success */;
@@ -30099,9 +30120,9 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
30099
30120
  }
30100
30121
  return;
30101
30122
  }
30102
- canRemoveHeaders(sheetId, dimension, elements) {
30123
+ checkElementsIncludeAllVisibleHeaders(sheetId, dimension, elements) {
30103
30124
  const visibleHeaders = this.getAllVisibleHeaders(sheetId, dimension);
30104
- return !includesAll(elements, visibleHeaders);
30125
+ return includesAll(elements, visibleHeaders);
30105
30126
  }
30106
30127
  isRowHiddenByUser(sheetId, index) {
30107
30128
  return this.hiddenHeaders[sheetId].ROW[index];
@@ -30197,7 +30218,7 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
30197
30218
  }
30198
30219
  }
30199
30220
  HeaderVisibilityPlugin.getters = [
30200
- "canRemoveHeaders",
30221
+ "checkElementsIncludeAllVisibleHeaders",
30201
30222
  "getHiddenColsGroups",
30202
30223
  "getHiddenRowsGroups",
30203
30224
  "isRowHiddenByUser",
@@ -31225,6 +31246,9 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
31225
31246
  if (Math.min(...cmd.elements) < 0 || Math.max(...cmd.elements) > elements) {
31226
31247
  return 86 /* CommandResult.InvalidHeaderIndex */;
31227
31248
  }
31249
+ else if (this.checkElementsIncludeAllNonFrozenHeaders(cmd.sheetId, cmd.dimension, cmd.elements)) {
31250
+ return 8 /* CommandResult.NotEnoughElements */;
31251
+ }
31228
31252
  else {
31229
31253
  return 0 /* CommandResult.Success */;
31230
31254
  }
@@ -31511,6 +31535,20 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
31511
31535
  }
31512
31536
  this.history.update("sheets", sheetId, "panes", panes);
31513
31537
  }
31538
+ /**
31539
+ * Checks if all non-frozen header indices are present in the provided elements of selected rows/columns.
31540
+ * This validation ensures that all rows or columns cannot be deleted when frozen panes exist.
31541
+ */
31542
+ checkElementsIncludeAllNonFrozenHeaders(sheetId, dimension, elements) {
31543
+ const paneDivisions = this.getters.getPaneDivisions(sheetId);
31544
+ const startIndex = dimension === "ROW" ? paneDivisions.ySplit : paneDivisions.xSplit;
31545
+ const endIndex = this.getters.getNumberHeaders(sheetId, dimension);
31546
+ if (!startIndex) {
31547
+ return false;
31548
+ }
31549
+ const indicesToCheck = range(startIndex, endIndex);
31550
+ return includesAll(elements, indicesToCheck);
31551
+ }
31514
31552
  // ---------------------------------------------------------------------------
31515
31553
  // Row/Col manipulation
31516
31554
  // ---------------------------------------------------------------------------
@@ -32043,6 +32081,7 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
32043
32081
  "getSheetSize",
32044
32082
  "getSheetZone",
32045
32083
  "getPaneDivisions",
32084
+ "checkElementsIncludeAllNonFrozenHeaders",
32046
32085
  ];
32047
32086
 
32048
32087
  /**
@@ -33461,6 +33500,9 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
33461
33500
  const sheetId = this.sheetId;
33462
33501
  this.left = this.searchHeaderIndex("COL", this.offsetScrollbarX, this.boundaries.left);
33463
33502
  this.right = Math.min(this.boundaries.right, this.searchHeaderIndex("COL", this.viewportWidth, this.left));
33503
+ if (this.left === -1) {
33504
+ this.left = this.boundaries.left;
33505
+ }
33464
33506
  if (this.right === -1) {
33465
33507
  this.right = this.getters.getNumberCols(sheetId) - 1;
33466
33508
  }
@@ -33474,6 +33516,9 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
33474
33516
  const sheetId = this.sheetId;
33475
33517
  this.top = this.searchHeaderIndex("ROW", this.offsetScrollbarY, this.boundaries.top);
33476
33518
  this.bottom = Math.min(this.boundaries.bottom, this.searchHeaderIndex("ROW", this.viewportHeight, this.top));
33519
+ if (this.top === -1) {
33520
+ this.top = this.boundaries.top;
33521
+ }
33477
33522
  if (this.bottom === -1) {
33478
33523
  this.bottom = this.getters.getNumberRows(sheetId) - 1;
33479
33524
  }
@@ -44304,9 +44349,9 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
44304
44349
  Object.defineProperty(exports, '__esModule', { value: true });
44305
44350
 
44306
44351
 
44307
- __info__.version = '16.1.19';
44308
- __info__.date = '2023-08-29T13:54:21.626Z';
44309
- __info__.hash = '053a843';
44352
+ __info__.version = '16.1.20';
44353
+ __info__.date = '2023-09-12T11:43:40.624Z';
44354
+ __info__.hash = '7d7b841';
44310
44355
 
44311
44356
 
44312
44357
  })(this.o_spreadsheet = this.o_spreadsheet || {}, owl);