add custom columns filter

This commit is contained in:
Билай Станислав 2024-08-22 13:08:25 +03:00
parent af1b996766
commit 77a306a0f6
3 changed files with 14 additions and 3 deletions

View File

@ -9,12 +9,13 @@ $table = new ListJsonTable($json);
$table->columns([ $table->columns([
"created_at" => [ "created_at" => [
"format" => "date:Y-m-d" "format" => "date:Y-m-d",
'filter' => "date"
], ],
'description' => [ 'description' => [
"format" => "html", "format" => "html",
"style" => ["width" => "300px"], "style" => ["width" => "300px"],
"filter" => '', "filter" => "text",
"value" => function ($cell) { "value" => function ($cell) {
return "<span style='color: sienna'>$cell</span>"; return "<span style='color: sienna'>$cell</span>";
} }

View File

@ -90,4 +90,14 @@ class JasonTable
return $styleStr; return $styleStr;
} }
protected function getFilterFromCustomColumn(string $column)
{
if (is_array($this->beforePrintCell[$column])) {
if (isset($this->beforePrintCell[$column]['filter'])) {
return $this->beforePrintCell[$column]['filter'];
}
}
return "text";
}
} }

View File

@ -251,7 +251,7 @@ class ListJsonTable extends JasonTable
$this->html .= "<tr><form action='$this->baseUrl/search'>"; $this->html .= "<tr><form action='$this->baseUrl/search'>";
foreach ($columnKeys as $key){ foreach ($columnKeys as $key){
if ($this->issetFilter($key)){ if ($this->issetFilter($key)){
$this->html .= "<td><input type='text' name='$key'></td>"; $this->html .= "<td><input type='" . $this->getFilterFromCustomColumn($key) . "' name='$key'></td>";
} }
else { else {
$this->html .= "<td></td>"; $this->html .= "<td></td>";