@ducna01120/fleetops-engine
Version:
Fleet & Transport Management Extension for Fleetbase
119 lines (106 loc) • 3.66 kB
JavaScript
import BaseController from '@ducna01120/fleetops-engine/controllers/base-controller';
import { inject as service } from '@ember/service';
import { tracked } from '@glimmer/tracking';
import { action } from '@ember/object';
export default class ManagementFleetsIndexEditController extends BaseController {
/**
* Inject the `hostRouter` service
*
* @memberof ManagementFleetsIndexEditController
*/
hostRouter;
/**
* Inject the `hostRouter` service
*
* @memberof ManagementFleetsIndexEditController
*/
modalsManager;
/**
* Inject the `intl` service
*
* @memberof intl
*/
intl;
/**
* The overlay component context.
*
* @memberof ManagementFleetsIndexEditController
*/
overlay;
/**
* When exiting the overlay.
*
* @return {Transition}
* @memberof ManagementFleetsIndexEditController
*/
transitionBack(fleet) {
// check if fleet record has been edited and prompt for confirmation
if (fleet.hasDirtyAttributes) {
return this.confirmContinueWithUnsavedChanges(fleet, {
confirm: () => {
fleet.rollbackAttributes();
return this.transitionToRoute('management.fleets.index');
},
});
}
return this.transitionToRoute('management.fleets.index');
}
/**
* Set the overlay component context object.
*
* @param {OverlayContext} overlay
* @memberof ManagementFleetsIndexEditController
*/
setOverlayContext(overlay) {
this.overlay = overlay;
}
/**
* When fleet details button is clicked in overlay.
*
* @param {VehicleModel} fleet
* @return {Promise}
* @memberof ManagementFleetsIndexEditController
*/
onViewDetails(fleet) {
// check if fleet record has been edited and prompt for confirmation
if (fleet.hasDirtyAttributes) {
return this.confirmContinueWithUnsavedChanges(fleet);
}
return this.transitionToRoute('management.fleets.index.details', fleet);
}
/**
* Trigger a route refresh and focus the new fleet created.
*
* @param {VehicleModel} fleet
* @return {Promise}
* @memberof ManagementFleetsIndexEditController
*/
onAfterSave(fleet) {
if (this.overlay) {
this.overlay.close();
}
this.hostRouter.refresh();
return this.transitionToRoute('management.fleets.index.details', fleet);
}
/**
* Prompts the user to confirm if they wish to continue with unsaved changes.
*
* @method
* @param {VehicleModel} fleet - The fleet object with unsaved changes.
* @param {Object} [options={}] - Additional options for configuring the modal.
* @returns {Promise} A promise that resolves when the user confirms, and transitions to a new route.
* @memberof ManagementFleetsIndexEditController
*/
confirmContinueWithUnsavedChanges(fleet, options = {}) {
return this.modalsManager.confirm({
title: this.intl.t('fleet-ops.management.drivers.index.edit.title'),
body: this.intl.t('fleet-ops.management.fleets.index.edit.body'),
acceptButtonText: this.intl.t('fleet-ops.management.drivers.index.edit.button'),
confirm: () => {
fleet.rollbackAttributes();
return this.transitionToRoute('management.fleets.index.details', fleet);
},
...options,
});
}
}