@lipagas/fleetops-engine
Version:
Fleet & Transport Management Extension for Fleetbase
84 lines (75 loc) • 3.23 kB
JavaScript
import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';
import { inject as service } from '@ember/service';
import { action } from '@ember/object';
import { isArray } from '@ember/array';
export default class AdminVisibilityControlsComponent extends Component {
fetch;
visibilitySettings = [
{ name: 'Dashboard', route: 'operations.orders', visible: true },
{ name: 'Service Rates', route: 'operations.service-rates', visible: true },
{ name: 'Scheduler', route: 'operations.scheduler', visible: true },
{ name: 'Drivers', route: 'management.drivers', visible: true },
{ name: 'Vehicles', route: 'management.vehicles', visible: true },
{ name: 'Fleets', route: 'management.fleets', visible: true },
{ name: 'Vendors', route: 'management.vendors', visible: true },
{ name: 'Contacts', route: 'management.contacts', visible: true },
{ name: 'Places', route: 'management.places', visible: true },
{ name: 'Fuel Reports', route: 'management.fuel-reports', visible: true },
{ name: 'Issues', route: 'management.issues', visible: true },
];
isLoading = false;
constructor() {
super(...arguments);
this.loadVisibilitySettings();
}
mutateVisibility(route, visible) {
this.visibilitySettings = [...this.visibilitySettings].map((visibilityControl) => {
if (visibilityControl.route === route) {
return {
...visibilityControl,
visible,
};
}
return visibilityControl;
});
}
loadVisibilitySettings() {
this.isLoading = true;
this.fetch
.get('fleet-ops/settings/visibility')
.then(({ visibilitySettings }) => {
if (isArray(visibilitySettings)) {
for (let i = 0; i < visibilitySettings.length; i++) {
const visibilityControl = visibilitySettings.objectAt(i);
this.mutateVisibility(visibilityControl.route, visibilityControl.visible);
}
}
})
.catch((error) => {
this.notifications.serverError(error);
})
.finally(() => {
this.isLoading = false;
});
}
saveVisibilitySettings() {
this.isLoading = true;
this.fetch
.post('fleet-ops/settings/visibility', { visibilitySettings: this.visibilitySettings })
.then(({ visibilitySettings }) => {
if (isArray(visibilitySettings)) {
for (let i = 0; i < visibilitySettings.length; i++) {
const visibilityControl = visibilitySettings.objectAt(i);
this.mutateVisibility(visibilityControl.route, visibilityControl.visible);
}
}
})
.catch((error) => {
this.notifications.serverError(error);
})
.finally(() => {
this.isLoading = false;
});
}
}