Page MenuHomeSealhub

No OneTemporary

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

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)

Event Timeline