diff --git a/.github/workflows/pull-request-update.yml b/.github/workflows/pull-request-update.yml
index 1888a9d1d7..a205fcff60 100644
--- a/.github/workflows/pull-request-update.yml
+++ b/.github/workflows/pull-request-update.yml
@@ -28,6 +28,19 @@ jobs:
BUILD=${{ false }}
cache-from: type=gha
cache-to: type=gha,mode=max
+ - name: Run tests with timezone
+ uses: docker/build-push-action@v3
+ with:
+ context: ./
+ file: ./build/Dockerfile
+ builder: ${{ steps.buildx.outputs.name }}
+ target: builder
+ build-args: |
+ RUN_TESTS=${{ true }}
+ TZ=America/Detroit
+ BUILD=${{ false }}
+ cache-from: type=gha
+ cache-to: type=gha,mode=max
deploy-prod-image:
runs-on: ubuntu-latest
steps:
diff --git a/build/Dockerfile b/build/Dockerfile
index b974d2043e..5407c2439a 100644
--- a/build/Dockerfile
+++ b/build/Dockerfile
@@ -3,7 +3,7 @@
# Run the following commands from the root folder to build, run and kill the application
# >> docker build -f build/Dockerfile -t aam-digital .
# >> docker run -p=80:80 aam-digital
-FROM node:16.14.2-alpine3.15 as builder
+FROM node:16.14.2-alpine3.15 AS builder
WORKDIR /app
COPY package*.json ./
@@ -32,6 +32,12 @@ RUN if [ "$UPLOAD_COVERAGE" = true ] ; then \
chmod +x ./cc-test-reporter &&\
./cc-test-reporter before-build ; fi
+ARG TZ
+RUN if [ -n "${TZ}" ] ; then \
+ apk --no-cache add tzdata && \
+ cp /usr/share/zoneinfo/Europe/Brussels /etc/localtime && \
+ echo "$TZ" > /etc/timezone ; fi
+
# When set to true, chromium is installed an tests are executed
ARG RUN_TESTS=false
ARG CHROME_BIN=/usr/bin/chromium-browser
@@ -59,7 +65,7 @@ ARG SENTRY_ORG
ARG SENTRY_PROJECT
RUN if [ "$SENTRY_AUTH_TOKEN" != "" ] ; then \
npm install -g @sentry/cli &&\
- sentry-cli --auth-token=$SENTRY_AUTH_TOKEN releases --org=$SENTRY_ORG --project=$SENTRY_PROJECT files ndb-core@$APP_VERSION upload-sourcemaps dist && \
+ sentry-cli --auth-token="$SENTRY_AUTH_TOKEN" releases --org="$SENTRY_ORG" --project="$SENTRY_PROJECT" files "ndb-core@$APP_VERSION" upload-sourcemaps dist && \
rm dist/*.map ; fi
### PROD image
diff --git a/src/app/child-dev-project/attendance/attendance.service.spec.ts b/src/app/child-dev-project/attendance/attendance.service.spec.ts
index a66a0e7989..923acaae5e 100644
--- a/src/app/child-dev-project/attendance/attendance.service.spec.ts
+++ b/src/app/child-dev-project/attendance/attendance.service.spec.ts
@@ -41,10 +41,10 @@ describe("AttendanceService", () => {
activity1 = RecurringActivity.create("activity 1");
activity2 = RecurringActivity.create("activity 2");
- e1_1 = createEvent(new Date("2020-01-01"), activity1.getId(true));
- e1_2 = createEvent(new Date("2020-01-02"), activity1.getId(true));
- e1_3 = createEvent(new Date("2020-03-02"), activity1.getId(true));
- e2_1 = createEvent(new Date("2020-01-01"), activity2.getId(true));
+ e1_1 = createEvent(moment("2020-01-01").toDate(), activity1.getId(true));
+ e1_2 = createEvent(moment("2020-01-02").toDate(), activity1.getId(true));
+ e1_3 = createEvent(moment("2020-03-02").toDate(), activity1.getId(true));
+ e2_1 = createEvent(moment("2020-01-01").toDate(), activity2.getId(true));
TestBed.configureTestingModule({
imports: [DatabaseTestingModule],
@@ -69,24 +69,32 @@ describe("AttendanceService", () => {
});
it("gets events for a date", async () => {
- const actualEvents = await service.getEventsOnDate(new Date("2020-01-01"));
+ const actualEvents = await service.getEventsOnDate(
+ moment("2020-01-01").toDate(),
+ );
expectEntitiesToMatch(actualEvents, [e1_1, e2_1]);
});
it("gets events including Notes for a date", async () => {
- const note1 = Note.create(new Date("2020-01-01"), "manual event note 1");
+ const note1 = Note.create(
+ moment("2020-01-01").toDate(),
+ "manual event note 1",
+ );
note1.addChild("1");
note1.addChild("2");
note1.category = meetingInteractionCategory;
await entityMapper.save(note1);
- const note2 = Note.create(new Date("2020-01-02"), "manual event note 2");
+ const note2 = Note.create(
+ moment("2020-01-02").toDate(),
+ "manual event note 2",
+ );
note2.addChild("1");
note2.category = meetingInteractionCategory;
await entityMapper.save(note2);
const nonMeetingNote = Note.create(
- new Date("2020-01-02"),
+ moment("2020-01-02").toDate(),
"manual event note 3",
);
nonMeetingNote.addChild("1");
@@ -94,15 +102,17 @@ describe("AttendanceService", () => {
await entityMapper.save(nonMeetingNote);
const actualEvents = await service.getEventsOnDate(
- new Date("2020-01-01"),
- new Date("2020-01-02"),
+ moment("2020-01-01").toDate(),
+ moment("2020-01-02").toDate(),
);
expectEntitiesToMatch(actualEvents, [e1_1, e1_2, e2_1, note1, note2]);
});
it("gets empty array for a date without events", async () => {
- const actualEvents = await service.getEventsOnDate(new Date("2007-01-01"));
+ const actualEvents = await service.getEventsOnDate(
+ moment("2007-01-01").toDate(),
+ );
expect(actualEvents).toBeEmpty();
});
@@ -210,7 +220,7 @@ describe("AttendanceService", () => {
const childSchoolRelation = new ChildSchoolRelation();
childSchoolRelation.childId = "testChild";
childSchoolRelation.schoolId = "testSchool";
- childSchoolRelation.start = new Date("2020-01-01");
+ childSchoolRelation.start = moment("2020-01-01").toDate();
const testActivity = RecurringActivity.create("new activity");
testActivity.linkedGroups.push("testSchool");
@@ -329,10 +339,10 @@ describe("AttendanceService", () => {
it("should load the events for a date with date-picker format", async () => {
const datePickerDate = new Date(
- new Date("2021-04-05").setHours(0, 0, 0, 0),
+ moment("2021-04-05").toDate().setHours(0, 0, 0, 0),
);
const sameDayEvent = EventNote.create(
- new Date("2021-04-05"),
+ moment("2021-04-05").toDate(),
"Same Day Event",
);
sameDayEvent.category = meetingInteractionCategory;
diff --git a/src/app/child-dev-project/attendance/attendance.service.ts b/src/app/child-dev-project/attendance/attendance.service.ts
index fe21b9c1ba..9b289f2970 100644
--- a/src/app/child-dev-project/attendance/attendance.service.ts
+++ b/src/app/child-dev-project/attendance/attendance.service.ts
@@ -32,9 +32,13 @@ export class AttendanceService {
by_date: {
map: `(doc) => {
if (doc._id.startsWith("${EventNote.ENTITY_TYPE}")) {
- var d = new Date(doc.date || null);
- var dString = d.getFullYear() + "-" + String(d.getMonth()+1).padStart(2, "0") + "-" + String(d.getDate()).padStart(2, "0")
- emit(dString);
+ if (doc.date && doc.date.length === 10) {
+ emit(doc.date);
+ } else {
+ var d = new Date(doc.date || null);
+ var dString = d.getFullYear() + "-" + String(d.getMonth()+1).padStart(2, "0") + "-" + String(d.getDate()).padStart(2, "0");
+ emit(dString);
+ }
}
}`,
},
@@ -42,8 +46,13 @@ export class AttendanceService {
by_activity: {
map: `(doc) => {
if (doc._id.startsWith("${EventNote.ENTITY_TYPE}") && doc.relatesTo) {
- var d = new Date(doc.date || null);
- var dString = d.getFullYear() + "-" + String(d.getMonth()+1).padStart(2, "0") + "-" + String(d.getDate()).padStart(2, "0")
+ var dString;
+ if (doc.date && doc.date.length === 10) {
+ dString = doc.date;
+ } else {
+ var d = new Date(doc.date || null);
+ dString = d.getFullYear() + "-" + String(d.getMonth()+1).padStart(2, "0") + "-" + String(d.getDate()).padStart(2, "0");
+ }
emit(doc.relatesTo + "_" + dString);
}
}`,
diff --git a/src/app/child-dev-project/children/children-components.ts b/src/app/child-dev-project/children/children-components.ts
index bf7e52a181..569caea244 100644
--- a/src/app/child-dev-project/children/children-components.ts
+++ b/src/app/child-dev-project/children/children-components.ts
@@ -45,11 +45,11 @@ export const childrenComponents: ComponentTuple[] = [
).then((c) => c.ChildrenBmiDashboardComponent),
],
[
- "EducationalMaterial",
+ "RelatedEntitiesWithSummary",
() =>
import(
- "./educational-material/educational-material-component/educational-material.component"
- ).then((c) => c.EducationalMaterialComponent),
+ "../../core/entity-details/related-entities-with-summary/related-entities-with-summary.component"
+ ).then((c) => c.RelatedEntitiesWithSummaryComponent),
],
[
"BmiBlock",
diff --git a/src/app/child-dev-project/children/children.service.spec.ts b/src/app/child-dev-project/children/children.service.spec.ts
index 92565d43ed..371750d700 100644
--- a/src/app/child-dev-project/children/children.service.spec.ts
+++ b/src/app/child-dev-project/children/children.service.spec.ts
@@ -269,6 +269,22 @@ describe("ChildrenService", () => {
res = await service.getNotesRelatedTo(s1.getId(true));
expect(res).toEqual([n1]);
});
+
+ it("should return the correct notes in a timespan", async () => {
+ const n1 = Note.create(moment("2023-01-01").toDate());
+ const n2 = Note.create(moment("2023-01-02").toDate());
+ const n3 = Note.create(moment("2023-01-03").toDate());
+ const n4 = Note.create(moment("2023-01-03").toDate());
+ const n5 = Note.create(moment("2023-01-04").toDate());
+ await entityMapper.saveAll([n1, n2, n3, n4, n5]);
+
+ const res = await service.getNotesInTimespan(
+ moment("2023-01-02"),
+ moment("2023-01-03"),
+ );
+
+ expect(res).toEqual(jasmine.arrayWithExactContents([n2, n3, n4]));
+ });
});
function generateChildEntities(): Child[] {
diff --git a/src/app/child-dev-project/children/children.service.ts b/src/app/child-dev-project/children/children.service.ts
index cbad2d6b26..89a281a693 100644
--- a/src/app/child-dev-project/children/children.service.ts
+++ b/src/app/child-dev-project/children/children.service.ts
@@ -222,9 +222,12 @@ export class ChildrenService {
map: `(doc) => {
if (!doc._id.startsWith("${Note.ENTITY_TYPE}")) return;
if (!Array.isArray(doc.children) || !doc.date) return;
- var d = new Date(doc.date || null);
- var dString = d.getFullYear() + "-" + String(d.getMonth()+1).padStart(2, "0") + "-" + String(d.getDate()).padStart(2, "0")
- emit(dString);
+ if (doc.date.length === 10) {
+ emit(doc.date);
+ } else {
+ var d = new Date(doc.date || null);
+ emit(d.getFullYear() + "-" + String(d.getMonth()+1).padStart(2, "0") + "-" + String(d.getDate()).padStart(2, "0"));
+ }
}`,
},
},
@@ -246,12 +249,15 @@ export class ChildrenService {
map: `(doc) => {
if (!doc._id.startsWith("${Note.ENTITY_TYPE}")) return;
if (!Array.isArray(doc.relatedEntities)) return;
-
- var d = new Date(doc.date || null);
- var dateString = d.getFullYear() + "-" + String(d.getMonth()+1).padStart(2, "0") + "-" + String(d.getDate()).padStart(2, "0")
-
+ var dString;
+ if (doc.date && doc.date.length === 10) {
+ dString = doc.date;
+ } else {
+ var d = new Date(doc.date || null);
+ dString = d.getFullYear() + "-" + String(d.getMonth()+1).padStart(2, "0") + "-" + String(d.getDate()).padStart(2, "0");
+ }
doc.relatedEntities.forEach((relatedEntity) => {
- emit([relatedEntity, dateString]);
+ emit([relatedEntity, dString]);
});
}`,
},
diff --git a/src/app/child-dev-project/children/educational-material/educational-material-component/educational-material.component.html b/src/app/child-dev-project/children/educational-material/educational-material-component/educational-material.component.html
deleted file mode 100644
index abfd833c5c..0000000000
--- a/src/app/child-dev-project/children/educational-material/educational-material-component/educational-material.component.html
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
- Total: {{ summary }}
-
-
- Average: {{ avgSummary }}
-
-
diff --git a/src/app/child-dev-project/children/educational-material/educational-material-component/educational-material.component.ts b/src/app/child-dev-project/children/educational-material/educational-material-component/educational-material.component.ts
deleted file mode 100644
index 5a065632c3..0000000000
--- a/src/app/child-dev-project/children/educational-material/educational-material-component/educational-material.component.ts
+++ /dev/null
@@ -1,121 +0,0 @@
-import { Component, Input, OnInit } from "@angular/core";
-import { NgFor, NgIf } from "@angular/common";
-import { EducationalMaterial } from "../model/educational-material";
-import { Child } from "../../model/child";
-import { FormFieldConfig } from "../../../../core/common-components/entity-form/entity-form/FormConfig";
-import { DynamicComponent } from "../../../../core/config/dynamic-components/dynamic-component.decorator";
-import { EntityMapperService } from "../../../../core/entity/entity-mapper/entity-mapper.service";
-import { applyUpdate } from "../../../../core/entity/model/entity-update";
-import { filter } from "rxjs/operators";
-import { UntilDestroy, untilDestroyed } from "@ngneat/until-destroy";
-import { EntitySubrecordComponent } from "../../../../core/common-components/entity-subrecord/entity-subrecord/entity-subrecord.component";
-
-/**
- * Displays educational materials of a child, such as a pencil, rulers, e.t.c
- * as well as a summary
- */
-@DynamicComponent("EducationalMaterial")
-@UntilDestroy()
-@Component({
- selector: "app-educational-material",
- templateUrl: "./educational-material.component.html",
- imports: [
- EntitySubrecordComponent,
- NgIf,
- NgFor
- ],
- standalone: true,
-})
-export class EducationalMaterialComponent implements OnInit {
- @Input() entity: Child;
- @Input() summaries: { total?: boolean; average?: boolean } = { total: true };
- records: EducationalMaterial[] = [];
- summary = "";
- avgSummary = "";
-
- @Input() config: { columns: FormFieldConfig[] } = {
- columns: [
- { id: "date", visibleFrom: "xs" },
- { id: "materialType", visibleFrom: "xs" },
- { id: "materialAmount", visibleFrom: "md" },
- { id: "description", visibleFrom: "md" },
- ],
- };
-
- constructor(private entityMapper: EntityMapperService) {
- this.entityMapper
- .receiveUpdates(EducationalMaterial)
- .pipe(
- untilDestroyed(this),
- filter(
- ({ entity, type }) =>
- type === "remove" || entity.child === this.entity.getId(),
- ),
- )
- .subscribe((update) => {
- this.records = applyUpdate(this.records, update);
- this.updateSummary();
- });
- }
-
- ngOnInit() {
- return this.loadData();
- }
-
- /**
- * Loads the data for a given child and updates the summary
- * @param id The id of the child to load the data for
- */
- private async loadData() {
- const allMaterials = await this.entityMapper.loadType(EducationalMaterial);
- this.records = allMaterials.filter(
- (mat) => mat.child === this.entity.getId(),
- );
- this.updateSummary();
- }
-
- newRecordFactory = () => {
- const newAtt = new EducationalMaterial(Date.now().toString());
-
- // use last entered date as default, otherwise today's date
- newAtt.date = this.records.length > 0 ? this.records[0].date : new Date();
- newAtt.child = this.entity.getId();
-
- return newAtt;
- };
-
- /**
- * update the summary or generate a new one.
- * The summary contains no duplicates and is in a
- * human-readable format
- */
- updateSummary() {
- const summary = new Map();
- const average = new Map();
-
- this.records.forEach((m) => {
- const { materialType, materialAmount } = m;
- const label = materialType?.label;
-
- if (label) {
- summary.set(label, (summary.get(label) || { count: 0, sum: 0 }));
- summary.get(label)!.count++;
- summary.get(label)!.sum += materialAmount;
- }
- });
-
- if(this.summaries.total) {
- const summaryArray = Array.from(summary.entries(), ([label, { sum }]) => `${label}: ${sum}`);
- this.summary = summaryArray.join(", ");
- }
-
- if(this.summaries.average) {
- const avgSummaryArray = Array.from(summary.entries(), ([label, { count, sum }]) => {
- const avg = parseFloat((sum / count).toFixed(2));
- average.set(label, avg);
- return `${label}: ${avg}`;
- });
- this.avgSummary = avgSummaryArray.join(", ");
- }
- }
-}
diff --git a/src/app/core/basic-datatypes/date/date-range-filter/date-range-filter-panel/date-range-filter-panel.component.spec.ts b/src/app/core/basic-datatypes/date/date-range-filter/date-range-filter-panel/date-range-filter-panel.component.spec.ts
index 44ca08bc13..b63dc2ae5f 100644
--- a/src/app/core/basic-datatypes/date/date-range-filter/date-range-filter-panel/date-range-filter-panel.component.spec.ts
+++ b/src/app/core/basic-datatypes/date/date-range-filter/date-range-filter-panel/date-range-filter-panel.component.spec.ts
@@ -23,7 +23,7 @@ describe("DateRangeFilterPanelComponent", () => {
beforeEach(async () => {
dateFilter = new DateFilter("test", "Test", defaultDateFilters);
dateFilter.selectedOption = "1";
- jasmine.clock().mockDate(new Date("2023-04-08"));
+ jasmine.clock().mockDate(moment("2023-04-08").toDate());
await TestBed.configureTestingModule({
imports: [MatNativeDateModule],
providers: [
@@ -73,8 +73,8 @@ describe("DateRangeFilterPanelComponent", () => {
await cells[12].select();
const filterRange = dateFilter.getDateRange();
- expect(filterRange.start).toEqual(new Date("2023-04-08"));
- expect(filterRange.end).toEqual(new Date("2023-04-13"));
+ expect(filterRange.start).toEqual(moment("2023-04-08").toDate());
+ expect(filterRange.end).toEqual(moment("2023-04-13").toDate());
});
it("should set the dates selected via the preset options", async () => {
diff --git a/src/app/core/basic-datatypes/date/date-range-filter/date-range-filter.component.spec.ts b/src/app/core/basic-datatypes/date/date-range-filter/date-range-filter.component.spec.ts
index 03fb26ac5d..69b266e69c 100644
--- a/src/app/core/basic-datatypes/date/date-range-filter/date-range-filter.component.spec.ts
+++ b/src/app/core/basic-datatypes/date/date-range-filter/date-range-filter.component.spec.ts
@@ -6,6 +6,7 @@ import { MatNativeDateModule } from "@angular/material/core";
import { NoopAnimationsModule } from "@angular/platform-browser/animations";
import { DateFilter } from "../../../filter/filters/filters";
import { defaultDateFilters } from "./date-range-filter-panel/date-range-filter-panel.component";
+import moment from "moment";
describe("DateRangeFilterComponent", () => {
let component: DateRangeFilterComponent;
@@ -33,7 +34,7 @@ describe("DateRangeFilterComponent", () => {
component.filterConfig = dateFilter;
expect(component.dateFilter.getFilter()).toEqual({});
- jasmine.clock().mockDate(new Date("2023-05-18"));
+ jasmine.clock().mockDate(moment("2023-05-18").toDate());
dateFilter.selectedOption = "0";
component.filterConfig = dateFilter;
let expectedDataFilter = {
@@ -101,8 +102,8 @@ describe("DateRangeFilterComponent", () => {
it("should set the correct date filter when changing the date range manually", () => {
component.filterConfig = new DateFilter("test", "test", []);
- component.fromDate = new Date("2021-10-28");
- component.toDate = new Date("2024-02-12");
+ component.fromDate = moment("2021-10-28").toDate();
+ component.toDate = moment("2024-02-12").toDate();
component.dateChangedManually();
diff --git a/src/app/core/basic-datatypes/map/map.datatype.spec.ts b/src/app/core/basic-datatypes/map/map.datatype.spec.ts
index e24a2947f4..b811a6f6b9 100644
--- a/src/app/core/basic-datatypes/map/map.datatype.spec.ts
+++ b/src/app/core/basic-datatypes/map/map.datatype.spec.ts
@@ -20,6 +20,7 @@ import { TestBed, waitForAsync } from "@angular/core/testing";
import { DatabaseField } from "../../entity/database-field.decorator";
import { EntitySchemaService } from "../../entity/schema/entity-schema.service";
import { MockedTestingModule } from "../../../utils/mocked-testing.module";
+import moment from "moment";
describe("Schema data type: map", () => {
class TestEntity extends Entity {
@@ -39,8 +40,8 @@ describe("Schema data type: map", () => {
it("converts contained dates to month for saving", () => {
const id = "test1";
const entity = new TestEntity(id);
- entity.dateMap.set("a", new Date("2020-01-01"));
- entity.dateMap.set("b", new Date("1999-01-25"));
+ entity.dateMap.set("a", moment("2020-01-01").toDate());
+ entity.dateMap.set("b", moment("1999-01-25").toDate());
const rawData = entitySchemaService.transformEntityToDatabaseFormat(entity);
diff --git a/src/app/core/basic-datatypes/schema-embed/schema-embed.datatype.spec.ts b/src/app/core/basic-datatypes/schema-embed/schema-embed.datatype.spec.ts
index bccebe1bdc..530b7b2b5e 100644
--- a/src/app/core/basic-datatypes/schema-embed/schema-embed.datatype.spec.ts
+++ b/src/app/core/basic-datatypes/schema-embed/schema-embed.datatype.spec.ts
@@ -20,6 +20,7 @@ import { DatabaseField } from "../../entity/database-field.decorator";
import { EntitySchemaService } from "../../entity/schema/entity-schema.service";
import { TestBed, waitForAsync } from "@angular/core/testing";
import { MockedTestingModule } from "../../../utils/mocked-testing.module";
+import moment from "moment";
describe("Schema data type: schema-embed", () => {
class InnerClass {
@@ -55,7 +56,7 @@ describe("Schema data type: schema-embed", () => {
it("applies inner schema transformation for database format", () => {
const entity = new TestEntity();
- entity.embedded.value = new Date("2020-01-01");
+ entity.embedded.value = moment("2020-01-01").toDate();
const rawData = entitySchemaService.transformEntityToDatabaseFormat(entity);
expect(rawData.embedded.value).toEqual("2020-01");
diff --git a/src/app/core/common-components/confirmation-dialog/confirmation-dialog.service.ts b/src/app/core/common-components/confirmation-dialog/confirmation-dialog.service.ts
index d7215e2c0b..f7fd6c9cb5 100644
--- a/src/app/core/common-components/confirmation-dialog/confirmation-dialog.service.ts
+++ b/src/app/core/common-components/confirmation-dialog/confirmation-dialog.service.ts
@@ -1,11 +1,10 @@
-import { Injectable } from "@angular/core";
+import { Injectable, NgZone } from "@angular/core";
import { MatDialog } from "@angular/material/dialog";
import {
ConfirmationDialogButton,
ConfirmationDialogComponent,
YesNoButtons,
} from "./confirmation-dialog/confirmation-dialog.component";
-import { map } from "rxjs/operators";
import { firstValueFrom } from "rxjs";
/**
@@ -25,7 +24,10 @@ import { firstValueFrom } from "rxjs";
*/
@Injectable({ providedIn: "root" })
export class ConfirmationDialogService {
- constructor(private dialog: MatDialog) {}
+ constructor(
+ private dialog: MatDialog,
+ private ngZone: NgZone,
+ ) {}
/**
* Open a dialog with the given configuration.
@@ -42,18 +44,17 @@ export class ConfirmationDialogService {
buttons: ConfirmationDialogButton[] = YesNoButtons,
closeButton = true,
): Promise {
- return firstValueFrom(
- this.dialog
- .open(ConfirmationDialogComponent, {
- data: {
- title: title,
- text: text,
- buttons: buttons,
- closeButton: closeButton,
- },
- })
- .afterClosed(),
- );
+ const dialogRef = this.ngZone.run(() => {
+ return this.dialog.open(ConfirmationDialogComponent, {
+ data: {
+ title: title,
+ text: text,
+ buttons: buttons,
+ closeButton: closeButton,
+ },
+ });
+ });
+ return firstValueFrom(dialogRef.afterClosed());
}
getDiscardConfirmation() {
diff --git a/src/app/core/common-components/edit-text-with-autocomplete/edit-text-with-autocomplete.component.spec.ts b/src/app/core/common-components/edit-text-with-autocomplete/edit-text-with-autocomplete.component.spec.ts
index 98277cf35d..1259659bb2 100644
--- a/src/app/core/common-components/edit-text-with-autocomplete/edit-text-with-autocomplete.component.spec.ts
+++ b/src/app/core/common-components/edit-text-with-autocomplete/edit-text-with-autocomplete.component.spec.ts
@@ -13,8 +13,10 @@ describe("EditTextWithAutocompleteComponent", () => {
let component: EditTextWithAutocompleteComponent;
let fixture: ComponentFixture;
let loadTypeSpy: jasmine.Spy;
+ let mockConfirmationDialog: jasmine.SpyObj;
beforeEach(waitForAsync(() => {
+ mockConfirmationDialog = jasmine.createSpyObj(["getConfirmation"]);
TestBed.configureTestingModule({
imports: [
EditTextWithAutocompleteComponent,
@@ -23,7 +25,7 @@ describe("EditTextWithAutocompleteComponent", () => {
providers: [
{
provide: ConfirmationDialogService,
- useValue: new ConfirmationDialogService(null),
+ useValue: mockConfirmationDialog,
},
],
}).compileComponents();
@@ -149,11 +151,7 @@ describe("EditTextWithAutocompleteComponent", () => {
rA1.assignedTo = ["user1", "user2"];
rA1.linkedGroups = ["group1", "group2"];
loadTypeSpy.and.resolveTo([rA1, rA2]);
- const confirmationDialogueSpy: jasmine.Spy = spyOn(
- TestBed.inject(ConfirmationDialogService),
- "getConfirmation",
- );
- confirmationDialogueSpy.and.resolveTo(true);
+ mockConfirmationDialog.getConfirmation.and.resolveTo(true);
await component.ngOnInit();
component.formControl.setValue("test1");
diff --git a/src/app/core/common-components/entity-form/entity-form/entity-form.component.spec.ts b/src/app/core/common-components/entity-form/entity-form/entity-form.component.spec.ts
index b5eb05e358..e57589da85 100644
--- a/src/app/core/common-components/entity-form/entity-form/entity-form.component.spec.ts
+++ b/src/app/core/common-components/entity-form/entity-form/entity-form.component.spec.ts
@@ -110,6 +110,24 @@ describe("EntityFormComponent", () => {
);
});
+ it("should clear field in form for properties removed in updated remote entity", async () => {
+ const originalEntity = { projectNumber: "p1", name: "test" };
+ const formValues = { projectNumber: "p2", name: "test" };
+ const remoteValues = {
+ _rev: "new rev",
+ };
+ await expectApplyChangesPopup(
+ "no",
+ originalEntity,
+ formValues,
+ remoteValues,
+ {
+ projectNumber: "p2",
+ _rev: "new rev",
+ },
+ );
+ });
+
it("should not show popup if date was saved as day-only", async () => {
const form = { dateOfBirth: new DateWithAge() };
const dateOnly = new DateWithAge();
diff --git a/src/app/core/common-components/entity-form/entity-form/entity-form.component.ts b/src/app/core/common-components/entity-form/entity-form/entity-form.component.ts
index 5c9516dcdd..fd806f216b 100644
--- a/src/app/core/common-components/entity-form/entity-form/entity-form.component.ts
+++ b/src/app/core/common-components/entity-form/entity-form/entity-form.component.ts
@@ -88,48 +88,43 @@ export class EntityFormComponent
}
}
- private async applyChanges(entity: T) {
- if (this.formIsUpToDate(entity)) {
- Object.assign(this.entity, entity as any);
+ private async applyChanges(externallyUpdatedEntity: T) {
+ if (this.formIsUpToDate(externallyUpdatedEntity)) {
+ Object.assign(this.entity, externallyUpdatedEntity);
return;
}
+
+ const userEditedFields = Object.entries(this.form.getRawValue()).filter(
+ ([key]) => this.form.controls[key].dirty,
+ );
+ let userEditsWithoutConflicts = userEditedFields.filter(([key]) =>
+ // no conflict with updated values
+ this.entityEqualsFormValue(
+ externallyUpdatedEntity[key],
+ this.initialFormValues[key],
+ ),
+ );
if (
- this.changesOnlyAffectPristineFields(entity) ||
- (await this.confirmationDialog.getConfirmation(
+ userEditsWithoutConflicts.length !== userEditedFields.length &&
+ !(await this.confirmationDialog.getConfirmation(
$localize`Load changes?`,
$localize`Local changes are in conflict with updated values synced from the server. Do you want the local changes to be overwritten with the latest values?`,
))
) {
- Object.assign(this.initialFormValues, entity);
- this.form.patchValue(entity as any);
- Object.assign(this.entity, entity as any);
+ // user "resolved" conflicts by confirming to overwrite
+ userEditsWithoutConflicts = userEditedFields;
}
- }
- private changesOnlyAffectPristineFields(updatedEntity: T) {
- if (this.form.pristine) {
- return true;
- }
-
- const dirtyFields = Object.entries(this.form.controls).filter(
- ([_, form]) => form.dirty,
- );
- for (const [key] of dirtyFields) {
- if (
- this.entityEqualsFormValue(
- updatedEntity[key],
- this.initialFormValues[key],
- )
- ) {
- // keep our pending form field changes
- delete updatedEntity[key];
- } else {
- // dirty form field has conflicting change
- return false;
- }
- }
+ // apply update to all pristine (not user-edited) fields and update base entity (to avoid conflicts when saving)
+ Object.assign(this.entity, externallyUpdatedEntity);
+ Object.assign(this.initialFormValues, externallyUpdatedEntity);
+ this.form.reset(externallyUpdatedEntity as any);
- return true;
+ // re-apply user-edited fields
+ userEditsWithoutConflicts.forEach(([key, value]) => {
+ this.form.get(key).setValue(value);
+ this.form.get(key).markAsDirty();
+ });
}
private formIsUpToDate(entity: T): boolean {
diff --git a/src/app/core/config/config-fix.ts b/src/app/core/config/config-fix.ts
index 333e83ca6f..0c160bf969 100644
--- a/src/app/core/config/config-fix.ts
+++ b/src/app/core/config/config-fix.ts
@@ -706,14 +706,24 @@ export const defaultJsonConfig = {
"components": [
{
"title": "",
- "component": "EducationalMaterial",
+ "component": "RelatedEntitiesWithSummary",
"config": {
- "summaries": {
- total: true,
- average: true,
+ "entityType": EducationalMaterial.ENTITY_TYPE,
+ "property": "child",
+ "columns": [
+ { "id": "date", "visibleFrom": "xs" },
+ { "id": "materialType", "visibleFrom": "xs" },
+ { "id": "materialAmount", "visibleFrom": "md" },
+ { "id": "description", "visibleFrom": "md" },
+ ],
+ "summaries": {
+ "countProperty": "materialAmount",
+ "groupBy": "materialType",
+ "total": true,
+ "average": false
}
}
- }
+ }
]
},
{
diff --git a/src/app/core/entity-details/related-entities-with-summary/related-entities-with-summary.component.html b/src/app/core/entity-details/related-entities-with-summary/related-entities-with-summary.component.html
new file mode 100644
index 0000000000..c59e53e42c
--- /dev/null
+++ b/src/app/core/entity-details/related-entities-with-summary/related-entities-with-summary.component.html
@@ -0,0 +1,16 @@
+
+
+
+
+ Total: {{ summarySum }}
+
+
+ Average: {{ summaryAvg }}
+
+
diff --git a/src/app/child-dev-project/children/educational-material/educational-material-component/educational-material.component.spec.ts b/src/app/core/entity-details/related-entities-with-summary/related-entities-with-summary.component.spec.ts
similarity index 50%
rename from src/app/child-dev-project/children/educational-material/educational-material-component/educational-material.component.spec.ts
rename to src/app/core/entity-details/related-entities-with-summary/related-entities-with-summary.component.spec.ts
index 9068e33c8e..5c17e54951 100644
--- a/src/app/child-dev-project/children/educational-material/educational-material-component/educational-material.component.spec.ts
+++ b/src/app/core/entity-details/related-entities-with-summary/related-entities-with-summary.component.spec.ts
@@ -1,17 +1,23 @@
-import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing";
-
-import { EducationalMaterialComponent } from "./educational-material.component";
-import { Child } from "../../model/child";
-import { MockedTestingModule } from "../../../../utils/mocked-testing.module";
-import { EducationalMaterial } from "../model/educational-material";
-import { ConfigurableEnumValue } from "../../../../core/basic-datatypes/configurable-enum/configurable-enum.interface";
-import { EntityMapperService } from "../../../../core/entity/entity-mapper/entity-mapper.service";
+import {
+ ComponentFixture,
+ fakeAsync,
+ TestBed,
+ tick,
+ waitForAsync,
+} from "@angular/core/testing";
+
+import { RelatedEntitiesWithSummaryComponent } from "./related-entities-with-summary.component";
+import { Child } from "../../../child-dev-project/children/model/child";
+import { MockedTestingModule } from "../../../utils/mocked-testing.module";
+import { EducationalMaterial } from "../../../child-dev-project/children/educational-material/model/educational-material";
+import { ConfigurableEnumValue } from "../../basic-datatypes/configurable-enum/configurable-enum.interface";
+import { EntityMapperService } from "../../entity/entity-mapper/entity-mapper.service";
import { Subject } from "rxjs";
-import { UpdatedEntity } from "../../../../core/entity/model/entity-update";
+import { UpdatedEntity } from "../../entity/model/entity-update";
-describe("EducationalMaterialComponent", () => {
- let component: EducationalMaterialComponent;
- let fixture: ComponentFixture;
+describe("RelatedEntitiesWithSummaryComponent", () => {
+ let component: RelatedEntitiesWithSummaryComponent;
+ let fixture: ComponentFixture;
const updates = new Subject>();
const child = new Child("22");
const PENCIL: ConfigurableEnumValue = {
@@ -25,17 +31,29 @@ describe("EducationalMaterialComponent", () => {
beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({
- imports: [EducationalMaterialComponent, MockedTestingModule.withState()],
+ imports: [
+ RelatedEntitiesWithSummaryComponent,
+ MockedTestingModule.withState(),
+ ],
}).compileComponents();
const entityMapper = TestBed.inject(EntityMapperService);
spyOn(entityMapper, "receiveUpdates").and.returnValue(updates);
}));
beforeEach(() => {
- fixture = TestBed.createComponent(EducationalMaterialComponent);
+ fixture = TestBed.createComponent(RelatedEntitiesWithSummaryComponent);
component = fixture.componentInstance;
component.entity = child;
- component.summaries = {total: true, average: true};
+ component.entityType = EducationalMaterial.ENTITY_TYPE;
+ component.property = "child";
+
+ component.summaries = {
+ countProperty: "materialAmount",
+ groupBy: "materialType",
+ total: true,
+ average: true,
+ };
+
fixture.detectChanges();
});
@@ -44,32 +62,47 @@ describe("EducationalMaterialComponent", () => {
});
it("produces an empty summary when there are no records", () => {
- component.records = [];
+ component.data = [];
component.updateSummary();
- expect(component.summary).toHaveSize(0);
- expect(component.avgSummary).toHaveSize(0);
+ expect(component.summarySum).toHaveSize(0);
+ expect(component.summaryAvg).toHaveSize(0);
});
function setRecordsAndGenerateSummary(
...records: Partial[]
) {
- component.records = records.map(EducationalMaterial.create);
+ component.data = records.map(EducationalMaterial.create);
component.updateSummary();
}
it("produces a singleton summary when there is a single record", () => {
setRecordsAndGenerateSummary({ materialType: PENCIL, materialAmount: 1 });
- expect(component.summary).toEqual(`${PENCIL.label}: 1`);
- expect(component.avgSummary).toEqual(`${PENCIL.label}: 1`);
+ expect(component.summarySum).toEqual(`${PENCIL.label}: 1`);
+ expect(component.summaryAvg).toEqual(`${PENCIL.label}: 1`);
});
it("produces a summary of all records when they are all different", () => {
setRecordsAndGenerateSummary(
{ materialType: PENCIL, materialAmount: 2 },
{ materialType: RULER, materialAmount: 1 },
+ { materialAmount: 1 },
+ );
+ expect(component.summarySum).toEqual(
+ `${PENCIL.label}: 2, ${RULER.label}: 1, undefined: 1`,
);
- expect(component.summary).toEqual(`${PENCIL.label}: 2, ${RULER.label}: 1`);
- expect(component.avgSummary).toEqual(`${PENCIL.label}: 2, ${RULER.label}: 1`);
+ expect(component.summaryAvg).toEqual(
+ `${PENCIL.label}: 2, ${RULER.label}: 1, undefined: 1`,
+ );
+ });
+
+ it("produces a singly summary without grouping, if `groupBy` is not given (or the group value undefined)", () => {
+ component.data = [{ amount: 1 }, { amount: 5 }] as any[];
+ delete component.summaries.groupBy;
+ component.summaries.countProperty = "amount";
+ component.updateSummary();
+
+ expect(component.summarySum).toEqual(`6`);
+ expect(component.summaryAvg).toEqual(`3`);
});
it("produces a summary of all records when there are duplicates", () => {
@@ -79,56 +112,70 @@ describe("EducationalMaterialComponent", () => {
{ materialType: PENCIL, materialAmount: 3 },
);
- expect(component.summary).toEqual(`${PENCIL.label}: 4, ${RULER.label}: 1`);
- expect(component.avgSummary).toEqual(`${PENCIL.label}: 2, ${RULER.label}: 1`);
+ expect(component.summarySum).toEqual(
+ `${PENCIL.label}: 4, ${RULER.label}: 1`,
+ );
+ expect(component.summaryAvg).toEqual(
+ `${PENCIL.label}: 2, ${RULER.label}: 1`,
+ );
});
it("produces summary of all records when average is false and total is true", () => {
- component.summaries = { total: true, average: false }
+ component.summaries.total = true;
+ component.summaries.average = false;
setRecordsAndGenerateSummary(
{ materialType: PENCIL, materialAmount: 1 },
{ materialType: RULER, materialAmount: 1 },
{ materialType: PENCIL, materialAmount: 3 },
);
- expect(component.summary).toEqual(`${PENCIL.label}: 4, ${RULER.label}: 1`);
- expect(component.avgSummary).toEqual(``);
+ expect(component.summarySum).toEqual(
+ `${PENCIL.label}: 4, ${RULER.label}: 1`,
+ );
+ expect(component.summaryAvg).toEqual(``);
});
it("produces summary of all records when average is true and total is false", () => {
- component.summaries = { total: false, average: true };
+ component.summaries.total = false;
+ component.summaries.average = true;
setRecordsAndGenerateSummary(
{ materialType: PENCIL, materialAmount: 1 },
{ materialType: RULER, materialAmount: 1 },
{ materialType: PENCIL, materialAmount: 3 },
);
- expect(component.summary).toEqual(``);
- expect(component.avgSummary).toEqual(`${PENCIL.label}: 2, ${RULER.label}: 1`);
+ expect(component.summarySum).toEqual(``);
+ expect(component.summaryAvg).toEqual(
+ `${PENCIL.label}: 2, ${RULER.label}: 1`,
+ );
});
it("does not produces summary of all records when both average and total are false", () => {
- component.summaries = { total: false, average: false };
+ component.summaries.total = false;
+ component.summaries.average = false;
setRecordsAndGenerateSummary(
{ materialType: PENCIL, materialAmount: 1 },
{ materialType: RULER, materialAmount: 1 },
{ materialType: PENCIL, materialAmount: 3 },
);
-
- expect(component.summary).toEqual(``);
- expect(component.avgSummary).toEqual(``);
+
+ expect(component.summarySum).toEqual(``);
+ expect(component.summaryAvg).toEqual(``);
});
it("produces summary of all records when both average and total are true", () => {
- component.summaries = { total: true, average: true };
setRecordsAndGenerateSummary(
{ materialType: PENCIL, materialAmount: 1 },
{ materialType: RULER, materialAmount: 1 },
{ materialType: PENCIL, materialAmount: 3 },
);
- expect(component.summary).toEqual(`${PENCIL.label}: 4, ${RULER.label}: 1`);
- expect(component.avgSummary).toEqual(`${PENCIL.label}: 2, ${RULER.label}: 1`);
+ expect(component.summarySum).toEqual(
+ `${PENCIL.label}: 4, ${RULER.label}: 1`,
+ );
+ expect(component.summaryAvg).toEqual(
+ `${PENCIL.label}: 2, ${RULER.label}: 1`,
+ );
});
it("loads all education data associated with a child and updates the summary", async () => {
@@ -141,38 +188,41 @@ describe("EducationalMaterialComponent", () => {
);
component.entity = new Child("22");
await component.ngOnInit();
- expect(component.summary).toEqual(`${PENCIL.label}: 1, ${RULER.label}: 2`);
- expect(component.records).toEqual(educationalData);
+ expect(component.summarySum).toEqual(
+ `${PENCIL.label}: 1, ${RULER.label}: 2`,
+ );
+ expect(component.data).toEqual(educationalData);
});
- it("associates a new record with the current child", () => {
- const newRecord = component.newRecordFactory();
- expect(newRecord.child).toBe(child.getId());
- });
+ it("should update the summary when entity updates are received", fakeAsync(() => {
+ component.ngOnInit();
+ tick();
- it("should update the summary when entity updates are received", async () => {
const update1 = EducationalMaterial.create({
child: child.getId(),
materialType: PENCIL,
materialAmount: 1,
});
updates.next({ entity: update1, type: "new" });
+ tick();
- expect(component.records).toEqual([update1]);
- expect(component.summary).toBe(`${PENCIL.label}: 1`);
+ expect(component.data).toEqual([update1]);
+ expect(component.summarySum).toBe(`${PENCIL.label}: 1`);
const update2 = update1.copy() as EducationalMaterial;
update2.materialAmount = 2;
updates.next({ entity: update2, type: "update" });
+ tick();
- expect(component.records).toEqual([update2]);
- expect(component.summary).toBe(`${PENCIL.label}: 2`);
+ expect(component.data).toEqual([update2]);
+ expect(component.summarySum).toBe(`${PENCIL.label}: 2`);
const unrelatedUpdate = update1.copy() as EducationalMaterial;
unrelatedUpdate.child = "differentChild";
updates.next({ entity: unrelatedUpdate, type: "new" });
+ tick();
// No change
- expect(component.records).toEqual([update2]);
- expect(component.summary).toBe(`${PENCIL.label}: 2`);
- });
+ expect(component.data).toEqual([update2]);
+ expect(component.summarySum).toBe(`${PENCIL.label}: 2`);
+ }));
});
diff --git a/src/app/core/entity-details/related-entities-with-summary/related-entities-with-summary.component.ts b/src/app/core/entity-details/related-entities-with-summary/related-entities-with-summary.component.ts
new file mode 100644
index 0000000000..2055435762
--- /dev/null
+++ b/src/app/core/entity-details/related-entities-with-summary/related-entities-with-summary.component.ts
@@ -0,0 +1,113 @@
+import { Component, Input, OnInit } from "@angular/core";
+import { NgFor, NgIf } from "@angular/common";
+import { DynamicComponent } from "../../config/dynamic-components/dynamic-component.decorator";
+import { UntilDestroy, untilDestroyed } from "@ngneat/until-destroy";
+import { EntitySubrecordComponent } from "../../common-components/entity-subrecord/entity-subrecord/entity-subrecord.component";
+import { RelatedEntitiesComponent } from "../related-entities/related-entities.component";
+import { Entity } from "../../entity/model/entity";
+import { filter } from "rxjs/operators";
+import { applyUpdate } from "../../entity/model/entity-update";
+
+/**
+ * Load and display a list of entity subrecords (entities related to the current entity details view)
+ * including a summary below the table.
+ */
+@DynamicComponent("RelatedEntitiesWithSummary")
+@UntilDestroy()
+@Component({
+ selector: "app-related-entities-with-summary",
+ templateUrl: "./related-entities-with-summary.component.html",
+ imports: [EntitySubrecordComponent, NgIf, NgFor],
+ standalone: true,
+})
+export class RelatedEntitiesWithSummaryComponent
+ extends RelatedEntitiesComponent
+ implements OnInit
+{
+ /**
+ * Configuration of what numbers should be summarized below the table.
+ */
+ @Input() summaries?: {
+ countProperty: string;
+ groupBy?: string;
+ total?: boolean;
+ average?: boolean;
+ };
+
+ summarySum = "";
+ summaryAvg = "";
+
+ async ngOnInit() {
+ await super.ngOnInit();
+ this.updateSummary();
+
+ this.entityMapper
+ .receiveUpdates(this.entityCtr)
+ .pipe(
+ untilDestroyed(this),
+ filter(
+ ({ entity, type }) =>
+ type === "remove" || entity[this.property] === this.entity.getId(),
+ ),
+ )
+ .subscribe((update) => {
+ this.data = applyUpdate(this.data, update);
+ this.updateSummary();
+ });
+ }
+
+ /**
+ * update the summary or generate a new one.
+ * The summary contains no duplicates and is in a
+ * human-readable format
+ */
+ updateSummary() {
+ if (!this.summaries) {
+ this.summarySum = "";
+ this.summaryAvg = "";
+ return;
+ }
+
+ const summary = new Map();
+ const average = new Map();
+
+ this.data.forEach((m) => {
+ const amount = m[this.summaries.countProperty];
+ let groupLabel;
+ if (this.summaries.groupBy) {
+ groupLabel =
+ m[this.summaries.groupBy]?.label ?? m[this.summaries.groupBy];
+ }
+
+ summary.set(groupLabel, summary.get(groupLabel) || { count: 0, sum: 0 });
+ summary.get(groupLabel).count++;
+ summary.get(groupLabel).sum += amount;
+ });
+
+ if (this.summaries.total) {
+ const summarySumArray = Array.from(
+ summary.entries(),
+ ([label, { sum }]) => `${label}: ${sum}`,
+ );
+ this.summarySum = summarySumArray.join(", ");
+ }
+
+ if (this.summaries.average) {
+ const summaryAvgArray = Array.from(
+ summary.entries(),
+ ([label, { count, sum }]) => {
+ const avg = parseFloat((sum / count).toFixed(2));
+ average.set(label, avg);
+ return `${label}: ${avg}`;
+ },
+ );
+ this.summaryAvg = summaryAvgArray.join(", ");
+ }
+
+ if (summary.size === 1 && summary.has(undefined)) {
+ // display only single summary without group label (this also applies if no groupBy is given)
+ this.summarySum = this.summarySum.replace("undefined: ", "");
+ this.summaryAvg = this.summaryAvg.replace("undefined: ", "");
+ }
+ }
+}
diff --git a/src/app/core/entity-details/related-entities/related-entities.component.spec.ts b/src/app/core/entity-details/related-entities/related-entities.component.spec.ts
index 44c9b0eebd..49a1a1f2f5 100644
--- a/src/app/core/entity-details/related-entities/related-entities.component.spec.ts
+++ b/src/app/core/entity-details/related-entities/related-entities.component.spec.ts
@@ -30,7 +30,7 @@ describe("RelatedEntitiesComponent", () => {
expect(component).toBeTruthy();
});
- it("should load the entities which are linked with the passed one", async () => {
+ it("should load only the entities which are linked with the passed one", async () => {
const c1 = new Child();
const c2 = new Child();
const r1 = new ChildSchoolRelation();
@@ -52,7 +52,7 @@ describe("RelatedEntitiesComponent", () => {
await component.ngOnInit();
expect(component.columns).toBe(columns);
- expect(component.data).toEqual([r1, r2, r3]);
+ expect(component.data).toEqual([r1, r2]);
expect(component.filter).toEqual({ ...filter, childId: c1.getId() });
});
diff --git a/src/app/core/entity-details/related-entities/related-entities.component.ts b/src/app/core/entity-details/related-entities/related-entities.component.ts
index a6c9b1507a..7e5a4eb93e 100644
--- a/src/app/core/entity-details/related-entities/related-entities.component.ts
+++ b/src/app/core/entity-details/related-entities/related-entities.component.ts
@@ -50,7 +50,7 @@ export class RelatedEntitiesComponent implements OnInit {
protected entityCtr: EntityConstructor;
constructor(
- private entityMapper: EntityMapperService,
+ protected entityMapper: EntityMapperService,
private entities: EntityRegistry,
) {}
@@ -64,7 +64,12 @@ export class RelatedEntitiesComponent implements OnInit {
this.entityCtr = this.entities.get(this.entityType) as EntityConstructor;
this.isArray = isArrayProperty(this.entityCtr, this.property);
- this.data = await this.entityMapper.loadType(this.entityType);
+ this.data = (await this.entityMapper.loadType(this.entityType)).filter(
+ (e) =>
+ this.isArray
+ ? e[this.property].includes(this.entity.getId())
+ : e[this.property] === this.entity.getId(),
+ );
this.filter = {
...this.filter,
[this.property]: this.isArray
diff --git a/src/app/core/entity-details/related-time-period-entities/related-time-period-entities.component.spec.ts b/src/app/core/entity-details/related-time-period-entities/related-time-period-entities.component.spec.ts
index 85bcc2e268..e5ad40422f 100644
--- a/src/app/core/entity-details/related-time-period-entities/related-time-period-entities.component.spec.ts
+++ b/src/app/core/entity-details/related-time-period-entities/related-time-period-entities.component.spec.ts
@@ -124,13 +124,14 @@ describe("RelatedTimePeriodEntitiesComponent", () => {
});
it("should create a new entity with the start date inferred from previous relations", async () => {
+ const child = new Child();
const existingRelation = new ChildSchoolRelation();
existingRelation.start = moment().subtract(1, "year").toDate();
existingRelation.end = moment().subtract(1, "week").toDate();
+ existingRelation.childId = child.getId(false);
const loadType = spyOn(entityMapper, "loadType");
loadType.and.resolveTo([existingRelation]);
- const child = new Child();
component.entity = child;
await component.ngOnInit();
diff --git a/src/app/core/export/download-service/download.service.spec.ts b/src/app/core/export/download-service/download.service.spec.ts
index 916e430256..9ae04ea0ce 100644
--- a/src/app/core/export/download-service/download.service.spec.ts
+++ b/src/app/core/export/download-service/download.service.spec.ts
@@ -7,6 +7,7 @@ import { DatabaseEntity } from "../../entity/database-entity.decorator";
import { Entity } from "../../entity/model/entity";
import { ConfigurableEnumValue } from "../../basic-datatypes/configurable-enum/configurable-enum.interface";
import { DatabaseField } from "../../entity/database-field.decorator";
+import moment from "moment";
describe("DownloadService", () => {
let service: DownloadService;
@@ -96,7 +97,7 @@ describe("DownloadService", () => {
const testEntity = new TestEntity();
testEntity.enumProperty = testEnumValue;
- testEntity.dateProperty = new Date(testDate);
+ testEntity.dateProperty = moment(testDate).toDate();
testEntity.boolProperty = true;
const csvExport = await service.createCsv([testEntity]);
@@ -112,7 +113,7 @@ describe("DownloadService", () => {
it("should export a date as YYYY-MM-dd only", async () => {
const dateString = "2021-01-01";
- const dateObject = new Date(dateString);
+ const dateObject = moment(dateString).toDate();
dateObject.setHours(10, 11, 12);
const exportData = [
diff --git a/src/app/core/filter/filter.service.spec.ts b/src/app/core/filter/filter.service.spec.ts
index a06f68193a..3e00bf7cbd 100644
--- a/src/app/core/filter/filter.service.spec.ts
+++ b/src/app/core/filter/filter.service.spec.ts
@@ -6,6 +6,7 @@ import { DataFilter } from "../common-components/entity-subrecord/entity-subreco
import { Note } from "../../child-dev-project/notes/model/note";
import { ConfigurableEnumService } from "../basic-datatypes/configurable-enum/configurable-enum.service";
import { createTestingConfigurableEnumService } from "../basic-datatypes/configurable-enum/configurable-enum-testing";
+import moment from "moment";
describe("FilterService", () => {
let service: FilterService;
@@ -67,11 +68,11 @@ describe("FilterService", () => {
});
it("should support filtering dates with day granularity", () => {
- const n1 = Note.create(new Date("2022-01-01"));
- const n2 = Note.create(new Date("2022-01-02"));
- const n3 = Note.create(new Date("2022-01-03"));
- const n4 = Note.create(new Date("2022-01-04"));
- const n5 = Note.create(new Date("2022-01-05"));
+ const n1 = Note.create(moment("2022-01-01").toDate());
+ const n2 = Note.create(moment("2022-01-02").toDate());
+ const n3 = Note.create(moment("2022-01-03").toDate());
+ const n4 = Note.create(moment("2022-01-04").toDate());
+ const n5 = Note.create(moment("2022-01-05").toDate());
const notes = [n1, n2, n3, n4, n5];
let predicate = service.getFilterPredicate({
diff --git a/src/app/core/filter/filter.service.ts b/src/app/core/filter/filter.service.ts
index b4db1c5201..8f58997b93 100644
--- a/src/app/core/filter/filter.service.ts
+++ b/src/app/core/filter/filter.service.ts
@@ -3,11 +3,11 @@ import { EntitySchemaField } from "../entity/schema/entity-schema-field";
import { DataFilter } from "../common-components/entity-subrecord/entity-subrecord/entity-subrecord-config";
import { Entity } from "../entity/model/entity";
import {
- createFactory,
- allParsingInstructions,
allInterpreters,
- Filter,
+ allParsingInstructions,
compare,
+ createFactory,
+ Filter,
} from "@ucast/mongo2js";
import moment from "moment";
import { ConfigurableEnumService } from "../basic-datatypes/configurable-enum/configurable-enum.service";
@@ -72,7 +72,7 @@ export class FilterService {
value = this.parseConfigurableEnumValue(property, value);
}
if (property.dataType.includes("date")) {
- value = new Date(value);
+ value = moment(value).toDate();
}
newEntity[key] = value;
}
diff --git a/src/app/core/filter/filters/filters.ts b/src/app/core/filter/filters/filters.ts
index 5195388211..ab60a04953 100644
--- a/src/app/core/filter/filters/filters.ts
+++ b/src/app/core/filter/filters/filters.ts
@@ -61,8 +61,8 @@ export class DateFilter extends Filter {
}
const dates = this.selectedOption?.split("_");
if (dates?.length == 2) {
- const firstDate = new Date(dates[0]);
- const secondDate = new Date(dates[1]);
+ const firstDate = moment(dates[0]).toDate();
+ const secondDate = moment(dates[1]).toDate();
return new DateRange(
isValidDate(firstDate) ? firstDate : undefined,
isValidDate(secondDate) ? secondDate : undefined,
diff --git a/src/assets/locale/messages.de.xlf b/src/assets/locale/messages.de.xlf
index 4f181dd144..50827d2e70 100644
--- a/src/assets/locale/messages.de.xlf
+++ b/src/assets/locale/messages.de.xlf
@@ -1126,15 +1126,15 @@
src/app/core/config/config-fix.ts
- 28
+ 22
src/app/core/config/config-fix.ts
- 569
+ 563
src/app/core/config/config-fix.ts
- 950
+ 960
@@ -1821,7 +1821,7 @@
Message for user
src/app/features/file/edit-file/edit-file.component.ts
- 130
+ 132
@@ -2163,22 +2163,13 @@
96
-
-
- Aam Digital - DEMO (automatisch generierte Daten)
- Page title
-
- src/app/core/config/config-fix.ts
- 14
-
-
Dashboard
Menu item
src/app/core/config/config-fix.ts
- 23
+ 17
@@ -2191,7 +2182,7 @@
src/app/core/config/config-fix.ts
- 33
+ 27
@@ -2200,11 +2191,11 @@
Menu item
src/app/core/config/config-fix.ts
- 38
+ 32
src/app/core/config/config-fix.ts
- 667
+ 661
@@ -2213,7 +2204,7 @@
Menu item
src/app/core/config/config-fix.ts
- 48
+ 42
src/app/features/todos/model/todo.ts
@@ -2226,21 +2217,21 @@
Menu item
src/app/core/config/config-fix.ts
- 53
+ 47
App-Einstellungen
+ Menu item
src/app/core/config/config-fix.ts
- 58
+ 52
src/app/core/site-settings/site-settings.ts
14
- Menu item
@@ -2248,7 +2239,7 @@
Menu item
src/app/core/config/config-fix.ts
- 63
+ 57
@@ -2257,7 +2248,7 @@
Menu item
src/app/core/config/config-fix.ts
- 68
+ 62
src/app/core/user/user.ts
@@ -2270,7 +2261,7 @@
Menu item
src/app/core/config/config-fix.ts
- 73
+ 67
@@ -2279,7 +2270,7 @@
Menu item
src/app/core/config/config-fix.ts
- 78
+ 72
@@ -2288,7 +2279,7 @@
Menu item
src/app/core/config/config-fix.ts
- 83
+ 77
@@ -2298,7 +2289,7 @@
Dashboard shortcut widget
src/app/core/config/config-fix.ts
- 98
+ 92
@@ -2308,7 +2299,7 @@
Dashboard shortcut widget
src/app/core/config/config-fix.ts
- 103
+ 97
@@ -2318,7 +2309,7 @@
Dashboard shortcut widget
src/app/core/config/config-fix.ts
- 108
+ 102
@@ -2327,7 +2318,7 @@
Attendance week dashboard widget label
src/app/core/config/config-fix.ts
- 155
+ 149
@@ -2336,7 +2327,7 @@
Attendance week dashboard widget label
src/app/core/config/config-fix.ts
- 162
+ 156
@@ -2345,7 +2336,7 @@
Attendance week dashboard widget label
src/app/core/config/config-fix.ts
- 148
+ 142
@@ -2354,7 +2345,7 @@
Title for notes overview
src/app/core/config/config-fix.ts
- 184
+ 178
@@ -2363,11 +2354,11 @@
Translated name of default column group
src/app/core/config/config-fix.ts
- 194
+ 188
src/app/core/config/config-fix.ts
- 198
+ 192
@@ -2376,19 +2367,19 @@
Translated name of mobile column group
src/app/core/config/config-fix.ts
- 195
+ 189
src/app/core/config/config-fix.ts
- 208
+ 202
src/app/core/config/config-fix.ts
- 501
+ 495
src/app/core/config/config-fix.ts
- 555
+ 549
@@ -2396,7 +2387,7 @@
Anhang
src/app/core/config/config-fix.ts
- 275
+ 269
@@ -2404,7 +2395,7 @@
App-Einstellungen
src/app/core/config/config-fix.ts
- 287
+ 281
@@ -2413,7 +2404,7 @@
Panel title
src/app/core/config/config-fix.ts
- 334
+ 328
@@ -2422,7 +2413,7 @@
Panel title
src/app/core/config/config-fix.ts
- 353
+ 347
@@ -2431,7 +2422,7 @@
Filename of markdown help page (make sure the filename you enter as a translation actually exists on the server!)
src/app/core/config/config-fix.ts
- 367
+ 361
@@ -2440,15 +2431,15 @@
Panel title
src/app/core/config/config-fix.ts
- 399
+ 393
src/app/core/config/config-fix.ts
- 591
+ 585
src/app/core/config/config-fix.ts
- 788
+ 798
@@ -2457,7 +2448,7 @@
Panel title
src/app/core/config/config-fix.ts
- 427
+ 421
@@ -2466,7 +2457,7 @@
Panel title
src/app/core/config/config-fix.ts
- 436
+ 430
@@ -2475,7 +2466,7 @@
Column label for age of child
src/app/core/config/config-fix.ts
- 458
+ 452
@@ -2484,7 +2475,7 @@
Column label for school attendance of child
src/app/core/config/config-fix.ts
- 476
+ 470
@@ -2493,7 +2484,7 @@
Column label for coaching attendance of child
src/app/core/config/config-fix.ts
- 485
+ 479
@@ -2502,11 +2493,11 @@
Translated name of default column group
src/app/core/config/config-fix.ts
- 500
+ 494
src/app/core/config/config-fix.ts
- 504
+ 498
@@ -2515,7 +2506,7 @@
Column group name
src/app/core/config/config-fix.ts
- 517
+ 511
@@ -2524,11 +2515,11 @@
Column group name
src/app/core/config/config-fix.ts
- 540
+ 534
src/app/core/config/config-fix.ts
- 689
+ 683
@@ -2537,11 +2528,11 @@
Active children filter label - true case
src/app/core/config/config-fix.ts
- 570
+ 564
src/app/core/config/config-fix.ts
- 770
+ 780
@@ -2550,11 +2541,11 @@
Active children filter label - false case
src/app/core/config/config-fix.ts
- 571
+ 565
src/app/core/config/config-fix.ts
- 771
+ 781
src/app/core/entity/model/entity.ts
@@ -2567,7 +2558,7 @@
Header for form section
src/app/core/config/config-fix.ts
- 619
+ 613
@@ -2576,7 +2567,7 @@
Header for form section
src/app/core/config/config-fix.ts
- 620
+ 614
@@ -2585,7 +2576,7 @@
Header for form section
src/app/core/config/config-fix.ts
- 621
+ 615
@@ -2594,7 +2585,7 @@
Panel title
src/app/core/config/config-fix.ts
- 628
+ 622
@@ -2603,7 +2594,7 @@
Title inside a panel
src/app/core/config/config-fix.ts
- 631
+ 625
@@ -2612,7 +2603,7 @@
Title inside a panel
src/app/core/config/config-fix.ts
- 651
+ 645
@@ -2621,7 +2612,7 @@
Child details section title
src/app/core/config/config-fix.ts
- 655
+ 649
@@ -2630,7 +2621,7 @@
Panel title
src/app/core/config/config-fix.ts
- 676
+ 670
@@ -2639,7 +2630,7 @@
description section
src/app/core/config/config-fix.ts
- 698
+ 692
@@ -2648,7 +2639,7 @@
Title inside a panel
src/app/core/config/config-fix.ts
- 705
+ 699
@@ -2657,7 +2648,7 @@
Panel title
src/app/core/config/config-fix.ts
- 711
+ 705
@@ -2666,7 +2657,7 @@
Panel title
src/app/core/config/config-fix.ts
- 720
+ 730
@@ -2684,7 +2675,7 @@
Panel title
src/app/core/config/config-fix.ts
- 818
+ 828
@@ -2693,7 +2684,7 @@
Name of a report
src/app/core/config/config-fix.ts
- 833
+ 843
@@ -2702,7 +2693,7 @@
Label of report query
src/app/core/config/config-fix.ts
- 837
+ 847
@@ -2711,7 +2702,7 @@
Label for report query
src/app/core/config/config-fix.ts
- 842
+ 852
@@ -2720,7 +2711,7 @@
Label for report query
src/app/core/config/config-fix.ts
- 845
+ 855
@@ -2729,7 +2720,7 @@
Label for report query
src/app/core/config/config-fix.ts
- 849
+ 859
@@ -2738,7 +2729,7 @@
Label for report query
src/app/core/config/config-fix.ts
- 854
+ 864
@@ -2747,7 +2738,7 @@
Label for report query
src/app/core/config/config-fix.ts
- 858
+ 868
@@ -2756,7 +2747,7 @@
Label for report query
src/app/core/config/config-fix.ts
- 863
+ 873
@@ -2765,7 +2756,7 @@
Name of a report
src/app/core/config/config-fix.ts
- 871
+ 881
@@ -2774,7 +2765,7 @@
Name of a report
src/app/core/config/config-fix.ts
- 888
+ 898
@@ -2893,7 +2884,7 @@
src/app/core/config/config-fix.ts
- 737
+ 747
@@ -2906,7 +2897,7 @@
src/app/core/config/config-fix.ts
- 1031
+ 1041
@@ -3028,7 +3019,7 @@
src/app/core/config/config-fix.ts
- 43
+ 37
@@ -3149,15 +3140,15 @@
src/app/core/config/config-fix.ts
- 453
+ 447
src/app/core/config/config-fix.ts
- 899
+ 909
src/app/core/config/config-fix.ts
- 1003
+ 1013
@@ -3182,11 +3173,11 @@
src/app/core/config/config-fix.ts
- 572
+ 566
src/app/core/config/config-fix.ts
- 772
+ 782
src/app/core/filter/filters/filters.ts
@@ -3289,7 +3280,7 @@
src/app/core/config/config-fix.ts
- 1045
+ 1055
@@ -3553,7 +3544,7 @@
src/app/core/config/config-fix.ts
- 464
+ 458
@@ -3658,17 +3649,6 @@
Label gender
-
-
- Insgesamt:
- Total amount of education material including a summary
- Total amount
-
- src/app/child-dev-project/children/educational-material/educational-material-component/educational-material.component.html
- 11
-
-
Schulpartnerschaften geschlossen
@@ -3714,11 +3694,11 @@
src/app/core/config/config-fix.ts
- 469
+ 463
src/app/core/config/config-fix.ts
- 580
+ 574
@@ -3842,11 +3822,11 @@
src/app/core/config/config-fix.ts
- 803
+ 813
src/app/core/config/config-fix.ts
- 881
+ 891
@@ -3948,15 +3928,15 @@
src/app/core/config/config-fix.ts
- 220
+ 214
src/app/core/config/config-fix.ts
- 530
+ 524
src/app/core/config/config-fix.ts
- 769
+ 779
@@ -4005,7 +3985,7 @@
src/app/core/config/config-fix.ts
- 949
+ 959
@@ -4018,7 +3998,7 @@
src/app/core/config/config-fix.ts
- 494
+ 488
@@ -4040,7 +4020,7 @@
src/app/core/config/config-fix.ts
- 876
+ 886
@@ -4253,11 +4233,11 @@
Label for the address of a child
src/app/core/config/config-fix.ts
- 956
+ 966
src/app/core/config/config-fix.ts
- 1024
+ 1034
@@ -4266,7 +4246,7 @@
Label for a child attribute
src/app/core/config/config-fix.ts
- 963
+ 973
@@ -4275,7 +4255,7 @@
Label for the religion of a child
src/app/core/config/config-fix.ts
- 970
+ 980
@@ -4284,7 +4264,7 @@
Label for the mother tongue of a child
src/app/core/config/config-fix.ts
- 977
+ 987
@@ -4293,7 +4273,7 @@
Tooltip description for the mother tongue of a child
src/app/core/config/config-fix.ts
- 978
+ 988
@@ -4302,7 +4282,7 @@
Label for a child attribute
src/app/core/config/config-fix.ts
- 985
+ 995
@@ -4311,7 +4291,7 @@
Label for a child attribute
src/app/core/config/config-fix.ts
- 992
+ 1002
@@ -4319,11 +4299,11 @@
Privatschule
src/app/core/config/config-fix.ts
- 388
+ 382
src/app/core/config/config-fix.ts
- 1010
+ 1020
@@ -4332,7 +4312,7 @@
Label for the language of a school
src/app/core/config/config-fix.ts
- 1017
+ 1027
@@ -4341,7 +4321,7 @@
Label for the timing of a school
src/app/core/config/config-fix.ts
- 1038
+ 1048
@@ -4350,7 +4330,7 @@
Label for a child attribute
src/app/core/config/config-fix.ts
- 1057
+ 1067
@@ -4359,7 +4339,7 @@
Description for a child attribute
src/app/core/config/config-fix.ts
- 1058
+ 1068
@@ -4368,7 +4348,7 @@
Label for a child attribute
src/app/core/config/config-fix.ts
- 1066
+ 1076
@@ -4377,7 +4357,7 @@
Description for a child attribute
src/app/core/config/config-fix.ts
- 1067
+ 1077
@@ -4386,7 +4366,7 @@
Label for a child attribute
src/app/core/config/config-fix.ts
- 1075
+ 1085
@@ -4395,7 +4375,7 @@
Description for a child attribute
src/app/core/config/config-fix.ts
- 1076
+ 1086
@@ -4404,7 +4384,7 @@
Label for a child attribute
src/app/core/config/config-fix.ts
- 1084
+ 1094
@@ -4413,7 +4393,7 @@
Description for a child attribute
src/app/core/config/config-fix.ts
- 1085
+ 1095
@@ -4422,7 +4402,7 @@
Label for a child attribute
src/app/core/config/config-fix.ts
- 1093
+ 1103
@@ -4431,7 +4411,7 @@
Description for a child attribute
src/app/core/config/config-fix.ts
- 1094
+ 1104
@@ -4440,7 +4420,7 @@
Label of user phone
src/app/core/config/config-fix.ts
- 1105
+ 1115
@@ -4501,7 +4481,7 @@
Name of a column of a report
src/app/core/config/config-fix.ts
- 903
+ 913
@@ -4510,7 +4490,7 @@
Name of a column of a report
src/app/core/config/config-fix.ts
- 907
+ 917
@@ -4519,7 +4499,7 @@
Name of a column of a report
src/app/core/config/config-fix.ts
- 911
+ 921
@@ -4528,7 +4508,7 @@
Name of a column of a report
src/app/core/config/config-fix.ts
- 915
+ 925
@@ -4537,7 +4517,7 @@
Name of a report
src/app/core/config/config-fix.ts
- 925
+ 935
@@ -4717,15 +4697,15 @@
Delete confirmation title
src/app/core/entity/entity-remove.service.ts
- 89
+ 78
-
-
- Wollen sie wirklich dieses/dieses löschen?
+
+
+ Sind Sie sicher, dass Sie diesen -Datensatz löschen wollen?
src/app/core/entity/entity-remove.service.ts
- 92,90
+ 81
Delete confirmation text
@@ -4735,7 +4715,7 @@
Deleted Entity information
src/app/core/entity/entity-remove.service.ts
- 99
+ 93
@@ -4744,7 +4724,7 @@
Undo deleting an entity
src/app/core/entity/entity-remove.service.ts
- 126
+ 97
src/app/core/import/import-confirm-summary/import-confirm-summary.component.ts
@@ -4933,24 +4913,6 @@
8
-
-
- Wirklich löschen?
- Delete confirmation message
-
- src/app/core/common-components/entity-subrecord/entity-subrecord/entity-subrecord.component.ts
- 399
-
-
-
-
- Eintrag wurde gelöscht
- Record deleted info
-
- src/app/core/common-components/entity-subrecord/entity-subrecord/entity-subrecord.component.ts
- 398
-
-
Speichern
@@ -5231,7 +5193,7 @@
Discard changes header
src/app/core/common-components/confirmation-dialog/confirmation-dialog.service.ts
- 61
+ 62
@@ -5240,7 +5202,7 @@
Discard changes message
src/app/core/common-components/confirmation-dialog/confirmation-dialog.service.ts
- 62
+ 63
@@ -5264,7 +5226,7 @@
Eine neuere Version der App ist verfügbar!
src/app/core/ui/latest-changes/update-manager.service.ts
- 107
+ 111
@@ -5273,7 +5235,7 @@
Action that a user can update the app with
src/app/core/ui/latest-changes/update-manager.service.ts
- 108
+ 112
@@ -5281,7 +5243,7 @@
Die Anwendung ist in einem nicht wiederherstellbaren Zustand, bitte neu laden.
src/app/core/ui/latest-changes/update-manager.service.ts
- 133
+ 137
@@ -5290,7 +5252,7 @@
Action that a user can reload the app with
src/app/core/ui/latest-changes/update-manager.service.ts
- 134
+ 138
@@ -5579,7 +5541,7 @@
Navigate to user profile page
src/app/core/ui/ui/ui.component.html
- 83
+ 95
@@ -5588,7 +5550,7 @@
Sign out of the app
src/app/core/ui/ui/ui.component.html
- 88
+ 105
@@ -5678,12 +5640,28 @@
78
+
+
+ Gesamt:
+
+ src/app/core/entity-details/related-entities-with-summary/related-entities-with-summary.component.html
+ 11
+
+
+
+
+ Durchschnitt:
+
+ src/app/core/entity-details/related-entities-with-summary/related-entities-with-summary.component.html
+ 14
+
+
Änderungen laden?
src/app/core/common-components/entity-form/entity-form/entity-form.component.ts
- 99
+ 110
@@ -5691,7 +5669,7 @@
Lokale Änderungen überlappen mit aktualisierten Daten, die vom Server synchronisiert wurden. Wollen Sie die lokalen Änderungen mit den aktuellsten Daten überschreiben?
src/app/core/common-components/entity-form/entity-form/entity-form.component.ts
- 100
+ 111
@@ -6719,7 +6697,7 @@
PWA Install Button Label
src/app/core/pwa-install/pwa-install.component.html
- 11
+ 12
@@ -6728,7 +6706,7 @@
PWA iOS Install Instructions - Line 1
src/app/core/pwa-install/pwa-install.component.html
- 15
+ 16
@@ -6737,7 +6715,7 @@
PWA iOS Install Instructions - Line 2-1
src/app/core/pwa-install/pwa-install.component.html
- 27
+ 28
@@ -6746,7 +6724,7 @@
PWA iOS Install Instructions - Line 2-2
src/app/core/pwa-install/pwa-install.component.html
- 31
+ 32
@@ -6755,7 +6733,7 @@
PWA iOS Install Instructions - Line 3-1
src/app/core/pwa-install/pwa-install.component.html
- 36
+ 37
@@ -6764,7 +6742,7 @@
PWA iOS Install Instructions - Line 3-2
src/app/core/pwa-install/pwa-install.component.html
- 40
+ 41
diff --git a/src/assets/locale/messages.fr.xlf b/src/assets/locale/messages.fr.xlf
index 75e9de47db..26cbd83145 100644
--- a/src/assets/locale/messages.fr.xlf
+++ b/src/assets/locale/messages.fr.xlf
@@ -85,7 +85,7 @@
src/app/core/config/config-fix.ts
- 1045
+ 1055
@@ -244,7 +244,7 @@
src/app/core/config/config-fix.ts
- 876
+ 886
@@ -746,11 +746,11 @@
src/app/core/config/config-fix.ts
- 469
+ 463
src/app/core/config/config-fix.ts
- 580
+ 574
@@ -874,11 +874,11 @@
src/app/core/config/config-fix.ts
- 803
+ 813
src/app/core/config/config-fix.ts
- 881
+ 891
@@ -961,11 +961,11 @@
src/app/core/config/config-fix.ts
- 572
+ 566
src/app/core/config/config-fix.ts
- 772
+ 782
src/app/core/filter/filters/filters.ts
@@ -1072,7 +1072,7 @@
src/app/core/config/config-fix.ts
- 737
+ 747
@@ -1191,15 +1191,15 @@
src/app/core/config/config-fix.ts
- 453
+ 447
src/app/core/config/config-fix.ts
- 899
+ 909
src/app/core/config/config-fix.ts
- 1003
+ 1013
@@ -1279,15 +1279,15 @@
src/app/core/config/config-fix.ts
- 220
+ 214
src/app/core/config/config-fix.ts
- 530
+ 524
src/app/core/config/config-fix.ts
- 769
+ 779
@@ -1336,7 +1336,7 @@
src/app/core/config/config-fix.ts
- 1031
+ 1041
@@ -1349,7 +1349,7 @@
src/app/core/config/config-fix.ts
- 949
+ 959
@@ -1362,7 +1362,7 @@
src/app/core/config/config-fix.ts
- 464
+ 458
@@ -1467,18 +1467,6 @@
Label gender
-
-
- Total:
-
- Total amount of education material including a summary
- Total amount
-
- src/app/child-dev-project/children/educational-material/educational-material-component/educational-material.component.html
- 11
-
-
Materiél
@@ -1664,7 +1652,7 @@
src/app/core/config/config-fix.ts
- 494
+ 488
@@ -2207,15 +2195,15 @@
src/app/core/config/config-fix.ts
- 28
+ 22
src/app/core/config/config-fix.ts
- 569
+ 563
src/app/core/config/config-fix.ts
- 950
+ 960
@@ -2245,7 +2233,7 @@
src/app/core/config/config-fix.ts
- 43
+ 37
@@ -3205,22 +3193,13 @@
96
-
-
- Aam Digital - DEMO (automatically generated data)
- Page title
-
- src/app/core/config/config-fix.ts
- 14
-
-
Tableau de bord
Menu item
src/app/core/config/config-fix.ts
- 23
+ 17
@@ -3233,7 +3212,7 @@
src/app/core/config/config-fix.ts
- 33
+ 27
@@ -3251,21 +3230,21 @@
Menu item
src/app/core/config/config-fix.ts
- 53
+ 47
Site settings
+ Menu item
src/app/core/config/config-fix.ts
- 58
+ 52
src/app/core/site-settings/site-settings.ts
14
- Menu item
@@ -3273,7 +3252,7 @@
Menu item
src/app/core/config/config-fix.ts
- 63
+ 57
@@ -3282,7 +3261,7 @@
Menu item
src/app/core/config/config-fix.ts
- 68
+ 62
src/app/core/user/user.ts
@@ -3295,7 +3274,7 @@
Menu item
src/app/core/config/config-fix.ts
- 73
+ 67
@@ -3304,7 +3283,7 @@
Menu item
src/app/core/config/config-fix.ts
- 78
+ 72
@@ -3313,7 +3292,7 @@
Menu item
src/app/core/config/config-fix.ts
- 83
+ 77
@@ -3323,7 +3302,7 @@
Dashboard shortcut widget
src/app/core/config/config-fix.ts
- 98
+ 92
@@ -3333,7 +3312,7 @@
Dashboard shortcut widget
src/app/core/config/config-fix.ts
- 103
+ 97
@@ -3343,7 +3322,7 @@
Dashboard shortcut widget
src/app/core/config/config-fix.ts
- 108
+ 102
@@ -3352,7 +3331,7 @@
Attendance week dashboard widget label
src/app/core/config/config-fix.ts
- 155
+ 149
@@ -3361,7 +3340,7 @@
Attendance week dashboard widget label
src/app/core/config/config-fix.ts
- 162
+ 156
@@ -3370,7 +3349,7 @@
Attendance week dashboard widget label
src/app/core/config/config-fix.ts
- 148
+ 142
@@ -3379,7 +3358,7 @@
Title for notes overview
src/app/core/config/config-fix.ts
- 184
+ 178
@@ -3388,11 +3367,11 @@
Translated name of default column group
src/app/core/config/config-fix.ts
- 194
+ 188
src/app/core/config/config-fix.ts
- 198
+ 192
@@ -3401,19 +3380,19 @@
Translated name of mobile column group
src/app/core/config/config-fix.ts
- 195
+ 189
src/app/core/config/config-fix.ts
- 208
+ 202
src/app/core/config/config-fix.ts
- 501
+ 495
src/app/core/config/config-fix.ts
- 555
+ 549
@@ -3421,7 +3400,7 @@
Attachment
src/app/core/config/config-fix.ts
- 275
+ 269
@@ -3429,7 +3408,7 @@
Site Settings
src/app/core/config/config-fix.ts
- 287
+ 281
@@ -3438,7 +3417,7 @@
Panel title
src/app/core/config/config-fix.ts
- 334
+ 328
@@ -3447,7 +3426,7 @@
Panel title
src/app/core/config/config-fix.ts
- 353
+ 347
@@ -3456,7 +3435,7 @@
Filename of markdown help page (make sure the filename you enter as a translation actually exists on the server!)
src/app/core/config/config-fix.ts
- 367
+ 361
@@ -3464,11 +3443,11 @@
École privée
src/app/core/config/config-fix.ts
- 388
+ 382
src/app/core/config/config-fix.ts
- 1010
+ 1020
@@ -3477,15 +3456,15 @@
Panel title
src/app/core/config/config-fix.ts
- 399
+ 393
src/app/core/config/config-fix.ts
- 591
+ 585
src/app/core/config/config-fix.ts
- 788
+ 798
@@ -3494,7 +3473,7 @@
Panel title
src/app/core/config/config-fix.ts
- 427
+ 421
@@ -3503,7 +3482,7 @@
Panel title
src/app/core/config/config-fix.ts
- 436
+ 430
@@ -3512,7 +3491,7 @@
Column label for age of child
src/app/core/config/config-fix.ts
- 458
+ 452
@@ -3521,7 +3500,7 @@
Column label for school attendance of child
src/app/core/config/config-fix.ts
- 476
+ 470
@@ -3530,7 +3509,7 @@
Column label for coaching attendance of child
src/app/core/config/config-fix.ts
- 485
+ 479
@@ -3539,7 +3518,7 @@
Column group name
src/app/core/config/config-fix.ts
- 517
+ 511
@@ -3548,11 +3527,11 @@
Translated name of default column group
src/app/core/config/config-fix.ts
- 500
+ 494
src/app/core/config/config-fix.ts
- 504
+ 498
@@ -3561,11 +3540,11 @@
Column group name
src/app/core/config/config-fix.ts
- 540
+ 534
src/app/core/config/config-fix.ts
- 689
+ 683
@@ -3574,11 +3553,11 @@
Active children filter label - true case
src/app/core/config/config-fix.ts
- 570
+ 564
src/app/core/config/config-fix.ts
- 770
+ 780
@@ -3587,11 +3566,11 @@
Active children filter label - false case
src/app/core/config/config-fix.ts
- 571
+ 565
src/app/core/config/config-fix.ts
- 771
+ 781
src/app/core/entity/model/entity.ts
@@ -3604,7 +3583,7 @@
Header for form section
src/app/core/config/config-fix.ts
- 619
+ 613
@@ -3613,7 +3592,7 @@
Header for form section
src/app/core/config/config-fix.ts
- 620
+ 614
@@ -3622,7 +3601,7 @@
Header for form section
src/app/core/config/config-fix.ts
- 621
+ 615
@@ -3631,7 +3610,7 @@
Panel title
src/app/core/config/config-fix.ts
- 628
+ 622
@@ -3640,7 +3619,7 @@
Title inside a panel
src/app/core/config/config-fix.ts
- 631
+ 625
@@ -3649,7 +3628,7 @@
Title inside a panel
src/app/core/config/config-fix.ts
- 651
+ 645
@@ -3658,7 +3637,7 @@
Child details section title
src/app/core/config/config-fix.ts
- 655
+ 649
@@ -3667,7 +3646,7 @@
Panel title
src/app/core/config/config-fix.ts
- 676
+ 670
@@ -3676,7 +3655,7 @@
description section
src/app/core/config/config-fix.ts
- 698
+ 692
@@ -3685,11 +3664,11 @@
Menu item
src/app/core/config/config-fix.ts
- 38
+ 32
src/app/core/config/config-fix.ts
- 667
+ 661
@@ -3698,7 +3677,7 @@
Menu item
src/app/core/config/config-fix.ts
- 48
+ 42
src/app/features/todos/model/todo.ts
@@ -3711,7 +3690,7 @@
Title inside a panel
src/app/core/config/config-fix.ts
- 705
+ 699
@@ -3720,7 +3699,7 @@
Panel title
src/app/core/config/config-fix.ts
- 711
+ 705
@@ -3729,7 +3708,7 @@
Panel title
src/app/core/config/config-fix.ts
- 720
+ 730
@@ -3738,7 +3717,7 @@
Panel title
src/app/core/config/config-fix.ts
- 818
+ 828
@@ -3747,7 +3726,7 @@
Name of a report
src/app/core/config/config-fix.ts
- 833
+ 843
@@ -3756,7 +3735,7 @@
Label of report query
src/app/core/config/config-fix.ts
- 837
+ 847
@@ -3765,7 +3744,7 @@
Label for report query
src/app/core/config/config-fix.ts
- 842
+ 852
@@ -3774,7 +3753,7 @@
Label for report query
src/app/core/config/config-fix.ts
- 845
+ 855
@@ -3783,7 +3762,7 @@
Label for report query
src/app/core/config/config-fix.ts
- 849
+ 859
@@ -3792,7 +3771,7 @@
Label for report query
src/app/core/config/config-fix.ts
- 854
+ 864
@@ -3801,7 +3780,7 @@
Label for report query
src/app/core/config/config-fix.ts
- 858
+ 868
@@ -3810,7 +3789,7 @@
Label for report query
src/app/core/config/config-fix.ts
- 863
+ 873
@@ -3819,7 +3798,7 @@
Name of a report
src/app/core/config/config-fix.ts
- 871
+ 881
@@ -3828,7 +3807,7 @@
Name of a report
src/app/core/config/config-fix.ts
- 888
+ 898
@@ -3837,7 +3816,7 @@
Name of a column of a report
src/app/core/config/config-fix.ts
- 903
+ 913
@@ -3846,7 +3825,7 @@
Name of a column of a report
src/app/core/config/config-fix.ts
- 907
+ 917
@@ -3855,7 +3834,7 @@
Name of a column of a report
src/app/core/config/config-fix.ts
- 911
+ 921
@@ -3864,7 +3843,7 @@
Name of a column of a report
src/app/core/config/config-fix.ts
- 915
+ 925
@@ -3873,7 +3852,7 @@
Name of a report
src/app/core/config/config-fix.ts
- 925
+ 935
@@ -3882,11 +3861,11 @@
Label for the address of a child
src/app/core/config/config-fix.ts
- 956
+ 966
src/app/core/config/config-fix.ts
- 1024
+ 1034
@@ -3895,7 +3874,7 @@
Label for a child attribute
src/app/core/config/config-fix.ts
- 963
+ 973
@@ -3904,7 +3883,7 @@
Label for the religion of a child
src/app/core/config/config-fix.ts
- 970
+ 980
@@ -3913,7 +3892,7 @@
Label for the mother tongue of a child
src/app/core/config/config-fix.ts
- 977
+ 987
@@ -3922,7 +3901,7 @@
Tooltip description for the mother tongue of a child
src/app/core/config/config-fix.ts
- 978
+ 988
@@ -3931,7 +3910,7 @@
Label for a child attribute
src/app/core/config/config-fix.ts
- 985
+ 995
@@ -3940,7 +3919,7 @@
Label for a child attribute
src/app/core/config/config-fix.ts
- 992
+ 1002
@@ -3949,7 +3928,7 @@
Label for the language of a school
src/app/core/config/config-fix.ts
- 1017
+ 1027
@@ -3958,7 +3937,7 @@
Label for the timing of a school
src/app/core/config/config-fix.ts
- 1038
+ 1048
@@ -3967,7 +3946,7 @@
Label for a child attribute
src/app/core/config/config-fix.ts
- 1057
+ 1067
@@ -3976,7 +3955,7 @@
Description for a child attribute
src/app/core/config/config-fix.ts
- 1058
+ 1068
@@ -3985,7 +3964,7 @@
Label for a child attribute
src/app/core/config/config-fix.ts
- 1066
+ 1076
@@ -3994,7 +3973,7 @@
Description for a child attribute
src/app/core/config/config-fix.ts
- 1067
+ 1077
@@ -4003,7 +3982,7 @@
Label for a child attribute
src/app/core/config/config-fix.ts
- 1075
+ 1085
@@ -4012,7 +3991,7 @@
Description for a child attribute
src/app/core/config/config-fix.ts
- 1076
+ 1086
@@ -4021,7 +4000,7 @@
Label for a child attribute
src/app/core/config/config-fix.ts
- 1084
+ 1094
@@ -4030,7 +4009,7 @@
Description for a child attribute
src/app/core/config/config-fix.ts
- 1085
+ 1095
@@ -4039,7 +4018,7 @@
Label for a child attribute
src/app/core/config/config-fix.ts
- 1093
+ 1103
@@ -4048,7 +4027,7 @@
Description for a child attribute
src/app/core/config/config-fix.ts
- 1094
+ 1104
@@ -4057,7 +4036,7 @@
Label of user phone
src/app/core/config/config-fix.ts
- 1105
+ 1115
@@ -4553,24 +4532,6 @@
8
-
-
- Élément supprimé
- Record deleted info
-
- src/app/core/common-components/entity-subrecord/entity-subrecord/entity-subrecord.component.ts
- 398
-
-
-
-
- Êtes-vous sûr de vouloir supprimer cet élément ?
- Delete confirmation message
-
- src/app/core/common-components/entity-subrecord/entity-subrecord/entity-subrecord.component.ts
- 399
-
-
Ce champ est en lecture seule. Modifiez la date de naissance pour modifier l'âge. Sélectionnez 1er janvier si vous ne connaissez que l'année de naissance.
@@ -4708,18 +4669,18 @@
Supprimer?
+ Delete confirmation title
src/app/core/entity/entity-remove.service.ts
- 89,88
+ 78
- Delete confirmation title
-
-
- Êtes-vous sûr de vouloir supprimer cet(te) ?
+
+
+ Are you sure you want to delete this record?
src/app/core/entity/entity-remove.service.ts
- 92,90
+ 81
Delete confirmation text
@@ -4729,7 +4690,7 @@
Deleted Entity information
src/app/core/entity/entity-remove.service.ts
- 99
+ 93
@@ -4738,7 +4699,7 @@
Undo deleting an entity
src/app/core/entity/entity-remove.service.ts
- 126
+ 97
src/app/core/import/import-confirm-summary/import-confirm-summary.component.ts
@@ -4859,7 +4820,7 @@
Discard changes header
src/app/core/common-components/confirmation-dialog/confirmation-dialog.service.ts
- 61
+ 62
@@ -4868,7 +4829,7 @@
Discard changes message
src/app/core/common-components/confirmation-dialog/confirmation-dialog.service.ts
- 62
+ 63
@@ -4892,7 +4853,7 @@
Une nouvelle version de l'application est disponible!
src/app/core/ui/latest-changes/update-manager.service.ts
- 107
+ 111
@@ -4901,7 +4862,7 @@
Action that a user can update the app with
src/app/core/ui/latest-changes/update-manager.service.ts
- 108
+ 112
@@ -4909,7 +4870,7 @@
The app is in a unrecoverable state, please reload.
src/app/core/ui/latest-changes/update-manager.service.ts
- 133
+ 137
@@ -4918,7 +4879,7 @@
Action that a user can reload the app with
src/app/core/ui/latest-changes/update-manager.service.ts
- 134
+ 138
@@ -5255,7 +5216,7 @@
Navigate to user profile page
src/app/core/ui/ui/ui.component.html
- 83
+ 95
@@ -5264,7 +5225,7 @@
Sign out of the app
src/app/core/ui/ui/ui.component.html
- 88
+ 105
@@ -5354,12 +5315,28 @@
78
+
+
+ Total:
+
+ src/app/core/entity-details/related-entities-with-summary/related-entities-with-summary.component.html
+ 11
+
+
+
+
+ Average:
+
+ src/app/core/entity-details/related-entities-with-summary/related-entities-with-summary.component.html
+ 14
+
+
Load changes?
src/app/core/common-components/entity-form/entity-form/entity-form.component.ts
- 99
+ 110
@@ -5367,7 +5344,7 @@
Local changes are in conflict with updated values synced from the server. Do you want the local changes to be overwritten with the latest values?
src/app/core/common-components/entity-form/entity-form/entity-form.component.ts
- 100
+ 111
@@ -5946,7 +5923,7 @@
Message for user
src/app/features/file/edit-file/edit-file.component.ts
- 130
+ 132
@@ -6782,7 +6759,7 @@
PWA Install Button Label
src/app/core/pwa-install/pwa-install.component.html
- 11
+ 12
@@ -6791,7 +6768,7 @@
PWA iOS Install Instructions - Line 1
src/app/core/pwa-install/pwa-install.component.html
- 15
+ 16
@@ -6800,7 +6777,7 @@
PWA iOS Install Instructions - Line 2-1
src/app/core/pwa-install/pwa-install.component.html
- 27
+ 28
@@ -6809,7 +6786,7 @@
PWA iOS Install Instructions - Line 2-2
src/app/core/pwa-install/pwa-install.component.html
- 31
+ 32
@@ -6818,7 +6795,7 @@
PWA iOS Install Instructions - Line 3-1
src/app/core/pwa-install/pwa-install.component.html
- 36
+ 37
@@ -6827,7 +6804,7 @@
PWA iOS Install Instructions - Line 3-2
src/app/core/pwa-install/pwa-install.component.html
- 40
+ 41
diff --git a/src/assets/locale/messages.it.xlf b/src/assets/locale/messages.it.xlf
index bcd7d07e92..b1b0559183 100644
--- a/src/assets/locale/messages.it.xlf
+++ b/src/assets/locale/messages.it.xlf
@@ -63,7 +63,7 @@
src/app/core/config/config-fix.ts
- 876
+ 886
@@ -667,11 +667,11 @@
src/app/core/config/config-fix.ts
- 803
+ 813
src/app/core/config/config-fix.ts
- 881
+ 891
@@ -788,7 +788,7 @@
src/app/core/config/config-fix.ts
- 1045
+ 1055
@@ -1029,7 +1029,7 @@
src/app/core/config/config-fix.ts
- 737
+ 747
@@ -1134,18 +1134,6 @@
religion
-
-
- Totale:
-
- Total amount of education material including a summary
- Total amount
-
- src/app/child-dev-project/children/educational-material/educational-material-component/educational-material.component.html
- 11
-
-
Material
@@ -1331,7 +1319,7 @@
src/app/core/config/config-fix.ts
- 494
+ 488
@@ -1384,15 +1372,15 @@
src/app/core/config/config-fix.ts
- 453
+ 447
src/app/core/config/config-fix.ts
- 899
+ 909
src/app/core/config/config-fix.ts
- 1003
+ 1013
@@ -1472,15 +1460,15 @@
src/app/core/config/config-fix.ts
- 220
+ 214
src/app/core/config/config-fix.ts
- 530
+ 524
src/app/core/config/config-fix.ts
- 769
+ 779
@@ -1529,7 +1517,7 @@
src/app/core/config/config-fix.ts
- 1031
+ 1041
@@ -1542,7 +1530,7 @@
src/app/core/config/config-fix.ts
- 949
+ 959
@@ -1563,11 +1551,11 @@
src/app/core/config/config-fix.ts
- 469
+ 463
src/app/core/config/config-fix.ts
- 580
+ 574
@@ -1580,7 +1568,7 @@
src/app/core/config/config-fix.ts
- 464
+ 458
@@ -2192,15 +2180,15 @@
src/app/core/config/config-fix.ts
- 28
+ 22
src/app/core/config/config-fix.ts
- 569
+ 563
src/app/core/config/config-fix.ts
- 950
+ 960
@@ -2230,7 +2218,7 @@
src/app/core/config/config-fix.ts
- 43
+ 37
@@ -2347,11 +2335,11 @@
src/app/core/config/config-fix.ts
- 572
+ 566
src/app/core/config/config-fix.ts
- 772
+ 782
src/app/core/filter/filters/filters.ts
@@ -2740,22 +2728,13 @@
96
-
-
- Aam Digital - DEMO (automatically generated data)
- Page title
-
- src/app/core/config/config-fix.ts
- 14
-
-
Dashboard
Menu item
src/app/core/config/config-fix.ts
- 23
+ 17
@@ -2768,7 +2747,7 @@
src/app/core/config/config-fix.ts
- 33
+ 27
@@ -2777,11 +2756,11 @@
Menu item
src/app/core/config/config-fix.ts
- 38
+ 32
src/app/core/config/config-fix.ts
- 667
+ 661
@@ -2790,7 +2769,7 @@
Menu item
src/app/core/config/config-fix.ts
- 48
+ 42
src/app/features/todos/model/todo.ts
@@ -2803,21 +2782,21 @@
Menu item
src/app/core/config/config-fix.ts
- 53
+ 47
Site settings
+ Menu item
src/app/core/config/config-fix.ts
- 58
+ 52
src/app/core/site-settings/site-settings.ts
14
- Menu item
@@ -2825,7 +2804,7 @@
Menu item
src/app/core/config/config-fix.ts
- 63
+ 57
@@ -2834,7 +2813,7 @@
Menu item
src/app/core/config/config-fix.ts
- 68
+ 62
src/app/core/user/user.ts
@@ -2848,7 +2827,7 @@
Menu item
src/app/core/config/config-fix.ts
- 73
+ 67
@@ -2857,7 +2836,7 @@
Menu item
src/app/core/config/config-fix.ts
- 78
+ 72
@@ -2866,7 +2845,7 @@
Menu item
src/app/core/config/config-fix.ts
- 83
+ 77
@@ -2876,7 +2855,7 @@
Dashboard shortcut widget
src/app/core/config/config-fix.ts
- 98
+ 92
@@ -2886,7 +2865,7 @@
Dashboard shortcut widget
src/app/core/config/config-fix.ts
- 103
+ 97
@@ -2896,7 +2875,7 @@
Dashboard shortcut widget
src/app/core/config/config-fix.ts
- 108
+ 102
@@ -2905,7 +2884,7 @@
Attendance week dashboard widget label
src/app/core/config/config-fix.ts
- 155
+ 149
@@ -2914,7 +2893,7 @@
Attendance week dashboard widget label
src/app/core/config/config-fix.ts
- 162
+ 156
@@ -2923,7 +2902,7 @@
Attendance week dashboard widget label
src/app/core/config/config-fix.ts
- 148
+ 142
@@ -2932,7 +2911,7 @@
Title for notes overview
src/app/core/config/config-fix.ts
- 184
+ 178
@@ -2941,11 +2920,11 @@
Translated name of default column group
src/app/core/config/config-fix.ts
- 194
+ 188
src/app/core/config/config-fix.ts
- 198
+ 192
@@ -2954,19 +2933,19 @@
Translated name of mobile column group
src/app/core/config/config-fix.ts
- 195
+ 189
src/app/core/config/config-fix.ts
- 208
+ 202
src/app/core/config/config-fix.ts
- 501
+ 495
src/app/core/config/config-fix.ts
- 555
+ 549
@@ -2974,7 +2953,7 @@
Attachment
src/app/core/config/config-fix.ts
- 275
+ 269
@@ -2982,7 +2961,7 @@
Site Settings
src/app/core/config/config-fix.ts
- 287
+ 281
@@ -2991,7 +2970,7 @@
Panel title
src/app/core/config/config-fix.ts
- 334
+ 328
@@ -3000,7 +2979,7 @@
Panel title
src/app/core/config/config-fix.ts
- 353
+ 347
@@ -3009,7 +2988,7 @@
Filename of markdown help page (make sure the filename you enter as a translation actually exists on the server!)
src/app/core/config/config-fix.ts
- 367
+ 361
@@ -3018,15 +2997,15 @@
Panel title
src/app/core/config/config-fix.ts
- 399
+ 393
src/app/core/config/config-fix.ts
- 591
+ 585
src/app/core/config/config-fix.ts
- 788
+ 798
@@ -3035,7 +3014,7 @@
Panel title
src/app/core/config/config-fix.ts
- 427
+ 421
@@ -3044,7 +3023,7 @@
Panel title
src/app/core/config/config-fix.ts
- 436
+ 430
@@ -3053,7 +3032,7 @@
Column label for age of child
src/app/core/config/config-fix.ts
- 458
+ 452
@@ -3062,7 +3041,7 @@
Column label for school attendance of child
src/app/core/config/config-fix.ts
- 476
+ 470
@@ -3071,7 +3050,7 @@
Column label for coaching attendance of child
src/app/core/config/config-fix.ts
- 485
+ 479
@@ -3080,11 +3059,11 @@
Translated name of default column group
src/app/core/config/config-fix.ts
- 500
+ 494
src/app/core/config/config-fix.ts
- 504
+ 498
@@ -3093,7 +3072,7 @@
Column group name
src/app/core/config/config-fix.ts
- 517
+ 511
@@ -3102,11 +3081,11 @@
Column group name
src/app/core/config/config-fix.ts
- 540
+ 534
src/app/core/config/config-fix.ts
- 689
+ 683
@@ -3115,11 +3094,11 @@
Active children filter label - true case
src/app/core/config/config-fix.ts
- 570
+ 564
src/app/core/config/config-fix.ts
- 770
+ 780
@@ -3128,11 +3107,11 @@
Active children filter label - false case
src/app/core/config/config-fix.ts
- 571
+ 565
src/app/core/config/config-fix.ts
- 771
+ 781
src/app/core/entity/model/entity.ts
@@ -3145,7 +3124,7 @@
Header for form section
src/app/core/config/config-fix.ts
- 619
+ 613
@@ -3154,7 +3133,7 @@
Header for form section
src/app/core/config/config-fix.ts
- 620
+ 614
@@ -3163,7 +3142,7 @@
Header for form section
src/app/core/config/config-fix.ts
- 621
+ 615
@@ -3172,7 +3151,7 @@
Panel title
src/app/core/config/config-fix.ts
- 628
+ 622
@@ -3181,7 +3160,7 @@
Title inside a panel
src/app/core/config/config-fix.ts
- 631
+ 625
@@ -3190,7 +3169,7 @@
Title inside a panel
src/app/core/config/config-fix.ts
- 651
+ 645
@@ -3199,7 +3178,7 @@
Child details section title
src/app/core/config/config-fix.ts
- 655
+ 649
@@ -3208,7 +3187,7 @@
Panel title
src/app/core/config/config-fix.ts
- 676
+ 670
@@ -3217,7 +3196,7 @@
description section
src/app/core/config/config-fix.ts
- 698
+ 692
@@ -3226,7 +3205,7 @@
Title inside a panel
src/app/core/config/config-fix.ts
- 705
+ 699
@@ -3235,7 +3214,7 @@
Panel title
src/app/core/config/config-fix.ts
- 711
+ 705
@@ -3244,7 +3223,7 @@
Panel title
src/app/core/config/config-fix.ts
- 720
+ 730
@@ -3262,7 +3241,7 @@
Panel title
src/app/core/config/config-fix.ts
- 818
+ 828
@@ -3271,7 +3250,7 @@
Name of a report
src/app/core/config/config-fix.ts
- 833
+ 843
@@ -3280,7 +3259,7 @@
Label of report query
src/app/core/config/config-fix.ts
- 837
+ 847
@@ -3289,7 +3268,7 @@
Label for report query
src/app/core/config/config-fix.ts
- 842
+ 852
@@ -3298,7 +3277,7 @@
Label for report query
src/app/core/config/config-fix.ts
- 845
+ 855
@@ -3307,7 +3286,7 @@
Label for report query
src/app/core/config/config-fix.ts
- 849
+ 859
@@ -3316,7 +3295,7 @@
Label for report query
src/app/core/config/config-fix.ts
- 854
+ 864
@@ -3325,7 +3304,7 @@
Label for report query
src/app/core/config/config-fix.ts
- 858
+ 868
@@ -3334,7 +3313,7 @@
Label for report query
src/app/core/config/config-fix.ts
- 863
+ 873
@@ -3343,7 +3322,7 @@
Name of a report
src/app/core/config/config-fix.ts
- 871
+ 881
@@ -3352,7 +3331,7 @@
Name of a report
src/app/core/config/config-fix.ts
- 888
+ 898
@@ -3413,7 +3392,7 @@
Name of a column of a report
src/app/core/config/config-fix.ts
- 903
+ 913
@@ -3422,7 +3401,7 @@
Name of a column of a report
src/app/core/config/config-fix.ts
- 907
+ 917
@@ -3431,7 +3410,7 @@
Name of a column of a report
src/app/core/config/config-fix.ts
- 911
+ 921
@@ -3440,7 +3419,7 @@
Name of a column of a report
src/app/core/config/config-fix.ts
- 915
+ 925
@@ -3449,7 +3428,7 @@
Name of a report
src/app/core/config/config-fix.ts
- 925
+ 935
@@ -3467,11 +3446,11 @@
Label for the address of a child
src/app/core/config/config-fix.ts
- 956
+ 966
src/app/core/config/config-fix.ts
- 1024
+ 1034
@@ -3480,7 +3459,7 @@
Label for a child attribute
src/app/core/config/config-fix.ts
- 963
+ 973
@@ -3489,7 +3468,7 @@
Label for the religion of a child
src/app/core/config/config-fix.ts
- 970
+ 980
@@ -3498,7 +3477,7 @@
Label for the mother tongue of a child
src/app/core/config/config-fix.ts
- 977
+ 987
@@ -3507,7 +3486,7 @@
Tooltip description for the mother tongue of a child
src/app/core/config/config-fix.ts
- 978
+ 988
@@ -3516,7 +3495,7 @@
Label for a child attribute
src/app/core/config/config-fix.ts
- 985
+ 995
@@ -3525,7 +3504,7 @@
Label for a child attribute
src/app/core/config/config-fix.ts
- 992
+ 1002
@@ -3533,11 +3512,11 @@
Private School
src/app/core/config/config-fix.ts
- 388
+ 382
src/app/core/config/config-fix.ts
- 1010
+ 1020
@@ -3546,7 +3525,7 @@
Label for the language of a school
src/app/core/config/config-fix.ts
- 1017
+ 1027
@@ -3555,7 +3534,7 @@
Label for the timing of a school
src/app/core/config/config-fix.ts
- 1038
+ 1048
@@ -3564,7 +3543,7 @@
Label for a child attribute
src/app/core/config/config-fix.ts
- 1057
+ 1067
@@ -3573,7 +3552,7 @@
Description for a child attribute
src/app/core/config/config-fix.ts
- 1058
+ 1068
@@ -3582,7 +3561,7 @@
Label for a child attribute
src/app/core/config/config-fix.ts
- 1066
+ 1076
@@ -3591,7 +3570,7 @@
Description for a child attribute
src/app/core/config/config-fix.ts
- 1067
+ 1077
@@ -3600,7 +3579,7 @@
Label for a child attribute
src/app/core/config/config-fix.ts
- 1075
+ 1085
@@ -3609,7 +3588,7 @@
Description for a child attribute
src/app/core/config/config-fix.ts
- 1076
+ 1086
@@ -3618,7 +3597,7 @@
Label for a child attribute
src/app/core/config/config-fix.ts
- 1084
+ 1094
@@ -3627,7 +3606,7 @@
Description for a child attribute
src/app/core/config/config-fix.ts
- 1085
+ 1095
@@ -3636,7 +3615,7 @@
Label for a child attribute
src/app/core/config/config-fix.ts
- 1093
+ 1103
@@ -3645,7 +3624,7 @@
Description for a child attribute
src/app/core/config/config-fix.ts
- 1094
+ 1104
@@ -3654,7 +3633,7 @@
Label of user phone
src/app/core/config/config-fix.ts
- 1105
+ 1115
@@ -4098,24 +4077,6 @@
8
-
-
- Record cancellato
- Record deleted info
-
- src/app/core/common-components/entity-subrecord/entity-subrecord/entity-subrecord.component.ts
- 398
-
-
-
-
- Sei sicuro di voler eliminare questo record?
- Delete confirmation message
-
- src/app/core/common-components/entity-subrecord/entity-subrecord/entity-subrecord.component.ts
- 399
-
-
Salva
@@ -4247,29 +4208,29 @@
Elimina?
+ Delete confirmation title
src/app/core/entity/entity-remove.service.ts
- 89,88
+ 78
- Delete confirmation title
-
-
- Sei sicuro di voler cancellare questo ?
+
+
+ Are you sure you want to delete this record?
src/app/core/entity/entity-remove.service.ts
- 92,90
+ 81
Delete confirmation text
Entità eliminata
+ Deleted Entity information
src/app/core/entity/entity-remove.service.ts
- 99,97
+ 93
- Deleted Entity information
@@ -4277,7 +4238,7 @@
Undo deleting an entity
src/app/core/entity/entity-remove.service.ts
- 126
+ 97
src/app/core/import/import-confirm-summary/import-confirm-summary.component.ts
@@ -4480,7 +4441,7 @@
Discard changes header
src/app/core/common-components/confirmation-dialog/confirmation-dialog.service.ts
- 61
+ 62
@@ -4489,7 +4450,7 @@
Discard changes message
src/app/core/common-components/confirmation-dialog/confirmation-dialog.service.ts
- 62
+ 63
@@ -4513,7 +4474,7 @@
È disponibile una nuova versione dell'app!
src/app/core/ui/latest-changes/update-manager.service.ts
- 107
+ 111
@@ -4522,7 +4483,7 @@
Action that a user can update the app with
src/app/core/ui/latest-changes/update-manager.service.ts
- 108
+ 112
@@ -4530,7 +4491,7 @@
The app is in a unrecoverable state, please reload.
src/app/core/ui/latest-changes/update-manager.service.ts
- 133
+ 137
@@ -4539,7 +4500,7 @@
Action that a user can reload the app with
src/app/core/ui/latest-changes/update-manager.service.ts
- 134
+ 138
@@ -4557,7 +4518,7 @@
PWA Install Button Label
src/app/core/pwa-install/pwa-install.component.html
- 11
+ 12
@@ -4566,7 +4527,7 @@
PWA iOS Install Instructions - Line 1
src/app/core/pwa-install/pwa-install.component.html
- 15
+ 16
@@ -4575,7 +4536,7 @@
PWA iOS Install Instructions - Line 2-1
src/app/core/pwa-install/pwa-install.component.html
- 27
+ 28
@@ -4584,7 +4545,7 @@
PWA iOS Install Instructions - Line 2-2
src/app/core/pwa-install/pwa-install.component.html
- 31
+ 32
@@ -4593,7 +4554,7 @@
PWA iOS Install Instructions - Line 3-1
src/app/core/pwa-install/pwa-install.component.html
- 36
+ 37
@@ -4602,7 +4563,7 @@
PWA iOS Install Instructions - Line 3-2
src/app/core/pwa-install/pwa-install.component.html
- 40
+ 41
@@ -5056,7 +5017,7 @@ Please try again. If the problem persists contact Aam Digital support.
Navigate to user profile page
src/app/core/ui/ui/ui.component.html
- 83
+ 95
@@ -5065,7 +5026,7 @@ Please try again. If the problem persists contact Aam Digital support.
Sign out of the app
src/app/core/ui/ui/ui.component.html
- 88
+ 105
@@ -5155,12 +5116,28 @@ Please try again. If the problem persists contact Aam Digital support.
78
+
+
+ Total:
+
+ src/app/core/entity-details/related-entities-with-summary/related-entities-with-summary.component.html
+ 11
+
+
+
+
+ Average:
+
+ src/app/core/entity-details/related-entities-with-summary/related-entities-with-summary.component.html
+ 14
+
+
Load changes?
src/app/core/common-components/entity-form/entity-form/entity-form.component.ts
- 99
+ 110
@@ -5168,7 +5145,7 @@ Please try again. If the problem persists contact Aam Digital support.
Local changes are in conflict with updated values synced from the server. Do you want the local changes to be overwritten with the latest values?
src/app/core/common-components/entity-form/entity-form/entity-form.component.ts
- 100
+ 111
@@ -5708,7 +5685,7 @@ Please try again. If the problem persists contact Aam Digital support.
Message for user
src/app/features/file/edit-file/edit-file.component.ts
- 130
+ 132
diff --git a/src/assets/locale/messages.xlf b/src/assets/locale/messages.xlf
index 7a600ce470..6af5b1aef6 100644
--- a/src/assets/locale/messages.xlf
+++ b/src/assets/locale/messages.xlf
@@ -56,7 +56,7 @@
src/app/core/config/config-fix.ts
- 876
+ 886
Events of an attendance
@@ -623,11 +623,11 @@
src/app/core/config/config-fix.ts
- 803
+ 813
src/app/core/config/config-fix.ts
- 881
+ 891
Label for the participants of a recurring activity
@@ -735,7 +735,7 @@
src/app/core/config/config-fix.ts
- 1045
+ 1055
Label for the remarks of a ASER result
@@ -836,7 +836,7 @@
src/app/core/config/config-fix.ts
- 737
+ 747
Child status
@@ -932,16 +932,6 @@
religion
-
-
-
- src/app/child-dev-project/children/educational-material/educational-material-component/educational-material.component.html
- 11,13
-
- Total amount of education material including a summary
- Total amount
-
@@ -1159,7 +1149,7 @@
src/app/core/config/config-fix.ts
- 494
+ 488
Table header, Short for Body Mass Index
@@ -1207,15 +1197,15 @@
src/app/core/config/config-fix.ts
- 453
+ 447
src/app/core/config/config-fix.ts
- 899
+ 909
src/app/core/config/config-fix.ts
- 1003
+ 1013
Label for the name of a child
@@ -1287,15 +1277,15 @@
src/app/core/config/config-fix.ts
- 220
+ 214
src/app/core/config/config-fix.ts
- 530
+ 524
src/app/core/config/config-fix.ts
- 769
+ 779
Label for the status of a child
@@ -1339,7 +1329,7 @@
src/app/core/config/config-fix.ts
- 1031
+ 1041
Label for the phone number of a child
@@ -1351,7 +1341,7 @@
src/app/core/config/config-fix.ts
- 949
+ 959
Label for the child of a relation
@@ -1371,11 +1361,11 @@
src/app/core/config/config-fix.ts
- 469
+ 463
src/app/core/config/config-fix.ts
- 580
+ 574
Label for the school of a relation
@@ -1387,7 +1377,7 @@
src/app/core/config/config-fix.ts
- 464
+ 458
Label for the class of a relation
@@ -1891,7 +1881,7 @@
src/app/core/config/config-fix.ts
- 43
+ 37
label (plural) for entity
@@ -1903,15 +1893,15 @@
src/app/core/config/config-fix.ts
- 28
+ 22
src/app/core/config/config-fix.ts
- 569
+ 563
src/app/core/config/config-fix.ts
- 950
+ 960
Label for the children of a note
@@ -2008,11 +1998,11 @@
src/app/core/config/config-fix.ts
- 572
+ 566
src/app/core/config/config-fix.ts
- 772
+ 782
src/app/core/filter/filters/filters.ts
@@ -2105,7 +2095,7 @@
src/app/core/config/config-fix.ts
- 33
+ 27
label (plural) for entity
@@ -2478,7 +2468,7 @@
src/app/core/common-components/confirmation-dialog/confirmation-dialog.service.ts
- 61
+ 62
Discard changes header
@@ -2486,7 +2476,7 @@
src/app/core/common-components/confirmation-dialog/confirmation-dialog.service.ts
- 62
+ 63
Discard changes message
@@ -2657,14 +2647,14 @@
src/app/core/common-components/entity-form/entity-form/entity-form.component.ts
- 99
+ 110
src/app/core/common-components/entity-form/entity-form/entity-form.component.ts
- 100
+ 111
@@ -2683,22 +2673,6 @@
A placeholder for the input element when select options are not loaded yet
-
-
-
- src/app/core/common-components/entity-subrecord/entity-subrecord/entity-subrecord.component.ts
- 398
-
- Record deleted info
-
-
-
-
- src/app/core/common-components/entity-subrecord/entity-subrecord/entity-subrecord.component.ts
- 399
-
- Delete confirmation message
-
@@ -2719,19 +2693,11 @@
placeholder for file-input
-
-
-
- src/app/core/config/config-fix.ts
- 14
-
- Page title
-
src/app/core/config/config-fix.ts
- 23
+ 17
Menu item
@@ -2739,11 +2705,11 @@
src/app/core/config/config-fix.ts
- 38
+ 32
src/app/core/config/config-fix.ts
- 667
+ 661
Menu item
@@ -2751,7 +2717,7 @@
src/app/core/config/config-fix.ts
- 48
+ 42
src/app/features/todos/model/todo.ts
@@ -2763,7 +2729,7 @@
src/app/core/config/config-fix.ts
- 53
+ 47
Menu item
@@ -2771,7 +2737,7 @@
src/app/core/config/config-fix.ts
- 58
+ 52
src/app/core/site-settings/site-settings.ts
@@ -2783,7 +2749,7 @@
src/app/core/config/config-fix.ts
- 63
+ 57
Menu item
@@ -2791,7 +2757,7 @@
src/app/core/config/config-fix.ts
- 68
+ 62
src/app/core/user/user.ts
@@ -2803,7 +2769,7 @@
src/app/core/config/config-fix.ts
- 73
+ 67
Menu item
@@ -2811,7 +2777,7 @@
src/app/core/config/config-fix.ts
- 78
+ 72
Menu item
@@ -2819,7 +2785,7 @@
src/app/core/config/config-fix.ts
- 83
+ 77
Menu item
@@ -2827,7 +2793,7 @@
src/app/core/config/config-fix.ts
- 98
+ 92
record attendance shortcut
Dashboard shortcut widget
@@ -2836,7 +2802,7 @@
src/app/core/config/config-fix.ts
- 103
+ 97
record attendance shortcut
Dashboard shortcut widget
@@ -2845,7 +2811,7 @@
src/app/core/config/config-fix.ts
- 108
+ 102
open public form
Dashboard shortcut widget
@@ -2854,7 +2820,7 @@
src/app/core/config/config-fix.ts
- 148
+ 142
Attendance week dashboard widget label
@@ -2862,7 +2828,7 @@
src/app/core/config/config-fix.ts
- 155
+ 149
Attendance week dashboard widget label
@@ -2870,7 +2836,7 @@
src/app/core/config/config-fix.ts
- 162
+ 156
Attendance week dashboard widget label
@@ -2878,7 +2844,7 @@
src/app/core/config/config-fix.ts
- 184
+ 178
Title for notes overview
@@ -2886,11 +2852,11 @@
src/app/core/config/config-fix.ts
- 194
+ 188
src/app/core/config/config-fix.ts
- 198
+ 192
Translated name of default column group
@@ -2898,19 +2864,19 @@
src/app/core/config/config-fix.ts
- 195
+ 189
src/app/core/config/config-fix.ts
- 208
+ 202
src/app/core/config/config-fix.ts
- 501
+ 495
src/app/core/config/config-fix.ts
- 555
+ 549
Translated name of mobile column group
@@ -2918,21 +2884,21 @@
src/app/core/config/config-fix.ts
- 275
+ 269
src/app/core/config/config-fix.ts
- 287
+ 281
src/app/core/config/config-fix.ts
- 334
+ 328
Panel title
@@ -2940,7 +2906,7 @@
src/app/core/config/config-fix.ts
- 353
+ 347
Panel title
@@ -2948,7 +2914,7 @@
src/app/core/config/config-fix.ts
- 367
+ 361
Filename of markdown help page (make sure the filename you enter as a translation actually exists on the server!)
@@ -2956,26 +2922,26 @@
src/app/core/config/config-fix.ts
- 388
+ 382
src/app/core/config/config-fix.ts
- 1010
+ 1020
src/app/core/config/config-fix.ts
- 399
+ 393
src/app/core/config/config-fix.ts
- 591
+ 585
src/app/core/config/config-fix.ts
- 788
+ 798
Panel title
@@ -2983,7 +2949,7 @@
src/app/core/config/config-fix.ts
- 427
+ 421
Panel title
@@ -2991,7 +2957,7 @@
src/app/core/config/config-fix.ts
- 436
+ 430
Panel title
@@ -2999,7 +2965,7 @@
src/app/core/config/config-fix.ts
- 458
+ 452
Column label for age of child
@@ -3007,7 +2973,7 @@
src/app/core/config/config-fix.ts
- 476
+ 470
Column label for school attendance of child
@@ -3015,7 +2981,7 @@
src/app/core/config/config-fix.ts
- 485
+ 479
Column label for coaching attendance of child
@@ -3023,11 +2989,11 @@
src/app/core/config/config-fix.ts
- 500
+ 494
src/app/core/config/config-fix.ts
- 504
+ 498
Translated name of default column group
@@ -3035,7 +3001,7 @@
src/app/core/config/config-fix.ts
- 517
+ 511
Column group name
@@ -3043,11 +3009,11 @@
src/app/core/config/config-fix.ts
- 540
+ 534
src/app/core/config/config-fix.ts
- 689
+ 683
Column group name
@@ -3055,11 +3021,11 @@
src/app/core/config/config-fix.ts
- 570
+ 564
src/app/core/config/config-fix.ts
- 770
+ 780
Active children filter label - true case
@@ -3067,11 +3033,11 @@
src/app/core/config/config-fix.ts
- 571
+ 565
src/app/core/config/config-fix.ts
- 771
+ 781
src/app/core/entity/model/entity.ts
@@ -3083,7 +3049,7 @@
src/app/core/config/config-fix.ts
- 619
+ 613
Header for form section
@@ -3091,7 +3057,7 @@
src/app/core/config/config-fix.ts
- 620
+ 614
Header for form section
@@ -3099,7 +3065,7 @@
src/app/core/config/config-fix.ts
- 621
+ 615
Header for form section
@@ -3107,7 +3073,7 @@
src/app/core/config/config-fix.ts
- 628
+ 622
Panel title
@@ -3115,7 +3081,7 @@
src/app/core/config/config-fix.ts
- 631
+ 625
Title inside a panel
@@ -3123,7 +3089,7 @@
src/app/core/config/config-fix.ts
- 651
+ 645
Title inside a panel
@@ -3131,7 +3097,7 @@
src/app/core/config/config-fix.ts
- 655
+ 649
Child details section title
@@ -3139,7 +3105,7 @@
src/app/core/config/config-fix.ts
- 676
+ 670
Panel title
@@ -3147,7 +3113,7 @@
src/app/core/config/config-fix.ts
- 698
+ 692
description section
@@ -3155,7 +3121,7 @@
src/app/core/config/config-fix.ts
- 705
+ 699
Title inside a panel
@@ -3163,7 +3129,7 @@
src/app/core/config/config-fix.ts
- 711
+ 705
Panel title
@@ -3171,7 +3137,7 @@
src/app/core/config/config-fix.ts
- 720
+ 730
Panel title
@@ -3179,7 +3145,7 @@
src/app/core/config/config-fix.ts
- 818
+ 828
Panel title
@@ -3187,7 +3153,7 @@
src/app/core/config/config-fix.ts
- 833
+ 843
Name of a report
@@ -3195,7 +3161,7 @@
src/app/core/config/config-fix.ts
- 837
+ 847
Label of report query
@@ -3203,7 +3169,7 @@
src/app/core/config/config-fix.ts
- 842
+ 852
Label for report query
@@ -3211,7 +3177,7 @@
src/app/core/config/config-fix.ts
- 845
+ 855
Label for report query
@@ -3219,7 +3185,7 @@
src/app/core/config/config-fix.ts
- 849
+ 859
Label for report query
@@ -3227,7 +3193,7 @@
src/app/core/config/config-fix.ts
- 854
+ 864
Label for report query
@@ -3235,7 +3201,7 @@
src/app/core/config/config-fix.ts
- 858
+ 868
Label for report query
@@ -3243,7 +3209,7 @@
src/app/core/config/config-fix.ts
- 863
+ 873
Label for report query
@@ -3251,7 +3217,7 @@
src/app/core/config/config-fix.ts
- 871
+ 881
Name of a report
@@ -3259,7 +3225,7 @@
src/app/core/config/config-fix.ts
- 888
+ 898
Name of a report
@@ -3267,7 +3233,7 @@
src/app/core/config/config-fix.ts
- 903
+ 913
Name of a column of a report
@@ -3275,7 +3241,7 @@
src/app/core/config/config-fix.ts
- 907
+ 917
Name of a column of a report
@@ -3283,7 +3249,7 @@
src/app/core/config/config-fix.ts
- 911
+ 921
Name of a column of a report
@@ -3291,7 +3257,7 @@
src/app/core/config/config-fix.ts
- 915
+ 925
Name of a column of a report
@@ -3299,7 +3265,7 @@
src/app/core/config/config-fix.ts
- 925
+ 935
Name of a report
@@ -3307,11 +3273,11 @@
src/app/core/config/config-fix.ts
- 956
+ 966
src/app/core/config/config-fix.ts
- 1024
+ 1034
Label for the address of a child
@@ -3319,7 +3285,7 @@
src/app/core/config/config-fix.ts
- 963
+ 973
Label for a child attribute
@@ -3327,7 +3293,7 @@
src/app/core/config/config-fix.ts
- 970
+ 980
Label for the religion of a child
@@ -3335,7 +3301,7 @@
src/app/core/config/config-fix.ts
- 977
+ 987
Label for the mother tongue of a child
@@ -3343,7 +3309,7 @@
src/app/core/config/config-fix.ts
- 978
+ 988
Tooltip description for the mother tongue of a child
@@ -3351,7 +3317,7 @@
src/app/core/config/config-fix.ts
- 985
+ 995
Label for a child attribute
@@ -3359,7 +3325,7 @@
src/app/core/config/config-fix.ts
- 992
+ 1002
Label for a child attribute
@@ -3367,7 +3333,7 @@
src/app/core/config/config-fix.ts
- 1017
+ 1027
Label for the language of a school
@@ -3375,7 +3341,7 @@
src/app/core/config/config-fix.ts
- 1038
+ 1048
Label for the timing of a school
@@ -3383,7 +3349,7 @@
src/app/core/config/config-fix.ts
- 1057
+ 1067
Label for a child attribute
@@ -3391,7 +3357,7 @@
src/app/core/config/config-fix.ts
- 1058
+ 1068
Description for a child attribute
@@ -3399,7 +3365,7 @@
src/app/core/config/config-fix.ts
- 1066
+ 1076
Label for a child attribute
@@ -3407,7 +3373,7 @@
src/app/core/config/config-fix.ts
- 1067
+ 1077
Description for a child attribute
@@ -3415,7 +3381,7 @@
src/app/core/config/config-fix.ts
- 1075
+ 1085
Label for a child attribute
@@ -3423,7 +3389,7 @@
src/app/core/config/config-fix.ts
- 1076
+ 1086
Description for a child attribute
@@ -3431,7 +3397,7 @@
src/app/core/config/config-fix.ts
- 1084
+ 1094
Label for a child attribute
@@ -3439,7 +3405,7 @@
src/app/core/config/config-fix.ts
- 1085
+ 1095
Description for a child attribute
@@ -3447,7 +3413,7 @@
src/app/core/config/config-fix.ts
- 1093
+ 1103
Label for a child attribute
@@ -3455,7 +3421,7 @@
src/app/core/config/config-fix.ts
- 1094
+ 1104
Description for a child attribute
@@ -3463,7 +3429,7 @@
src/app/core/config/config-fix.ts
- 1105
+ 1115
Label of user phone
@@ -3683,6 +3649,20 @@
Edit button for forms
+
+
+
+ src/app/core/entity-details/related-entities-with-summary/related-entities-with-summary.component.html
+ 11
+
+
+
+
+
+ src/app/core/entity-details/related-entities-with-summary/related-entities-with-summary.component.html
+ 14
+
+
@@ -3843,15 +3823,15 @@
src/app/core/entity/entity-remove.service.ts
- 89
+ 78
Delete confirmation title
-
-
+
+
src/app/core/entity/entity-remove.service.ts
- 92
+ 81
Delete confirmation text
@@ -3859,7 +3839,7 @@
src/app/core/entity/entity-remove.service.ts
- 99
+ 93
Deleted Entity information
@@ -3867,7 +3847,7 @@
src/app/core/entity/entity-remove.service.ts
- 126
+ 97
src/app/core/import/import-confirm-summary/import-confirm-summary.component.ts
@@ -4376,7 +4356,7 @@
src/app/core/pwa-install/pwa-install.component.html
- 11
+ 12
PWA Install Button Label
@@ -4384,7 +4364,7 @@
src/app/core/pwa-install/pwa-install.component.html
- 15,17
+ 16,18
PWA iOS Install Instructions - Line 1
@@ -4392,7 +4372,7 @@
src/app/core/pwa-install/pwa-install.component.html
- 27,29
+ 28,30
PWA iOS Install Instructions - Line 2-1
@@ -4400,7 +4380,7 @@
src/app/core/pwa-install/pwa-install.component.html
- 31,33
+ 32,34
PWA iOS Install Instructions - Line 2-2
@@ -4408,7 +4388,7 @@
src/app/core/pwa-install/pwa-install.component.html
- 36,38
+ 37,39
PWA iOS Install Instructions - Line 3-1
@@ -4416,7 +4396,7 @@
src/app/core/pwa-install/pwa-install.component.html
- 40,42
+ 41,43
PWA iOS Install Instructions - Line 3-2
@@ -4776,14 +4756,14 @@ Please try again. If the problem persists contact Aam Digital support.
src/app/core/ui/latest-changes/update-manager.service.ts
- 107
+ 111
src/app/core/ui/latest-changes/update-manager.service.ts
- 108
+ 112
Action that a user can update the app with
@@ -4791,14 +4771,14 @@ Please try again. If the problem persists contact Aam Digital support.
src/app/core/ui/latest-changes/update-manager.service.ts
- 133
+ 137
src/app/core/ui/latest-changes/update-manager.service.ts
- 134
+ 138
Action that a user can reload the app with
@@ -4875,7 +4855,7 @@ Please try again. If the problem persists contact Aam Digital support.
src/app/core/ui/ui/ui.component.html
- 83,85
+ 95,97
Navigate to user profile page
@@ -4883,7 +4863,7 @@ Please try again. If the problem persists contact Aam Digital support.
src/app/core/ui/ui/ui.component.html
- 88,90
+ 105,107
Sign out of the app
@@ -5553,7 +5533,7 @@ Please try again. If the problem persists contact Aam Digital support.
src/app/features/file/edit-file/edit-file.component.ts
- 130
+ 132
Message for user