Icons and clearer OperatorSchema

This commit is contained in:
Felix Kaspar 2024-08-20 20:46:15 +02:00
parent c2bcda925a
commit 227f46456b
13 changed files with 257 additions and 195 deletions

View File

@ -1,27 +1,30 @@
import { OperatorSchema } from "."; import { OperatorAvailability, OperatorSchema } from ".";
import Joi from "@stirling-tools/joi"; import Joi from "@stirling-tools/joi";
import { JoiPDFFileSchema } from "../wrappers/PdfFileJoi"; import { JoiPDFFileSchema } from "../wrappers/PdfFileJoi";
import i18next from "i18next"; import i18next from "i18next";
export default new OperatorSchema( export default new OperatorSchema({
i18next.t("friendlyName", { ns: "arrangePages" }), joi: {
i18next.t("description", { ns: "arrangePages" }), label: i18next.t("friendlyName", { ns: "arrangePages" }),
JoiPDFFileSchema.label(i18next.t("inputs.pdffile.name")).description(i18next.t("inputs.pdffile.description")), description: i18next.t("description", { ns: "arrangePages" }),
Joi.object({ inputSchema: JoiPDFFileSchema.label(i18next.t("inputs.pdffile.name")).description(i18next.t("inputs.pdffile.description")),
arrangementConfig: Joi.string().valid(...[ valueSchema: Joi.object({
"REVERSE_ORDER", arrangementConfig: Joi.string().valid(...[
"DUPLEX_SORT", "REVERSE_ORDER",
"BOOKLET_SORT", "DUPLEX_SORT",
"SIDE_STITCH_BOOKLET_SORT", "BOOKLET_SORT",
"ODD_EVEN_SPLIT", "SIDE_STITCH_BOOKLET_SORT",
"REMOVE_FIRST", "ODD_EVEN_SPLIT",
"REMOVE_LAST", "REMOVE_FIRST",
"REMOVE_FIRST_AND_LAST" "REMOVE_LAST",
]).required() "REMOVE_FIRST_AND_LAST"
.label(i18next.t("values.arrangementConfig.friendlyName", { ns: "arrangePages" })).description(i18next.t("values.arrangementConfig.description", { ns: "arrangePages" })) ]).required()
.example("REVERSE_ORDER").example("DUPLEX_SORT").example("BOOKLET_SORT").required() .label(i18next.t("values.arrangementConfig.friendlyName", { ns: "arrangePages" })).description(i18next.t("values.arrangementConfig.description", { ns: "arrangePages" }))
}), .example("REVERSE_ORDER").example("DUPLEX_SORT").example("BOOKLET_SORT").required()
JoiPDFFileSchema.label(i18next.t("outputs.pdffile.name")).description(i18next.t("outputs.pdffile.description")), }),
"list" outputSchema: JoiPDFFileSchema.label(i18next.t("outputs.pdffile.name")).description(i18next.t("outputs.pdffile.description")),
); },
materialSymbolName: "list",
availability: OperatorAvailability.Both
});

View File

@ -1,4 +1,4 @@
import { OperatorSchema } from "."; import { OperatorAvailability, OperatorSchema } from ".";
import Joi from "@stirling-tools/joi"; import Joi from "@stirling-tools/joi";
import { JoiPDFFileSchema } from "../wrappers/PdfFileJoi"; import { JoiPDFFileSchema } from "../wrappers/PdfFileJoi";
@ -6,14 +6,18 @@ import i18next from "i18next";
import CommaArrayJoiExt from "../wrappers/CommaArrayJoiExt"; import CommaArrayJoiExt from "../wrappers/CommaArrayJoiExt";
export default new OperatorSchema( export default new OperatorSchema({
i18next.t("friendlyName", { ns: "extractPages" }), joi: {
i18next.t("description", { ns: "extractPages" }), label: i18next.t("friendlyName", { ns: "extractPages" }),
JoiPDFFileSchema.label(i18next.t("inputs.pdffile.name")).description(i18next.t("inputs.pdffile.description")), description: i18next.t("description", { ns: "extractPages" }),
Joi.object({ inputSchema: JoiPDFFileSchema.label(i18next.t("inputs.pdffile.name")).description(i18next.t("inputs.pdffile.description")),
pageIndexes: CommaArrayJoiExt.comma_array().items(Joi.number().integer()).required() valueSchema: Joi.object({
.label(i18next.t("values.pageIndexes.friendlyName", { ns: "extractPages" })).description(i18next.t("values.pageIndexes.description", { ns: "extractPages" })) pageIndexes: CommaArrayJoiExt.comma_array().items(Joi.number().integer()).required()
.example("1").example("1, 2, 3, 4").example("4, 2, 4, 3").required() .label(i18next.t("values.pageIndexes.friendlyName", { ns: "extractPages" })).description(i18next.t("values.pageIndexes.description", { ns: "extractPages" }))
}), .example("1").example("1, 2, 3, 4").example("4, 2, 4, 3").required()
JoiPDFFileSchema.label(i18next.t("outputs.pdffile.name")).description(i18next.t("outputs.pdffile.description")) }),
); outputSchema: JoiPDFFileSchema.label(i18next.t("outputs.pdffile.name")).description(i18next.t("outputs.pdffile.description")),
},
materialSymbolName: "content_cut",
availability: OperatorAvailability.Both
});

View File

@ -1,14 +1,15 @@
import { OperatorSchema } from "."; import { OperatorAvailability, OperatorSchema } from ".";
import Joi from "@stirling-tools/joi"; import Joi from "@stirling-tools/joi";
import { JoiPDFFileSchema } from "../wrappers/PdfFileJoi"; import { JoiPDFFileSchema } from "../wrappers/PdfFileJoi";
import i18next from "i18next"; import i18next from "i18next";
export default new OperatorSchema( export default new OperatorSchema({
i18next.t("friendlyName", { ns: "impose" }), joi: {
i18next.t("description", { ns: "impose" }), label: i18next.t("friendlyName", { ns: "impose" }),
JoiPDFFileSchema.label(i18next.t("inputs.pdffile.name")).description(i18next.t("inputs.pdffile.description")), description: i18next.t("description", { ns: "impose" }),
Joi.object({ inputSchema: JoiPDFFileSchema.label(i18next.t("inputs.pdffile.name")).description(i18next.t("inputs.pdffile.description")),
valueSchema: Joi.object({
nup: Joi.number().integer().valid(2, 3, 4, 8, 9, 12, 16).required() nup: Joi.number().integer().valid(2, 3, 4, 8, 9, 12, 16).required()
.label(i18next.t("values.nup.friendlyName", { ns: "impose" })).description(i18next.t("values.nup.description", { ns: "impose" })) .label(i18next.t("values.nup.friendlyName", { ns: "impose" })).description(i18next.t("values.nup.description", { ns: "impose" }))
.example("3").example("4"), .example("3").example("4"),
@ -55,5 +56,9 @@ export default new OperatorSchema(
.label(i18next.t("values.format.friendlyName", { ns: "impose" })).description(i18next.t("values.format.description", { ns: "impose" })) .label(i18next.t("values.format.friendlyName", { ns: "impose" })).description(i18next.t("values.format.description", { ns: "impose" }))
.example("A4").example("A3L") .example("A4").example("A3L")
}), }),
JoiPDFFileSchema.label(i18next.t("outputs.pdffile.name")).description(i18next.t("outputs.pdffile.description")) outputSchema: JoiPDFFileSchema.label(i18next.t("outputs.pdffile.name")).description(i18next.t("outputs.pdffile.description")),
},
materialSymbolName: "grid_view",
availability: OperatorAvailability.Both
}
) )

View File

@ -31,18 +31,31 @@ export class Operator {
} }
} }
export enum OperatorAvailability {Serverside, Clientside, Both}
export class OperatorSchema { export class OperatorSchema {
schema: Joi.ObjectSchema<any>; schema: Joi.ObjectSchema<any>;
materialSymbolName: MaterialSymbolProps["icon"] | undefined; materialSymbolName: MaterialSymbolProps["icon"] | undefined;
availability: OperatorAvailability;
constructor(label: string, description: string, inputSchema: Joi.Schema, valueSchema: Joi.Schema, outputSchema: Joi.Schema, materialSymbolName?: MaterialSymbolProps["icon"] | undefined) { constructor(params: {
joi: {
label: string;
description: string;
inputSchema: Joi.Schema;
valueSchema: Joi.Schema;
outputSchema: Joi.Schema;
},
materialSymbolName?: MaterialSymbolProps["icon"],
availability: OperatorAvailability
}) {
this.schema = Joi.object({ this.schema = Joi.object({
input: inputSchema, input: params.joi.inputSchema,
values: valueSchema.required(), values: params.joi.valueSchema.required(),
output: outputSchema output: params.joi.outputSchema
}).label(label).description(description); }).label(params.joi.label).description(params.joi.description);
this.materialSymbolName = materialSymbolName; this.materialSymbolName = params.materialSymbolName;
this.availability = params.availability;
} }
} }

View File

@ -1,13 +1,18 @@
import { OperatorSchema } from "."; import { OperatorAvailability, OperatorSchema } from ".";
import Joi from "@stirling-tools/joi"; import Joi from "@stirling-tools/joi";
import { JoiPDFFileSchema } from "../wrappers/PdfFileJoi"; import { JoiPDFFileSchema } from "../wrappers/PdfFileJoi";
import i18next from "i18next"; import i18next from "i18next";
export default new OperatorSchema( export default new OperatorSchema({
i18next.t("friendlyName", { ns: "merge" }), joi: {
i18next.t("description", { ns: "merge" }), label: i18next.t("friendlyName", { ns: "merge" }),
JoiPDFFileSchema.label(i18next.t("inputs.pdffile.name")).description(i18next.t("inputs.pdffile.description")), description: i18next.t("description", { ns: "merge" }),
Joi.object({}), inputSchema: JoiPDFFileSchema.label(i18next.t("inputs.pdffile.name")).description(i18next.t("inputs.pdffile.description")),
JoiPDFFileSchema.label(i18next.t("outputs.pdffile.name")).description(i18next.t("outputs.pdffile.description")) valueSchema: Joi.object({}),
outputSchema: JoiPDFFileSchema.label(i18next.t("outputs.pdffile.name")).description(i18next.t("outputs.pdffile.description")),
},
materialSymbolName: "cell_merge",
availability: OperatorAvailability.Both
}
); );

View File

@ -1,17 +1,21 @@
import { OperatorSchema } from "."; import { OperatorAvailability, OperatorSchema } from ".";
import Joi from "@stirling-tools/joi"; import Joi from "@stirling-tools/joi";
import { JoiPDFFileSchema } from "../wrappers/PdfFileJoi"; import { JoiPDFFileSchema } from "../wrappers/PdfFileJoi";
import i18next from "i18next"; import i18next from "i18next";
export default new OperatorSchema( export default new OperatorSchema({
i18next.t("friendlyName", { ns: "removeBlankPages" }), joi: {
i18next.t("description", { ns: "removeBlankPages" }), label: i18next.t("friendlyName", { ns: "removeBlankPages" }),
JoiPDFFileSchema.label(i18next.t("inputs.pdffile.name")).description(i18next.t("inputs.pdffile.description")), description: i18next.t("description", { ns: "removeBlankPages" }),
Joi.object({ inputSchema: JoiPDFFileSchema.label(i18next.t("inputs.pdffile.name")).description(i18next.t("inputs.pdffile.description")),
whiteThreashold: Joi.number().min(0).max(255).required() valueSchema: Joi.object({
.label(i18next.t("values.whiteThreashold.friendlyName", { ns: "removeBlankPages" })).description(i18next.t("values.whiteThreashold.description", { ns: "removeBlankPages" })) whiteThreashold: Joi.number().min(0).max(255).required()
.example("10").example("0").example("255").required() .label(i18next.t("values.whiteThreashold.friendlyName", { ns: "removeBlankPages" })).description(i18next.t("values.whiteThreashold.description", { ns: "removeBlankPages" }))
}), .example("10").example("0").example("255").required()
JoiPDFFileSchema.label(i18next.t("outputs.pdffile.name")).description(i18next.t("outputs.pdffile.description")) }),
); outputSchema: JoiPDFFileSchema.label(i18next.t("outputs.pdffile.name")).description(i18next.t("outputs.pdffile.description")),
},
materialSymbolName: "filter_alt",
availability: OperatorAvailability.Both
});

View File

@ -1,4 +1,4 @@
import { OperatorSchema } from "."; import { OperatorAvailability, OperatorSchema } from ".";
import Joi from "@stirling-tools/joi"; import Joi from "@stirling-tools/joi";
import { JoiPDFFileSchema } from "../wrappers/PdfFileJoi"; import { JoiPDFFileSchema } from "../wrappers/PdfFileJoi";
@ -6,14 +6,18 @@ import i18next from "i18next";
import CommaArrayJoiExt from "../wrappers/CommaArrayJoiExt"; import CommaArrayJoiExt from "../wrappers/CommaArrayJoiExt";
export default new OperatorSchema( export default new OperatorSchema({
i18next.t("friendlyName", { ns: "removePages" }), joi: {
i18next.t("description", { ns: "removePages" }), label: i18next.t("friendlyName", { ns: "removePages" }),
JoiPDFFileSchema.label(i18next.t("inputs.pdffile.name")).description(i18next.t("inputs.pdffile.description")), description: i18next.t("description", { ns: "removePages" }),
Joi.object({ inputSchema: JoiPDFFileSchema.label(i18next.t("inputs.pdffile.name")).description(i18next.t("inputs.pdffile.description")),
pageIndexes: CommaArrayJoiExt.comma_array().items(Joi.number().integer()).required() valueSchema: Joi.object({
.label(i18next.t("values.pageIndexes.friendlyName", { ns: "removePages" })).description(i18next.t("values.pageIndexes.description", { ns: "removePages" })) pageIndexes: CommaArrayJoiExt.comma_array().items(Joi.number().integer()).required()
.example("1").example("1, 2, 3, 4").example("4, 2, 4, 3").required() .label(i18next.t("values.pageIndexes.friendlyName", { ns: "removePages" })).description(i18next.t("values.pageIndexes.description", { ns: "removePages" }))
}), .example("1").example("1, 2, 3, 4").example("4, 2, 4, 3").required()
JoiPDFFileSchema.label(i18next.t("outputs.pdffile.name")).description(i18next.t("outputs.pdffile.description")) }),
); outputSchema: JoiPDFFileSchema.label(i18next.t("outputs.pdffile.name")).description(i18next.t("outputs.pdffile.description")),
},
materialSymbolName: "delete",
availability: OperatorAvailability.Both
});

View File

@ -1,4 +1,4 @@
import { OperatorSchema } from "."; import { OperatorAvailability, OperatorSchema } from ".";
import Joi from "@stirling-tools/joi"; import Joi from "@stirling-tools/joi";
import { JoiPDFFileSchema } from "../wrappers/PdfFileJoi"; import { JoiPDFFileSchema } from "../wrappers/PdfFileJoi";
@ -6,17 +6,21 @@ import i18next from "i18next";
import CommaArrayJoiExt from "../wrappers/CommaArrayJoiExt"; import CommaArrayJoiExt from "../wrappers/CommaArrayJoiExt";
export default new OperatorSchema( export default new OperatorSchema({
i18next.t("friendlyName", { ns: "rotatePages" }), joi: {
i18next.t("description", { ns: "rotatePages" }), label: i18next.t("friendlyName", { ns: "rotatePages" }),
JoiPDFFileSchema.label(i18next.t("inputs.pdffile.name")).description(i18next.t("inputs.pdffile.description")), description: i18next.t("description", { ns: "rotatePages" }),
Joi.object({ inputSchema: JoiPDFFileSchema.label(i18next.t("inputs.pdffile.name")).description(i18next.t("inputs.pdffile.description")),
rotation: Joi.alternatives().try( valueSchema: Joi.object({
Joi.number().integer().min(-360).max(360).required(), rotation: Joi.alternatives().try(
CommaArrayJoiExt.comma_array().items(Joi.number().integer().min(-360).max(360)).required() Joi.number().integer().min(-360).max(360).required(),
) CommaArrayJoiExt.comma_array().items(Joi.number().integer().min(-360).max(360)).required()
.label(i18next.t("values.rotation.friendlyName", { ns: "rotatePages" })).description(i18next.t("values.rotation.description", { ns: "rotatePages" })) )
.example("90").example("-180").example("[90, 0, 270]"), .label(i18next.t("values.rotation.friendlyName", { ns: "rotatePages" })).description(i18next.t("values.rotation.description", { ns: "rotatePages" }))
}), .example("90").example("-180").example("[90, 0, 270]"),
JoiPDFFileSchema.label(i18next.t("outputs.pdffile.name")).description(i18next.t("outputs.pdffile.description")) }),
); outputSchema: JoiPDFFileSchema.label(i18next.t("outputs.pdffile.name")).description(i18next.t("outputs.pdffile.description")),
},
materialSymbolName: "rotate_right",
availability: OperatorAvailability.Both
});

View File

@ -1,4 +1,4 @@
import { OperatorSchema } from "."; import { OperatorAvailability, OperatorSchema } from ".";
import Joi from "@stirling-tools/joi"; import Joi from "@stirling-tools/joi";
import { JoiPDFFileSchema } from "../wrappers/PdfFileJoi"; import { JoiPDFFileSchema } from "../wrappers/PdfFileJoi";
@ -6,17 +6,21 @@ import i18next from "i18next";
import CommaArrayJoiExt from "../wrappers/CommaArrayJoiExt"; import CommaArrayJoiExt from "../wrappers/CommaArrayJoiExt";
export default new OperatorSchema( export default new OperatorSchema({
i18next.t("friendlyName", { ns: "scaleContent" }), joi: {
i18next.t("description", { ns: "scaleContent" }), label: i18next.t("friendlyName", { ns: "scaleContent" }),
JoiPDFFileSchema.label(i18next.t("inputs.pdffile.name")).description(i18next.t("inputs.pdffile.description")), description: i18next.t("description", { ns: "scaleContent" }),
Joi.object({ inputSchema: JoiPDFFileSchema.label(i18next.t("inputs.pdffile.name")).description(i18next.t("inputs.pdffile.description")),
scaleFactor: Joi.alternatives().try( valueSchema: Joi.object({
Joi.number().required(), scaleFactor: Joi.alternatives().try(
CommaArrayJoiExt.comma_array().items(Joi.number()).required() Joi.number().required(),
) CommaArrayJoiExt.comma_array().items(Joi.number()).required()
.label(i18next.t("values.scaleFactor.friendlyName", { ns: "scaleContent" })).description(i18next.t("values.scaleFactor.description", { ns: "scaleContent" })) )
.example("2").example("1.5").example("[1, 1.5, 0.9]"), .label(i18next.t("values.scaleFactor.friendlyName", { ns: "scaleContent" })).description(i18next.t("values.scaleFactor.description", { ns: "scaleContent" }))
}), .example("2").example("1.5").example("[1, 1.5, 0.9]"),
JoiPDFFileSchema.label(i18next.t("outputs.pdffile.name")).description(i18next.t("outputs.pdffile.description")) }),
); outputSchema: JoiPDFFileSchema.label(i18next.t("outputs.pdffile.name")).description(i18next.t("outputs.pdffile.description")),
},
materialSymbolName: "center_focus_strong",
availability: OperatorAvailability.Both
});

View File

@ -1,20 +1,24 @@
import { OperatorSchema } from "."; import { OperatorAvailability, OperatorSchema } from ".";
import Joi from "@stirling-tools/joi"; import Joi from "@stirling-tools/joi";
import { JoiPDFFileSchema } from "../wrappers/PdfFileJoi"; import { JoiPDFFileSchema } from "../wrappers/PdfFileJoi";
import i18next from "i18next"; import i18next from "i18next";
export default new OperatorSchema( export default new OperatorSchema({
i18next.t("friendlyName", { ns: "scalePage" }), joi: {
i18next.t("description", { ns: "scalePage" }), label: i18next.t("friendlyName", { ns: "scalePage" }),
JoiPDFFileSchema.label(i18next.t("inputs.pdffile.name")).description(i18next.t("inputs.pdffile.description")), description: i18next.t("description", { ns: "scalePage" }),
Joi.object({ inputSchema: JoiPDFFileSchema.label(i18next.t("inputs.pdffile.name")).description(i18next.t("inputs.pdffile.description")),
height: Joi.number().min(0) valueSchema: Joi.object({
.label(i18next.t("values.height.friendlyName", { ns: "scalePage" })).description(i18next.t("values.height.description", { ns: "scalePage" })) height: Joi.number().min(0)
.example("842").example("595").example("1190"), .label(i18next.t("values.height.friendlyName", { ns: "scalePage" })).description(i18next.t("values.height.description", { ns: "scalePage" }))
width: Joi.number().min(0) .example("842").example("595").example("1190"),
.label(i18next.t("values.width.friendlyName", { ns: "scalePage" })).description(i18next.t("values.width.description", { ns: "scalePage" })) width: Joi.number().min(0)
.example("595").example("420").example("842"), .label(i18next.t("values.width.friendlyName", { ns: "scalePage" })).description(i18next.t("values.width.description", { ns: "scalePage" }))
}).or("height", "width"), .example("595").example("420").example("842"),
JoiPDFFileSchema.label(i18next.t("outputs.pdffile.name")).description(i18next.t("outputs.pdffile.description")) }).or("height", "width"),
); outputSchema: JoiPDFFileSchema.label(i18next.t("outputs.pdffile.name")).description(i18next.t("outputs.pdffile.description")),
},
materialSymbolName: "zoom_out_map",
availability: OperatorAvailability.Both
});

View File

@ -1,26 +1,30 @@
import { OperatorSchema } from "."; import { OperatorAvailability, OperatorSchema } from ".";
import Joi from "@stirling-tools/joi"; import Joi from "@stirling-tools/joi";
import { JoiPDFFileSchema } from "../wrappers/PdfFileJoi"; import { JoiPDFFileSchema } from "../wrappers/PdfFileJoi";
import i18next from "i18next"; import i18next from "i18next";
export default new OperatorSchema( export default new OperatorSchema({
i18next.t("friendlyName", { ns: "splitPagesByPreset" }), joi: {
i18next.t("description", { ns: "splitPagesByPreset" }), label: i18next.t("friendlyName", { ns: "splitPagesByPreset" }),
JoiPDFFileSchema.label(i18next.t("inputs.pdffile.name")).description(i18next.t("inputs.pdffile.description")), description: i18next.t("description", { ns: "splitPagesByPreset" }),
Joi.alternatives().try( inputSchema: JoiPDFFileSchema.label(i18next.t("inputs.pdffile.name")).description(i18next.t("inputs.pdffile.description")),
Joi.object({ valueSchema: Joi.alternatives().try(
type: Joi.string().valid("BAR_CODE").required()
}),
Joi.object({ Joi.object({
type: Joi.string().valid("QR_CODE").required() type: Joi.string().valid("BAR_CODE").required()
}), }),
Joi.object({ Joi.object({
type: Joi.string().valid("BLANK_PAGE").required(), type: Joi.string().valid("QR_CODE").required()
whiteThreashold: Joi.number().min(0).max(255).required() }),
}), Joi.object({
) type: Joi.string().valid("BLANK_PAGE").required(),
.label(i18next.t("values.splitSettings.friendlyName", { ns: "splitPagesByPreset" })).description(i18next.t("values.splitSettings.description", { ns: "splitPagesByPreset" }) whiteThreashold: Joi.number().min(0).max(255).required()
), }),
JoiPDFFileSchema.label(i18next.t("outputs.pdffile.name")).description(i18next.t("outputs.pdffile.description")) )
); .label(i18next.t("values.splitSettings.friendlyName", { ns: "splitPagesByPreset" })).description(i18next.t("values.splitSettings.description", { ns: "splitPagesByPreset" })
),
outputSchema: JoiPDFFileSchema.label(i18next.t("outputs.pdffile.name")).description(i18next.t("outputs.pdffile.description")),
},
materialSymbolName: "water",
availability: OperatorAvailability.Both
});

View File

@ -1,4 +1,4 @@
import { OperatorSchema } from "."; import { OperatorAvailability, OperatorSchema } from ".";
import Joi from "@stirling-tools/joi"; import Joi from "@stirling-tools/joi";
import { JoiPDFFileSchema } from "../wrappers/PdfFileJoi"; import { JoiPDFFileSchema } from "../wrappers/PdfFileJoi";
@ -6,14 +6,18 @@ import i18next from "i18next";
import CommaArrayJoiExt from "../wrappers/CommaArrayJoiExt"; import CommaArrayJoiExt from "../wrappers/CommaArrayJoiExt";
export default new OperatorSchema( export default new OperatorSchema({
i18next.t("friendlyName", { ns: "splitPdfByIndex" }), joi: {
i18next.t("description", { ns: "splitPdfByIndex" }), label: i18next.t("friendlyName", { ns: "splitPdfByIndex" }),
JoiPDFFileSchema.label(i18next.t("inputs.pdffile.name")).description(i18next.t("inputs.pdffile.description")), description: i18next.t("description", { ns: "splitPdfByIndex" }),
Joi.object({ inputSchema: JoiPDFFileSchema.label(i18next.t("inputs.pdffile.name")).description(i18next.t("inputs.pdffile.description")),
pageIndexes: CommaArrayJoiExt.comma_array().items(Joi.number().integer()).required() valueSchema: Joi.object({
.label(i18next.t("values.pageIndexes.friendlyName", { ns: "splitPdfByIndex" })).description(i18next.t("values.pageIndexes.description", { ns: "splitPdfByIndex" })) pageIndexes: CommaArrayJoiExt.comma_array().items(Joi.number().integer()).required()
.example("1").example("1, 2, 3, 4").example("4, 2, 4, 3") .label(i18next.t("values.pageIndexes.friendlyName", { ns: "splitPdfByIndex" })).description(i18next.t("values.pageIndexes.description", { ns: "splitPdfByIndex" }))
}), .example("1").example("1, 2, 3, 4").example("4, 2, 4, 3")
JoiPDFFileSchema.label(i18next.t("outputs.pdffile.name")).description(i18next.t("outputs.pdffile.description")) }),
); outputSchema: JoiPDFFileSchema.label(i18next.t("outputs.pdffile.name")).description(i18next.t("outputs.pdffile.description")),
},
materialSymbolName: "splitscreen",
availability: OperatorAvailability.Both
});

View File

@ -1,45 +1,49 @@
import { OperatorSchema } from "."; import { OperatorAvailability, OperatorSchema } from ".";
import Joi from "@stirling-tools/joi"; import Joi from "@stirling-tools/joi";
import { JoiPDFFileSchema } from "../wrappers/PdfFileJoi"; import { JoiPDFFileSchema } from "../wrappers/PdfFileJoi";
import i18next from "i18next"; import i18next from "i18next";
export default new OperatorSchema( export default new OperatorSchema({
i18next.t("friendlyName", { ns: "updateMetadata" }), joi: {
i18next.t("description", { ns: "updateMetadata" }), label: i18next.t("friendlyName", { ns: "updateMetadata" }),
JoiPDFFileSchema.label(i18next.t("inputs.pdffile.name")).description(i18next.t("inputs.pdffile.description")), description: i18next.t("description", { ns: "updateMetadata" }),
Joi.object({ inputSchema: JoiPDFFileSchema.label(i18next.t("inputs.pdffile.name")).description(i18next.t("inputs.pdffile.description")),
deleteAll: Joi.boolean().invalid(false) valueSchema: Joi.object({
.label(i18next.t("values.deleteAll.friendlyName", { ns: "updateMetadata" })).description(i18next.t("values.deleteAll.description", { ns: "updateMetadata" })) deleteAll: Joi.boolean().invalid(false)
.example("true").example("false"), .label(i18next.t("values.deleteAll.friendlyName", { ns: "updateMetadata" })).description(i18next.t("values.deleteAll.description", { ns: "updateMetadata" }))
author: Joi.string().optional().allow('') .example("true").example("false"),
.label(i18next.t("values.author.friendlyName", { ns: "updateMetadata" })).description(i18next.t("values.author.description", { ns: "updateMetadata" })) author: Joi.string().optional().allow('')
.example("John Doe").example("Anthony Stirling"), // The author of the document .label(i18next.t("values.author.friendlyName", { ns: "updateMetadata" })).description(i18next.t("values.author.description", { ns: "updateMetadata" }))
creationDate: Joi.date().allow("").allow(null) .example("John Doe").example("Anthony Stirling"), // The author of the document
.label(i18next.t("values.creationDate.friendlyName", { ns: "updateMetadata" })).description(i18next.t("values.creationDate.description", { ns: "updateMetadata" })) creationDate: Joi.date().allow("").allow(null)
.example("YYYY-MM-DD").example("2023-01-27"), // The creation date of the document (format: yyyy/MM/dd HH:mm:ss) .label(i18next.t("values.creationDate.friendlyName", { ns: "updateMetadata" })).description(i18next.t("values.creationDate.description", { ns: "updateMetadata" }))
creator: Joi.string().optional().allow('') .example("YYYY-MM-DD").example("2023-01-27"), // The creation date of the document (format: yyyy/MM/dd HH:mm:ss)
.label(i18next.t("values.creator.friendlyName", { ns: "updateMetadata" })).description(i18next.t("values.creator.description", { ns: "updateMetadata" })) creator: Joi.string().optional().allow('')
.example("John Doe").example("Anthony Stirling"), // The creator of the document .label(i18next.t("values.creator.friendlyName", { ns: "updateMetadata" })).description(i18next.t("values.creator.description", { ns: "updateMetadata" }))
keywords: Joi.string().optional().allow('') .example("John Doe").example("Anthony Stirling"), // The creator of the document
.label(i18next.t("values.keywords.friendlyName", { ns: "updateMetadata" })).description(i18next.t("values.keywords.description", { ns: "updateMetadata" })) keywords: Joi.string().optional().allow('')
.example("General").example("finances, leisure").example("finances leisure"), // The keywords for the document .label(i18next.t("values.keywords.friendlyName", { ns: "updateMetadata" })).description(i18next.t("values.keywords.description", { ns: "updateMetadata" }))
modificationDate: Joi.date().allow("").allow(null) .example("General").example("finances, leisure").example("finances leisure"), // The keywords for the document
.label(i18next.t("values.modificationDate.friendlyName", { ns: "updateMetadata" })).description(i18next.t("values.modificationDate.description", { ns: "updateMetadata" })) modificationDate: Joi.date().allow("").allow(null)
.example("YYYY-MM-DD").example("2023-01-27"), // The modification date of the document (format: yyyy/MM/dd HH:mm:ss) .label(i18next.t("values.modificationDate.friendlyName", { ns: "updateMetadata" })).description(i18next.t("values.modificationDate.description", { ns: "updateMetadata" }))
producer: Joi.string().optional().allow('') .example("YYYY-MM-DD").example("2023-01-27"), // The modification date of the document (format: yyyy/MM/dd HH:mm:ss)
.label(i18next.t("values.producer.friendlyName", { ns: "updateMetadata" })).description(i18next.t("values.producer.description", { ns: "updateMetadata" })) producer: Joi.string().optional().allow('')
.example("John Doe").example("Anthony Stirling"), // The producer of the document .label(i18next.t("values.producer.friendlyName", { ns: "updateMetadata" })).description(i18next.t("values.producer.description", { ns: "updateMetadata" }))
subject: Joi.string().optional().allow('') .example("John Doe").example("Anthony Stirling"), // The producer of the document
.label(i18next.t("values.subject.friendlyName", { ns: "updateMetadata" })).description(i18next.t("values.subject.description", { ns: "updateMetadata" })) subject: Joi.string().optional().allow('')
.example("Subject").example("This is an example Subject."), // The subject of the document .label(i18next.t("values.subject.friendlyName", { ns: "updateMetadata" })).description(i18next.t("values.subject.description", { ns: "updateMetadata" }))
title: Joi.string().optional().allow('') .example("Subject").example("This is an example Subject."), // The subject of the document
.label(i18next.t("values.title.friendlyName", { ns: "updateMetadata" })).description(i18next.t("values.title.description", { ns: "updateMetadata" })) title: Joi.string().optional().allow('')
.example("Title").example("This is an example title."), // The title of the document .label(i18next.t("values.title.friendlyName", { ns: "updateMetadata" })).description(i18next.t("values.title.description", { ns: "updateMetadata" }))
.example("Title").example("This is an example title."), // The title of the document
// TODO: trapped?: string, // The trapped status of the document
// TODO: trapped?: string, // The trapped status of the document
// TODO: allRequestParams?: {[key: string]: [key: string]}, // Map list of key and value of custom parameters. Note these must start with customKey and customValue if they are non-standard
}), // TODO: allRequestParams?: {[key: string]: [key: string]}, // Map list of key and value of custom parameters. Note these must start with customKey and customValue if they are non-standard
JoiPDFFileSchema.label(i18next.t("outputs.pdffile.name")).description(i18next.t("outputs.pdffile.description")) }),
); outputSchema:JoiPDFFileSchema.label(i18next.t("outputs.pdffile.name")).description(i18next.t("outputs.pdffile.description")),
},
materialSymbolName: "description",
availability: OperatorAvailability.Both
});