150 lines
4.2 KiB
PHP
150 lines
4.2 KiB
PHP
import Dropdown from "../../../adminlte/js/Dropdown";
|
|
|
|
let $document = $(document);
|
|
|
|
let defaultActions = {
|
|
// 刷新按钮
|
|
refresh (action, Dcat) {
|
|
$document.on('click', action, function () {
|
|
Dcat.reload($(this).data('url'));
|
|
});
|
|
},
|
|
// 删除按钮初始化
|
|
delete (action, Dcat) {
|
|
let lang = Dcat.lang;
|
|
|
|
$document.on('click', action, function() {
|
|
let url = $(this).data('url'),
|
|
redirect = $(this).data('redirect'),
|
|
msg = $(this).data('message');
|
|
|
|
Dcat.confirm(lang.delete_confirm, msg, function () {
|
|
Dcat.NP.start();
|
|
$.delete({
|
|
url: url,
|
|
success: function (response) {
|
|
Dcat.NP.done();
|
|
|
|
response.data.detail = msg;
|
|
|
|
if (redirect && ! response.data.then) {
|
|
response.data.then = {action: 'redirect', value: redirect}
|
|
}
|
|
|
|
Dcat.handleJsonResponse(response);
|
|
}
|
|
});
|
|
});
|
|
});
|
|
},
|
|
// 批量删除按钮初始化
|
|
'batch-delete' (action, Dcat) {
|
|
$document.on('click', action, function() {
|
|
let url = $(this).data('url'),
|
|
name = $(this).data('name'),
|
|
redirect = $(this).data('redirect'),
|
|
keys = Dcat.grid.selected(name),
|
|
lang = Dcat.lang;
|
|
|
|
if (! keys.length) {
|
|
return;
|
|
}
|
|
let msg = 'ID - ' + keys.join(', ');
|
|
|
|
Dcat.confirm(lang.delete_confirm, msg, function () {
|
|
Dcat.NP.start();
|
|
$.delete({
|
|
url: url + '/' + keys.join(','),
|
|
success: function (response) {
|
|
Dcat.NP.done();
|
|
|
|
if (redirect && ! response.data.then) {
|
|
response.data.then = {action: 'redirect', value: redirect}
|
|
}
|
|
|
|
Dcat.handleJsonResponse(response);
|
|
}
|
|
});
|
|
});
|
|
});
|
|
},
|
|
|
|
// 图片预览
|
|
'preview-img' (action, Dcat) {
|
|
$document.on('click', action, function () {
|
|
return Dcat.helpers.previewImage($(this).attr('src'));
|
|
});
|
|
},
|
|
|
|
'popover' (action, Dcat) {
|
|
Dcat.onPjaxComplete(function () {
|
|
$('.popover').remove();
|
|
}, false);
|
|
|
|
$document.on('click', action, function () {
|
|
$(this).popover()
|
|
});
|
|
},
|
|
|
|
'box-actions' () {
|
|
$document.on('click', '.box [data-action="collapse"]', function (e) {
|
|
e.preventDefault();
|
|
|
|
$(this).find('i').toggleClass('icon-minus icon-plus');
|
|
|
|
$(this).closest('.box').find('.box-body').first().collapse("toggle");
|
|
});
|
|
|
|
// Close box
|
|
$document.on('click', '.box [data-action="remove"]', function () {
|
|
$(this).closest(".box").removeClass().slideUp("fast");
|
|
});
|
|
},
|
|
|
|
dropdown () {
|
|
function hide() {
|
|
$('.dropdown-menu').removeClass('show')
|
|
}
|
|
$document.off('click', document, hide)
|
|
$document.on('click', hide);
|
|
|
|
function toggle(event) {
|
|
var $this = $(this);
|
|
|
|
$('.dropdown-menu').each(function () {
|
|
if ($this.next()[0] !== this) {
|
|
$(this).removeClass('show');
|
|
}
|
|
});
|
|
|
|
$this.Dropdown('toggleSubmenu')
|
|
}
|
|
|
|
function fix(event) {
|
|
event.preventDefault()
|
|
event.stopPropagation()
|
|
|
|
let $this = $(this);
|
|
|
|
setTimeout(function() {
|
|
$this.Dropdown('fixPosition')
|
|
}, 1)
|
|
}
|
|
|
|
let selector = '[data-toggle="dropdown"]';
|
|
|
|
$document.off('click',selector).on('click', selector, toggle).on('click', selector, fix);
|
|
},
|
|
};
|
|
|
|
export default class DataActions {
|
|
constructor(Dcat) {
|
|
let actions = $.extend(defaultActions, Dcat.actions()),
|
|
name;
|
|
|
|
for (name in actions) {
|
|
actions[name](`[data-action="${name}"]`, Dcat);
|
|
}
|
|
}
|
|
}
|