From f7ceb5c2bf8b8ea47761d5009c2e556c0043181e Mon Sep 17 00:00:00 2001 From: Balazs Gobel Date: Mon, 11 Feb 2019 10:48:32 +0100 Subject: [PATCH 01/11] Added stricter stylint rules --- package.json | 3 +- src/main.less | 337 ++++++++++++++++++++++---------------------- stylelint.config.js | 152 ++++++++++++++++---- webpack.config.js | 14 +- 4 files changed, 302 insertions(+), 204 deletions(-) diff --git a/package.json b/package.json index 4584c2b..1411b64 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,8 @@ "eslint:fix": "eslint --fix src", "test": "karma start karma.conf.js", "test-once": "karma start karma.conf.js --single-run", - "watch": "gulp watch" + "watch": "gulp watch", + "stylelint": "stylelint src/main.less" }, "devDependencies": { "@babel/core": "7.1.2", diff --git a/src/main.less b/src/main.less index 9f96728..756ee70 100644 --- a/src/main.less +++ b/src/main.less @@ -1,215 +1,212 @@ .qv-object-qlik-smart-pivot { - @TableBorder: 1px solid #d3d3d3; - @KpiTableWidth: 230px; + @table-border: 1px solid #d3d3d3; + @kpi-table-width: 230px; - ._cell(@Width: 50px) { - min-width: @Width!important; - max-width: @Width!important; - cursor: pointer; - line-height: 1em!important; + .get-cell(@cell-width: 50px) { + min-width: @cell-width !important; + max-width: @cell-width !important; + cursor: pointer; + line-height: 1em !important; } - div.qv-object-content-container { - overflow-x: scroll; - overflow-y: hidden; - z-index: 110; - } + div.qv-object-content-container { + overflow-x: scroll; + overflow-y: hidden; + z-index: 110; + } - .icon-xls { - text-align: left; - } + .icon-xls { + text-align: left; + } - button { - width: 100%; - } + button { + width: 100%; + } - table { - border-collapse: collapse; - border-spacing: 0; - width: auto; - border-left: @TableBorder; - border-right: @TableBorder; - border-top: @TableBorder; - } + table { + border-collapse: collapse; + border-spacing: 0; + width: auto; + border-left: @table-border; + border-right: @table-border; + border-top: @table-border; + } - td, th { - border: 1px solid #ffffff; - padding: 5px; - border-collapse: collapse; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - vertical-align: middle; - cursor: default; - } + td, + th { + border: 1px solid #fff; + padding: 5px; + border-collapse: collapse; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + vertical-align: middle; + cursor: default; + } - .empty { - width: 3%; - background: #ffffff; - min-width: 4px !important; - max-width: 4px !important; - } + .empty { + width: 3%; + background: #fff; + min-width: 4px !important; + max-width: 4px !important; + } - th.main-kpi { - text-align: center; - vertical-align: middle; - border-bottom: @TableBorder; - } + th.main-kpi { + text-align: center; + vertical-align: middle; + border-bottom: @table-border; + } - .numeric { - text-align: right; - } - /*This is for wrap text in headers*/ - .wrapclass25 { - width: 100%; - height: 25px; - white-space: pre-line; - overflow: hidden; - display: block; - } + .numeric { + text-align: right; + } - .wrapclass45 { - width: 100%; - height: 45px; - white-space: pre-line; - overflow: hidden; - display: block; - } + // This is for wrap text in headers + .wrapclass25 { + width: 100%; + height: 25px; + white-space: pre-line; + overflow: hidden; + display: block; + } - .wrapclass70 { - width: 100%; - height: 70px; - white-space: pre-line; - overflow: hidden; - display: inline-block; - vertical-align: middle; - line-height: 20px; - } + .wrapclass45 { + width: 100%; + height: 45px; + white-space: pre-line; + overflow: hidden; + display: block; + } - .wrapclassEmpty { - width: 100%; - } - /*******************/ - /* Medium column size*/ - /*******************/ - .grid-cells { ._cell(70px); } - .grid-cells2 { ._cell(70px); } - .grid-cells-small { ._cell(52px); } - .grid-cells2-small { ._cell(52px); } - /*******************/ - /* Small column size*/ - /*******************/ - .grid-cells-s { ._cell(67px); } - .grid-cells2-s { ._cell(67px); } - .grid-cells-small-s { ._cell(52px); } - .grid-cells2-small-s { ._cell(52px); } - /*******************/ - /* large column size*/ - /*******************/ - .grid-cells-l { ._cell(82px); } - .grid-cells2-l { ._cell(82px); } - .grid-cells-small-l { ._cell(66px); } - .grid-cells2-small-l { ._cell(66px); } + .wrapclass70 { + width: 100%; + height: 70px; + white-space: pre-line; + overflow: hidden; + display: inline-block; + vertical-align: middle; + line-height: 20px; + } - /*END OF GRID CELLS*/ - /*First Column*/ - .fdim-cells { - min-width: 230px !Important; - max-width: 230px !Important; - cursor: pointer; - background-color: white; - } + .wrapclassEmpty { + width: 100%; + } - .fdim-cells:hover { - /*cursor: default;*/ - background-color: #808080 !important; - color: #ffffff; - } + // Medium column size + .grid-cells { .get-cell(70px); } + .grid-cells2 { .get-cell(70px); } + .grid-cells-small { .get-cell(52px); } + .grid-cells2-small { .get-cell(52px); } - tbody tr:hover { - cursor: default; - background-color: #808080 !important; - color: #ffffff; - } + // Small column size + .grid-cells-s { .get-cell(67px); } + .grid-cells2-s { .get-cell(67px); } + .grid-cells-small-s { .get-cell(52px); } + .grid-cells2-small-s { .get-cell(52px); } - .grid-cells-header { - padding: 0px; - } + // Large column size + .grid-cells-l { .get-cell(82px); } + .grid-cells2-l { .get-cell(82px); } + .grid-cells-small-l { .get-cell(66px); } + .grid-cells2-small-l { .get-cell(66px); } - .grid-cells-title { - min-width: 522px; - } + // First Column + .fdim-cells { + min-width: 230px !Important; + max-width: 230px !Important; + cursor: pointer; + background-color: #fff; + } - .grid-cells:before { - content: "\00a0"; - } + .fdim-cells:hover { + background-color: #808080 !important; + color: #fff; + } + + tbody tr:hover { + cursor: default; + background-color: #808080 !important; + color: #fff; + } + + .grid-cells-header { + padding: 0; + } + + .grid-cells-title { + min-width: 522px; + } + + .grid-cells::before { + content: "\00a0"; + } .grid { - height: 50px; - width: 350px; + height: 50px; + width: 350px; } .header-wrapper { - position: absolute; - top: 0; - z-index: 1; + position: absolute; + top: 0; + z-index: 1; } - /*popups for headers*/ + // popups for headers .tooltip { - position: fixed !important; - color: RGB(70,70,70); - background-color: RGB(245,239,207); - text-align: center; - border: groove; + position: fixed !important; + color: rgb(70, 70, 70); + background-color: rgb(245, 239, 207); + text-align: center; + border: groove; } - /*end popups*/ .row-wrapper { - position: absolute; - top: 97px; - height: calc(~"100% - 97px"); - overflow-x: hidden; - overflow-y: scroll; - padding: 0; - margin-top: 0; + position: absolute; + top: 97px; + height: calc(~"100% - 97px"); + overflow-x: hidden; + overflow-y: scroll; + padding: 0; + margin-top: 0; } - .kpi-table .fdim-cells, .data-table td { - line-height: 1em!important; + .kpi-table .fdim-cells, + .data-table td { + line-height: 1em !important; } .data-table .fdim-cells { - display: none; + display: none; } .kpi-table { - width: @KpiTableWidth !important; - overflow: hidden !important; - display: table; - height: 100%; - margin: 0; - padding: 0; - z-index: 100; - position: absolute; - top: 0; - left: 0; - border-right: 1px solid white; - box-shadow: 4px 2px 8px #e1e1e1; - } + width: @kpi-table-width !important; + overflow: hidden !important; + display: table; + height: 100%; + margin: 0; + padding: 0; + z-index: 100; + position: absolute; + top: 0; + left: 0; + border-right: 1px solid #fff; + box-shadow: 4px 2px 8px #e1e1e1; - .kpi-table .row-wrapper { - overflow: hidden; + &.row-wrapper { + overflow: hidden; + } } .data-table { - width: 272px !important; - float: left; - display: table; - height: 100%; - z-index: 90; - position: absolute; - margin-left: @KpiTableWidth + 13px; - -ms-overflow-style: none; + width: 272px !important; + float: left; + display: table; + height: 100%; + z-index: 90; + position: absolute; + margin-left: @kpi-table-width + 13px; + -ms-overflow-style: none; } } diff --git a/stylelint.config.js b/stylelint.config.js index 2cdb4a0..3e5f353 100644 --- a/stylelint.config.js +++ b/stylelint.config.js @@ -1,35 +1,129 @@ -"use strict"; - module.exports = { - rules: { - "at-rule-no-unknown": true, - "block-no-empty": true, - "color-no-invalid-hex": true, - "comment-no-empty": true, - "declaration-block-no-duplicate-properties": [ - true, + 'rules': { + 'at-rule-empty-line-before': [ + 'always', { - ignore: ["consecutive-duplicates-with-different-values"] + except: [ + 'blockless-after-same-name-blockless', + 'first-nested' + ], + ignore: ['after-comment'] } ], - "declaration-block-no-shorthand-property-overrides": true, - "font-family-no-duplicate-names": true, - "font-family-no-missing-generic-family-keyword": true, - "function-calc-no-unspaced-operator": true, - "function-linear-gradient-no-nonstandard-direction": true, - "keyframe-declaration-no-important": true, - "media-feature-name-no-unknown": true, - "no-descending-specificity": true, - "no-duplicate-at-import-rules": true, - "no-duplicate-selectors": true, - "no-empty-source": true, - "no-extra-semicolons": true, - "no-invalid-double-slash-comments": true, - "property-no-unknown": true, - "selector-pseudo-class-no-unknown": true, - "selector-pseudo-element-no-unknown": true, - "selector-type-no-unknown": true, - "string-no-newline": true, - "unit-no-unknown": true + 'at-rule-name-case': 'lower', + 'at-rule-name-space-after': 'always-single-line', + 'at-rule-semicolon-newline-after': 'always', + 'block-closing-brace-empty-line-before': 'never', + 'block-closing-brace-newline-after': 'always', + 'block-closing-brace-newline-before': 'always-multi-line', + 'block-closing-brace-space-before': 'always-single-line', + 'block-opening-brace-newline-after': 'always-multi-line', + 'block-opening-brace-space-after': 'always-single-line', + 'block-opening-brace-space-before': 'always', + 'color-hex-case': 'lower', + 'color-hex-length': 'short', + 'color-named': 'never', + 'comment-empty-line-before': [ + 'always', + { + except: ['first-nested'], + ignore: ['stylelint-commands'] + } + ], + 'comment-whitespace-inside': 'always', + 'custom-property-empty-line-before': [ + 'always', + { + except: [ + 'after-custom-property', + 'first-nested' + ], + ignore: [ + 'after-comment', + 'inside-single-line-block' + ] + } + ], + 'declaration-bang-space-after': 'never', + 'declaration-bang-space-before': 'always', + 'declaration-block-semicolon-newline-after': 'always-multi-line', + 'declaration-block-semicolon-space-after': 'always-single-line', + 'declaration-block-semicolon-space-before': 'never', + 'declaration-block-single-line-max-declarations': 1, + 'declaration-block-trailing-semicolon': 'always', + 'declaration-colon-newline-after': 'always-multi-line', + 'declaration-colon-space-after': 'always-single-line', + 'declaration-colon-space-before': 'never', + 'declaration-empty-line-before': [ + 'always', + { + except: [ + 'after-declaration', + 'first-nested' + ], + ignore: [ + 'after-comment', + 'inside-single-line-block' + ] + } + ], + 'declaration-no-important': [ + true, + { + severity: 'warning' + } + ], + 'function-comma-newline-after': 'always-multi-line', + 'function-comma-space-after': 'always-single-line', + 'function-comma-space-before': 'never', + 'function-max-empty-lines': 0, + 'function-name-case': 'lower', + 'function-parentheses-newline-inside': 'always-multi-line', + 'function-parentheses-space-inside': 'never-single-line', + 'function-whitespace-after': 'always', + 'indentation': 2, + 'length-zero-no-unit': true, + 'max-empty-lines': 1, + 'max-nesting-depth': 3, + 'media-feature-colon-space-after': 'always', + 'media-feature-colon-space-before': 'never', + 'media-feature-name-case': 'lower', + 'media-feature-parentheses-space-inside': 'never', + 'media-feature-range-operator-space-after': 'always', + 'media-feature-range-operator-space-before': 'always', + 'media-query-list-comma-newline-after': 'always-multi-line', + 'media-query-list-comma-space-after': 'always-single-line', + 'media-query-list-comma-space-before': 'never', + 'no-extra-semicolons': true, + 'no-missing-end-of-source-newline': true, + 'number-leading-zero': 'always', + 'number-no-trailing-zeros': true, + 'property-case': 'lower', + 'rule-empty-line-before': [ + 'always-multi-line', + { + except: ['first-nested'], + ignore: ['after-comment'] + } + ], + 'selector-attribute-brackets-space-inside': 'never', + 'selector-attribute-operator-space-after': 'never', + 'selector-attribute-operator-space-before': 'never', + 'selector-combinator-space-after': 'always', + 'selector-combinator-space-before': 'always', + 'selector-descendant-combinator-no-non-space': true, + 'selector-list-comma-newline-after': 'always', + 'selector-list-comma-space-before': 'never', + 'selector-max-empty-lines': 0, + 'selector-pseudo-class-case': 'lower', + 'selector-pseudo-class-parentheses-space-inside': 'never', + 'selector-pseudo-element-case': 'lower', + 'selector-pseudo-element-colon-notation': 'double', + 'selector-type-case': 'lower', + 'unit-case': 'lower', + 'value-list-comma-newline-after': 'always-multi-line', + 'value-list-comma-space-after': 'always-single-line', + 'value-list-comma-space-before': 'never', + 'value-list-max-empty-lines': 0 } }; diff --git a/webpack.config.js b/webpack.config.js index a70a9b1..c60c85b 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -21,7 +21,7 @@ const config = { commonjs: 'jquery', commonjs2: 'jquery', root: '_' - }, + } }, // TODO: breaks core-js for some reason // resolve: { @@ -54,7 +54,11 @@ const config = { }, { test: /.less$/, - use: ['style-loader', 'css-loader', 'less-loader'] + use: [ + 'style-loader', + 'css-loader', + 'less-loader' + ] } ] }, @@ -68,9 +72,11 @@ const config = { 'resources/Accounts.csv', 'resources/Accounts2.csv', 'resources/QlikLook.csv', - 'resources/Excel.png', + 'resources/Excel.png' ], {}), - new StyleLintPlugin() + new StyleLintPlugin({ + files: '**/*.less' + }) ] }; From fd653de0e174d07fc17a73bee01c22ef53c537b5 Mon Sep 17 00:00:00 2001 From: Balazs Gobel Date: Wed, 13 Feb 2019 14:10:25 +0100 Subject: [PATCH 02/11] Fix most of the eslint warnings --- .eslintrc.js | 14 +++--- src/definition/formatted.js | 4 +- src/definition/metric-semaphores.js | 2 +- src/excel-export.js | 26 +++++------ src/masking.js | 67 +++++++++++++++-------------- src/paint.jsx | 2 +- src/utilities.js | 22 +++++----- 7 files changed, 70 insertions(+), 67 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 2328397..92699c1 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -41,12 +41,12 @@ module.exports = { "no-cond-assign": ["warn"], "no-fallthrough": ["warn"], "no-undef": ["error"], - "no-unused-vars": ["warn"], - "no-use-before-define": ["warn", { "functions": false, "classes": false, "variables": false }], + "no-unused-vars": ["error"], + "no-use-before-define": ["error", { "functions": false, "classes": false, "variables": false }], "no-useless-escape": ["warn"], "no-useless-return": ["warn"], "no-underscore-dangle": ["warn", { "allow": ["_id"] }], - "no-redeclare": ["warn"], + "no-redeclare": ["error"], "no-restricted-syntax": ["warn"], "operator-linebreak": ["warn", "before"], "prefer-promise-reject-errors": ["warn"], @@ -63,11 +63,11 @@ module.exports = { "complexity": ["warn"], "camelcase": ["warn"], "max-statements": ["off"], // marks the entire functions, a bit too noisy - "sort-vars": ["warn"], + "sort-vars": ["off"], // not much value for the work "init-declarations": ["off"], "capitalized-comments": ["off"], "one-var": ["off"], - "no-var": ["warn"], + "no-var": ["error"], "no-plusplus": ["warn"], "vars-on-top": ["off"], "no-magic-numbers": ["off"], // useful, but also complains for reasonable checks with actual numbers @@ -80,7 +80,7 @@ module.exports = { "quote-props": ["off"], "prefer-template": ["warn"], "no-lonely-if": ["warn"], - "sort-keys": ["warn"], + "sort-keys": ["off"], // not much value for the work "no-implicit-coercion": ["warn"], "no-inline-comments": ["off"], "spaced-comment": ["warn"], @@ -107,7 +107,7 @@ module.exports = { "strict": ["warn"], "no-ternary": ["off"], "multiline-ternary": ["off"], - "no-param-reassign": ["warn"], + "no-param-reassign": ["error"], "prefer-destructuring": ["warn"], "arrow-parens": ["off"], "no-array-constructor": ["warn"], diff --git a/src/definition/formatted.js b/src/definition/formatted.js index 3e1cce6..8ca8142 100644 --- a/src/definition/formatted.js +++ b/src/definition/formatted.js @@ -78,7 +78,7 @@ const formatted = { ], defaultValue: 'Clean', show (data) { - return data.customfilebool == false; + return !data.customfilebool; } }, BodyTextColor: { @@ -130,7 +130,7 @@ const formatted = { ], defaultValue: 'Black', show (data) { - return data.customfilebool == false; + return !data.customfilebool; } }, FontFamily: { diff --git a/src/definition/metric-semaphores.js b/src/definition/metric-semaphores.js index 73bbc61..fbd1c38 100644 --- a/src/definition/metric-semaphores.js +++ b/src/definition/metric-semaphores.js @@ -25,7 +25,7 @@ const metricSemaphores = { type: 'string', defaultValue: '0', show (data) { - return data.allmetrics == false; + return !data.allmetrics; } }, MetricStatus1: { diff --git a/src/excel-export.js b/src/excel-export.js index 9734e8c..2440f53 100644 --- a/src/excel-export.js +++ b/src/excel-export.js @@ -1,11 +1,11 @@ -import $ from 'jquery'; +import $ from 'jquery'; // eslint-disable-line id-length const isIE = /* @cc_on!@*/false || Boolean(document.documentMode); const isChrome = Boolean(window.chrome) && Boolean(window.chrome.webstore); const isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0; const isFirefox = typeof InstallTrigger !== 'undefined'; -export function enableExcelExport (layout, f) { +export function enableExcelExport (layout, htmlMarkupString) { let myTitle = ''; let mySubTitle = ''; let myFootNote = ''; @@ -43,18 +43,18 @@ export function enableExcelExport (layout, f) { $.preventDefault(); } if (isIE) { - let a = ''; - a += myTitle + mySubTitle + myFootNote; - a += f; - a = a.split('>.<').join('><'); - a += ''; + let htmlMarkup = ''; + htmlMarkup += myTitle + mySubTitle + myFootNote; + htmlMarkup += htmlMarkupString; + htmlMarkup = htmlMarkup.split('>.<').join('><'); + htmlMarkup += ''; - const w = window.open(); - w.document.open(); - w.document.write(a); - w.document.close(); - w.document.execCommand('SaveAs', true, 'Analysis.xls' || 'c:\TMP'); - w.close(); + const newWindow = window.open(); + newWindow.document.open(); + newWindow.document.write(htmlMarkup); + newWindow.document.close(); + newWindow.document.execCommand('SaveAs', true, 'Analysis.xls' || 'c:\TMP'); + newWindow.close(); } if (isFirefox) { diff --git a/src/masking.js b/src/masking.js index 5d10373..5cda4af 100644 --- a/src/masking.js +++ b/src/masking.js @@ -13,7 +13,7 @@ export function ApplyPreMask (mask, value) { // aqui case '+#,##0': return (addSeparators(value, ',', '.', 0)); default: - return (ApplyMask(mask.substring(0, mask.indexOf(';')), value)); + return (applyMask(mask.substring(0, mask.indexOf(';')), value)); } } else { const vMyValue = value * -1; @@ -30,46 +30,47 @@ export function ApplyPreMask (mask, value) { // aqui case '-#,##0': return (`(${addSeparators(vMyValue, ',', '.', 0)})`); default: - return (`(${ApplyMask(vMyMask, vMyValue)})`); + return (`(${applyMask(vMyMask, vMyValue)})`); } } } else { - return (ApplyMask(mask, value)); + return (applyMask(mask, value)); } } -function ApplyMask (mask, value) { - if (!mask || isNaN(Number(value))) { - return value; // return as it is. +function applyMask (originalMask, originalValue) { + if (!originalMask || isNaN(Number(originalValue))) { + return originalValue; } - let isNegative, result, decimal, group, posLeadZero, posTrailZero, posSeparator, - part, szSep, integer, - - // find prefix/suffix - len = mask.length, - start = mask.search(/[0-9\-\+#]/), - prefix = start > 0 ? mask.substring(0, start) : '', - // reverse string: not an ideal method if there are surrogate pairs - str = mask.split('').reverse() - .join(''), - end = str.search(/[0-9\-\+#]/), - offset = len - end, - substr = mask.substring(offset, offset + 1), - indx = offset + ((substr === '.' || (substr === ',')) ? 1 : 0), - suffix = end > 0 ? mask.substring(indx, len) : ''; + let isNegative; + let result; + let integer; + // find prefix/suffix + let len = originalMask.length; + const start = originalMask.search(/[0-9\-\+#]/); + const prefix = start > 0 ? originalMask.substring(0, start) : ''; + // reverse string: not an ideal method if there are surrogate pairs + let str = originalMask.split('') + .reverse() + .join(''); + const end = str.search(/[0-9\-\+#]/); + let offset = len - end; + const substr = originalMask.substring(offset, offset + 1); + let index = offset + ((substr === '.' || (substr === ',')) ? 1 : 0); + const suffix = end > 0 ? originalMask.substring(index, len) : ''; // mask with prefix & suffix removed - mask = mask.substring(start, indx); + let mask = originalMask.substring(start, index); // convert any string to number according to formation sign. - value = mask.charAt(0) === '-' ? -value : Number(value); + let value = mask.charAt(0) === '-' ? -originalValue : Number(originalValue); isNegative = value < 0 ? value = -value : 0; // process only abs(), and turn on flag. // search for separator for grp & decimal, anything not digit, not +/- sign, not #. result = mask.match(/[^\d\-\+#]/g); - decimal = (result && result[result.length - 1]) || '.'; // treat the right most symbol as decimal - group = (result && result[1] && result[0]) || ','; // treat the left most symbol as group separator + const decimal = (result && result[result.length - 1]) || '.'; // treat the right most symbol as decimal + const group = (result && result[1] && result[0]) || ','; // treat the left most symbol as group separator // split the decimal for the format string if any. mask = mask.split(decimal); @@ -78,16 +79,16 @@ function ApplyMask (mask, value) { value = String(Number(value)); // convert number to string to trim off *all* trailing decimal zero(es) // fill back any trailing zero according to format - posTrailZero = mask[1] && mask[1].lastIndexOf('0'); // look for last zero in format - part = value.split('.'); + const posTrailZero = mask[1] && mask[1].lastIndexOf('0'); // look for last zero in format + const part = value.split('.'); // integer will get !part[1] if (!part[1] || (part[1] && part[1].length <= posTrailZero)) { value = (Number(value)).toFixed(posTrailZero + 1); } - szSep = mask[0].split(group); // look for separator + const szSep = mask[0].split(group); // look for separator mask[0] = szSep.join(''); // join back without separator for counting the pos of any leading 0. - posLeadZero = mask[0] && mask[0].indexOf('0'); + const posLeadZero = mask[0] && mask[0].indexOf('0'); if (posLeadZero > -1) { while (part[0].length < (mask[0].length - posLeadZero)) { part[0] = `0${part[0]}`; @@ -101,17 +102,17 @@ function ApplyMask (mask, value) { // process the first group separator from decimal (.) only, the rest ignore. // get the length of the last slice of split result. - posSeparator = (szSep[1] && szSep[szSep.length - 1].length); + const posSeparator = (szSep[1] && szSep[szSep.length - 1].length); if (posSeparator) { integer = value[0]; str = ''; offset = integer.length % posSeparator; len = integer.length; - for (indx = 0; indx < len; indx++) { - str += integer.charAt(indx); // ie6 only support charAt for sz. + for (index = 0; index < len; index++) { + str += integer.charAt(index); // ie6 only support charAt for sz. // -posSeparator so that won't trail separator on full length // jshint -W018 - if (!((indx - offset + 1) % posSeparator) && indx < len - posSeparator) { + if (!((index - offset + 1) % posSeparator) && index < len - posSeparator) { str += group; } } diff --git a/src/paint.jsx b/src/paint.jsx index f16a912..1cb7ce1 100644 --- a/src/paint.jsx +++ b/src/paint.jsx @@ -1,4 +1,4 @@ -import $ from 'jquery'; +import $ from 'jquery'; // eslint-disable-line id-length import initializeStore from './store'; import React from 'react'; import ReactDOM from 'react-dom'; diff --git a/src/utilities.js b/src/utilities.js index 3ad9f54..ba1b069 100644 --- a/src/utilities.js +++ b/src/utilities.js @@ -9,17 +9,19 @@ export function distinctArray (array) { .map(entry => JSON.parse(entry)); } -export function addSeparators (nStr, thousandsSep, decimalSep, numDecimals) { - let x1; - nStr = nStr.toFixed(numDecimals); - const x = nStr.split('.'); - x1 = x[0]; - const x2 = x.length > 1 ? decimalSep + x[1] : ''; - const rgx = /(\d+)(\d{3})/; - while (rgx.test(x1)) { - x1 = x1.replace(rgx, `$1${thousandsSep}$2`); +export function addSeparators (number, thousandSeparator, decimalSeparator, numberOfDecimals) { + const numberString = number.toFixed(numberOfDecimals); + const numberStringParts = numberString.split('.'); + let [ + wholeNumber, + decimal + ] = numberStringParts; + decimal = numberStringParts.length > 1 ? decimalSeparator + decimal : ''; + const regexCheckForThousand = /(\d+)(\d{3})/; + while (regexCheckForThousand.test(wholeNumber)) { + wholeNumber = wholeNumber.replace(regexCheckForThousand, `$1${thousandSeparator}$2`); } - return x1 + x2; + return wholeNumber + decimal; } export function Deferred () { From fa60dd5248c6936cef7be80a968df15afaba2e39 Mon Sep 17 00:00:00 2001 From: Kristoffer Lind Date: Tue, 19 Feb 2019 10:25:14 +0100 Subject: [PATCH 03/11] remove unused component --- src/data-table/index.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/data-table/index.jsx b/src/data-table/index.jsx index 5da451c..d0ba858 100644 --- a/src/data-table/index.jsx +++ b/src/data-table/index.jsx @@ -2,7 +2,6 @@ import React from 'react'; import PropTypes from 'prop-types'; import StyleBuilder from '../style-builder'; import DataCell from './data-cell.jsx'; -import HeaderPadding from './header-padding.jsx'; import RowHeader from './row-header.jsx'; import { injectSeparators } from '../utilities'; From c367f24dd9b46d3a0b54a891f31bcb38c557e62f Mon Sep 17 00:00:00 2001 From: Kristoffer Lind Date: Thu, 21 Feb 2019 17:32:16 +0100 Subject: [PATCH 04/11] replace jquery scroll linking with components (fixing some bugs and getting rid of jquery) --- package-lock.json | 108 +++++++++++++ package.json | 1 + src/data-table/index.jsx | 165 ++++++++++---------- src/headers-table/index.jsx | 163 +++++++++---------- src/linked-scroll/index.js | 2 + src/linked-scroll/linked-scroll-section.jsx | 29 ++++ src/linked-scroll/linked-scroll-wrapper.jsx | 82 ++++++++++ src/main.less | 58 ++++--- src/paint.jsx | 63 ++++---- webpack.config.js | 43 ++--- 10 files changed, 480 insertions(+), 234 deletions(-) create mode 100644 src/linked-scroll/index.js create mode 100644 src/linked-scroll/linked-scroll-section.jsx create mode 100644 src/linked-scroll/linked-scroll-wrapper.jsx diff --git a/package-lock.json b/package-lock.json index 565fea0..dacfa21 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,6 +101,104 @@ "@babel/types": "^7.0.0" } }, + "@babel/helper-create-class-features-plugin": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.3.2.tgz", + "integrity": "sha512-tdW8+V8ceh2US4GsYdNVNoohq5uVwOf9k6krjwW4E1lINcHgttnWcNqgdoessn12dAy8QkbezlbQh2nXISNY+A==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-member-expression-to-functions": "^7.0.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.2.3" + }, + "dependencies": { + "@babel/generator": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.3.3.tgz", + "integrity": "sha512-aEADYwRRZjJyMnKN7llGIlircxTCofm3dtV5pmY6ob18MSIuipHpA2yZWkPlycwu5HJcx/pADS3zssd8eY7/6A==", + "dev": true, + "requires": { + "@babel/types": "^7.3.3", + "jsesc": "^2.5.1", + "lodash": "^4.17.11", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + }, + "dependencies": { + "@babel/types": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.3.3.tgz", + "integrity": "sha512-2tACZ80Wg09UnPg5uGAOUvvInaqLk3l/IAhQzlxLQOIXacr6bMsra5SH6AWw/hIDRCSbCdHP2KzSOD+cT7TzMQ==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.11", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-replace-supers": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.2.3.tgz", + "integrity": "sha512-GyieIznGUfPXPWu0yLS6U55Mz67AZD9cUk0BfirOWlPrXlBcan9Gz+vHGz+cPfuoweZSnPzPIm67VtQM0OWZbA==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.0.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/traverse": "^7.2.3", + "@babel/types": "^7.0.0" + } + }, + "@babel/parser": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.3.3.tgz", + "integrity": "sha512-xsH1CJoln2r74hR+y7cg2B5JCPaTh+Hd+EbBRk9nWGSNspuo6krjhX0Om6RnRQuIvFq8wVXCLKH3kwKDYhanSg==", + "dev": true + }, + "@babel/traverse": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.2.3.tgz", + "integrity": "sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.2.2", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.0.0", + "@babel/parser": "^7.2.3", + "@babel/types": "^7.2.2", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.10" + }, + "dependencies": { + "@babel/types": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.3.3.tgz", + "integrity": "sha512-2tACZ80Wg09UnPg5uGAOUvvInaqLk3l/IAhQzlxLQOIXacr6bMsra5SH6AWw/hIDRCSbCdHP2KzSOD+cT7TzMQ==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.11", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, "@babel/helper-define-map": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz", @@ -302,6 +400,16 @@ "@babel/plugin-syntax-async-generators": "^7.2.0" } }, + "@babel/plugin-proposal-class-properties": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.3.3.tgz", + "integrity": "sha512-XO9eeU1/UwGPM8L+TjnQCykuVcXqaO5J1bkRPIygqZ/A2L1xVMJ9aZXrY31c0U4H2/LHKL4lbFQLsxktSrc/Ng==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.3.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, "@babel/plugin-proposal-json-strings": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", diff --git a/package.json b/package.json index 4584c2b..999ea52 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ }, "devDependencies": { "@babel/core": "7.1.2", + "@babel/plugin-proposal-class-properties": "7.3.3", "@babel/plugin-transform-async-to-generator": "7.1.0", "@babel/polyfill": "7.0.0", "@babel/preset-env": "7.1.0", diff --git a/src/data-table/index.jsx b/src/data-table/index.jsx index 5da451c..c3bef4f 100644 --- a/src/data-table/index.jsx +++ b/src/data-table/index.jsx @@ -6,92 +6,95 @@ import HeaderPadding from './header-padding.jsx'; import RowHeader from './row-header.jsx'; import { injectSeparators } from '../utilities'; -const DataTable = ({ data, general, qlik, renderData, styling }) => { - const { - headers: { - dimension1, - measurements - }, - matrix - } = data; +class DataTable extends React.PureComponent { + render () { + const { data, general, qlik, renderData, styling } = this.props; + const { + headers: { + dimension1, + measurements + }, + matrix + } = data; - return ( -
- - - {dimension1.map((dimensionEntry, dimensionIndex) => { - const rowHeaderText = dimensionEntry.displayValue || ''; - if (rowHeaderText === '-') { - return null; - } - const styleBuilder = new StyleBuilder(styling); - if (styling.hasCustomFileStyle) { - styleBuilder.parseCustomFileStyle(rowHeaderText); - } else { - styleBuilder.applyStandardAttributes(dimensionIndex); - styleBuilder.applyCustomStyle({ - fontSize: `${14 + styling.options.fontSizeAdjustment}px` - }); - } - const rowStyle = { - fontFamily: styling.options.fontFamily, - width: '230px', - ...styleBuilder.getStyle() - }; + return ( +
+
+ + {dimension1.map((dimensionEntry, dimensionIndex) => { + const rowHeaderText = dimensionEntry.displayValue || ''; + if (rowHeaderText === '-') { + return null; + } + const styleBuilder = new StyleBuilder(styling); + if (styling.hasCustomFileStyle) { + styleBuilder.parseCustomFileStyle(rowHeaderText); + } else { + styleBuilder.applyStandardAttributes(dimensionIndex); + styleBuilder.applyCustomStyle({ + fontSize: `${14 + styling.options.fontSizeAdjustment}px` + }); + } + const rowStyle = { + fontFamily: styling.options.fontFamily, + width: '230px', + ...styleBuilder.getStyle() + }; - return ( - - - {renderData && injectSeparators( - matrix[dimensionIndex], - styling.useSeparatorColumns, - { atEvery: measurements.length } - ).map((measurementData, index) => { - if (measurementData.isSeparator) { - const separatorStyle = { - color: 'white', - fontFamily: styling.options.fontFamily, - fontSize: `${12 + styling.options.fontSizeAdjustment}px` - }; + return ( + + + {renderData && injectSeparators( + matrix[dimensionIndex], + styling.useSeparatorColumns, + { atEvery: measurements.length } + ).map((measurementData, index) => { + if (measurementData.isSeparator) { + const separatorStyle = { + color: 'white', + fontFamily: styling.options.fontFamily, + fontSize: `${12 + styling.options.fontSizeAdjustment}px` + }; + return ( + + ); + } + const { dimension1: dimension1Info, dimension2, measurement } = measurementData.parents; + const id = `${dimension1Info.elementNumber}-${dimension2 && dimension2.elementNumber}-${measurement.header}`; return ( - + ); - } - const { dimension1: dimension1Info, dimension2, measurement } = measurementData.parents; - const id = `${dimension1Info.elementNumber}-${dimension2 && dimension2.elementNumber}-${measurement.header}`; - return ( - - ); - })} - - ); - })} - -
+ * + - * -
-
- ); -}; + })} + + ); + })} + + + + ); + } +} DataTable.defaultProps = { renderData: true diff --git a/src/headers-table/index.jsx b/src/headers-table/index.jsx index 8ca4bb4..3ed75bb 100644 --- a/src/headers-table/index.jsx +++ b/src/headers-table/index.jsx @@ -5,84 +5,52 @@ import ColumnHeader from './column-header.jsx'; import MeasurementColumnHeader from './measurement-column-header.jsx'; import { injectSeparators } from '../utilities'; -const HeadersTable = ({ data, general, qlik, styling }) => { - const baseCSS = { - backgroundColor: styling.headerOptions.colorSchema, - color: styling.headerOptions.textColor, - fontFamily: styling.options.fontFamily, - textAlign: styling.headerOptions.alignment - }; +class HeadersTable extends React.Component { + render () { + const { data, general, qlik, styling } = this.props; + const baseCSS = { + backgroundColor: styling.headerOptions.colorSchema, + color: styling.headerOptions.textColor, + fontFamily: styling.options.fontFamily, + textAlign: styling.headerOptions.alignment + }; - const { - dimension1, - dimension2, - measurements - } = data.headers; + const { + dimension1, + dimension2, + measurements + } = data.headers; - const hasSecondDimension = dimension2.length > 0; + const hasSecondDimension = dimension2.length > 0; - return ( -
- - - - - {!hasSecondDimension && measurements.map(measurementEntry => ( - +
+ + + - ))} - {hasSecondDimension && injectSeparators(dimension2, styling.useSeparatorColumns).map((entry, index) => { - if (entry.isSeparator) { - const separatorStyle = { - color: 'white', - fontFamily: styling.options.fontFamily, - fontSize: `${13 + styling.headerOptions.fontSizeAdjustment}px` - }; - - return ( - - ); - } - return ( - ( + - ); - })} - - {hasSecondDimension && ( - - {injectSeparators(dimension2, styling.useSeparatorColumns).map((dimensionEntry, index) => { - if (dimensionEntry.isSeparator) { + ))} + {hasSecondDimension && injectSeparators(dimension2, styling.useSeparatorColumns).map((entry, index) => { + if (entry.isSeparator) { const separatorStyle = { color: 'white', fontFamily: styling.options.fontFamily, - fontSize: `${12 + styling.headerOptions.fontSizeAdjustment}px` + fontSize: `${13 + styling.headerOptions.fontSizeAdjustment}px` }; return ( @@ -95,25 +63,62 @@ const HeadersTable = ({ data, general, qlik, styling }) => { ); } - return measurements.map(measurementEntry => ( - - )); + ); })} - )} - -
- * -
-
- ); -}; + {hasSecondDimension && ( + + {injectSeparators(dimension2, styling.useSeparatorColumns).map((dimensionEntry, index) => { + if (dimensionEntry.isSeparator) { + const separatorStyle = { + color: 'white', + fontFamily: styling.options.fontFamily, + fontSize: `${12 + styling.headerOptions.fontSizeAdjustment}px` + }; + + return ( + + * + + ); + } + return measurements.map(measurementEntry => ( + + )); + })} + + )} + + + + ); + } +} + +// const HeadersTable = ({ data, general, qlik, styling }) => { +// }; HeadersTable.propTypes = { data: PropTypes.shape({ diff --git a/src/linked-scroll/index.js b/src/linked-scroll/index.js new file mode 100644 index 0000000..5e5ded1 --- /dev/null +++ b/src/linked-scroll/index.js @@ -0,0 +1,2 @@ +export { default as LinkedScrollWrapper } from './linked-scroll-wrapper.jsx'; +export { default as LinkedScrollSection } from './linked-scroll-section.jsx'; diff --git a/src/linked-scroll/linked-scroll-section.jsx b/src/linked-scroll/linked-scroll-section.jsx new file mode 100644 index 0000000..e77aaeb --- /dev/null +++ b/src/linked-scroll/linked-scroll-section.jsx @@ -0,0 +1,29 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { LinkedScrollContext } from './linked-scroll-wrapper.jsx'; + +class LinkedScrollSection extends React.PureComponent { + static contextType = LinkedScrollContext; + + componentDidMount () { + const { link } = this.context; + link(this); + } + + componentWillUnmount () { + const { unlink } = this.context; + unlink(this); + } + + render () { + const { children } = this.props; + + return children; + } +} + +LinkedScrollSection.propTypes = { + children: PropTypes.any +}; + +export default LinkedScrollSection; diff --git a/src/linked-scroll/linked-scroll-wrapper.jsx b/src/linked-scroll/linked-scroll-wrapper.jsx new file mode 100644 index 0000000..be95b55 --- /dev/null +++ b/src/linked-scroll/linked-scroll-wrapper.jsx @@ -0,0 +1,82 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import PropTypes from 'prop-types'; + +export const LinkedScrollContext = React.createContext(); + +class LinkedScrollWrapper extends React.PureComponent { + constructor (props) { + super(props); + + this.linkComponent = this.linkComponent.bind(this); + this.unlinkComponent = this.unlinkComponent.bind(this); + this.handleScroll = this.handleScroll.bind(this); + this.scrollElements = []; + + this.linkActions = { + link: this.linkComponent, + unlink: this.unlinkComponent + }; + } + + linkComponent (component) { + // eslint-disable-next-line react/no-find-dom-node + const node = ReactDOM.findDOMNode(component); + const element = { + component, + node + }; + this.scrollElements.push(element); + node.onscroll = this.handleScroll.bind(this, element); + } + + unlinkComponent (component) { + const componentIndex = this.scrollElements.map(element => element.component).indexOf(component); + if (componentIndex !== -1) { + this.scrollElements.removeAt(componentIndex); + // eslint-disable-next-line react/no-find-dom-node + const node = ReactDOM.findDOMNode(component); + node.onscroll = null; + } + } + + handleScroll (element) { + window.requestAnimationFrame(() => { + this.sync(element); + }); + } + + sync (scrollElement) { + this.scrollElements.forEach(element => { + if (scrollElement === element) { + return; + } + element.node.onscroll = null; + if (element.component.props.linkHorizontal) { + element.node.scrollLeft = scrollElement.node.scrollLeft; + } + + if (element.component.props.linkVertical) { + element.node.scrollTop = scrollElement.node.scrollTop; + } + window.requestAnimationFrame(() => { + element.node.onscroll = this.handleScroll.bind(this, element); + }); + }); + } + + render () { + const { children } = this.props; + return ( + + {children} + + ); + } +} + +LinkedScrollWrapper.propTypes = { + children: PropTypes.any +}; + +export default LinkedScrollWrapper; diff --git a/src/main.less b/src/main.less index 9f96728..6f584cc 100644 --- a/src/main.less +++ b/src/main.less @@ -10,8 +10,6 @@ } div.qv-object-content-container { - overflow-x: scroll; - overflow-y: hidden; z-index: 110; } @@ -149,12 +147,6 @@ width: 350px; } - .header-wrapper { - position: absolute; - top: 0; - z-index: 1; - } - /*popups for headers*/ .tooltip { position: fixed !important; @@ -166,11 +158,7 @@ /*end popups*/ .row-wrapper { - position: absolute; - top: 97px; height: calc(~"100% - 97px"); - overflow-x: hidden; - overflow-y: scroll; padding: 0; margin-top: 0; } @@ -186,30 +174,54 @@ .kpi-table { width: @KpiTableWidth !important; overflow: hidden !important; - display: table; - height: 100%; + height: 100%; margin: 0; padding: 0; - z-index: 100; position: absolute; top: 0; left: 0; border-right: 1px solid white; box-shadow: 4px 2px 8px #e1e1e1; - } - .kpi-table .row-wrapper { - overflow: hidden; + .row-wrapper { + height: calc(~"100% - 97px"); + overflow: scroll; + position: absolute; + padding: 0; + margin-top: 0; + } } .data-table { - width: 272px !important; - float: left; - display: table; height: 100%; - z-index: 90; + width: calc(100% - 243px); position: absolute; margin-left: @KpiTableWidth + 13px; - -ms-overflow-style: none; + + .header-wrapper { + overflow: scroll; + width: 100%; + } + + .row-wrapper { + height: calc(~"100% - 97px"); + width: 100%; + overflow: scroll; + padding: 0; + margin-top: 0; + } + } + + // hide scrollbars + .kpi-table .header-wrapper, + .kpi-table .row-wrapper, + .data-table .header-wrapper, + .data-table .row-wrapper { + -ms-overflow-style: none; // IE 10+ + -moz-overflow: -moz-scrollbars-none; // Firefox + + &::-webkit-scrollbar { + display: none; // Safari and Chrome + } } } diff --git a/src/paint.jsx b/src/paint.jsx index e2bef20..d81e5c8 100644 --- a/src/paint.jsx +++ b/src/paint.jsx @@ -4,6 +4,7 @@ import React from 'react'; import ReactDOM from 'react-dom'; import HeadersTable from './headers-table/index.jsx'; import DataTable from './data-table/index.jsx'; +import { LinkedScrollWrapper, LinkedScrollSection } from './linked-scroll'; export default async function paint ($element, layout, component) { const state = await initializeStore({ @@ -13,7 +14,7 @@ export default async function paint ($element, layout, component) { }); const jsx = ( - +
- + + +
- - + + + + + +
-
+ ); ReactDOM.render(jsx, $element[0]); - // TODO: skipped the following as they weren't blockers for letting react handle rendering, - // they are however the only reason we still depend on jQuery and should be removed as part of unnecessary dependencies issue - $(`[tid="${layout.qInfo.qId}"] .data-table .row-wrapper`).on('scroll', function () { - $(`[tid="${layout.qInfo.qId}"] .kpi-table .row-wrapper`).scrollTop($(this).scrollTop()); - }); - - // freeze first column - $(`[tid="${layout.qInfo.qId}"] .qv-object-content-container`).on('scroll', (t) => { - $(`[tid="${layout.qInfo.qId}"] .kpi-table`).css('left', `${Math.round(t.target.scrollLeft)}px`); - }); - // TODO: fixing tooltips has a seperate issue, make sure to remove this as part of that issue $(`[tid="${layout.qInfo.qId}"] .header-wrapper th`).hover(function () { $(`[tid="${layout.qInfo.qId}"] .tooltip`).delay(500) diff --git a/webpack.config.js b/webpack.config.js index a70a9b1..83f5ec2 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -6,23 +6,16 @@ console.log('Webpack mode:', settings.mode); // eslint-disable-line no-console const config = { devtool: 'source-map', - entry: [ - './src/index.js' - ], - mode: settings.mode, - output: { - path: settings.buildDestination, - filename: settings.name + '.js', - libraryTarget: 'amd' - }, + entry: ['./src/index.js'], externals: { jquery: { amd: 'jquery', commonjs: 'jquery', commonjs2: 'jquery', root: '_' - }, + } }, + mode: settings.mode, // TODO: breaks core-js for some reason // resolve: { // extensions: ['js', 'jsx'] @@ -31,20 +24,23 @@ const config = { rules: [ { enforce: 'pre', - test: /\.(js|jsx)$/, exclude: /(node_modules|Library)/, loader: 'eslint-loader', options: { failOnError: true - } + }, + test: /\.(js|jsx)$/ }, { - test: /\.(js|jsx)$/, exclude: /node_modules/, + test: /\.(js|jsx)$/, use: { loader: 'babel-loader', options: { - plugins: ['@babel/plugin-transform-async-to-generator'], + plugins: [ + '@babel/plugin-transform-async-to-generator', + '@babel/plugin-proposal-class-properties' + ], presets: [ '@babel/preset-env', '@babel/preset-react' @@ -54,21 +50,30 @@ const config = { }, { test: /.less$/, - use: ['style-loader', 'css-loader', 'less-loader'] + use: [ + 'style-loader', + 'css-loader', + 'less-loader' + ] } ] }, + output: { + filename: `${settings.name}.js`, + libraryTarget: 'amd', + path: settings.buildDestination + }, plugins: [ new CopyWebpackPlugin([ - 'assets/' + settings.name + '.qext', - 'assets/' + settings.name + '.png', + `assets/${settings.name}.qext`, + `assets/${settings.name}.png`, 'assets/wbfolder.wbl', + 'resources/Excel.png', // TODO: remove entries below this line 'resources/Accounts.csv', 'resources/Accounts2.csv', - 'resources/QlikLook.csv', - 'resources/Excel.png', + 'resources/QlikLook.csv' ], {}), new StyleLintPlugin() ] From 555000be547aea85eee9945ff3c4369950c6d6dd Mon Sep 17 00:00:00 2001 From: Kristoffer Lind Date: Thu, 21 Feb 2019 17:49:05 +0100 Subject: [PATCH 05/11] fix rebase issues --- src/data-table/index.jsx | 165 ++++++++++++++++++------------------ src/headers-table/index.jsx | 163 +++++++++++++++++------------------ 2 files changed, 160 insertions(+), 168 deletions(-) diff --git a/src/data-table/index.jsx b/src/data-table/index.jsx index c3bef4f..5da451c 100644 --- a/src/data-table/index.jsx +++ b/src/data-table/index.jsx @@ -6,95 +6,92 @@ import HeaderPadding from './header-padding.jsx'; import RowHeader from './row-header.jsx'; import { injectSeparators } from '../utilities'; -class DataTable extends React.PureComponent { - render () { - const { data, general, qlik, renderData, styling } = this.props; - const { - headers: { - dimension1, - measurements - }, - matrix - } = data; +const DataTable = ({ data, general, qlik, renderData, styling }) => { + const { + headers: { + dimension1, + measurements + }, + matrix + } = data; - return ( -
- - - {dimension1.map((dimensionEntry, dimensionIndex) => { - const rowHeaderText = dimensionEntry.displayValue || ''; - if (rowHeaderText === '-') { - return null; - } - const styleBuilder = new StyleBuilder(styling); - if (styling.hasCustomFileStyle) { - styleBuilder.parseCustomFileStyle(rowHeaderText); - } else { - styleBuilder.applyStandardAttributes(dimensionIndex); - styleBuilder.applyCustomStyle({ - fontSize: `${14 + styling.options.fontSizeAdjustment}px` - }); - } - const rowStyle = { - fontFamily: styling.options.fontFamily, - width: '230px', - ...styleBuilder.getStyle() - }; + return ( +
+
+ + {dimension1.map((dimensionEntry, dimensionIndex) => { + const rowHeaderText = dimensionEntry.displayValue || ''; + if (rowHeaderText === '-') { + return null; + } + const styleBuilder = new StyleBuilder(styling); + if (styling.hasCustomFileStyle) { + styleBuilder.parseCustomFileStyle(rowHeaderText); + } else { + styleBuilder.applyStandardAttributes(dimensionIndex); + styleBuilder.applyCustomStyle({ + fontSize: `${14 + styling.options.fontSizeAdjustment}px` + }); + } + const rowStyle = { + fontFamily: styling.options.fontFamily, + width: '230px', + ...styleBuilder.getStyle() + }; - return ( - - - {renderData && injectSeparators( - matrix[dimensionIndex], - styling.useSeparatorColumns, - { atEvery: measurements.length } - ).map((measurementData, index) => { - if (measurementData.isSeparator) { - const separatorStyle = { - color: 'white', - fontFamily: styling.options.fontFamily, - fontSize: `${12 + styling.options.fontSizeAdjustment}px` - }; + return ( + + + {renderData && injectSeparators( + matrix[dimensionIndex], + styling.useSeparatorColumns, + { atEvery: measurements.length } + ).map((measurementData, index) => { + if (measurementData.isSeparator) { + const separatorStyle = { + color: 'white', + fontFamily: styling.options.fontFamily, + fontSize: `${12 + styling.options.fontSizeAdjustment}px` + }; - return ( - - ); - } - const { dimension1: dimension1Info, dimension2, measurement } = measurementData.parents; - const id = `${dimension1Info.elementNumber}-${dimension2 && dimension2.elementNumber}-${measurement.header}`; return ( - + ); - })} - - ); - })} - -
- * - + * +
-
- ); - } -} + } + const { dimension1: dimension1Info, dimension2, measurement } = measurementData.parents; + const id = `${dimension1Info.elementNumber}-${dimension2 && dimension2.elementNumber}-${measurement.header}`; + return ( + + ); + })} + + ); + })} + + + + ); +}; DataTable.defaultProps = { renderData: true diff --git a/src/headers-table/index.jsx b/src/headers-table/index.jsx index 3ed75bb..8ca4bb4 100644 --- a/src/headers-table/index.jsx +++ b/src/headers-table/index.jsx @@ -5,52 +5,84 @@ import ColumnHeader from './column-header.jsx'; import MeasurementColumnHeader from './measurement-column-header.jsx'; import { injectSeparators } from '../utilities'; -class HeadersTable extends React.Component { - render () { - const { data, general, qlik, styling } = this.props; - const baseCSS = { - backgroundColor: styling.headerOptions.colorSchema, - color: styling.headerOptions.textColor, - fontFamily: styling.options.fontFamily, - textAlign: styling.headerOptions.alignment - }; +const HeadersTable = ({ data, general, qlik, styling }) => { + const baseCSS = { + backgroundColor: styling.headerOptions.colorSchema, + color: styling.headerOptions.textColor, + fontFamily: styling.options.fontFamily, + textAlign: styling.headerOptions.alignment + }; - const { - dimension1, - dimension2, - measurements - } = data.headers; + const { + dimension1, + dimension2, + measurements + } = data.headers; - const hasSecondDimension = dimension2.length > 0; + const hasSecondDimension = dimension2.length > 0; - return ( -
- - - - +
+ + + + {!hasSecondDimension && measurements.map(measurementEntry => ( + - {!hasSecondDimension && measurements.map(measurementEntry => ( - { + if (entry.isSeparator) { + const separatorStyle = { + color: 'white', + fontFamily: styling.options.fontFamily, + fontSize: `${13 + styling.headerOptions.fontSizeAdjustment}px` + }; + + return ( + + ); + } + return ( + - ))} - {hasSecondDimension && injectSeparators(dimension2, styling.useSeparatorColumns).map((entry, index) => { - if (entry.isSeparator) { + ); + })} + + {hasSecondDimension && ( + + {injectSeparators(dimension2, styling.useSeparatorColumns).map((dimensionEntry, index) => { + if (dimensionEntry.isSeparator) { const separatorStyle = { color: 'white', fontFamily: styling.options.fontFamily, - fontSize: `${13 + styling.headerOptions.fontSizeAdjustment}px` + fontSize: `${12 + styling.headerOptions.fontSizeAdjustment}px` }; return ( @@ -63,62 +95,25 @@ class HeadersTable extends React.Component { ); } - return ( - ( + - ); + )); })} - {hasSecondDimension && ( - - {injectSeparators(dimension2, styling.useSeparatorColumns).map((dimensionEntry, index) => { - if (dimensionEntry.isSeparator) { - const separatorStyle = { - color: 'white', - fontFamily: styling.options.fontFamily, - fontSize: `${12 + styling.headerOptions.fontSizeAdjustment}px` - }; - - return ( - - ); - } - return measurements.map(measurementEntry => ( - - )); - })} - - )} - -
+ * +
- * -
-
- ); - } -} - -// const HeadersTable = ({ data, general, qlik, styling }) => { -// }; + )} + + + + ); +}; HeadersTable.propTypes = { data: PropTypes.shape({ From 347e6b74084d00a7aad011175e7bc30ad933c2eb Mon Sep 17 00:00:00 2001 From: Kristoffer Lind Date: Wed, 13 Feb 2019 13:27:12 +0100 Subject: [PATCH 06/11] test setup for components and some initial tests --- .eslintrc.js | 1 + karma.conf.js | 54 ++- package-lock.json | 416 +++++++++++++++++++++- package.json | 4 + src/haiku.spec.js | 9 - src/headers-table/index.componentModel.js | 5 + src/headers-table/index.spec.js | 37 ++ src/paint.jsx | 39 +- src/root.componentModel.js | 5 + src/root.jsx | 49 +++ src/root.spec.js | 21 ++ test/test-utilities/capex-sample-state.js | 5 + test/test-utilities/enzyme-setup.js | 10 + test/test-utilities/index.js | 9 + 14 files changed, 611 insertions(+), 53 deletions(-) delete mode 100644 src/haiku.spec.js create mode 100644 src/headers-table/index.componentModel.js create mode 100644 src/headers-table/index.spec.js create mode 100644 src/root.componentModel.js create mode 100644 src/root.jsx create mode 100644 src/root.spec.js create mode 100644 test/test-utilities/capex-sample-state.js create mode 100644 test/test-utilities/enzyme-setup.js create mode 100644 test/test-utilities/index.js diff --git a/.eslintrc.js b/.eslintrc.js index 2328397..4927647 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -15,6 +15,7 @@ module.exports = { }, globals: { angular: false, + beforeEach: false, define: false, describe: false, document: false, diff --git a/karma.conf.js b/karma.conf.js index 13a8708..db9b7f5 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -1,3 +1,4 @@ +const path = require('path'); const settings = require('./settings'); module.exports = (config) => { @@ -6,37 +7,72 @@ module.exports = (config) => { customLaunchers: { SlimChromeHeadless: { base: 'ChromeHeadless', - flags: ['--headless', '--disable-gpu', '--disable-translate', '--disable-extensions'] + flags: [ + '--headless', + '--disable-gpu', + '--disable-translate', + '--disable-extensions' + ] } }, files: [ - { pattern: 'src/*.spec.js', watched: false } + { + pattern: 'src/*.spec.js', + watched: true + }, + { + pattern: 'src/**/*.spec.js', + watched: true + } ], frameworks: ['jasmine'], preprocessors: { - 'src/*.spec.js': ['webpack', 'sourcemap'] + 'src/**/*.spec.{js, jsx}': [ + 'webpack', + 'sourcemap' + ], + 'src/*.spec.{js, jsx}': [ + 'webpack', + 'sourcemap' + ] }, webpack: { devtool: 'source-map', - mode: settings.mode, externals: { jquery: { amd: 'jquery', commonjs: 'jquery', commonjs2: 'jquery', root: '_' - }, + } }, + mode: settings.mode, module: { rules: [ { - test: /\.js$/, exclude: [/node_modules/], - loaders: ['babel-loader'] + loader: 'babel-loader', + options: { + plugins: ['@babel/plugin-transform-async-to-generator'], + presets: ['@babel/preset-react'] + }, + test: /\.(js|jsx)$/ }, - { test: /\.less$/, loader: 'ignore-loader' }, - { test: /\.json$/, loader: 'ignore-loader' } + { + loader: 'ignore-loader', + test: /\.less$/ + } ] + }, + resolve: { + alias: { + 'test-utilities': path.resolve('test/test-utilities') + }, + // extensions: [ + // 'js', + // 'jsx' + // ], + modules: ['node_modules'] } } }); diff --git a/package-lock.json b/package-lock.json index 565fea0..46f78d5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1332,6 +1332,17 @@ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, + "array.prototype.flat": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.1.tgz", + "integrity": "sha512-rVqIs330nLJvfC7JqYvEWwqVr5QjYF1ib02i3YJtR/fICO6527Tjpc/e4Mvmxh3GIePPreRXMdaGyC99YphWEw==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.10.0", + "function-bind": "^1.1.1" + } + }, "arraybuffer.slice": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", @@ -1826,6 +1837,12 @@ "multicast-dns-service-types": "^1.1.0" } }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -2178,6 +2195,20 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, + "cheerio": { + "version": "1.0.0-rc.2", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz", + "integrity": "sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=", + "dev": true, + "requires": { + "css-select": "~1.2.0", + "dom-serializer": "~0.1.0", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash": "^4.15.0", + "parse5": "^3.0.1" + } + }, "chokidar": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", @@ -2230,6 +2261,12 @@ "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", "dev": true }, + "circular-json-es6": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/circular-json-es6/-/circular-json-es6-2.0.2.tgz", + "integrity": "sha512-ODYONMMNb3p658Zv+Pp+/XPa5s6q7afhz3Tzyvo+VRh9WIrJ64J76ZC4GQxnlye/NesTn09jvOiuE8+xxfpwhQ==", + "dev": true + }, "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", @@ -2770,6 +2807,30 @@ "source-list-map": "^2.0.0" } }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + }, + "dependencies": { + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + } + } + }, "css-selector-tokenizer": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", @@ -2815,6 +2876,12 @@ } } }, + "css-what": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.2.tgz", + "integrity": "sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ==", + "dev": true + }, "cssesc": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", @@ -2924,6 +2991,27 @@ "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", "dev": true }, + "deep-equal-ident": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal-ident/-/deep-equal-ident-1.1.1.tgz", + "integrity": "sha1-BvS4nlNxDNbOpKd4HHqVZkLejck=", + "dev": true, + "requires": { + "lodash.isequal": "^3.0" + }, + "dependencies": { + "lodash.isequal": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-3.0.4.tgz", + "integrity": "sha1-HDXrO27wzR/1F0Pj6jz3/f/ay2Q=", + "dev": true, + "requires": { + "lodash._baseisequal": "^3.0.0", + "lodash._bindcallback": "^3.0.0" + } + } + } + }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", @@ -3142,6 +3230,12 @@ "path-type": "^3.0.0" } }, + "discontinuous-range": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", + "integrity": "sha1-44Mx8IRLukm5qctxx3FYWqsbxlo=", + "dev": true + }, "dns-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", @@ -3479,6 +3573,79 @@ "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", "dev": true }, + "enzyme": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.8.0.tgz", + "integrity": "sha512-bfsWo5nHyZm1O1vnIsbwdfhU989jk+squU9NKvB+Puwo5j6/Wg9pN5CO0YJelm98Dao3NPjkDZk+vvgwpMwYxw==", + "dev": true, + "requires": { + "array.prototype.flat": "^1.2.1", + "cheerio": "^1.0.0-rc.2", + "function.prototype.name": "^1.1.0", + "has": "^1.0.3", + "is-boolean-object": "^1.0.0", + "is-callable": "^1.1.4", + "is-number-object": "^1.0.3", + "is-string": "^1.0.4", + "is-subset": "^0.1.1", + "lodash.escape": "^4.0.1", + "lodash.isequal": "^4.5.0", + "object-inspect": "^1.6.0", + "object-is": "^1.0.1", + "object.assign": "^4.1.0", + "object.entries": "^1.0.4", + "object.values": "^1.0.4", + "raf": "^3.4.0", + "rst-selector-parser": "^2.2.3", + "string.prototype.trim": "^1.1.2" + }, + "dependencies": { + "lodash.escape": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", + "integrity": "sha1-yQRGkMIeBClL6qUXcS/e0fqI3pg=", + "dev": true + } + } + }, + "enzyme-adapter-react-16": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.9.1.tgz", + "integrity": "sha512-Egzogv1y77DUxdnq/CyHxLHaNxmSSKDDSDNNB/EiAXCZVFXdFibaNy2uUuRQ1n24T2m6KH/1Rw16XDRq+1yVEg==", + "dev": true, + "requires": { + "enzyme-adapter-utils": "^1.10.0", + "function.prototype.name": "^1.1.0", + "object.assign": "^4.1.0", + "object.values": "^1.1.0", + "prop-types": "^15.6.2", + "react-is": "^16.7.0", + "react-test-renderer": "^16.0.0-0" + } + }, + "enzyme-adapter-utils": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/enzyme-adapter-utils/-/enzyme-adapter-utils-1.10.0.tgz", + "integrity": "sha512-VnIXJDYVTzKGbdW+lgK8MQmYHJquTQZiGzu/AseCZ7eHtOMAj4Rtvk8ZRopodkfPves0EXaHkXBDkVhPa3t0jA==", + "dev": true, + "requires": { + "function.prototype.name": "^1.1.0", + "object.assign": "^4.1.0", + "object.fromentries": "^2.0.0", + "prop-types": "^15.6.2", + "semver": "^5.6.0" + } + }, + "enzyme-matchers": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/enzyme-matchers/-/enzyme-matchers-7.0.1.tgz", + "integrity": "sha512-1HmUK3frVSt7kim8icdx5LimuQm+DlklBRfy+dSlKd4SRxwlDGEM1LYTxL21/2kUZNl1XVUT5k5mec/D3k5jWw==", + "dev": true, + "requires": { + "circular-json-es6": "^2.0.1", + "deep-equal-ident": "^1.1.1" + } + }, "errno": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", @@ -5007,6 +5174,17 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, + "function.prototype.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.0.tgz", + "integrity": "sha512-Bs0VRrTz4ghD8pTmbJQD1mZ8A/mN0ur/jGz+A6FBxPDUPkm1tNfF6bhTYPA7i7aF4lZJVr+OXTNNrnnIl58Wfg==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "is-callable": "^1.1.3" + } + }, "functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", @@ -6073,6 +6251,12 @@ "binary-extensions": "^1.0.0" } }, + "is-boolean-object": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.0.0.tgz", + "integrity": "sha1-mPiygDBoQhmpXzdc+9iM40Bd/5M=", + "dev": true + }, "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", @@ -6225,6 +6409,12 @@ } } }, + "is-number-object": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.3.tgz", + "integrity": "sha1-8mWrian0RQNO9q/xWo8AsA9VF5k=", + "dev": true + }, "is-obj": { "version": "1.0.1", "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", @@ -6324,6 +6514,18 @@ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, + "is-string": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.4.tgz", + "integrity": "sha1-zDqbaYV9Yh6WNyWiTK7shzuCbmQ=", + "dev": true + }, + "is-subset": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz", + "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=", + "dev": true + }, "is-supported-regexp-flag": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-supported-regexp-flag/-/is-supported-regexp-flag-1.0.1.tgz", @@ -6431,6 +6633,15 @@ "integrity": "sha512-pa9tbBWgU0EE4SWgc85T4sa886ufuQdsgruQANhECYjwqgV4z7Vw/499aCaP8ZH79JDS4vhm8doDG9HO4+e4sA==", "dev": true }, + "jasmine-enzyme": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/jasmine-enzyme/-/jasmine-enzyme-7.0.1.tgz", + "integrity": "sha512-baCBO74WUy1pA0xow7FYBETvsEHpCekdOCEL8IB/yQzY1ulvxQqTYjRhCX7K4QRfY2jrsdef9DyQ3QmwBbgTnQ==", + "dev": true, + "requires": { + "enzyme-matchers": "^7.0.1" + } + }, "js-base64": { "version": "2.4.9", "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.9.tgz", @@ -6918,6 +7129,17 @@ "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", "dev": true }, + "lodash._baseisequal": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/lodash._baseisequal/-/lodash._baseisequal-3.0.7.tgz", + "integrity": "sha1-2AJfdjOdKTQnZ9zIh85cuVpbUfE=", + "dev": true, + "requires": { + "lodash.isarray": "^3.0.0", + "lodash.istypedarray": "^3.0.0", + "lodash.keys": "^3.0.0" + } + }, "lodash._basetostring": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", @@ -6930,6 +7152,12 @@ "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", "dev": true }, + "lodash._bindcallback": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", + "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=", + "dev": true + }, "lodash._getnative": { "version": "3.9.1", "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", @@ -6987,6 +7215,12 @@ "lodash._root": "^3.0.0" } }, + "lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", + "dev": true + }, "lodash.isarguments": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", @@ -6999,6 +7233,18 @@ "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", "dev": true }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", + "dev": true + }, + "lodash.istypedarray": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/lodash.istypedarray/-/lodash.istypedarray-3.0.6.tgz", + "integrity": "sha1-yaR3SYYHUB2OhJTSg7h8OSgc72I=", + "dev": true + }, "lodash.keys": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", @@ -7010,6 +7256,12 @@ "lodash.isarray": "^3.0.0" } }, + "lodash.merge": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", + "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==", + "dev": true + }, "lodash.restparam": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", @@ -7483,6 +7735,12 @@ "minimist": "0.0.8" } }, + "moo": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/moo/-/moo-0.4.3.tgz", + "integrity": "sha512-gFD2xGCl8YFgGHsqJ9NKRVdwlioeW3mI1iqfLNYQOv0+6JRwG58Zk9DIGQgyIaffSYaO1xsKnMaYzzNr1KyIAw==", + "dev": true + }, "move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", @@ -7572,6 +7830,19 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "nearley": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.16.0.tgz", + "integrity": "sha512-Tr9XD3Vt/EujXbZBv6UAHYoLUSMQAxSsTnm9K3koXzjzNWY195NqALeyrzLZBKzAkL3gl92BcSogqrHjD8QuUg==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "moo": "^0.4.3", + "railroad-diagrams": "^1.0.0", + "randexp": "0.4.6", + "semver": "^5.4.1" + } + }, "negotiator": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", @@ -7711,6 +7982,15 @@ "path-key": "^2.0.0" } }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, "null-check": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", @@ -7784,6 +8064,18 @@ "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", "dev": true }, + "object-inspect": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", + "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==", + "dev": true + }, + "object-is": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.1.tgz", + "integrity": "sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY=", + "dev": true + }, "object-keys": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", @@ -7823,6 +8115,30 @@ "isobject": "^3.0.0" } }, + "object.entries": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.0.tgz", + "integrity": "sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.12.0", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "object.fromentries": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.0.tgz", + "integrity": "sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.11.0", + "function-bind": "^1.1.1", + "has": "^1.0.1" + } + }, "object.getownpropertydescriptors": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", @@ -7883,6 +8199,18 @@ "make-iterator": "^1.0.0" } }, + "object.values": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz", + "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.12.0", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, "obuf": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", @@ -8171,6 +8499,15 @@ "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", "dev": true }, + "parse5": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", + "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "parseqs": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", @@ -8290,8 +8627,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true, - "optional": true + "dev": true }, "pify": { "version": "3.0.0", @@ -8763,12 +9099,37 @@ "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", "dev": true }, + "raf": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", + "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "dev": true, + "requires": { + "performance-now": "^2.1.0" + } + }, + "railroad-diagrams": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", + "integrity": "sha1-635iZ1SN3t+4mcG5Dlc3RVnN234=", + "dev": true + }, "ramda": { "version": "0.25.0", "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.25.0.tgz", "integrity": "sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ==", "dev": true }, + "randexp": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", + "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==", + "dev": true, + "requires": { + "discontinuous-range": "1.0.0", + "ret": "~0.1.10" + } + }, "randomatic": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", @@ -8858,6 +9219,36 @@ "scheduler": "^0.12.0" } }, + "react-is": { + "version": "16.8.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.1.tgz", + "integrity": "sha512-ioMCzVDWvCvKD8eeT+iukyWrBGrA3DiFYkXfBsVYIRdaREZuBjENG+KjrikavCLasozqRWTwFUagU/O4vPpRMA==", + "dev": true + }, + "react-test-renderer": { + "version": "16.8.1", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.8.1.tgz", + "integrity": "sha512-Bd21TN3+YVl6GZwav6O0T6m5UwGfOj+2+xZH5VH93ToD6M5uclN/c+R1DGX49ueG413KZPUx7Kw3sOYz2aJgfg==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "react-is": "^16.8.1", + "scheduler": "^0.13.1" + }, + "dependencies": { + "scheduler": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.13.1.tgz", + "integrity": "sha512-VJKOkiKIN2/6NOoexuypwSrybx13MY7NSy9RNt8wPvZDMRT1CW6qlpF5jXRToXNHz3uWzbm2elNpZfXfGPqP9A==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + } + } + }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -9359,6 +9750,16 @@ "inherits": "^2.0.1" } }, + "rst-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz", + "integrity": "sha1-gbIw6i/MYGbInjRy3nlChdmwPZE=", + "dev": true, + "requires": { + "lodash.flattendeep": "^4.4.0", + "nearley": "^2.7.10" + } + }, "run-async": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", @@ -10222,6 +10623,17 @@ } } }, + "string.prototype.trim": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz", + "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.0", + "function-bind": "^1.0.2" + } + }, "string_decoder": { "version": "1.1.1", "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", diff --git a/package.json b/package.json index 4584c2b..bb97401 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,8 @@ "copy-webpack-plugin": "4.5.3", "css-loader": "1.0.0", "del": "2.0.2", + "enzyme": "3.8.0", + "enzyme-adapter-react-16": "1.9.1", "eslint": "5.7.0", "eslint-loader": "2.1.1", "eslint-plugin-react": "7.11.1", @@ -32,6 +34,7 @@ "gulp-json-editor": "2.4.3", "gulp-zip": "3.0.2", "jasmine-core": "3.2.1", + "jasmine-enzyme": "7.0.1", "karma": "3.0.0", "karma-chrome-launcher": "2.2.0", "karma-jasmine": "1.1.2", @@ -39,6 +42,7 @@ "karma-webpack": "3.0.5", "less": "3.8.1", "less-loader": "4.1.0", + "lodash.merge": "4.6.1", "style-loader": "0.23.1", "stylelint": "8.4.0", "stylelint-webpack-plugin": "0.10.5", diff --git a/src/haiku.spec.js b/src/haiku.spec.js deleted file mode 100644 index 2939306..0000000 --- a/src/haiku.spec.js +++ /dev/null @@ -1,9 +0,0 @@ -/* https://randomhaiku.com */ - -describe('behind the money', () => { - describe('Canada and Panda work.', () => { - it('Tiger starts blowing.', () => { - expect(true).toBeTruthy(); - }); - }); -}); diff --git a/src/headers-table/index.componentModel.js b/src/headers-table/index.componentModel.js new file mode 100644 index 0000000..b420e0a --- /dev/null +++ b/src/headers-table/index.componentModel.js @@ -0,0 +1,5 @@ +function Model (component) { + this.component = component; +} + +export default Model; diff --git a/src/headers-table/index.spec.js b/src/headers-table/index.spec.js new file mode 100644 index 0000000..dc56b68 --- /dev/null +++ b/src/headers-table/index.spec.js @@ -0,0 +1,37 @@ +import merge from 'lodash.merge'; +import Model from './index.componentModel'; +import Component from './index.jsx'; +import { mountedComponent } from 'test-utilities'; +import sampleState from 'test-utilities/capex-sample-state'; + + +describe('', () => { + const { data, general, styling } = sampleState; + const defaultProps = { + data, + general, + styling + }; + + function setup (otherProps = {}) { + const props = merge(defaultProps, otherProps); + + return mountedComponent(Model, Component, props); + } + + it('should render without exploding when 2 dimensions', () => { + const model = setup(); + expect(model.component).toBeDefined(); + }); + + it('should render without exploding when 1 dimension', () => { + const noSecondDimensionProps = { + data: { + ...defaultProps.data.headers, + dimension2: [] + } + }; + const model = setup(noSecondDimensionProps); + expect(model.component).toBeDefined(); + }); +}); diff --git a/src/paint.jsx b/src/paint.jsx index e2bef20..bd71e23 100644 --- a/src/paint.jsx +++ b/src/paint.jsx @@ -1,9 +1,9 @@ import $ from 'jquery'; import initializeStore from './store'; import React from 'react'; +// import ReactDOM from 'react-dom'; import ReactDOM from 'react-dom'; -import HeadersTable from './headers-table/index.jsx'; -import DataTable from './data-table/index.jsx'; +import Root from './root.jsx'; export default async function paint ($element, layout, component) { const state = await initializeStore({ @@ -13,37 +13,10 @@ export default async function paint ($element, layout, component) { }); const jsx = ( - -
- - -
-
- - -
-
+ ); ReactDOM.render(jsx, $element[0]); diff --git a/src/root.componentModel.js b/src/root.componentModel.js new file mode 100644 index 0000000..b420e0a --- /dev/null +++ b/src/root.componentModel.js @@ -0,0 +1,5 @@ +function Model (component) { + this.component = component; +} + +export default Model; diff --git a/src/root.jsx b/src/root.jsx new file mode 100644 index 0000000..f4d998d --- /dev/null +++ b/src/root.jsx @@ -0,0 +1,49 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import HeadersTable from './headers-table/index.jsx'; +import DataTable from './data-table/index.jsx'; + +const Root = ({ state, qlik }) => ( + +
+ + +
+
+ + +
+
+); + +Root.propTypes = { + qlik: PropTypes.shape({}).isRequired, + state: PropTypes.shape({ + data: PropTypes.object.isRequired, + general: PropTypes.object.isRequired, + styling: PropTypes.object.isRequired + }).isRequired +}; + +export default Root; diff --git a/src/root.spec.js b/src/root.spec.js new file mode 100644 index 0000000..90f8c02 --- /dev/null +++ b/src/root.spec.js @@ -0,0 +1,21 @@ +import merge from 'lodash.merge'; +import Model from './root.componentModel'; +import Component from './root.jsx'; +import { mountedComponent } from 'test-utilities'; +import sampleState from 'test-utilities/capex-sample-state'; + +describe('', () => { + const state = sampleState; + const defaultProps = { state }; + + function setup (otherProps = {}) { + const props = merge(defaultProps, otherProps); + + return mountedComponent(Model, Component, props); + } + + it('should render without exploding', () => { + const model = setup(); + expect(model.component).toBeDefined(); + }); +}); diff --git a/test/test-utilities/capex-sample-state.js b/test/test-utilities/capex-sample-state.js new file mode 100644 index 0000000..c7c83d7 --- /dev/null +++ b/test/test-utilities/capex-sample-state.js @@ -0,0 +1,5 @@ +/* eslint-disable */ +const sample = JSON.parse(`{"properties":{"ConceptMatrixColElem":[0],"ConceptMatrixColElemTable":[0,0,0,0,0],"ConceptMatrixRowElem":[5]},"data":{"headers":{"dimension1":[{"displayValue":"Direct materials","name":"Account Desc","value":"NaN"}],"dimension2":[{"displayValue":"France","name":"Country","value":"NaN"}],"measurements":[{"format":"#.##0,00m","magnitudeLabelSuffix":" (m)","name":"Balance"},{"format":"#.##0,00k","magnitudeLabelSuffix":" (k)","name":"Bal. LY"},{"format":"#.##0","magnitudeLabelSuffix":"","name":"Dif"},{"format":"0,0%","magnitudeLabelSuffix":"","name":"% Var"}]},"matrix":[[{"displayValue":"-6.320.000,00m","elementNumber":0,"format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","value":-6320000},{"displayValue":"-6.636.000,00k","elementNumber":0,"format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","value":-6636000},{"displayValue":"316.000","elementNumber":0,"format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","value":316000},{"displayValue":"-4,8%","elementNumber":0,"format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","value":-0.04761904761904767}]],"meta":{"dimensionCount":2}},"general":{"allowExcelExport":true,"cellSuffix":"","errorMessage":"Ups! It seems you asked for too many data. Please filter more to see the whole picture.","maxLoops":2},"selection":{"dimensionSelectionCounts":[1,1]},"styling":{"colors":{"vColLibBlue":"#4575b4","vColLibBlueP":"#b3d9ff","vColLibClean":"#ffffff","vColLibCleanP":"#ffffff","vColLibCustom":"#ffcccc","vColLibCustomP":"#ffffff","vColLibDark":"#c4c4c4","vColLibDarkP":"#efefef","vColLibGreen":"#7bb51c","vColLibGreenP":"#98fb98","vColLibNight":"#808080","vColLibNightP":"#c4c4c4","vColLibOrange":"#fd6600","vColLibOrangeP":"#ffcc66","vColLibRed":"#d58b94","vColLibRedP":"#ffcccc","vColLibSoft":"#efefef","vColLibSoftP":"#ffffff","vColLibViolete":"#ccc0ff","vColLibVioleteP":"#e6e6ff"},"customCSV":{"basic":["Accounts","Revenues","Net sales revenues","Cost of goods sold","Manufacturing overhead","Net mfr overhead","Net costs of goods sold","Gross profit","Operating expenses","Total selling expenses","General & administrative expenses","Other general & admin expenses","total general & admin expenses","total operating expenses","Operating income before taxes","Financial revenue & expenses","Income before tax & extraordinary items","Extraordinary items","Net gain on sale of land","Extraordinary items after tax","Net Income (Profit)"],"count":8,"full":[["Accounts","Bold","Background","FontStyle","LetterColor","Align","Size","Comment"],["Revenues","","","","","
","",""],["Net sales revenues","","rgb(128, 191, 255)","","","","",""],["Cost of goods sold","","rgb(128, 191, 255)","","","","",""],["Manufacturing overhead","","","","","
","",""],["Net mfr overhead","","rgb(128, 191, 255)","","","","",""],["Net costs of goods sold","","rgb(128, 191, 255)","","","","",""],["Gross profit","","rgb(0, 102, 204)","","","
","",""],["Operating expenses","","","","","","",""],["Total selling expenses","","rgb(128, 191, 255)","","","","",""],["General & administrative expenses","","","","","
","",""],["Other general & admin expenses","","rgb(128, 191, 255)","","","
","",""],["total general & admin expenses","","","","","","",""],["total operating expenses","","rgb(128, 191, 255)","","","","",""],["Operating income before taxes","","rgb(0, 102, 204)","","","","",""],["Financial revenue & expenses","","","","","
","",""],["Income before tax & extraordinary items","","rgb(0, 102, 204)","","","","",""],["Extraordinary items","","","","","
","",""],["Net gain on sale of land","","rgb(0, 102, 204)","","","
","",""],["Extraordinary items after tax","","rgb(0, 102, 204)","","","
","",""],["Net Income (Profit)","","","","","
","",""]]},"hasCustomFileStyle":true,"headerOptions":{"alignment":"center","colorSchema":"#4575b4","fontSizeAdjustment":-2,"textColor":"WhiteSmoke"},"options":{"backgroundColor":"#efefef","color":"Black","fontFamily":"Calibri","fontSizeAdjustment":0},"semaphoreColors":{"fieldsToApplyTo":{"applyToAll":false,"specificFields":["Gross sales revenues","Direct materials","","","","","","",""]},"status":{},"statusColors":{"critical":{},"medium":{},"normal":{}}},"symbolForNulls":"0","usePadding":true,"useSeparatorColumns":true}}`); +/* eslint-enable */ + +export default sample; diff --git a/test/test-utilities/enzyme-setup.js b/test/test-utilities/enzyme-setup.js new file mode 100644 index 0000000..940cb34 --- /dev/null +++ b/test/test-utilities/enzyme-setup.js @@ -0,0 +1,10 @@ +import Enzyme from 'enzyme'; +import Adapter from 'enzyme-adapter-react-16'; +import jasmineEnzyme from 'jasmine-enzyme'; +Enzyme.configure({ adapter: new Adapter() }); + +beforeEach(() => { + jasmineEnzyme(); +}); + +export * from 'enzyme'; diff --git a/test/test-utilities/index.js b/test/test-utilities/index.js new file mode 100644 index 0000000..393ffb2 --- /dev/null +++ b/test/test-utilities/index.js @@ -0,0 +1,9 @@ +import React from 'react'; +import { mount } from 'test-utilities/enzyme-setup'; + +export function mountedComponent (Model, Component, props = {}) { + const component = mount(( + + )).find(Component); + return new Model(component); +} From 734fe33537ff9990556c2d3e2919a73136a955d5 Mon Sep 17 00:00:00 2001 From: Kristoffer Lind Date: Thu, 21 Feb 2019 18:48:42 +0100 Subject: [PATCH 07/11] update sample state --- test/test-utilities/capex-sample-state.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test-utilities/capex-sample-state.js b/test/test-utilities/capex-sample-state.js index c7c83d7..90de47d 100644 --- a/test/test-utilities/capex-sample-state.js +++ b/test/test-utilities/capex-sample-state.js @@ -1,5 +1,5 @@ /* eslint-disable */ -const sample = JSON.parse(`{"properties":{"ConceptMatrixColElem":[0],"ConceptMatrixColElemTable":[0,0,0,0,0],"ConceptMatrixRowElem":[5]},"data":{"headers":{"dimension1":[{"displayValue":"Direct materials","name":"Account Desc","value":"NaN"}],"dimension2":[{"displayValue":"France","name":"Country","value":"NaN"}],"measurements":[{"format":"#.##0,00m","magnitudeLabelSuffix":" (m)","name":"Balance"},{"format":"#.##0,00k","magnitudeLabelSuffix":" (k)","name":"Bal. LY"},{"format":"#.##0","magnitudeLabelSuffix":"","name":"Dif"},{"format":"0,0%","magnitudeLabelSuffix":"","name":"% Var"}]},"matrix":[[{"displayValue":"-6.320.000,00m","elementNumber":0,"format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","value":-6320000},{"displayValue":"-6.636.000,00k","elementNumber":0,"format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","value":-6636000},{"displayValue":"316.000","elementNumber":0,"format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","value":316000},{"displayValue":"-4,8%","elementNumber":0,"format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","value":-0.04761904761904767}]],"meta":{"dimensionCount":2}},"general":{"allowExcelExport":true,"cellSuffix":"","errorMessage":"Ups! It seems you asked for too many data. Please filter more to see the whole picture.","maxLoops":2},"selection":{"dimensionSelectionCounts":[1,1]},"styling":{"colors":{"vColLibBlue":"#4575b4","vColLibBlueP":"#b3d9ff","vColLibClean":"#ffffff","vColLibCleanP":"#ffffff","vColLibCustom":"#ffcccc","vColLibCustomP":"#ffffff","vColLibDark":"#c4c4c4","vColLibDarkP":"#efefef","vColLibGreen":"#7bb51c","vColLibGreenP":"#98fb98","vColLibNight":"#808080","vColLibNightP":"#c4c4c4","vColLibOrange":"#fd6600","vColLibOrangeP":"#ffcc66","vColLibRed":"#d58b94","vColLibRedP":"#ffcccc","vColLibSoft":"#efefef","vColLibSoftP":"#ffffff","vColLibViolete":"#ccc0ff","vColLibVioleteP":"#e6e6ff"},"customCSV":{"basic":["Accounts","Revenues","Net sales revenues","Cost of goods sold","Manufacturing overhead","Net mfr overhead","Net costs of goods sold","Gross profit","Operating expenses","Total selling expenses","General & administrative expenses","Other general & admin expenses","total general & admin expenses","total operating expenses","Operating income before taxes","Financial revenue & expenses","Income before tax & extraordinary items","Extraordinary items","Net gain on sale of land","Extraordinary items after tax","Net Income (Profit)"],"count":8,"full":[["Accounts","Bold","Background","FontStyle","LetterColor","Align","Size","Comment"],["Revenues","","","","","
","",""],["Net sales revenues","","rgb(128, 191, 255)","","","","",""],["Cost of goods sold","","rgb(128, 191, 255)","","","","",""],["Manufacturing overhead","","","","","
","",""],["Net mfr overhead","","rgb(128, 191, 255)","","","","",""],["Net costs of goods sold","","rgb(128, 191, 255)","","","","",""],["Gross profit","","rgb(0, 102, 204)","","","
","",""],["Operating expenses","","","","","","",""],["Total selling expenses","","rgb(128, 191, 255)","","","","",""],["General & administrative expenses","","","","","
","",""],["Other general & admin expenses","","rgb(128, 191, 255)","","","
","",""],["total general & admin expenses","","","","","","",""],["total operating expenses","","rgb(128, 191, 255)","","","","",""],["Operating income before taxes","","rgb(0, 102, 204)","","","","",""],["Financial revenue & expenses","","","","","
","",""],["Income before tax & extraordinary items","","rgb(0, 102, 204)","","","","",""],["Extraordinary items","","","","","
","",""],["Net gain on sale of land","","rgb(0, 102, 204)","","","
","",""],["Extraordinary items after tax","","rgb(0, 102, 204)","","","
","",""],["Net Income (Profit)","","","","","
","",""]]},"hasCustomFileStyle":true,"headerOptions":{"alignment":"center","colorSchema":"#4575b4","fontSizeAdjustment":-2,"textColor":"WhiteSmoke"},"options":{"backgroundColor":"#efefef","color":"Black","fontFamily":"Calibri","fontSizeAdjustment":0},"semaphoreColors":{"fieldsToApplyTo":{"applyToAll":false,"specificFields":["Gross sales revenues","Direct materials","","","","","","",""]},"status":{},"statusColors":{"critical":{},"medium":{},"normal":{}}},"symbolForNulls":"0","usePadding":true,"useSeparatorColumns":true}}`); +const sample = JSON.parse(`{"data":{"headers":{"dimension1":[{"displayValue":"Revenues","elementNumber":0,"name":"Account Desc","value":"NaN"},{"displayValue":"Gross sales revenues","elementNumber":1,"name":"Account Desc","value":"NaN"},{"displayValue":"Less return & allowances","elementNumber":2,"name":"Account Desc","value":"NaN"},{"displayValue":"Net sales revenues","elementNumber":3,"name":"Account Desc","value":"NaN"},{"displayValue":"Cost of goods sold","elementNumber":4,"name":"Account Desc","value":"NaN"},{"displayValue":"Direct materials","elementNumber":5,"name":"Account Desc","value":"NaN"},{"displayValue":"Direct labor","elementNumber":6,"name":"Account Desc","value":"NaN"},{"displayValue":"Manufacturing overhead","elementNumber":7,"name":"Account Desc","value":"NaN"},{"displayValue":"Indirect labor","elementNumber":8,"name":"Account Desc","value":"NaN"},{"displayValue":"Depreciation, manufacturing equip","elementNumber":9,"name":"Account Desc","value":"NaN"},{"displayValue":"Other mfr overhead","elementNumber":10,"name":"Account Desc","value":"NaN"},{"displayValue":"Net mfr overhead","elementNumber":11,"name":"Account Desc","value":"NaN"},{"displayValue":"Net costs of goods sold","elementNumber":12,"name":"Account Desc","value":"NaN"},{"displayValue":"Gross profit","elementNumber":13,"name":"Account Desc","value":"NaN"},{"displayValue":"Operating expenses","elementNumber":14,"name":"Account Desc","value":"NaN"},{"displayValue":"Selling expenses","elementNumber":15,"name":"Account Desc","value":"NaN"},{"displayValue":"Sales salaries","elementNumber":16,"name":"Account Desc","value":"NaN"},{"displayValue":"Warranty expenses","elementNumber":17,"name":"Account Desc","value":"NaN"},{"displayValue":"Depreciation, store equipment","elementNumber":18,"name":"Account Desc","value":"NaN"},{"displayValue":"Other selling expenses3","elementNumber":19,"name":"Account Desc","value":"NaN"},{"displayValue":"Total selling expenses","elementNumber":20,"name":"Account Desc","value":"NaN"},{"displayValue":"General & administrative expenses","elementNumber":21,"name":"Account Desc","value":"NaN"},{"displayValue":"Administration salaries","elementNumber":22,"name":"Account Desc","value":"NaN"},{"displayValue":"Rent expenses","elementNumber":23,"name":"Account Desc","value":"NaN"},{"displayValue":"Depreciation, computers","elementNumber":24,"name":"Account Desc","value":"NaN"},{"displayValue":"Other general & admin expenses","elementNumber":25,"name":"Account Desc","value":"NaN"},{"displayValue":"total general & admin expenses","elementNumber":26,"name":"Account Desc","value":"NaN"},{"displayValue":"total operating expenses","elementNumber":27,"name":"Account Desc","value":"NaN"},{"displayValue":"Operating income before taxes","elementNumber":28,"name":"Account Desc","value":"NaN"},{"displayValue":"Financial revenue & expenses","elementNumber":29,"name":"Account Desc","value":"NaN"},{"displayValue":"Revenue from investments","elementNumber":30,"name":"Account Desc","value":"NaN"},{"displayValue":"Less interest expenses","elementNumber":31,"name":"Account Desc","value":"NaN"},{"displayValue":"Net financial gain (expense)","elementNumber":32,"name":"Account Desc","value":"NaN"},{"displayValue":"Income before tax & extraordinary items","elementNumber":33,"name":"Account Desc","value":"NaN"},{"displayValue":"Less income tax on operations","elementNumber":34,"name":"Account Desc","value":"NaN"},{"displayValue":"Income before extraordinary items","elementNumber":35,"name":"Account Desc","value":"NaN"},{"displayValue":"Extraordinary items","elementNumber":36,"name":"Account Desc","value":"NaN"},{"displayValue":"Sale of land","elementNumber":37,"name":"Account Desc","value":"NaN"},{"displayValue":"Less initial cost","elementNumber":38,"name":"Account Desc","value":"NaN"},{"displayValue":"Net gain on sale of land","elementNumber":39,"name":"Account Desc","value":"NaN"},{"displayValue":"Less income tax on gain","elementNumber":40,"name":"Account Desc","value":"NaN"},{"displayValue":"Extraordinary items after tax","elementNumber":41,"name":"Account Desc","value":"NaN"},{"displayValue":"Net Income (Profit)","elementNumber":42,"name":"Account Desc","value":"NaN"}],"dimension2":[{"displayValue":"France","elementNumber":0,"name":"Country","value":"NaN"},{"displayValue":"Italy","elementNumber":2,"name":"Country","value":"NaN"},{"displayValue":"Portugal","elementNumber":3,"name":"Country","value":"NaN"},{"displayValue":"Spain","elementNumber":1,"name":"Country","value":"NaN"}],"measurements":[{"format":"#.##0,00m","magnitudeLabelSuffix":" (m)","name":"Balance"},{"format":"#.##0,00k","magnitudeLabelSuffix":" (k)","name":"Bal. LY"},{"format":"#.##0","magnitudeLabelSuffix":"","name":"Dif"},{"format":"0,0%","magnitudeLabelSuffix":"","name":"% Var"}]},"matrix":[[{"displayValue":"0,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":0,"header":"Revenues"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":0,"header":"Revenues"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"0","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":0,"header":"Revenues"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":0,"header":"Revenues"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"0,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":0,"header":"Revenues"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":0,"header":"Revenues"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"0","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":0,"header":"Revenues"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":0,"header":"Revenues"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"0,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":0,"header":"Revenues"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":0,"header":"Revenues"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"0","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":0,"header":"Revenues"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":0,"header":"Revenues"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"0,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":0,"header":"Revenues"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":0,"header":"Revenues"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"0","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":0,"header":"Revenues"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":0,"header":"Revenues"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"62.991.810,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":1,"header":"Gross sales revenues"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":62991810},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":1,"header":"Gross sales revenues"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"62.991.810","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":1,"header":"Gross sales revenues"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":62991810},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":1,"header":"Gross sales revenues"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"70.865.786,25m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":1,"header":"Gross sales revenues"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":70865786.25},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":1,"header":"Gross sales revenues"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"70.865.786","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":1,"header":"Gross sales revenues"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":70865786.25},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":1,"header":"Gross sales revenues"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"14.173.157,25m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":1,"header":"Gross sales revenues"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":14173157.25},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":1,"header":"Gross sales revenues"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"14.173.157","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":1,"header":"Gross sales revenues"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":14173157.25},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":1,"header":"Gross sales revenues"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"47.243.857,50m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":1,"header":"Gross sales revenues"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":47243857.5},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":1,"header":"Gross sales revenues"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"47.243.858","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":1,"header":"Gross sales revenues"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":47243857.5},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":1,"header":"Gross sales revenues"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"588.200,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":2,"header":"Less return & allowances"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":588200},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":2,"header":"Less return & allowances"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"588.200","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":2,"header":"Less return & allowances"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":588200},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":2,"header":"Less return & allowances"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"661.725,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":2,"header":"Less return & allowances"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":661725},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":2,"header":"Less return & allowances"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"661.725","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":2,"header":"Less return & allowances"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":661725},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":2,"header":"Less return & allowances"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"132.345,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":2,"header":"Less return & allowances"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":132345},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":2,"header":"Less return & allowances"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"132.345","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":2,"header":"Less return & allowances"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":132345},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":2,"header":"Less return & allowances"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"441.150,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":2,"header":"Less return & allowances"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":441149.99999999994},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":2,"header":"Less return & allowances"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"441.150","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":2,"header":"Less return & allowances"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":441149.99999999994},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":2,"header":"Less return & allowances"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"62.888.010,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":3,"header":"Net sales revenues"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":62888010},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":3,"header":"Net sales revenues"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"62.888.010","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":3,"header":"Net sales revenues"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":62888010},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":3,"header":"Net sales revenues"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"70.749.011,25m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":3,"header":"Net sales revenues"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":70749011.25},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":3,"header":"Net sales revenues"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"70.749.011","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":3,"header":"Net sales revenues"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":70749011.25},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":3,"header":"Net sales revenues"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"14.149.802,25m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":3,"header":"Net sales revenues"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":14149802.25},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":3,"header":"Net sales revenues"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"14.149.802","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":3,"header":"Net sales revenues"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":14149802.25},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":3,"header":"Net sales revenues"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"47.166.007,50m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":3,"header":"Net sales revenues"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":47166007.5},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":3,"header":"Net sales revenues"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"47.166.008","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":3,"header":"Net sales revenues"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":47166007.5},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":3,"header":"Net sales revenues"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"0,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":4,"header":"Cost of goods sold"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":4,"header":"Cost of goods sold"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"0","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":4,"header":"Cost of goods sold"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":4,"header":"Cost of goods sold"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"0,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":4,"header":"Cost of goods sold"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":4,"header":"Cost of goods sold"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"0","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":4,"header":"Cost of goods sold"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":4,"header":"Cost of goods sold"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"0,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":4,"header":"Cost of goods sold"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":4,"header":"Cost of goods sold"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"0","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":4,"header":"Cost of goods sold"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":4,"header":"Cost of goods sold"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"0,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":4,"header":"Cost of goods sold"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":4,"header":"Cost of goods sold"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"0","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":4,"header":"Cost of goods sold"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":4,"header":"Cost of goods sold"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"-12.956.000,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":5,"header":"Direct materials"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":-12956000},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":5,"header":"Direct materials"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"-12.956.000","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":5,"header":"Direct materials"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":-12956000},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":5,"header":"Direct materials"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"-14.575.500,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":5,"header":"Direct materials"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":-14575500},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":5,"header":"Direct materials"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"-14.575.500","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":5,"header":"Direct materials"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":-14575500},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":5,"header":"Direct materials"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"-2.915.100,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":5,"header":"Direct materials"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":-2915100},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":5,"header":"Direct materials"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"-2.915.100","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":5,"header":"Direct materials"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":-2915100},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":5,"header":"Direct materials"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"-9.717.000,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":5,"header":"Direct materials"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":-9717000},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":5,"header":"Direct materials"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"-9.717.000","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":5,"header":"Direct materials"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":-9717000},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":5,"header":"Direct materials"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"-12.017.000,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":6,"header":"Direct labor"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":-12017000},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":6,"header":"Direct labor"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"-12.017.000","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":6,"header":"Direct labor"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":-12017000},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":6,"header":"Direct labor"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"-13.519.125,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":6,"header":"Direct labor"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":-13519125},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":6,"header":"Direct labor"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"-13.519.125","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":6,"header":"Direct labor"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":-13519125},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":6,"header":"Direct labor"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"-2.703.825,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":6,"header":"Direct labor"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":-2703825},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":6,"header":"Direct labor"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"-2.703.825","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":6,"header":"Direct labor"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":-2703825},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":6,"header":"Direct labor"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"-9.012.750,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":6,"header":"Direct labor"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":-9012750},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":6,"header":"Direct labor"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"-9.012.750","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":6,"header":"Direct labor"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":-9012750},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":6,"header":"Direct labor"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"0,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":7,"header":"Manufacturing overhead"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":7,"header":"Manufacturing overhead"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"0","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":7,"header":"Manufacturing overhead"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":7,"header":"Manufacturing overhead"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"0,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":7,"header":"Manufacturing overhead"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":7,"header":"Manufacturing overhead"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"0","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":7,"header":"Manufacturing overhead"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":7,"header":"Manufacturing overhead"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"0,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":7,"header":"Manufacturing overhead"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":7,"header":"Manufacturing overhead"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"0","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":7,"header":"Manufacturing overhead"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":7,"header":"Manufacturing overhead"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"0,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":7,"header":"Manufacturing overhead"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":7,"header":"Manufacturing overhead"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"0","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":7,"header":"Manufacturing overhead"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":7,"header":"Manufacturing overhead"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"-10.262.850,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":8,"header":"Indirect labor"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":-10262850},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":8,"header":"Indirect labor"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"-10.262.850","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":8,"header":"Indirect labor"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":-10262850},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":8,"header":"Indirect labor"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"-11.545.706,25m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":8,"header":"Indirect labor"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":-11545706.25},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":8,"header":"Indirect labor"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"-11.545.706","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":8,"header":"Indirect labor"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":-11545706.25},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":8,"header":"Indirect labor"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"-2.309.141,25m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":8,"header":"Indirect labor"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":-2309141.25},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":8,"header":"Indirect labor"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"-2.309.141","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":8,"header":"Indirect labor"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":-2309141.25},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":8,"header":"Indirect labor"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"-7.697.137,50m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":8,"header":"Indirect labor"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":-7697137.5},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":8,"header":"Indirect labor"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"-7.697.138","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":8,"header":"Indirect labor"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":-7697137.5},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":8,"header":"Indirect labor"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"-367.200,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":9,"header":"Depreciation, manufacturing equip"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":-367200},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":9,"header":"Depreciation, manufacturing equip"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"-367.200","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":9,"header":"Depreciation, manufacturing equip"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":-367200},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":9,"header":"Depreciation, manufacturing equip"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"-413.100,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":9,"header":"Depreciation, manufacturing equip"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":-413100},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":9,"header":"Depreciation, manufacturing equip"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"-413.100","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":9,"header":"Depreciation, manufacturing equip"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":-413100},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":9,"header":"Depreciation, manufacturing equip"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"-82.620,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":9,"header":"Depreciation, manufacturing equip"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":-82620},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":9,"header":"Depreciation, manufacturing equip"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"-82.620","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":9,"header":"Depreciation, manufacturing equip"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":-82620},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":9,"header":"Depreciation, manufacturing equip"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"-275.400,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":9,"header":"Depreciation, manufacturing equip"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":-275400},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":9,"header":"Depreciation, manufacturing equip"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"-275.400","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":9,"header":"Depreciation, manufacturing equip"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":-275400},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":9,"header":"Depreciation, manufacturing equip"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"-8.400.000,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":10,"header":"Other mfr overhead"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":-8400000},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":10,"header":"Other mfr overhead"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"-8.400.000","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":10,"header":"Other mfr overhead"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":-8400000},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":10,"header":"Other mfr overhead"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"-9.450.000,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":10,"header":"Other mfr overhead"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":-9450000},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":10,"header":"Other mfr overhead"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"-9.450.000","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":10,"header":"Other mfr overhead"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":-9450000},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":10,"header":"Other mfr overhead"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"-1.890.000,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":10,"header":"Other mfr overhead"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":-1890000},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":10,"header":"Other mfr overhead"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"-1.890.000","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":10,"header":"Other mfr overhead"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":-1890000},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":10,"header":"Other mfr overhead"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"-6.300.000,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":10,"header":"Other mfr overhead"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":-6300000},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":10,"header":"Other mfr overhead"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"-6.300.000","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":10,"header":"Other mfr overhead"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":-6300000},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":10,"header":"Other mfr overhead"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"-19.030.050,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":11,"header":"Net mfr overhead"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":-19030050},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":11,"header":"Net mfr overhead"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"-19.030.050","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":11,"header":"Net mfr overhead"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":-19030050},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":11,"header":"Net mfr overhead"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"-21.408.806,25m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":11,"header":"Net mfr overhead"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":-21408806.25},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":11,"header":"Net mfr overhead"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"-21.408.806","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":11,"header":"Net mfr overhead"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":-21408806.25},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":11,"header":"Net mfr overhead"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"-4.281.761,25m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":11,"header":"Net mfr overhead"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":-4281761.25},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":11,"header":"Net mfr overhead"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"-4.281.761","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":11,"header":"Net mfr overhead"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":-4281761.25},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":11,"header":"Net mfr overhead"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"-14.272.537,50m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":11,"header":"Net mfr overhead"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":-14272537.5},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":11,"header":"Net mfr overhead"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"-14.272.538","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":11,"header":"Net mfr overhead"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":-14272537.5},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":11,"header":"Net mfr overhead"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"17.269.060,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":12,"header":"Net costs of goods sold"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":17269060},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":12,"header":"Net costs of goods sold"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"17.269.060","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":12,"header":"Net costs of goods sold"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":17269060},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":12,"header":"Net costs of goods sold"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"19.427.692,50m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":12,"header":"Net costs of goods sold"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":19427692.5},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":12,"header":"Net costs of goods sold"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"19.427.693","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":12,"header":"Net costs of goods sold"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":19427692.5},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":12,"header":"Net costs of goods sold"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"3.885.538,50m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":12,"header":"Net costs of goods sold"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":3885538.5},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":12,"header":"Net costs of goods sold"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"3.885.539","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":12,"header":"Net costs of goods sold"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":3885538.5},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":12,"header":"Net costs of goods sold"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"12.951.795,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":12,"header":"Net costs of goods sold"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":12951795},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":12,"header":"Net costs of goods sold"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"12.951.795","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":12,"header":"Net costs of goods sold"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":12951795},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":12,"header":"Net costs of goods sold"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"1.532.950,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":13,"header":"Gross profit"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":1532950},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":13,"header":"Gross profit"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"1.532.950","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":13,"header":"Gross profit"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":1532950},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":13,"header":"Gross profit"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"1.724.568,75m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":13,"header":"Gross profit"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":1724568.75},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":13,"header":"Gross profit"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"1.724.569","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":13,"header":"Gross profit"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":1724568.75},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":13,"header":"Gross profit"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"344.913,75m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":13,"header":"Gross profit"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":344913.75},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":13,"header":"Gross profit"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"344.914","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":13,"header":"Gross profit"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":344913.75},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":13,"header":"Gross profit"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"1.149.712,50m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":13,"header":"Gross profit"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":1149712.5},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":13,"header":"Gross profit"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"1.149.713","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":13,"header":"Gross profit"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":1149712.5},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":13,"header":"Gross profit"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"0,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":14,"header":"Operating expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":14,"header":"Operating expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"0","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":14,"header":"Operating expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":14,"header":"Operating expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"0,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":14,"header":"Operating expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":14,"header":"Operating expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"0","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":14,"header":"Operating expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":14,"header":"Operating expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"0,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":14,"header":"Operating expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":14,"header":"Operating expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"0","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":14,"header":"Operating expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":14,"header":"Operating expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"0,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":14,"header":"Operating expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":14,"header":"Operating expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"0","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":14,"header":"Operating expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":14,"header":"Operating expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"0,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":15,"header":"Selling expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":15,"header":"Selling expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"0","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":15,"header":"Selling expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":15,"header":"Selling expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"0,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":15,"header":"Selling expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":15,"header":"Selling expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"0","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":15,"header":"Selling expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":15,"header":"Selling expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"0,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":15,"header":"Selling expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":15,"header":"Selling expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"0","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":15,"header":"Selling expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":15,"header":"Selling expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"0,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":15,"header":"Selling expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":15,"header":"Selling expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"0","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":15,"header":"Selling expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":15,"header":"Selling expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"-8.190.000,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":16,"header":"Sales salaries"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":-8190000},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":16,"header":"Sales salaries"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"-8.190.000","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":16,"header":"Sales salaries"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":-8190000},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":16,"header":"Sales salaries"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"-9.213.750,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":16,"header":"Sales salaries"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":-9213750},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":16,"header":"Sales salaries"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"-9.213.750","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":16,"header":"Sales salaries"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":-9213750},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":16,"header":"Sales salaries"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"-1.842.750,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":16,"header":"Sales salaries"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":-1842750},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":16,"header":"Sales salaries"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"-1.842.750","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":16,"header":"Sales salaries"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":-1842750},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":16,"header":"Sales salaries"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"-6.142.500,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":16,"header":"Sales salaries"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":-6142500},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":16,"header":"Sales salaries"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"-6.142.500","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":16,"header":"Sales salaries"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":-6142500},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":16,"header":"Sales salaries"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"-744.600,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":17,"header":"Warranty expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":-744600},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":17,"header":"Warranty expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"-744.600","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":17,"header":"Warranty expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":-744600},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":17,"header":"Warranty expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"-837.675,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":17,"header":"Warranty expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":-837675},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":17,"header":"Warranty expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"-837.675","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":17,"header":"Warranty expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":-837675},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":17,"header":"Warranty expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"-167.535,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":17,"header":"Warranty expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":-167535},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":17,"header":"Warranty expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"-167.535","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":17,"header":"Warranty expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":-167535},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":17,"header":"Warranty expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"-558.450,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":17,"header":"Warranty expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":-558450},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":17,"header":"Warranty expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"-558.450","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":17,"header":"Warranty expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":-558450},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":17,"header":"Warranty expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"-252.000,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":18,"header":"Depreciation, store equipment"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":-252000},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":18,"header":"Depreciation, store equipment"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"-252.000","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":18,"header":"Depreciation, store equipment"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":-252000},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":18,"header":"Depreciation, store equipment"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"-283.500,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":18,"header":"Depreciation, store equipment"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":-283500},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":18,"header":"Depreciation, store equipment"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"-283.500","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":18,"header":"Depreciation, store equipment"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":-283500},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":18,"header":"Depreciation, store equipment"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"-56.700,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":18,"header":"Depreciation, store equipment"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":-56700},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":18,"header":"Depreciation, store equipment"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"-56.700","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":18,"header":"Depreciation, store equipment"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":-56700},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":18,"header":"Depreciation, store equipment"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"-189.000,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":18,"header":"Depreciation, store equipment"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":-189000},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":18,"header":"Depreciation, store equipment"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"-189.000","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":18,"header":"Depreciation, store equipment"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":-189000},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":18,"header":"Depreciation, store equipment"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"-5.108.600,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":19,"header":"Other selling expenses3"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":-5108600},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":19,"header":"Other selling expenses3"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"-5.108.600","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":19,"header":"Other selling expenses3"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":-5108600},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":19,"header":"Other selling expenses3"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"-5.747.175,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":19,"header":"Other selling expenses3"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":-5747175},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":19,"header":"Other selling expenses3"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"-5.747.175","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":19,"header":"Other selling expenses3"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":-5747175},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":19,"header":"Other selling expenses3"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"-1.149.435,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":19,"header":"Other selling expenses3"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":-1149435},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":19,"header":"Other selling expenses3"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"-1.149.435","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":19,"header":"Other selling expenses3"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":-1149435},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":19,"header":"Other selling expenses3"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"-3.831.450,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":19,"header":"Other selling expenses3"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":-3831450},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":19,"header":"Other selling expenses3"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"-3.831.450","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":19,"header":"Other selling expenses3"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":-3831450},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":19,"header":"Other selling expenses3"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"-14.295.200,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":20,"header":"Total selling expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":-14295200},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":20,"header":"Total selling expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"-14.295.200","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":20,"header":"Total selling expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":-14295200},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":20,"header":"Total selling expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"-16.082.100,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":20,"header":"Total selling expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":-16082100},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":20,"header":"Total selling expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"-16.082.100","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":20,"header":"Total selling expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":-16082100},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":20,"header":"Total selling expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"-3.216.420,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":20,"header":"Total selling expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":-3216420},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":20,"header":"Total selling expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"-3.216.420","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":20,"header":"Total selling expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":-3216420},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":20,"header":"Total selling expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"-10.721.400,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":20,"header":"Total selling expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":-10721400},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":20,"header":"Total selling expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"-10.721.400","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":20,"header":"Total selling expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":-10721400},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":20,"header":"Total selling expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"0,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":21,"header":"General & administrative expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":21,"header":"General & administrative expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"0","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":21,"header":"General & administrative expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":21,"header":"General & administrative expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"0,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":21,"header":"General & administrative expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":21,"header":"General & administrative expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"0","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":21,"header":"General & administrative expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":21,"header":"General & administrative expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"0,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":21,"header":"General & administrative expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":21,"header":"General & administrative expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"0","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":21,"header":"General & administrative expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":21,"header":"General & administrative expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"0,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":21,"header":"General & administrative expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":21,"header":"General & administrative expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"0","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":21,"header":"General & administrative expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":21,"header":"General & administrative expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"-2.396.550,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":22,"header":"Administration salaries"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":-2396550},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":22,"header":"Administration salaries"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"-2.396.550","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":22,"header":"Administration salaries"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":-2396550},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":22,"header":"Administration salaries"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"-2.696.118,75m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":22,"header":"Administration salaries"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":-2696118.75},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":22,"header":"Administration salaries"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"-2.696.119","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":22,"header":"Administration salaries"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":-2696118.75},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":22,"header":"Administration salaries"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"-539.223,75m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":22,"header":"Administration salaries"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":-539223.75},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":22,"header":"Administration salaries"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"-539.224","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":22,"header":"Administration salaries"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":-539223.75},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":22,"header":"Administration salaries"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"-1.797.412,50m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":22,"header":"Administration salaries"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":-1797412.5},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":22,"header":"Administration salaries"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"-1.797.413","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":22,"header":"Administration salaries"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":-1797412.5},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":22,"header":"Administration salaries"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"-179.830,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":23,"header":"Rent expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":-179830},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":23,"header":"Rent expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"-179.830","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":23,"header":"Rent expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":-179830},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":23,"header":"Rent expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"-202.308,75m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":23,"header":"Rent expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":-202308.75},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":23,"header":"Rent expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"-202.309","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":23,"header":"Rent expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":-202308.75},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":23,"header":"Rent expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"-40.461,75m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":23,"header":"Rent expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":-40461.75},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":23,"header":"Rent expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"-40.462","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":23,"header":"Rent expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":-40461.75},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":23,"header":"Rent expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"-134.872,50m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":23,"header":"Rent expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":-134872.5},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":23,"header":"Rent expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"-134.873","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":23,"header":"Rent expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":-134872.5},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":23,"header":"Rent expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"-375.900,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":24,"header":"Depreciation, computers"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":-375900},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":24,"header":"Depreciation, computers"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"-375.900","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":24,"header":"Depreciation, computers"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":-375900},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":24,"header":"Depreciation, computers"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"-422.887,50m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":24,"header":"Depreciation, computers"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":-422887.5},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":24,"header":"Depreciation, computers"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"-422.888","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":24,"header":"Depreciation, computers"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":-422887.5},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":24,"header":"Depreciation, computers"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"-84.577,50m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":24,"header":"Depreciation, computers"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":-84577.5},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":24,"header":"Depreciation, computers"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"-84.578","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":24,"header":"Depreciation, computers"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":-84577.5},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":24,"header":"Depreciation, computers"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"-281.925,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":24,"header":"Depreciation, computers"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":-281925},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":24,"header":"Depreciation, computers"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"-281.925","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":24,"header":"Depreciation, computers"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":-281925},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":24,"header":"Depreciation, computers"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"-1.564.280,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":25,"header":"Other general & admin expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":-1564280},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":25,"header":"Other general & admin expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"-1.564.280","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":25,"header":"Other general & admin expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":-1564280},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":25,"header":"Other general & admin expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"-1.759.815,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":25,"header":"Other general & admin expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":-1759815},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":25,"header":"Other general & admin expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"-1.759.815","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":25,"header":"Other general & admin expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":-1759815},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":25,"header":"Other general & admin expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"-351.963,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":25,"header":"Other general & admin expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":-351963},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":25,"header":"Other general & admin expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"-351.963","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":25,"header":"Other general & admin expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":-351963},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":25,"header":"Other general & admin expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"-1.173.210,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":25,"header":"Other general & admin expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":-1173210},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":25,"header":"Other general & admin expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"-1.173.210","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":25,"header":"Other general & admin expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":-1173210},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":25,"header":"Other general & admin expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"-4.516.560,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":26,"header":"total general & admin expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":-4516560},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":26,"header":"total general & admin expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"-4.516.560","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":26,"header":"total general & admin expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":-4516560},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":26,"header":"total general & admin expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"-5.081.130,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":26,"header":"total general & admin expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":-5081130},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":26,"header":"total general & admin expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"-5.081.130","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":26,"header":"total general & admin expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":-5081130},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":26,"header":"total general & admin expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"-1.016.226,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":26,"header":"total general & admin expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":-1016226},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":26,"header":"total general & admin expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"-1.016.226","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":26,"header":"total general & admin expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":-1016226},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":26,"header":"total general & admin expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"-3.387.420,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":26,"header":"total general & admin expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":-3387420},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":26,"header":"total general & admin expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"-3.387.420","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":26,"header":"total general & admin expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":-3387420},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":26,"header":"total general & admin expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"-18.811.760,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":27,"header":"total operating expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":-18811760},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":27,"header":"total operating expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"-18.811.760","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":27,"header":"total operating expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":-18811760},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":27,"header":"total operating expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"-21.163.230,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":27,"header":"total operating expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":-21163230},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":27,"header":"total operating expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"-21.163.230","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":27,"header":"total operating expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":-21163230},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":27,"header":"total operating expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"-4.232.646,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":27,"header":"total operating expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":-4232646},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":27,"header":"total operating expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"-4.232.646","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":27,"header":"total operating expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":-4232646},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":27,"header":"total operating expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"-14.108.820,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":27,"header":"total operating expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":-14108820},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":27,"header":"total operating expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"-14.108.820","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":27,"header":"total operating expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":-14108820},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":27,"header":"total operating expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"4.724.710,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":28,"header":"Operating income before taxes"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":4724710},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":28,"header":"Operating income before taxes"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"4.724.710","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":28,"header":"Operating income before taxes"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":4724710},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":28,"header":"Operating income before taxes"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"5.315.298,75m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":28,"header":"Operating income before taxes"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":5315298.75},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":28,"header":"Operating income before taxes"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"5.315.299","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":28,"header":"Operating income before taxes"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":5315298.75},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":28,"header":"Operating income before taxes"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"1.063.059,75m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":28,"header":"Operating income before taxes"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":1063059.75},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":28,"header":"Operating income before taxes"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"1.063.060","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":28,"header":"Operating income before taxes"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":1063059.75},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":28,"header":"Operating income before taxes"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"3.543.532,50m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":28,"header":"Operating income before taxes"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":3543532.5},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":28,"header":"Operating income before taxes"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"3.543.533","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":28,"header":"Operating income before taxes"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":3543532.5},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":28,"header":"Operating income before taxes"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"0,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":29,"header":"Financial revenue & expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":29,"header":"Financial revenue & expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"0","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":29,"header":"Financial revenue & expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":29,"header":"Financial revenue & expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"0,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":29,"header":"Financial revenue & expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":29,"header":"Financial revenue & expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"0","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":29,"header":"Financial revenue & expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":29,"header":"Financial revenue & expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"0,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":29,"header":"Financial revenue & expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":29,"header":"Financial revenue & expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"0","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":29,"header":"Financial revenue & expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":29,"header":"Financial revenue & expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"0,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":29,"header":"Financial revenue & expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":29,"header":"Financial revenue & expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"0","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":29,"header":"Financial revenue & expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":29,"header":"Financial revenue & expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"230.100,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":30,"header":"Revenue from investments"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":230100},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":30,"header":"Revenue from investments"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"230.100","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":30,"header":"Revenue from investments"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":230100},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":30,"header":"Revenue from investments"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"258.862,50m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":30,"header":"Revenue from investments"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":258862.5},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":30,"header":"Revenue from investments"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"258.863","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":30,"header":"Revenue from investments"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":258862.5},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":30,"header":"Revenue from investments"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"51.772,50m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":30,"header":"Revenue from investments"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":51772.5},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":30,"header":"Revenue from investments"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"51.773","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":30,"header":"Revenue from investments"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":51772.5},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":30,"header":"Revenue from investments"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"172.575,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":30,"header":"Revenue from investments"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":172575},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":30,"header":"Revenue from investments"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"172.575","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":30,"header":"Revenue from investments"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":172575},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":30,"header":"Revenue from investments"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"521.220,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":31,"header":"Less interest expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":521220},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":31,"header":"Less interest expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"521.220","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":31,"header":"Less interest expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":521220},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":31,"header":"Less interest expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"586.372,50m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":31,"header":"Less interest expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":586372.5},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":31,"header":"Less interest expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"586.373","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":31,"header":"Less interest expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":586372.5},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":31,"header":"Less interest expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"117.274,50m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":31,"header":"Less interest expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":117274.5},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":31,"header":"Less interest expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"117.275","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":31,"header":"Less interest expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":117274.5},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":31,"header":"Less interest expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"390.915,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":31,"header":"Less interest expenses"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":390915},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":31,"header":"Less interest expenses"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"390.915","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":31,"header":"Less interest expenses"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":390915},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":31,"header":"Less interest expenses"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"825.300,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":32,"header":"Net financial gain (expense)"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":825300},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":32,"header":"Net financial gain (expense)"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"825.300","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":32,"header":"Net financial gain (expense)"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":825300},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":32,"header":"Net financial gain (expense)"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"928.462,50m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":32,"header":"Net financial gain (expense)"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":928462.5},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":32,"header":"Net financial gain (expense)"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"928.463","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":32,"header":"Net financial gain (expense)"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":928462.5},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":32,"header":"Net financial gain (expense)"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"185.692,50m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":32,"header":"Net financial gain (expense)"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":185692.5},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":32,"header":"Net financial gain (expense)"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"185.693","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":32,"header":"Net financial gain (expense)"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":185692.5},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":32,"header":"Net financial gain (expense)"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"618.975,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":32,"header":"Net financial gain (expense)"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":618975},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":32,"header":"Net financial gain (expense)"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"618.975","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":32,"header":"Net financial gain (expense)"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":618975},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":32,"header":"Net financial gain (expense)"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"3.291.620,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":33,"header":"Income before tax & extraordinary items"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":3291620},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":33,"header":"Income before tax & extraordinary items"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"3.291.620","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":33,"header":"Income before tax & extraordinary items"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":3291620},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":33,"header":"Income before tax & extraordinary items"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"3.703.072,50m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":33,"header":"Income before tax & extraordinary items"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":3703072.5},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":33,"header":"Income before tax & extraordinary items"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"3.703.073","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":33,"header":"Income before tax & extraordinary items"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":3703072.5},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":33,"header":"Income before tax & extraordinary items"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"740.614,50m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":33,"header":"Income before tax & extraordinary items"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":740614.5},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":33,"header":"Income before tax & extraordinary items"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"740.615","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":33,"header":"Income before tax & extraordinary items"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":740614.5},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":33,"header":"Income before tax & extraordinary items"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"2.468.715,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":33,"header":"Income before tax & extraordinary items"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":2468715},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":33,"header":"Income before tax & extraordinary items"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"2.468.715","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":33,"header":"Income before tax & extraordinary items"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":2468715},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":33,"header":"Income before tax & extraordinary items"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"-2.011.800,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":34,"header":"Less income tax on operations"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":-2011800},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":34,"header":"Less income tax on operations"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"-2.011.800","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":34,"header":"Less income tax on operations"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":-2011800},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":34,"header":"Less income tax on operations"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"-2.263.275,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":34,"header":"Less income tax on operations"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":-2263275},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":34,"header":"Less income tax on operations"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"-2.263.275","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":34,"header":"Less income tax on operations"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":-2263275},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":34,"header":"Less income tax on operations"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"-452.655,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":34,"header":"Less income tax on operations"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":-452655},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":34,"header":"Less income tax on operations"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"-452.655","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":34,"header":"Less income tax on operations"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":-452655},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":34,"header":"Less income tax on operations"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"-1.508.850,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":34,"header":"Less income tax on operations"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":-1508850},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":34,"header":"Less income tax on operations"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"-1.508.850","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":34,"header":"Less income tax on operations"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":-1508850},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":34,"header":"Less income tax on operations"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"1.779.700,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":35,"header":"Income before extraordinary items"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":1779700},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":35,"header":"Income before extraordinary items"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"1.779.700","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":35,"header":"Income before extraordinary items"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":1779700},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":35,"header":"Income before extraordinary items"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"2.002.162,50m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":35,"header":"Income before extraordinary items"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":2002162.5},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":35,"header":"Income before extraordinary items"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"2.002.163","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":35,"header":"Income before extraordinary items"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":2002162.5},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":35,"header":"Income before extraordinary items"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"400.432,50m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":35,"header":"Income before extraordinary items"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":400432.5},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":35,"header":"Income before extraordinary items"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"400.433","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":35,"header":"Income before extraordinary items"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":400432.5},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":35,"header":"Income before extraordinary items"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"1.334.775,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":35,"header":"Income before extraordinary items"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":1334775},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":35,"header":"Income before extraordinary items"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"1.334.775","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":35,"header":"Income before extraordinary items"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":1334775},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":35,"header":"Income before extraordinary items"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"0,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":36,"header":"Extraordinary items"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":36,"header":"Extraordinary items"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"0","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":36,"header":"Extraordinary items"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":36,"header":"Extraordinary items"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"0,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":36,"header":"Extraordinary items"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":36,"header":"Extraordinary items"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"0","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":36,"header":"Extraordinary items"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":36,"header":"Extraordinary items"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"0,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":36,"header":"Extraordinary items"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":36,"header":"Extraordinary items"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"0","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":36,"header":"Extraordinary items"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":36,"header":"Extraordinary items"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"0,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":36,"header":"Extraordinary items"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":36,"header":"Extraordinary items"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"0","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":36,"header":"Extraordinary items"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":36,"header":"Extraordinary items"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"1.189.500,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":37,"header":"Sale of land"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":1189500},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":37,"header":"Sale of land"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"1.189.500","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":37,"header":"Sale of land"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":1189500},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":37,"header":"Sale of land"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"1.338.187,50m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":37,"header":"Sale of land"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":1338187.5},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":37,"header":"Sale of land"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"1.338.188","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":37,"header":"Sale of land"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":1338187.5},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":37,"header":"Sale of land"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"267.637,50m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":37,"header":"Sale of land"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":267637.5},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":37,"header":"Sale of land"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"267.638","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":37,"header":"Sale of land"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":267637.5},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":37,"header":"Sale of land"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"892.125,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":37,"header":"Sale of land"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":892125},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":37,"header":"Sale of land"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"892.125","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":37,"header":"Sale of land"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":892125},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":37,"header":"Sale of land"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"-147.900,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":38,"header":"Less initial cost"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":-147900},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":38,"header":"Less initial cost"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"-147.900","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":38,"header":"Less initial cost"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":-147900},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":38,"header":"Less initial cost"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"-166.387,50m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":38,"header":"Less initial cost"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":-166387.5},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":38,"header":"Less initial cost"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"-166.388","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":38,"header":"Less initial cost"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":-166387.5},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":38,"header":"Less initial cost"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"-33.277,50m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":38,"header":"Less initial cost"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":-33277.5},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":38,"header":"Less initial cost"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"-33.278","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":38,"header":"Less initial cost"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":-33277.5},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":38,"header":"Less initial cost"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"-110.925,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":38,"header":"Less initial cost"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":-110925},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":38,"header":"Less initial cost"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"-110.925","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":38,"header":"Less initial cost"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":-110925},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":38,"header":"Less initial cost"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"1.047.400,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":39,"header":"Net gain on sale of land"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":1047400},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":39,"header":"Net gain on sale of land"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"1.047.400","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":39,"header":"Net gain on sale of land"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":1047400},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":39,"header":"Net gain on sale of land"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"1.178.325,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":39,"header":"Net gain on sale of land"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":1178325},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":39,"header":"Net gain on sale of land"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"1.178.325","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":39,"header":"Net gain on sale of land"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":1178325},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":39,"header":"Net gain on sale of land"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"235.665,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":39,"header":"Net gain on sale of land"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":235665},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":39,"header":"Net gain on sale of land"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"235.665","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":39,"header":"Net gain on sale of land"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":235665},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":39,"header":"Net gain on sale of land"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"785.550,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":39,"header":"Net gain on sale of land"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":785550},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":39,"header":"Net gain on sale of land"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"785.550","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":39,"header":"Net gain on sale of land"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":785550},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":39,"header":"Net gain on sale of land"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"-230.100,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":40,"header":"Less income tax on gain"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":-230100},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":40,"header":"Less income tax on gain"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"-230.100","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":40,"header":"Less income tax on gain"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":-230100},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":40,"header":"Less income tax on gain"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"-258.862,50m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":40,"header":"Less income tax on gain"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":-258862.5},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":40,"header":"Less income tax on gain"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"-258.863","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":40,"header":"Less income tax on gain"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":-258862.5},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":40,"header":"Less income tax on gain"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"-51.772,50m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":40,"header":"Less income tax on gain"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":-51772.5},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":40,"header":"Less income tax on gain"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"-51.773","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":40,"header":"Less income tax on gain"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":-51772.5},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":40,"header":"Less income tax on gain"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"-172.575,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":40,"header":"Less income tax on gain"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":-172575},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":40,"header":"Less income tax on gain"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"-172.575","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":40,"header":"Less income tax on gain"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":-172575},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":40,"header":"Less income tax on gain"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"1.041.500,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":41,"header":"Extraordinary items after tax"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":1041500},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":41,"header":"Extraordinary items after tax"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"1.041.500","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":41,"header":"Extraordinary items after tax"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":1041500},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":41,"header":"Extraordinary items after tax"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"1.171.687,50m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":41,"header":"Extraordinary items after tax"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":1171687.5},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":41,"header":"Extraordinary items after tax"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"1.171.688","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":41,"header":"Extraordinary items after tax"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":1171687.5},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":41,"header":"Extraordinary items after tax"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"234.337,50m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":41,"header":"Extraordinary items after tax"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":234337.5},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":41,"header":"Extraordinary items after tax"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"234.338","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":41,"header":"Extraordinary items after tax"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":234337.5},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":41,"header":"Extraordinary items after tax"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"781.125,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":41,"header":"Extraordinary items after tax"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":781125},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":41,"header":"Extraordinary items after tax"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"781.125","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":41,"header":"Extraordinary items after tax"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":781125},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":41,"header":"Extraordinary items after tax"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}],[{"displayValue":"2.821.200,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":42,"header":"Net Income (Profit)"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":0}},"value":2821200},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":42,"header":"Net Income (Profit)"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":0}},"value":0},{"displayValue":"2.821.200","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":42,"header":"Net Income (Profit)"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":0}},"value":2821200},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":42,"header":"Net Income (Profit)"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":0}},"value":"NaN"},{"displayValue":"3.173.850,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":42,"header":"Net Income (Profit)"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":2}},"value":3173850},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":42,"header":"Net Income (Profit)"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":2}},"value":0},{"displayValue":"3.173.850","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":42,"header":"Net Income (Profit)"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":2}},"value":3173850},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":42,"header":"Net Income (Profit)"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":2}},"value":"NaN"},{"displayValue":"634.770,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":42,"header":"Net Income (Profit)"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":3}},"value":634770},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":42,"header":"Net Income (Profit)"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":3}},"value":0},{"displayValue":"634.770","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":42,"header":"Net Income (Profit)"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":3}},"value":634770},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":42,"header":"Net Income (Profit)"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":3}},"value":"NaN"},{"displayValue":"2.115.900,00m","format":"#.##0,00m","magnitude":"m","magnitudeLabelSuffix":" (m)","name":"Balance","parents":{"dimension1":{"elementNumber":42,"header":"Net Income (Profit)"},"measurement":{"header":"Balance"},"dimension2":{"elementNumber":1}},"value":2115900},{"displayValue":"0,00k","format":"#.##0,00k","magnitude":"k","magnitudeLabelSuffix":" (k)","name":"Bal. LY","parents":{"dimension1":{"elementNumber":42,"header":"Net Income (Profit)"},"measurement":{"header":"Bal. LY"},"dimension2":{"elementNumber":1}},"value":0},{"displayValue":"2.115.900","format":"#.##0","magnitude":"","magnitudeLabelSuffix":"","name":"Dif","parents":{"dimension1":{"elementNumber":42,"header":"Net Income (Profit)"},"measurement":{"header":"Dif"},"dimension2":{"elementNumber":1}},"value":2115900},{"displayValue":"-","format":"0,0%","magnitude":"","magnitudeLabelSuffix":"","name":"% Var","parents":{"dimension1":{"elementNumber":42,"header":"Net Income (Profit)"},"measurement":{"header":"% Var"},"dimension2":{"elementNumber":1}},"value":"NaN"}]],"meta":{"dimensionCount":2}},"general":{"allowExcelExport":true,"allowFilteringByClick":true,"cellSuffix":"","errorMessage":"Ups! It seems you asked for too many data. Please filter more to see the whole picture.","footnote":"-","maxLoops":2,"subtitle":"This report is using the template Accounts2.csv","title":"P&L report"},"selection":{"dimensionSelectionCounts":[0,0]},"styling":{"colors":{"vColLibBlue":"#4575b4","vColLibBlueP":"#b3d9ff","vColLibClean":"#ffffff","vColLibCleanP":"#ffffff","vColLibCustom":"#ffcccc","vColLibCustomP":"#ffffff","vColLibDark":"#c4c4c4","vColLibDarkP":"#efefef","vColLibGreen":"#7bb51c","vColLibGreenP":"#98fb98","vColLibNight":"#808080","vColLibNightP":"#c4c4c4","vColLibOrange":"#fd6600","vColLibOrangeP":"#ffcc66","vColLibRed":"#d58b94","vColLibRedP":"#ffcccc","vColLibSoft":"#efefef","vColLibSoftP":"#ffffff","vColLibViolete":"#ccc0ff","vColLibVioleteP":"#e6e6ff"},"customCSV":{"basic":["Accounts","Revenues","Net sales revenues","Cost of goods sold","Manufacturing overhead","Net mfr overhead","Net costs of goods sold","Gross profit","Operating expenses","Total selling expenses","General & administrative expenses","Other general & admin expenses","total general & admin expenses","total operating expenses","Operating income before taxes","Financial revenue & expenses","Income before tax & extraordinary items","Extraordinary items","Net gain on sale of land","Extraordinary items after tax","Net Income (Profit)"],"count":8,"full":[["Accounts","Bold","Background","FontStyle","LetterColor","Align","Size","Comment"],["Revenues","","","","","
","",""],["Net sales revenues","","rgb(128, 191, 255)","","","","",""],["Cost of goods sold","","rgb(128, 191, 255)","","","","",""],["Manufacturing overhead","","","","","
","",""],["Net mfr overhead","","rgb(128, 191, 255)","","","","",""],["Net costs of goods sold","","rgb(128, 191, 255)","","","","",""],["Gross profit","","rgb(0, 102, 204)","","","
","",""],["Operating expenses","","","","","","",""],["Total selling expenses","","rgb(128, 191, 255)","","","","",""],["General & administrative expenses","","","","","
","",""],["Other general & admin expenses","","rgb(128, 191, 255)","","","
","",""],["total general & admin expenses","","","","","","",""],["total operating expenses","","rgb(128, 191, 255)","","","","",""],["Operating income before taxes","","rgb(0, 102, 204)","","","","",""],["Financial revenue & expenses","","","","","
","",""],["Income before tax & extraordinary items","","rgb(0, 102, 204)","","","","",""],["Extraordinary items","","","","","
","",""],["Net gain on sale of land","","rgb(0, 102, 204)","","","
","",""],["Extraordinary items after tax","","rgb(0, 102, 204)","","","
","",""],["Net Income (Profit)","","","","","
","",""]]},"hasCustomFileStyle":true,"headerOptions":{"alignment":"center","colorSchema":"#4575b4","fontSizeAdjustment":-1,"textColor":"WhiteSmoke"},"options":{"backgroundColor":"#efefef","color":"Black","fontFamily":"Calibri","fontSizeAdjustment":1},"semaphoreColors":{"fieldsToApplyTo":{"applyToAll":false,"specificFields":["Gross sales revenues","Direct materials","","","","","","",""]},"status":{},"statusColors":{"critical":{},"medium":{},"normal":{}}},"symbolForNulls":"0","usePadding":true,"useSeparatorColumns":true}}`); /* eslint-enable */ export default sample; From 82257be3a8407911bf79f5647a6fe0dc31358192 Mon Sep 17 00:00:00 2001 From: Kristoffer Lind Date: Thu, 21 Feb 2019 18:49:07 +0100 Subject: [PATCH 08/11] fix review comments --- karma.conf.js | 12 ------------ src/headers-table/index.spec.js | 5 +++++ src/root.spec.js | 9 ++++++++- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/karma.conf.js b/karma.conf.js index db9b7f5..68f766f 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -16,10 +16,6 @@ module.exports = (config) => { } }, files: [ - { - pattern: 'src/*.spec.js', - watched: true - }, { pattern: 'src/**/*.spec.js', watched: true @@ -30,10 +26,6 @@ module.exports = (config) => { 'src/**/*.spec.{js, jsx}': [ 'webpack', 'sourcemap' - ], - 'src/*.spec.{js, jsx}': [ - 'webpack', - 'sourcemap' ] }, webpack: { @@ -68,10 +60,6 @@ module.exports = (config) => { alias: { 'test-utilities': path.resolve('test/test-utilities') }, - // extensions: [ - // 'js', - // 'jsx' - // ], modules: ['node_modules'] } } diff --git a/src/headers-table/index.spec.js b/src/headers-table/index.spec.js index dc56b68..9c7cb27 100644 --- a/src/headers-table/index.spec.js +++ b/src/headers-table/index.spec.js @@ -10,6 +10,11 @@ describe('', () => { const defaultProps = { data, general, + qlik: { + backendApi: { + selectValues: () => {} + } + }, styling }; diff --git a/src/root.spec.js b/src/root.spec.js index 90f8c02..42214c9 100644 --- a/src/root.spec.js +++ b/src/root.spec.js @@ -6,7 +6,14 @@ import sampleState from 'test-utilities/capex-sample-state'; describe('', () => { const state = sampleState; - const defaultProps = { state }; + const defaultProps = { + qlik: { + backendApi: { + selectValues: () => {} + } + }, + state + }; function setup (otherProps = {}) { const props = merge(defaultProps, otherProps); From 807a609a9060c5af4bd2e0bd5333314f102f12aa Mon Sep 17 00:00:00 2001 From: Kristoffer Lind Date: Fri, 22 Feb 2019 10:24:41 +0100 Subject: [PATCH 09/11] fix rebase issue --- src/paint.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/paint.jsx b/src/paint.jsx index bd71e23..bc458b7 100644 --- a/src/paint.jsx +++ b/src/paint.jsx @@ -1,7 +1,6 @@ import $ from 'jquery'; import initializeStore from './store'; import React from 'react'; -// import ReactDOM from 'react-dom'; import ReactDOM from 'react-dom'; import Root from './root.jsx'; From 951d534343887cf1d45c4470d1bfb4a1f10a2736 Mon Sep 17 00:00:00 2001 From: ahmed-Bazzara Date: Fri, 22 Feb 2019 12:59:57 +0100 Subject: [PATCH 10/11] merge conflicts solved --- src/root.jsx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/root.jsx b/src/root.jsx index f4d998d..34918eb 100644 --- a/src/root.jsx +++ b/src/root.jsx @@ -3,9 +3,9 @@ import PropTypes from 'prop-types'; import HeadersTable from './headers-table/index.jsx'; import DataTable from './data-table/index.jsx'; -const Root = ({ state, qlik }) => ( +const Root = ({ state, qlik, editmodeClass }) => ( -
+
( styling={state.styling} />
-
+
Date: Fri, 22 Feb 2019 14:17:08 +0100 Subject: [PATCH 11/11] babel/plugin-proposal-class-properties added to karma.conf --- karma.conf.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/karma.conf.js b/karma.conf.js index 68f766f..0d1fe55 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -45,7 +45,9 @@ module.exports = (config) => { exclude: [/node_modules/], loader: 'babel-loader', options: { - plugins: ['@babel/plugin-transform-async-to-generator'], + plugins: [ + '@babel/plugin-transform-async-to-generator', + '@babel/plugin-proposal-class-properties'], presets: ['@babel/preset-react'] }, test: /\.(js|jsx)$/