feat(planning): grille hebdomadaire complète avec API et filtres
- Connexion API via proxy Angular (résolution CORS, base path /api) - Import CSS ng-zorro global pour les modales et composants - Filtres Camion/Show câblés sur l'affichage de la grille - Camions affichés via TrucksService (linkés au show du même créneau) - Panneau de détails : spectacles + camions du jour sélectionné - Modale de création de spectacle stylisée avec fond et centrage - Positionnement précis des events à la minute dans leur créneau - Auto-scroll vers l'heure courante au chargement - Ligne "maintenant" sur la colonne du jour actuel - Régénération des services OpenAPI (nouveaux noms de types) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+31
-86
@@ -1,5 +1,4 @@
|
||||
import * as checks from "./checks.js";
|
||||
import * as registries from "./registries.js";
|
||||
import * as schemas from "./schemas.js";
|
||||
import * as util from "./util.js";
|
||||
export function _string(Class, params) {
|
||||
@@ -162,15 +161,6 @@ export function _ipv6(Class, params) {
|
||||
...util.normalizeParams(params),
|
||||
});
|
||||
}
|
||||
export function _mac(Class, params) {
|
||||
return new Class({
|
||||
type: "string",
|
||||
format: "mac",
|
||||
check: "string_format",
|
||||
abort: false,
|
||||
...util.normalizeParams(params),
|
||||
});
|
||||
}
|
||||
export function _cidrv4(Class, params) {
|
||||
return new Class({
|
||||
type: "string",
|
||||
@@ -617,10 +607,6 @@ export function _toLowerCase() {
|
||||
export function _toUpperCase() {
|
||||
return _overwrite((input) => input.toUpperCase());
|
||||
}
|
||||
// slugify
|
||||
export function _slugify() {
|
||||
return _overwrite((input) => util.slugify(input));
|
||||
}
|
||||
export function _array(Class, element, params) {
|
||||
return new Class({
|
||||
type: "array",
|
||||
@@ -761,7 +747,7 @@ export function _default(Class, innerType, defaultValue) {
|
||||
type: "default",
|
||||
innerType,
|
||||
get defaultValue() {
|
||||
return typeof defaultValue === "function" ? defaultValue() : util.shallowClone(defaultValue);
|
||||
return typeof defaultValue === "function" ? defaultValue() : defaultValue;
|
||||
},
|
||||
});
|
||||
}
|
||||
@@ -828,6 +814,13 @@ export function _custom(Class, fn, _params) {
|
||||
});
|
||||
return schema;
|
||||
}
|
||||
// export function _refine<T>(
|
||||
// Class: util.SchemaClass<schemas.$ZodCustom>,
|
||||
// fn: (arg: NoInfer<T>) => util.MaybeAsync<unknown>,
|
||||
// _params: string | $ZodCustomParams = {}
|
||||
// ): checks.$ZodCheck<T> {
|
||||
// return _custom(Class, fn, _params);
|
||||
// }
|
||||
// same as _custom but defaults to abort:false
|
||||
export function _refine(Class, fn, _params) {
|
||||
const schema = new Class({
|
||||
@@ -838,58 +831,6 @@ export function _refine(Class, fn, _params) {
|
||||
});
|
||||
return schema;
|
||||
}
|
||||
export function _superRefine(fn) {
|
||||
const ch = _check((payload) => {
|
||||
payload.addIssue = (issue) => {
|
||||
if (typeof issue === "string") {
|
||||
payload.issues.push(util.issue(issue, payload.value, ch._zod.def));
|
||||
}
|
||||
else {
|
||||
// for Zod 3 backwards compatibility
|
||||
const _issue = issue;
|
||||
if (_issue.fatal)
|
||||
_issue.continue = false;
|
||||
_issue.code ?? (_issue.code = "custom");
|
||||
_issue.input ?? (_issue.input = payload.value);
|
||||
_issue.inst ?? (_issue.inst = ch);
|
||||
_issue.continue ?? (_issue.continue = !ch._zod.def.abort); // abort is always undefined, so this is always true...
|
||||
payload.issues.push(util.issue(_issue));
|
||||
}
|
||||
};
|
||||
return fn(payload.value, payload);
|
||||
});
|
||||
return ch;
|
||||
}
|
||||
export function _check(fn, params) {
|
||||
const ch = new checks.$ZodCheck({
|
||||
check: "custom",
|
||||
...util.normalizeParams(params),
|
||||
});
|
||||
ch._zod.check = fn;
|
||||
return ch;
|
||||
}
|
||||
export function describe(description) {
|
||||
const ch = new checks.$ZodCheck({ check: "describe" });
|
||||
ch._zod.onattach = [
|
||||
(inst) => {
|
||||
const existing = registries.globalRegistry.get(inst) ?? {};
|
||||
registries.globalRegistry.add(inst, { ...existing, description });
|
||||
},
|
||||
];
|
||||
ch._zod.check = () => { }; // no-op check
|
||||
return ch;
|
||||
}
|
||||
export function meta(metadata) {
|
||||
const ch = new checks.$ZodCheck({ check: "meta" });
|
||||
ch._zod.onattach = [
|
||||
(inst) => {
|
||||
const existing = registries.globalRegistry.get(inst) ?? {};
|
||||
registries.globalRegistry.add(inst, { ...existing, ...metadata });
|
||||
},
|
||||
];
|
||||
ch._zod.check = () => { }; // no-op check
|
||||
return ch;
|
||||
}
|
||||
export function _stringbool(Classes, _params) {
|
||||
const params = util.normalizeParams(_params);
|
||||
let truthyArray = params.truthy ?? ["true", "1", "yes", "on", "y", "enabled"];
|
||||
@@ -900,16 +841,13 @@ export function _stringbool(Classes, _params) {
|
||||
}
|
||||
const truthySet = new Set(truthyArray);
|
||||
const falsySet = new Set(falsyArray);
|
||||
const _Codec = Classes.Codec ?? schemas.$ZodCodec;
|
||||
const _Pipe = Classes.Pipe ?? schemas.$ZodPipe;
|
||||
const _Boolean = Classes.Boolean ?? schemas.$ZodBoolean;
|
||||
const _String = Classes.String ?? schemas.$ZodString;
|
||||
const stringSchema = new _String({ type: "string", error: params.error });
|
||||
const booleanSchema = new _Boolean({ type: "boolean", error: params.error });
|
||||
const codec = new _Codec({
|
||||
type: "pipe",
|
||||
in: stringSchema,
|
||||
out: booleanSchema,
|
||||
transform: ((input, payload) => {
|
||||
const _Transform = Classes.Transform ?? schemas.$ZodTransform;
|
||||
const tx = new _Transform({
|
||||
type: "transform",
|
||||
transform: (input, payload) => {
|
||||
let data = input;
|
||||
if (params.case !== "sensitive")
|
||||
data = data.toLowerCase();
|
||||
@@ -925,23 +863,30 @@ export function _stringbool(Classes, _params) {
|
||||
expected: "stringbool",
|
||||
values: [...truthySet, ...falsySet],
|
||||
input: payload.value,
|
||||
inst: codec,
|
||||
continue: false,
|
||||
inst: tx,
|
||||
});
|
||||
return {};
|
||||
}
|
||||
}),
|
||||
reverseTransform: ((input, _payload) => {
|
||||
if (input === true) {
|
||||
return truthyArray[0] || "true";
|
||||
}
|
||||
else {
|
||||
return falsyArray[0] || "false";
|
||||
}
|
||||
},
|
||||
error: params.error,
|
||||
});
|
||||
// params.error;
|
||||
const innerPipe = new _Pipe({
|
||||
type: "pipe",
|
||||
in: new _String({ type: "string", error: params.error }),
|
||||
out: tx,
|
||||
error: params.error,
|
||||
});
|
||||
const outerPipe = new _Pipe({
|
||||
type: "pipe",
|
||||
in: innerPipe,
|
||||
out: new _Boolean({
|
||||
type: "boolean",
|
||||
error: params.error,
|
||||
}),
|
||||
error: params.error,
|
||||
});
|
||||
return codec;
|
||||
return outerPipe;
|
||||
}
|
||||
export function _stringFormat(Class, format, fnOrRegex, _params = {}) {
|
||||
const params = util.normalizeParams(_params);
|
||||
|
||||
Reference in New Issue
Block a user