From 228053483aaa78dfe3ab8d8984772b4bcbfd6785 Mon Sep 17 00:00:00 2001 From: Kristoffer Lind Date: Thu, 20 Dec 2018 15:12:11 +0100 Subject: [PATCH] refactor: extract header-wrapper --- src/header-wrapper.js | 336 +++++++++++++++++++++++++++++++++++++ src/paint.js | 379 ++++++------------------------------------ 2 files changed, 383 insertions(+), 332 deletions(-) create mode 100644 src/header-wrapper.js diff --git a/src/header-wrapper.js b/src/header-wrapper.js new file mode 100644 index 0000000..00a11b6 --- /dev/null +++ b/src/header-wrapper.js @@ -0,0 +1,336 @@ +import $ from 'jquery'; +import { onlyUnique } from './utilities'; + +export function generateHeaderWrapper ( + $element, + layout, + component, + colors +) { + var nMeasAux = 0; + var sufixWrap = ''; + var vMaxLoops = layout.maxloops; + var vErrorMessage = layout.errormessage; + var vDynamicColorHeader = 'vColLib' + layout.HeaderColorSchema; + var vHeaderColorSchema = colors[vDynamicColorHeader]; + var vExportToExcel = layout.allowexportxls; + var vHeaderColorText = layout.HeaderTextColorSchema; + var vHeaderAlign = layout.HeaderAlign; + var vHeaderAlignText = ''; + switch (vHeaderAlign) { + case 1: + vHeaderAlignText = 'left'; + break; + case 2: + vHeaderAlignText = 'center'; + break; + case 3: + vHeaderAlignText = 'right'; + break; + } + var vLetterSizeHeader = 0; + switch (layout.lettersizeheader) { + case 1: + vLetterSizeHeader = -2; + break; + case 2: + vLetterSizeHeader = 0; + break; + case 3: + vLetterSizeHeader = 2; + break; + } + var vDimName = ''; + var ConceptMatrixFirst = new Array(); + var ConceptMatrixSecond = new Array(); + var SecondHeaderLength = 0; + var LabelsArray = new Array(); + var ExtraLabelsArray = new Array(); + var vExtraLabel = ''; + var vExcelButtonCode = ''; + var nRows = component.backendApi.getRowCount(); + var ArrayGetSelectedCount = new Array(); + var vNumDims = 0; + var vNumMeasures = 0; + var vNumMeasures2 = 0; + var MeasuresFormat = new Array(); + var sufixCells = ''; + switch (layout.columnwidthslider) { + case 1: + sufixCells += '-s'; + break; + case 2: + sufixCells += ''; + break; + case 3: + sufixCells += '-l'; + break; + default: + sufixCells += ''; + break; + } + var dim_count = layout.qHyperCube.qDimensionInfo.length; + var measure_count = layout.qHyperCube.qMeasureInfo.length; + var vSeparatorCols = layout.separatorcols; + if (dim_count == 1) { + vSeparatorCols = false; + } + var vFontFamily = layout.FontFamily; + var lastrow = 0; + var ConceptMatrix = new Array(); + var ConceptMatrixRowElem = new Array(); + var ConceptMatrixColElem = new Array(); + var ConceptMatrixColElemTable = new Array(); + var ConceptMatrixPivot = new Array(); + var ConceptMatrixFirstClean = new Array(); + var vLetterSize = 0; + switch (layout.lettersize) { + case 1: + vLetterSize = -2; + break; + case 2: + vLetterSize = -1; + break; + case 3: + vLetterSize = 2; + break; + } + + let html = ''; + html += "
"; + + //render titles + $.each(component.backendApi.getDimensionInfos(), function (e, t) { + ArrayGetSelectedCount.push(t.qStateCounts.qSelected); + vDimName = t.qFallbackTitle; + if (vNumDims == 0) { + LabelsArray.push(vDimName); + } + vNumDims++; + if (dim_count == 1) { + if (vExportToExcel) { + vExcelButtonCode = ''; + } else { + vExcelButtonCode = ''; + } + html += ''; + } + }); + $.each(component.backendApi.getMeasureInfos(), function (e, t) { + vDimName = t.qFallbackTitle; + LabelsArray.push(vDimName); + var mfor = ''; + + if (t.qNumFormat.qType == 'U' || t.qNumFormat.qFmt == '##############') { + mfor = '#.##0'; //in case of undefined + } else { + if (t.qNumFormat.qType == 'R') { + mfor = t.qNumFormat.qFmt; + mfor = mfor.replace(/(|)/gi, ''); + } else { + mfor = t.qNumFormat.qFmt; + } + } + + MeasuresFormat.push(mfor); + + switch (mfor.substr(mfor.length - 1)) { + case 'm': + vExtraLabel = ' (M)'; + ExtraLabelsArray.push(' (M)'); + break; + case 'M': + vExtraLabel = ' (M)'; + ExtraLabelsArray.push(' (M)'); + break; + case 'k': + vExtraLabel = ' (k)'; + ExtraLabelsArray.push(' (k)'); + break; + case 'K': + vExtraLabel = ' (k)'; + ExtraLabelsArray.push(' (k)'); + break; + default: + vExtraLabel = ''; + ExtraLabelsArray.push(''); + break; + } + vNumMeasures++; + if (dim_count == 1) { + if (((t.qFallbackTitle + vExtraLabel).length > 11 && vLetterSizeHeader == 0) + || ((t.qFallbackTitle + vExtraLabel).length > 12 && vLetterSizeHeader == -2)) { + sufixWrap = '70'; + } else { + sufixWrap = 'Empty'; + } + html += ''; + } + }); + + //order the info in particular arrays + component.backendApi.eachDataRow(function (t, a) { + lastrow = t; + + var vNumMeasuresPlus = vNumMeasures + 1; + + ConceptMatrix[t] = new Array(); + ConceptMatrix[t][0] = a[0].qText; + + ConceptMatrixFirst[t] = a[0].qText; + ConceptMatrixRowElem[t] = a[0].qElemNumber; + var nMeasures = 0; + if (vNumDims == 1) { + for (nMeasures = 1; nMeasures <= vNumMeasures; nMeasures++) { + ConceptMatrix[t][nMeasures] = a[nMeasures].qNum; + } + } else { + ConceptMatrix[t][1] = a[1].qText; + ConceptMatrixColElem[t] = a[1].qElemNumber; + ConceptMatrixSecond[t] = a[1].qText; + // set the hipercube in a plain array without pivoting + for (nMeasures = 2; nMeasures <= vNumMeasuresPlus; nMeasures++) { + ConceptMatrix[t][nMeasures] = a[nMeasures].qNum; + } + } + }); + if (nRows > (lastrow + 1) && nRows <= (vMaxLoops * 1000)) { + var requestPage = [{ + qTop: lastrow + 1, + qLeft: 0, + qWidth: 10, //should be # of columns + qHeight: Math.min(1000, nRows - lastrow) + }]; + + component.backendApi.getData(requestPage).then(function () { + component.paint($element); + }); + } + + if (nRows >= (vMaxLoops * 1000)) { + alert(vErrorMessage); + } + + // particular headers in case you have more than 1 dimension + if (vNumDims == 2) { + //new array with unique values for 2nd dim + + var SecondHeader = ConceptMatrixSecond.filter(onlyUnique);//second dimension concepts + ConceptMatrixRowElem = ConceptMatrixRowElem.filter(onlyUnique);//first dimension concepts + ConceptMatrixColElem = ConceptMatrixColElem.filter(onlyUnique);//dimension code for further selections + var eo = ConceptMatrixColElem.length; + var vLoopColsMeasures = 1; + ConceptMatrixColElemTable[0] = ConceptMatrixColElem[0]; + for (var xx = 0; xx < eo; xx++) { + if (vSeparatorCols && xx > 0) { + ConceptMatrixColElemTable[vLoopColsMeasures] = ConceptMatrixColElem[xx]; + vLoopColsMeasures++; + } + + for (var xxx = 0; xxx < vNumMeasures; xxx++) { + ConceptMatrixColElemTable[vLoopColsMeasures] = ConceptMatrixColElem[xx]; + vLoopColsMeasures++; + } + } + + ConceptMatrixFirstClean = ConceptMatrixFirst.filter(onlyUnique); + SecondHeaderLength = SecondHeader.length; + vNumMeasures2 = vNumMeasures * SecondHeaderLength; + + if (measure_count > 1) { + if (vExportToExcel) { + vExcelButtonCode = ''; + } else { + vExcelButtonCode = ''; + } + + html += ''; + + for (var nSecond = 0; nSecond < SecondHeaderLength; nSecond++) {//second dimension header + if (vSeparatorCols && nSecond > 0) { + html += ''; + } + + html += ''; + } + html += ''; + + html += ''; + for (var nSecond2 = 0; nSecond2 < SecondHeaderLength; nSecond2++) {//metrics label header + if (vSeparatorCols && nSecond2 > 0) { + html += ''; + } + for (var nMeas = 1; nMeas <= measure_count; nMeas++) { + nMeasAux = nMeas - 1; + if (MeasuresFormat[nMeasAux].substring(MeasuresFormat[nMeasAux].length - 1) == '%') { + html += ''; + } else { + html += ''; + } + } + } + } else { + if (vExportToExcel) { + vExcelButtonCode = ''; + } else { + vExcelButtonCode = ''; + } + html += ''; + + for (var nSecond = 0; nSecond < SecondHeaderLength; nSecond++) { + if (vSeparatorCols && nSecond > 0) { + html += ''; + } + if ((SecondHeader[nSecond].length > 11 && vLetterSizeHeader == 0) + || (SecondHeader[nSecond].length > 12 && vLetterSizeHeader == -2)) { + sufixWrap = '70'; + } else { + sufixWrap = 'Empty'; + } + html += ''; + } + } + + // in this loop I load the final pivot matrix + var ConceptPos = 0; + var nMeas3 = 0; + var vHeaderIndex = 0; + var MeasurePos = 0; + for (var nPivotElems = 0; nPivotElems <= lastrow; nPivotElems++) { + ConceptMatrixPivot[nPivotElems] = new Array(); + ConceptPos = ConceptMatrixFirstClean.indexOf(ConceptMatrix[nPivotElems][0]); + ConceptMatrixPivot[ConceptPos][0] = ConceptMatrix[nPivotElems][0]; + + for (var nMeas2 = 1; nMeas2 <= measure_count; nMeas2++) { + nMeas3 = nMeas2 + 1; + vHeaderIndex = (SecondHeader.indexOf(ConceptMatrix[nPivotElems][1]) + 1); + MeasurePos = (vHeaderIndex * measure_count) + (nMeas2 - measure_count); + ConceptMatrixPivot[ConceptPos][MeasurePos] = ConceptMatrix[nPivotElems][nMeas3]; + } + } + } + html += ''; + html += '
' + vExcelButtonCode + t.qFallbackTitle + '' + t.qFallbackTitle + vExtraLabel + '' + vExcelButtonCode + LabelsArray[0] + '' + '*' + '' + SecondHeader[nSecond] + '
' + '*' + '' + LabelsArray[nMeas] + ExtraLabelsArray[nMeas - 1] + '' + LabelsArray[nMeas] + ExtraLabelsArray[nMeas - 1] + '' + vExcelButtonCode + LabelsArray[0] + ExtraLabelsArray[0] + '' + '*' + '' + SecondHeader[nSecond] + '
'; + + return { + html, + nMeasAux, + ArrayGetSelectedCount, + vNumDims, + measure_count, + MeasuresFormat, + vNumMeasures, + vNumMeasures2, + sufixCells, + vFontFamily, + lastrow, + ConceptMatrix, + ConceptMatrixColElem, + ConceptMatrixColElemTable, + ConceptMatrixRowElem, + ConceptMatrixFirstClean, + vSeparatorCols, + vLetterSize, + ConceptMatrixPivot + }; +} diff --git a/src/paint.js b/src/paint.js index 9137e27..3581766 100644 --- a/src/paint.js +++ b/src/paint.js @@ -1,43 +1,14 @@ import $ from 'jquery'; -import { addSeparators, onlyUnique } from './utilities'; +import { addSeparators } from './utilities'; import { ApplyPreMask } from './masking'; import { enableExcelExport } from './excel-export'; +import { generateHeaderWrapper } from './header-wrapper'; export default function paint($element, layout, component) { - var sufixCells = ''; - var sufixWrap = ''; - switch (layout.columnwidthslider) { - case 1: - sufixCells += '-s'; - break; - case 2: - sufixCells += ''; - break; - case 3: - sufixCells += '-l'; - break; - default: - sufixCells += ''; - break; - } - - var dim_count = layout.qHyperCube.qDimensionInfo.length; - var measure_count = layout.qHyperCube.qMeasureInfo.length; - - var vMaxLoops = layout.maxloops; - var vErrorMessage = layout.errormessage; - - var vSeparatorCols = layout.separatorcols; - if (dim_count == 1) { - vSeparatorCols = false; - } - var vCustomFileBool = layout.customfilebool; var vCustomFile = layout.customfile; - var vPadding = layout.indentbool; var vPaddingText = ''; - var vGlobalComas = 0; var vGlobalComas2 = 0; var vGlobalComment = 0; @@ -46,8 +17,6 @@ export default function paint($element, layout, component) { var vComas = 0; var vMedium = false; - var vHeaderAlign = layout.HeaderAlign; - const colors = { vColLibClean: layout.collibclean, vColLibSoft: layout.collibsoft, @@ -71,61 +40,17 @@ export default function paint($element, layout, component) { vColLibCustomP: layout.collibcustomp }; - var vDynamicColorHeader = 'vColLib' + layout.HeaderColorSchema; var vDynamicColorBody = 'vColLib' + layout.ColorSchema; var vDynamicColorBodyP = 'vColLib' + layout.ColorSchema + 'P'; - var vHeaderColorSchema = colors[vDynamicColorHeader]; var vColorSchema = colors[vDynamicColorBody]; var vColorSchemaP = colors[vDynamicColorBodyP]; - var vExportToExcel = layout.allowexportxls; - var vFontFamily = layout.FontFamily; var vFontSize = ''; var vColorText = layout.BodyTextColorSchema; var vDivide = 1; - var nMeasAux = 0; - var vHeaderColorText = layout.HeaderTextColorSchema; - - var vHeaderAlignText = ''; - switch (vHeaderAlign) { - case 1: - vHeaderAlignText = 'left'; - break; - case 2: - vHeaderAlignText = 'center'; - break; - case 3: - vHeaderAlignText = 'right'; - break; - } - - var vLetterSize = 0; - var vLetterSizeHeader = 0; - switch (layout.lettersizeheader) { - case 1: - vLetterSizeHeader = -2; - break; - case 2: - vLetterSizeHeader = 0; - break; - case 3: - vLetterSizeHeader = 2; - break; - } - switch (layout.lettersize) { - case 1: - vLetterSize = -2; - break; - case 2: - vLetterSize = -1; - break; - case 3: - vLetterSize = 2; - break; - } var vSymbolForNulls = layout.symbolfornulls; @@ -159,255 +84,45 @@ export default function paint($element, layout, component) { var vCritic = layout.metricsstatus1; var vMMedium = layout.metricsstatus2; - var vDimName = ''; var CustomArray = new Array(); var CustomArrayBasic = new Array(); var vNumCustomHeaders = 0; - var ConceptMatrix = new Array(); - var ConceptMatrixFirst = new Array(); - var ConceptMatrixRowElem = new Array(); - var ConceptMatrixSecond = new Array(); - var ConceptMatrixColElem = new Array(); - var ConceptMatrixColElemTable = new Array(); - var ConceptMatrixPivot = new Array(); - var ArrayGetSelectedCount = new Array(); - var ConceptMatrixFirstClean = new Array(); var vColumnText = ''; var vColumnNum = ''; var vMaskNum = 0; var StyleTags = ''; - var vNumDims = 0; - var vNumMeasures = 0; - var vNumMeasures2 = 0; - var SecondHeaderLength = 0; - var MeasuresFormat = new Array(); - var LabelsArray = new Array(); - var ExtraLabelsArray = new Array(); - var vExtraLabel = ''; - var vExcelButtonCode = ''; + let { + html: headerWrapperHTML, + nMeasAux, + ArrayGetSelectedCount, + vNumDims, + measure_count, + MeasuresFormat, + vNumMeasures, + vNumMeasures2, + sufixCells, + vFontFamily, + lastrow, + ConceptMatrix, + ConceptMatrixColElem, + ConceptMatrixColElemTable, + ConceptMatrixRowElem, + ConceptMatrixFirstClean, + vSeparatorCols, + vLetterSize, + ConceptMatrixPivot + } = generateHeaderWrapper( + $element, + layout, + component, + colors + ); + let html = headerWrapperHTML; - var lastrow = 0; - var f = ''; - - var nRows = component.backendApi.getRowCount(); - f += "
"; - - //render titles - $.each(component.backendApi.getDimensionInfos(), function (e, t) { - ArrayGetSelectedCount.push(t.qStateCounts.qSelected); - vDimName = t.qFallbackTitle; - if (vNumDims == 0) { - LabelsArray.push(vDimName); - } - vNumDims++; - if (dim_count == 1) { - if (vExportToExcel) { - vExcelButtonCode = ''; - } else { - vExcelButtonCode = ''; - } - f += ''; - } - }); - $.each(component.backendApi.getMeasureInfos(), function (e, t) { - vDimName = t.qFallbackTitle; - LabelsArray.push(vDimName); - var mfor = ''; - - if (t.qNumFormat.qType == 'U' || t.qNumFormat.qFmt == '##############') { - mfor = '#.##0'; //in case of undefined - } else { - if (t.qNumFormat.qType == 'R') { - mfor = t.qNumFormat.qFmt; - mfor = mfor.replace(/(|)/gi, ''); - } else { - mfor = t.qNumFormat.qFmt; - } - } - - MeasuresFormat.push(mfor); - - switch (mfor.substr(mfor.length - 1)) { - case 'm': - vExtraLabel = ' (M)'; - ExtraLabelsArray.push(' (M)'); - break; - case 'M': - vExtraLabel = ' (M)'; - ExtraLabelsArray.push(' (M)'); - break; - case 'k': - vExtraLabel = ' (k)'; - ExtraLabelsArray.push(' (k)'); - break; - case 'K': - vExtraLabel = ' (k)'; - ExtraLabelsArray.push(' (k)'); - break; - default: - vExtraLabel = ''; - ExtraLabelsArray.push(''); - break; - } - vNumMeasures++; - if (dim_count == 1) { - if (((t.qFallbackTitle + vExtraLabel).length > 11 && vLetterSizeHeader == 0) - || ((t.qFallbackTitle + vExtraLabel).length > 12 && vLetterSizeHeader == -2)) { - sufixWrap = '70'; - } else { - sufixWrap = 'Empty'; - } - f += ''; - } - }); - - //order the info in particular arrays - component.backendApi.eachDataRow(function (t, a) { - lastrow = t; - - var vNumMeasuresPlus = vNumMeasures + 1; - - ConceptMatrix[t] = new Array(); - ConceptMatrix[t][0] = a[0].qText; - - ConceptMatrixFirst[t] = a[0].qText; - ConceptMatrixRowElem[t] = a[0].qElemNumber; - var nMeasures = 0; - if (vNumDims == 1) { - for (nMeasures = 1; nMeasures <= vNumMeasures; nMeasures++) { - ConceptMatrix[t][nMeasures] = a[nMeasures].qNum; - } - } else { - ConceptMatrix[t][1] = a[1].qText; - ConceptMatrixColElem[t] = a[1].qElemNumber; - ConceptMatrixSecond[t] = a[1].qText; - // set the hipercube in a plain array without pivoting - for (nMeasures = 2; nMeasures <= vNumMeasuresPlus; nMeasures++) { - ConceptMatrix[t][nMeasures] = a[nMeasures].qNum; - } - } - }); - if (nRows > (lastrow + 1) && nRows <= (vMaxLoops * 1000)) { - var requestPage = [{ - qTop: lastrow + 1, - qLeft: 0, - qWidth: 10, //should be # of columns - qHeight: Math.min(1000, nRows - lastrow) - }]; - - component.backendApi.getData(requestPage).then(function () { - component.paint($element); - }); - } - - if (nRows >= (vMaxLoops * 1000)) { - alert(vErrorMessage); - } - - // particular headers in case you have more than 1 dimension - if (vNumDims == 2) { - //new array with unique values for 2nd dim - - var SecondHeader = ConceptMatrixSecond.filter(onlyUnique);//second dimension concepts - ConceptMatrixRowElem = ConceptMatrixRowElem.filter(onlyUnique);//first dimension concepts - ConceptMatrixColElem = ConceptMatrixColElem.filter(onlyUnique);//dimension code for further selections - var eo = ConceptMatrixColElem.length; - var vLoopColsMeasures = 1; - ConceptMatrixColElemTable[0] = ConceptMatrixColElem[0]; - for (var xx = 0; xx < eo; xx++) { - if (vSeparatorCols && xx > 0) { - ConceptMatrixColElemTable[vLoopColsMeasures] = ConceptMatrixColElem[xx]; - vLoopColsMeasures++; - } - - for (var xxx = 0; xxx < vNumMeasures; xxx++) { - ConceptMatrixColElemTable[vLoopColsMeasures] = ConceptMatrixColElem[xx]; - vLoopColsMeasures++; - } - } - - ConceptMatrixFirstClean = ConceptMatrixFirst.filter(onlyUnique); - SecondHeaderLength = SecondHeader.length; - vNumMeasures2 = vNumMeasures * SecondHeaderLength; - - if (measure_count > 1) { - if (vExportToExcel) { - vExcelButtonCode = ''; - } else { - vExcelButtonCode = ''; - } - - f += ''; - - for (var nSecond = 0; nSecond < SecondHeaderLength; nSecond++) {//second dimension header - if (vSeparatorCols && nSecond > 0) { - f += ''; - } - - f += ''; - } - f += ''; - - f += ''; - for (var nSecond2 = 0; nSecond2 < SecondHeaderLength; nSecond2++) {//metrics label header - if (vSeparatorCols && nSecond2 > 0) { - f += ''; - } - for (var nMeas = 1; nMeas <= measure_count; nMeas++) { - nMeasAux = nMeas - 1; - if (MeasuresFormat[nMeasAux].substring(MeasuresFormat[nMeasAux].length - 1) == '%') { - f += ''; - } else { - f += ''; - } - } - } - } else { - if (vExportToExcel) { - vExcelButtonCode = ''; - } else { - vExcelButtonCode = ''; - } - f += ''; - - for (var nSecond = 0; nSecond < SecondHeaderLength; nSecond++) { - if (vSeparatorCols && nSecond > 0) { - f += ''; - } - if ((SecondHeader[nSecond].length > 11 && vLetterSizeHeader == 0) - || (SecondHeader[nSecond].length > 12 && vLetterSizeHeader == -2)) { - sufixWrap = '70'; - } else { - sufixWrap = 'Empty'; - } - f += ''; - } - } - - // in this loop I load the final pivot matrix - var ConceptPos = 0; - var nMeas3 = 0; - var vHeaderIndex = 0; - var MeasurePos = 0; - for (var nPivotElems = 0; nPivotElems <= lastrow; nPivotElems++) { - ConceptMatrixPivot[nPivotElems] = new Array(); - ConceptPos = ConceptMatrixFirstClean.indexOf(ConceptMatrix[nPivotElems][0]); - ConceptMatrixPivot[ConceptPos][0] = ConceptMatrix[nPivotElems][0]; - - for (var nMeas2 = 1; nMeas2 <= measure_count; nMeas2++) { - nMeas3 = nMeas2 + 1; - vHeaderIndex = (SecondHeader.indexOf(ConceptMatrix[nPivotElems][1]) + 1); - MeasurePos = (vHeaderIndex * measure_count) + (nMeas2 - measure_count); - ConceptMatrixPivot[ConceptPos][MeasurePos] = ConceptMatrix[nPivotElems][nMeas3]; - } - } - } - f += ''; - f += '
' + vExcelButtonCode + t.qFallbackTitle + '' + t.qFallbackTitle + vExtraLabel + '' + vExcelButtonCode + LabelsArray[0] + '' + '*' + '' + SecondHeader[nSecond] + '
' + '*' + '' + LabelsArray[nMeas] + ExtraLabelsArray[nMeas - 1] + '' + LabelsArray[nMeas] + ExtraLabelsArray[nMeas - 1] + '' + vExcelButtonCode + LabelsArray[0] + ExtraLabelsArray[0] + '' + '*' + '' + SecondHeader[nSecond] + '
'; - f += "
"; + html += "
"; if (vCustomFileBool && vCustomFile.length > 4) { ReadCustomSchema(); @@ -506,8 +221,8 @@ export default function paint($element, layout, component) { vPaddingText = ''; } - //f += ''; - f += '';//';' + StyleTags + ;width:230px + //html += ''; + html += '';//';' + StyleTags + ;width:230px if (vGlobalComment == 1) { if (vGlobalCommentColor == '') { vGlobalCommentColor = 'white'; @@ -584,13 +299,13 @@ export default function paint($element, layout, component) { vColorSemaphoreText = vColorMetric3Text; } } - f += ''; + html += ''; } else { - f += ''; + html += ''; } } } - f += ''; + html += ''; } } else { var nPivotRows = ConceptMatrixFirstClean.length; @@ -653,7 +368,7 @@ export default function paint($element, layout, component) { } else { vPaddingText = ''; } - f += ''; + html += ''; if (vGlobalComment == 1) { if (vGlobalCommentColor == '') { vGlobalCommentColor = 'white'; @@ -721,7 +436,7 @@ export default function paint($element, layout, component) { } if (vSeparatorCols && nMeasure7 == (measure_count + 1)) { - f += ''; + html += ''; nMeasure7 = 1; } if (nMeasure72 == (measure_count - 1)) { @@ -750,34 +465,34 @@ export default function paint($element, layout, component) { } if (vSpecialF.substring(vSpecialF.length - 1) == '%' && vNumMeasures > 1) { - f += ''; + html += ''; } else { - f += ''; + html += ''; } } else { if (vSpecialF.substring(vSpecialF.length - 1) == '%' && vNumMeasures > 1) { - f += ''; + html += ''; } else { - f += ''; + html += ''; } } } - f += ''; + html += ''; } } } } //render data function RenderData() { - f += '
' + vColumnText + '
' + vPaddingText + vColumnText + '
' + vColumnText + '
' + vPaddingText + vColumnText + '' + vColumnNum + '' + vColumnNum + '' + vColumnNum + '' + vColumnNum + '
' + vPaddingText + vColumnText + '
' + vPaddingText + vColumnText + '' + '*' + '' + '*' + '' + vColumnNum + '' + vColumnNum + '' + vColumnNum + '' + vColumnNum + '' + vColumnNum + '' + vColumnNum + '' + vColumnNum + '' + vColumnNum + '
'; - f += '
'; + html += ''; + html += ''; // freeze header and first column var x = "
"; - x += f; + x += html; x += '
'; x += "
"; - x += f; + x += html; x += '
'; $element.html(x); @@ -893,7 +608,7 @@ export default function paint($element, layout, component) { $(this).toggleClass('selected'); }); - enableExcelExport(layout, f); + enableExcelExport(layout, html); // freeze first column $('.qv-object-content-container').on('scroll', function (t) {