N°2847 - Tranform old itop datatable to jquery DataTable - manage popup "Configure this list"

This commit is contained in:
acognet
2020-11-18 12:31:42 +01:00
parent 5115db1b01
commit 106dfc63d5
5 changed files with 38 additions and 22 deletions

View File

@@ -194,7 +194,9 @@ $(function()
}
}
this._saveDlgState();
$('#datatable_dlg_'+this.options.sListId).find('[name=action]').val("save");
$('#datatable_dlg_'+this.options.sListId).dialog('close');
},
onDlgCancel: function()
{

View File

@@ -255,7 +255,8 @@ try
$iLength = utils::ReadParam('end', 10);
$aColumns = utils::ReadParam('columns', array(), false, 'raw_data');
$sSelectMode = utils::ReadParam('select_mode', '');
$aResult = DataTableFactory::GetOptionsForRendering( $aColumns, $sSelectMode, $sFilter, $iLength, $aExtraParams);
$aClassAliases = utils::ReadParam('class_aliases', array());
$aResult = DataTableFactory::GetOptionsForRendering( $aColumns, $sSelectMode, $sFilter, $iLength, $aClassAliases, $aExtraParams);
$oPage->add(json_encode($aResult));
break;

View File

@@ -328,6 +328,7 @@ class DataTableFactory
$aOptions['bUseCustomSettings'] = $bUseCustomSettings;
$aOptions['bViewLink'] = $bViewLink;
$aOptions['sListId'] = $sListId;
$aOptions['oClassAliases'] = json_encode($aClassAliases);
$oDataTable->SetOptions($aOptions);
$oDataTable->SetAjaxUrl("ajax.render.php");
@@ -540,6 +541,7 @@ class DataTableFactory
$aOptions['sTableId'] = $sTableId;
$aOptions['bUseCustomSettings'] = $bUseCustomSettings;
$aOptions['bViewLink'] = $bViewLink;
$aOptions['oClassAliases'] = json_encode($aClassAliases);
$oDataTable->SetOptions($aOptions);
$oDataTable->SetAjaxUrl("ajax.render.php");
@@ -567,13 +569,12 @@ class DataTableFactory
* @return array
* @throws \Exception
*/
public static function GetOptionsForRendering(array $aColumns, string $sSelectMode, string $sFilter, int $iLength, array $aExtraParams)
public static function GetOptionsForRendering(array $aColumns, string $sSelectMode, string $sFilter, int $iLength, array $aClassAliases, array $aExtraParams)
{
$aOptions = [];
$aColumnsDefinitions = [];
$aColumnDefinition = [];
$aClassAliases = [];
if ($sSelectMode!=""){
$aColumnDefinition["width"] = "auto";
@@ -594,8 +595,8 @@ class DataTableFactory
array_push($aColumnsDefinitions, $aColumnDefinition);
}
foreach ($aColumns as $sClassName => $aClassColumns) {
$aClassAliases[$sClassName] = $sClassName;
foreach ($aColumns as $sClassAlias => $aClassColumns) {
$sClassName=$aClassAliases[$sClassAlias];
foreach ($aClassColumns as $sAttCode => $aData) {
if ($aData['checked'] == "true") {
$aColumnDefinition["width"] = "auto";
@@ -608,14 +609,15 @@ class DataTableFactory
$aColumnDefinition["title"] = $aData['alias'];
$aColumnDefinition['metadata'] = [
'object_class' => $sClassName,
'class_alias' => $sClassAlias,
'attribute_code' => $sAttCode,
'attribute_type' => '_key_',
'attribute_label' => $aData['alias'],
];
$aColumnDefinition["data"] = $sClassName."/".$sAttCode;
$aColumnDefinition["data"] = $sClassAlias."/".$sAttCode;
$aColumnDefinition["render"] = [
"display" => "return '<a class=\'object-ref-link\' href=\'UI.php?operation=details&class=".$sClassName."&id='+data+'\'>'+row['".$sClassName."/friendlyname']+'</a>' ;",
"_" => $sClassName."/".$sAttCode,
"display" => "return '<a class=\'object-ref-link\' href=\'UI.php?operation=details&class=".$sClassName."&id='+data+'\'>'+row['".$sClassAlias."/friendlyname']+'</a>' ;",
"_" => $sClassAlias."/".$sAttCode,
];
} else {
$oAttDef = MetaModel::GetAttributeDef($sClassName, $sAttCode);
@@ -625,14 +627,15 @@ class DataTableFactory
$aColumnDefinition["title"] = $sAttLabel;
$aColumnDefinition['metadata'] = [
'object_class' => $sClassName,
'class_alias' => $sClassAlias,
'attribute_code' => $sAttCode,
'attribute_type' => $sAttDefClass,
'attribute_label' => $sAttLabel,
];
$aColumnDefinition["data"] = $sClassName."/".$sAttCode;
$aColumnDefinition["data"] = $sClassAlias."/".$sAttCode;
$aColumnDefinition["render"] = [
"display" => $oAttDef->GetRenderForDataTable($sClassName),
"_" => $sClassName."/".$sAttCode,
"display" => $oAttDef->GetRenderForDataTable($sClassAlias),
"_" => $sClassAlias."/".$sAttCode,
];
}
array_push($aColumnsDefinitions, $aColumnDefinition);

View File

@@ -17,6 +17,7 @@
</table>
<div id="datatable_dlg_{{ oUIBlock.GetId() }}" style="display: none; background : white;" class="">
<input type="hidden" name="action" value="none"/>
<form id="form_{{ oUIBlock.GetId() }}" onsubmit="return false">
<p>
<input id="dtbl_dlg_settings_{{ oUIBlock.GetId() }}" type="radio" name="settings" {% if (oUIBlock.GetOptions()['bUseCustomSettings'] == false) %} checked {% endif %} value="defaults">
@@ -53,7 +54,7 @@
<button type="button" onclick="$('#datatable_dlg_{{ oUIBlock.GetId() }}').DataTableSettings('onDlgCancel'); $('#datatable_dlg_{{ oUIBlock.GetId() }}').dialog('close')">&nbsp;{{ 'UI:Button:Cancel'|dict_s }}</button>
</td>
<td style="text-align:center;">
<button type="submit" onclick="$('#datatable_dlg_{{ oUIBlock.GetId() }}').DataTableSettings('onDlgOk'); $('#datatable_dlg_{{ oUIBlock.GetId() }}').dialog('close');">&nbsp;{{ 'UI:Button:Ok'|dict_s }}</button>
<button type="submit" onclick="$('#datatable_dlg_{{ oUIBlock.GetId() }}').DataTableSettings('onDlgOk'); ">&nbsp;{{ 'UI:Button:Ok'|dict_s }}</button>
</td>
</tr>
</table>

View File

@@ -161,13 +161,15 @@ var oTable{{ oUIBlock.GetId() }} = $('#{{ oUIBlock.GetId() }}').DataTable({
pages: 5 // number of pages to cache
}),
initComplete: function () {
if (this.api().page.info().pages === 1) {
if (this.api().page.info().pages === 1) {
$('.dataTables_paginate').hide();
$('.dataTables_length').hide();
}
}
});
{% if oUIBlock.GetOption("select_mode") is not empty %}
{% if oUIBlock.GetOption("select_mode") != "single" %}
oTable{{ oUIBlock.GetId() }}.off('select').on('select', function (oEvent, dt, type, indexes) {
@@ -273,22 +275,29 @@ $('#datatable_dlg_{{ oUIBlock.GetId() }}').dialog(
autoOpen: false,
title: "{{ 'UI:ListConfigurationTitle'|dict_s }}",
width: 500,
close: function () { //save data and refresh
$('#datatable_dlg_{{ oUIBlock.GetId() }}').DataTableSettings('onDlgCancel');
open: function(){
$('#datatable_dlg_{{ oUIBlock.GetId() }}').find('[name=action]').val("none");
},
close: function (event, ui) { //save data and refresh
if( $('#datatable_dlg_{{ oUIBlock.GetId() }}').find('[name=action]').val() == "none") {
$('#datatable_dlg_{{ oUIBlock.GetId() }}').DataTableSettings('onDlgCancel');
}
}
});
$aOptions = {
sListId: '{{ oUIBlock.GetId() }}',
oColumns: {{ oUIBlock.GetResultColumnsAsJson()|raw }},
sViewLink: '{{ oUIBlock.GetOptions()["bViewLink"] }}',
iPageSize: '{{ oUIBlock.GetOptions()["iPageSize"] }}',
sTableId: '{{ oUIBlock.GetOptions()["sTableId"] }}',
sSelectMode: "{{ oUIBlock.GetOption("select_mode") }}",
sViewLink: '{{ oUIBlock.GetOption("bViewLink") }}',
iPageSize: '{{ oUIBlock.GetOption("iPageSize") }}',
oClassAliases: JSON.parse('{{ oUIBlock.GetOption("oClassAliases") |raw}}'),
sTableId: '{{ oUIBlock.GetOption("sTableId") }}',
//oExtraParams
sRenderUrl: "{{ oUIBlock.GetAjaxUrl() }}",
sSelectMode: "{{ oUIBlock.GetOptions()["select_mode"] }}",
oData: {{ oUIBlock.GetAjaxData() |raw }},
oData: {{ oUIBlock.GetAjaxData() |raw }},//ttt
oDefaultSettings: {{ oUIBlock.GetOption("oDefaultSettings")|raw }},
oLabels: {moveup: "{{ 'UI:Button:MoveUp'|dict_s }}", movedown: "{{ 'UI:Button:MoveDown'|dict_s }}"},
oDefaultSettings: {{ oUIBlock.GetOptions()["oDefaultSettings"]|raw }}
};
//if (!typeof $('#datatable_dlg_{{ oUIBlock.GetId() }}').DataTableSettings() !== "undefined")