@fleetbase/fleetops-engine
Version:
Fleet & Transport Management Extension for Fleetbase
70 lines (63 loc) • 2.05 kB
JavaScript
import Controller from '@ember/controller';
import { tracked } from '@glimmer/tracking';
import { inject as service } from '@ember/service';
import { task } from 'ember-concurrency';
export default class SettingsRoutingController extends Controller {
fetch;
notifications;
currentUser;
leafletRoutingControl;
routerService = 'osrm';
routingUnit = 'km';
routingUnitOptions = [
{ label: 'Kilometers', value: 'km' },
{ label: 'Miles', value: 'mi' },
];
saveTasks = [];
constructor() {
super(...arguments);
this.getSettings.perform();
}
/**
* Save routing settings.
*
* @memberof SettingsRoutingController
*/
*saveSettings() {
try {
yield this.fetch.post('fleet-ops/settings/routing-settings', { router: this.routerService });
yield this.performAdditionalSaveTasks();
// Save in local memory too
this.currentUser.setOption('routing', { router: this.routerService, unit: this.routingUnit });
this.notifications.success('Routing setting saved.');
} catch (error) {
this.notifications.serverError(error);
}
}
/**
* Get routing settings.
*
* @memberof SettingsRoutingController
*/
*getSettings() {
try {
const { router, unit } = yield this.fetch.get('fleet-ops/settings/routing-settings');
this.routerService = router;
this.routingUnit = unit;
} catch (error) {
this.notifications.serverError(error);
}
}
registerSaveTask(task) {
this.saveTasks.push(task);
}
async performAdditionalSaveTasks() {
for (let i = 0; i < this.saveTasks.length; i++) {
const task = this.saveTasks[i];
if (typeof task.perform === 'function') {
await task.perform();
}
}
return true;
}
}