$value) { switch ($var) { case "group": case "group_id": $values = get_group_entities($value); $sql .= generate_query_values_and($values, 'printersupplies.supply_id'); break; case 'device_group_id': case 'device_group': $values = get_group_entities($value, 'device'); $sql .= generate_query_values_and($values, 'printersupplies.device_id'); break; case "device": case "device_id": $sql .= generate_query_values_and($value, 'printersupplies.device_id'); break; case "supply": case "supply_type"; $sql .= generate_query_values_and($value, 'printersupplies.supply_type'); break; case "colour": case "supply_colour"; $sql .= generate_query_values_and($value, 'supply_colour'); break; case "descr": case "supply_descr"; $sql .= generate_query_values_and($value, 'supply_descr', '%LIKE%'); break; } } return $sql; } function print_printersupplies_table($vars) { $supplies = []; $query = build_printersupplies_query($vars); foreach (dbFetchRows($query) as $supply) { global $cache; if ($device = device_by_id_cache($supply['device_id'])) { $supply['hostname'] = $device[$supply['device_id']]['hostname']; $supply['html_row_class'] = $device[$supply['device_id']]['html_row_class']; $supplies[] = $supply; } } $supplies = array_sort_by($supplies, 'hostname', SORT_ASC, SORT_STRING, 'supply_descr', SORT_ASC, SORT_STRING); $supplies_count = count($supplies); echo generate_box_open(); // Pagination $pagination_html = pagination($vars, $supplies_count); echo $pagination_html; if ($vars['pageno']) { $supplies = array_chunk($supplies, $vars['pagesize']); $supplies = $supplies[$vars['pageno'] - 1]; } // End Pagination if ($vars['view'] == "graphs") { $stripe_class = "table-striped-two"; } else { $stripe_class = "table-striped"; } // Allow the table to be printed headerless for use in some places. if ($vars['headerless'] != TRUE) { echo(''); echo(' '); echo ''; echo ''; if ($vars['page'] != "device" && $vars['popup'] != TRUE) { echo(' '); } echo ''; if (!isset($vars['supply'])) { echo ''; } echo ''; echo ''; echo ''; echo ''; echo ''; } foreach ($supplies as $supply) { print_printersupplies_row($supply, $vars); } echo("
DeviceTonerTypeLevelRemaining
"); echo generate_box_close(); echo $pagination_html; } function print_printersupplies_row($supply, $vars) { echo generate_printersupplies_row($supply, $vars); } function generate_printersupplies_row($supply, $vars) { $graph_type = "printersupply_usage"; $table_cols = 5; $total = $supply['supply_capacity']; $perc = $supply['supply_value']; $graph_array['type'] = $graph_type; $graph_array['id'] = $supply['supply_id']; $graph_array['from'] = get_time('day'); $graph_array['to'] = get_time(); $graph_array['height'] = "20"; $graph_array['width'] = "80"; if ($supply['supply_colour'] != '') { $background = toner_to_colour($supply['supply_colour'], $perc); } else { $background = toner_to_colour($supply['supply_descr'], $perc); } /// FIXME - popup for printersupply entity. $output = ''; $output .= ''; if ($vars['popup'] == TRUE) { $output .= '' . get_icon($GLOBALS['config']['entities']['printersupply']['icon']) . ''; } else { //$output .= ''; } if ($vars['page'] != "device" && $vars['popup'] != TRUE) { $output .= '' . generate_device_link($supply) . ''; $table_cols++; } $output .= '' . generate_entity_link('printersupply', $supply) . ''; if (!isset($vars['supply'])) { $output .= '' . nicecase($supply['supply_type']) . ''; } $output .= '' . generate_graph_popup($graph_array) . ''; $output .= '' . print_percentage_bar(400, 20, $perc, $perc . '%', 'ffffff', $background['right'], NULL, "ffffff", $background['left']) . ''; if ($vars['popup'] != TRUE) { $output .= '' . $perc . '%'; } $output .= ''; if ($vars['view'] == "graphs") { $output .= ''; $output .= ''; $output .= ''; unset($graph_array['height'], $graph_array['width'], $graph_array['legend']); $graph_array['to'] = get_time(); $graph_array['id'] = $supply['supply_id']; $graph_array['type'] = $graph_type; $output .= generate_graph_row($graph_array, TRUE); $output .= ""; } # endif graphs return $output; } function print_printersupplies_form($vars, $single_device = FALSE) { global $config; $form = ['type' => 'rows', 'space' => '10px', 'submit_by_key' => TRUE, 'url' => generate_url($vars)]; $form_items = []; if ($single_device) { // Single device, just hidden field $form['row'][0]['device_id'] = [ 'type' => 'hidden', 'name' => 'Device', 'value' => $vars['device_id'], 'grid' => 2, 'width' => '100%']; } else { $form_items['devices'] = generate_form_values('device', dbFetchColumn('SELECT DISTINCT `device_id` FROM `printersupplies`')); $form['row'][0]['device_id'] = [ 'type' => 'multiselect', 'name' => 'Device', 'value' => $vars['device_id'], 'grid' => 2, 'width' => '100%', //'180px', 'values' => $form_items['devices']]; } //$sensor_permitted = generate_query_permitted(array('device', 'sensor')); $form['row'][0]['supply_descr'] = [ 'type' => 'text', 'placeholder' => 'Toner', 'width' => '100%', //'180px', 'grid' => 3, 'value' => $vars['status_descr']]; foreach (['supply_colour' => 'Colour', 'supply_type' => 'Type'] as $param => $param_name) { $sql = 'SELECT DISTINCT `' . $param . '` FROM `printersupplies` WHERE ' . $GLOBALS['cache']['where']['devices_permitted']; if ($entries = dbFetchColumn($sql)) { asort($entries); } foreach ($entries as $entry) { if (safe_empty($entry)) { $entry = OBS_VAR_UNSET; } $name = nicecase($entry); $form_items[$param][$entry] = $name; } $form['row'][0][$param] = [ 'type' => 'multiselect', 'name' => $param_name, 'width' => '100%', //'180px', 'grid' => $param === 'supply_colour' ? 1 : 2, 'value' => $vars[$param], 'values' => $form_items[$param]]; } // Groups foreach (get_type_groups('printersupply') as $entry) { $form_items['group'][$entry['group_id']] = $entry['group_name']; } $form['row'][0]['group'] = [ 'community' => FALSE, 'type' => 'multiselect', 'name' => 'Select Groups', 'width' => '100%', //'180px', 'grid' => 2, 'value' => $vars['group'], 'values' => $form_items['group']]; $form['row'][0]['search'] = [ 'type' => 'submit', 'grid' => 2, //'name' => 'Search', //'icon' => 'icon-search', 'right' => TRUE, ]; // Show search form echo ''; // Custom panel form $panel_form = ['type' => 'rows', 'title' => 'Search Sensors', 'space' => '10px', //'brand' => NULL, //'class' => '', 'submit_by_key' => TRUE, 'url' => generate_url($vars)]; // Clean grids foreach ($form['row'] as $row => $rows) { foreach (array_keys($rows) as $param) { if (isset($form['row'][$row][$param]['grid'])) { unset($form['row'][$row][$param]['grid']); } } } // Copy forms $panel_form['row'][0]['device_id'] = $form['row'][0]['device_id']; $panel_form['row'][0]['group'] = $form['row'][0]['group']; $panel_form['row'][1]['supply_colour'] = $form['row'][0]['supply_colour']; $panel_form['row'][1]['supply_type'] = $form['row'][0]['supply_type']; //$panel_form['row'][2]['measured_state'] = $form['row'][0]['measured_state']; //$panel_form['row'][2]['group'] = $form['row'][1]['group']; $panel_form['row'][3]['supply_descr'] = $form['row'][0]['supply_descr']; //$panel_form['row'][5]['sort'] = $form['row'][0]['sort']; $panel_form['row'][5]['search'] = $form['row'][0]['search']; // Register custom panel register_html_panel(generate_form($panel_form)); } // EOF