mirror of
https://github.com/cssgunc/compass.git
synced 2025-04-10 06:10:17 -04:00
Merge pull request #28 from cssgunc/mel-GEN-75-dummy-data
Mel gen 75 dummy data
This commit is contained in:
commit
7a1ec296b7
|
@ -60,7 +60,7 @@ export default function Page() {
|
||||||
{emailError && <ErrorBanner heading={emailError} />}
|
{emailError && <ErrorBanner heading={emailError} />}
|
||||||
|
|
||||||
<div className="mb-6">
|
<div className="mb-6">
|
||||||
<PasswordInput title="Password" valid={passwordError == ""} onChange={handlePasswordChange} required />
|
<PasswordInput title="Password" valid={passwordError == ""} onChange={handlePasswordChange} />
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
{passwordError && <ErrorBanner heading={passwordError} />}
|
{passwordError && <ErrorBanner heading={passwordError} />}
|
||||||
|
|
15
compass/utils/classes/Field.ts
Normal file
15
compass/utils/classes/Field.ts
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
import { Icons } from "../constants";
|
||||||
|
|
||||||
|
export class Field {
|
||||||
|
iconKey: keyof typeof Icons;
|
||||||
|
title: string;
|
||||||
|
|
||||||
|
constructor(iconKey: keyof typeof Icons, title: string) {
|
||||||
|
this.iconKey = iconKey;
|
||||||
|
this.title = title;
|
||||||
|
}
|
||||||
|
|
||||||
|
validateInput(value: any): boolean {
|
||||||
|
return value !== null;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,9 +0,0 @@
|
||||||
import { InputHTMLAttributes } from "react";
|
|
||||||
import { Icons } from "../constants";
|
|
||||||
|
|
||||||
export type InputProps = InputHTMLAttributes<HTMLInputElement> & {
|
|
||||||
iconKey?: keyof typeof Icons; // Use keyof typeof to ensure the key exists in Icons
|
|
||||||
title?: string; // Assuming title is always a string
|
|
||||||
type?: string;
|
|
||||||
placeholder?: string;
|
|
||||||
};
|
|
|
@ -1,54 +1,58 @@
|
||||||
import { ListBulletIcon, HashtagIcon, Bars3BottomLeftIcon, EnvelopeIcon, AtSymbolIcon, ClipboardIcon, ArrowsUpDownIcon, ChevronDoubleRightIcon, ChevronDoubleLeftIcon, ChevronRightIcon, ChevronLeftIcon, EyeIcon, EyeSlashIcon, UserIcon, BookOpenIcon, MagnifyingGlassIcon, LinkIcon } from '@heroicons/react/24/solid';
|
import { ListBulletIcon, HashtagIcon, Bars3BottomLeftIcon, EnvelopeIcon, AtSymbolIcon, ClipboardIcon, ArrowsUpDownIcon, ChevronDoubleRightIcon, ChevronDoubleLeftIcon, ChevronRightIcon, ChevronLeftIcon, EyeIcon, EyeSlashIcon, UserIcon, BookOpenIcon, MagnifyingGlassIcon, LinkIcon, ClipboardDocumentCheckIcon } from '@heroicons/react/24/solid';
|
||||||
|
|
||||||
export const Icons = {
|
export const Icons = {
|
||||||
EmailInputIcon: EnvelopeIcon,
|
EmailInputIcon: EnvelopeIcon,
|
||||||
HidePasswordIcon: EyeSlashIcon,
|
HidePasswordIcon: EyeSlashIcon,
|
||||||
UnhidePasswordIcon: EyeIcon,
|
UnhidePasswordIcon: EyeIcon,
|
||||||
UserIcon: UserIcon,
|
UserIcon: UserIcon,
|
||||||
ResourceIcon: BookOpenIcon,
|
ResourceIcon: BookOpenIcon,
|
||||||
SearchIcon: MagnifyingGlassIcon,
|
SearchIcon: MagnifyingGlassIcon,
|
||||||
ServiceIcon: ClipboardIcon,
|
ServiceIcon: ClipboardIcon,
|
||||||
CloseRightArrow: ChevronDoubleRightIcon,
|
CloseRightArrow: ChevronDoubleRightIcon,
|
||||||
CloseLeftArrow: ChevronDoubleLeftIcon,
|
CloseLeftArrow: ChevronDoubleLeftIcon,
|
||||||
LinkRightArrow:ChevronRightIcon,
|
LinkRightArrow:ChevronRightIcon,
|
||||||
LinkLeftArrow:ChevronLeftIcon,
|
LinkLeftArrow:ChevronLeftIcon,
|
||||||
SortIcon: ArrowsUpDownIcon,
|
SortIcon: ArrowsUpDownIcon,
|
||||||
EmailTableIcon:AtSymbolIcon,
|
EmailTableIcon:AtSymbolIcon,
|
||||||
LinkTableIcon: LinkIcon,
|
LinkTableIcon: LinkIcon,
|
||||||
TextTableIcon: Bars3BottomLeftIcon,
|
TextTableIcon: Bars3BottomLeftIcon,
|
||||||
NumberTableIcon: HashtagIcon,
|
NumberTableIcon: HashtagIcon,
|
||||||
MultiselectTableIcon: ListBulletIcon
|
MultiselectTableIcon: ListBulletIcon,
|
||||||
};
|
RequirementsTableIcon: ClipboardDocumentCheckIcon
|
||||||
|
};
|
||||||
export enum User {
|
|
||||||
ADMIN,
|
export enum USER {
|
||||||
EMPLOYEE,
|
ADMIN,
|
||||||
VOLUNTEER
|
EMPLOYEE,
|
||||||
}
|
VOLUNTEER
|
||||||
|
}
|
||||||
export enum COLLECTION {
|
|
||||||
RESOURCE,
|
export enum COLLECTION {
|
||||||
SERVICE,
|
RESOURCE,
|
||||||
USER
|
SERVICE,
|
||||||
}
|
USER,
|
||||||
|
TRAINING_MANUAL
|
||||||
export enum PROGRAM {
|
}
|
||||||
DOMESTIC_VIOLENCE,
|
|
||||||
ECONOMIC_STABILITY,
|
export enum PROGRAM {
|
||||||
COMMUNITY_EDUCATION
|
DOMESTIC_VIOLENCE,
|
||||||
}
|
ECONOMIC_STABILITY,
|
||||||
|
COMMUNITY_EDUCATION
|
||||||
export enum DATATYPE {
|
}
|
||||||
INTEGER,
|
|
||||||
STRING,
|
export enum STATUS {
|
||||||
LINK,
|
FULL,
|
||||||
EMAIL,
|
CLOSED,
|
||||||
MULTISELECT,
|
ACCEPTING_CLIENTS
|
||||||
SELECT
|
}
|
||||||
}
|
|
||||||
|
export enum DATATYPE {
|
||||||
// export const COLLECTION_MAP: {[key in COLLECTION]: CollectionImpl} = {
|
INTEGER,
|
||||||
// [COLLECTION.RESOURCE]: new CollectionImpl('Resources', Icons.ResourceIcon),
|
STRING,
|
||||||
// [COLLECTION.SERVICE]: new CollectionImpl('Services', Icons.ServiceIcon),
|
LINK,
|
||||||
// [COLLECTION.USER]: new CollectionImpl('Users', Icons.UserIcon)
|
EMAIL,
|
||||||
// }
|
MULTISELECT,
|
||||||
|
SELECT
|
||||||
|
}
|
||||||
|
|
||||||
|
|
137
compass/utils/functions/mockFetch.ts
Normal file
137
compass/utils/functions/mockFetch.ts
Normal file
|
@ -0,0 +1,137 @@
|
||||||
|
import { PROGRAM, STATUS, USER } from "../constants";
|
||||||
|
|
||||||
|
const serviceEntries = [
|
||||||
|
{
|
||||||
|
name: "Empowerment Workshops",
|
||||||
|
status: [STATUS.ACCEPTING_CLIENTS],
|
||||||
|
summary: "Workshops to empower victims through education and skill-building.",
|
||||||
|
requirements: "Resident of the community and victim of domestic violence.",
|
||||||
|
program: [PROGRAM.DOMESTIC_VIOLENCE, PROGRAM.COMMUNITY_EDUCATION],
|
||||||
|
tags: ["empowerment", "education"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Financial Literacy Courses",
|
||||||
|
status: [STATUS.ACCEPTING_CLIENTS, STATUS.FULL],
|
||||||
|
summary: "Courses aimed at improving financial independence for victims.",
|
||||||
|
requirements: "Open to all domestic violence victims.",
|
||||||
|
program: [PROGRAM.ECONOMIC_STABILITY],
|
||||||
|
tags: ["finance", "literacy"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Counseling Services",
|
||||||
|
status: [STATUS.ACCEPTING_CLIENTS],
|
||||||
|
summary: "Professional counseling for individuals and families affected by domestic violence.",
|
||||||
|
requirements: "Appointment required.",
|
||||||
|
program: [PROGRAM.DOMESTIC_VIOLENCE],
|
||||||
|
tags: ["counseling", "mental health"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Job Placement Program",
|
||||||
|
status: [STATUS.ACCEPTING_CLIENTS],
|
||||||
|
summary: "Assistance with job search and placement for survivors.",
|
||||||
|
requirements: "Must be actively seeking employment.",
|
||||||
|
program: [PROGRAM.ECONOMIC_STABILITY],
|
||||||
|
tags: ["job", "employment"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Legal Advocacy",
|
||||||
|
status: [STATUS.FULL],
|
||||||
|
summary: "Legal advice and representation for victims of domestic violence.",
|
||||||
|
requirements: "Legal documentation of domestic violence required.",
|
||||||
|
program: [PROGRAM.DOMESTIC_VIOLENCE],
|
||||||
|
tags: ["legal", "advocacy"],
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
const resourceEntries = [
|
||||||
|
{
|
||||||
|
name: "Legal Aid Reference",
|
||||||
|
summary: "Comprehensive list of legal resources for victims.",
|
||||||
|
link: "https://legalaid.example.com",
|
||||||
|
program: [PROGRAM.DOMESTIC_VIOLENCE],
|
||||||
|
tags: ["legal", "aid"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Shelter Locations",
|
||||||
|
summary: "Directory of safe shelters for victims escaping abuse.",
|
||||||
|
link: "https://shelters.example.com",
|
||||||
|
program: [PROGRAM.DOMESTIC_VIOLENCE],
|
||||||
|
tags: ["shelter", "safety"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Support Group Finder",
|
||||||
|
summary: "Find local support groups for survivors of domestic violence.",
|
||||||
|
link: "https://supportgroups.example.com",
|
||||||
|
program: [PROGRAM.COMMUNITY_EDUCATION],
|
||||||
|
tags: ["support", "community"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Employment Services",
|
||||||
|
summary: "Resources for job training and placement services.",
|
||||||
|
link: "https://employment.example.com",
|
||||||
|
program: [PROGRAM.ECONOMIC_STABILITY],
|
||||||
|
tags: ["job", "training"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Educational Workshops",
|
||||||
|
summary: "Schedule of educational workshops on various topics.",
|
||||||
|
link: "https://workshops.example.com",
|
||||||
|
program: [PROGRAM.COMMUNITY_EDUCATION],
|
||||||
|
tags: ["education", "workshops"],
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
const userEntries = [
|
||||||
|
{
|
||||||
|
name: "Alex Johnson",
|
||||||
|
role: [USER.VOLUNTEER],
|
||||||
|
email: "alex.johnson@example.com",
|
||||||
|
program: [PROGRAM.DOMESTIC_VIOLENCE],
|
||||||
|
experience: 2,
|
||||||
|
group: "Volunteer Group A",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Sam Lee",
|
||||||
|
role: [USER.EMPLOYEE],
|
||||||
|
email: "sam.lee@example.com",
|
||||||
|
program: [PROGRAM.ECONOMIC_STABILITY],
|
||||||
|
experience: 5,
|
||||||
|
group: "Economic Support Team",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Jordan Smith",
|
||||||
|
role: [USER.ADMIN, USER.VOLUNTEER],
|
||||||
|
email: "jordan.smith@example.com",
|
||||||
|
program: [PROGRAM.COMMUNITY_EDUCATION, PROGRAM.DOMESTIC_VIOLENCE],
|
||||||
|
experience: 3,
|
||||||
|
group: "Outreach and Education",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Casey Martinez",
|
||||||
|
role: [USER.VOLUNTEER],
|
||||||
|
email: "casey.martinez@example.com",
|
||||||
|
program: [PROGRAM.ECONOMIC_STABILITY],
|
||||||
|
experience: 1,
|
||||||
|
group: "Financial Literacy Volunteers",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Jamie Chung",
|
||||||
|
role: [USER.EMPLOYEE],
|
||||||
|
email: "jamie.chung@example.com",
|
||||||
|
program: [PROGRAM.DOMESTIC_VIOLENCE],
|
||||||
|
experience: 4,
|
||||||
|
group: "Counseling Services Team",
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
export const mockFetchServices = () => {
|
||||||
|
return serviceEntries;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const mockFetchResources = () => {
|
||||||
|
return resourceEntries;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const mockFetchUsers = () => {
|
||||||
|
return userEntries;
|
||||||
|
}
|
39
compass/utils/implementations/CollectionDataImpl.ts
Normal file
39
compass/utils/implementations/CollectionDataImpl.ts
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
import { Field } from "../classes/Field";
|
||||||
|
|
||||||
|
export class CollectionDataImpl {
|
||||||
|
headers: Field[];
|
||||||
|
rows: Record<string, any>[];
|
||||||
|
|
||||||
|
constructor(headers: Field[] = [], rows: Record<string, any>[] = []) {
|
||||||
|
this.headers = headers;
|
||||||
|
this.rows = rows;
|
||||||
|
}
|
||||||
|
|
||||||
|
addRow(row: Record<string, any>): void {
|
||||||
|
let isValidRow = true;
|
||||||
|
|
||||||
|
for (const header of this.headers) {
|
||||||
|
const value = row[header.title];
|
||||||
|
if (!header.validateInput(value)) {
|
||||||
|
console.error(`Validation failed for ${header.title} with value ${value}`);
|
||||||
|
isValidRow = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isValidRow) {
|
||||||
|
this.rows.push(row);
|
||||||
|
} else {
|
||||||
|
console.log('Row not added due to validation failure.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getRows(): Record<string, any>[] {
|
||||||
|
return this.rows;
|
||||||
|
}
|
||||||
|
|
||||||
|
getHeaders(): Field[] {
|
||||||
|
return this.headers;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
15
compass/utils/implementations/CollectionImpl.ts
Normal file
15
compass/utils/implementations/CollectionImpl.ts
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
import { CollectionDataImpl } from "./CollectionDataImpl";
|
||||||
|
|
||||||
|
export class CollectionImpl {
|
||||||
|
title: string;
|
||||||
|
icon: any;
|
||||||
|
data: CollectionDataImpl;
|
||||||
|
|
||||||
|
constructor(title: string, icon: any, data: CollectionDataImpl) {
|
||||||
|
this.title = title;
|
||||||
|
this.icon = icon;
|
||||||
|
this.data = data;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
18
compass/utils/implementations/FieldImpl/EmailFieldImpl.ts
Normal file
18
compass/utils/implementations/FieldImpl/EmailFieldImpl.ts
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
import { Field } from "@/utils/classes/Field";
|
||||||
|
|
||||||
|
|
||||||
|
export class EmailFieldImpl extends Field {
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
super('EmailTableIcon', "Email");
|
||||||
|
}
|
||||||
|
|
||||||
|
validateInput(value: any) : boolean {
|
||||||
|
if (typeof value !== 'string') {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
||||||
|
return emailRegex.test(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
15
compass/utils/implementations/FieldImpl/IntegerFieldImpl.ts
Normal file
15
compass/utils/implementations/FieldImpl/IntegerFieldImpl.ts
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
import { Icons } from "@/utils/constants";
|
||||||
|
import { Field } from "@/utils/classes/Field";
|
||||||
|
|
||||||
|
|
||||||
|
export class IntegerFieldImpl extends Field {
|
||||||
|
|
||||||
|
constructor(title: string) {
|
||||||
|
super('NumberTableIcon', title);
|
||||||
|
}
|
||||||
|
|
||||||
|
validateInput(value: any) : boolean {
|
||||||
|
return Number.isInteger(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
18
compass/utils/implementations/FieldImpl/LinkFieldImpl.ts
Normal file
18
compass/utils/implementations/FieldImpl/LinkFieldImpl.ts
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
import { Field } from "@/utils/classes/Field";
|
||||||
|
|
||||||
|
|
||||||
|
export class LinkFieldImpl extends Field {
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
super('LinkTableIcon', "Link");
|
||||||
|
}
|
||||||
|
|
||||||
|
validateInput(value: any) : boolean {
|
||||||
|
if (typeof value !== 'string') {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
const urlRegex = /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/;
|
||||||
|
return urlRegex.test(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
import { Field } from "@/utils/classes/Field";
|
||||||
|
|
||||||
|
|
||||||
|
export class MultiselectFieldImpl extends Field {
|
||||||
|
|
||||||
|
tags: Set<any>;
|
||||||
|
selectedTags: Set<any>;
|
||||||
|
|
||||||
|
constructor(title: string, tags: Set<any> = new Set()) {
|
||||||
|
super('MultiselectTableIcon', title);
|
||||||
|
this.tags = tags
|
||||||
|
this.selectedTags = new Set();
|
||||||
|
}
|
||||||
|
|
||||||
|
getTags() {
|
||||||
|
return this.tags
|
||||||
|
}
|
||||||
|
|
||||||
|
addTag(tag: any) {
|
||||||
|
this.tags.add(tag);
|
||||||
|
}
|
||||||
|
|
||||||
|
removeTag(tag: any) {
|
||||||
|
if (this.tags.has(tag)){
|
||||||
|
this.tags.delete(tag);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
selectTag(tag: any) {
|
||||||
|
this.selectedTags.add(tag);
|
||||||
|
}
|
||||||
|
|
||||||
|
removeSelectedTag(tag: any) {
|
||||||
|
if (this.selectedTags.has(tag)){
|
||||||
|
this.selectedTags.delete(tag);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
15
compass/utils/implementations/FieldImpl/StringFieldImpl.ts
Normal file
15
compass/utils/implementations/FieldImpl/StringFieldImpl.ts
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
import { Icons } from "@/utils/constants";
|
||||||
|
import { Field } from "@/utils/classes/Field";
|
||||||
|
|
||||||
|
|
||||||
|
export class StringFieldImpl extends Field {
|
||||||
|
|
||||||
|
constructor(title: string, iconKey: keyof typeof Icons = "TextTableIcon") {
|
||||||
|
super(iconKey, title);
|
||||||
|
}
|
||||||
|
|
||||||
|
validateInput(value: any) : boolean {
|
||||||
|
return typeof value === 'string';
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
15
compass/utils/models/Collection.ts
Normal file
15
compass/utils/models/Collection.ts
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
import { mockFetchResources, mockFetchServices, mockFetchUsers } from "../functions/mockFetch";
|
||||||
|
import { CollectionDataImpl } from "../implementations/CollectionDataImpl";
|
||||||
|
import { CollectionImpl } from "../implementations/CollectionImpl";
|
||||||
|
import { ResourceCollectionDataType, ServiceCollectionDataType, UserCollectionDataType } from "./CollectionDataType";
|
||||||
|
|
||||||
|
const ServiceCollectionData = new CollectionDataImpl(ServiceCollectionDataType, mockFetchServices());
|
||||||
|
const ResourceCollectionData = new CollectionDataImpl(ResourceCollectionDataType, mockFetchResources());
|
||||||
|
const UserCollectionData = new CollectionDataImpl(UserCollectionDataType, mockFetchUsers());
|
||||||
|
|
||||||
|
export const ServiceCollection = new CollectionImpl('Service','ServiceIcon',new CollectionDataImpl(ServiceCollectionDataType))
|
||||||
|
|
||||||
|
export const ResourceCollection = new CollectionImpl('Resource','ResourceIcon',new CollectionDataImpl(ResourceCollectionDataType))
|
||||||
|
|
||||||
|
export const UserCollection = new CollectionImpl('User','UserIcon',new CollectionDataImpl(UserCollectionDataType))
|
||||||
|
|
26
compass/utils/models/CollectionDataType.ts
Normal file
26
compass/utils/models/CollectionDataType.ts
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
import { Field } from "../classes/Field";
|
||||||
|
import { PROGRAM, STATUS, USER } from "../constants";
|
||||||
|
import { EmailFieldImpl } from "../implementations/FieldImpl/EmailFieldImpl";
|
||||||
|
import { IntegerFieldImpl } from "../implementations/FieldImpl/IntegerFieldImpl";
|
||||||
|
import { LinkFieldImpl } from "../implementations/FieldImpl/LinkFieldImpl";
|
||||||
|
import { MultiselectFieldImpl } from "../implementations/FieldImpl/MultiselectFieldImpl";
|
||||||
|
import { StringFieldImpl } from "../implementations/FieldImpl/StringFieldImpl";
|
||||||
|
|
||||||
|
const programSet: Set<PROGRAM> = new Set([PROGRAM.COMMUNITY_EDUCATION, PROGRAM.DOMESTIC_VIOLENCE, PROGRAM.ECONOMIC_STABILITY]);
|
||||||
|
const program = new MultiselectFieldImpl("program", programSet);
|
||||||
|
const requirements = new StringFieldImpl("requirements","RequirementsTableIcon");
|
||||||
|
const name = new StringFieldImpl("name");
|
||||||
|
const summary = new StringFieldImpl("summary");
|
||||||
|
const statusSet: Set<STATUS> = new Set([STATUS.ACCEPTING_CLIENTS, STATUS.CLOSED, STATUS.FULL])
|
||||||
|
const status = new MultiselectFieldImpl("status", statusSet);
|
||||||
|
const link = new LinkFieldImpl()
|
||||||
|
const tags = new MultiselectFieldImpl("tags")
|
||||||
|
const roleSet: Set<USER> = new Set([USER.ADMIN, USER.EMPLOYEE, USER.VOLUNTEER]);
|
||||||
|
const role = new MultiselectFieldImpl("role", roleSet)
|
||||||
|
const experience = new IntegerFieldImpl("yoe")
|
||||||
|
const email = new EmailFieldImpl()
|
||||||
|
const group = new StringFieldImpl("group")
|
||||||
|
|
||||||
|
export const ServiceCollectionDataType: Field[] = [name, status, summary, requirements, program, tags]
|
||||||
|
export const ResourceCollectionDataType: Field[] = [name, summary, link, program, tags]
|
||||||
|
export const UserCollectionDataType: Field[] = [name, role, email, program, experience, group]
|
Loading…
Reference in New Issue
Block a user