From 06e4cfdff5833d9434c175e034501736800a4397 Mon Sep 17 00:00:00 2001 From: maliming Date: Tue, 19 Mar 2024 10:02:17 +0800 Subject: [PATCH] Compatible with older `dataTables` versions. --- .../DatatablesNetScriptContributor.cs | 10 +++++- .../datatables/datatables-extensions.js | 34 +++++++++++++++---- 2 files changed, 36 insertions(+), 8 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/DatatablesNet/DatatablesNetScriptContributor.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/DatatablesNet/DatatablesNetScriptContributor.cs index b266f4f010..026e8075ec 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/DatatablesNet/DatatablesNetScriptContributor.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/DatatablesNet/DatatablesNetScriptContributor.cs @@ -10,6 +10,14 @@ public class DatatablesNetScriptContributor : BundleContributor { public override void ConfigureBundle(BundleConfigurationContext context) { - context.Files.AddIfNotContains("/libs/datatables.net/js/dataTables.min.js"); + if (context.FileProvider.GetFileInfo("/libs/datatables.net/js/dataTables.min.js").Exists) + { + context.Files.AddIfNotContains("/libs/datatables.net/js/dataTables.min.js"); + } + else + { + //TODO: Compatibility code, Remove it after 8.2 rc1. + context.Files.AddIfNotContains("/libs/datatables.net/js/jquery.dataTables.js"); + } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js index c97d4300ea..9b5b29d70b 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js @@ -11,6 +11,10 @@ var abp = abp || {}; * RECORD-ACTIONS extension for datatables * *************************************************************************/ (function () { + if (!$.fn.dataTableExt) { + return; + } + var getVisibilityValue = function (visibilityField, record, tableInstance) { if (visibilityField === undefined) { return true; @@ -234,9 +238,17 @@ var abp = abp || {}; var renderRowActions = function (tableInstance, nRow, aData, iDisplayIndex, iDisplayIndexFull) { var columns; - var settings = tableInstance.api().settings(); - if (settings.length === 1 && settings[0].aoColumns) { - columns = settings[0].aoColumns; + if (tableInstance.aoColumns) { + columns = tableInstance.aoColumns; + } else if (abp.utils.isFunction(tableInstance.fnSettings)) { + columns = tableInstance.fnSettings().aoColumns; + } + + if (!columns && abp.utils.isFunction(tableInstance.api)) { + var settings = tableInstance.api().settings(); + if (settings.length === 1 && settings[0].aoColumns) { + columns = settings[0].aoColumns; + } } if (!columns) { @@ -266,6 +278,18 @@ var abp = abp || {}; } }; + if ($.fn.dataTableExt.oApi) { + var _existingApiRenderRowActionsFunction = $.fn.dataTableExt.oApi.renderRowActions; + $.fn.dataTableExt.oApi.renderRowActions = + function (tableInstance, nRow, aData, iDisplayIndex, iDisplayIndexFull) { + if (_existingApiRenderRowActionsFunction) { + _existingApiRenderRowActionsFunction(tableInstance, nRow, aData, iDisplayIndex, iDisplayIndexFull); + } + + renderRowActions(tableInstance, nRow, aData, iDisplayIndex, iDisplayIndexFull); + }; + } + if (!$.fn.dataTable) { return; } @@ -451,10 +475,6 @@ var abp = abp || {}; if (column.rowAction) { customizeRowActionColumn(column); } - - if (!column.type) { - column.type = "string"; - } } configuration.language = datatables.defaultConfigurations.language();