Created new CSS styles for dash nav editor and updated the appropriate controller scripts. Also updated the icons for the main nav.
74 lines
2.1 KiB
JavaScript
74 lines
2.1 KiB
JavaScript
import FipamoAdminAPI, { TASK_SYNC_NAV } from '../../libraries/FipamoAdminAPI';
|
|
import NavActions from '../actions/NavActions';
|
|
import * as DataEvent from '../events/DataEvent';
|
|
import Notifications from '../ui/Notifications';
|
|
import Sortable from 'sortablejs';
|
|
const notify = new Notifications();
|
|
|
|
export default class NavIndex {
|
|
//--------------------------
|
|
// constructor
|
|
//--------------------------
|
|
constructor() {
|
|
this.processing = false;
|
|
this.admin = new FipamoAdminAPI(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.admin.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');
|
|
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.admin.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, true);
|
|
}
|
|
});
|
|
});
|
|
break;
|
|
case 'edit-item':
|
|
self.processing = false;
|
|
window.location =
|
|
'/dashboard/page/edit/' + e.target.getAttribute('data-id');
|
|
break;
|
|
}
|
|
}
|
|
}
|