/**
|
* @author: Alec Fenichel
|
* @webSite: https://fenichelar.com
|
* @update: zhixin wen <wenzhixin2010@gmail.com>
|
*/
|
|
var Utils = $.fn.bootstrapTable.utils
|
|
$.extend($.fn.bootstrapTable.defaults, {
|
autoRefresh: false,
|
showAutoRefresh: true,
|
autoRefreshInterval: 60,
|
autoRefreshSilent: true,
|
autoRefreshStatus: true,
|
autoRefreshFunction: null
|
})
|
|
$.extend($.fn.bootstrapTable.defaults.icons, {
|
autoRefresh: {
|
bootstrap3: 'glyphicon-time icon-time',
|
bootstrap5: 'bi-clock',
|
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)
|
}
|
}
|