@odoo/o-spreadsheet 17.4.0 → 17.4.2
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.
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* This file is generated by o-spreadsheet build tools. Do not edit it.
|
|
4
4
|
* @see https://github.com/odoo/o-spreadsheet
|
|
5
|
-
* @version 17.4.
|
|
6
|
-
* @date 2024-07-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 17.4.2
|
|
6
|
+
* @date 2024-07-24T10:26:00.237Z
|
|
7
|
+
* @hash f5ede5b
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
'use strict';
|
|
@@ -2724,7 +2724,7 @@ function getPredicate(descr, locale) {
|
|
|
2724
2724
|
operand = descr;
|
|
2725
2725
|
}
|
|
2726
2726
|
}
|
|
2727
|
-
if (isNumber(operand, locale)) {
|
|
2727
|
+
if (isNumber(operand, locale) || isDateTime(operand, locale)) {
|
|
2728
2728
|
operand = toNumber(operand, locale);
|
|
2729
2729
|
}
|
|
2730
2730
|
else if (operand === "TRUE" || operand === "FALSE") {
|
|
@@ -35871,6 +35871,7 @@ class PivotLayoutConfigurator extends owl.Component {
|
|
|
35871
35871
|
"__rows_title__",
|
|
35872
35872
|
...rows.map((row) => row.nameWithGranularity),
|
|
35873
35873
|
];
|
|
35874
|
+
const allDimensions = columns.concat(rows);
|
|
35874
35875
|
const offset = 1; // column title
|
|
35875
35876
|
const draggableItems = draggableIds.map((id, index) => ({
|
|
35876
35877
|
id,
|
|
@@ -35893,8 +35894,12 @@ class PivotLayoutConfigurator extends owl.Component {
|
|
|
35893
35894
|
const columns = draggedItems.slice(0, draggedItems.indexOf("__rows_title__"));
|
|
35894
35895
|
const rows = draggedItems.slice(draggedItems.indexOf("__rows_title__") + 1);
|
|
35895
35896
|
this.props.onDimensionsUpdated({
|
|
35896
|
-
columns: columns
|
|
35897
|
-
|
|
35897
|
+
columns: columns
|
|
35898
|
+
.map((nameWithGranularity) => allDimensions.find((dimension) => dimension.nameWithGranularity === nameWithGranularity))
|
|
35899
|
+
.filter(isDefined),
|
|
35900
|
+
rows: rows
|
|
35901
|
+
.map((nameWithGranularity) => allDimensions.find((dimension) => dimension.nameWithGranularity === nameWithGranularity))
|
|
35902
|
+
.filter(isDefined),
|
|
35898
35903
|
});
|
|
35899
35904
|
},
|
|
35900
35905
|
});
|
|
@@ -35974,9 +35979,15 @@ class PivotLayoutConfigurator extends owl.Component {
|
|
|
35974
35979
|
addMeasureDimension(fieldName) {
|
|
35975
35980
|
const { measures } = this.props.definition;
|
|
35976
35981
|
this.props.onDimensionsUpdated({
|
|
35977
|
-
measures: measures.concat([
|
|
35982
|
+
measures: measures.concat([
|
|
35983
|
+
{ name: fieldName, aggregator: this.getDefaultMeasureAggregator(fieldName) },
|
|
35984
|
+
]),
|
|
35978
35985
|
});
|
|
35979
35986
|
}
|
|
35987
|
+
getDefaultMeasureAggregator(fieldName) {
|
|
35988
|
+
const field = this.props.unusedMeasureFields.find((f) => f.name === fieldName);
|
|
35989
|
+
return field?.aggregator ? field.aggregator : "count";
|
|
35990
|
+
}
|
|
35980
35991
|
updateAggregator(updatedMeasure, aggregator) {
|
|
35981
35992
|
const { measures } = this.props.definition;
|
|
35982
35993
|
this.props.onDimensionsUpdated({
|
|
@@ -36200,7 +36211,7 @@ function createMeasure(fields, measure) {
|
|
|
36200
36211
|
const field = name === "__count"
|
|
36201
36212
|
? { name: "__count", string: _t("Count"), type: "integer", aggregator: "sum" }
|
|
36202
36213
|
: fields[name];
|
|
36203
|
-
const aggregator = measure.aggregator
|
|
36214
|
+
const aggregator = measure.aggregator;
|
|
36204
36215
|
return {
|
|
36205
36216
|
nameWithAggregator: name + (aggregator ? `:${aggregator}` : ""),
|
|
36206
36217
|
/**
|
|
@@ -36936,7 +36947,7 @@ class SpreadsheetPivot {
|
|
|
36936
36947
|
.map((value) => value[measure])
|
|
36937
36948
|
.filter((cell) => cell && cell.type !== CellValueType.empty)
|
|
36938
36949
|
.filter(isDefined);
|
|
36939
|
-
const aggregator = this.getMeasure(measure).aggregator
|
|
36950
|
+
const aggregator = this.getMeasure(measure).aggregator;
|
|
36940
36951
|
const operator = AGGREGATORS_FN[aggregator];
|
|
36941
36952
|
if (!operator) {
|
|
36942
36953
|
throw new Error(`Aggregator ${aggregator} does not exist`);
|
|
@@ -40201,10 +40212,13 @@ function useCellHovered(env, gridRef, callback) {
|
|
|
40201
40212
|
row: undefined,
|
|
40202
40213
|
};
|
|
40203
40214
|
const { Date } = window;
|
|
40204
|
-
let x =
|
|
40205
|
-
let y =
|
|
40215
|
+
let x = undefined;
|
|
40216
|
+
let y = undefined;
|
|
40206
40217
|
let lastMoved = 0;
|
|
40207
40218
|
function getPosition() {
|
|
40219
|
+
if (x === undefined || y === undefined) {
|
|
40220
|
+
return { col: -1, row: -1 };
|
|
40221
|
+
}
|
|
40208
40222
|
const col = env.model.getters.getColIndex(x);
|
|
40209
40223
|
const row = env.model.getters.getRowIndex(y);
|
|
40210
40224
|
return { col, row };
|
|
@@ -54204,9 +54218,9 @@ class Evaluator {
|
|
|
54204
54218
|
assertNoMergedCellsInSpreadZone({ sheetId, col, row }, matrixResult) {
|
|
54205
54219
|
const mergedCells = this.getters.getMergesInZone(sheetId, {
|
|
54206
54220
|
top: row,
|
|
54207
|
-
bottom: row + matrixResult.length,
|
|
54221
|
+
bottom: row + matrixResult[0].length - 1,
|
|
54208
54222
|
left: col,
|
|
54209
|
-
right: col + matrixResult
|
|
54223
|
+
right: col + matrixResult.length - 1,
|
|
54210
54224
|
});
|
|
54211
54225
|
if (mergedCells.length === 0) {
|
|
54212
54226
|
return;
|
|
@@ -68393,6 +68407,6 @@ exports.tokenColors = tokenColors;
|
|
|
68393
68407
|
exports.tokenize = tokenize;
|
|
68394
68408
|
|
|
68395
68409
|
|
|
68396
|
-
__info__.version = "17.4.
|
|
68397
|
-
__info__.date = "2024-07-
|
|
68398
|
-
__info__.hash = "
|
|
68410
|
+
__info__.version = "17.4.2";
|
|
68411
|
+
__info__.date = "2024-07-24T10:26:00.237Z";
|
|
68412
|
+
__info__.hash = "f5ede5b";
|
package/dist/o-spreadsheet.d.ts
CHANGED
|
@@ -531,7 +531,7 @@ interface PivotCoreDimension {
|
|
|
531
531
|
}
|
|
532
532
|
interface PivotCoreMeasure {
|
|
533
533
|
name: string;
|
|
534
|
-
aggregator
|
|
534
|
+
aggregator: Aggregator | string;
|
|
535
535
|
}
|
|
536
536
|
interface CommonPivotCoreDefinition {
|
|
537
537
|
columns: PivotCoreDimension[];
|
|
@@ -9354,6 +9354,7 @@ declare class PivotLayoutConfigurator extends Component<Props$d, SpreadsheetChil
|
|
|
9354
9354
|
addColumnDimension(fieldName: string): void;
|
|
9355
9355
|
addRowDimension(fieldName: string): void;
|
|
9356
9356
|
addMeasureDimension(fieldName: string): void;
|
|
9357
|
+
private getDefaultMeasureAggregator;
|
|
9357
9358
|
updateAggregator(updatedMeasure: PivotMeasure, aggregator: string): void;
|
|
9358
9359
|
updateOrder(updateDimension: PivotDimension$1, order?: "asc" | "desc"): void;
|
|
9359
9360
|
updateGranularity(dimension: PivotDimension$1, granularity: Granularity): void;
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* This file is generated by o-spreadsheet build tools. Do not edit it.
|
|
4
4
|
* @see https://github.com/odoo/o-spreadsheet
|
|
5
|
-
* @version 17.4.
|
|
6
|
-
* @date 2024-07-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 17.4.2
|
|
6
|
+
* @date 2024-07-24T10:26:00.237Z
|
|
7
|
+
* @hash f5ede5b
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
import { useEnv, useSubEnv, onWillUnmount, useComponent, status, Component, useRef, onMounted, useEffect, useState, onPatched, onWillPatch, onWillUpdateProps, useExternalListener, onWillStart, xml, useChildSubEnv, markRaw, toRaw } from '@odoo/owl';
|
|
@@ -2722,7 +2722,7 @@ function getPredicate(descr, locale) {
|
|
|
2722
2722
|
operand = descr;
|
|
2723
2723
|
}
|
|
2724
2724
|
}
|
|
2725
|
-
if (isNumber(operand, locale)) {
|
|
2725
|
+
if (isNumber(operand, locale) || isDateTime(operand, locale)) {
|
|
2726
2726
|
operand = toNumber(operand, locale);
|
|
2727
2727
|
}
|
|
2728
2728
|
else if (operand === "TRUE" || operand === "FALSE") {
|
|
@@ -35869,6 +35869,7 @@ class PivotLayoutConfigurator extends Component {
|
|
|
35869
35869
|
"__rows_title__",
|
|
35870
35870
|
...rows.map((row) => row.nameWithGranularity),
|
|
35871
35871
|
];
|
|
35872
|
+
const allDimensions = columns.concat(rows);
|
|
35872
35873
|
const offset = 1; // column title
|
|
35873
35874
|
const draggableItems = draggableIds.map((id, index) => ({
|
|
35874
35875
|
id,
|
|
@@ -35891,8 +35892,12 @@ class PivotLayoutConfigurator extends Component {
|
|
|
35891
35892
|
const columns = draggedItems.slice(0, draggedItems.indexOf("__rows_title__"));
|
|
35892
35893
|
const rows = draggedItems.slice(draggedItems.indexOf("__rows_title__") + 1);
|
|
35893
35894
|
this.props.onDimensionsUpdated({
|
|
35894
|
-
columns: columns
|
|
35895
|
-
|
|
35895
|
+
columns: columns
|
|
35896
|
+
.map((nameWithGranularity) => allDimensions.find((dimension) => dimension.nameWithGranularity === nameWithGranularity))
|
|
35897
|
+
.filter(isDefined),
|
|
35898
|
+
rows: rows
|
|
35899
|
+
.map((nameWithGranularity) => allDimensions.find((dimension) => dimension.nameWithGranularity === nameWithGranularity))
|
|
35900
|
+
.filter(isDefined),
|
|
35896
35901
|
});
|
|
35897
35902
|
},
|
|
35898
35903
|
});
|
|
@@ -35972,9 +35977,15 @@ class PivotLayoutConfigurator extends Component {
|
|
|
35972
35977
|
addMeasureDimension(fieldName) {
|
|
35973
35978
|
const { measures } = this.props.definition;
|
|
35974
35979
|
this.props.onDimensionsUpdated({
|
|
35975
|
-
measures: measures.concat([
|
|
35980
|
+
measures: measures.concat([
|
|
35981
|
+
{ name: fieldName, aggregator: this.getDefaultMeasureAggregator(fieldName) },
|
|
35982
|
+
]),
|
|
35976
35983
|
});
|
|
35977
35984
|
}
|
|
35985
|
+
getDefaultMeasureAggregator(fieldName) {
|
|
35986
|
+
const field = this.props.unusedMeasureFields.find((f) => f.name === fieldName);
|
|
35987
|
+
return field?.aggregator ? field.aggregator : "count";
|
|
35988
|
+
}
|
|
35978
35989
|
updateAggregator(updatedMeasure, aggregator) {
|
|
35979
35990
|
const { measures } = this.props.definition;
|
|
35980
35991
|
this.props.onDimensionsUpdated({
|
|
@@ -36198,7 +36209,7 @@ function createMeasure(fields, measure) {
|
|
|
36198
36209
|
const field = name === "__count"
|
|
36199
36210
|
? { name: "__count", string: _t("Count"), type: "integer", aggregator: "sum" }
|
|
36200
36211
|
: fields[name];
|
|
36201
|
-
const aggregator = measure.aggregator
|
|
36212
|
+
const aggregator = measure.aggregator;
|
|
36202
36213
|
return {
|
|
36203
36214
|
nameWithAggregator: name + (aggregator ? `:${aggregator}` : ""),
|
|
36204
36215
|
/**
|
|
@@ -36934,7 +36945,7 @@ class SpreadsheetPivot {
|
|
|
36934
36945
|
.map((value) => value[measure])
|
|
36935
36946
|
.filter((cell) => cell && cell.type !== CellValueType.empty)
|
|
36936
36947
|
.filter(isDefined);
|
|
36937
|
-
const aggregator = this.getMeasure(measure).aggregator
|
|
36948
|
+
const aggregator = this.getMeasure(measure).aggregator;
|
|
36938
36949
|
const operator = AGGREGATORS_FN[aggregator];
|
|
36939
36950
|
if (!operator) {
|
|
36940
36951
|
throw new Error(`Aggregator ${aggregator} does not exist`);
|
|
@@ -40199,10 +40210,13 @@ function useCellHovered(env, gridRef, callback) {
|
|
|
40199
40210
|
row: undefined,
|
|
40200
40211
|
};
|
|
40201
40212
|
const { Date } = window;
|
|
40202
|
-
let x =
|
|
40203
|
-
let y =
|
|
40213
|
+
let x = undefined;
|
|
40214
|
+
let y = undefined;
|
|
40204
40215
|
let lastMoved = 0;
|
|
40205
40216
|
function getPosition() {
|
|
40217
|
+
if (x === undefined || y === undefined) {
|
|
40218
|
+
return { col: -1, row: -1 };
|
|
40219
|
+
}
|
|
40206
40220
|
const col = env.model.getters.getColIndex(x);
|
|
40207
40221
|
const row = env.model.getters.getRowIndex(y);
|
|
40208
40222
|
return { col, row };
|
|
@@ -54202,9 +54216,9 @@ class Evaluator {
|
|
|
54202
54216
|
assertNoMergedCellsInSpreadZone({ sheetId, col, row }, matrixResult) {
|
|
54203
54217
|
const mergedCells = this.getters.getMergesInZone(sheetId, {
|
|
54204
54218
|
top: row,
|
|
54205
|
-
bottom: row + matrixResult.length,
|
|
54219
|
+
bottom: row + matrixResult[0].length - 1,
|
|
54206
54220
|
left: col,
|
|
54207
|
-
right: col + matrixResult
|
|
54221
|
+
right: col + matrixResult.length - 1,
|
|
54208
54222
|
});
|
|
54209
54223
|
if (mergedCells.length === 0) {
|
|
54210
54224
|
return;
|
|
@@ -68348,6 +68362,6 @@ const constants = {
|
|
|
68348
68362
|
export { AbstractCellClipboardHandler, AbstractChart, AbstractFigureClipboardHandler, CellErrorType, CommandResult, CorePlugin, DispatchResult, EvaluationError, Model, PivotRuntimeDefinition, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, SpreadsheetPivotTable, UIPlugin, __info__, addFunction, addRenderingLayer, astToFormula, compile, compileTokens, components, constants, convertAstNodes, coreTypes, findCellInNewZone, functionCache, helpers, hooks, invalidateCFEvaluationCommands, invalidateDependenciesCommands, invalidateEvaluationCommands, iterateAstNodes, links, load, parse, parseTokens, readonlyAllowedCommands, registries, setDefaultSheetViewSize, setTranslationMethod, stores, tokenColors, tokenize };
|
|
68349
68363
|
|
|
68350
68364
|
|
|
68351
|
-
__info__.version = "17.4.
|
|
68352
|
-
__info__.date = "2024-07-
|
|
68353
|
-
__info__.hash = "
|
|
68365
|
+
__info__.version = "17.4.2";
|
|
68366
|
+
__info__.date = "2024-07-24T10:26:00.237Z";
|
|
68367
|
+
__info__.hash = "f5ede5b";
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* This file is generated by o-spreadsheet build tools. Do not edit it.
|
|
4
4
|
* @see https://github.com/odoo/o-spreadsheet
|
|
5
|
-
* @version 17.4.
|
|
6
|
-
* @date 2024-07-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 17.4.2
|
|
6
|
+
* @date 2024-07-24T10:26:00.237Z
|
|
7
|
+
* @hash f5ede5b
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
(function (exports, owl) {
|
|
@@ -2723,7 +2723,7 @@
|
|
|
2723
2723
|
operand = descr;
|
|
2724
2724
|
}
|
|
2725
2725
|
}
|
|
2726
|
-
if (isNumber(operand, locale)) {
|
|
2726
|
+
if (isNumber(operand, locale) || isDateTime(operand, locale)) {
|
|
2727
2727
|
operand = toNumber(operand, locale);
|
|
2728
2728
|
}
|
|
2729
2729
|
else if (operand === "TRUE" || operand === "FALSE") {
|
|
@@ -35870,6 +35870,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
35870
35870
|
"__rows_title__",
|
|
35871
35871
|
...rows.map((row) => row.nameWithGranularity),
|
|
35872
35872
|
];
|
|
35873
|
+
const allDimensions = columns.concat(rows);
|
|
35873
35874
|
const offset = 1; // column title
|
|
35874
35875
|
const draggableItems = draggableIds.map((id, index) => ({
|
|
35875
35876
|
id,
|
|
@@ -35892,8 +35893,12 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
35892
35893
|
const columns = draggedItems.slice(0, draggedItems.indexOf("__rows_title__"));
|
|
35893
35894
|
const rows = draggedItems.slice(draggedItems.indexOf("__rows_title__") + 1);
|
|
35894
35895
|
this.props.onDimensionsUpdated({
|
|
35895
|
-
columns: columns
|
|
35896
|
-
|
|
35896
|
+
columns: columns
|
|
35897
|
+
.map((nameWithGranularity) => allDimensions.find((dimension) => dimension.nameWithGranularity === nameWithGranularity))
|
|
35898
|
+
.filter(isDefined),
|
|
35899
|
+
rows: rows
|
|
35900
|
+
.map((nameWithGranularity) => allDimensions.find((dimension) => dimension.nameWithGranularity === nameWithGranularity))
|
|
35901
|
+
.filter(isDefined),
|
|
35897
35902
|
});
|
|
35898
35903
|
},
|
|
35899
35904
|
});
|
|
@@ -35973,9 +35978,15 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
35973
35978
|
addMeasureDimension(fieldName) {
|
|
35974
35979
|
const { measures } = this.props.definition;
|
|
35975
35980
|
this.props.onDimensionsUpdated({
|
|
35976
|
-
measures: measures.concat([
|
|
35981
|
+
measures: measures.concat([
|
|
35982
|
+
{ name: fieldName, aggregator: this.getDefaultMeasureAggregator(fieldName) },
|
|
35983
|
+
]),
|
|
35977
35984
|
});
|
|
35978
35985
|
}
|
|
35986
|
+
getDefaultMeasureAggregator(fieldName) {
|
|
35987
|
+
const field = this.props.unusedMeasureFields.find((f) => f.name === fieldName);
|
|
35988
|
+
return field?.aggregator ? field.aggregator : "count";
|
|
35989
|
+
}
|
|
35979
35990
|
updateAggregator(updatedMeasure, aggregator) {
|
|
35980
35991
|
const { measures } = this.props.definition;
|
|
35981
35992
|
this.props.onDimensionsUpdated({
|
|
@@ -36199,7 +36210,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
36199
36210
|
const field = name === "__count"
|
|
36200
36211
|
? { name: "__count", string: _t("Count"), type: "integer", aggregator: "sum" }
|
|
36201
36212
|
: fields[name];
|
|
36202
|
-
const aggregator = measure.aggregator
|
|
36213
|
+
const aggregator = measure.aggregator;
|
|
36203
36214
|
return {
|
|
36204
36215
|
nameWithAggregator: name + (aggregator ? `:${aggregator}` : ""),
|
|
36205
36216
|
/**
|
|
@@ -36935,7 +36946,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
36935
36946
|
.map((value) => value[measure])
|
|
36936
36947
|
.filter((cell) => cell && cell.type !== CellValueType.empty)
|
|
36937
36948
|
.filter(isDefined);
|
|
36938
|
-
const aggregator = this.getMeasure(measure).aggregator
|
|
36949
|
+
const aggregator = this.getMeasure(measure).aggregator;
|
|
36939
36950
|
const operator = AGGREGATORS_FN[aggregator];
|
|
36940
36951
|
if (!operator) {
|
|
36941
36952
|
throw new Error(`Aggregator ${aggregator} does not exist`);
|
|
@@ -40200,10 +40211,13 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
40200
40211
|
row: undefined,
|
|
40201
40212
|
};
|
|
40202
40213
|
const { Date } = window;
|
|
40203
|
-
let x =
|
|
40204
|
-
let y =
|
|
40214
|
+
let x = undefined;
|
|
40215
|
+
let y = undefined;
|
|
40205
40216
|
let lastMoved = 0;
|
|
40206
40217
|
function getPosition() {
|
|
40218
|
+
if (x === undefined || y === undefined) {
|
|
40219
|
+
return { col: -1, row: -1 };
|
|
40220
|
+
}
|
|
40207
40221
|
const col = env.model.getters.getColIndex(x);
|
|
40208
40222
|
const row = env.model.getters.getRowIndex(y);
|
|
40209
40223
|
return { col, row };
|
|
@@ -54203,9 +54217,9 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
54203
54217
|
assertNoMergedCellsInSpreadZone({ sheetId, col, row }, matrixResult) {
|
|
54204
54218
|
const mergedCells = this.getters.getMergesInZone(sheetId, {
|
|
54205
54219
|
top: row,
|
|
54206
|
-
bottom: row + matrixResult.length,
|
|
54220
|
+
bottom: row + matrixResult[0].length - 1,
|
|
54207
54221
|
left: col,
|
|
54208
|
-
right: col + matrixResult
|
|
54222
|
+
right: col + matrixResult.length - 1,
|
|
54209
54223
|
});
|
|
54210
54224
|
if (mergedCells.length === 0) {
|
|
54211
54225
|
return;
|
|
@@ -68392,9 +68406,9 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
68392
68406
|
exports.tokenize = tokenize;
|
|
68393
68407
|
|
|
68394
68408
|
|
|
68395
|
-
__info__.version = "17.4.
|
|
68396
|
-
__info__.date = "2024-07-
|
|
68397
|
-
__info__.hash = "
|
|
68409
|
+
__info__.version = "17.4.2";
|
|
68410
|
+
__info__.date = "2024-07-24T10:26:00.237Z";
|
|
68411
|
+
__info__.hash = "f5ede5b";
|
|
68398
68412
|
|
|
68399
68413
|
|
|
68400
68414
|
})(this.o_spreadsheet = this.o_spreadsheet || {}, owl);
|