4
0
Fork 0
dcat-admin/resources/assets/dcat/js/bootstrappers/DataActions.js

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);
}
}
}