'use strict'; const JV = require('../jpc_value_define'); const strUtil = require('../../public/stringUtil'); const REG1 = new RegExp('\n\r', 'g'); const REG2 = new RegExp('\r\n', 'g'); const REG3 = new RegExp('\n', 'g'); const REG4 = new RegExp('\r', 'g'); const JpcFieldHelper = { getValue: function(dataField, valueIdx) { let rst = ''; if (dataField && (dataField.length > valueIdx) && (valueIdx >= 0)) { rst = dataField[valueIdx]; } // if (typeof rst === 'string') { // rst = rst.replace(REG1, '|').replace(REG2, '|').replace(REG3, '|').replace(REG4, '|'); // } return rst; }, setValue: function(dataField, valueIdx, newValue) { if (dataField && (dataField.length > valueIdx) && (valueIdx >= 0)) { dataField[valueIdx] = newValue; } }, resetSumFormat: function(ref_tab_fields, sum_tab_field) { let rst = false; if (ref_tab_fields && ref_tab_fields.length > 0) { for (const tab_field of ref_tab_fields) { if (tab_field[JV.PROP_FIELD_ID] === sum_tab_field[JV.PROP_FIELD_ID]) { rst = true; if (tab_field[JV.PROP_FORMAT]) { sum_tab_field[JV.PROP_FORMAT] = tab_field[JV.PROP_FORMAT]; } break; } } } return rst; }, resetFormat: function(tab_field, map_field, customizeCfg) { let rst = false; if (map_field && map_field[JV.PROP_PRECISION] && map_field[JV.PROP_PRECISION].type === 'fixed') { const formatStrs = ['#']; const ffStr = (customizeCfg && customizeCfg.fillZero) ? '0' : '#'; for (let idx = 0; idx < parseInt(map_field[JV.PROP_FIXED_PRECISION_AMT]); idx++) { if (idx === 0) { formatStrs.push('.'); } formatStrs.push(ffStr); } if (tab_field[JV.PROP_FORMAT] && tab_field[JV.PROP_FORMAT].indexOf(',') >= 0) { tab_field[JV.PROP_FORMAT] = ',' + formatStrs.join(''); } else { tab_field[JV.PROP_FORMAT] = formatStrs.join(''); } map_field[JV.PROP_FORMAT] = tab_field[JV.PROP_FORMAT]; // 这里顺手把format也赋给map_field,后期统计用得着 rst = true; } else if (tab_field[JV.PROP_FORMAT] && tab_field[JV.PROP_FORMAT].indexOf('#') >= 0 && (customizeCfg && customizeCfg.fillZero)) { tab_field[JV.PROP_FORMAT] = strUtil.replaceAll(tab_field[JV.PROP_FORMAT], '#', '0'); map_field[JV.PROP_FORMAT] = tab_field[JV.PROP_FORMAT]; rst = true; } return rst; }, resetFlexibleFormat: function(tab_field, ref_field_data, flexiblePrecisionRefObj, valueIdx, customizeCfg) { let precisionAmt = 2; if (ref_field_data && flexiblePrecisionRefObj && valueIdx >= 0) { precisionAmt = flexiblePrecisionRefObj['refUnit_' + ref_field_data[valueIdx]]; if (precisionAmt === null || precisionAmt === undefined) precisionAmt = flexiblePrecisionRefObj['refUnit_其他未列单位']; } const formatStrs = ['#.']; const ffStr = (customizeCfg && customizeCfg.fillZero)?'0':'#'; for (let idx = 0; idx < precisionAmt; idx++) { formatStrs.push(ffStr); } if (tab_field[JV.PROP_FORMAT] && tab_field[JV.PROP_FORMAT].indexOf(',') >= 0) { tab_field[JV.PROP_FORMAT] = ',' + formatStrs.join(''); } else { tab_field[JV.PROP_FORMAT] = formatStrs.join(''); } }, decorateValue: function(cell, controls) { if (controls) { const showZero = controls[cell[JV.PROP_CONTROL]][JV.PROP_SHOW_ZERO]; if (showZero && showZero === 'F') { const val = parseFloat(cell[JV.PROP_VALUE]); if (val === 0) { let chkRst = true; if (typeof cell[JV.PROP_VALUE] === 'string' && cell[JV.PROP_VALUE].length > 1) { for (let idx = 0; idx < cell[JV.PROP_VALUE].length; idx++) { if (cell[JV.PROP_VALUE][idx] !== '0' && cell[JV.PROP_VALUE][idx] !== '.') { chkRst = false; break; } } } if (chkRst) cell[JV.PROP_VALUE] = ''; } } } }, findAndPutDataFieldIdx: function (rptTpl, tab_fields, rstFields, rstFieldsIdx, isEx) { // 通过FieldID找到相关映射指标的位置IDX并记录下来,方便后续引用 if (tab_fields) { const DTL_STR = isEx ? JV.NODE_DETAIL_FIELDS_EX : JV.NODE_DETAIL_FIELDS; const detail_fields = rptTpl[JV.NODE_FIELD_MAP][DTL_STR]; for (let i = 0; i < tab_fields.length; i++) { let isFounded = false; for (let j = 0; j < detail_fields.length; j++) { if (tab_fields[i][JV.PROP_FIELD_ID] === detail_fields[j][JV.PROP_ID]) { isFounded = true; if (rstFields) rstFields.push(tab_fields[i]); if (rstFieldsIdx) rstFieldsIdx.push(j); break; } } if (!isFounded) { if (rstFields) rstFields.push(tab_fields[i]); if (rstFieldsIdx) { if (rptTpl[JV.NODE_NO_MAPPING_FIELDS] && rptTpl[JV.NODE_NO_MAPPING_FIELDS].length > 0) { for (const discretField of rptTpl[JV.NODE_NO_MAPPING_FIELDS]) { if (discretField[JV.PROP_ID] === tab_fields[i][JV.PROP_FIELD_ID]) { rstFieldsIdx.push(discretField); isFounded = true; break; } } } else { rstFieldsIdx.push(JV.BLANK_FIELD_INDEX); } } } } } }, findAutoHeightFieldIdx: function(rptTpl, tab_fields, rstFieldsIdx, isEx) { if (tab_fields) { const DTL_STR = isEx ? JV.NODE_DETAIL_FIELDS_EX : JV.NODE_DETAIL_FIELDS; const detail_fields = rptTpl[JV.NODE_FIELD_MAP][DTL_STR]; for (let i = 0; i < tab_fields.length; i++) { if (tab_fields[i][JV.PROP_IS_AUTO_HEIGHT]) { for (let j = 0; j < detail_fields.length; j++) { if (tab_fields[i][JV.PROP_FIELD_ID] === detail_fields[j][JV.PROP_ID]) { const item = []; item[0] = j; item[1] = tab_fields[i]; rstFieldsIdx.push(item); break; } } } } if (!isEx) { const dis_detail_fields = rptTpl[JV.NODE_NO_MAPPING_FIELDS]; for (let i = 0; i < tab_fields.length; i++) { if (tab_fields[i][JV.PROP_IS_AUTO_HEIGHT]) { for (let j = 0; j < dis_detail_fields.length; j++) { if (tab_fields[i][JV.PROP_FIELD_ID] === dis_detail_fields[j][JV.PROP_ID]) { const item = []; item[0] = JV.BLANK_FIELD_INDEX; item[1] = tab_fields[i]; rstFieldsIdx.push(item); break; } } } } } } }, }; module.exports = JpcFieldHelper;