Files
ezbookkeeping/src/core/template.ts
T
2025-02-06 20:44:18 +08:00

57 lines
2.0 KiB
TypeScript

import type { TypeAndName } from './base.ts';
export class TemplateType implements TypeAndName {
private static readonly allInstances: TemplateType[] = [];
private static readonly allInstancesByType: Record<number, TemplateType> = {};
public static readonly Normal = new TemplateType(1, 'Normal');
public static readonly Schedule = new TemplateType(2, 'Schedule');
public readonly type: number;
public readonly name: string;
private constructor(type: number, name: string) {
this.type = type;
this.name = name;
TemplateType.allInstances.push(this);
TemplateType.allInstancesByType[type] = this;
}
public static values(): TemplateType[] {
return TemplateType.allInstances;
}
public static valueOf(type: number): TemplateType | undefined {
return TemplateType.allInstancesByType[type];
}
}
export class ScheduledTemplateFrequencyType implements TypeAndName {
private static readonly allInstances: ScheduledTemplateFrequencyType[] = [];
private static readonly allInstancesByType: Record<number, ScheduledTemplateFrequencyType> = {};
public static readonly Disabled = new ScheduledTemplateFrequencyType(0, 'Disabled');
public static readonly Weekly = new ScheduledTemplateFrequencyType(1, 'Weekly');
public static readonly Monthly = new ScheduledTemplateFrequencyType(2, 'Monthly');
public readonly type: number;
public readonly name: string;
private constructor(type: number, name: string) {
this.type = type;
this.name = name;
ScheduledTemplateFrequencyType.allInstances.push(this);
ScheduledTemplateFrequencyType.allInstancesByType[type] = this;
}
public static values(): ScheduledTemplateFrequencyType[] {
return ScheduledTemplateFrequencyType.allInstances;
}
public static valueOf(type: number): ScheduledTemplateFrequencyType | undefined {
return ScheduledTemplateFrequencyType.allInstancesByType[type];
}
}