Genealogy as a feature (#175)
All checks were successful
continuous-integration/drone/push Build is passing

Start our journey into turning GeneIT as afully featured family intranet by making genealogy a feature that can be disabled by family admins

Reviewed-on: #175
This commit is contained in:
2024-05-16 19:15:15 +00:00
parent 0442538bd5
commit c8ee881b2c
34 changed files with 726 additions and 443 deletions

View File

@ -1,6 +1,6 @@
import { APIClient } from "./ApiClient";
import { Couple } from "./CoupleApi";
import { Member } from "./MemberApi";
import { Couple } from "./genealogy/CoupleApi";
import { Member } from "./genealogy/MemberApi";
interface FamilyAPI {
user_id: number;
@ -60,7 +60,8 @@ export class Family implements FamilyAPI {
*/
memberURL(member: Member, edit?: boolean): string {
return (
`/family/${this.family_id}/member/${member.id}` + (edit ? "/edit" : "")
`/family/${this.family_id}/genealogy/member/${member.id}` +
(edit ? "/edit" : "")
);
}
@ -68,7 +69,7 @@ export class Family implements FamilyAPI {
* Get family tree URL for member
*/
familyTreeURL(member: Member | number): string {
return `/family/${this.family_id}/tree/${
return `/family/${this.family_id}/genealogy/tree/${
typeof member === "number" ? member : member.id
}`;
}
@ -78,16 +79,19 @@ export class Family implements FamilyAPI {
*/
coupleURL(member: Couple, edit?: boolean): string {
return (
`/family/${this.family_id}/couple/${member.id}` + (edit ? "/edit" : "")
`/family/${this.family_id}/genealogy/couple/${member.id}` +
(edit ? "/edit" : "")
);
}
}
export class ExtendedFamilyInfo extends Family {
public disable_couple_photos: boolean;
public enable_genealogy: boolean;
constructor(p: any) {
super(p);
this.disable_couple_photos = p.disable_couple_photos;
this.enable_genealogy = p.enable_genealogy;
}
}
@ -229,14 +233,16 @@ export class FamilyApi {
*/
static async UpdateFamily(settings: {
id: number;
name: string;
disable_couple_photos: boolean;
name?: string;
enable_genealogy?: boolean;
disable_couple_photos?: boolean;
}): Promise<void> {
await APIClient.exec({
method: "PATCH",
uri: `/family/${settings.id}`,
jsonData: {
name: settings.name,
enable_genealogy: settings.enable_genealogy,
disable_couple_photos: settings.disable_couple_photos,
},
});