Aller au contenu
SurfaceDocs
ENCommencer
DocsRéférence du Model

WorkspaceExactData · types

Interfaces, valeurs et contrats nommés de WorkspaceExactData.

Les types ci-dessous définissent les objets nommés et leurs relations. Les propriétés héritées sont incluses dans les tableaux. Les types dérivés d’un schéma renvoient à sa structure; une déclaration TypeScript ne remplace pas les contrôles sémantiques du compilateur.

ManagedExactDataValueType

Declared numeric value type and unit used to type the expression program.

export type ManagedExactDataValueType = z.infer<typeof managedExactDataValueTypeSchema>;

ManagedExactDataExpression

Typed numeric syntax has no scripts, arbitrary function names or unregistered conversion operators.

export type ManagedExactDataExpression =
  | { kind: 'literal'; type: ManagedExactDataValueType; value: string }
  | { kind: 'field'; type: ManagedExactDataValueType; field: ExactFieldReference }
  | { kind: 'calculation'; type: ManagedExactDataValueType; key: string }
  | {
      kind: 'arithmetic';
      operator: 'add' | 'subtract' | 'multiply' | 'divide';
      left: ManagedExactDataExpression;
      right: ManagedExactDataExpression;
      type: ManagedExactDataValueType;
      rounding: Rounding | null;
      unitOperation: { key: string; version: string } | null;
    }
  | {
      kind: 'round';
      operand: ManagedExactDataExpression;
      type: ManagedExactDataValueType;
      rounding: Rounding;
    }
  | {
      kind: 'conditional';
      condition: ManagedExactDataPredicate;
      whenTrue: ManagedExactDataExpression;
      whenFalse: ManagedExactDataExpression;
      type: ManagedExactDataValueType;
    }
  | {
      kind: 'conversion';
      conversionKey: string;
      conversionVersion: string;
      operand: ManagedExactDataExpression;
      type: ManagedExactDataValueType;
    }
  | {
      kind: 'query-total';
      queryKey: string;
      parameters: Record<string, z.infer<typeof workspaceQueryBindingSchema>>;
      operator: 'count' | 'count-distinct';
      type: ManagedExactDataValueType;
    }
  | {
      kind: 'aggregate';
      queryKey: string;
      parameters: Record<string, z.infer<typeof workspaceQueryBindingSchema>>;
      field: ExactFieldReference;
      operator: 'sum' | 'min' | 'max' | 'average';
      type: ManagedExactDataValueType;
      rounding: Rounding | null;
    };

ManagedExactDataPredicate

Boolean conditions compare typed exact values; truthiness never substitutes for an explicit comparison.

Champ Options / valeurs attendues Description
kind "compare" Requis. Sélectionne la variante et les propriétés admises dans cette branche.
operator "eq" | "ne" | "lt" | "lte" | "gt" | "gte" Requis. Comparaison ou opération de la variante; la valeur doit correspondre au type attendu.
left ManagedExactDataExpression Requis. Définit « left » pour cet objet. Respecter le type, les variantes et les limites de la colonne Options.
right ManagedExactDataExpression Requis. Définit « right » pour cet objet. Respecter le type, les variantes et les limites de la colonne Options.
export interface ManagedExactDataPredicate {
  kind: 'compare';
  operator: 'eq' | 'ne' | 'lt' | 'lte' | 'gt' | 'gte';
  left: ManagedExactDataExpression;
  right: ManagedExactDataExpression;
}

WorkspaceExactData

Admitted units, conversions and calculations; evaluation belongs to the shared numeric engine.

export type WorkspaceExactData = z.infer<typeof workspaceExactDataSchema>;

Toutes les références

Exemples appliqués : Texte requis et choix métier

Entreprise utilise une saisie texte obligatoire; État réutilise une liste de valeurs déclarées.

Configuration

Fragment à placer dans forms[].fields[]. Propriétés et valeurs admises.

{
  "contract": "WorkspaceFormControl@2",
  "repeatable": false,
  "key": "company",
  "label": "Entreprise",
  "input": "text",
  "binding": {
    "kind": "field",
    "fieldKey": "company"
  },
  "required": true,
  "ruleKeys": [],
  "options": []
}

Variante et raccordement

Fragment à placer dans forms[].fields[]. Propriétés et valeurs admises.

{
  "contract": "WorkspaceFormControl@2",
  "repeatable": false,
  "key": "status",
  "label": "État",
  "input": "choice",
  "binding": {
    "kind": "field",
    "fieldKey": "status"
  },
  "required": true,
  "ruleKeys": [],
  "options": [
    "prospect",
    "active"
  ]
}

Exemple de disposition UI

La disposition illustrative ci-dessous situe cette configuration dans l’app Clients/Soumissions. Chaque fragment s’insère à l’emplacement indiqué; ses références aux Fields, Queries et Actions correspondent aux déclarations du Model.

  1. Identité du client
  2. Notes et suivi
  3. Paramètres
  4. Soumissions liées
DISPOSITION ILLUSTRATIVEApp Clients / Soumissions
SurfaceClients / Atelier NordExemple
WorkspaceExactData · typesTexte requis et choix métier
Clients
AN
Atelier NordClient actif · Services professionnels
ÉtatActif
Notes et suivi

Le client souhaite préparer une proposition pour son nouveau projet. Préciser les besoins et confirmer le budget avant la revue.

Texte éditable dans la Surface
Paramètres de la fiche
Recherchez un concept, un champ ou une action.Esc