Skip to content

Commit

Permalink
replaces ember-render-modifiers in curr inv report rollover component.
Browse files Browse the repository at this point in the history
  • Loading branch information
stopfstedt committed Dec 9, 2024
1 parent 093d1f8 commit 86f9abd
Show file tree
Hide file tree
Showing 3 changed files with 105 additions and 59 deletions.
2 changes: 0 additions & 2 deletions packages/frontend/.lint-todo
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,6 @@ add|ember-template-lint|no-at-ember-render-modifiers|5|2|5|2|23cd787c79c34a628da
add|ember-template-lint|no-at-ember-render-modifiers|4|2|4|2|23cd787c79c34a628dadb6e96dd4004d42eebb79|1733184000000|1735776000000|1738368000000|app/components/curriculum-inventory/new-sequence-block.hbs
add|ember-template-lint|no-at-ember-render-modifiers|5|2|5|2|77e3831e4ae1b00caee1f808711f2e26ab452a23|1733184000000|1735776000000|1738368000000|app/components/curriculum-inventory/new-sequence-block.hbs
add|ember-template-lint|no-at-ember-render-modifiers|3|2|3|2|23cd787c79c34a628dadb6e96dd4004d42eebb79|1733184000000|1735776000000|1738368000000|app/components/curriculum-inventory/report-overview.hbs
add|ember-template-lint|no-at-ember-render-modifiers|3|2|3|2|23cd787c79c34a628dadb6e96dd4004d42eebb79|1733184000000|1735776000000|1738368000000|app/components/curriculum-inventory/report-rollover.hbs
add|ember-template-lint|no-at-ember-render-modifiers|4|2|4|2|5e634ade97cc174a33ee6f2fdce6c42465ec31e3|1733184000000|1735776000000|1738368000000|app/components/curriculum-inventory/report-rollover.hbs
add|ember-template-lint|no-at-ember-render-modifiers|5|2|5|2|c34ed16d221405a625e5c23907f49fd55e6ba231|1733184000000|1735776000000|1738368000000|app/components/curriculum-inventory/sequence-block-header.hbs
add|ember-template-lint|no-at-ember-render-modifiers|6|2|6|2|6236d751dee8e47f88ffd257c6bfcec223f2b91c|1733184000000|1735776000000|1738368000000|app/components/curriculum-inventory/sequence-block-header.hbs
add|ember-template-lint|no-at-ember-render-modifiers|4|2|4|2|e65bc0e9138a1521733c31ef990721569f51eb20|1733184000000|1735776000000|1738368000000|app/components/curriculum-inventory/sequence-block-overview.hbs
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,4 @@
<div
class="curriculum-inventory-report-rollover"
{{did-insert (perform this.load)}}
{{did-update (perform this.load) @report}}
data-test-curriculum-inventory-report-rollover
>
<div class="curriculum-inventory-report-rollover" data-test-curriculum-inventory-report-rollover>
{{#unless this.load.isRunning}}
<div class="rollover-form" {{scroll-into-view}}>
<h3 class="title">
Expand Down Expand Up @@ -56,39 +51,41 @@
{{#each this.years as |obj|}}
<option
value={{obj.year}}
selected={{eq obj.year this.selectedYear}}
selected={{eq obj.year this.defaultSelectedYear}}
>{{obj.title}}</option>
{{/each}}
</select>
{{/let}}
</div>
<div class="item programs" data-test-programs>
{{#let (unique-id) as |programId|}}
<label for={{programId}}>
{{t "general.program"}}:
</label>
{{#if (gt this.programs.length 1)}}
<select
id={{programId}}
disabled={{this.save.isRunning}}
{{on "change" (pick "target.value" this.changeProgram)}}
>
{{#each (sort-by "title" this.programs) as |program|}}
<option value={{program.id}} selected={{eq program this.selectedProgram}}>
{{program.title}}
</option>
{{/each}}
</select>
{{else}}
{{this.selectedProgram.title}}
{{/if}}
{{/let}}
{{#if this.programsDataLoaded}}
{{#let (unique-id) as |programId|}}
<label for={{programId}}>
{{t "general.program"}}:
</label>
{{#if (gt this.programs.length 1)}}
<select
id={{programId}}
disabled={{this.save.isRunning}}
{{on "change" (pick "target.value" this.changeProgram)}}
>
{{#each (sort-by "title" this.programs) as |program|}}
<option value={{program.id}} selected={{eq program this.defaultSelectedProgram}}>
{{program.title}}
</option>
{{/each}}
</select>
{{else}}
{{this.defaultSelectedProgram.title}}
{{/if}}
{{/let}}
{{/if}}
</div>
<div class="buttons">
<button
type="button"
class="done text"
disabled={{this.save.isRunning}}
disabled={{or (not this.programsDataLoaded) this.save.isRunning}}
{{on "click" (perform this.save)}}
data-test-save
>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';
import { cached, tracked } from '@glimmer/tracking';
import { action } from '@ember/object';
import { service } from '@ember/service';
import { dropTask, restartableTask } from 'ember-concurrency';
import { dropTask } from 'ember-concurrency';
import { TrackedAsyncData } from 'ember-async-data';
import { validatable, Length, NotBlank } from 'ilios-common/decorators/validation';
import { findBy, findById } from 'ilios-common/utils/array-helpers';

Expand All @@ -13,48 +14,98 @@ export default class CurriculumInventoryReportRolloverComponent extends Componen
@service iliosConfig;
@service store;

currentYear = new Date().getFullYear();
@tracked @NotBlank() @Length(3, 200) name;
@tracked @NotBlank() @Length(1, 21844) description;
@tracked selectedYear;
@tracked years = [];
@tracked selectedProgram;
@tracked programs = [];

load = restartableTask(async () => {
const academicYearCrossesCalendarYearBoundaries = await this.iliosConfig.itemFromConfig(
'academicYearCrossesCalendarYearBoundaries',
constructor() {
super(...arguments);
this.name = this.args.report.name;
this.description = this.args.report.description;
}

@cached
get academicYearCrossesCalendarYearBoundariesData() {
return new TrackedAsyncData(
this.iliosConfig.itemFromConfig('academicYearCrossesCalendarYearBoundaries'),
);
const thisYear = new Date().getFullYear();
const reportYear = parseInt(this.args.report.year, 10);
const startYear = Math.min(thisYear, reportYear);
const endYear = Math.max(thisYear, reportYear) + 5;
const years = [];
for (let i = startYear; i < endYear; i++) {
if (i === reportYear) {
}

get academicYearCrossesCalendarYearBoundaries() {
return this.academicYearCrossesCalendarYearBoundariesData.isResolved
? this.academicYearCrossesCalendarYearBoundariesData.value
: false;
}

get reportYear() {
return parseInt(this.args.report.year, 10);
}

get startYear() {
return Math.min(this.currentYear, this.reportYear);
}

get endYear() {
return Math.max(this.currentYear, this.reportYear) + 5;
}

get years() {
const rhett = [];
for (let i = this.startYear; i < this.endYear; i++) {
// Rollover into the same year as the source report's year is VERBOTEN.
if (i === this.reportYear) {
continue;
}
const title = academicYearCrossesCalendarYearBoundaries ? `${i} - ${i + 1}` : i.toString();
years.push({
const title = this.academicYearCrossesCalendarYearBoundaries
? `${i} - ${i + 1}`
: i.toString();
rhett.push({
year: i,
title,
});
}
let selectedYear = findBy(years, 'year', startYear + 1);
return rhett;
}

get defaultSelectedYear() {
let selectedYear = findBy(this.years, 'year', this.startYear + 1);
if (!selectedYear) {
selectedYear = findBy(years, 'year', reportYear + 1);
selectedYear = findBy(this.years, 'year', this.reportYear + 1);
}
return selectedYear.year;
}

@cached
get programsData() {
return new TrackedAsyncData(this.getPrograms(this.args.report));
}

const program = await this.args.report.program;
get programs() {
return this.programsData.isResolved ? this.programsData.value : [];
}

async getPrograms(report) {
const program = await report.program;
const school = await program.school;
const programs = await school.programs;
return school.programs;
}

this.selectedProgram = program;
this.programs = programs;
this.years = years;
this.selectedYear = selectedYear.year;
this.name = this.args.report.name;
this.description = this.args.report.description;
});
@cached
get defaultSelectedProgramData() {
return new TrackedAsyncData(this.args.report.program);
}

get defaultSelectedProgram() {
return this.defaultSelectedProgramData.isResolved
? this.defaultSelectedProgramData.value
: null;
}

get programsDataLoaded() {
return this.defaultSelectedProgramData.isResolved && this.programsData.isResolved;
}

@action
changeName(newName) {
Expand Down Expand Up @@ -87,8 +138,8 @@ export default class CurriculumInventoryReportRolloverComponent extends Componen
const data = {
name: this.name,
description: this.description,
year: this.selectedYear,
program: this.selectedProgram.id,
year: this.selectedYear ? this.selectedYear : this.defaultSelectedYear,
program: this.selectedProgram ? this.selectedProgram.id : this.defaultSelectedProgram.id,
};
const url = `curriculuminventoryreports/${this.args.report.id}/rollover`;
const newReportObj = await this.fetch.postQueryToApi(url, data);
Expand Down

0 comments on commit 86f9abd

Please sign in to comment.