const DataSummary = { _selectFactorId: ['1', '2', '3'], _factorDatas: undefined, /** * 输出一组数据的总结 * 包括均值和范围 * @param factorDatas @see FactorDatas */ summary(elementId, factorDatas) { if (factorDatas) { this._factorDatas = factorDatas; } const summarys = []; for (const key in this._factorDatas.factor) { const f = this._factorDatas.factor[key]; if ( this._selectFactorId.indexOf(f.factorId) == -1 || this.notRequiredFactor(f.factorName) ) continue; const datas = f.datas; const { min, max, avg } = this._avgAndRange(datas); // summarys.set( // f.factorName, // `${f.factorName}均值为 ${avg}μg/m3, 浓度范围为 ${min}-${max}μg/m3` // ); const unit = Util.factorUnit['type0'][f.factorId]; summarys.push( `${f.factorName}: 均值为 ${avg}${unit},范围为 ${min}-${max}${unit}` ); } let html = ''; summarys.forEach((s) => { html += `
${s}
`; }); $('#history_table_summary').html(html); return summarys; }, onChangeFactor(elementId, index, add) { if (add) { this._selectFactorId.push(index); } else { var i = this._selectFactorId.indexOf(index); this._selectFactorId.splice(i, 1); } return this.summary(elementId); }, /** * 不需要显示的监测因子 * @param {*} factorName * @returns */ notRequiredFactor(factorName) { return factorName == 'LNG' || factorName == 'LAT'; }, _avgAndRange(datas) { let min, max; let total = 0; let count = 0; datas.forEach((d) => { if (min == undefined || min > d.factorData) { min = d.factorData; } if (max == undefined || max < d.factorData) { max = d.factorData; } total += d.factorData; count++; }); let avg = 0; if (count > 0) { avg = Math.round((total / count) * 10) / 10; } return { min, max, avg }; }, };