Skip to content
This repository has been archived by the owner on May 13, 2024. It is now read-only.

Commit

Permalink
refactor(deprecations): use router service
Browse files Browse the repository at this point in the history
Refactor to prevent usage of deprecated built-in transition methods
for controllers and routes.
  • Loading branch information
derrabauke committed Jan 26, 2023
1 parent a236e0d commit b2ab4f9
Show file tree
Hide file tree
Showing 7 changed files with 134 additions and 104 deletions.
4 changes: 3 additions & 1 deletion app/index/activities/edit/route.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
* @public
*/
import Route from "@ember/routing/route";
import { inject as service } from "@ember/service";
import Changeset from "ember-changeset";
import lookupValidator from "ember-changeset-validations";
import RouteAutostartTourMixin from "timed/mixins/route-autostart-tour";
Expand All @@ -19,6 +20,7 @@ import ActivityValidator from "timed/validations/activity";
export default class IndexActivityEditController extends Route.extend(
RouteAutostartTourMixin
) {
@service router;
/**
* Model hook, fetch the activity to edit
*
Expand All @@ -34,7 +36,7 @@ export default class IndexActivityEditController extends Route.extend(

afterModel(model) {
if (model.get("transferred")) {
this.transitionTo("index");
this.router.transitionTo("index");
}
}

Expand Down
54 changes: 31 additions & 23 deletions app/users/edit/credits/absence-credits/edit/controller.js
Original file line number Diff line number Diff line change
@@ -1,24 +1,28 @@
import Controller, { inject as controller } from "@ember/controller";
import { inject as service } from "@ember/service";
import { task } from "ember-concurrency";
import { dropTask, task } from "ember-concurrency";
import AbsenceCreditValidations from "timed/validations/absence-credit";

export default Controller.extend({
AbsenceCreditValidations,
export default class UsersEditCreditsAbsenceCreditsEditController extends Controller {
AbsenceCreditValidations = AbsenceCreditValidations;

userController: controller("users.edit"),
@controller("users.edit") userController;

userCreditsController: controller("users.edit.credits.index"),
@controller("users.edit.credits.index") userCreditsController;

notify: service("notify"),
@service notify;

absenceTypes: task(function* () {
@service router;

@task
*absenceTypes() {
return yield this.store.query("absence-type", {
fill_worktime: 0, // eslint-disable-line camelcase
});
}),
}

credit: task(function* () {
@task
*credit() {
const id = this.model;

return id
Expand All @@ -28,48 +32,52 @@ export default Controller.extend({
: yield this.store.createRecord("absence-credit", {
user: this.user,
});
}),
}

save: task(function* (changeset) {
@dropTask
*save(changeset) {
try {
yield changeset.save();

this.notify.success("Absence credit was saved");

this.get("userController.data").perform(this.get("user.id"));

let allYears = this.get(
"userCreditsController.years.lastSuccessful.value"
);
let allYears = this.get("userCreditsController.years.value");

if (!allYears) {
allYears = yield this.get("userCreditsController.years").perform();
allYears = yield this.get("userCreditsController._years").perform();
}

const year =
allYears.find((y) => y === String(changeset.get("date").year())) || "";

yield this.transitionToRoute("users.edit.credits", this.get("user.id"), {
queryParams: { year },
});
yield this.router.transitionTo(
"users.edit.credits",
this.get("user.id"),
{
queryParams: { year },
}
);
} catch (e) {
/* istanbul ignore next */
this.notify.error("Error while saving the absence credit");
}
}).drop(),
}

delete: task(function* (credit) {
@dropTask
*delete(credit) {
try {
yield credit.destroyRecord();

this.notify.success("Absence credit was deleted");

this.get("userController.data").perform(this.get("user.id"));

this.transitionToRoute("users.edit.credits");
this.router.transitionTo("users.edit.credits");
} catch (e) {
/* istanbul ignore next */
this.notify.error("Error while deleting the absence credit");
}
}).drop(),
});
}
}
124 changes: 65 additions & 59 deletions app/users/edit/credits/index/controller.js
Original file line number Diff line number Diff line change
@@ -1,29 +1,35 @@
import Controller, { inject as controller } from "@ember/controller";
import { computed } from "@ember/object";
import { inject as service } from "@ember/service";
import { action } from "@ember/object";
import { ability } from "ember-can/computed";
import { dropTask } from "ember-concurrency";
import { task } from "ember-concurrency";
import QueryParams from "ember-parachute";
import { trackedTask } from "ember-resources/util/ember-concurrency";
import moment from "moment";

const UsersEditCreditsQueryParams = new QueryParams({
year: {
defaultValue: `${moment().year()}`,
replace: true,
refresh: true,
},
});
export default class UsersEditCreditsController extends Controller {
@service notify;
@service fetch;
@service can;
@service router;

export default Controller.extend(UsersEditCreditsQueryParams.Mixin, {
notify: service("notify"),
@controller("users.edit") userController;

fetch: service("fetch"),
queryParams = {
year: {
refreshModel: true,
replace: true,
},
};

can: service("can"),
year = moment().year();

userController: controller("users.edit"),
years = trackedTask(this, this._years, () => [this.model?.id]);

@task
*_years() {
yield Promise.resolve();

years: task(function* () {
const employments = yield this.store.query("employment", {
user: this.get("model.id"),
ordering: "start_date",
Expand All @@ -33,38 +39,25 @@ export default Controller.extend(UsersEditCreditsQueryParams.Mixin, {
const to = moment().add(1, "year").year();

return [...new Array(to + 1 - from).keys()].map((i) => `${from + i}`);
}),

overtimeCreditAbility: ability("overtime-credit"),
absenceCreditAbility: ability("absence-credit"),

allowTransfer: computed(
"year",
"overtimeCreditAbility.canCreate",
"absenceCreditAbility.canCreate",
function () {
return (
parseInt(this.year) === moment().year() - 1 &&
this.get("overtimeCreditAbility.canCreate") &&
this.get("absenceCreditAbility.canCreate")
);
}
),

setup() {
this.years.perform();
this.absenceCredits.perform();
this.overtimeCredits.perform();
},

queryParamsDidChange({ shouldRefresh }) {
if (shouldRefresh) {
this.absenceCredits.perform();
this.overtimeCredits.perform();
}
},
}

@ability("overtime-credit") overtimeCreditAbility;
@ability("absence-credit") absenceCreditAbility;

get allowTransfer() {
return (
parseInt(this.year) === moment().year() - 1 &&
this.get("overtimeCreditAbility.canCreate") &&
this.get("absenceCreditAbility.canCreate")
);
}

absenceCredits = trackedTask(this, this._absenceCredits, () => [this.year]);

@task
*_absenceCredits() {
yield Promise.resolve();

absenceCredits: task(function* () {
const year = this.year;

return yield this.store.query("absence-credit", {
Expand All @@ -73,19 +66,25 @@ export default Controller.extend(UsersEditCreditsQueryParams.Mixin, {
ordering: "-date",
...(year ? { year } : {}),
});
}),
}

overtimeCredits = trackedTask(this, this._overtimeCredits, () => [this.year]);

@task
*_overtimeCredits() {
yield Promise.resolve();

overtimeCredits: task(function* () {
const year = this.year;

return yield this.store.query("overtime-credit", {
user: this.get("model.id"),
ordering: "-date",
...(year ? { year } : {}),
});
}),
}

transfer: task(function* () {
@dropTask
*transfer() {
/* istanbul ignore next */
if (!this.allowTransfer) {
return;
Expand All @@ -100,28 +99,35 @@ export default Controller.extend(UsersEditCreditsQueryParams.Mixin, {

this.get("userController.data").perform(this.get("model.id"));

this.resetQueryParams("year");
this.year = `${moment().year()}`;
} catch (e) {
/* istanbul ignore next */
this.notify.error("Error while transfering");
}
}).drop(),
}

editAbsenceCredit: task(function* (id) {
@dropTask
*editAbsenceCredit(id) {
if (this.can.can("edit absence-credit")) {
yield this.transitionToRoute(
yield this.router.transitionTo(
"users.edit.credits.absence-credits.edit",
id
);
}
}).drop(),
}

editOvertimeCredit: task(function* (id) {
@task
*editOvertimeCredit(id) {
if (this.can.can("edit overtime-credit")) {
yield this.transitionToRoute(
yield this.router.transitionTo(
"users.edit.credits.overtime-credits.edit",
id
);
}
}).drop(),
});
}

@action
transitionTo(route) {
this.router.transitionTo(route);
}
}
2 changes: 1 addition & 1 deletion app/users/edit/credits/index/route.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
import Route from "@ember/routing/route";

export default Route.extend({});
export default class UsersEditCreditsIndexRoute extends Route {}
32 changes: 21 additions & 11 deletions app/users/edit/credits/index/template.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
>Transfer</button>
{{/if}}

{{#let this.years.lastSuccessful.value as |years|}}
{{#let this.years.value as |years|}}
<label for="credit-year-select" hidden>
Select year
</label>
Expand All @@ -33,7 +33,7 @@
<LoadingIcon />
</div>
{{else}}
{{#let this.absenceCredits.lastSuccessful.value as |absenceCredits|}}
{{#let this.absenceCredits.value as |absenceCredits|}}
{{#if absenceCredits}}
<div class="card-block">
<div class="grid">
Expand Down Expand Up @@ -87,11 +87,16 @@
{{#if (can "create absence-credit")}}
Add a new credit by clicking the button below!<br />
<br />
<LinkTo
@route="users.edit.credits.absence-credits.new"
@tagName="button"
<button
{{on
"click"
(fn
this.router.transitionTo
"users.edit.credits.absence-credits.new"
)
}}
class="btn btn-success"
>Add new credit</LinkTo>
>Add new credit</button>
{{/if}}
</p>
</div>
Expand All @@ -112,7 +117,7 @@
<LoadingIcon />
</div>
{{else}}
{{#let this.overtimeCredits.lastSuccessful.value as |overtimeCredits|}}
{{#let this.overtimeCredits.value as |overtimeCredits|}}
{{#if overtimeCredits}}
<div class="card-block">
<div class="grid">
Expand Down Expand Up @@ -167,11 +172,16 @@
{{#if (can "create overtime-credit")}}
Add a new credit by clicking the button below!<br />
<br />
<LinkTo
@route="users.edit.credits.overtime-credits.new"
@tagName="button"
<button
{{on
"click"
(fn
this.transitionTo
"users.edit.credits.overtime-credits.new"
)
}}
class="btn btn-success"
>Add new credit</LinkTo>
>Add new credit</button>
{{/if}}
</p>
</div>
Expand Down
Loading

0 comments on commit b2ab4f9

Please sign in to comment.