Skip to content

Commit eb41131

Browse files
[IMP] composer: prettify formula when content is too long.
Prettify formula depending on the content width. task: 4735172 Co-authored-by: lul-odoo <[email protected]>
1 parent 93ceb2c commit eb41131

File tree

16 files changed

+524
-93
lines changed

16 files changed

+524
-93
lines changed

src/components/composer/composer/abstract_composer_store.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -535,11 +535,14 @@ export abstract class AbstractComposerStore extends SpreadsheetStore {
535535
if (isNewCurrentContent || this.editionMode !== "inactive") {
536536
const locale = this.getters.getLocale();
537537
this.currentTokens = isFormula(text) ? composerTokenize(text, locale) : [];
538-
if (this.currentTokens.length > 100) {
538+
const nonSpaceTokensCount = this.currentTokens.filter(
539+
(token) => token.type !== "SPACE"
540+
).length;
541+
if (nonSpaceTokensCount > 1000) {
539542
if (raise) {
540543
this.notificationStore.raiseError(
541544
_t(
542-
"This formula has over 100 parts. It can't be processed properly, consider splitting it into multiple cells"
545+
"This formula has over 1000 parts. It can't be processed properly, consider splitting it into multiple cells"
543546
)
544547
);
545548
}

src/components/composer/composer/cell_composer_store.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { prettify } from "../../../formulas/formula_formatter";
2+
import { parseTokens } from "../../../formulas/parser";
13
import { isMultipleElementMatrix, toScalar } from "../../../functions/helper_matrices";
24
import { parseLiteral } from "../../../helpers/cells";
35
import {
@@ -202,7 +204,10 @@ export class CellComposerStore extends AbstractComposerStore {
202204
const locale = this.getters.getLocale();
203205
const cell = this.getters.getCell(position);
204206
if (cell?.isFormula) {
205-
return localizeFormula(cell.content, locale);
207+
const prettifiedContent = cell.compiledFormula.isBadExpression
208+
? cell.content
209+
: prettify(parseTokens(cell.compiledFormula.tokens), 80);
210+
return localizeFormula(prettifiedContent, locale);
206211
}
207212
const spreader = this.model.getters.getArrayFormulaSpreadingOn(position);
208213
if (spreader) {

src/components/composer/composer/composer.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ css/* scss */ `
6161
padding-right: 3px;
6262
outline: none;
6363
64+
tab-size: 4;
65+
6466
p {
6567
margin-bottom: 0px;
6668

src/components/composer/top_bar_composer/top_bar_composer.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import { CellComposerStore } from "../composer/cell_composer_store";
1414
import { Composer } from "../composer/composer";
1515
import { ComposerFocusStore, ComposerInterface } from "../composer_focus_store";
1616

17-
const COMPOSER_MAX_HEIGHT = 100;
17+
const COMPOSER_MAX_HEIGHT = 300;
1818

1919
/* svg free of use from https://uxwing.com/formula-fx-icon/ */
2020
const FX_SVG = /*xml*/ `

src/components/spreadsheet/spreadsheet.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,6 @@ css/* scss */ `
318318
}
319319
}
320320
321-
.o-spreadsheet-topbar-wrapper,
322321
.o-spreadsheet-bottombar-wrapper {
323322
z-index: ${ComponentsImportance.ScrollBar + 1};
324323
}

0 commit comments

Comments
 (0)