[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Noalyss-commit] [noalyss] 02/03: Manage Table : improve, set option for
From: |
Dany De Bontridder |
Subject: |
[Noalyss-commit] [noalyss] 02/03: Manage Table : improve, set option for the column and header (CSS style, javascript, ...) |
Date: |
Sun, 6 Jun 2021 07:32:01 -0400 (EDT) |
sparkyx pushed a commit to branch master
in repository noalyss.
commit 0ef74679dacf9558bfc0ded1f76cbfe246b88385
Author: sparkyx <danydb@noalyss.eu>
AuthorDate: Mon May 31 15:13:48 2021 +0200
Manage Table : improve, set option for the column and header (CSS style,
javascript,...)
---
include/lib/manage_table_sql.class.php | 121 +++++++++++++++++++++++++--------
scenario/test_manage_table_sql.php | 5 +-
2 files changed, 97 insertions(+), 29 deletions(-)
diff --git a/include/lib/manage_table_sql.class.php
b/include/lib/manage_table_sql.class.php
index 2734566..1776673 100644
--- a/include/lib/manage_table_sql.class.php
+++ b/include/lib/manage_table_sql.class.php
@@ -93,6 +93,9 @@ class Manage_Table_SQL
protected $title; //! < give the title of the diabox , default is Data
private $cssclass; //! CSS class for the dialog box
private $current_row; //! in display_row and display_custom_row, it is the
current row which is used
+ private $a_col_option; //!< Extra to add to the column : CSS Style , CSS
class, javascript ,...
+ private $a_header_option; //!< Extra to add to the column Header : CSS
Style , CSS class, javascript ,...
+
/**
* @brief Constructor : set the label to the column name,
* the order of the column , set the properties and the
@@ -113,6 +116,8 @@ class Manage_Table_SQL
$this->a_prop[$value]=self::UPDATABLE|self::VISIBLE;
$this->a_type[$value]=$this->table->type[$value];
$this->a_select[$value]=null;
+ $this->a_col_option[$value]="";
+ $this->a_header_option[$value]="";
$order++;
}
$this->object_name=uniqid("tbl");
@@ -143,7 +148,7 @@ class Manage_Table_SQL
return $this->cssclass;
}
/**
- * Set the title of the diabox , default is Donnée
+ *@brief Set the title of the diabox , default is Donnée
* @param type $p_title
*/
function setTitle($p_title)
@@ -155,7 +160,7 @@ class Manage_Table_SQL
return $this->title;
}
/**
- * Get if we can search in the table
+ * @brief Get if we can search in the table
* @return boolean
*/
public function get_search_table()
@@ -164,7 +169,7 @@ class Manage_Table_SQL
}
/**
- * Set the table searchable or not
+ * @brief Set the table searchable or not
* @param boolean : true we can search
* @return $this
*/
@@ -175,7 +180,7 @@ class Manage_Table_SQL
}
/**
- * send the XML headers for the ajax call
+ *@brief send the XML headers for the ajax call
*/
function send_header()
{
@@ -183,7 +188,7 @@ class Manage_Table_SQL
}
/**
- * return the db_style
+ * @brief return the db_style
* @return array
*/
public function get_dialogbox_style()
@@ -192,7 +197,7 @@ class Manage_Table_SQL
}
/**
- * Dialog box style , by default {position: "fixed", top: '15%', width:
"auto", "margin-left": "20%"}
+ * @brief Dialog box style , by default {position: "fixed", top: '15%',
width: "auto", "margin-left": "20%"}
*
* @param array $db_style , will be transformed into a json object
*/
@@ -221,14 +226,14 @@ class Manage_Table_SQL
}
/**
- * When adding an element , it is column we checked to insert before,
+ * @brief When adding an element , it is column we checked to insert
before,
* @return none
*/
function get_col_sort() {
return $this->col_sort;
}
/**
- * Set the info for a column, use Icon_Action::infobulle
+ * @brief Set the info for a column, use Icon_Action::infobulle
* the message are in message_javascript.php
* @param string $p_key Column name
* @param integer $p_comment comment idx
@@ -240,7 +245,7 @@ class Manage_Table_SQL
$this->a_info[$p_key]=$p_comment;
}
/**
- * When adding an element ,we place it thanks the DOM Attribute sort_value
+ * @brief When adding an element ,we place it thanks the DOM Attribute
sort_value
* set it to -1 if you want one to append
* @param numeric $pn_num
* @note you must be aware that the icon_mod or icon_del is in the first
col,
@@ -287,7 +292,7 @@ class Manage_Table_SQL
$this->aerror[$p_col]=$p_message;
}
/**
- * returns the nb of errors found
+ * @brief returns the nb of errors found
*/
function count_error()
{
@@ -348,8 +353,66 @@ function check()
{
return true;
}
+ /**
+ * @brief add extra to column, normally class , javascript or style
+ * @param string $p_key column name
+ * @see set_col_option
+ */
+ public function get_col_option($p_key)
+ {
+ if (!isset($this->a_type[$p_key]))
+ throw new Exception("invalid key $p_key");
+ return $this->a_col_option[$p_col];
+ }
+ /**
+ * @brief add extra to column, normally class or style
+ *
+ * @param string $p_key column name
+ * @param string $p_value extra info for this column (CSS, js, ...)
+ *
+ @code{.php}
+
$manage_table->set_col_option("pcm_lib",'style="color:red;text-align:center"');
+
+ $manage_table->set_col_option("pcm_val", "onclick=\"alert('toto')\"
style=\"text-decoration:underline\"
onmouseover=\"this.style.cursor='pointer'\"");
+ @endcode
+ *
+ */
+ public function set_col_option($p_key,$p_value)
+ {
+
+ if (!isset($this->a_type[$p_key]))
+ throw new Exception("invalid key $p_key");
+ $this->a_col_option[$p_key]=$p_value;
+ return $this;
+ }
/**
+ * @brief add extra to column Header, normally class , javascript or style
+ * @param string $p_key column name
+ * @see set_col_option
+ */
+ public function get_header_option($p_key)
+ {
+ if (!isset($this->a_type[$p_key]))
+ throw new Exception("invalid key $p_key");
+
+ return $this->a_header_option[$p_col];
+ }
+ /**
+ * @brief add extra to column Header, normally class or style
+ * @param string $p_key column name
+ * @param string $p_value extra info for this column (CSS, js, ...)
+ * @see set_col_option
+ */
+ public function set_header_option($p_key,$p_value)
+ {
+ if (!isset($this->a_type[$p_key]))
+ throw new Exception("invalid key $p_key");
+ $this->a_header_option[$p_key]=$p_value;
+ return $this;
+ }
+
+ /**
* @brief set the type of a column , it will change in the input db box ,
the
* select must supply an array of possible values [val=> , label=>] with
* the variable $this->key_name->a_value
@@ -371,6 +434,10 @@ function check()
$this->a_type[$p_key]=$p_value;
$this->a_select[$p_key]=$p_array;
+ if ( $p_value == "numeric" && $this->a_col_option[$p_key]=="") {
+ $this->a_col_option[$p_key]=' class="num" ';
+ }
+
}
/**
@@ -387,7 +454,7 @@ function check()
}
/**
- * Get the object name
+ * @brief Get the object name
* @details : return the object name , it is useful it
* the javascript will return coded without the create_js_script function
* @see create_js_script
@@ -397,7 +464,7 @@ function check()
return $this->object_name;
}
/**
- * Add json parameter to the current one
+ * @brief Add json parameter to the current one
*/
function add_json_param($p_attribute,$p_value) {
$x=json_decode($this->json_parameter,TRUE);
@@ -412,7 +479,7 @@ function check()
return $this->object_name;
}
/**
- * Set the parameter of the object (gDossier, ac, plugin_code...)
+ * @brief Set the parameter of the object (gDossier, ac, plugin_code...)
* @detail By default , only gDossier will be set . The default value
* is given in the constructor
* @param string with json format $p_json
@@ -424,7 +491,7 @@ function check()
$this->set_json($p_json);
}
/**
- * Set the parameter of the object (gDossier, ac, plugin_code...)
+ * @brief Set the parameter of the object (gDossier, ac, plugin_code...)
* @detail By default , only gDossier will be set . The default value
* is given in the constructor
* @param string with json format $p_json
@@ -470,7 +537,7 @@ function check()
return HtmlInput::errorbulle($error);
}
/**
- * Set the object_name
+ * @brief Set the object_name
* @param string $p_object_name name of the JS var, used in ajax
response,id
* of the part of the id DOMElement to modify
*/
@@ -507,7 +574,7 @@ function check()
return $this->row_update;
}
/**
- * Set the icon to modify at the right ,the first col or left of the row
+ * @brief Set the icon to modify at the right ,the first col or left of
the row
*
* @param type $pString
* @throws Exception
@@ -518,7 +585,7 @@ function check()
$this->icon_mod=$pString;
}
/**
- * Set the icon to delete at the right or left of the row
+ * @brief Set the icon to delete at the right or left of the row
* @param type $pString
* @throws Exception
*/
@@ -815,7 +882,7 @@ function check()
$sorted=' class="sorttable_sorted"';
}
- $style=($this->get_col_type($key)=="text")?"":'
style="text-align:right;" ';
+ $style=$this->a_header_option[$key];
if ($this->get_property_visible($key)==true ) {
echo th("", $sorted.$style, $this->a_label_displaid[$key]);
}
@@ -832,14 +899,14 @@ function check()
echo '</thead>';
}
/**
- * set the column to sort by default
+ * @brief set the column to sort by default
*/
function set_sort_column($p_col)
{
$this->sort_column=$p_col;
}
/**
- * return the column to sort
+ * @brief return the column to sort
*/
function get_sort_column()
{
@@ -935,7 +1002,8 @@ function check()
{
$js=sprintf("onclick=\"%s.input('%s','%s');\"",
$this->object_name,
$pk_id, $this->object_name);
- $td=($i == $this->col_sort ) ? sprintf('<td
sorttable_customkey="X%s" >',$p_row[$v]):"<td>";
+ $td=($i == $this->col_sort ) ? sprintf('<td
sorttable_customkey="X%s" class="%s">',
+ $p_row[$v],$this->a_col_option[$v]):"<td>";
echo $td.HtmlInput::anchor($p_row[$v], "", $js).'</td>';
}
elseif ( $i == $this->col_sort && $this->get_property_visible($v) )
@@ -943,12 +1011,12 @@ function check()
if ( $this->get_col_type($v) == 'text') {
echo td($p_row[$v],sprintf(' sorttable_customkey="X%s"
',$p_row[$v]));
} elseif ( $this->get_col_type($v) == 'numeric') {
- echo td($p_row[$v],sprintf('class="num" ',$p_row[$v]));
+ echo td($p_row[$v],$this->a_col_option[$v],$p_row[$v]);
} elseif ($this->get_col_type($v)=="custom") {
// For custom col
echo $this->display_row_custom($v,$p_row[$v],$pk_id);
}else {
- echo td($p_row[$v],sprintf(' sorttable_customkey="X%s"
',$p_row[$v]));
+ echo td($p_row[$v],sprintf(' sorttable_customkey="X%s"
',$p_row[$v]),$this->a_col_option[$v]);
}
}
@@ -976,7 +1044,7 @@ function check()
if
(isset($array_to_search[$e]['value'])&&$array_to_search[$e]['value']==$value)
{
$found=TRUE;
- echo td($array_to_search[$e]['label']);
+ echo
td($array_to_search[$e]['label'],$this->a_col_option[$v]);
}
}
@@ -988,11 +1056,8 @@ function check()
// For custom col
echo $this->display_row_custom($v,$p_row[$v],$pk_id);
}
- elseif ( $this->get_col_type($v)=="numeric") {
- echo td($p_row[$v],' class="num" ');
- }
else {
- echo td($p_row[$v]);
+ echo td($p_row[$v], $this->a_col_option[$v]);
}
}
}
diff --git a/scenario/test_manage_table_sql.php
b/scenario/test_manage_table_sql.php
index 9a2c4a6..da6ea55 100644
--- a/scenario/test_manage_table_sql.php
+++ b/scenario/test_manage_table_sql.php
@@ -47,11 +47,14 @@ echo " <br>";
$manage_table->create_js_script();
// Test the column header
-$manage_table->set_col_label('pcm_val', "Poste");
+$manage_table->set_col_label('pcm_val', "Poste ");
$manage_table->set_col_label('parent_accounting', "Dépend");
$manage_table->set_col_label('pcm_lib', "Libellé");
$manage_table->set_col_label('pcm_type', "Type de
menu".Icon_Action::infobulle(33));
$manage_table->set_sort_column("pcm_lib");
+$manage_table->set_col_option("pcm_lib",'style="color:red;text-align:center"');
+$manage_table->set_col_option("pcm_val", "onclick=\"alert('toto')\"
style=\"text-decoration:underline\"
onmouseover=\"this.style.cursor='pointer'\"");
+$manage_table->set_header_option("pcm_val", "onmouseover=\"smoke.alert('Click
on Poste for detail',undefined,{duration:500})\"");
// Change visible property
function test_visible_update(Manage_Table_SQL
$p_manage_table,$p_property,$p_visible,$p_update) {
global $g_failed,$g_succeed;