Setup helper classes to handle stroring and formatting data retrieved from the DB, and implemented them in get method of table.php

This commit is contained in:
Tristan Ancelet 2023-05-27 14:27:46 -05:00
parent 849d7d27e0
commit 8b5782c5de
2 changed files with 173 additions and 55 deletions

117
Libraries/table/class.php Normal file
View File

@ -0,0 +1,117 @@
<?php
class Table_Cell {
private $formats = array(
"Normal" => "<div class=\"table_cell\">%s</div>",
"Header" => "<div class=\"table_header\">%s</div>"
);
private $type;
private $value;
public function __construct($value, $type){
$this->set_value($value);
$this->set_type($type);
}
public function set_type($type){
if (array_key_exists($type, $this->formats)){
$this->type = $type;
} else {
exit("The type provided ({$type}) is not defined. ");
}
}
public function set_value($value){
$this->value = $value;
}
public function get_format(){
return $this->formats[$this->type];
}
public function get_html(){
return sprintf($this->formats[$this->type], $this->value);
}
}
class Table_Row {
private $cells = array();
public function add_cell($value, $type){
$cell = new Table_Cell($value, $type);
array_push($this->cells, $cell);
return $cell;
}
public function get_html(){
$output="";
$output="$output<div class=\"table_row\">";
foreach ($this->cells as $cell){
$output="{$output}{$cell->get_html()}";
}
$output="{$output}</div>";
return $output;
}
}
class Table {
private $name;
private $headers;
private $rows = array();
public function __construct($name){
$this->set_name($name);
}
private function add_row(){
$row = new Table_Row();
array_push($this->rows, $row);
return $row;
}
public function set_name($name){
$this->name = $name;
}
public function Load($db, $query_modifier){
$res = $db->query("SELECT * FROM $this->name $query_modifier");
// Getting header row
$col_count=0;
$header_row = $this->add_row();
for ($i = 0; $i < $res->numColumns(); $i++ ){
$value = $res->columnName($i);
$header_row->add_cell($value, "Header");
$col_count++;
}
while ($db_row = $res->fetchArray()){
$row = $this->add_row();
for ($i = 0; $i < $col_count; $i++){
$value = $db_row[$i];
$row->add_cell($value, "Normal");
}
}
}
public function get_html(){
$output="";
$output="{$output}<div class=\"wrapper bordered center_text\">";
$output="{$output}<div class=\"log_table bordered\">";
foreach ($this->rows as $row){
$row_html = $row->get_html();
$output="{$output}{$row_html}";
}
$output="{$output}</div>";
$output="{$output}</div>";
return $output;
}
}
?>

View File

@ -1,4 +1,6 @@
<?php <?php
require("class.php");
function get_main () { function get_main () {
$db = $GLOBALS["db"]; $db = $GLOBALS["db"];
/* /*
@ -18,8 +20,9 @@ function get_main () {
// END: Getting Args if exists // END: Getting Args if exists
switch ($action){
if ($action == "show"){ case "show":
// BEGIN: Get show args
if ( ! array_key_exists("name", $_GET) ){ if ( ! array_key_exists("name", $_GET) ){
echo "A tablename was not provided with the request"; echo "A tablename was not provided with the request";
return 1; return 1;
@ -36,6 +39,7 @@ function get_main () {
if ( array_key_exists("columns", $_GET)){ if ( array_key_exists("columns", $_GET)){
$columns = explode(',', $_GET["columns"]); $columns = explode(',', $_GET["columns"]);
} }
// END: Get show args
$query_modifier=""; $query_modifier="";
if (filter_var($limit, FILTER_VALIDATE_INT)){ if (filter_var($limit, FILTER_VALIDATE_INT)){
@ -46,13 +50,10 @@ function get_main () {
$query_modifier=""; $query_modifier="";
} }
$db = new SQLite3("../../webcron.db");
$res = $db->query("SELECT * FROM $name $query_modifier"); $res = $db->query("SELECT * FROM $name $query_modifier");
echo '<div class="wrapper bordered center_text">'; echo '<div class="wrapper bordered center_text">';
echo '<div class="log_table bordered">'; echo '<div class="log_table bordered">';
echo '<div class="table_row">'; echo '<div class="table_row">';
if ( !empty($columns) ) { if ( !empty($columns) ) {
foreach($columns as $column_name){ foreach($columns as $column_name){
echo "<div class=\"table_header\">{$column_name}</div>"; echo "<div class=\"table_header\">{$column_name}</div>";
@ -65,11 +66,9 @@ function get_main () {
} }
} }
echo '</div>'; echo '</div>';
while ($row = $res->fetchArray()){ while ($row = $res->fetchArray()){
echo "<div class=\"table_row\">"; echo "<div class=\"table_row\">";
if ( !empty($columns) ) { if ( !empty($columns) ) {
foreach($columns as $column_name){ foreach($columns as $column_name){
echo "<div class=\"table_cell\">{$row[$column_name]}</div>"; echo "<div class=\"table_cell\">{$row[$column_name]}</div>";
@ -83,12 +82,14 @@ function get_main () {
} }
echo '</div>'; echo '</div>';
echo '</div>'; echo '</div>';
} else if ($action == "list"){ break;
$res = $db->query("SELECT name FROM sqlite_master WHERE type='table';");
case "list":
$res = $db->query("SELECT name FROM sqlite_master WHERE type='table';");
while ($row = $res->fetchArray()){ while ($row = $res->fetchArray()){
echo "<button onclick='getTable(\"{$row['name']}\")'>{$row['name']}</button><br> "; echo "<button onclick='getTable(\"{$row['name']}\")'>{$row['name']}</button><br> ";
} }
break;
} }
} }