123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- /**
- * @author: Alec Fenichel
- * @webSite: https://fenichelar.com
- * @update: zhixin wen <wenzhixin2010@gmail.com>
- */
- const Utils = $.fn.bootstrapTable.utils
- $.extend($.fn.bootstrapTable.defaults, {
- autoRefresh: false,
- autoRefreshInterval: 60,
- autoRefreshSilent: true,
- autoRefreshStatus: true,
- autoRefreshFunction: null
- })
- $.extend($.fn.bootstrapTable.defaults.icons, {
- autoRefresh: {
- bootstrap3: 'glyphicon-time icon-time',
- materialize: 'access_time',
- 'bootstrap-table': 'icon-clock'
- }[$.fn.bootstrapTable.theme] || 'fa-clock'
- })
- $.extend($.fn.bootstrapTable.locales, {
- formatAutoRefresh () {
- return 'Auto Refresh'
- }
- })
- $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales)
- $.BootstrapTable = class extends $.BootstrapTable {
- init (...args) {
- super.init(...args)
- if (this.options.autoRefresh && this.options.autoRefreshStatus) {
- this.setupRefreshInterval()
- }
- }
- initToolbar (...args) {
- if (this.options.autoRefresh) {
- this.buttons = Object.assign(this.buttons, {
- autoRefresh: {
- html: `
- <button class="auto-refresh ${this.constants.buttonsClass}
- ${this.options.autoRefreshStatus ? ` ${this.constants.classes.buttonActive}` : ''}"
- type="button" name="autoRefresh" title="${this.options.formatAutoRefresh()}">
- ${ this.options.showButtonIcons ? Utils.sprintf(this.constants.html.icon, this.options.iconsPrefix, this.options.icons.autoRefresh) : ''}
- ${ this.options.showButtonText ? this.options.formatAutoRefresh() : ''}
- </button>
- `,
- event: this.toggleAutoRefresh
- }
- })
- }
- super.initToolbar(...args)
- }
- toggleAutoRefresh () {
- if (this.options.autoRefresh) {
- if (this.options.autoRefreshStatus) {
- clearInterval(this.options.autoRefreshFunction)
- this.$toolbar.find('>.columns .auto-refresh')
- .removeClass(this.constants.classes.buttonActive)
- } else {
- this.setupRefreshInterval()
- this.$toolbar.find('>.columns .auto-refresh')
- .addClass(this.constants.classes.buttonActive)
- }
- this.options.autoRefreshStatus = !this.options.autoRefreshStatus
- }
- }
- destroy () {
- if (this.options.autoRefresh && this.options.autoRefreshStatus) {
- clearInterval(this.options.autoRefreshFunction)
- }
- super.destroy()
- }
- setupRefreshInterval () {
- this.options.autoRefreshFunction = setInterval(() => {
- if (!this.options.autoRefresh || !this.options.autoRefreshStatus) {
- return
- }
- this.refresh({ silent: this.options.autoRefreshSilent })
- }, this.options.autoRefreshInterval * 1000)
- }
- }
|