Index: ssts-web/src/main/webapp/dx-disinfectsystem/plugins/bootstrap-table-fixed-columns-master/bootstrap-table-fixed-columns.css =================================================================== diff -u --- ssts-web/src/main/webapp/dx-disinfectsystem/plugins/bootstrap-table-fixed-columns-master/bootstrap-table-fixed-columns.css (revision 0) +++ ssts-web/src/main/webapp/dx-disinfectsystem/plugins/bootstrap-table-fixed-columns-master/bootstrap-table-fixed-columns.css (revision 24381) @@ -0,0 +1,27 @@ +.fixed-table-header-columns, +.fixed-table-body-columns { + position: absolute; + background-color: #fff; + display: none; + box-sizing: border-box; + overflow: hidden; +} + +.fixed-table-header-columns .table, +.fixed-table-body-columns .table { + border-right: 1px solid #ddd; +} + +.fixed-table-header-columns .table.table-no-bordered, +.fixed-table-body-columns .table.table-no-bordered { + border-right: 1px solid transparent; +} + +.fixed-table-body-columns table { + position: absolute; + animation: none; +} + +.bootstrap-table .table-hover > tbody > tr.hover > td{ + background-color: #f5f5f5; +} \ No newline at end of file Index: ssts-web/src/main/webapp/dx-disinfectsystem/plugins/bootstrap-table-fixed-columns-master/bootstrap-table-fixed-columns.js =================================================================== diff -u --- ssts-web/src/main/webapp/dx-disinfectsystem/plugins/bootstrap-table-fixed-columns-master/bootstrap-table-fixed-columns.js (revision 0) +++ ssts-web/src/main/webapp/dx-disinfectsystem/plugins/bootstrap-table-fixed-columns-master/bootstrap-table-fixed-columns.js (revision 24381) @@ -0,0 +1,177 @@ +/** + * @author zhixin wen + * @version: v1.0.1 + */ + +(function ($) { + 'use strict'; + + $.extend($.fn.bootstrapTable.defaults, { + fixedColumns: false, + fixedNumber: 1 + }); + + var BootstrapTable = $.fn.bootstrapTable.Constructor, + _initHeader = BootstrapTable.prototype.initHeader, + _initBody = BootstrapTable.prototype.initBody, + _resetView = BootstrapTable.prototype.resetView; + + BootstrapTable.prototype.initFixedColumns = function () { + this.$fixedHeader = $([ + '
', + '', + '', + '
', + '
'].join('')); + + this.timeoutHeaderColumns_ = 0; + this.$fixedHeader.find('table').attr('class', this.$el.attr('class')); + this.$fixedHeaderColumns = this.$fixedHeader.find('thead'); + this.$tableHeader.before(this.$fixedHeader); + + this.$fixedBody = $([ + '
', + '', + '', + '
', + '
'].join('')); + + this.timeoutBodyColumns_ = 0; + this.$fixedBody.find('table').attr('class', this.$el.attr('class')); + this.$fixedBodyColumns = this.$fixedBody.find('tbody'); + this.$tableBody.before(this.$fixedBody); + }; + + BootstrapTable.prototype.initHeader = function () { + _initHeader.apply(this, Array.prototype.slice.apply(arguments)); + + if (!this.options.fixedColumns) { + return; + } + + this.initFixedColumns(); + + var that = this, $trs = this.$header.find('tr').clone(); + $trs.each(function () { + $(this).find('th:gt(' + that.options.fixedNumber + ')').remove(); + }); + this.$fixedHeaderColumns.html('').append($trs); + }; + + BootstrapTable.prototype.initBody = function () { + _initBody.apply(this, Array.prototype.slice.apply(arguments)); + + if (!this.options.fixedColumns) { + return; + } + + var that = this, + rowspan = 0; + + this.$fixedBodyColumns.html(''); + this.$body.find('> tr[data-index]').each(function () { + var $tr = $(this).clone(), + $tds = $tr.find('td'); + + $tr.html(''); + var end = that.options.fixedNumber; + if (rowspan > 0) { + --end; + --rowspan; + } + for (var i = 0; i < end; i++) { + $tr.append($tds.eq(i).clone()); + } + that.$fixedBodyColumns.append($tr); + + if ($tds.eq(0).attr('rowspan')){ + rowspan = $tds.eq(0).attr('rowspan') - 1; + } + }); + }; + + BootstrapTable.prototype.resetView = function () { + _resetView.apply(this, Array.prototype.slice.apply(arguments)); + + if (!this.options.fixedColumns) { + return; + } + + clearTimeout(this.timeoutHeaderColumns_); + this.timeoutHeaderColumns_ = setTimeout($.proxy(this.fitHeaderColumns, this), this.$el.is(':hidden') ? 100 : 0); + + clearTimeout(this.timeoutBodyColumns_); + this.timeoutBodyColumns_ = setTimeout($.proxy(this.fitBodyColumns, this), this.$el.is(':hidden') ? 100 : 0); + }; + + BootstrapTable.prototype.fitHeaderColumns = function () { + var that = this, + visibleFields = this.getVisibleFields(), + headerWidth = 0; + + this.$body.find('tr:first-child:not(.no-records-found) > *').each(function (i) { + var $this = $(this), + index = i; + + if (i >= that.options.fixedNumber) { + return false; + } + + if (that.options.detailView && !that.options.cardView) { + index = i - 1; + } + + that.$fixedHeader.find('th[data-field="' + visibleFields[index] + '"]') + .find('.fht-cell').width($this.innerWidth()); + headerWidth += $this.outerWidth(); + }); + this.$fixedHeader.width(headerWidth + 1).show(); + }; + + BootstrapTable.prototype.fitBodyColumns = function () { + var that = this, + top = -(parseInt(this.$el.css('margin-top')) - 2), + // the fixed height should reduce the scorll-x height + height = this.$tableBody.height() - 14; + + if (!this.$body.find('> tr[data-index]').length) { + this.$fixedBody.hide(); + return; + } + + if (!this.options.height) { + top = this.$fixedHeader.height(); + height = height - top; + } + + this.$fixedBody.css({ + width: this.$fixedHeader.width(), + height: height, + top: top + }).show(); + + this.$body.find('> tr').each(function (i) { + that.$fixedBody.find('tr:eq(' + i + ')').height($(this).height() - 1); + }); + + // events + this.$tableBody.on('scroll', function () { + that.$fixedBody.find('table').css('top', -$(this).scrollTop()); + }); + this.$body.find('> tr[data-index]').off('hover').hover(function () { + var index = $(this).data('index'); + that.$fixedBody.find('tr[data-index="' + index + '"]').addClass('hover'); + }, function () { + var index = $(this).data('index'); + that.$fixedBody.find('tr[data-index="' + index + '"]').removeClass('hover'); + }); + this.$fixedBody.find('tr[data-index]').off('hover').hover(function () { + var index = $(this).data('index'); + that.$body.find('tr[data-index="' + index + '"]').addClass('hover'); + }, function () { + var index = $(this).data('index'); + that.$body.find('> tr[data-index="' + index + '"]').removeClass('hover'); + }); + }; + +})(jQuery);