forked from projects/fipamo
ro
c5afbb9131
removed all remaining API requests from the front end and removed the FipamoAdminAPI js file, changing it to ContentRequest as it now handles posting data to the system directly, authenticating it self by checking the embedded CSRF token that regulary rotates also renamed MaintenanceManager to Maintenance request and moved it to the same dir as ContentRequest as they are both libraries that connect to the backend
76 lines
2.1 KiB
JavaScript
76 lines
2.1 KiB
JavaScript
import ContentRequest, { TASK_SYNC_NAV } from '../../libraries/ContentRequest.js';
|
|
import NavActions from '../actions/NavActions.js';
|
|
import * as DataEvent from '../events/DataEvent.js';
|
|
import Notifications from '../ui/Notifications.js';
|
|
import Sortable from '../vendor/sortable.core.esm.js';
|
|
const notify = new Notifications();
|
|
|
|
export default class NavIndex {
|
|
//--------------------------
|
|
// constructor
|
|
//--------------------------
|
|
constructor() {
|
|
this.processing = false;
|
|
this.cr = new ContentRequest(null);
|
|
this.start();
|
|
}
|
|
//--------------------------
|
|
// methods
|
|
//--------------------------
|
|
start() {
|
|
//grabs elements and makes them sortables
|
|
let self = this;
|
|
Sortable.create(document.getElementById('nav-items'), {
|
|
onUpdate: () => {
|
|
new NavActions().syncMenu().then(data => {
|
|
notify.alert('Updating Menu', null);
|
|
self.cr.sync(TASK_SYNC_NAV, data).then(r => {
|
|
if (r.type == DataEvent.MENU_UPDATED) {
|
|
notify.alert(r.message, true);
|
|
} else {
|
|
notify.alert(r.message, true);
|
|
}
|
|
});
|
|
});
|
|
}
|
|
});
|
|
var nav = document.querySelectorAll('.nav-btn');
|
|
for (var i = 0, length = nav.length; i < length; i++) {
|
|
nav[i].addEventListener('click', e => this.handleNavButton(e), false);
|
|
}
|
|
}
|
|
//--------------------------
|
|
// event handlers
|
|
//--------------------------
|
|
handleNavButton(e) {
|
|
if (this.processing) return;
|
|
let id = '';
|
|
let self = this;
|
|
switch (e.target.id) {
|
|
case 'remove-item':
|
|
id = e.target.getAttribute('data-id');
|
|
console.log('object', e);
|
|
new NavActions().removeItem(id);
|
|
new NavActions().syncMenu().then(data => {
|
|
data.remove = e.target.getAttribute('data-uuid');
|
|
notify.alert('Editing Menu', null);
|
|
self.processing = true;
|
|
self.cr.sync(TASK_SYNC_NAV, data).then(r => {
|
|
self.processing = false;
|
|
if (r.type == DataEvent.MENU_UPDATED) {
|
|
notify.alert(r.message, true);
|
|
} else {
|
|
notify.alert(r.message, false);
|
|
}
|
|
});
|
|
});
|
|
break;
|
|
case 'edit-item':
|
|
self.processing = false;
|
|
window.location =
|
|
'/dashboard/page/edit/' + e.target.getAttribute('data-id');
|
|
break;
|
|
}
|
|
}
|
|
}
|