diff options
author | AlisaLinUwU <alisalinuwu@gmail.com> | 2025-01-26 10:42:28 +0500 |
---|---|---|
committer | AlisaLinUwU <alisalinuwu@gmail.com> | 2025-01-26 10:42:28 +0500 |
commit | 0225bdb772d1334cc1aa7ab0fc3678df0864df6b (patch) | |
tree | 85a8c8e4fcf1d935fcbad54886b73410c8cb2e26 /build/resources/main/static/plugins/datatables-rowgroup |
Initializemain
Diffstat (limited to 'build/resources/main/static/plugins/datatables-rowgroup')
6 files changed, 581 insertions, 0 deletions
diff --git a/build/resources/main/static/plugins/datatables-rowgroup/css/rowGroup.bootstrap4.css b/build/resources/main/static/plugins/datatables-rowgroup/css/rowGroup.bootstrap4.css new file mode 100644 index 0000000..423f056 --- /dev/null +++ b/build/resources/main/static/plugins/datatables-rowgroup/css/rowGroup.bootstrap4.css @@ -0,0 +1,39 @@ +table.dataTable tr.dtrg-group td { + background-color: #e0e0e0; +} + +table.dataTable tr.dtrg-group.dtrg-level-0 td { + font-weight: bold; +} + +table.dataTable tr.dtrg-group.dtrg-level-1 td, +table.dataTable tr.dtrg-group.dtrg-level-2 td, +table.dataTable tr.dtrg-group.dtrg-level-3 td, +table.dataTable tr.dtrg-group.dtrg-level-4 td, +table.dataTable tr.dtrg-group.dtrg-level-5 td { + background-color: #f0f0f0; + padding-top: 0.25em; + padding-bottom: 0.25em; + padding-left: 2em; + font-size: 0.9em; +} + +table.dataTable tr.dtrg-group.dtrg-level-2 td { + background-color: #f3f3f3; + padding-left: 2.5em; +} + +table.dataTable tr.dtrg-group.dtrg-level-3 td { + background-color: #f3f3f3; + padding-left: 3em; +} + +table.dataTable tr.dtrg-group.dtrg-level-4 td { + background-color: #f3f3f3; + padding-left: 3.5em; +} + +table.dataTable tr.dtrg-group.dtrg-level-5 td { + background-color: #f3f3f3; + padding-left: 4em; +} diff --git a/build/resources/main/static/plugins/datatables-rowgroup/css/rowGroup.bootstrap4.min.css b/build/resources/main/static/plugins/datatables-rowgroup/css/rowGroup.bootstrap4.min.css new file mode 100644 index 0000000..f0e0ee1 --- /dev/null +++ b/build/resources/main/static/plugins/datatables-rowgroup/css/rowGroup.bootstrap4.min.css @@ -0,0 +1 @@ +table.dataTable tr.dtrg-group td{background-color:#e0e0e0}table.dataTable tr.dtrg-group.dtrg-level-0 td{font-weight:bold}table.dataTable tr.dtrg-group.dtrg-level-1 td,table.dataTable tr.dtrg-group.dtrg-level-2 td,table.dataTable tr.dtrg-group.dtrg-level-3 td,table.dataTable tr.dtrg-group.dtrg-level-4 td,table.dataTable tr.dtrg-group.dtrg-level-5 td{background-color:#f0f0f0;padding-top:.25em;padding-bottom:.25em;padding-left:2em;font-size:.9em}table.dataTable tr.dtrg-group.dtrg-level-2 td{background-color:#f3f3f3;padding-left:2.5em}table.dataTable tr.dtrg-group.dtrg-level-3 td{background-color:#f3f3f3;padding-left:3em}table.dataTable tr.dtrg-group.dtrg-level-4 td{background-color:#f3f3f3;padding-left:3.5em}table.dataTable tr.dtrg-group.dtrg-level-5 td{background-color:#f3f3f3;padding-left:4em} diff --git a/build/resources/main/static/plugins/datatables-rowgroup/js/dataTables.rowGroup.js b/build/resources/main/static/plugins/datatables-rowgroup/js/dataTables.rowGroup.js new file mode 100644 index 0000000..d1d9ca3 --- /dev/null +++ b/build/resources/main/static/plugins/datatables-rowgroup/js/dataTables.rowGroup.js @@ -0,0 +1,486 @@ +/*! RowGroup 1.1.3 + * ©2017-2021 SpryMedia Ltd - datatables.net/license + */ + +/** + * @summary RowGroup + * @description RowGrouping for DataTables + * @version 1.1.3 + * @file dataTables.rowGroup.js + * @author SpryMedia Ltd (www.sprymedia.co.uk) + * @contact datatables.net + * @copyright Copyright 2017-2021 SpryMedia Ltd. + * + * This source file is free software, available under the following license: + * MIT license - http://datatables.net/license/mit + * + * This source file is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. + * + * For details please refer to: http://www.datatables.net + */ + +(function( factory ){ + if ( typeof define === 'function' && define.amd ) { + // AMD + define( ['jquery', 'datatables.net'], function ( $ ) { + return factory( $, window, document ); + } ); + } + else if ( typeof exports === 'object' ) { + // CommonJS + module.exports = function (root, $) { + if ( ! root ) { + root = window; + } + + if ( ! $ || ! $.fn.dataTable ) { + $ = require('datatables.net')(root, $).$; + } + + return factory( $, root, root.document ); + }; + } + else { + // Browser + factory( jQuery, window, document ); + } +}(function( $, window, document, undefined ) { +'use strict'; +var DataTable = $.fn.dataTable; + + +var RowGroup = function ( dt, opts ) { + // Sanity check that we are using DataTables 1.10 or newer + if ( ! DataTable.versionCheck || ! DataTable.versionCheck( '1.10.8' ) ) { + throw 'RowGroup requires DataTables 1.10.8 or newer'; + } + + // User and defaults configuration object + this.c = $.extend( true, {}, + DataTable.defaults.rowGroup, + RowGroup.defaults, + opts + ); + + // Internal settings + this.s = { + dt: new DataTable.Api( dt ) + }; + + // DOM items + this.dom = { + + }; + + // Check if row grouping has already been initialised on this table + var settings = this.s.dt.settings()[0]; + var existing = settings.rowGroup; + if ( existing ) { + return existing; + } + + settings.rowGroup = this; + this._constructor(); +}; + + +$.extend( RowGroup.prototype, { + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * API methods for DataTables API interface + */ + + /** + * Get/set the grouping data source - need to call draw after this is + * executed as a setter + * @returns string~RowGroup + */ + dataSrc: function ( val ) + { + if ( val === undefined ) { + return this.c.dataSrc; + } + + var dt = this.s.dt; + + this.c.dataSrc = val; + + $(dt.table().node()).triggerHandler( 'rowgroup-datasrc.dt', [ dt, val ] ); + + return this; + }, + + /** + * Disable - need to call draw after this is executed + * @returns RowGroup + */ + disable: function () + { + this.c.enable = false; + return this; + }, + + /** + * Enable - need to call draw after this is executed + * @returns RowGroup + */ + enable: function ( flag ) + { + if ( flag === false ) { + return this.disable(); + } + + this.c.enable = true; + return this; + }, + + /** + * Get enabled flag + * @returns boolean + */ + enabled: function () + { + return this.c.enable; + }, + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Constructor + */ + _constructor: function () + { + var that = this; + var dt = this.s.dt; + var hostSettings = dt.settings()[0]; + + dt.on( 'draw.dtrg', function (e, s) { + if ( that.c.enable && hostSettings === s ) { + that._draw(); + } + } ); + + dt.on( 'column-visibility.dt.dtrg responsive-resize.dt.dtrg', function () { + that._adjustColspan(); + } ); + + dt.on( 'destroy', function () { + dt.off( '.dtrg' ); + } ); + }, + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Private methods + */ + + /** + * Adjust column span when column visibility changes + * @private + */ + _adjustColspan: function () + { + $( 'tr.'+this.c.className, this.s.dt.table().body() ).find('td:visible') + .attr( 'colspan', this._colspan() ); + }, + + /** + * Get the number of columns that a grouping row should span + * @private + */ + _colspan: function () + { + return this.s.dt.columns().visible().reduce( function (a, b) { + return a + b; + }, 0 ); + }, + + + /** + * Update function that is called whenever we need to draw the grouping rows. + * This is basically a bootstrap for the self iterative _group and _groupDisplay + * methods + * @private + */ + _draw: function () + { + var dt = this.s.dt; + var groupedRows = this._group( 0, dt.rows( { page: 'current' } ).indexes() ); + + this._groupDisplay( 0, groupedRows ); + }, + + /** + * Get the grouping information from a data set (index) of rows + * @param {number} level Nesting level + * @param {DataTables.Api} rows API of the rows to consider for this group + * @returns {object[]} Nested grouping information - it is structured like this: + * { + * dataPoint: 'Edinburgh', + * rows: [ 1,2,3,4,5,6,7 ], + * children: [ { + * dataPoint: 'developer' + * rows: [ 1, 2, 3 ] + * }, + * { + * dataPoint: 'support', + * rows: [ 4, 5, 6, 7 ] + * } ] + * } + * @private + */ + _group: function ( level, rows ) { + var fns = Array.isArray( this.c.dataSrc ) ? this.c.dataSrc : [ this.c.dataSrc ]; + var fn = DataTable.ext.oApi._fnGetObjectDataFn( fns[ level ] ); + var dt = this.s.dt; + var group, last; + var data = []; + var that = this; + + for ( var i=0, ien=rows.length ; i<ien ; i++ ) { + var rowIndex = rows[i]; + var rowData = dt.row( rowIndex ).data(); + var group = fn( rowData ); + + if ( group === null || group === undefined ) { + group = that.c.emptyDataGroup; + } + + if ( last === undefined || group !== last ) { + data.push( { + dataPoint: group, + rows: [] + } ); + + last = group; + } + + data[ data.length-1 ].rows.push( rowIndex ); + } + + if ( fns[ level+1 ] !== undefined ) { + for ( var i=0, ien=data.length ; i<ien ; i++ ) { + data[i].children = this._group( level+1, data[i].rows ); + } + } + + return data; + }, + + /** + * Row group display - insert the rows into the document + * @param {number} level Nesting level + * @param {object[]} groups Takes the nested array from `_group` + * @private + */ + _groupDisplay: function ( level, groups ) + { + var dt = this.s.dt; + var display; + + for ( var i=0, ien=groups.length ; i<ien ; i++ ) { + var group = groups[i]; + var groupName = group.dataPoint; + var row; + var rows = group.rows; + + if ( this.c.startRender ) { + display = this.c.startRender.call( this, dt.rows(rows), groupName, level ); + row = this._rowWrap( display, this.c.startClassName, level ); + + if ( row ) { + row.insertBefore( dt.row( rows[0] ).node() ); + } + } + + if ( this.c.endRender ) { + display = this.c.endRender.call( this, dt.rows(rows), groupName, level ); + row = this._rowWrap( display, this.c.endClassName, level ); + + if ( row ) { + row.insertAfter( dt.row( rows[ rows.length-1 ] ).node() ); + } + } + + if ( group.children ) { + this._groupDisplay( level+1, group.children ); + } + } + }, + + /** + * Take a rendered value from an end user and make it suitable for display + * as a row, by wrapping it in a row, or detecting that it is a row. + * @param {node|jQuery|string} display Display value + * @param {string} className Class to add to the row + * @param {array} group + * @param {number} group level + * @private + */ + _rowWrap: function ( display, className, level ) + { + var row; + + if ( display === null || display === '' ) { + display = this.c.emptyDataGroup; + } + + if ( display === undefined || display === null ) { + return null; + } + + if ( typeof display === 'object' && display.nodeName && display.nodeName.toLowerCase() === 'tr') { + row = $(display); + } + else if (display instanceof $ && display.length && display[0].nodeName.toLowerCase() === 'tr') { + row = display; + } + else { + row = $('<tr/>') + .append( + $('<td/>') + .attr( 'colspan', this._colspan() ) + .append( display ) + ); + } + + return row + .addClass( this.c.className ) + .addClass( className ) + .addClass( 'dtrg-level-'+level ); + } +} ); + + +/** + * RowGroup default settings for initialisation + * + * @namespace + * @name RowGroup.defaults + * @static + */ +RowGroup.defaults = { + /** + * Class to apply to grouping rows - applied to both the start and + * end grouping rows. + * @type string + */ + className: 'dtrg-group', + + /** + * Data property from which to read the grouping information + * @type string|integer|array + */ + dataSrc: 0, + + /** + * Text to show if no data is found for a group + * @type string + */ + emptyDataGroup: 'No group', + + /** + * Initial enablement state + * @boolean + */ + enable: true, + + /** + * Class name to give to the end grouping row + * @type string + */ + endClassName: 'dtrg-end', + + /** + * End grouping label function + * @function + */ + endRender: null, + + /** + * Class name to give to the start grouping row + * @type string + */ + startClassName: 'dtrg-start', + + /** + * Start grouping label function + * @function + */ + startRender: function ( rows, group ) { + return group; + } +}; + + +RowGroup.version = "1.1.3"; + + +$.fn.dataTable.RowGroup = RowGroup; +$.fn.DataTable.RowGroup = RowGroup; + + +DataTable.Api.register( 'rowGroup()', function () { + return this; +} ); + +DataTable.Api.register( 'rowGroup().disable()', function () { + return this.iterator( 'table', function (ctx) { + if ( ctx.rowGroup ) { + ctx.rowGroup.enable( false ); + } + } ); +} ); + +DataTable.Api.register( 'rowGroup().enable()', function ( opts ) { + return this.iterator( 'table', function (ctx) { + if ( ctx.rowGroup ) { + ctx.rowGroup.enable( opts === undefined ? true : opts ); + } + } ); +} ); + +DataTable.Api.register( 'rowGroup().enabled()', function () { + var ctx = this.context; + + return ctx.length && ctx[0].rowGroup ? + ctx[0].rowGroup.enabled() : + false; +} ); + +DataTable.Api.register( 'rowGroup().dataSrc()', function ( val ) { + if ( val === undefined ) { + return this.context[0].rowGroup.dataSrc(); + } + + return this.iterator( 'table', function (ctx) { + if ( ctx.rowGroup ) { + ctx.rowGroup.dataSrc( val ); + } + } ); +} ); + + +// Attach a listener to the document which listens for DataTables initialisation +// events so we can automatically initialise +$(document).on( 'preInit.dt.dtrg', function (e, settings, json) { + if ( e.namespace !== 'dt' ) { + return; + } + + var init = settings.oInit.rowGroup; + var defaults = DataTable.defaults.rowGroup; + + if ( init || defaults ) { + var opts = $.extend( {}, defaults, init ); + + if ( init !== false ) { + new RowGroup( settings, opts ); + } + } +} ); + + +return RowGroup; + +})); diff --git a/build/resources/main/static/plugins/datatables-rowgroup/js/dataTables.rowGroup.min.js b/build/resources/main/static/plugins/datatables-rowgroup/js/dataTables.rowGroup.min.js new file mode 100644 index 0000000..3bb37fd --- /dev/null +++ b/build/resources/main/static/plugins/datatables-rowgroup/js/dataTables.rowGroup.min.js @@ -0,0 +1,12 @@ +/*! + RowGroup 1.1.3 + ©2017-2021 SpryMedia Ltd - datatables.net/license +*/ +(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(f){return c(f,window,document)}):"object"===typeof exports?module.exports=function(f,i){f||(f=window);if(!i||!i.fn.dataTable)i=require("datatables.net")(f,i).$;return c(i,f,f.document)}:c(jQuery,window,document)})(function(c,f,i,k){var d=c.fn.dataTable,g=function(a,b){if(!d.versionCheck||!d.versionCheck("1.10.8"))throw"RowGroup requires DataTables 1.10.8 or newer";this.c=c.extend(!0,{},d.defaults.rowGroup, +g.defaults,b);this.s={dt:new d.Api(a)};this.dom={};var m=this.s.dt.settings()[0],e=m.rowGroup;if(e)return e;m.rowGroup=this;this._constructor()};c.extend(g.prototype,{dataSrc:function(a){if(a===k)return this.c.dataSrc;var b=this.s.dt;this.c.dataSrc=a;c(b.table().node()).triggerHandler("rowgroup-datasrc.dt",[b,a]);return this},disable:function(){this.c.enable=!1;return this},enable:function(a){if(!1===a)return this.disable();this.c.enable=!0;return this},enabled:function(){return this.c.enable},_constructor:function(){var a= +this,b=this.s.dt,m=b.settings()[0];b.on("draw.dtrg",function(b,c){a.c.enable&&m===c&&a._draw()});b.on("column-visibility.dt.dtrg responsive-resize.dt.dtrg",function(){a._adjustColspan()});b.on("destroy",function(){b.off(".dtrg")})},_adjustColspan:function(){c("tr."+this.c.className,this.s.dt.table().body()).find("td:visible").attr("colspan",this._colspan())},_colspan:function(){return this.s.dt.columns().visible().reduce(function(a,b){return a+b},0)},_draw:function(){var a=this._group(0,this.s.dt.rows({page:"current"}).indexes()); +this._groupDisplay(0,a)},_group:function(a,b){for(var c=Array.isArray(this.c.dataSrc)?this.c.dataSrc:[this.c.dataSrc],e=d.ext.oApi._fnGetObjectDataFn(c[a]),f=this.s.dt,j,g,l=[],h=0,i=b.length;h<i;h++){var n=b[h];j=f.row(n).data();j=e(j);if(null===j||j===k)j=this.c.emptyDataGroup;if(g===k||j!==g)l.push({dataPoint:j,rows:[]}),g=j;l[l.length-1].rows.push(n)}if(c[a+1]!==k){h=0;for(i=l.length;h<i;h++)l[h].children=this._group(a+1,l[h].rows)}return l},_groupDisplay:function(a,b){for(var c=this.s.dt,e,g= +0,i=b.length;g<i;g++){var d=b[g],f=d.dataPoint,h=d.rows;this.c.startRender&&(e=this.c.startRender.call(this,c.rows(h),f,a),(e=this._rowWrap(e,this.c.startClassName,a))&&e.insertBefore(c.row(h[0]).node()));this.c.endRender&&(e=this.c.endRender.call(this,c.rows(h),f,a),(e=this._rowWrap(e,this.c.endClassName,a))&&e.insertAfter(c.row(h[h.length-1]).node()));d.children&&this._groupDisplay(a+1,d.children)}},_rowWrap:function(a,b,d){if(null===a||""===a)a=this.c.emptyDataGroup;return a===k||null===a?null: +("object"===typeof a&&a.nodeName&&"tr"===a.nodeName.toLowerCase()?c(a):a instanceof c&&a.length&&"tr"===a[0].nodeName.toLowerCase()?a:c("<tr/>").append(c("<td/>").attr("colspan",this._colspan()).append(a))).addClass(this.c.className).addClass(b).addClass("dtrg-level-"+d)}});g.defaults={className:"dtrg-group",dataSrc:0,emptyDataGroup:"No group",enable:!0,endClassName:"dtrg-end",endRender:null,startClassName:"dtrg-start",startRender:function(a,b){return b}};g.version="1.1.3";c.fn.dataTable.RowGroup= +g;c.fn.DataTable.RowGroup=g;d.Api.register("rowGroup()",function(){return this});d.Api.register("rowGroup().disable()",function(){return this.iterator("table",function(a){a.rowGroup&&a.rowGroup.enable(!1)})});d.Api.register("rowGroup().enable()",function(a){return this.iterator("table",function(b){b.rowGroup&&b.rowGroup.enable(a===k?!0:a)})});d.Api.register("rowGroup().enabled()",function(){var a=this.context;return a.length&&a[0].rowGroup?a[0].rowGroup.enabled():!1});d.Api.register("rowGroup().dataSrc()", +function(a){return a===k?this.context[0].rowGroup.dataSrc():this.iterator("table",function(b){b.rowGroup&&b.rowGroup.dataSrc(a)})});c(i).on("preInit.dt.dtrg",function(a,b){if("dt"===a.namespace){var f=b.oInit.rowGroup,e=d.defaults.rowGroup;if(f||e)e=c.extend({},e,f),!1!==f&&new g(b,e)}});return g}); diff --git a/build/resources/main/static/plugins/datatables-rowgroup/js/rowGroup.bootstrap4.js b/build/resources/main/static/plugins/datatables-rowgroup/js/rowGroup.bootstrap4.js new file mode 100644 index 0000000..97d0243 --- /dev/null +++ b/build/resources/main/static/plugins/datatables-rowgroup/js/rowGroup.bootstrap4.js @@ -0,0 +1,38 @@ +/*! Bootstrap 4 styling wrapper for RowGroup + * ©2018 SpryMedia Ltd - datatables.net/license + */ + +(function( factory ){ + if ( typeof define === 'function' && define.amd ) { + // AMD + define( ['jquery', 'datatables.net-bs4', 'datatables.net-rowgroup'], function ( $ ) { + return factory( $, window, document ); + } ); + } + else if ( typeof exports === 'object' ) { + // CommonJS + module.exports = function (root, $) { + if ( ! root ) { + root = window; + } + + if ( ! $ || ! $.fn.dataTable ) { + $ = require('datatables.net-bs4')(root, $).$; + } + + if ( ! $.fn.dataTable.RowGroup ) { + require('datatables.net-rowgroup')(root, $); + } + + return factory( $, root, root.document ); + }; + } + else { + // Browser + factory( jQuery, window, document ); + } +}(function( $, window, document, undefined ) { + +return $.fn.dataTable; + +}));
\ No newline at end of file diff --git a/build/resources/main/static/plugins/datatables-rowgroup/js/rowGroup.bootstrap4.min.js b/build/resources/main/static/plugins/datatables-rowgroup/js/rowGroup.bootstrap4.min.js new file mode 100644 index 0000000..f8c42c0 --- /dev/null +++ b/build/resources/main/static/plugins/datatables-rowgroup/js/rowGroup.bootstrap4.min.js @@ -0,0 +1,5 @@ +/*! + Bootstrap 4 styling wrapper for RowGroup + ©2018 SpryMedia Ltd - datatables.net/license +*/ +(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs4","datatables.net-rowgroup"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-bs4")(a,b).$);b.fn.dataTable.RowGroup||require("datatables.net-rowgroup")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable}); |