private function fillTable() { // iterate sensor data foreach ($this->dataArray as $time => $val) { // copy table row and fill in sensor data for one timestamp $this->contentTemplate->copyCode('tableRow'); // replace date and time $this->contentTemplate->tplReplaceOnce('t', date(translate('php_time_format'), $time)); // iterate sensors foreach ($this->sensors as $sensor) { // if there is no data, show a "-" if (floatval($val[$sensor]) == 0.0) { $val[$sensor] = '-'; } $this->contentTemplate->tplReplaceOnce($sensor, $val[$sensor]); // mark outliers with a hint box $outlierTemplate = new Template(); if ($this->outliers[$sensor][$time] && $this->sensitivity != 0) { $outlierTemplate->readTpl('table_outlier_box'); if ($this->interpolateOutliers) { $replaceArray = array('sensor' => $sensor, 'text' => 'i', 'css_color' => 'success', 'css_style' => 'interpolated', 'time' => $time, 'hint' => translate('value_is_interpolated')); } else { $replaceArray = array('sensor' => $sensor, 'text' => '!', 'css_color' => 'error', 'css_style' => '', 'time' => $time, 'hint' => translate('value_could_be_an_outlier')); } $outlierTemplate->tplMultipleReplace($replaceArray); } // replace outlier hint box $this->contentTemplate->tplReplaceOnce($sensor . 'Outlier', $outlierTemplate->getTpl()); } } // delete the last row $this->contentTemplate->cleanCode('tableRow'); }