diff --git a/js/dataTables.settings.js b/js/dataTables.settings.js
index d946a36f8..5e0c07b84 100644
--- a/js/dataTables.settings.js
+++ b/js/dataTables.settings.js
@@ -74,22 +74,20 @@ $(function()
$.post(this.options.sRenderUrl, oParams, function(data) {
// Nasty workaround to clear the pager's state for paginated lists !!!
// See jquery.tablesorter.pager.js / saveParams / restoreParams
- if (window.pager_params)
- {
+ if (window.pager_params) {
window.pager_params['pager'+me.options.sListId] = undefined;
}
- // try {
- var parentElt = $('#'+me.options.sListId).parent().parent();
+ var parentElt = $('#'+me.options.sListId).closest('.dataTables_wrapper').parent();
$('#'+me.options.sListId).DataTable().destroy(true);
- var sThead="";
- if(me.options.sSelectMode !=""){
+ var sThead = "";
+ if (me.options.sSelectMode != "") {
sThead += "
| ";
}
var aOptions = JSON.parse(data);
- $.each(aOptions['allColumns'], function(i, item) {
- $.each(item, function(j, champs) {
- if(champs.checked == 'true') {
+ $.each(aOptions['allColumns'], function (i, item) {
+ $.each(item, function (j, champs) {
+ if (champs.checked == 'true') {
sThead += ""+champs.label+" | ";
}
});
diff --git a/sources/Controller/AjaxRenderController.php b/sources/Controller/AjaxRenderController.php
index ea46805f8..5aa06ce4c 100644
--- a/sources/Controller/AjaxRenderController.php
+++ b/sources/Controller/AjaxRenderController.php
@@ -167,6 +167,12 @@ class AjaxRenderController
}
}
}
+ if (!isset($aExtraParams['list_id'])) {
+ $sListId = utils::ReadParam('list_id', null);
+ if (!is_null($sListId)) {
+ $aExtraParams['list_id'] = $sListId;
+ }
+ }
$iLength = utils::ReadParam('end', 10);
$aColumns = utils::ReadParam('columns', array(), false, 'raw_data');
$sSelectMode = utils::ReadParam('select_mode', '');
@@ -318,7 +324,9 @@ class AjaxRenderController
if ($sIdName != "") {
$aObj["id"] = $aObj[$sIdName];
}
- array_push($aResult["data"], $aObj);
+ if (isset($aObj)) {
+ array_push($aResult["data"], $aObj);
+ }
}
return $aResult;
@@ -350,7 +358,7 @@ class AjaxRenderController
if ($bSaveAsDefaults) {
if ($sTableId != null) {
- $oCurrSettings = unserialize(DataTableSettings::GetTableSettings($aClassAliases, $sTableId, true /* bOnlyTable */));
+ $oCurrSettings = DataTableSettings::GetTableSettings($aClassAliases, $sTableId, true /* bOnlyTable */);
if ($oCurrSettings) {
$oCurrSettings->ResetToDefault(false); // Reset this table to the defaults
}
diff --git a/sources/application/UI/Base/Component/DataTable/DataTable.php b/sources/application/UI/Base/Component/DataTable/DataTable.php
index 41968f29f..dd3986455 100644
--- a/sources/application/UI/Base/Component/DataTable/DataTable.php
+++ b/sources/application/UI/Base/Component/DataTable/DataTable.php
@@ -51,7 +51,8 @@ class DataTable extends UIContentBlock
public function __construct(?string $sId = null)
{
parent::__construct($sId);
- $this->AddDeferredBlock(new DataTableConfig($this));
+ //$this->AddDeferredBlock(new DataTableConfig($this));
+ $this->AddSubBlock(new DataTableConfig($this));
$this->aDisplayColumns = [];
$this->aOptions = [];
$this->aResultColumns = [];
diff --git a/sources/application/UI/Base/Component/DataTable/DataTableSettings.php b/sources/application/UI/Base/Component/DataTable/DataTableSettings.php
index 9f224b059..b94eee9e4 100644
--- a/sources/application/UI/Base/Component/DataTable/DataTableSettings.php
+++ b/sources/application/UI/Base/Component/DataTable/DataTableSettings.php
@@ -196,26 +196,27 @@ class DataTableSettings implements Serializable
*/
static public function GetTableSettings($aClassAliases, $sTableId = null, $bOnlyOnTable = false)
{
- $pref = null;
- $oSettings = new DataTableSettings($aClassAliases, $sTableId);
+ $pref = null;
+ $oSettings = new DataTableSettings($aClassAliases, $sTableId);
- if ($sTableId != null) {
- // An identified table, let's fetch its own settings (if any)
- $pref = appUserPreferences::GetPref($oSettings->GetPrefsKey($sTableId), null);
- }
+ if ($sTableId != null) {
+ // An identified table, let's fetch its own settings (if any)
+ $pref = appUserPreferences::GetPref($oSettings->GetPrefsKey($sTableId), null);
+ }
- if ($pref == null) {
- if (!$bOnlyOnTable) {
- // Try the global preferred values for this class / set of classes
- $pref = appUserPreferences::GetPref($oSettings->GetPrefsKey(null), null);
- }
- if ($pref == null) {
- // no such settings, use the default values provided by the data model
- return null;
- }
- }
+ if ($pref == null) {
+ if (!$bOnlyOnTable) {
+ // Try the global preferred values for this class / set of classes
+ $pref = appUserPreferences::GetPref($oSettings->GetPrefsKey(null), null);
+ }
+ if ($pref == null) {
+ // no such settings, use the default values provided by the data model
+ return null;
+ }
+ }
+ $oSettings->unserialize($pref);
- return $oSettings;
+ return $oSettings;
}
/**
diff --git a/sources/application/UI/Base/Component/DataTable/DataTableUIBlockFactory.php b/sources/application/UI/Base/Component/DataTable/DataTableUIBlockFactory.php
index c4bf0df75..d7594c938 100644
--- a/sources/application/UI/Base/Component/DataTable/DataTableUIBlockFactory.php
+++ b/sources/application/UI/Base/Component/DataTable/DataTableUIBlockFactory.php
@@ -165,7 +165,7 @@ class DataTableUIBlockFactory extends AbstractUIBlockFactory
$oDataTable = new DataTable('datatable_'.$sListId);
$oAppRoot = utils::GetAbsoluteUrlAppRoot();
-
+
// Initialize and check the parameters
$bViewLink = isset($aExtraParams['view_link']) ? $aExtraParams['view_link'] : true;
$sLinkageAttribute = isset($aExtraParams['link_attr']) ? $aExtraParams['link_attr'] : '';
@@ -433,7 +433,7 @@ class DataTableUIBlockFactory extends AbstractUIBlockFactory
$oDataTable = new DataTable('datatable_'.$sListId);
$aList = array();
$oAppRoot = utils::GetAbsoluteUrlAppRoot();
-
+
// Initialize and check the parameters
$bViewLink = isset($aExtraParams['view_link']) ? $aExtraParams['view_link'] : true;
// Check if there is a list of aliases to limit the display to...
@@ -551,40 +551,47 @@ class DataTableUIBlockFactory extends AbstractUIBlockFactory
}
$aSortDatable = [];
foreach ($aAuthorizedClasses as $sClassAlias => $sClassName) {
- foreach ($oCustomSettings->aColumns[$sClassAlias] as $sAttCode => $aData) {
- if ($aData['sort'] != 'none') {
- $sCode = ($aData['code'] == '_key_') ? 'friendlyname' : $aData['code'];
- $aSortOrder[$sAlias.$sCode] = ($aData['sort'] == 'asc'); // true for ascending, false for descending
- $aSortDatable = [$iIndexColumn, $aData['sort']];
- }
- if ($aData['checked']) {
- if ($sAttCode == '_key_') {
- if ($bViewLink) {
+ if (isset($oCustomSettings->aColumns[$sClassAlias])) {
+ foreach ($oCustomSettings->aColumns[$sClassAlias] as $sAttCode => $aData) {
+ if ($aData['sort'] != 'none') {
+ $sCode = ($aData['code'] == '_key_') ? 'friendlyname' : $aData['code'];
+ $aSortOrder[$sAlias.$sCode] = ($aData['sort'] == 'asc'); // true for ascending, false for descending
+ $aSortDatable = [$iIndexColumn, $aData['sort']];
+ }
+ if ($aData['checked']) {
+ if ($sAttCode == '_key_') {
+ if ($bViewLink) {
+ if (MetaModel::IsValidAttCode($sClassName, 'obsolescence_flag')) {
+ $sRender = "let displayField = ''+row['".$sClassAlias."/friendlyname']+''; if (row['".$sClassAlias."/obsolescence_flag'].indexOf('no') == -1){displayField = ''+row['".$sClassAlias."/friendlyname']+'';} return displayField;";
+ } else {
+ $sRender = "let displayField = ''+row['".$sClassAlias."/friendlyname']+''; return displayField;";
+ }
+ $aColumnDefinition[] = [
+ 'description' => $aData['label'],
+ 'object_class' => $sClassName,
+ 'class_alias' => $sClassAlias,
+ 'attribute_code' => $sAttCode,
+ 'attribute_type' => '_key_',
+ 'attribute_label' => $aData['alias'],
+ "render" => $sRender,
+ ];
+ }
+ } else {
+ $oAttDef = MetaModel::GetAttributeDef($sClassName, $sAttCode);
+ $sAttDefClass = get_class($oAttDef);
+ $sAttLabel = MetaModel::GetLabel($sClassName, $sAttCode);
$aColumnDefinition[] = [
- 'description' => $aData['label'],
+ 'description' => $oAttDef->GetOrderByHint(),
'object_class' => $sClassName,
'class_alias' => $sClassAlias,
'attribute_code' => $sAttCode,
- 'attribute_type' => '_key_',
- 'attribute_label' => $aData['alias'],
- "render" => "let displayField = ''+row['".$sClassAlias."/friendlyname']+''; if (row['".$sClassAlias."/obsolescence_flag'].indexOf('no') == -1){displayField = ''+row['".$sClassAlias."/friendlyname']+'';} return displayField;",
+ 'attribute_type' => $sAttDefClass,
+ 'attribute_label' => $sAttLabel,
+ "render" => $oAttDef->GetRenderForDataTable($sClassAlias),
];
}
- } else {
- $oAttDef = MetaModel::GetAttributeDef($sClassName, $sAttCode);
- $sAttDefClass = get_class($oAttDef);
- $sAttLabel = MetaModel::GetLabel($sClassName, $sAttCode);
- $aColumnDefinition[] = [
- 'description' => $oAttDef->GetOrderByHint(),
- 'object_class' => $sClassName,
- 'class_alias' => $sClassAlias,
- 'attribute_code' => $sAttCode,
- 'attribute_type' => $sAttDefClass,
- 'attribute_label' => $sAttLabel,
- "render" => $oAttDef->GetRenderForDataTable($sClassAlias),
- ];
+ $iIndexColumn++;
}
- $iIndexColumn++;
}
}
}
@@ -645,7 +652,7 @@ class DataTableUIBlockFactory extends AbstractUIBlockFactory
public static function GetOptionsForRendering(array $aColumns, string $sSelectMode, string $sFilter, int $iLength, array $aClassAliases, array $aExtraParams)
{
$oAppRoot = utils::GetAbsoluteUrlAppRoot();
-
+
$aOptions = [];
$sTableId = $aExtraParams["table_id"];
$sListId = $aExtraParams["list_id"];
@@ -695,8 +702,13 @@ class DataTableUIBlockFactory extends AbstractUIBlockFactory
'attribute_label' => $aData['alias'],
];
$aColumnDefinition["data"] = $sClassAlias."/".$sAttCode;
+ if (MetaModel::IsValidAttCode($sClassName, 'obsolescence_flag')) {
+ $sDisplay = "let displayField = ''+row['".$sClassAlias."/friendlyname']+''; if (row['".$sClassAlias."/obsolescence_flag'].indexOf('no') == -1){displayField = ''+row['".$sClassAlias."/friendlyname']+'';} return displayField;";
+ } else {
+ $sDisplay = "let displayField = ''+row['".$sClassAlias."/friendlyname']+''; return displayField;";
+ }
$aColumnDefinition["render"] = [
- "display" => "let displayField = ''+row['".$sClassAlias."/friendlyname']+''; if (row['".$sClassAlias."/obsolescence_flag'].indexOf('no') == -1){displayField = ''+row['".$sClassAlias."/friendlyname']+'';} return displayField;",
+ "display" => $sDisplay,
"_" => $sClassAlias."/".$sAttCode,
];
} else {