An error occurred while loading the file. Please try again.
-
Pierre-Antoine Rouby authored37b04961
import { MatDialogRef, MAT_DIALOG_DATA } from "@angular/material";
import { Inject, Component } from "@angular/core";
import { I18nService } from "../../services/internationalisation/internationalisation.service";
@Component({
selector: "dialog-save-session",
templateUrl: "dialog-save-session.component.html",
styleUrls: ["dialog-save-session.component.scss"]
})
export class DialogSaveSessionComponent {
public calculators: any[];
public fileName = "session";
public dependenciesProblems: any[] = [];
constructor(
public dialogRef: MatDialogRef<DialogSaveSessionComponent>,
private intlService: I18nService,
@Inject(MAT_DIALOG_DATA) public data: any
) {
this.calculators = data.calculators;
// run dependency checking at first
this.checkLinkedParamsAndModelsDependencies();
}
public selectAll() {
for (const c of this.calculators) {
c.selected = true;
}
// re-run dependency checking
this.checkLinkedParamsAndModelsDependencies();
}
public selectNone() {
for (const c of this.calculators) {
c.selected = false;
}
// re-run dependency checking
this.checkLinkedParamsAndModelsDependencies();
}
/**
* Checks the dependencies between Nubs :
* - linked params depend on their targets
* - PabCloisons depend on their models
*/
public checkLinkedParamsAndModelsDependencies() {
console.log("CLPMD !", this.calculators);
this.dependenciesProblems = [];
// for all checked Nubs
this.calculators.forEach((c) => {
if (c.selected) {
// do all required nubs are checked ?
c.requires.forEach((r) => {
if (! this.isCalculatorOrParentSelected(r)) {
const realUid = this.getUidOrParentUid(r);
const depTitle = this.getTitleFromUid(realUid);
this.dependenciesProblems.push({
requiring: c.title,
required: depTitle,
requiredUid: realUid,
message: c.title + " " + this.intlService.localizeText("INFO_REQUIRES") + " " + depTitle
});
}
});
}
});
}
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
public fixDependencies() {
for (const dp of this.dependenciesProblems) {
this.selectRequiredModule(dp.requiredUid);
}
}
private isCalculatorOrParentSelected(uid: string): boolean {
let isSelected = false;
this.calculators.forEach((c) => {
if (c.uid === uid || c.children.includes(uid)) {
isSelected = c.selected;
}
});
return isSelected;
}
private getUidOrParentUid(uid: string): string {
let realUid: string;
this.calculators.forEach((c) => {
if (c.uid === uid || c.children.includes(uid)) {
realUid = c.uid;
}
});
return realUid;
}
private getTitleFromUid(uid: string): string {
let title: string;
this.calculators.forEach((c) => {
if (c.uid === uid) {
title = c.title;
}
});
return title;
}
private selectRequiredModule(uid: string) {
this.calculators.forEach((c) => {
if (c.uid === uid) {
c.selected = true;
}
});
// re-run dependency checking
this.checkLinkedParamsAndModelsDependencies();
}
public saveSession() {
this.dialogRef.close({
calculators: this.calculators,
filename: this.fileName
});
}
public get atLeastOneCheckboxSelected() {
let ok = false;
for (const c of this.calculators) {
ok = (ok || c.selected);
}
return ok;
}
public get uitextSave() {
return this.intlService.localizeText("INFO_OPTION_SAVE");
}
public get uitextCancel() {
return this.intlService.localizeText("INFO_OPTION_CANCEL");
}
141142143144145146147148149150151152153154155156157158159160161162163164165166
public get uitextAll() {
return this.intlService.localizeText("INFO_OPTION_ALL");
}
public get uitextNone() {
return this.intlService.localizeText("INFO_OPTION_NONE");
}
public get uitextSaveSessionTitle() {
return this.intlService.localizeText("INFO_DIALOG_SAVE_SESSION_TITLE");
}
public get uitextFilenameInput() {
return this.intlService.localizeText("INFO_DIALOG_SAVE_SESSION_FILENAME");
}
public get uitextFixMissingDependencies() {
return this.intlService.localizeText("INFO_DIALOG_FIX_MISSING_DEPENDENCIES");
}
public onEnterPressed(event) {
this.saveSession();
return false; // stops event propagation
}
}