v2 first commit
This commit is contained in:
128
resources/assets/js/plugins/bulk-action.js
vendored
Normal file
128
resources/assets/js/plugins/bulk-action.js
vendored
Normal file
@ -0,0 +1,128 @@
|
||||
import axios from "axios";
|
||||
import NProgress from 'nprogress'
|
||||
import 'nprogress/nprogress.css'
|
||||
import NProgressAxios from './nprogress-axios';
|
||||
|
||||
export default class BulkAction {
|
||||
constructor(path) {
|
||||
//This path use action url
|
||||
this['path'] = path;
|
||||
// Count selected items
|
||||
this['count'] = '';
|
||||
// Select action value ex: delete, export
|
||||
this['value'] = '*';
|
||||
// Select action message
|
||||
this['message'] = '';
|
||||
// Bulk action view status
|
||||
this['show'] = false;
|
||||
// Bulk action modal status
|
||||
this['modal'] = false;
|
||||
// Bulk action modal action
|
||||
this['loading'] = false;
|
||||
// Selected item list
|
||||
this['selected'] = [];
|
||||
// Select all items
|
||||
this['select_all'] = false;
|
||||
}
|
||||
|
||||
// Change checkbox status
|
||||
select() {
|
||||
this.show = true;
|
||||
this.select_all = false;
|
||||
|
||||
this.count = this.selected.length;
|
||||
|
||||
if (this.count == document.querySelectorAll('[data-bulk-action]').length) {
|
||||
this.select_all = true;
|
||||
}
|
||||
|
||||
if (!this.count) {
|
||||
this.show = false;
|
||||
}
|
||||
}
|
||||
|
||||
// Select all items action
|
||||
selectAll() {
|
||||
this.show = false;
|
||||
this.selected = [];
|
||||
|
||||
if (!this.select_all) {
|
||||
this.show = true;
|
||||
|
||||
for (let input of document.querySelectorAll('[data-bulk-action]')) {
|
||||
this.selected.push(input.getAttribute('value'));
|
||||
}
|
||||
}
|
||||
|
||||
this.count = this.selected.length;
|
||||
}
|
||||
|
||||
change(event) {
|
||||
this.message = event.target.options[event.target.options.selectedIndex].dataset.message;
|
||||
|
||||
if (typeof(this.message) == "undefined") {
|
||||
this.message = '';
|
||||
}
|
||||
|
||||
return this.message;
|
||||
}
|
||||
|
||||
// Selected item use action
|
||||
action() {
|
||||
var path = document.getElementsByName("bulk_action_path")[0].getAttribute('value');
|
||||
|
||||
this.loading = true;
|
||||
|
||||
axios.post('bulk-actions/' + path, {
|
||||
'handle': this.value,
|
||||
'selected': this.selected
|
||||
})
|
||||
.then(response => {
|
||||
//this.loading = false;
|
||||
//this.modal = false;
|
||||
|
||||
window.location.reload(false);
|
||||
})
|
||||
.catch(error => {
|
||||
//this.loading = false;
|
||||
//this.modal = false;
|
||||
|
||||
window.location.reload(false);
|
||||
});
|
||||
}
|
||||
|
||||
// Selected items clear
|
||||
clear() {
|
||||
this.show = false;
|
||||
this.select_all = false;
|
||||
this.selected = [];
|
||||
}
|
||||
|
||||
// Change enabled status
|
||||
status(item_id, event, notify) {
|
||||
var item = event.target;
|
||||
var status = (event.target.checked) ? 'enable' : 'disable';
|
||||
|
||||
axios.get(this.path + '/' + item_id + '/' + status)
|
||||
.then(response => {
|
||||
var type = (response.data.success) ? 'success' : 'warning';
|
||||
|
||||
if (!response.data.success) {
|
||||
if (item.checked) {
|
||||
item.checked = false;
|
||||
} else {
|
||||
item.checked = true;
|
||||
}
|
||||
}
|
||||
|
||||
notify({
|
||||
message: response.data.message,
|
||||
timeout: 5000,
|
||||
icon: 'fas fa-bell',
|
||||
type
|
||||
});
|
||||
})
|
||||
.catch(error => {
|
||||
});
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user