@odoo/o-spreadsheet 16.0.16 → 16.0.18

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.
@@ -3516,6 +3516,7 @@
3516
3516
  background-color: white;
3517
3517
  border-left: 3px solid red;
3518
3518
  padding: 10px;
3519
+ overflow-wrap: break-word;
3519
3520
  }
3520
3521
  `;
3521
3522
  class ErrorToolTip extends owl.Component {
@@ -5032,6 +5033,13 @@
5032
5033
  elements: rows,
5033
5034
  });
5034
5035
  };
5036
+ const CAN_REMOVE_COLUMNS_ROWS = (dimension, env) => {
5037
+ const sheetId = env.model.getters.getActiveSheetId();
5038
+ const selectedElements = env.model.getters.getElementsFromSelection(dimension);
5039
+ const includesAllVisibleHeaders = env.model.getters.checkElementsIncludeAllVisibleHeaders(sheetId, dimension, selectedElements);
5040
+ const includesAllNonFrozenHeaders = env.model.getters.checkElementsIncludeAllNonFrozenHeaders(sheetId, dimension, selectedElements);
5041
+ return !includesAllVisibleHeaders && !includesAllNonFrozenHeaders;
5042
+ };
5035
5043
  const REMOVE_COLUMNS_NAME = (env) => {
5036
5044
  if (env.model.getters.getSelectedZones().length > 1) {
5037
5045
  return _lt("Delete columns");
@@ -5636,11 +5644,7 @@
5636
5644
  name: REMOVE_COLUMNS_NAME,
5637
5645
  sequence: 90,
5638
5646
  action: REMOVE_COLUMNS_ACTION,
5639
- isVisible: (env) => {
5640
- const sheetId = env.model.getters.getActiveSheetId();
5641
- const selectedCols = env.model.getters.getElementsFromSelection("COL");
5642
- return env.model.getters.canRemoveHeaders(sheetId, "COL", selectedCols);
5643
- },
5647
+ isVisible: (env) => CAN_REMOVE_COLUMNS_ROWS("COL", env),
5644
5648
  })
5645
5649
  .add("clear_column", {
5646
5650
  name: DELETE_CONTENT_COLUMNS_NAME,
@@ -5654,7 +5658,7 @@
5654
5658
  isVisible: (env) => {
5655
5659
  const sheetId = env.model.getters.getActiveSheetId();
5656
5660
  const selectedCols = env.model.getters.getElementsFromSelection("COL");
5657
- return env.model.getters.canRemoveHeaders(sheetId, "COL", selectedCols);
5661
+ return !env.model.getters.checkElementsIncludeAllVisibleHeaders(sheetId, "COL", selectedCols);
5658
5662
  },
5659
5663
  separator: true,
5660
5664
  })
@@ -5728,11 +5732,7 @@
5728
5732
  name: REMOVE_ROWS_NAME,
5729
5733
  sequence: 70,
5730
5734
  action: REMOVE_ROWS_ACTION,
5731
- isVisible: (env) => {
5732
- const sheetId = env.model.getters.getActiveSheetId();
5733
- const selectedRows = env.model.getters.getElementsFromSelection("ROW");
5734
- return env.model.getters.canRemoveHeaders(sheetId, "ROW", selectedRows);
5735
- },
5735
+ isVisible: (env) => CAN_REMOVE_COLUMNS_ROWS("ROW", env),
5736
5736
  })
5737
5737
  .add("clear_row", {
5738
5738
  name: DELETE_CONTENT_ROWS_NAME,
@@ -5746,7 +5746,7 @@
5746
5746
  isVisible: (env) => {
5747
5747
  const sheetId = env.model.getters.getActiveSheetId();
5748
5748
  const selectedRows = env.model.getters.getElementsFromSelection("ROW");
5749
- return env.model.getters.canRemoveHeaders(sheetId, "ROW", selectedRows);
5749
+ return !env.model.getters.checkElementsIncludeAllVisibleHeaders(sheetId, "ROW", selectedRows);
5750
5750
  },
5751
5751
  separator: true,
5752
5752
  })
@@ -6040,11 +6040,13 @@
6040
6040
  name: REMOVE_ROWS_NAME,
6041
6041
  sequence: 80,
6042
6042
  action: REMOVE_ROWS_ACTION,
6043
+ isVisible: (env) => CAN_REMOVE_COLUMNS_ROWS("ROW", env),
6043
6044
  })
6044
6045
  .addChild("edit_delete_column", ["edit"], {
6045
6046
  name: REMOVE_COLUMNS_NAME,
6046
6047
  sequence: 90,
6047
6048
  action: REMOVE_COLUMNS_ACTION,
6049
+ isVisible: (env) => CAN_REMOVE_COLUMNS_ROWS("COL", env),
6048
6050
  })
6049
6051
  .addChild("edit_delete_cell_shift_up", ["edit"], {
6050
6052
  name: _lt("Delete cell and shift up"),
@@ -7811,6 +7813,7 @@
7811
7813
  this.legendPosition = definition.legendPosition;
7812
7814
  this.labelsAsText = definition.labelsAsText;
7813
7815
  this.stacked = definition.stacked;
7816
+ this.cumulative = definition.cumulative;
7814
7817
  }
7815
7818
  static validateChartDefinition(validator, definition) {
7816
7819
  return validator.checkValidations(definition, checkDataset, checkLabelRange);
@@ -7830,6 +7833,7 @@
7830
7833
  verticalAxisPosition: "left",
7831
7834
  labelRange: context.auxiliaryRange || undefined,
7832
7835
  stacked: false,
7836
+ cumulative: false,
7833
7837
  };
7834
7838
  }
7835
7839
  getDefinition() {
@@ -7849,6 +7853,7 @@
7849
7853
  title: this.title,
7850
7854
  labelsAsText: this.labelsAsText,
7851
7855
  stacked: this.stacked,
7856
+ cumulative: this.cumulative,
7852
7857
  };
7853
7858
  }
7854
7859
  getContextCreation() {
@@ -8033,6 +8038,16 @@
8033
8038
  if (chart.stacked) {
8034
8039
  backgroundRGBA.a = LINE_FILL_TRANSPARENCY;
8035
8040
  }
8041
+ if (chart.cumulative) {
8042
+ let accumulator = 0;
8043
+ data = data.map((value) => {
8044
+ if (!isNaN(value)) {
8045
+ accumulator += parseFloat(value);
8046
+ return accumulator;
8047
+ }
8048
+ return value;
8049
+ });
8050
+ }
8036
8051
  const backgroundColor = rgbaToHex(backgroundRGBA);
8037
8052
  const dataset = {
8038
8053
  label,
@@ -8818,6 +8833,11 @@
8818
8833
  stacked: ev.target.checked,
8819
8834
  });
8820
8835
  }
8836
+ onUpdateCumulative(ev) {
8837
+ this.props.updateChart(this.props.figureId, {
8838
+ cumulative: ev.target.checked,
8839
+ });
8840
+ }
8821
8841
  }
8822
8842
  LineConfigPanel.template = "o-spreadsheet-LineConfigPanel";
8823
8843
 
@@ -24647,6 +24667,7 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
24647
24667
  verticalAxisPosition: chartData.verticalAxisPosition,
24648
24668
  legendPosition: chartData.legendPosition,
24649
24669
  stacked: chartData.stacked || false,
24670
+ cumulative: chartData.cumulative || false,
24650
24671
  labelsAsText: false,
24651
24672
  };
24652
24673
  }
@@ -29139,7 +29160,7 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
29139
29160
  if (!this.getters.tryGetSheet(cmd.sheetId)) {
29140
29161
  return 27 /* CommandResult.InvalidSheetId */;
29141
29162
  }
29142
- if (!this.canRemoveHeaders(cmd.sheetId, cmd.dimension, cmd.elements)) {
29163
+ if (this.checkElementsIncludeAllVisibleHeaders(cmd.sheetId, cmd.dimension, cmd.elements)) {
29143
29164
  return 8 /* CommandResult.NotEnoughElements */;
29144
29165
  }
29145
29166
  return 0 /* CommandResult.Success */;
@@ -29189,9 +29210,9 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
29189
29210
  }
29190
29211
  return;
29191
29212
  }
29192
- canRemoveHeaders(sheetId, dimension, elements) {
29213
+ checkElementsIncludeAllVisibleHeaders(sheetId, dimension, elements) {
29193
29214
  const visibleHeaders = this.getAllVisibleHeaders(sheetId, dimension);
29194
- return !includesAll(elements, visibleHeaders);
29215
+ return includesAll(elements, visibleHeaders);
29195
29216
  }
29196
29217
  isRowHiddenByUser(sheetId, index) {
29197
29218
  return this.hiddenHeaders[sheetId].ROW[index];
@@ -29287,7 +29308,7 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
29287
29308
  }
29288
29309
  }
29289
29310
  HeaderVisibilityPlugin.getters = [
29290
- "canRemoveHeaders",
29311
+ "checkElementsIncludeAllVisibleHeaders",
29291
29312
  "getHiddenColsGroups",
29292
29313
  "getHiddenRowsGroups",
29293
29314
  "isRowHiddenByUser",
@@ -29806,6 +29827,9 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
29806
29827
  if (Math.min(...cmd.elements) < 0 || Math.max(...cmd.elements) > elements) {
29807
29828
  return 85 /* CommandResult.InvalidHeaderIndex */;
29808
29829
  }
29830
+ else if (this.checkElementsIncludeAllNonFrozenHeaders(cmd.sheetId, cmd.dimension, cmd.elements)) {
29831
+ return 8 /* CommandResult.NotEnoughElements */;
29832
+ }
29809
29833
  else {
29810
29834
  return 0 /* CommandResult.Success */;
29811
29835
  }
@@ -30105,6 +30129,20 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
30105
30129
  }
30106
30130
  this.history.update("sheets", sheetId, "panes", panes);
30107
30131
  }
30132
+ /**
30133
+ * Checks if all non-frozen header indices are present in the provided elements of selected rows/columns.
30134
+ * This validation ensures that all rows or columns cannot be deleted when frozen panes exist.
30135
+ */
30136
+ checkElementsIncludeAllNonFrozenHeaders(sheetId, dimension, elements) {
30137
+ const paneDivisions = this.getters.getPaneDivisions(sheetId);
30138
+ const startIndex = dimension === "ROW" ? paneDivisions.ySplit : paneDivisions.xSplit;
30139
+ const endIndex = this.getters.getNumberHeaders(sheetId, dimension);
30140
+ if (!startIndex) {
30141
+ return false;
30142
+ }
30143
+ const indicesToCheck = range(startIndex, endIndex);
30144
+ return includesAll(elements, indicesToCheck);
30145
+ }
30108
30146
  // ---------------------------------------------------------------------------
30109
30147
  // Row/Col manipulation
30110
30148
  // ---------------------------------------------------------------------------
@@ -30639,6 +30677,7 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
30639
30677
  "getSheetSize",
30640
30678
  "getSheetZone",
30641
30679
  "getPaneDivisions",
30680
+ "checkElementsIncludeAllNonFrozenHeaders",
30642
30681
  ];
30643
30682
 
30644
30683
  /**
@@ -33072,6 +33111,7 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
33072
33111
  this.filterValues[cmd.sheetId] = {};
33073
33112
  break;
33074
33113
  case "HIDE_COLUMNS_ROWS":
33114
+ case "UNHIDE_COLUMNS_ROWS":
33075
33115
  this.updateHiddenRows();
33076
33116
  break;
33077
33117
  case "UPDATE_FILTER":
@@ -36431,6 +36471,9 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
36431
36471
  const sheetId = this.sheetId;
36432
36472
  this.left = this.searchHeaderIndex("COL", this.offsetScrollbarX, this.boundaries.left);
36433
36473
  this.right = Math.min(this.boundaries.right, this.searchHeaderIndex("COL", this.viewportWidth, this.left));
36474
+ if (this.left === -1) {
36475
+ this.left = this.boundaries.left;
36476
+ }
36434
36477
  if (this.right === -1) {
36435
36478
  this.right = this.getters.getNumberCols(sheetId) - 1;
36436
36479
  }
@@ -36444,6 +36487,9 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
36444
36487
  const sheetId = this.sheetId;
36445
36488
  this.top = this.searchHeaderIndex("ROW", this.offsetScrollbarY, this.boundaries.top);
36446
36489
  this.bottom = Math.min(this.boundaries.bottom, this.searchHeaderIndex("ROW", this.viewportHeight, this.top));
36490
+ if (this.top === -1) {
36491
+ this.top = this.boundaries.top;
36492
+ }
36447
36493
  if (this.bottom === -1) {
36448
36494
  this.bottom = this.getters.getNumberRows(sheetId) - 1;
36449
36495
  }
@@ -42859,9 +42905,9 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
42859
42905
  Object.defineProperty(exports, '__esModule', { value: true });
42860
42906
 
42861
42907
 
42862
- __info__.version = '16.0.16';
42863
- __info__.date = '2023-08-07T09:01:50.801Z';
42864
- __info__.hash = '2b5ecd8';
42908
+ __info__.version = '16.0.18';
42909
+ __info__.date = '2023-09-12T11:42:03.083Z';
42910
+ __info__.hash = '41fd4fa';
42865
42911
 
42866
42912
 
42867
42913
  })(this.o_spreadsheet = this.o_spreadsheet || {}, owl);