| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557 | 
							- /*! FixedColumns 4.0.0
 
-  * 2019-2020 SpryMedia Ltd - datatables.net/license
 
-  */
 
- (function () {
 
-     'use strict';
 
-     var $;
 
-     var dataTable;
 
-     function setJQuery(jq) {
 
-         $ = jq;
 
-         dataTable = $.fn.dataTable;
 
-     }
 
-     var FixedColumns = /** @class */ (function () {
 
-         function FixedColumns(settings, opts) {
 
-             var _this = this;
 
-             // Check that the required version of DataTables is included
 
-             if (!dataTable || !dataTable.versionCheck || !dataTable.versionCheck('1.10.0')) {
 
-                 throw new Error('StateRestore requires DataTables 1.10 or newer');
 
-             }
 
-             var table = new dataTable.Api(settings);
 
-             this.classes = $.extend(true, {}, FixedColumns.classes);
 
-             // Get options from user
 
-             this.c = $.extend(true, {}, FixedColumns.defaults, opts);
 
-             // Backwards compatibility for deprecated leftColumns
 
-             if (opts.left === undefined && this.c.leftColumns !== undefined) {
 
-                 this.c.left = this.c.leftColumns;
 
-             }
 
-             // Backwards compatibility for deprecated rightColumns
 
-             if (opts.right === undefined && this.c.rightColumns !== undefined) {
 
-                 this.c.right = this.c.rightColumns;
 
-             }
 
-             this.s = {
 
-                 barWidth: 0,
 
-                 dt: table,
 
-                 rtl: $(table.table().node()).css('direction') === 'rtl'
 
-             };
 
-             // Set the bar width if vertical scrolling is enabled
 
-             if (this.s.dt.settings()[0].oInit.scrollY === true) {
 
-                 this.s.barWidth = this.s.dt.settings()[0].oBrowser.barWidth;
 
-             }
 
-             // Common CSS for all blockers
 
-             var blockerCSS = {
 
-                 'background-color': 'white',
 
-                 'bottom': '0px',
 
-                 'display': 'block',
 
-                 'position': 'absolute',
 
-                 'width': this.s.barWidth + 1 + 'px'
 
-             };
 
-             this.dom = {
 
-                 leftBottomBlocker: $('<div>')
 
-                     .css(blockerCSS)
 
-                     .css('left', 0)
 
-                     .addClass(this.classes.leftBottomBlocker),
 
-                 leftTopBlocker: $('<div>')
 
-                     .css(blockerCSS)
 
-                     .css({
 
-                     left: 0,
 
-                     top: 0
 
-                 })
 
-                     .addClass(this.classes.leftTopBlocker),
 
-                 rightBottomBlocker: $('<div>')
 
-                     .css(blockerCSS)
 
-                     .css('right', 0)
 
-                     .addClass(this.classes.rightBottomBlocker),
 
-                 rightTopBlocker: $('<div>')
 
-                     .css(blockerCSS)
 
-                     .css({
 
-                     right: 0,
 
-                     top: 0
 
-                 })
 
-                     .addClass(this.classes.rightTopBlocker)
 
-             };
 
-             if (this.s.dt.settings()[0]._bInitComplete) {
 
-                 // Fixed Columns Initialisation
 
-                 this._addStyles();
 
-                 this._setKeyTableListener();
 
-             }
 
-             else {
 
-                 table.one('preInit.dt', function () {
 
-                     // Fixed Columns Initialisation
 
-                     _this._addStyles();
 
-                     _this._setKeyTableListener();
 
-                 });
 
-             }
 
-             // Make class available through dt object
 
-             table.settings()[0]._fixedColumns = this;
 
-             return this;
 
-         }
 
-         /**
 
-          * Getter/Setter for the fixedColumns.left property
 
-          *
 
-          * @param newVal Optional. If present this will be the new value for the number of left fixed columns
 
-          * @returns The number of left fixed columns
 
-          */
 
-         FixedColumns.prototype.left = function (newVal) {
 
-             // If the value is to change
 
-             if (newVal !== undefined) {
 
-                 // Set the new values and redraw the columns
 
-                 this.c.left = newVal;
 
-                 this._addStyles();
 
-             }
 
-             return this.c.left;
 
-         };
 
-         /**
 
-          * Getter/Setter for the fixedColumns.left property
 
-          *
 
-          * @param newVal Optional. If present this will be the new value for the number of right fixed columns
 
-          * @returns The number of right fixed columns
 
-          */
 
-         FixedColumns.prototype.right = function (newVal) {
 
-             // If the value is to change
 
-             if (newVal !== undefined) {
 
-                 // Set the new values and redraw the columns
 
-                 this.c.right = newVal;
 
-                 this._addStyles();
 
-             }
 
-             return this.c.right;
 
-         };
 
-         /**
 
-          * Iterates over the columns, fixing the appropriate ones to the left and right
 
-          */
 
-         FixedColumns.prototype._addStyles = function () {
 
-             var parentDiv = null;
 
-             // Get the header and it's height
 
-             var header = this.s.dt.column(0).header();
 
-             var headerHeight = null;
 
-             if (header !== null) {
 
-                 header = $(header);
 
-                 headerHeight = header.outerHeight() + 1;
 
-                 parentDiv = $(header.closest('div.dataTables_scroll')).css('position', 'relative');
 
-             }
 
-             // Get the footer and it's height
 
-             var footer = this.s.dt.column(0).footer();
 
-             var footerHeight = null;
 
-             if (footer !== null) {
 
-                 footer = $(footer);
 
-                 footerHeight = footer.outerHeight();
 
-                 // Only attempt to retrieve the parentDiv if it has not been retrieved already
 
-                 if (parentDiv === null) {
 
-                     parentDiv = $(footer.closest('div.dataTables_scroll')).css('position', 'relative');
 
-                 }
 
-             }
 
-             // Get the number of columns in the table - this is used often so better to only make 1 api call
 
-             var numCols = this.s.dt.columns().data().toArray().length;
 
-             // Tracker for the number of pixels should be left to the left of the table
 
-             var distLeft = 0;
 
-             // Get all of the row elements in the table
 
-             var rows = $(this.s.dt.table().node()).children('tbody').children('tr');
 
-             var invisibles = 0;
 
-             // Iterate over all of the columns
 
-             for (var i = 0; i < numCols; i++) {
 
-                 var column = this.s.dt.column(i);
 
-                 if (!column.visible()) {
 
-                     invisibles++;
 
-                     continue;
 
-                 }
 
-                 // Get the columns header and footer element
 
-                 var colHeader = $(column.header());
 
-                 var colFooter = $(column.footer());
 
-                 // If i is less than the value of left then this column should be fixed left
 
-                 if (i < this.c.left) {
 
-                     $(this.s.dt.table().node()).addClass(this.classes.tableFixedLeft);
 
-                     parentDiv.addClass(this.classes.tableFixedLeft);
 
-                     // Add the width of the previous node - only if we are on atleast the second column
 
-                     if (i !== 0) {
 
-                         var prevCol = this.s.dt.column(i - 1);
 
-                         if (prevCol.visible()) {
 
-                             distLeft += $(prevCol.nodes()[0]).outerWidth();
 
-                         }
 
-                     }
 
-                     // Iterate over all of the rows, fixing the cell to the left
 
-                     for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {
 
-                         var row = rows_1[_i];
 
-                         $($(row).children()[i - invisibles])
 
-                             .css(this._getCellCSS(false, distLeft, 'left'))
 
-                             .addClass(this.classes.fixedLeft);
 
-                     }
 
-                     // Add the css for the header and the footer
 
-                     colHeader
 
-                         .css(this._getCellCSS(true, distLeft, 'left'))
 
-                         .addClass(this.classes.fixedLeft);
 
-                     colFooter
 
-                         .css(this._getCellCSS(true, distLeft, 'left'))
 
-                         .addClass(this.classes.fixedLeft);
 
-                 }
 
-                 else {
 
-                     // Iteriate through all of the rows, making sure they aren't currently trying to fix left
 
-                     for (var _a = 0, rows_2 = rows; _a < rows_2.length; _a++) {
 
-                         var row = rows_2[_a];
 
-                         var cell = $($(row).children()[i - invisibles]);
 
-                         // If the cell is trying to fix to the left, remove the class and the css
 
-                         if (cell.hasClass(this.classes.fixedLeft)) {
 
-                             cell
 
-                                 .css(this._clearCellCSS('left'))
 
-                                 .removeClass(this.classes.fixedLeft);
 
-                         }
 
-                     }
 
-                     // Make sure the header for this column isn't fixed left
 
-                     if (colHeader.hasClass(this.classes.fixedLeft)) {
 
-                         colHeader
 
-                             .css(this._clearCellCSS('left'))
 
-                             .removeClass(this.classes.fixedLeft);
 
-                     }
 
-                     // Make sure the footer for this column isn't fixed left
 
-                     if (colFooter.hasClass(this.classes.fixedLeft)) {
 
-                         colFooter
 
-                             .css(this._clearCellCSS('left'))
 
-                             .removeClass(this.classes.fixedLeft);
 
-                     }
 
-                 }
 
-             }
 
-             // If there is a header with the index class and reading rtl then add left top blocker
 
-             if (header !== null && !header.hasClass('index')) {
 
-                 if (this.s.rtl) {
 
-                     this.dom.leftTopBlocker.outerHeight(headerHeight);
 
-                     parentDiv.append(this.dom.leftTopBlocker);
 
-                 }
 
-                 else {
 
-                     this.dom.rightTopBlocker.outerHeight(headerHeight);
 
-                     parentDiv.append(this.dom.rightTopBlocker);
 
-                 }
 
-             }
 
-             // If there is a footer with the index class and reading rtl then add left bottom blocker
 
-             if (footer !== null && !footer.hasClass('index')) {
 
-                 if (this.s.rtl) {
 
-                     this.dom.leftBottomBlocker.outerHeight(footerHeight);
 
-                     parentDiv.append(this.dom.leftBottomBlocker);
 
-                 }
 
-                 else {
 
-                     this.dom.rightBottomBlocker.outerHeight(footerHeight);
 
-                     parentDiv.append(this.dom.rightBottomBlocker);
 
-                 }
 
-             }
 
-             var distRight = 0;
 
-             invisibles = 0;
 
-             for (var i = numCols - 1; i >= 0; i--) {
 
-                 var column = this.s.dt.column(i);
 
-                 // Get the columns header and footer element
 
-                 var colHeader = $(column.header());
 
-                 var colFooter = $(column.footer());
 
-                 if (!column.visible()) {
 
-                     invisibles++;
 
-                     continue;
 
-                 }
 
-                 if (i >= numCols - this.c.right) {
 
-                     $(this.s.dt.table().node()).addClass(this.classes.tableFixedRight);
 
-                     parentDiv.addClass(this.classes.tableFixedLeft);
 
-                     // Add the widht of the previous node, only if we are on atleast the second column
 
-                     if (i !== numCols - 1) {
 
-                         var prevCol = this.s.dt.column(i + 1);
 
-                         if (prevCol.visible()) {
 
-                             distRight += $(prevCol.nodes()[0]).outerWidth();
 
-                         }
 
-                     }
 
-                     // Iterate over all of the rows, fixing the cell to the right
 
-                     for (var _b = 0, rows_3 = rows; _b < rows_3.length; _b++) {
 
-                         var row = rows_3[_b];
 
-                         $($(row).children()[i + invisibles])
 
-                             .css(this._getCellCSS(false, distRight, 'right'))
 
-                             .addClass(this.classes.fixedRight);
 
-                     }
 
-                     // Add the css for the header and the footer
 
-                     colHeader
 
-                         .css(this._getCellCSS(true, distRight, 'right'))
 
-                         .addClass(this.classes.fixedRight);
 
-                     colFooter
 
-                         .css(this._getCellCSS(true, distRight, 'right'))
 
-                         .addClass(this.classes.fixedRight);
 
-                 }
 
-                 else {
 
-                     // Iteriate through all of the rows, making sure they aren't currently trying to fix right
 
-                     for (var _c = 0, rows_4 = rows; _c < rows_4.length; _c++) {
 
-                         var row = rows_4[_c];
 
-                         var cell = $($(row).children()[i + invisibles]);
 
-                         // If the cell is trying to fix to the right, remove the class and the css
 
-                         if (cell.hasClass(this.classes.fixedRight)) {
 
-                             cell
 
-                                 .css(this._clearCellCSS('right'))
 
-                                 .removeClass(this.classes.fixedRight);
 
-                         }
 
-                     }
 
-                     // Make sure the header for this column isn't fixed right
 
-                     if (colHeader.hasClass(this.classes.fixedRight)) {
 
-                         colHeader
 
-                             .css(this._clearCellCSS('right'))
 
-                             .removeClass(this.classes.fixedRight);
 
-                     }
 
-                     // Make sure the footer for this column isn't fixed right
 
-                     if (colFooter.hasClass(this.classes.fixedRight)) {
 
-                         colFooter
 
-                             .css(this._clearCellCSS('right'))
 
-                             .removeClass(this.classes.fixedRight);
 
-                     }
 
-                 }
 
-             }
 
-             // If there is a header with the index class and reading rtl then add right top blocker
 
-             if (header) {
 
-                 if (!this.s.rtl) {
 
-                     this.dom.rightTopBlocker.outerHeight(headerHeight);
 
-                     parentDiv.append(this.dom.rightTopBlocker);
 
-                 }
 
-                 else {
 
-                     this.dom.leftTopBlocker.outerHeight(headerHeight);
 
-                     parentDiv.append(this.dom.leftTopBlocker);
 
-                 }
 
-             }
 
-             // If there is a footer with the index class and reading rtl then add right bottom blocker
 
-             if (footer) {
 
-                 if (!this.s.rtl) {
 
-                     this.dom.rightBottomBlocker.outerHeight(footerHeight);
 
-                     parentDiv.append(this.dom.rightBottomBlocker);
 
-                 }
 
-                 else {
 
-                     this.dom.leftBottomBlocker.outerHeight(footerHeight);
 
-                     parentDiv.append(this.dom.leftBottomBlocker);
 
-                 }
 
-             }
 
-         };
 
-         /**
 
-          * Gets the correct CSS for the cell, header or footer based on options provided
 
-          *
 
-          * @param header Whether this cell is a header or a footer
 
-          * @param dist The distance that the cell should be moved away from the edge
 
-          * @param lr Indicator of fixing to the left or the right
 
-          * @returns An object containing the correct css
 
-          */
 
-         FixedColumns.prototype._getCellCSS = function (header, dist, lr) {
 
-             if (lr === 'left') {
 
-                 return !this.s.rtl ?
 
-                     {
 
-                         left: dist + 'px',
 
-                         position: 'sticky'
 
-                     } :
 
-                     {
 
-                         position: 'sticky',
 
-                         right: dist + (header ? this.s.barWidth : 0) + 'px'
 
-                     };
 
-             }
 
-             else {
 
-                 return !this.s.rtl ?
 
-                     {
 
-                         position: 'sticky',
 
-                         right: dist + (header ? this.s.barWidth : 0) + 'px'
 
-                     } :
 
-                     {
 
-                         left: dist + 'px',
 
-                         position: 'sticky'
 
-                     };
 
-             }
 
-         };
 
-         /**
 
-          * Gets the css that is required to clear the fixing to a side
 
-          *
 
-          * @param lr Indicator of fixing to the left or the right
 
-          * @returns An object containing the correct css
 
-          */
 
-         FixedColumns.prototype._clearCellCSS = function (lr) {
 
-             if (lr === 'left') {
 
-                 return !this.s.rtl ?
 
-                     {
 
-                         left: '',
 
-                         position: ''
 
-                     } :
 
-                     {
 
-                         position: '',
 
-                         right: ''
 
-                     };
 
-             }
 
-             else {
 
-                 return !this.s.rtl ?
 
-                     {
 
-                         position: '',
 
-                         right: ''
 
-                     } :
 
-                     {
 
-                         left: '',
 
-                         position: ''
 
-                     };
 
-             }
 
-         };
 
-         FixedColumns.prototype._setKeyTableListener = function () {
 
-             var _this = this;
 
-             this.s.dt.on('key-focus', function (e, dt, cell) {
 
-                 var cellPos = $(cell.node()).offset();
 
-                 var scroll = $($(_this.s.dt.table().node()).closest('div.dataTables_scrollBody'));
 
-                 // If there are fixed columns to the left
 
-                 if (_this.c.left > 0) {
 
-                     // Get the rightmost left fixed column header, it's position and it's width
 
-                     var rightMost = $(_this.s.dt.column(_this.c.left - 1).header());
 
-                     var rightMostPos = rightMost.offset();
 
-                     var rightMostWidth = rightMost.outerWidth();
 
-                     // If the current highlighted cell is left of the rightmost cell on the screen
 
-                     if (cellPos.left < rightMostPos.left + rightMostWidth) {
 
-                         // Scroll it into view
 
-                         var currScroll = scroll.scrollLeft();
 
-                         scroll.scrollLeft(currScroll - (rightMostPos.left + rightMostWidth - cellPos.left));
 
-                     }
 
-                 }
 
-                 // If there are fixed columns to the right
 
-                 if (_this.c.right > 0) {
 
-                     // Get the number of columns and the width of the cell as doing right side calc
 
-                     var numCols = _this.s.dt.columns().data().toArray().length;
 
-                     var cellWidth = $(cell.node()).outerWidth();
 
-                     // Get the leftmost right fixed column header and it's position
 
-                     var leftMost = $(_this.s.dt.column(numCols - _this.c.right).header());
 
-                     var leftMostPos = leftMost.offset();
 
-                     // If the current highlighted cell is right of the leftmost cell on the screen
 
-                     if (cellPos.left + cellWidth > leftMostPos.left) {
 
-                         // Scroll it into view
 
-                         var currScroll = scroll.scrollLeft();
 
-                         scroll.scrollLeft(currScroll - (leftMostPos.left - (cellPos.left + cellWidth)));
 
-                     }
 
-                 }
 
-             });
 
-             // Whenever a draw occurs there is potential for the data to have changed and therefore also the column widths
 
-             // Therefore it is necessary to recalculate the values for the fixed columns
 
-             this.s.dt.on('draw', function () {
 
-                 _this._addStyles();
 
-             });
 
-             this.s.dt.on('column-reorder', function () {
 
-                 _this._addStyles();
 
-             });
 
-             this.s.dt.on('column-visibility', function () {
 
-                 _this._addStyles();
 
-             });
 
-         };
 
-         FixedColumns.version = '4.0.0';
 
-         FixedColumns.classes = {
 
-             fixedLeft: 'dtfc-fixed-left',
 
-             fixedRight: 'dtfc-fixed-right',
 
-             leftBottomBlocker: 'dtfc-left-bottom-blocker',
 
-             leftTopBlocker: 'dtfc-left-top-blocker',
 
-             rightBottomBlocker: 'dtfc-right-bottom-blocker',
 
-             rightTopBlocker: 'dtfc-right-top-blocker',
 
-             tableFixedLeft: 'dtfc-has-left',
 
-             tableFixedRight: 'dtfc-has-right'
 
-         };
 
-         FixedColumns.defaults = {
 
-             i18n: {
 
-                 button: 'FixedColumns'
 
-             },
 
-             left: 1,
 
-             right: 0
 
-         };
 
-         return FixedColumns;
 
-     }());
 
-     /*! FixedColumns 4.0.0
 
-      * 2019-2020 SpryMedia Ltd - datatables.net/license
 
-      */
 
-     // DataTables extensions common UMD. Note that this allows for AMD, CommonJS
 
-     // (with window and jQuery being allowed as parameters to the returned
 
-     // function) or just default browser loading.
 
-     (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) {
 
-                     // eslint-disable-next-line @typescript-eslint/no-var-requires
 
-                     $ = require('datatables.net')(root, $).$;
 
-                 }
 
-                 return factory($, root, root.document);
 
-             };
 
-         }
 
-         else {
 
-             // Browser - assume jQuery has already been loaded
 
-             factory(window.jQuery, window, document);
 
-         }
 
-     }(function ($, window, document) {
 
-         setJQuery($);
 
-         var dataTable = $.fn.dataTable;
 
-         $.fn.dataTable.FixedColumns = FixedColumns;
 
-         $.fn.DataTable.FixedColumns = FixedColumns;
 
-         var apiRegister = $.fn.dataTable.Api.register;
 
-         apiRegister('fixedColumns()', function () {
 
-             return this;
 
-         });
 
-         apiRegister('fixedColumns().left()', function (newVal) {
 
-             var ctx = this.context[0];
 
-             if (newVal !== undefined) {
 
-                 ctx._fixedColumns.left(newVal);
 
-                 return this;
 
-             }
 
-             else {
 
-                 return ctx._fixedColumns.left();
 
-             }
 
-         });
 
-         apiRegister('fixedColumns().right()', function (newVal) {
 
-             var ctx = this.context[0];
 
-             if (newVal !== undefined) {
 
-                 ctx._fixedColumns.right(newVal);
 
-                 return this;
 
-             }
 
-             else {
 
-                 return ctx._fixedColumns.right();
 
-             }
 
-         });
 
-         $.fn.dataTable.ext.buttons.fixedColumns = {
 
-             action: function (e, dt, node, config) {
 
-                 if ($(node).attr('active')) {
 
-                     $(node).removeAttr('active').removeClass('active');
 
-                     dt.fixedColumns().left(0);
 
-                     dt.fixedColumns().right(0);
 
-                 }
 
-                 else {
 
-                     $(node).attr('active', true).addClass('active');
 
-                     dt.fixedColumns().left(config.config.left);
 
-                     dt.fixedColumns().right(config.config.right);
 
-                 }
 
-             },
 
-             config: {
 
-                 left: 1,
 
-                 right: 0
 
-             },
 
-             init: function (dt, node, config) {
 
-                 if (dt.settings()[0]._fixedColumns === undefined) {
 
-                     _init(dt.settings(), config);
 
-                 }
 
-                 $(node).attr('active', true).addClass('active');
 
-                 dt.button(node).text(config.text || dt.i18n('buttons.fixedColumns', dt.settings()[0]._fixedColumns.c.i18n.button));
 
-             },
 
-             text: null
 
-         };
 
-         function _init(settings, options) {
 
-             if (options === void 0) { options = null; }
 
-             var api = new dataTable.Api(settings);
 
-             var opts = options
 
-                 ? options
 
-                 : api.init().fixedColumns || dataTable.defaults.fixedColumns;
 
-             var fixedColumns = new FixedColumns(api, opts);
 
-             return fixedColumns;
 
-         }
 
-         // Attach a listener to the document which listens for DataTables initialisation
 
-         // events so we can automatically initialise
 
-         $(document).on('init.dt.dtfc', function (e, settings) {
 
-             if (e.namespace !== 'dt') {
 
-                 return;
 
-             }
 
-             if (settings.oInit.fixedColumns ||
 
-                 dataTable.defaults.fixedColumns) {
 
-                 if (!settings._fixedColumns) {
 
-                     _init(settings, null);
 
-                 }
 
-             }
 
-         });
 
-     }));
 
- }());
 
 
  |