bootstrap-table
Version:
An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation)
94 lines (80 loc) • 2.46 kB
JavaScript
/**
* @author: Alec Fenichel
* @webSite: https://fenichelar.com
* @update: zhixin wen <wenzhixin2010@gmail.com>
*/
const Utils = $.fn.bootstrapTable.utils
Object.assign($.fn.bootstrapTable.defaults, {
autoRefresh: false,
showAutoRefresh: true,
autoRefreshInterval: 60,
autoRefreshSilent: true,
autoRefreshStatus: true,
autoRefreshFunction: null
})
Utils.assignIcons($.fn.bootstrapTable.icons, 'autoRefresh', {
glyphicon: 'glyphicon-time icon-time',
fa: 'fa-clock',
bi: 'bi-clock',
icon: 'icon-clock',
'material-icons': 'access_time'
})
Object.assign($.fn.bootstrapTable.locales, {
formatAutoRefresh () {
return 'Auto Refresh'
}
})
Object.assign($.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: {
text: this.options.formatAutoRefresh(),
icon: this.options.icons.autoRefresh,
render: false,
event: this.toggleAutoRefresh,
attributes: {
'aria-label': this.options.formatAutoRefresh(),
title: this.options.formatAutoRefresh()
}
}
})
}
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)
}
}