improvements

This commit is contained in:
Alessandro Ferro 2022-03-09 00:36:24 +01:00
parent d0a106f6a7
commit 58aca67a9b
4 changed files with 61 additions and 8 deletions

View File

@ -6,7 +6,7 @@ It's similar to Microsoft's WebForms with a great layout by default (like DevExp
## Available components
* Table
* Card
* Breadcumb
* Breadcrumb
## Examples
@ -22,11 +22,29 @@ $table->setDataSource($employees);
$table->setCustomCaptions(array("Name", "Surname", "Date of Birth", "Social Security Number")); //not required. If not specified it'll use objects' property names
$table->addColumn("Extra");
$table->onValueDisplaying("onValueDisplaying");
$table->setStripedRows(true);
$table->setBordered(true);
$table->setHoverAnimation(true);
$table->draw();
function onValueDisplaying($caption, &$value, $row){
if($caption == "ssn"){
if($row["ssn"] != "12345"){
$value = "SSN not shown for privacy reasons";
}
else{
$value = $row["name"] . " " . $row["surname"] . " agreed to share their ssn (12345)" ;
}
}
else if($caption == "Extra"){
$value = "This column did not exist in the datasource";
}
}
```
produces the following output

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 KiB

After

Width:  |  Height:  |  Size: 144 KiB

View File

@ -37,18 +37,29 @@
$table = new Table;
$table->setDataSource($employees);
$table->setCustomCaptions(array("Name", "Surname", "Date of Birth", "Social Security Number"));
$table->addColumn("Extra");
$table->onValueDisplaying("onValueDisplaying");
$table->setStripedRows(true);
$table->setBordered(true);
$table->setHoverAnimation(true);
$table->onValueDisplaying("onValueDisplaying"); // event
$table->draw();
function onValueDisplaying($caption, &$value){
function onValueDisplaying($caption, &$value, $row){
if($caption == "ssn"){
if($row["ssn"] != "12345"){
$value = "SSN not shown for privacy reasons";
}
else{
$value = $row["name"] . " " . $row["surname"] . " agreed to share their ssn (12345)" ;
}
}
else if($caption == "Extra"){
$value = "This column did not exist in the datasource";
}
}
?>

View File

@ -46,7 +46,7 @@
foreach ($obj as $name => $value) {
if(isset( $this -> onValueDisplayingFunctionName)){
call_user_func_array($this -> onValueDisplayingFunctionName , array($name, &$value));
call_user_func_array($this -> onValueDisplayingFunctionName , array($name, &$value, (array)$obj));
}
echo '<td>' . $value . '</td>';
@ -82,17 +82,41 @@
throw new LengthException('Number of provided captions not matching the datasource ones.');
}
/*
** if you use addColumn() either
** 1) you do not use any dataSource
** 2) you set the dataSource prior to call this method (otherwise it won't be correctly shown)
*/
function addColumn($captionName){
if(isset($this->columnCaptions)){
array_push($this->columnCaptions , $captionName);
}
else{
$this->columnCaptions = array($captionName);
}
// Add this property to every object/array of the dataSource
if(isset($this->dataSource)){
foreach($this->dataSource as $obj){
$obj->{$captionName} = null;
}
}
}
/*
** The Event "onValueDisplaying" gets fired just before the displaying of a value within
** a table body, so you can display your own value if you want to.
** The function you have to provide must have this signature:
**
** function myFunction($caption, &$value){...}
** function myFunction($caption, &$value, $row){...}
**
** You can change "caption" and "value" to whichever name you want.
**
** caption: the ACTUAL fieldname of the dataSource whose value belong
** caption: the ACTUAL fieldname of the dataSource whose value belongs to
** value: the value you want to display.
** row: an associative array representing the row being processed
*/
function onValueDisplaying($functionName){
if(!is_callable($functionName))