interface ICompetence {
id: number;
name: string;
description: string;
isPreference: boolean;
isTeachable: boolean;
}
export default class Competence {
static maxId = 0;
id: number;
name: string;
description: string;
isPreference: boolean;
isTeachable: boolean;
constructor(id: number, name: string, description: string, isPreference: boolean) {
// Change the current max id
if (!isNaN(id)) Competence.maxId = id > Competence.maxId ? id : Competence.maxId;
this.id = id;
this.name = name;
this.description = description;
this.isPreference = isPreference;
this.isTeachable = false;
}
get renderPreference(): string {
const icon = this.isPreference ? "check_box" : "check_box_outline_blank";
return '' + icon + "";
}
get renderTeachable(): string {
const icon = this.isTeachable ? "check_box" : "check_box_outline_blank";
return '' + icon + "";
}
get overflowDescription(): string {
return this.description;
}
get fullname(): string {
return this.name + (this.isPreference ? " (P)" : " (C)");
}
static fromObject(obj: ICompetence): Competence {
let id: number;
if (isNaN(obj.id)) {
this.maxId += 1;
id = this.maxId;
} else {
id = obj.id;
this.maxId = obj.id > this.maxId ? obj.id : this.maxId;
}
return new Competence(
id,
obj.name,
obj.description ? obj.description : "",
obj.isPreference ? obj.isPreference : false
);
}
toPlainObject(): ICompetence {
return {
id: this.id,
name: this.name,
description: this.description,
isPreference: this.isPreference,
isTeachable: this.isTeachable,
};
}
}