Page Menu
Home
Sealhub
Search
Configure Global Search
Log In
Files
F10360342
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
8 KB
Referenced Files
None
Subscribers
None
View Options
diff --git a/src/forms/fields/get-field-for-sealious.ts b/src/forms/fields/get-field-for-sealious.ts
index e8968b6..9fef1d6 100644
--- a/src/forms/fields/get-field-for-sealious.ts
+++ b/src/forms/fields/get-field-for-sealious.ts
@@ -1,228 +1,230 @@
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
import {
Field as SealiousField,
FieldTypes as SealiousFieldTypes,
RequiredField as SealiousRequiredField,
} from "sealious";
import { Boolean as BooleanField } from "./boolean.js";
import { FormField } from "./field.js";
import { PickFromListField } from "./pick-from-list.js";
import { SimpleFormField } from "./simple-form-field.js";
import { File } from "./file.js";
import { Table } from "./table.js";
import { CollectionField } from "./collection-field.js";
import { StructuredArrayField } from "./structured-array.js";
import { Color } from "./color.js";
import { DateField } from "./date.js";
import { DateTime } from "./datetime.js";
import { EmailField } from "./email.js";
import type { FileManager } from "@sealcode/file-manager";
import { Float } from "./float.js";
import { HTML } from "./html.js";
import { Int } from "./int.js";
import { JSONField } from "./json.js";
import { Password } from "./password.js";
import { Text } from "./text.js";
import { Markdown } from "./markdown.js";
import { DeepReverseSingleReferenceTable } from "./deep-reverse-single-reference-table.js";
import { DeepReverseSingleReferenceList } from "./deep-reverse-single-reference-list.js";
export type SealiousToFormField<T> = T extends SealiousFieldTypes.Boolean
? BooleanField<false>
: T extends SealiousFieldTypes.Color
? Color<false>
: T extends SealiousFieldTypes.ControlAccess<infer R>
? SealiousToFormField<R>
: T extends SealiousFieldTypes.Date
? DateField<false>
: T extends SealiousFieldTypes.DateTime
? DateTime<false>
: T extends SealiousFieldTypes.DeepReverseSingleReference
? DeepReverseSingleReferenceList | DeepReverseSingleReferenceTable
: T extends SealiousFieldTypes.DisallowUpdate<any, any, any, infer R>
? SealiousToFormField<R>
: T extends SealiousFieldTypes.Email
? EmailField<false>
: T extends SealiousFieldTypes.Enum<any>
? PickFromListField<false>
: T extends SealiousFieldTypes.File
? (fm: FileManager) => File<false>
: T extends SealiousFieldTypes.Float
? Float<false>
: T extends SealiousFieldTypes.HTML
? HTML<false>
: T extends SealiousFieldTypes.Image
? (fm: FileManager) => File<false>
: T extends SealiousFieldTypes.Int
? Int<false>
: T extends SealiousFieldTypes.JsonObject
? JSONField<false>
: T extends SealiousFieldTypes.JDD
? undefined
: T extends SealiousFieldTypes.Password
? Password<false>
: T extends SealiousFieldTypes.ReverseSingleReference
? undefined
: T extends SealiousFieldTypes.SecretToken
? undefined
: T extends SealiousFieldTypes.SettableBy<infer R>
? SealiousToFormField<R>
: T extends SealiousFieldTypes.SingleReference
? CollectionField<SealiousFieldTypes.SingleReference, boolean>
: T extends SealiousFieldTypes.Text
? Text<false>
: T extends SealiousFieldTypes.Username
? CollectionField<SealiousFieldTypes.Username, false>
: T extends SealiousFieldTypes.ValueExistingInCollection
? SimpleFormField<false>
: T extends SealiousFieldTypes.ValueNotExistingInCollection
? SimpleFormField<false>
: T extends SealiousRequiredField<any, any, any>
? SimpleFormField<false>
: T extends SealiousFieldTypes.Url
? SimpleFormField<false>
: T extends SealiousFieldTypes.Money
? SimpleFormField<false>
: T extends SealiousFieldTypes.Markdown
? Markdown<false>
: T extends SealiousFieldTypes.Coordinates
? SimpleFormField<false>
: T extends SealiousFieldTypes.StructuredArray<infer R>
? StructuredArrayField<R>
: FormField<any>;
export function sealiousToFormField<SF extends SealiousField<any>>(
sealious_field: SF
): SealiousToFormField<SF> {
if (sealious_field instanceof SealiousFieldTypes.Boolean) {
- return new Boolean(sealious_field.required) as SealiousToFormField<SF>;
+ return new BooleanField(
+ sealious_field.required
+ ) as SealiousToFormField<SF>;
}
if (sealious_field instanceof SealiousFieldTypes.Color) {
return new Color(sealious_field.required) as SealiousToFormField<SF>;
}
if (sealious_field instanceof SealiousFieldTypes.ControlAccess) {
const target_field = sealious_field.virtual_field;
return sealiousToFormField(target_field) as SealiousToFormField<SF>;
}
if (sealious_field instanceof SealiousFieldTypes.Date) {
return new DateField(
sealious_field.required
) as SealiousToFormField<SF>;
}
if (sealious_field instanceof SealiousFieldTypes.DateTime) {
return new DateTime(sealious_field.required) as SealiousToFormField<SF>;
}
if (
sealious_field instanceof SealiousFieldTypes.DeepReverseSingleReference
) {
console.log({ sealious_field });
const referencing_collection =
sealious_field.collection.app.collections[
sealious_field.referencing_collection
];
if (!referencing_collection) {
throw new Error(
"Unknown collection: " + sealious_field.referencing_collection
);
}
if (Object.keys(referencing_collection.fields).length == 2) {
return new DeepReverseSingleReferenceList(
sealious_field
) as SealiousToFormField<SF>;
} else {
return new DeepReverseSingleReferenceTable(
sealious_field
) as SealiousToFormField<SF>;
}
}
if (sealious_field instanceof SealiousFieldTypes.DisallowUpdate) {
return sealiousToFormField(
sealious_field.virtual_field
) as SealiousToFormField<SF>;
}
if (sealious_field instanceof SealiousFieldTypes.Email) {
return new EmailField(
sealious_field.required
) as SealiousToFormField<SF>;
}
if (sealious_field instanceof SealiousFieldTypes.Enum) {
return new PickFromListField(sealious_field.required, async (ctx) =>
sealious_field
.getAllowedValues(ctx.$app)
.map((value) => ({ value, label: value }))
) as SealiousToFormField<SF>;
}
if (sealious_field instanceof SealiousFieldTypes.File) {
return ((fm: FileManager) =>
new File(sealious_field.required, fm)) as SealiousToFormField<SF>;
}
if (sealious_field instanceof SealiousFieldTypes.Float) {
return new Float(sealious_field.required) as SealiousToFormField<SF>;
}
if (sealious_field instanceof SealiousFieldTypes.HTML) {
return new HTML(sealious_field.required) as SealiousToFormField<SF>;
}
if (sealious_field instanceof SealiousFieldTypes.Image) {
return ((fm: FileManager) =>
new File(sealious_field.required, fm)) as SealiousToFormField<SF>;
}
if (sealious_field instanceof SealiousFieldTypes.Int) {
return new Int(sealious_field.required) as SealiousToFormField<SF>;
}
if (sealious_field instanceof SealiousFieldTypes.JsonObject) {
return new JSONField(
sealious_field.required
) as SealiousToFormField<SF>;
}
if (sealious_field instanceof SealiousFieldTypes.Password) {
return new Password(sealious_field.required) as SealiousToFormField<SF>;
}
if (sealious_field instanceof SealiousFieldTypes.SettableBy) {
return sealiousToFormField(
sealious_field.virtual_field
) as SealiousToFormField<SF>;
}
if (sealious_field instanceof SealiousFieldTypes.SingleReference) {
return new CollectionField(
false,
sealious_field
) as unknown as SealiousToFormField<SF>;
}
if (sealious_field instanceof SealiousFieldTypes.Text) {
return new Text(sealious_field.required) as SealiousToFormField<SF>;
}
if (sealious_field instanceof SealiousFieldTypes.Username) {
return new Text(sealious_field.required) as SealiousToFormField<SF>;
}
if (sealious_field instanceof SealiousFieldTypes.Url) {
return new Text(sealious_field.required) as SealiousToFormField<SF>;
}
if (sealious_field instanceof SealiousFieldTypes.Money) {
return new Float(sealious_field.required) as SealiousToFormField<SF>;
}
if (sealious_field instanceof SealiousFieldTypes.Url) {
return new Markdown(sealious_field.required) as SealiousToFormField<SF>;
}
if (sealious_field instanceof SealiousFieldTypes.Coordinates) {
return new Text(sealious_field.required) as SealiousToFormField<SF>;
}
if (sealious_field instanceof SealiousFieldTypes.StructuredArray) {
const subfields = sealious_field.subfields as Record<
string,
SealiousField<any>
>;
return new Table(
Object.fromEntries(
Object.values(subfields).map((subfield) => [
subfield.name,
sealiousToFormField(subfield),
])
)
) as SealiousToFormField<SF>;
}
return undefined as SealiousToFormField<SF>;
}
const field = sealiousToFormField(
"" as unknown as SealiousFieldTypes.ControlAccess<SealiousFieldTypes.Boolean>
);
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Sat, Nov 8, 06:27 (1 d, 7 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1034119
Default Alt Text
(8 KB)
Attached To
Mode
rSGEN sealgen
Attached
Detach File
Event Timeline
Log In to Comment