/** * List sensor feature are grouped * * @return array|null $this->group_sensor_features */ public function getGroupSensorsFeaturesList() { if (!$this->group_sensor_features) { $handlers = SensorDBHandler::getHandlers('aws'); $rs_data = array(); if ($handlers) { $measurement_codes = array(); foreach ($handlers as $handler) { $sensor_features = SensorHandler::create($handler->handler_id_code)->getAwsGraphFeatures(); foreach ($sensor_features as $v) { if ($v['measurement_type_code']) { $measurement_codes[] = $v['measurement_type_code']; } } // get stations $stations = array(); $station_ids = array(); $cssClass = ""; if (count($handler->sensors)) { foreach ($handler->sensors as $sensor) { $station = array(); $station['station_id_code'] = $sensor->station->station_id_code; $station['station_id'] = $sensor->station->station_id; $station['color'] = $sensor->station->color; $stations[$station['station_id']] = $station; $station_ids[$station['station_id']] = $station['station_id']; } $stations = array_values($stations); $station_ids = array_values($station_ids); $cssClass = implode('-station ', $station_ids); $cssClass .= '-station '; array_multisort($stations, SORT_STRING, $stations); } $this->group_sensor_features[$handler->handler_id_code] = ['name' => $handler->display_name, 'sensor_features' => $sensor_features, 'stations' => $stations, 'class' => $cssClass]; } // Calculates $this->group_sensor_features['Temperature']['sensor_features']['calc_1'] = ['feature_name' => 'Dew Point, C degree']; $this->group_sensor_features['Pressure']['sensor_features']['calc_2'] = ['feature_name' => 'Pressure MSL, hPa']; // Measurement $sql = "SELECT `t3`.code, `t5`.`short_name`, `t5`.`full_name`\n FROM `" . RefbookMeasurementType::model()->tableName() . "` `t3`\n LEFT JOIN `" . RefbookMeasurementTypeMetric::model()->tableName() . "` `t4` ON `t4`.`measurement_type_id` = `t3`.`measurement_type_id` AND `t4`.`is_main` = 1\n LEFT JOIN `" . RefbookMetric::model()->tableName() . "` `t5` ON `t5`.`metric_id` = `t4`.`metric_id`\n WHERE `t3`.`code` IN ('" . implode("','", $measurement_codes) . "')"; $rs = CStubActiveRecord::getDbConnect(true)->createCommand($sql)->queryAll(); if ($rs) { $rs_data = CHtml::listData($rs, 'code', 'short_name'); } $wd_ws_station_params['stations'] = array(); $wd_ws_station_params['class'] = ''; foreach ($this->group_sensor_features as $handler_id_code => &$group) { if (in_array($handler_id_code, ['WindDirection', 'WindSpeed']) && in_array('WindSpeed', array_keys($this->group_sensor_features)) && in_array('WindDirection', array_keys($this->group_sensor_features))) { $station_ids_temp = array(); foreach ($wd_ws_station_params['stations'] as $wd_ws_station) { $station_ids_temp[] = $wd_ws_station['station_id']; } foreach ($group['stations'] as $station) { if (!in_array($station['station_id'], $station_ids_temp)) { $wd_ws_station_params['stations'][] = $station; } } $station_ids = array(); foreach ($wd_ws_station_params['stations'] as $wd_ws_station) { $station_ids[] = $wd_ws_station['station_id']; } $wd_ws_station_params['class'] = implode('-station ', $station_ids) . '-station '; } if (in_array($handler_id_code, ['TemperatureWater', 'TemperatureSoil'])) { foreach ($group['sensor_features'] as $key => $value) { $group['sensor_features'][$key] = $group['name'] . ($rs_data[$value['measurement_type_code']] ? ', ' . $rs_data[$value['measurement_type_code']] : ''); } } else { foreach ($group['sensor_features'] as $key => $value) { $group['sensor_features'][$key] = $value['feature_name'] . ($rs_data[$value['measurement_type_code']] ? ', ' . $rs_data[$value['measurement_type_code']] : ''); } } } } /** * Load custom sensor feature */ if (count($this->custom_sensor_features)) { $this->group_sensor_features['custom'] = ['name' => 'Custom', 'sensor_features' => $this->custom_sensor_features, 'stations' => $wd_ws_station_params['stations'], 'class' => $wd_ws_station_params['class']]; } } return (array) $this->group_sensor_features; }
> <?php echo CHtml::link('Sensors', array('admin/sensors', 'station_id' => $station->station_id)); ?> </div> </div> </div> <div class="middlenarrow"> <h1>Sensors <?php echo $station->station_id_code; ?> </h1> <?php echo CHtml::dropDownList('handler_id', 0, CHtml::listData(SensorDBHandler::getHandlers($station->station_type), 'handler_id', 'display_name'), array('id' => 'select_handler_id')); ?> <?php echo CHtml::button('Add', array('onclick' => 'openAddForm($("#select_handler_id").val())')); ?> <?php if (in_array($station->station_type, array('aws', 'awos')) && is_array($calculations)) { echo ' | Add/ Edit Calculations Parameters:'; foreach ($calculations as $calculation) { ?> <input type="button" value="<?php echo $calculation->display_name; ?> " onclick="document.location.href='<?php