From d5063f484141c27289b5d25fb7e35fa1ad892877 Mon Sep 17 00:00:00 2001
From: Haythem Mekki <149381807+Haythem148@users.noreply.github.com>
Date: Fri, 2 May 2025 17:12:09 +0200
Subject: [PATCH 1/2] HIT-451 Take inline button in consideration for columns
width calculation
---
.../lib/components/ui/core-grid/grid/grid.component.ts | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/libs/shared/src/lib/components/ui/core-grid/grid/grid.component.ts b/libs/shared/src/lib/components/ui/core-grid/grid/grid.component.ts
index bd97620582..f369a8b1ff 100644
--- a/libs/shared/src/lib/components/ui/core-grid/grid/grid.component.ts
+++ b/libs/shared/src/lib/components/ui/core-grid/grid/grid.component.ts
@@ -1065,6 +1065,10 @@ export class GridComponent
if (this.selectable) {
totalWidthSticky += 41;
}
+ // ADD THIS BLOCK: include inline action button column width if present
+ if (this.inlineActionButtons.length > 0) {
+ totalWidthSticky += this.floatingButtonsWidth;
+ }
// Hide the columns that are hidden by default
const hiddenFields = this.fields.filter((field) => field.hiddenByDefault);
hiddenFields.forEach((field) => {
@@ -1298,6 +1302,10 @@ export class GridComponent
column.width = MIN_COLUMN_WIDTH;
}
});
+
+ if (this.inlineActionButtons.length > 0) {
+ totalWidthSticky += this.floatingButtonsWidth;
+ }
}
/** Restore all columns visibility and size when reset the layout of the grid */
From c9ec92efdc5635cd038a001f87ccabfe10d00c03 Mon Sep 17 00:00:00 2001
From: Haythem Mekki <149381807+Haythem148@users.noreply.github.com>
Date: Fri, 9 May 2025 15:58:07 +0200
Subject: [PATCH 2/2] Initial changes for HIT-452 form redirection
---
.../pages/form/form.component.html | 3 +-
.../application/pages/form/form.component.ts | 69 +-
.../application/pages/form/graphql/queries.ts | 1 +
.../view-settings-modal.component.html | 17 +
.../view-settings-modal.component.ts | 40 +-
.../src/environments/environment.ts | 2 +-
.../src/environments/environment.oort.dev.ts | 13 +
.../src/environments/environment.ts | 23 +-
.../src/environments/environment.type.ts | 1 +
libs/shared/src/i18n/en.json | 6 +-
libs/shared/src/i18n/fr.json | 2900 -----------------
libs/shared/src/i18n/test.json | 4 +-
.../lib/components/pages/graphql/queries.ts | 38 +
.../form-settings/form-settings.component.ts | 4 +-
libs/shared/src/lib/models/page.model.ts | 2 +
.../application/application.service.ts | 29 +
.../services/application/graphql/mutations.ts | 5 +
.../services/application/graphql/queries.ts | 1 +
18 files changed, 241 insertions(+), 2917 deletions(-)
delete mode 100644 libs/shared/src/i18n/fr.json
create mode 100644 libs/shared/src/lib/components/pages/graphql/queries.ts
diff --git a/apps/back-office/src/app/application/pages/form/form.component.html b/apps/back-office/src/app/application/pages/form/form.component.html
index 3470c57603..e9bdb1ac4b 100644
--- a/apps/back-office/src/app/application/pages/form/form.component.html
+++ b/apps/back-office/src/app/application/pages/form/form.component.html
@@ -46,7 +46,8 @@
-
+
+
{
+ const targetPage = await this.getPageById(redirectId);
+ const targetType = targetPage?.type ?? 'form';
+ this.router.navigate([
+ '/applications',
+ this.applicationId,
+ targetType,
+ redirectId,
+ ]);
+ })();
+ } else {
+ this.workflowService.nextStep.emit();
+ }
+
+ return;
+ }
+
+ // If it's a page and has redirect
+ if (!this.isStep && this.page?.redirectTo) {
+ const redirectId = this.page.redirectTo;
+
+ (async () => {
+ const targetPage = await this.getPageById(redirectId);
+ const targetType = targetPage?.type ?? 'form';
+ this.router.navigate([
+ '/applications',
+ this.applicationId,
+ targetType,
+ redirectId,
+ ]);
+ })();
+
+ return;
+ }
+
+ // Otherwise, show completion
this.completed = e.completed;
- this.hideNewRecord = e.hideNewRecord || false;
+ }
- // Checks if should go to next step if in an workflow
- if (this.step?.nextStepOnSave) {
- this.workflowService.nextStep.emit();
+ //** Get Pagge by id to check the type of it */
+ private async getPageById(id: string): Promise
{
+ try {
+ const result = await this.apollo
+ .query({
+ query: GET_PAGE_BY_ID,
+ variables: { id },
+ fetchPolicy: 'network-only',
+ })
+ .toPromise();
+
+ return result?.data?.page; // safely access page
+ } catch (error) {
+ console.error('Failed to fetch page by ID:', error);
+ return undefined;
}
}
-
+
/**
* Clear status of the form.
*/
@@ -311,4 +369,5 @@ export class FormComponent extends UnsubscribeComponent implements OnInit {
subscription?.unsubscribe();
});
}
+
}
diff --git a/apps/back-office/src/app/application/pages/form/graphql/queries.ts b/apps/back-office/src/app/application/pages/form/graphql/queries.ts
index 31bccd23af..d57de23607 100644
--- a/apps/back-office/src/app/application/pages/form/graphql/queries.ts
+++ b/apps/back-office/src/app/application/pages/form/graphql/queries.ts
@@ -78,6 +78,7 @@ export const GET_PAGE_BY_ID = gql`
canSee
canUpdate
canDelete
+ redirectTo
}
}
`;
diff --git a/apps/back-office/src/app/components/view-settings-modal/view-settings-modal.component.html b/apps/back-office/src/app/components/view-settings-modal/view-settings-modal.component.html
index 2b4fa2f786..04ec756953 100644
--- a/apps/back-office/src/app/components/view-settings-modal/view-settings-modal.component.html
+++ b/apps/back-office/src/app/components/view-settings-modal/view-settings-modal.component.html
@@ -80,6 +80,23 @@
>
+
+
+
+
+
+ {{ 'common.none' | translate }}
+
+
+ {{ p.name }}
+
+
+
diff --git a/apps/back-office/src/app/components/view-settings-modal/view-settings-modal.component.ts b/apps/back-office/src/app/components/view-settings-modal/view-settings-modal.component.ts
index 7049320b61..c397af9a2d 100644
--- a/apps/back-office/src/app/components/view-settings-modal/view-settings-modal.component.ts
+++ b/apps/back-office/src/app/components/view-settings-modal/view-settings-modal.component.ts
@@ -113,6 +113,8 @@ export class ViewSettingsModalComponent
public showFilter!: boolean;
/** Grid type */
public gridType = GridType;
+ /** All pages for this application */
+ public pages: { id: string; name: string }[] = [];
/**
* Common settings of pages / steps.
@@ -148,6 +150,21 @@ export class ViewSettingsModalComponent
this.settingsForm.disable();
}
+ // Add logging to debug valueChanges
+ this.settingsForm.controls.redirectTo.valueChanges
+ .pipe(takeUntil(this.destroy$))
+ .subscribe((value: string | null) => {
+ console.log('redirectTo valueChanges:', value);
+ this.onUpdateRedirectTo(value);
+ });
+
+ // populate dropdown
+ this.applicationService.pages$
+ .pipe(takeUntil(this.destroy$))
+ .subscribe((pages) => {
+ this.pages = pages.map((p: any) => ({ id: p.id, name: p.name }));
+ });
+
// Listen to icon updates
this.settingsForm?.controls.icon.valueChanges
.pipe(takeUntil(this.destroy$))
@@ -261,9 +278,12 @@ export class ViewSettingsModalComponent
*/
private createSettingsForm() {
return this.fb.group({
- // initializes icon field with data info
icon: this.fb.control(this.data.icon ?? ''),
visible: this.fb.control(this.data.visible ?? true),
+ redirectTo: this.fb.control(
+ (this.data.page as Page)?.redirectTo ?? null,
+ { updateOn: 'blur' }
+ ),
...(this.dashboard && {
gridOptions: this.fb.group({
minCols: this.fb.control(
@@ -397,4 +417,22 @@ export class ViewSettingsModalComponent
callback
);
}
+
+ /** Called whenever the dropdown changes */
+ public onUpdateRedirectTo(value: string | null) {
+ console.log('onUpdateRedirectTo called with:', value);
+ if (this.data.type === 'page' && this.data.page) {
+ const page = this.data.page;
+ console.log('Calling updatePageRedirectTo with page:', page);
+ this.applicationService.updatePageRedirectTo(
+ page,
+ value,
+ () => {
+ console.log('updatePageRedirectTo callback success');
+ page.redirectTo = value ?? undefined;
+ this.onUpdate.emit({ redirectTo: value });
+ }
+ );
+ }
+ }
}
diff --git a/apps/back-office/src/environments/environment.ts b/apps/back-office/src/environments/environment.ts
index e7992df745..4749dc0081 100644
--- a/apps/back-office/src/environments/environment.ts
+++ b/apps/back-office/src/environments/environment.ts
@@ -7,7 +7,7 @@ import { Environment } from './environment.type';
* Authentication configuration
*/
const authConfig: AuthConfig = {
- issuer: 'https://id-mab.unesco.oortcloud.tech/realms/oort',
+ issuer: 'https://id-dev.oortcloud.tech/realms/oort',
redirectUri: 'http://localhost:4200/',
postLogoutRedirectUri: 'http://localhost:4200/auth/',
clientId: 'oort-client',
diff --git a/apps/front-office/src/environments/environment.oort.dev.ts b/apps/front-office/src/environments/environment.oort.dev.ts
index cbe5564be8..2fe431a668 100644
--- a/apps/front-office/src/environments/environment.oort.dev.ts
+++ b/apps/front-office/src/environments/environment.oort.dev.ts
@@ -25,4 +25,17 @@ export const environment: Environment = {
availableLanguages: ['en', 'fr', 'test'],
authConfig,
theme,
+ availableWidgets: [
+ 'form',
+ 'donut-chart',
+ 'line-chart',
+ 'bar-chart',
+ 'column-chart',
+ 'pie-chart',
+ 'grid',
+ 'text',
+ 'map',
+ 'summaryCard',
+ 'tabs',
+ ],
};
diff --git a/apps/front-office/src/environments/environment.ts b/apps/front-office/src/environments/environment.ts
index 40d6817895..3f473da9e9 100644
--- a/apps/front-office/src/environments/environment.ts
+++ b/apps/front-office/src/environments/environment.ts
@@ -2,10 +2,9 @@ import { AuthConfig } from 'angular-oauth2-oidc';
import { theme } from '../themes/default/default.local';
import { sharedEnvironment } from './environment.shared';
import { Environment } from './environment.type';
-
/** Authentication configuration of the module. */
const authConfig: AuthConfig = {
- issuer: 'https://id-mab.unesco.oortcloud.tech/realms/oort',
+ issuer: 'https://id-dev.oortcloud.tech/realms/oort',
redirectUri: 'http://localhost:4200/',
postLogoutRedirectUri: 'http://localhost:4200/auth/',
clientId: 'oort-client',
@@ -13,11 +12,12 @@ const authConfig: AuthConfig = {
responseType: 'code',
showDebugInformation: true,
};
-
-/** Environment configuration */
+/**
+ * Environment file for local development.
+ */
export const environment: Environment = {
...sharedEnvironment,
- production: false,
+ production: true,
apiUrl: 'http://localhost:3000',
subscriptionApiUrl: 'ws://localhost:3000',
frontOfficeUri: 'http://localhost:4200/',
@@ -25,4 +25,17 @@ export const environment: Environment = {
availableLanguages: ['en', 'fr', 'test'],
authConfig,
theme,
+ availableWidgets: [
+ 'form',
+ 'donut-chart',
+ 'line-chart',
+ 'bar-chart',
+ 'column-chart',
+ 'pie-chart',
+ 'grid',
+ 'text',
+ 'map',
+ 'summaryCard',
+ 'tabs',
+ ],
};
diff --git a/apps/front-office/src/environments/environment.type.ts b/apps/front-office/src/environments/environment.type.ts
index 2c02bbc227..76b6a714b1 100644
--- a/apps/front-office/src/environments/environment.type.ts
+++ b/apps/front-office/src/environments/environment.type.ts
@@ -20,6 +20,7 @@ export interface Environment {
backOfficeUri: string;
availableLanguages: string[];
authConfig: AuthConfig;
+ availableWidgets: string[];
esriApiKey: string;
theme: any;
sentry?: any;
diff --git a/libs/shared/src/i18n/en.json b/libs/shared/src/i18n/en.json
index 282a800b41..f18d57ab18 100644
--- a/libs/shared/src/i18n/en.json
+++ b/libs/shared/src/i18n/en.json
@@ -454,7 +454,9 @@
"semicolon": "semicolon",
"send": "Send",
"separator": "Separator",
- "settings": "Settings",
+ "settings": {
+ "redirectAfterSubmission": "Redirect After Submission"
+ },
"status": "Status",
"status_active": "Active",
"status_archived": "Archived",
@@ -1854,7 +1856,7 @@
"selectDistributionList": "Select the distribution list that will set recipients of the email",
"selectTemplates": "Select the email templates users will be allowed to choose from when using the action"
},
- "notify": "When enabled, you must provide a channel and a message. All selected rows will be sent as a single notification on the specified channel. The provided message is used to define the notification’s action",
+ "notify": "When enabled, you must provide a channel and a message. All selected rows will be sent as a single notification on the specified channel. The provided message is used to define the notification's action",
"publish": "When enabled, you must provide a channel. All selected rows will be sent as a single publication on the specified channel. Everyone listening to this channel can receive the records"
}
},
diff --git a/libs/shared/src/i18n/fr.json b/libs/shared/src/i18n/fr.json
deleted file mode 100644
index cc7a37858c..0000000000
--- a/libs/shared/src/i18n/fr.json
+++ /dev/null
@@ -1,2900 +0,0 @@
-{
- "common": {
- "access": "Accès",
- "accessDenied": "Accès refusé",
- "account": "Compte",
- "actions": "Actions",
- "add": "Ajouter",
- "adminField": "Champ administrateur",
- "aggregation": {
- "add": "Ajouter une agrégation",
- "few": "Agrégations",
- "none": "Aucune agrégation",
- "one": "Agrégation"
- },
- "apiConfiguration": {
- "few": "Configurations d'API",
- "none": "Aucune configuration d'API",
- "one": "Configuration d'API"
- },
- "application": {
- "few": "Applications",
- "none": "Aucune application",
- "one": "Application"
- },
- "archive": {
- "delete": "Supprimer",
- "few": "Archives",
- "modal": {
- "delete": {
- "action": "Supprimer",
- "confirmationMessage": "Voulez-vous supprimer l'archive {{name}}?",
- "title": "Supprimer?"
- },
- "restore": {
- "action": "Restaurer",
- "confirmationMessage": "Voulez-vous restaurer {{name}}?",
- "title": "Restaurer?"
- }
- },
- "none": "Aucun élément archivé",
- "restore": "Restaurer"
- },
- "ariaLabel": {
- "search": {
- "clear": "Supprimer la recherche"
- }
- },
- "asc": "Croissant",
- "attribute": {
- "few": "Attributs",
- "none": "Aucun attribut",
- "one": "Attribut"
- },
- "auto": "Automatique",
- "back": "Retour",
- "bookmarks": "Marque-pages",
- "calculatedField": {
- "few": "Champs dérivés",
- "none": "Aucun champ dérivé",
- "one": "Champ dérivé"
- },
- "cancel": "Annuler",
- "channel": {
- "few": "Canaux de diffusion",
- "none": "Aucun canal de diffusion",
- "one": "Canal de diffusion"
- },
- "child": {
- "edit": "Modifier l'enfant",
- "one": "Enfant"
- },
- "clear": "Annuler",
- "close": "Fermer",
- "collaboration": "Commentaires",
- "column": {
- "few": "Colonnes",
- "none": "Aucune colonne",
- "one": "Colonne"
- },
- "comma": "virgule",
- "copy": "Copier",
- "create": "Créer",
- "createdOn": "Date de création",
- "cronEditor": {
- "advanced": "Avancé",
- "atTime": "À",
- "daily": "Quotidien",
- "day": "Jour",
- "days": "Jour(s)",
- "every": {
- "feminine": "Toutes les",
- "masculine": "Tous les"
- },
- "firstWeekDay": "Premier jour de la semaine",
- "hourly": "Horaire",
- "hours": "Heure(s)",
- "lastDay": "Dernier jour",
- "lastWeekDay": "Dernier jour de la semaine",
- "minutely": "Chaque minute",
- "minutes": "Minute(s)",
- "month": "Mois",
- "monthly": "Mensuel",
- "months": {
- "april": "Avril",
- "august": "Août",
- "december": "Décembre",
- "february": "Février",
- "january": "Janvier",
- "july": "Juillet",
- "june": "Juin",
- "march": "Mars",
- "may": "Mai",
- "november": "Novembre",
- "october": "Octobre",
- "september": "Septembre"
- },
- "of": "du",
- "ofEvery": "de chaque",
- "onThe": {
- "feminine": "Pendant la",
- "masculine": "Pendant le"
- },
- "question": {
- "one": "Question"
- },
- "seconds": "Seconde(s)",
- "week": "Semaine",
- "weekDay": "Jour de la semaine (LUN-VEN)",
- "weekDays": {
- "friday": "Vendredi",
- "monday": "Lundi",
- "saturday": "Samedi",
- "sunday": "Dimanche",
- "thursday": "Jeudi",
- "tuesday": "Mardi",
- "wednesday": "Mercredi"
- },
- "weekNumber": {
- "fifth": "Cinquième",
- "first": "Première",
- "fourth": "Quatrième",
- "last": "Dernière",
- "second": "Deuxième",
- "third": "Troisième"
- },
- "weekly": "Hebdomadaire",
- "yearly": "Annuel"
- },
- "customNotification": {
- "few": "Notifications",
- "none": "Aucune notification",
- "one": "Notification"
- },
- "dashboard": {
- "few": "Tableaux de bord",
- "none": "Aucun tableau de bord",
- "one": "Tableau de bord"
- },
- "dataStudio": {
- "dataGeneration": {
- "few": "Génération de données",
- "fieldType": "Type de champ : ",
- "fieldsTooltip": "Liste des champs du formulaire pour lesquels des données doivent être générées. Sélectionnez les champs que vous souhaitez inclure en cochant les cases correspondantes. Vous pouvez également voir le type de champ et la source de génération et choisir entre plusieurs sources de génération dans certains cas.",
- "generate": "Générer",
- "generationNotPossible": "Les valeurs de ce type de champ ne peuvent pas être générées.",
- "generationSource": "Source de génération : ",
- "map": {
- "boolean": "Vrai ou faux au hasard",
- "checkbox": "Choix aléatoire des questions",
- "color": "Couleur aléatoire",
- "date": "Date aléatoire",
- "datetimelocal": "Date et heure aléatoires",
- "dropdown": "Choix aléatoire des questions",
- "email": "Courriel aléatoire",
- "expression": "Valeur de l'expression résolue",
- "geospatial": "Emplacement aléatoire",
- "matrix": "Sélection aléatoire pour chaque ligne",
- "matrixdropdown": "Génération aléatoire pour chaque type de colonne pour chaque ligne",
- "matrixdynamic": "Génération aléatoire pour chaque type de colonne pour chaque ligne",
- "month": "Mois aléatoire",
- "multipletext": "Ligne aléatoire pour chaque champ de texte",
- "numeric": "Nombre aléatoire",
- "owner": "Rôles aléatoires à partir de l'application présélectionnée",
- "paneldynamic": "Générez 1 à 5 entrées pour chaque panneau",
- "password": "Mot de passe aléatoire",
- "radiogroup": "Choix aléatoire des questions",
- "range": "Plage aléatoire (0 à 100)",
- "resource": "Enregistrement aléatoire de la ressource",
- "resources": "Enregistrements aléatoires de la ressource",
- "sentence": "Phrase aléatoire",
- "tagbox": "Choix aléatoire des questions",
- "tel": "Numéro de téléphone aléatoire",
- "text": "Texte aléatoire",
- "time": "Temps aléatoire",
- "url": "URL aléatoire",
- "users": "Utilisateurs aléatoires",
- "week": "Semaine aléatoire"
- },
- "maxDate": "Date maximale (facultatif)",
- "maxNumber": "Nombre maximal (facultatif)",
- "maxTime": "Heure maximale (facultatif)",
- "minDate": "Date minimale (facultatif)",
- "minNumber": "Nombre minimal (facultatif)",
- "minTime": "Heure minimale (facultatif)",
- "phoneFormat": "Format de numéro de téléphone (facultatif)",
- "recordsNumber": "Nombre d'enregistrements (max : 50)",
- "selectAll": "Sélectionner tout",
- "setDefault": "Définir la valeur par défaut",
- "setDefaultTooltip": "Laissez cette option désactivée pour générer des données aléatoires pour le champ. Si vous souhaitez définir une valeur par défaut pour le champ, activez cette option et remplissez le questionnaire.",
- "textType": "Type de données",
- "tooltips": {
- "phone": "Utilisez # comme espace réservé pour les chiffres. Par exemple : +33 ### ## ## ##"
- }
- },
- "few": "Data Studio"
- },
- "delete": "Supprimer",
- "deleteObject": "Supprimer {{name}}",
- "deleted": "Supprimé",
- "desc": "Décroissant",
- "dismiss": "Fermer",
- "display": "Afficher",
- "distributionList": {
- "few": "Listes de distribution",
- "none": "Aucune liste de distribution",
- "one": "Liste de distribution"
- },
- "downloadObject": "Télécharger {{name}}",
- "downloadTemplate": "Télécharger le modèle",
- "duplicate": "Dupliquer",
- "edit": "Modifier",
- "email": {
- "few": "Emails",
- "none": "Pas d'email",
- "one": "Email"
- },
- "errors": {
- "few": "Erreurs",
- "invalidJson": "Veuillez utiliser un JSON valide",
- "objectDuplicated": "{{type}} {{value}} existe déjà."
- },
- "exitFullscreen": "Quitter le mode plein écran",
- "export": "Exporter",
- "exportObject": "Exporter {{name}}",
- "false": "Faux",
- "field": {
- "few": "Champs",
- "none": "Aucun champ",
- "one": "Champ"
- },
- "filter": {
- "apply": "Appliquer",
- "clear": "Supprimer le filtre",
- "empty": "Aucun résultat",
- "few": "Filtres",
- "hide": "Cacher le filtre",
- "none": "Pas de filtre",
- "one": "Filtre",
- "show": "Afficher le filtre"
- },
- "form": {
- "few": "Formulaires",
- "none": "Aucun formulaire",
- "one": "Formulaire"
- },
- "general": "Général",
- "group": {
- "few": "Groupes",
- "none": "Pas de groupes",
- "one": "Groupe"
- },
- "hide": "Cacher",
- "history": "Historique",
- "id": "Id",
- "input": {
- "dateRange": "Intervalle de dates",
- "none": "-- Aucun --",
- "rawJson": "JSON brut"
- },
- "label": "Etiquette",
- "layers": {
- "few": "Couches",
- "none": "Pas de couche"
- },
- "layout": {
- "few": "Mises en page",
- "none": "Aucune mise en page",
- "one": "Mise en page"
- },
- "loading": "Chargement",
- "modifiedOn": "Modifié le ",
- "name": "Nom",
- "next": "Suivant",
- "noOptions": "Aucun choix disponible",
- "none": "Aucun",
- "notifications": {
- "accessDenied": "Vous n'avez pas la permission pour accéder à cet objet de type {{type}}.",
- "accessNotProvided": "Pas d'accès fourni à cet objet de type {{type}}. {{error}}",
- "alreadyExists": "Cet objet {{type}} {{value}} existe déjà dans cette application.",
- "autoSaving": "Sauvegarde automatique",
- "copiedToClipboard": "Lien du tableau de bord copié !",
- "dataGenerated": "le(s) nouvel(aux) enregistrement(s) a (ont) été généré(s) avec succès.",
- "dataNotRecovered": "Échec de la récupération des données",
- "dataRecovered": "Les données ont été récupérées !",
- "email": {
- "error": "Un problème est survenu lors de l'envoi de l'e-mail",
- "errors": {
- "noDistributionList": "Un problème est survenu lors de l'envoi de l'e-mail: aucune liste de distribution détectée",
- "noTemplate": "Un problème est survenu lors de l'envoi de l'e-mail: aucun template détecté"
- },
- "processing": "Envoi en cours...",
- "ready": "E-mail prêt",
- "sent": "E-mail envoyé"
- },
- "fetchingGroups": "Fetching groups from service...",
- "file": {
- "download": {
- "error": "Un problème est survenu lors du téléchargement",
- "ongoing": "Votre téléchargement est en cours. Vous recevrez bientôt un e-mail contenant votre fichier.",
- "processing": "Téléchargement du fichier en cours...",
- "ready": "Votre fichier est prêt"
- },
- "upload": {
- "error": "Un problème est survenu lors de l'import",
- "maxFileSize": "La taille maximale du fichier est de {{size}} Mo.",
- "processing": "Fichier en cours d'importation...",
- "ready": "Fichier importé"
- }
- },
- "formStatus": "Le statut actuel du formulaire ne permet pas son affichage.",
- "formatInvalid": "Veuillez importer un fichier de format .{{format}}.",
- "groups": {
- "error": "Une erreur s'est produite lors de la tentative d'obtenir des groupes du service",
- "processing": "Récupération des groupes à partir du service...",
- "ready": "Groupes récupérés"
- },
- "history": {
- "error": "Un problème est survenu lors de la génération de l'historique. {{error}}"
- },
- "loadedFromCache": "Objet de type {{type}} chargé depuis le cache.",
- "noOpened": "Aucun objet {{value}} n'a été ouvert.",
- "objectCreated": "{{value}} {{type}} créé avec succès.",
- "objectDeleted": "{{value}} supprimé avec succès.",
- "objectDuplicated": "{{type}} {{value}} dupliqué avec succès.",
- "objectInvited": "{{name}} a été invité.",
- "objectLocked": "L'édition de {{name}} a été bloquée par un autre utilisateur.",
- "objectNotCreated": "L'objet de type {{type}} n'a pas pu être créé. {{error}}",
- "objectNotDeleted": "L'objet {{value}} n'a pas pu être supprimé. {{error}}",
- "objectNotDuplicated": "L'objet de type {{type}} n'a pas pu être dupliqué. {{error}}",
- "objectNotEdited": "{{type}} not modifié. {{error}}",
- "objectNotFound": "{{name}} n'a pas été trouvé.",
- "objectNotInvited": "L'invitation vers {{name}} a échoué.",
- "objectNotReordered": "{{type}} non réorganisé. {{error}}",
- "objectNotRestored": "{{value}} non restauré. {{error}}",
- "objectNotUpdated": "L'objet de type {{type}} n'a pas pu être modifié. {{error}}",
- "objectReordered": "L'objet de type {{type}} a été réorganisé.",
- "objectRestored": "{{value}} restauré.",
- "objectUpdated": "{{value}} {{type}} a été modifié.",
- "platformAccessNotGranted": "Vous n'avez pas d'accès valide à cette plateforme.",
- "readAll": "Tout marqué comme lu",
- "statusUpdated": "Statut mis à jour par {{value}}.",
- "unlocked": "L'édition de l'objet {{name}} a été débloquée par un autre utilisateur."
- },
- "openFullScreen": "Ouvrir en plein écran",
- "options": "Options",
- "or": "Ou",
- "page": {
- "few": "Pages",
- "none": "Aucune page",
- "one": "Page"
- },
- "pagination": {
- "empty": "Aucun résultat",
- "itemsPerPage": "Éléments par page",
- "loadMore": "Charger plus",
- "of": "de"
- },
- "placeholder": {
- "address": "Entrez une adresse",
- "email": "Entrez un email",
- "name": "Entrez un nom",
- "search": "Rechercher...",
- "title": "Entrez un titre"
- },
- "platform": {
- "backOffice": "Back-Office"
- },
- "position": {
- "bottomleft": "En bas à gauche",
- "bottomright": "En bas à droite",
- "topleft": "En haut à gauche",
- "topright": "En haut à droite"
- },
- "positionAttribute": {
- "few": "Attributs de position",
- "none": "Aucun attribut de position",
- "one": "Attribut de position"
- },
- "positionCategory": {
- "few": "Catégories de position",
- "none": "Aucune catégorie de position",
- "one": "Catégories de position"
- },
- "preview": "Prévisualisation",
- "previous": "Précédent",
- "publish": "Publier",
- "pullJob": {
- "few": "Tâches planifiées",
- "none": "Aucune tâche planifiée",
- "one": "Tâche planifiée"
- },
- "record": {
- "few": "Enregistrements",
- "none": "Pas d'enregistrement",
- "one": "Enregistrement"
- },
- "referenceData": {
- "few": "Références de données",
- "none": "Aucune référence de données",
- "one": "Référence de données"
- },
- "remove": "Retirer",
- "resource": {
- "few": "Ressources",
- "none": "Aucune ressource",
- "one": "Ressource"
- },
- "role": {
- "few": "Rôles",
- "none": "Aucun rôle",
- "one": "Rôle"
- },
- "row": {
- "few": "Rangées",
- "none": "Aucune rangée",
- "one": "Rangée",
- "update": {
- "few": {
- "content": "Souhaitez vous mettre à jour les {{count}} enregistrements?",
- "title": "Mise à jour des enregistrements"
- },
- "one": {
- "content": "Souhaitez vous mettre à jour l’enregistrement?",
- "title": "Mise à jour de l’enregistrement"
- }
- }
- },
- "save": "Sauvegarder",
- "saveChanges": "Sauvegarder les changements",
- "search": "Recherche",
- "searchObject": "Rechercher {{name}}",
- "select": "Sélectionner",
- "selectStatus": "Sélectionner un statut",
- "semicolon": "point-virgule",
- "send": "Envoyer",
- "separator": "Séparateur",
- "settings": "Paramètres",
- "status": "Statut",
- "status_active": "Actif",
- "status_archived": "Archivé",
- "status_pending": "Inactif",
- "step": {
- "few": "Etape",
- "none": "Aucune étape",
- "one": "Etape"
- },
- "subscription": {
- "few": "Abonnements",
- "none": "Aucun abonnement",
- "one": "Abonnement"
- },
- "tabs": "Onglets",
- "template": {
- "few": "Modèles de notification",
- "none": "Aucun modèle",
- "one": "Modèle de notification"
- },
- "title": "Titre",
- "tooltip": {
- "dragDrop": "Glissez-déposez pour réorganiser",
- "editor": {
- "insert": "Tapez '{' pour utiliser des expressions et des variables"
- }
- },
- "trigger": {
- "few": "Déclencheurs",
- "none": "Aucun déclencheur",
- "one": "Déclenchement"
- },
- "true": "Vrai",
- "type": {
- "few": "Types",
- "none": "Aucun type",
- "one": "Type"
- },
- "update": "Mettre à jour",
- "updateObject": "Mettre à jour {{name}}",
- "uploadObject": "Importer {{name}}",
- "user": {
- "few": "Utilisateurs",
- "none": "Aucun utilisateur",
- "one": "Utilisateur"
- },
- "value": {
- "few": "Valeurs",
- "none": "Aucune valeur",
- "one": "Valeur"
- },
- "viewFullscreen": "Ouvrir le mode plein écran",
- "viewObject": "Voir {{name}}",
- "workflow": {
- "few": "Workflows",
- "none": "Aucun workflow",
- "one": "Workflow"
- }
- },
- "components": {
- "access": {
- "canDelete": "Peut supprimer",
- "canSee": "Peut voir",
- "canUpdate": "Peut modifier",
- "description": "Modifier les permissions de {{name}}",
- "title": "Accès"
- },
- "aggregation": {
- "add": {
- "choice": {
- "create": "Créer une nouvelle agrégation",
- "load": "Charger une agrégation"
- },
- "select": "Sélectionner une agrégation",
- "title": "Ajouter une agrégation"
- },
- "edit": {
- "title": "Paramètres d'agrégation"
- }
- },
- "aggregationBuilder": {
- "accumulators": "Accumulateurs",
- "addField": "Ajouter un champ",
- "addRule": "Ajouter une règle",
- "addStage": "Ajouter une étape",
- "copyFrom": "Copier les étiquettes de",
- "dataset": {
- "select": "Sélectionner la source de données"
- },
- "fieldName": "Nom du champ",
- "groupBy": "Regrouper par",
- "groupingRules": "Grouper par",
- "mapping": {
- "category": "Catégorie",
- "field": "Valeur",
- "series": "Séries"
- },
- "operator": "Opérateur",
- "operators": {
- "add": "Ajouter",
- "avg": "Moyenne",
- "count": "Compte",
- "day": "Jour",
- "first": "Premier",
- "last": "Dernier",
- "max": "Maximum",
- "min": "Minimum",
- "month": "Mois",
- "multiply": "Multiplier",
- "sum": "Somme",
- "week": "Semaine",
- "year": "Année"
- },
- "preview": {
- "hide": "Masquer l'aperçu",
- "show": "Afficher l'aperçu"
- },
- "sourceFields": "Sélectionner les champs",
- "stages": {
- "addFields": "Ajouter des champs",
- "custom": "Personnalisé",
- "filter": "Filtrer",
- "group": "Grouper & Accumulateur",
- "label": "Étiqueter",
- "sort": "Trier",
- "unwind": "Dissocier",
- "user": "Utilisateur"
- },
- "tooltip": {
- "addFields": "Ajouter de nouveaux champs au document.",
- "custom": "Définit une fonction ou une expression d'agrégation personnalisée en JavaScript.",
- "filter": "Retourne un tableau contenant uniquement les éléments qui vérifient la condition.",
- "group": "Regroupe les enregistrements en fonction des valeurs de champ et construit des accumulateurs personnalisés.",
- "groupingRules": "Les règles de regroupement sont facultatives.",
- "label": "Remplace les valeurs de choix pour les textes de choix (si définis) dans le champ spécifié.",
- "selectedFields": "Seuls les champs non utilisés peuvent être supprimés.",
- "sort": "Trie tous les documents mis en entrée et les retourne vers la pipeline dans l'ordre.\nLa mise en place de des étapes de tri successives triera simultanément tous les champs.",
- "unwind": "Déconstruit un tableau depuis les documents d'entrée et ressort un document pour chaque élément.",
- "user": "Remplace l'ID utilisateur par des informations sur l'utilisateur."
- },
- "unavailableFields": "Ces champs ne sont pas disponibles car leurs types ne sont pas supportés",
- "userProperty": "Propriété utilisateur"
- },
- "apiConfiguration": {
- "create": {
- "errors": {
- "name": "Nom invalide: utilisez seulement des lettres, des chiffres et des tirets bas."
- }
- },
- "delete": {
- "confirmationMessage": "Voulez-vous vraiment supprimer la configuration d'API {{name}} ?",
- "title": "Supprimer la configuration d'API"
- },
- "paginator": {
- "ariaLabel": "Sélectionnez la page de configurations d'API"
- }
- },
- "application": {
- "archive": {
- "autoDeletedAt": "Date de suppression automatique",
- "name": "Nom"
- },
- "customStyling": "Style personnalisé",
- "dashboard": {
- "clearFields": "Supprimer les champs",
- "editFilter": "Modifier le filtre",
- "empty": "Aucun contenu n'est disponible. Veuillez attendre que votre administrateur en crée.",
- "enterEditMode": "Entrer en mode édition",
- "enterPreviewMode": "Entrer en mode prévisualisation",
- "filter": {
- "empty": "Aucun filtre n'a été défini par les administrateurs",
- "filterPosition": {
- "bottom": "Afficher le filtre en bas",
- "left": "Afficher le filtre à gauche",
- "right": "Afficher le filtre à droite",
- "top": "Afficher le filtre en haut",
- "unset": "Position indéfinie, sélectionnez en une"
- },
- "info": "Les filtres de tableau de bord peuvent être utilisés entre les pages pour filtrer leur contenu.",
- "title": "Vous modifiez les filtres du tableau de bord"
- },
- "filterSettings": "Paramètres du filtre",
- "settings": {
- "defaultPosition": "Position par défaut du filtre",
- "fixedRowHeight": "Hauteur de ligne fixe",
- "gridOptions": "Options de grille",
- "gridType": {
- "fit": "Ajuster",
- "placeholder": "Sélectionnez un type de grille",
- "title": "Type de grille",
- "verticalFixed": "Vertical fixe"
- },
- "help": {
- "minCols": "Réduire le nombre de colonnes peut ne pas avoir un impact direct si les widgets dépassent la limite spécifiée en largeur."
- },
- "margin": "Marge entre les widgets",
- "minCols": "Nombre de colonnes",
- "minimumHeight": "Hauteur minimum",
- "tooltip": {
- "fixedRowHeight": "Taille des lignes en pixels.\nDoit être supérieur ou égal à 50.",
- "margin": "Marge entre les widgets.\nDoit être un entier positif.",
- "minCols": "Nombre de colonnes.\nDoit être compris entre 4 et 24.",
- "minimumHeight": "Taille minimale de la grille en pixels.\nDoit être supérieur ou égal à 0.",
- "reset": "Réinitialiser la valeur"
- },
- "tooltips": {
- "clear": "Définir les valeurs par défaut",
- "fixedRowHeight": "Minimum: 50, Par défaut: 200, Pas de max",
- "margin": "Minimum: 0, Par défaut: 10, Pas de max",
- "minCols": "Minimum: 4, Par défaut: 8, Maximum: 24"
- }
- }
- },
- "delete": {
- "confirmationMessage": "Voulez-vous vraiment supprimer cette application ?"
- },
- "duplicate": {
- "name": {
- "description": "Veuillez entrer une description pour cette application."
- }
- },
- "pages": {
- "delete": {
- "confirmationMessage": "Voulez-vous vraiment supprimer la page {{name}}?"
- },
- "hide": "Cacher la page dans la barre latérale de navigation",
- "notReordered": {
- "plural": "Les pages n'ont pas été réorganisées. {{error}}",
- "singular": "La page n'a pas été réorganisée. {{error}}"
- },
- "reordered": {
- "plural": "Les pages ont été réorganisées avec succès.",
- "singular": "La page a été réorganisée avec succès."
- },
- "settings": {
- "actions": "Actions",
- "goNextStepOnSave": "Aller à l'étape suivante après avoir enregistré",
- "selectIcon": "Sélectionnez une icône",
- "tooltip": {
- "autoSave": "Les modifications sont automatiquement enregistrées"
- }
- },
- "show": "Afficher la page dans la barre latérale de navigation"
- },
- "positionAttribute": {
- "delete": {
- "confirmationMessage": "Voulez-vous vraiment supprimer l'attribut de position {{name}} ?",
- "title": "Supprimer l'attribut de position"
- }
- },
- "publish": {
- "confirmationMessage": "Confirmer la publication de l'application {{name}} ?",
- "title": "Publier l'application"
- },
- "subscription": {
- "modal": {
- "hint": {
- "listenTo": "Clé de routage de l'agent de messages"
- },
- "listenTo": "Écouter",
- "placeholder": {
- "listenTo": "Sélectionner une clé de routage"
- },
- "routingKey": {
- "clear": {
- "ariaLabel": "Supprimer la clé de routage"
- }
- }
- }
- },
- "unlock": {
- "confirmationMessage": "Voulez-vous déverrouiller l'édition de {{name}} ?",
- "title": "Déverrouiller l'édition"
- },
- "update": {
- "hideMenu": "Cacher le menu vertical de navigation par défaut",
- "placeholder": {
- "description": "Veuillez entrer une description pour l'application."
- },
- "sideMenu": "Afficher le menu sur le côté",
- "tooltip": {
- "hideMenu": "Ne s'applique que lorsque le menu est sur le côté"
- }
- },
- "users": {
- "auto": "Attribution automatique",
- "empty": "Aucun utilisateur détecté",
- "manual": "Attribution manuelle"
- }
- },
- "applications": {
- "dropdown": {
- "select": "Depuis les applications"
- },
- "paginator": {
- "ariaLabel": "Sélectionnez la page d'applications"
- }
- },
- "calculatedFields": {
- "add": "Créer un nouveau champ dérivé",
- "delete": {
- "confirmationMessage": "Confirmez-vous la suppression du champ dérivé {{name}} ?"
- },
- "edit": "Modifier le champ dérivé",
- "expression": "Expression",
- "hint": {
- "name": "Entrez un nom composé uniquement delettres, dechiffres et de tirets bas. Ce nom ne doit pas dupliquer le nom d'un autre champ de la resource éditée."
- }
- },
- "channel": {
- "delete": {
- "confirmationMessage": "Voulez-vous vraiment supprimer le canal {{name}} ?"
- },
- "dropdown": {
- "select": "Notifier sur"
- },
- "selectChannel": "Sélectionnez un canal"
- },
- "confirmModal": {
- "cancel": "Annuler",
- "confirm": "Confirmer",
- "delete": "Supprimer",
- "title": "Confirmer"
- },
- "customNotifications": {
- "edit": {
- "dataset": "Jeu de données",
- "email": "Notification par email",
- "new": "Nouvelle notification",
- "recipients": {
- "distributionList": "Utiliser une liste de distribution",
- "email": "Utiliser une adresse email unique",
- "emailField": "Grouper par e-mail détectés dans les enregistrements",
- "title": "Destinataires",
- "userField": "Grouper par utilisateurs détectés dans les enregistrements"
- },
- "update": "Éditer la notification"
- },
- "errors": {
- "email": "Veuillez entrer une adresse email valide",
- "schedule": "Veuillez entrer une expression cron valide"
- },
- "hint": {
- "schedule": "Indiquez une fréquence d'envoi"
- }
- },
- "distributionLists": {
- "delete": {
- "confirmationMessage": "Voulez-vous vraiment supprimer la liste de distribution: '{{name}}'?"
- },
- "edit": {
- "name": "Nom de la liste de distribution",
- "new": "Nouvelle liste de distribution",
- "update": "Éditer la liste de distribution"
- },
- "errors": {
- "emails": {
- "pattern": "Veuillez uniquement fournir des emails valides",
- "required": "Veuillez fournir un ou plusieurs emails"
- },
- "name": {
- "required": "Veuillez fournir un nom"
- }
- }
- },
- "emailBuilder": {
- "body": "Corps du texte",
- "default": "Défaut",
- "fields": "Sélectionner les champs à écrire dans le corps du texte",
- "from": {
- "distribution": "Liste de distribution",
- "field": "Champ de données",
- "title": "Depuis:"
- },
- "subject": "Objet",
- "withoutRecords": "Sans enregistrements"
- },
- "emailPreview": {
- "errors": {
- "missingSubject": "L'objet du mail ne peut être vide."
- },
- "from": "De",
- "subject": "Objet",
- "title": "Prévisualisation de mail",
- "to": "À"
- },
- "floating": {
- "menuButton": {
- "ariaLabel": "***"
- }
- },
- "form": {
- "aggregation": {
- "delete": {
- "confirmationMessage": "Confirmez-vous la suppression de l'agrégation {{name}}?"
- }
- },
- "create": {
- "choice": {
- "inherit": "Copier un modèle de ressources existant",
- "kobo": "Créer à partir de KoboToolbox",
- "resource": "Créer une nouvelle ressource",
- "template": "Commencer depuis un modèle existant"
- },
- "kobo": {
- "apiConfiguration": {
- "placeholder": "Sélectionnez une configuration d'API"
- },
- "data": {
- "fromFormWithVersion": "Le formulaire \"{{formName}}\" a été importé avec l'ID de version {{versionID}}.
Spécifiez la fréquence à laquelle les entrées doivent être récupérées à partir de KoboToolbox ci-dessous ou appuyez sur le bouton pour importer maintenant.",
- "nothingToFetch": "Aucune nouvelle entrée trouvée",
- "start": "Récupérer maintenant",
- "strictVersionPolicy": {
- "label": "Politique de version stricte",
- "tooltip": "Lors de l'importation d'un formulaire à partir de KoboToolbox, il est possible d'avoir plusieurs versions et itérations au fil du temps. L'activation de la politique de version stricte garantit que seules les entrées de formulaire avec la même version que celle au moment de l'importation seront récupérées. La désactivation de cette option permet de récupérer des entrées à partir de n'importe quelle version du formulaire."
- },
- "tooltip": {
- "schedule": "Entrez l'heure de planification pour récupérer les entrées Kobo"
- }
- },
- "label": "Identifiant du formulaire KoboToolbox",
- "placeholder": "Entrez un identifiant de formulaire KoboToolbox",
- "settings": "Paramètres KoboToolbox"
- },
- "template": {
- "from": "Depuis le modèle",
- "placeholder": "Choisir un modèle existant",
- "selectResource": "Sélectionnez une ressource",
- "title": "Depuis la ressource"
- },
- "tooltip": {
- "inherit": "Crée un formulaire hérité en utilisant comme modèle la ressource liée à un formulaire source.",
- "kobo": "Crée un formulaire à partir d'un formulaire KoboToolbox, en utilisant le même modèle",
- "resource": "Crée un formulaire source permettant la création de formulaire hérités liés à celui-ci. Crée aussi une nouvelle ressource liée.",
- "template": "Si aucun modèle n'est sélectionné, la structure principale sera chargée"
- }
- },
- "delete": {
- "confirmationMessage": "Voulez-vous vraiment supprimer le formulaire {{name}} ?"
- },
- "deleteRow": {
- "confirmationMessage": "Voulez-vous vraiment supprimer {{quantity}} {{rowText}}?"
- },
- "display": {
- "cancelMessage": "Opération annulée",
- "submissionMessage": "Le formulaire a été sauvegardé."
- },
- "draftRecords": {
- "buttonLoad": "Charger un brouillon",
- "confirmModal": {
- "confirmDelete": "Voulez-vous vraiment supprimer ce brouillon ?",
- "confirmLoad": "Voulez-vous vraiment charger ce brouillon ?",
- "delete": "Supprimer ce brouillon",
- "load": "Charger ce brouillon"
- },
- "creationDate": "Date de création",
- "delete": "Supprimer ce brouillon",
- "load": "Charger ce brouillon",
- "noDrafts": "Aucun enregistrement brouillon disponible",
- "preview": "Prévisualiser ce brouillon",
- "previewTitle": "Enregistrement brouillon",
- "save": "Enregistrer comme brouillon",
- "select": "Sélectionner le brouillon",
- "successEdit": "Brouillon modifié avec succès",
- "successSave": "Enregistré dans les brouillons avec succès"
- },
- "lastSavedAt": "Dernière sauvegarde à {{date}}",
- "layout": {
- "delete": {
- "confirmationMessage": "Voulez-vous vraiment supprimer la mise en page {{name}} ?"
- },
- "errors": {
- "invalid": "Le formulaire est invalide"
- },
- "update": {
- "preview": {
- "description": "Réorganise, trie, filtre et cache des colonnes pour changer l'affichage par défaut de la mise en page"
- }
- }
- },
- "searchExistingRecords": {
- "matches": "Résultats",
- "noMatches": "Aucun résultat",
- "openRecordTooltip": "Ouvrir l'enregistrement"
- },
- "summary": {
- "cache": {
- "clear": "Vider le cache",
- "load": "Charger depuis le cache {{date}}"
- },
- "createdBy": "Créé par {{user}} le {{date}}",
- "modifiedBy": "Modifié pour la dernière fois par {{user}} le {{date}}"
- },
- "update": {
- "exit": "Quitter sans sauvegarder les changements",
- "exitMessage": "Il y a des changements non sauvegardés dans votre formulaire, voulez-vous vraiment quitter cette page ?"
- },
- "updateRow": {
- "confirmationMessage": "Souhaitez-vous mettre à jour {{quantity}} {{rowText}}?"
- }
- },
- "formBuilder": {
- "errors": {
- "duplicatedRelatedName": "Nom lié en double pour la question {{question}} à la page {{page}}. Veuillez fournir un nom lié unique (au format snake_case) pour sauvegarder le formulaire.",
- "incorrectJSON": "Le JSON est invalide dans le JSON Editor, les changements n'ont pas été sauvegardés",
- "missingGridField": "Champs disponible de table de données manquant pour la question {{question}} à la page {{page}}. Veuillez en sélectionner au moins un dans la propriété Custom Question pour sauvegarder le formulaire.",
- "missingRelatedName": "Nom lié manquant pour la question {{question}} à la page {{page}}. Veuillez entrer un nom valide pour la valeur de la donnée (au format snake_case) pour sauvegarder le formulaire.",
- "missingTemplate": "Ressource liée manquante pour la question {{question}} à la page {{page}}. Veuillez sélectionner un modèle pour sauvegarder le formulaire."
- },
- "propertyGrid": {
- "resource": {
- "availableGridFields": "Champs de grille disponibles",
- "resourceSelectText": "Vous devez d’abord sélectionner une ressource avant de définir des filtres"
- }
- },
- "saveSurvey": "Sauvegarde du questionnaire"
- },
- "formMapProperties": {
- "geofields": {
- "editDialog": {
- "editGeofield": "Éditer les champs",
- "label": "Label",
- "value": "Valeur"
- }
- }
- },
- "forms": {
- "isCore": "Est un formulaire source",
- "paginator": {
- "ariaLabel": "Sélectionnez la page de formulaires"
- },
- "parent": "Formulaire parent"
- },
- "group": {
- "add": {
- "title": "Ajouter un nouveau groupe"
- },
- "delete": {
- "confirmationMessage": "Confirmez-vous la suppression du groupe {{name}}?",
- "title": "Supprimer le groupe"
- }
- },
- "header": {
- "goToApp": "Ouvrir l'application",
- "goToPlatform": "Naviguer vers",
- "logout": "Se déconnecter",
- "sidenav": {
- "collapse": "Cacher la barre latérale",
- "show": "Afficher la barre latérale"
- }
- },
- "history": {
- "changes": {
- "add": "Ajout",
- "from": "de",
- "modify": "Modification",
- "remove": "Suppression",
- "to": "à",
- "withValue": "avec valeur"
- },
- "columns": {
- "action": "Type d'action",
- "date": "Date",
- "modifiedValue": "Ancienne valeur",
- "originalValue": "Nouvelle valeur",
- "person": "Utilisateur",
- "time": "Heure",
- "variable": "Champ"
- },
- "download": "Télécharger l'historique",
- "empty": "Aucune activité détectée",
- "field": {
- "all": "Tous les champs",
- "select": "Sélectionner les champs"
- },
- "preview": "Prévisualiser et revenir",
- "range": {
- "clear": "Effacer la plage de données"
- },
- "useTableMode": "Afficher en table"
- },
- "icon": {
- "modal": {
- "select": "Sélectionner une icône",
- "use": "Utiliser l'icône"
- }
- },
- "logout": {
- "confirmationMessage": "Le formulaire contient des éléments non sauvegardés. Voulez-vous vous vraiment déconnecter ?",
- "title": "Quitter la plateforme sans sauvegarder"
- },
- "map": {
- "controls": {
- "download": {
- "layers": {
- "all": "Toutes les couches",
- "selected": "Couches sélectionnées",
- "visible": "Couches visibles"
- },
- "output": "Format d'export",
- "selectLayers": "Sélectionnez les couches",
- "view": {
- "all": "Toute la carte",
- "current": "Vue actuelle"
- }
- },
- "timeline": {
- "show": "Afficher la chronologie",
- "time": {
- "dateFormat": "Affichage des dates",
- "startField": "Commencez à afficher à",
- "stopField": "Arrêter de s'afficher à",
- "tooltip": "Lorsqu'elle est activée, une chronologie sera affichée sur la carte. Il vous permettra de visualiser l’évolution de vos données dans le temps."
- },
- "title": "Timeline"
- }
- }
- },
- "mapping": {
- "field": "Champ de l'utilisateur",
- "path": "Chemin",
- "text": "Texte",
- "title": "Table de correspondances",
- "value": "Valeur"
- },
- "notifications": {
- "noRecord": "Aucun enregistrement à rediriger",
- "noRedirect": "Impossible de rediriger. Informations manquantes.",
- "paginator": {
- "ariaLabel": "Sélectionnez la page de notifications"
- },
- "readAll": "Tout marquer comme lu",
- "title": "Notifications"
- },
- "paginator": {
- "items": "élements",
- "itemsPerPage": "éléments par page",
- "of": "de",
- "page": "Page"
- },
- "preferences": {
- "dateFormat": "Format de date et heure",
- "language": "Langage",
- "title": "Préférences"
- },
- "pullJob": {
- "delete": {
- "confirmationMessage": "Voulez-vous vraiment supprimer la tâche {{name}} ?",
- "title": "Supprimer la tâche"
- },
- "modal": {
- "addMappingField": "ajouter un champ de correspondance",
- "errors": {
- "schedule": "Entrez une expression cron valide"
- },
- "hint": {
- "path": "Entrer le chemin pour extraire la donnée de la réponse",
- "schedule": "Entrez une expression CRON pour planifier la tâche",
- "url": "Entrez l'URL après l'hôte pour atteindre la donnée spécifique"
- },
- "identifier": "Identificateurs uniques",
- "mapping": "Correspondance",
- "placeholder": {
- "path": "Entrez le chemin d'accès...",
- "schedule": "Entrez l'horaire planifié...",
- "url": "Entrer l'URL..."
- },
- "switch": "Changer de mode"
- },
- "paginator": {
- "ariaLabel": "Sélectionez la page de tâches programmées"
- }
- },
- "queryBuilder": {
- "dataset": {
- "select": "Sélectionner un jeu de données"
- },
- "errors": {
- "field": {
- "invalid": "Champ invalide. Veuillez cliquer pour le retirer."
- }
- },
- "fields": {
- "available": "Champs disponibles",
- "column": "Largeur de la colonne (px)",
- "format": {
- "info": "Laissez vide pour utiliser le mode classique",
- "title": "Mode d'affichage"
- },
- "hidden": {
- "hiddenByDefault": "Masquer la colonne par défaut",
- "tooltip": "La colonne sera masquée par défaut, mais pourra toujours être affichée par l'utilisateur"
- },
- "search": "Rechercher des champs...",
- "selected": "Champs sélectionnés",
- "title": "Champs"
- },
- "filter": {
- "and": "Et",
- "logic": "Logique de filtre",
- "new": "Ajouter un nouveau filtre",
- "newGroup": "Ajouter un nouveau groupe de filtres",
- "operator": "Opérateur",
- "or": "Ou",
- "title": "Filtre"
- },
- "hint": {
- "fields": "Sélectionnez des champs ci-dessous et déplacez-les vers les 'champs sélectionnés' sur la droite",
- "sortingDisabled": "Le tri est désactivé quand la recherche est active.",
- "style": "Les règles de style font ressortir les enregistrements contenant des informations importantes. Quand un enregistrement vérifie plusieurs règles, la première est utilisée."
- },
- "label": {
- "field": "Champ"
- },
- "pagination": {
- "first": "Limite",
- "title": "Pagination"
- },
- "sort": {
- "ascending": "Croissant",
- "descending": "Décroissant",
- "field": "Filtrer le champ",
- "limit": "limite",
- "limitTitle": "Tri et limite",
- "logic": "Ordre logique",
- "new": "Ajouter un nouveau filtrer le champ",
- "order": "Ordre de tri",
- "title": "Tri"
- },
- "style": {
- "and": "Et",
- "edit": {
- "appliesTo": "Appliquer le style à",
- "background": {
- "color": "Couleur de fond"
- },
- "criteria": "Critère",
- "fields": "Champ",
- "name": "Nom de la règle",
- "selectedColumns": "Seulement les colonnes sélectionnées.",
- "text": {
- "color": "Couleur du texte",
- "style": "Style du texte"
- },
- "wholeRow": "Ligne entière"
- },
- "logic": "Filtre de style",
- "new": "Ajouter une règle de style",
- "operator": "Opérateur",
- "or": "Ou",
- "title": "Style"
- },
- "tooltip": {
- "filter": {
- "date": {
- "useExpression": "Utiliser une expression",
- "usePicker": "Choisir une date"
- }
- },
- "pagination": {
- "first": "Limite le nombre d'éléments renvoyés"
- }
- }
- },
- "record": {
- "attach": {
- "confirm": "Attacher",
- "selectTarget": "Sélectionner la cible {{name}}"
- },
- "convert": {
- "choice": {
- "copy": "Copier l'enregistrement source",
- "overwrite": "Écraser l'enregistrement source"
- },
- "result": {
- "force": "Les champs suivants seront ignorés :",
- "smooth": "Conversion OK"
- },
- "select": "Convertir en"
- },
- "delete": {
- "confirmationMessage": "Voulez-vous vraiment supprimer l'enregistrement {{name}} ?",
- "permanently": "Supprimer de manière permanente"
- },
- "dropdown": {
- "select": "Sélectionner un enregistrement"
- },
- "history": {
- "revert": "Revenir à l'enregistrement précédent",
- "version": {
- "current": "Version actuelle",
- "old": "Ancienne version"
- }
- },
- "modal": {
- "closeConfirmation": "Fermer sans enregistrer les modifications ?",
- "update": "Sauvegarder et fermer"
- },
- "recovery": {
- "confirmationMessage": "Souhaitez-vous appliquer les données du {{date}} à l'enregistrement ?",
- "title": "Récupération de données"
- },
- "uniqueField": {
- "cannotUpdate": "Vous n'êtes pas autorisé à mettre à jour cet enregistrement existant.",
- "exist": "L'enregistrement avec la question '{{question}}' avec la valeur '{{value}}' existe déjà et cette valeur doit être unique.",
- "overwriteConfirm": "Voulez-vous écraser l'enregistrement existant?",
- "title": "Valeur de champ unique",
- "updateRecord": "Veuillez d'abord mettre à jour la valeur unique de cet enregistrement."
- }
- },
- "records": {
- "active": "Enregistrements actifs",
- "archived": "Enregistrements archivés",
- "editAs": "Editer en tant que",
- "paginator": {
- "ariaLabel": "Sélectionnez la page d'enregistrements"
- },
- "showActive": "Voir les enregistrements actifs",
- "showArchived": "Voir les enregistrements archivés",
- "upload": {
- "hint": "Le fichier doit contenir uniquement un enregistrement par ligne. La ligne d'en-tête contient les noms des champs de données."
- }
- },
- "referenceData": {
- "create": {
- "title": "Nouvelle référence de données"
- },
- "delete": {
- "confirmationMessage": "Voulez-vous vraiment supprimer la référence de données {{name}} ?",
- "title": "Supprimer la référence de données"
- },
- "dropdown": {
- "select": "Depuis la référence de données"
- },
- "fields": {
- "add": "Ajouter le champ",
- "ariaLabel": "Indiquez les champs de la référence de données",
- "new": "Nouveau champ"
- },
- "paginator": {
- "ariaLabel": "Sélectionnez la page de références de données"
- }
- },
- "resource": {
- "delete": {
- "confirmationMessage": "Voulez-vous vraiment supprimer la ressource {{name}} ?"
- },
- "dropdown": {
- "select": "Depuis la ressource"
- },
- "empty": {
- "aggregations": "Aucune agrégation détectée",
- "calculatedFields": "Aucun champ dérivé détecté",
- "layouts": "Aucune mise en page détectée",
- "records": "Aucun enregistrement détecté"
- },
- "importField": {
- "title": "Champ d'importation",
- "updateError": "Erreur lors de la mise à jour du champ d'importation de ressources: {{error}}",
- "updateSuccess": "Le champ d'importation de la ressource '{{resource}}' a été mis à jour avec succès!"
- },
- "incrementalIdShape": {
- "example": "Exemple d'identifiant incrémentiel utilisant l'entrée de forme",
- "invalidExpression": "Expression de forme d'identifiant non valide",
- "padding": "Rembourrage",
- "shape": "Forme",
- "title": "Forme d'identifiant incrémentiel",
- "updateError": "Erreur lors de la mise à jour de la forme de l'identifiant incrémentiel de la ressource : {{error}}",
- "updateSuccess": "La forme de l'identifiant incrémentiel de la ressource '{{resource}}' a été mise à jour avec succès!"
- },
- "paginator": {
- "ariaLabel": "Sélectionnez la page de ressources"
- }
- },
- "role": {
- "add": {
- "title": "Ajouter un nouveau rôle"
- },
- "delete": {
- "confirmationMessage": "Voulez-vous vraiment supprimer le rôle {{name}} ?",
- "title": "Supprimer le rôle"
- },
- "impersonate": {
- "title": "Choix du rôle à simuler"
- },
- "summary": {
- "addFilter": "Ajouter un filtre",
- "autoAssignment": {
- "rule": {
- "add": "Ajouter une règle d'attribution",
- "delete": "Supprimer la règle",
- "edit": "Mettre à jour la règle d'attribution",
- "none": "Aucune règle d'attribution automatique",
- "title": "Règle"
- },
- "title": "Attribution automatique"
- },
- "details": {
- "access": {
- "channels": "Canaux accessibles",
- "fullAccess": "Accès complet à {{accessible}} / {{total}}",
- "limitedAccess": "Accès limité à {{accessible}} / {{total}}",
- "noAccess": "Pas d'accès à {{accessible}} / {{total}}",
- "pages": "Pages accessibles",
- "resources": "Ressources accessibles",
- "title": "Accès"
- }
- },
- "editFilters": "Modifier les filtres",
- "features": "Fonctionnalités",
- "newFilter": "Nouveau filtre",
- "noFeatures": "Aucune fonctionnalité détectée",
- "noFilters": "Aucun filtre d'accès détecté",
- "noForm": "Aucun formulaire détecté",
- "noForms": "Aucun formulaire détecté",
- "noSteps": "Aucune étape détectée",
- "removeFilter": "Supprimer le filtre",
- "title": "Résumé",
- "users": {
- "auto": "Attribution automatique",
- "empty": "Aucun utilisateur détecté",
- "manual": "Attribution manuelle"
- }
- },
- "tooltip": {
- "allowFieldAccessibility": "Autoriser ce rôle à voir le champ {{field}}",
- "allowFieldUpdate": "Autoriser ce rôle à mettre à jour le champ {{field}}",
- "disallowFieldAccessibility": "Interdire ce rôle pour voir le champ {{field}}",
- "disallowFieldUpdate": "Interdire ce rôle pour mettre à jour le champ {{field}}",
- "grantAddRecordsPermission": "Permet de créer de nouveaux enregistrements",
- "grantDeleteRecordsPermission": "Permet de supprimer tous les enregistrements",
- "grantFilterDeleteRecordsPermission": "Permet de supprimer les enregistremetns satisfaisant le filtre",
- "grantFilterReadRecordsPermission": "Permet de voir les enregistrements satisfaisant le filtre",
- "grantFilterUpdateRecordsPermission": "Permet de mettre à jour les enregistrements satisfaisant le filtre",
- "grantReadRecordsPermission": "Permet de voir tous les enregistrements",
- "grantUpdateRecordsPermission": "Permet de mettre à jour tous les enregistrements",
- "hideFeature": "Masquer {{page}} pour ce rôle",
- "limitedDeleteRecordsPermission": "Permet de supprimer les enregistrements satisfaisant les filtres",
- "limitedReadRecordsPermission": "Permet de voir les enregistrements satisfaisant les filtres",
- "limitedUpdateRecordsPermission": "Permet de mettre à jour les enregistrements satisfaisant les filtres",
- "notGrantAddRecordsPermission": "Ne donne pas la permission d'ajouter de nouveaux enregistrements",
- "notGrantDeleteRecordsPermission": "Ne donne pas la permission de supprimer les enregistrements",
- "notGrantFilterDeleteRecordsPermission": "Ne donne pas la permission de supprimer les enregistrements satisfaisant le filtre",
- "notGrantFilterReadRecordsPermission": "Ne donne pas la permission de voir les enregistrements satisfaisant le filtre",
- "notGrantFilterUpdateRecordsPermission": "Ne donne pas la permission de mettre à jour les enregistrements satisfaisant le filtre",
- "notGrantReadRecordsPermission": "Ne donne pas la permission de voir les enregistrements",
- "notGrantUpdateRecordsPermission": "Ne donne pas la permission de mettre à jour les enregistrements",
- "showFeature": "Afficher {{page}} pour ce rôle"
- },
- "update": {
- "permissions": "Permissions",
- "title": "Modifier les permissions des rôles et les canaux de diffusion"
- }
- },
- "share": {
- "modal": {
- "copy": "Copier dans le presse-papiers",
- "title": "Partager l'url du dashboard"
- }
- },
- "templates": {
- "available": "Modèles d'email disponibles",
- "delete": {
- "confirmationMessage": "Voulez-vous supprimer le modèle '{{name}}'?",
- "titleMessage": "Supprimer le modèle"
- },
- "edit": {
- "body": "Corps du texte",
- "name": "Nom du modèle de notification",
- "new": "Nouveau modèle de notification",
- "subject": "Sujet",
- "update": "Éditer le modèle de notification"
- },
- "errors": {
- "empty": "Veuillez sélectionner au moins un modèle"
- },
- "select": {
- "email": "Sélectionnez un modèle d'e-mail"
- },
- "type": {
- "email": "E-mail",
- "notification": "Notification",
- "title": "Type de modèle"
- }
- },
- "triggers": {
- "addTrigger": "Ajouter un déclencheur",
- "confirmDelete": "Confirmez-vous la suppression du déclencheur {{name}} ?",
- "createTrigger": "Nouveau {{type}} déclencheur",
- "cronBased": "Basé sur Cron",
- "customNotificationRecipientsType": {
- "channel": "Canal",
- "distributionList": "Liste de distribution",
- "email": "E-mail",
- "emailField": "Champ e-mail",
- "userField": "Champ de l'utilisateur"
- },
- "editTrigger": "Modifier {{type}} déclencheur",
- "noTriggers": "Aucun déclencheur détecté",
- "notification": "Notification",
- "onRecordCreation": "Création d'un enregistrement",
- "onRecordUpdate": "Mise à jour sur l'enregistrement",
- "openFilter": "OUVRIR LE FILTRE",
- "redirect": {
- "active": "Ajouter une redirection lors d'un clic sur une notification",
- "recordIds": "Redirection vers les détails du ou des enregistrements",
- "type": "Type de redirection",
- "url": "Redirection vers la page"
- },
- "selectNotificationType": "Veuillez d'abord sélectionner un type de notification",
- "tooltip": {
- "withCronBasedTrigger": "Ressource avec un déclencheur basé sur cron",
- "withOnRecordCreationTrigger": "Ressource avec un déclencheur lors de la création d'un enregistrement",
- "withOnRecordUpdateTrigger": "Ressource avec un déclencheur lors de la mise à jour de l'enregistrement",
- "withoutCronBasedTrigger": "Ressource sans aucun déclencheur basé sur cron",
- "withoutOnRecordCreationTrigger": "Ressource sans aucun déclencheur lors de la création d'un enregistrement",
- "withoutOnRecordUpdateTrigger": "Ressource sans aucun déclencheur lors de la mise à jour de l'enregistrement"
- }
- },
- "user": {
- "delete": {
- "confirmationMessage": "Voulez-vous vraiment supprimer l'utilisateur {{name}} ?",
- "title": "Supprimer l'utilisateur"
- },
- "invite": {
- "confirm": "Inviter",
- "role": {
- "additionalAttributes": "Définir des attributs supplémentaires",
- "description": "Sélectionner les rôles à assigner"
- }
- },
- "summary": {
- "country": "Pays",
- "firstName": "Prénom",
- "lastName": "Nom",
- "locationType": "Type de localisation",
- "region": "Région",
- "roles": {
- "application": "Rôles d'application",
- "backoffice": "Rôles de back-office",
- "selectedApplication": "Application sélectionnée",
- "selectedGroups": "Groupes sélectionnés",
- "selectedRoles": "Rôles sélectionnés"
- },
- "title": "Résumé"
- },
- "update": {
- "title": "Modifier l'utilisateur"
- }
- },
- "users": {
- "invite": {
- "add": "Ajouter un nouvel utilisateur",
- "confirm": "Inviter des utilisateurs",
- "description": "Sélectionner des utilisateurs existants, inviter de nouveaux utilisateurs ou en importer depuis un fichier Excel"
- },
- "onDelete": {
- "plural": "Les utilisateurs ont été correctement supprimés.",
- "singular": "L'utilisateur a été correctement supprimé."
- },
- "onInvite": {
- "plural": "Les utilisateurs ont été invités.",
- "singular": "L'utilisateur a été invité."
- },
- "onNotDelete": {
- "plural": "Les utilisateurs n'ont pas été supprimés. {{error}}",
- "singular": "L'utilisateur a été supprimé. {{error}}"
- },
- "onNotInvite": {
- "plural": "Les utilisateurs n'ont pas été invités. {{error}}",
- "singular": "L'utilisateur n'a pas été invité. {{error}}"
- },
- "paginator": {
- "ariaLabel": "Sélectionnez la page d'utilisateurs"
- }
- },
- "widget": {
- "chart": {
- "errors": {
- "aggregation": {
- "invalid": "Agrégation invalide"
- }
- },
- "filters": {
- "select": "Sélectionnez un filtre..."
- },
- "other": "Autre"
- },
- "display": {
- "tooltip": {
- "placeholder": "Entrez une valeur pour l'info-bulle"
- }
- },
- "expand": "Étendre",
- "form": {
- "addNewMapping": "Ajouter un mappage",
- "autoPopulateOnSubmit": {
- "label": "Remplissage automatique lors de la soumission",
- "omit": {
- "label": "Omettre les champs",
- "tooltip": "Champs à omettre pendant le remplissage automatique"
- },
- "tooltip": "Lors de la soumission d'un enregistrement à partir du widget, le formulaire sera automatiquement rempli avec les données de l'enregistrement après la soumission"
- },
- "directions": {
- "both": "Les modifications apportées à l'état ou à la question seront répercutées sur l'autre",
- "questionToState": "Les modifications apportées à la question seront répercutées sur l'état",
- "stateToQuestion": "Les modifications apportées à l'état seront répercutées sur la question"
- },
- "mapQuestionState": "Mappez la valeur de la question à l'état",
- "noMappingsTooltip": "Aucun mappage n'est configuré",
- "questionStateTab": {
- "label": "Mappage d'état",
- "tooltip": "Configurez le mappage d'état, permettant au widget d'interagir avec les états du tableau de bord"
- },
- "updateRecord": {
- "title": "Mettre à jour l'enregistrement",
- "tooltip": "Sélectionnez un état du tableau de bord. Lorsque l'état passe à un identifiant d'enregistrement valide, le formulaire sera rempli avec les données de l'enregistrement."
- }
- },
- "grid": {
- "actions": {
- "detail": "Ouvrir le détail",
- "downloadReport": "Télécharger",
- "goTo": "Aller à la page",
- "history": "Voir l'historique"
- },
- "empty": "Aucun enregistrement détecté pour cette configuration de réseau",
- "errors": {
- "autoSaveFailed": "L'exécution de l'action a été stoppé à cause d'enregistrement(s) non valide(s). Veuillez les vérifier avant de lancer une autre action.",
- "invalid": {
- "backoffice": "Configuration de grille invalide",
- "frontoffice": "Configuration de grille non valide, veuillez contacter votre administrateur",
- "widgets": "Configuration de grille non valide, veuillez contacter votre administrateur"
- },
- "metaQueryBuildFailed": "Erreur lors de la création des métadonnées",
- "metaQueryFetchFailed": "Erreur lors de la récupération des métadonnées: {{error}}",
- "missingDataset": "Sélectionner un jeu de données dans les jeux de données",
- "noRowsSelected": "Aucune ligne sélectionnée",
- "queryBuildFailed": "Erreur lors de la création de la requête",
- "queryFetchFailed": "Erreur lors de la récupération des données : {{error}}",
- "validationFailed": "Les enregistrements suivants n'ont pas pu être sauvegardés car invalides :\n{{errors}}\nMerci de les modifier en utilisant le bouton \"Mettre à jour \" pour plus de détails."
- },
- "export": {
- "columns": {
- "choice": {
- "all": "Toutes les colonnes disponibles",
- "visible": "Toutes les colonnes visibles"
- },
- "title": "Sélectionner les colonnes à exporter"
- },
- "dataset": {
- "choice": {
- "all": "Tous les enregistrements visibles",
- "selected": "Seulement les enregistrements visibles"
- },
- "title": "Sélectionner les enregistrements à exporter"
- },
- "email": {
- "title": "M'envoyer le fichier par e-mail",
- "tooltip": "Si sélectionné, vous recevrez le fichier par e-mail, au lieu d'attendre son téléchargement ici."
- },
- "format": {
- "title": "Sélectionner le format d'export"
- }
- },
- "filter": {
- "toggle": "Activer la visibilité du filtre"
- },
- "item": {
- "few": "{{count}} éléments",
- "none": "Aucun élément",
- "one": "{{count}} élément"
- },
- "layout": {
- "button": {
- "title": "Cela effacera la mise en page actuelle avec la mise en page par défaut"
- },
- "reset": "Réinitialiser la mise en page par défaut"
- },
- "loading": {
- "records": "Chargement des enregistrements...",
- "settings": "Chargement des paramètres..."
- },
- "map": {
- "mapDetailsTitle": "Cartographie des données",
- "mapDetailsTooltip": "Centré par defaut sur l'enregistrement sélectionné"
- },
- "openEditor": "Afficher le html",
- "openSettings": "Ouvrir les paramètres",
- "tooltip": {
- "displayEditor": "Afficher le html dans un modal",
- "displayMap": "Afficher la carte",
- "openPage": "Aller à la page",
- "saved": "Changements sauvegardés",
- "unsaved": "Cliquez sur sauvegarder pour enregistrer les changements",
- "uploadFailed": "L'enregistrement a échoué. Cliquez pour obtenir plus de détails"
- },
- "validation": {
- "help": "Veuillez modifier l'enregistrement à l'aide du bouton \"Mettre à jour\".",
- "questionTitle": "Erreurs sur le champ {{question}}:",
- "subtitle": "Ces erreurs furent détectées durant l'enregistrement :",
- "title": "L'enregistrement du document {{record}} a échoué"
- }
- },
- "settings": {
- "chart": {
- "auto": "auto",
- "axes": "Axes",
- "categories": "Catégories",
- "color": "Couleur",
- "filters": {
- "add": "Ajouter un filtre",
- "delete": "Supprimer le filtre",
- "empty": "Aucun filtre configuré",
- "title": "Filtres prédéfinis"
- },
- "grid": {
- "buttons": {
- "modifySelectedRows": {
- "confirmation": "Voulez-vous vraiment modifier les lignes sélectionnées?"
- }
- },
- "title": "Grille",
- "x": {
- "display": "Afficher les lignes horizontales"
- },
- "y": {
- "display": "Afficher les lignes verticales"
- }
- },
- "hideLegend": "Masquer la légende",
- "labels": {
- "percentage": "Pourcentage",
- "showCategory": "Afficher la catégorie",
- "showValue": "Afficher la valeur",
- "title": "Labels",
- "valueType": "Type de valeur"
- },
- "legend": "Légende",
- "orientation": "Orientation",
- "other": "Autre",
- "palette": {
- "enable": "Configurer la palette",
- "placeholder": "Thème personnalisé",
- "themes": "Thèmes des palettes",
- "title": "Palette de couleurs"
- },
- "position": "Position",
- "series": {
- "fill": "Remplissage",
- "interpolation": {
- "step": "Étape d'interpolation",
- "title": "Interpolation"
- },
- "showSeries": "Afficher la serie",
- "stack": {
- "enable": "Empiler les séries",
- "usePercentage": "Utiliser des pourcentages"
- },
- "title": "Séries"
- },
- "size": "Taille",
- "stepSize": "Intervalle entre les marques",
- "style": "Style",
- "text": "Texte",
- "title": {
- "color": "Couleur",
- "format": "Format"
- },
- "tooltip": {
- "palette": "Les couleurs de la palette sont appliquées par défaut aux éléments du graphqiue, mais peuvent être manuellement changées pour chaque série et catégorie.",
- "stepSize": "Intervalle entre chaque marque de graduation sur l'axe, lorsque possible"
- },
- "type": "Graphique",
- "xAxis": "Axe X",
- "yAxis": "Axe Y"
- },
- "close": {
- "confirmationMessage": "Vos changements vont être perdus si vous fermez la fenêtre d'édition. Voulez-vous continuer ?"
- },
- "editor": {
- "recordSelection": "Sélection d'enregistrement",
- "title": "Éditeur"
- },
- "grid": {
- "actions": {
- "actionsAsIcons": "Afficher les actions sous forme d'icônes",
- "add": "Ajouter de nouveaux enregistrements",
- "automaticallyMapSelected": "Mapper automatiquement les lignes sélectionnées",
- "automaticallyMapView": "Mapper automatiquement les lignes visibles",
- "convert": {
- "label": "Libellé du bouton convertir des enregistrements",
- "text": "Convertir des enregistrements"
- },
- "copyLink": {
- "label": "Libellé du bouton Copier le lien",
- "text": "Copier le lien"
- },
- "copyLinkDone": "Lien copié dans le presse-papier",
- "delete": {
- "label": "Libellé du bouton supprimer les enregistrements",
- "text": "Supprimer les enregistrements"
- },
- "details": {
- "label": "Libellé du bouton voir les détails des enregistrements",
- "text": "Détails"
- },
- "export": "Exporter les enregistrements",
- "goTo": {
- "column": {
- "label": "Nom de la colonne",
- "placeholder": "Entrez un nom pour la colonne..."
- },
- "field": {
- "addParam": "Ajouter un paramètre",
- "label": "Transférer le champ comme paramètre de requête",
- "paramName": "Nom du paramètre",
- "placeholder": "Sélectionner un champ",
- "title": "Paramètre de requête"
- },
- "label": "Accédez à la page",
- "target": {
- "label": "Naviguez vers la page",
- "placeholder": "Sélectionnez une page"
- }
- },
- "inline": "Modifier par ligne",
- "mapSelected": "Mapper les lignes sélectionnées à l'état",
- "mapView": "Mapper les lignes visibles à l'état",
- "navigateToPage": "Accédez à la page",
- "pageUrl": {
- "label": "Url de la source de la page",
- "placeholder": "Entrez l'id de la page"
- },
- "pageUrlTitle": {
- "label": "Nom de la colonne",
- "placeholder": "Entrez un nom pour la colonne..."
- },
- "remove": "Retirer",
- "show": {
- "label": "Libellé du bouton voir l'historique",
- "text": "Voir l'historique"
- },
- "showDetails": "Afficher les détails des enregistrements",
- "state": "Sélectionner l'état du tableau de bord",
- "title": "Actions activées",
- "update": {
- "label": "Libellé du bouton modifier les enregistrements",
- "text": "Modifier les enregistrements"
- },
- "useRecordId": "Injecter l'identifiant comme paramètre de navigation"
- },
- "aggregations": {
- "add": {
- "choice": {
- "create": "Créer une nouvelle agrégation"
- }
- },
- "title": "Aggrégations"
- },
- "buttons": {
- "callback": {
- "attach": "Attacher à l'enregistrement",
- "displayField": "Afficher le champ",
- "export": "Exporter le jeu de données sélectionné",
- "modify": "Modifier automatiquement les lignes sélectionnées",
- "modifyField": "Champ à modifier",
- "modifyValue": "Value to attribute",
- "notify": {
- "message": "Message de notification"
- },
- "prefill": "Préremplir le formulaire avec les données sélectionnées",
- "save": "Sauvegarder automatiquement",
- "selectAllRecords": "Sélectionner tous les enregistrements",
- "selectAllRecordsActivePage": "Sélectionner tous les enregistrements sur la page active",
- "selectDisplay": "Sélectionner les champs affichés",
- "sendMail": "Envoyer le mail",
- "workflow": {
- "close": "Fermer le workflow",
- "confirm": "Message de confirmation",
- "next": "Aller à l'étape suivante",
- "previous": "Aller à l'étape précédente"
- }
- },
- "confirmation": {
- "defaultText": "Êtes-vous sûr de vouloir supprimer cet enregistrement ?",
- "text": "Texte de confirmation (facultatif)",
- "title": "Confirmer l'action"
- },
- "create": "Ajouter un bouton",
- "defaultName": "Bouton d'action",
- "enable": "Activer",
- "inline": {
- "displayIf": {
- "title": "Condition d'affichage",
- "tooltip": "Le bouton ne s'affichera sur la ligne que si la condition est remplie"
- },
- "title": "Inline",
- "tooltip": "Lorsque cette option est activée, le bouton s'affiche sur chaque ligne de la grille au lieu de l'en-tête du widget"
- },
- "placeholder": {
- "modifyValue": "Supprimer la valeur"
- },
- "requireConfirmation": "Exiger une confirmation",
- "title": "Bouton d'action rapide",
- "tooltip": {
- "attach": "Si activé, vous devez fournir un formulaire et un champ dans ce formulaire. Toutes les lignes sélectionnées seront attachées à un enregistrement de ce formulaire. L'utilisateur pourra choisir cet enregistrement grâce au champ donné.",
- "mail": {
- "selectDistributionList": "Sélectionnez la liste de distribution qui fournira les destinataires de l'email",
- "selectTemplates": "Sélectionnez les modèles d'email que les utilisateurs pourront choisir en utilisant l'action"
- },
- "notify": "Si activé, vous devez fournir un canal de diffusion et un message.Toutes les lignes sélectionnées seront envoyées en tant que notification unique sur le canal spécifié. Le message fourni est utilisé pour définir l'action de la notification.",
- "publish": "Si activé, vous devez fournir un canal de diffusion. Toutes les lignes sélectionnées seront envoyées en tant que notification unique sur le canal spécifié. Quiconque écoutant sur ce canal pourra recevoir ces enregistrements."
- }
- },
- "display": {
- "actionsTitle": "Afficher le titre des actions",
- "injectClasses": {
- "title": "Injecter des valeurs en tant que classes CSS",
- "tooltip": "Lorsqu'un champ est sélectionné, sa valeur sera ajoutée à l'élément en tant que classe, lui permettant d'être ciblé par un style personnalisé"
- },
- "showSingleActionAsButton": "Afficher une seule action sous forme de bouton",
- "singleSelection": "Sélection unique"
- },
- "hint": {
- "actions": {
- "actionsAsIcons": "Si activé, au lieu d'afficher le menu à trois points, toutes les actions seront affichées sous forme d'icônes côte à côte",
- "add": "L'utilisateur peut ajouter de nouveaux enregistrements avec le modèle choisi, s'il en a la permission",
- "automaticallyMapSelectedRows": "Mappez automatiquement les lignes du widget de grille sélectionnées à un état du tableau de bord",
- "automaticallyMapViewRows": "Mapper automatiquement les lignes du widget de grille en vue d'un état de tableau de bord",
- "convert": "L'utilisateur peut convertir les enregistrements avec les autres modèles de la ressource sélectionnée, s'il en a la permission",
- "copyLink": "Si activé, les utilisateurs peuvent copier la même URL de la page \"Naviguer vers\" sur les actions de ligne",
- "delete": "L'utilisateur peut supprimer les enregistrements affichés, s'il en a la permission",
- "export": "L'utilisateur peut exporter les enregistrements affichés",
- "goTo": "L'utilisateur peut accéder au tableau de bord d'enregistrement",
- "inline": "L'utilisateur peut éditer dans la grille les enregistrements affichés, s'il en a la permission",
- "mapSelectedRows": "Bouton Activer pour mapper les lignes du widget de grille sélectionnées à un état du tableau de bord",
- "mapViewRows": "Activer le bouton pour mapper les lignes du widget de grille en vue d'un état de tableau de bord",
- "navigateToPage": "L'utilisateur peut accéder au tableau de bord d'enregistrement",
- "show": "L'utilisateur peut afficher l'historique complet des enregistrements affichés",
- "showDetails": "L'utilisateur peut afficher les informations des enregistrements affichés",
- "singleSelection": "Single selection",
- "state": "Sélectionnez l'état du tableau de bord à utiliser pour mapper et enregistrer les ID de lignes. Si aucun état n'est sélectionné, un nouveau sera créé pour le widget.",
- "update": "L'utilisateur peut mettre à jour les enregistrements affichés"
- },
- "attachToRecord": "Si les enregistrements sélectionnés ne sont joints à aucun enregistrement, l'action sera annulée",
- "buttons": "Les boutons d'action rapides apparaîtront dans le widget et vous permettront de réaliser chacune des actions ci-dessous",
- "executionOrder": "Les actions seront exécutées dans l'ordre affiché",
- "prefillForm": "Si aucun enregistrement n'est créé à cette étape, l'action sera annulée"
- },
- "layouts": {
- "add": {
- "choice": {
- "create": "Créer une nouvelle mise en page",
- "load": "Charger une mise en page existante"
- },
- "title": "Ajouter une nouvelle mise en page"
- },
- "edit": {
- "title": "Configuration de la mise en page"
- },
- "select": "Sélectionner une mise en page",
- "title": "Mise en page de la grille"
- },
- "tooltip": {
- "template": "Sélectionnez un modèle à utiliser pour l'ajout et l'édition des enregistrements",
- "useRecordId": "L'url de redirection contiendra l'identifiant de l'élément, afin de naviguer à une page contextuelle, si configurée"
- },
- "warnings": {
- "add": "Veuillez sélectionner un modèle",
- "general": "Attention: les actions contiennent des erreurs"
- }
- },
- "iconPicker": {
- "default": "Standard",
- "placeholder": "Chezchez un symbole"
- },
- "map": {
- "basemap": "Fond de carte",
- "category": "Catégories rapides",
- "dataset": "Sélection du jeu de données",
- "edit": {
- "aggregation": "Agrégation",
- "cluster": {
- "autoSizeCluster": "Taille automatique des clusters",
- "cluster": "Cluster",
- "clusterSettings": "Paramètres de groupes",
- "clustering": "Clustering",
- "fields": "Champs de groupes",
- "font": "Police",
- "fontSize": "Taille de la police",
- "high": "Haut",
- "label": "Libellé du groupes",
- "lightMode": "Mode lumineux",
- "low": "Faible",
- "max": "Max",
- "min": "Min",
- "overrideSymbol": "Remplacer le symbole de groupes",
- "popups": "Groupes pop-ups",
- "radius": "Rayon de groupes",
- "sizeRange": "Gamme de taille",
- "symbol": "Style de symboles"
- },
- "datasource": {
- "origin": "Origine"
- },
- "fields": "Champs",
- "filter": "Filtre",
- "groupLayers": "Regrouper les calques",
- "labels": "Étiquettes",
- "layerDatasource": "Source de données de la couche",
- "layerEdition": "Edition de couche",
- "layerProperties": "Propriétés",
- "layerStyling": "Styles",
- "popup": "Popup",
- "properties": {
- "defaultVisibility": "Visible par défaut",
- "from": "de zoom ",
- "opacity": "Opacité",
- "to": " à zoom",
- "visibilityRange": "Plage de visibilité",
- "zoom": "Zoom"
- },
- "reduction": {
- "noReduction": "Pas de réduction",
- "reduction": "Réduction"
- },
- "style": {
- "color": "Couleur",
- "fieldForSize": "Taille basée sur le champ",
- "icon": "Symbole",
- "size": "Taille",
- "stylingType": "Style de {{layerType}}"
- },
- "styling": {
- "heatmapOptions": {
- "blur": "Flou",
- "gradient": "Gradient",
- "minOpacity": "Opacité minimum",
- "radius": "Rayon"
- }
- }
- },
- "errors": {
- "latitude": "Latitude incorrecte, merci de sélectionner un nombre entre -90 et 90",
- "longitude": "Longitude incorrecte, merci de sélectionner un nombre entre -180 et 180"
- },
- "geospatial": {
- "layersStyles": {
- "fill": {
- "color": "Couleur du remplissage",
- "opacity": "Opacité du remplissage",
- "title": "Remplissage"
- },
- "marker": {
- "color": "Couleur du marqueur",
- "opacity": "Opacité du marqueur",
- "title": "Marqueur"
- },
- "outline": {
- "color": "Couleur du contour",
- "opacity": "Opacité du contour",
- "title": "Contour",
- "width": "Largeur du contour"
- },
- "title": "Styles de calque"
- }
- },
- "layers": {
- "add": "Ajouter un nouveau calque",
- "chooseLayer": "Choisir un calque existant",
- "createGroup": "Créer un nouveau groupe de couches",
- "createLayer": "Créer un nouveau calque",
- "dataSource": {
- "fieldMapping": "Mapping des Champs",
- "geoField": "GeoField",
- "latitude": "Latitude",
- "longitude": "Longitude"
- },
- "edit": "Mettre à jour le calque {{name}}",
- "online": {
- "info": "Charger des couches depuis arcGIS online",
- "select": "Chercher des couches",
- "selected": "Couches sélectionnées",
- "title": "Couches en ligne"
- },
- "point": {
- "addNew": "Ajouter une nouvelle règle",
- "category": "Couches rapides",
- "color": "Couleur",
- "info": "Afficher des marqueurs sur la carte pour chaque enregistrement, en indiquant les champs de géolocation de la source de données",
- "rules": "Règles de marquarge",
- "rulesInfo": "Configurer la taille et la couleur des marqueurs",
- "size": "Taille",
- "title": "Marqueurs"
- },
- "popup": {
- "addField": "Ajouter un champ",
- "description": "Description",
- "fields": "Champs",
- "fieldsElements": {
- "description": "Description",
- "title": "Titre"
- },
- "popup": "Popup",
- "popupElements": "Éléments de popup",
- "text": "Texte",
- "title": "Titre",
- "tooltip": {
- "text": "Tapez '{' pour utiliser les champs de la source de données"
- }
- },
- "remove": "Supprimer le calque",
- "selectLayer": "Sélectionner un calque",
- "styling": {
- "style": "Style"
- },
- "types": {
- "cluster": "Groupes",
- "heatmap": "Carte de chaleur",
- "point": "Point",
- "polygon": "Polygone"
- }
- },
- "legend": {
- "high": "Haut",
- "low": "Faible",
- "title": "Légende"
- },
- "popup": {
- "label": "Champs affichés dans le popup",
- "location": "Emplacement",
- "of": "{{current}} sur {{total}}",
- "zoomTo": "Zoomer sur"
- },
- "properties": {
- "basemap": "Fond de carte",
- "controls": {
- "download": "Télécharger",
- "lastUpdate": "Dernière mise à jour le",
- "lastUpdateError": "L'heure de la dernière modification n'a pas pu être chargée",
- "lastUpdatePosition": "Choisissez une position pour afficher l'élément",
- "layer": "Couches",
- "legend": "Légende",
- "measure": "Mesure",
- "search": "Recherche",
- "timedimension": "Dimension temporelle",
- "title": "Contrôles de la carte"
- },
- "geographicExtent": "Type d'étendue",
- "geographicExtentValue": "Valeur de l'étendue",
- "latitude": "Latitude du centre de la carte",
- "longitude": "Longitude du centre de la carte",
- "setByMap": "Utiliser la vue actuelle",
- "title": "Affichage par défaut",
- "webmap": "WebMap",
- "zoom": "Zoom par défaut"
- },
- "renderer": {
- "default": "Défaut",
- "defaultLabel": "Libellé par défaut",
- "label": "Libellé",
- "symbol": "Symbole",
- "uniqueValue": "Valeurs uniques",
- "value": "Valeur"
- },
- "tooltip": {
- "category": "Sélectionnez un champ pour séparer vos enregistrements en différentes catégories",
- "cluster": {
- "autoSize": "La taille des clusters est automatique si activé, sinon, vous pouvez la définir.",
- "lightMode": "Le texte s'affichera en blanc si activé, sinon en noir."
- },
- "dataset": "Sélectionnez des champs ci-dessous et déplacez-les vers 'champs sélectionnés' sur la droite. Ils seront présents dans le pop-up affiché en cliquant sur les marqueurs",
- "default": {
- "latitude": "Définissez la latitude par défaut du centre de la carte. 'Utiliser la vue actuelle' sauvegardera la latitude de la carte d'aperçu.",
- "longitude": "Définissez la longitude par défaut du centre de la carte. 'Utiliser la vue actuelle' sauvegardera la longitude de la carte d'aperçu.",
- "zoom": "Sélectionnez un zoom par défaut"
- },
- "geographicExtent": "Vous pouvez entrer une valeur statique, ou utiliser les notations {{context}} ou {{filter}} pour injecter la valeur"
- }
- },
- "style": {
- "customStyling": "Style personnalisé"
- },
- "summaryCard": {
- "add": "Ajouter un carte",
- "card": {
- "dataSource": {
- "layoutStyles": {
- "queryFilters": {
- "help": "N'oubliez pas de supprimer les variables non utilisées.",
- "noVariables": "Aucune variable définie",
- "refresh": "Afficher toutes les variables graphQL",
- "title": "Mappage de variables GraphQL",
- "tooltip": "Définissez les valeurs des variables GraphQL définies dans la requête de données de référence. Vous pouvez obtenir les valeurs des filtres à l'aide des modèles {{filter.}}. Par exemple : { \"region\": {{filter.region}} }"
- },
- "title": "Styles de mise en page",
- "use": "Utiliser les styles de mise en page",
- "wholeRow": {
- "option1": "Appliquer à tous les champs",
- "option2": "Appliquer sur toute la carte",
- "title": "Styles de lignes entières :"
- }
- },
- "title": "Source de données"
- },
- "display": {
- "dataSource": "Afficher le lien vers la source de données",
- "header": "Titre",
- "padding": "Utiliser la marge intérieure",
- "title": "Affichage de la carte",
- "tooltip": {
- "datasource": "Ajoute un bouton pour afficher la source de données de la carte"
- }
- },
- "gridActions": {
- "title": "Actions de grille",
- "tooltip": "Actions de grille activées"
- },
- "preview": {
- "title": "Prévisualisation"
- },
- "textEditor": {
- "alert": "Vous pouvez ajouter des variables ex: {{data.variable}} et faire des calculs ex: {{calc.round( value ; precision )}}",
- "title": "Éditeur de texte"
- },
- "title": "Paramètres de carte",
- "valueSelector": {
- "title": "Selection de valeur"
- }
- },
- "create": {
- "choice": {
- "blank": "Créer une nouvelle carte",
- "template": "Utiliser un modèle"
- }
- },
- "dynamic": "Dynamique",
- "exportable": "Autoriser l'export des cartes",
- "gridMode": "Peut être affiché en grille",
- "hint": {
- "dynamic": "Les cartes dynamiques adaptent leur affichage en fonction du nombre d'éléments dans la source de données. Vous devez définir une unique carte qui sera répétée pour chaque élément."
- },
- "loadMore": {
- "infiniteScroll": "Utiliser le défilement infini",
- "pagination": "Utiliser la pagination",
- "title": "Déclencheur pour charger plus de données"
- },
- "options": {
- "ariaLabel": "***"
- },
- "static": "Statique"
- },
- "tabs": {
- "addNewTab": "Ajouter un nouvel onglet",
- "deleteTab": "Supprimer l'onglet"
- }
- },
- "styling": "Modifier le style",
- "summaryCard": {
- "dataSource": "Source",
- "errors": {
- "invalidSource": "La source de données est invalide : veuillez modifier les paramètres."
- },
- "viewAsCards": "Afficher en cartes",
- "viewAsGrid": "Afficher en grille"
- },
- "text": {
- "aggregations": {
- "alert": "Vous pouvez créer des agrégations personnalisées et les injecter dans l'éditeur à l'aide d'espaces réservés {{aggregation.}}.",
- "template": {
- "add": "Ajouter une nouvelle agrégation de modèles",
- "edit": "Modifier l'agrégation de modèles"
- }
- }
- }
- }
- },
- "kendo": {
- "combobox": {
- "clearTitle": "Supprimer la valeur",
- "noDataText": "No available choice"
- },
- "datepicker": {
- "dateFormat": "AAAA/MM/JJ ou une expression ({{today}} ou {{now}})",
- "dateLabel": "Sélectionnez une date",
- "endLabel": "Date de fin",
- "startLabel": "Date de début",
- "today": "Aujourd'hui",
- "toggle": "Sélectionnez une date"
- },
- "datetimepicker": {
- "accept": "Accepter",
- "acceptLabel": "Accepter",
- "cancel": "Annuler",
- "cancelLabel": "Annuler",
- "dateTab": "Date",
- "dateTabLabel": "Date",
- "now": "Maintenant",
- "timeTab": "Heure",
- "timeTabLabel": "Heure",
- "today": "Aujourd'hui",
- "toggle": "Sélectionnez une date et une heure"
- },
- "editor": {
- "addColumnAfter": "Nouvelle colonne à droite",
- "addColumnBefore": "Nouvelle colonne à gauche",
- "addRowAfter": "Nouvelle ligne en bas",
- "addRowBefore": "Nouvelle ligne en haut",
- "alignCenter": "Centrer",
- "alignJustify": "Justifier",
- "alignLeft": "Aligner à gauche",
- "alignRight": "Aligner à droite",
- "backColor": "Couleur de fond",
- "bold": "Gras",
- "cleanFormatting": "Supprimer le format",
- "createLink": "Nouveau lien",
- "deleteColumn": "Supprimer la colonne",
- "deleteRow": "Supprimer la ligne",
- "deleteTable": "Supprimer la table",
- "dialogApply": "Appliquer",
- "dialogCancel": "Annuler",
- "dialogInsert": "Insérer",
- "dialogUpdate": "Modifier",
- "fileText": "Texte",
- "fileTitle": "Titre",
- "fileWebAddress": "Adresse Web",
- "fontFamily": "Sélectionnez une police de caractère",
- "fontSize": "Sélectionnez la taille de police",
- "foreColor": "Couleur",
- "format": "Format",
- "imageAltText": "Texte alternatif",
- "imageHeight": "Hauteur (px)",
- "imageWebAddress": "Adresse Web",
- "imageWidth": "Largeur (px)",
- "indent": "Augmenter le retrait",
- "insertFile": "Nouveau fichier",
- "insertImage": "Nouvelle image",
- "insertOrderedList": "Nouvelle liste ordonnée",
- "insertTable": "Nouvelle table",
- "insertUnorderedList": "Nouvelle liste non-ordonnée",
- "italic": "Italique",
- "linkOpenInNewWindow": "Ouvrir dans une nouvelle fenêtre",
- "linkText": "Texte",
- "linkTitle": "Titre",
- "linkWebAddress": "Adresse Web",
- "outdent": "Diminuer le retrait",
- "print": "Imprimer",
- "redo": "Répéter",
- "selectAll": "Tout sélectionner",
- "strikethrough": "Barrer",
- "subscript": "Indice",
- "superscript": "Exposant",
- "underline": "Souligner",
- "undo": "Annuler",
- "unlink": "Supprimer le lien",
- "unselectAll": "Tout déselectionner",
- "viewSource": "Voir la source"
- },
- "fileselect": {
- "dropFilesHere": "Déposez les fichiers ici pour les sélectionner",
- "select": "Choisir des fichiers..."
- },
- "grid": {
- "columnMenu": "'Menu de la colonne {columnName}'",
- "columns": "Colonnes",
- "columnsApply": "Appliquer",
- "columnsReset": "Réinitialiser",
- "detailCollapse": "Réduire",
- "detailExpand": "Étendre",
- "filter": "Filtrer",
- "filterAfterOperator": "Est après",
- "filterAfterOrEqualOperator": "Est après ou égal à",
- "filterAndLogic": "Et",
- "filterBeforeOperator": "Est avant",
- "filterBeforeOrEqualOperator": "Est avant ou égal à",
- "filterBooleanAll": "(Tous)",
- "filterClearButton": "Effacer",
- "filterContainsOperator": "Contient",
- "filterDateToday": "Aujourd'hui",
- "filterDateToggle": "Afficher/masquer le calendrier",
- "filterEndsWithOperator": "Termine par",
- "filterEqOperator": "Est égal à",
- "filterFilterButton": "Filtrer",
- "filterGtOperator": "Est plus grand que",
- "filterGteOperator": "Est plus grand que ou égal à",
- "filterInputLabel": "'Filtrer {columnName}'",
- "filterIsEmptyOperator": "Est vide",
- "filterIsFalse": "est faux",
- "filterIsInOperator": "Est dans",
- "filterIsNotEmptyOperator": "Est non-vide",
- "filterIsNotInOperator": "N'est pas dans",
- "filterIsNotNullOperator": "Est non-nul",
- "filterIsNullOperator": "Est nul",
- "filterIsTrue": "est vrai",
- "filterLtOperator": "Est plus petit que",
- "filterLteOperator": "Est plus petit que ou égal à",
- "filterMenuLogicDropDownLabel": "'Logique de filtre sur {columnName}'",
- "filterMenuOperatorsDropDownLabel": "'Opérateurs de filtre sur {columnName}'",
- "filterMenuTitle": "'Menu de filtre sur {columnName}'",
- "filterNotContainsOperator": "Ne contient pas",
- "filterNotEqOperator": "Est différent de",
- "filterNumericDecrement": "Décrémenter la valeur",
- "filterNumericIncrement": "Incrémenter la valeur",
- "filterOrLogic": "Ou",
- "filterStartsWithOperator": "Commence par",
- "gridLabel": "Table de données",
- "groupCollapse": "Réduire le groupe",
- "groupExpand": "Étendre le groupe",
- "groupPanelEmpty": "Faites glisser un en-tête de colonne et déposez-le ici pour grouper par cette colonne",
- "loading": "Chargement",
- "lock": "Verrouiller",
- "noRecords": "Aucun enregistrement disponible",
- "pagerFirstPage": "Aller à la première page",
- "pagerItems": "éléments",
- "pagerItemsPerPage": "éléments par page",
- "pagerLabel": "'Navigation de page, page {currentPage} sur {totalPages}'",
- "pagerLastPage": "Aller à la dernière page",
- "pagerNextPage": "Aller à la page suivante",
- "pagerOf": "sur",
- "pagerPage": "Page",
- "pagerPageNumberInputTitle": "Numéro de page",
- "pagerPreviousPage": "Aller à la page précédente",
- "selectAllCheckboxLabel": "Tout sélectionner",
- "selectionCheckboxLabel": "Sélectionner la ligne",
- "setColumnPosition": "Définir la position de la colonne",
- "sortAscending": "Trier par ordre croissant",
- "sortDescending": "Trier par ordre décroissant",
- "sortable": "Triable",
- "sortedAscending": "Trié par ordre croissant",
- "sortedDefault": "Non trié",
- "sortedDescending": "Trié par ordre décroissant",
- "stick": "Épingler",
- "unlock": "Déverrouiller",
- "unstick": "Désépingler"
- },
- "multiselect": {
- "clearTitle": "Supprimer la valeur",
- "noDataText": "No available choice"
- },
- "pager": {
- "firstPage": "Aller à la première page",
- "items": "éléments",
- "itemsPerPage": "éléments par page",
- "label": "'Navigation de page, page {currentPage} sur {totalPages}'",
- "lastPage": "Aller à la dernière page",
- "nextPage": "Aller à la page suivante",
- "of": "sur",
- "page": "Page",
- "pageNumberInputTitle": "Numéro de page",
- "previousPage": "Aller à la page précédente"
- },
- "tilelayout": {
- "component": {
- "items": "articles",
- "itemsPerPage": "Articles par page",
- "of": "de",
- "page": "Page"
- }
- },
- "timepicker": {
- "accept": "Accepter",
- "acceptLabel": "Accepter",
- "cancel": "Annuler",
- "cancelLabel": "Annuler",
- "now": "Maintenant",
- "toggle": "Sélectionner une heure"
- },
- "upload": {
- "dropFilesHere": "Déposez les fichiers ici pour les importer",
- "invalidMaxFileSize": "Taille du fichier trop grande.",
- "select": "Sélectionner les fichiers..."
- }
- },
- "models": {
- "apiConfiguration": {
- "authType": "Type d'authentification",
- "new": "Nouvelle configuration d'API",
- "selectAuthType": "Sélectionnez le type d'authentification"
- },
- "application": {
- "description": "Description",
- "errors": {
- "style": {
- "notFound": "Le style de l'application n'a pas pu être chargé"
- }
- },
- "id": "ID de l'application",
- "menu": "Menu latéral",
- "new": "Nouvelle application",
- "notifications": {
- "notPublished": "L'application n'a pas pu être publiée.",
- "published": "L'application {{value}} a été publiée.",
- "updated": "Application modifiée."
- },
- "setAsFavorite": "Ajouter aux favoris",
- "subscription": {
- "create": "Créer un abonnement"
- }
- },
- "channel": {
- "create": "Créer un canal de diffusion",
- "edit": "Modifier le canal",
- "new": "Nouveau canal de diffusion"
- },
- "comment": {
- "write": "Ecrire un commentaire..."
- },
- "customNotification": {
- "lastExecution": "Dernière exécution",
- "schedule": "Fréquence",
- "type": "Type"
- },
- "dashboard": {
- "activateFiltering": "Activer le filtre",
- "buttonActions": {
- "add": "Ajouter une action de bouton",
- "category": "Catégorie de bouton",
- "confirmDelete": "Voulez-vous vraiment supprimer cette action de bouton ?",
- "edit": "Modifier l'action du bouton",
- "href": {
- "title": "Bouton href",
- "tooltip": "L'attribut href spécifie l'URL de destination lorsque le bouton est cliqué. Peut être une URL relative ou absolue."
- },
- "one": "Action du bouton",
- "openInNewTab": "Ouvrir dans un nouvel onglet",
- "text": "Texte du bouton",
- "variant": "Variante de bouton"
- },
- "closable": "Peut être fermé",
- "context": {
- "datasource": {
- "alert": "Sélectionnez une source de données, afin de définir une page par enregistrement de la source de données. Vous pouvez également définir un modèle qui sera chargé par défaut si aucune page spécifique n'est créée pour un enregistrement.",
- "info": "Indiquez le champ à utiliser lors de la sélection des enregistrements.",
- "set": "Définir la source de données contextuelle",
- "title": "Source de données contextuelle",
- "update": "Mettre à jour la source de données contextuelle"
- },
- "displayField": "Champ d'affichage",
- "edition": {
- "element": "Vous éditez la page qui sera affichée pour l'élément sélectionné.",
- "template": "Vous éditez le modèle de base de la page. Il sera utilisé par défaut si aucune vue n'a été créée pour l'élément à charger."
- },
- "notifications": {
- "creatingTemplate": "Création d'une nouvelle vue",
- "loadDefault": "Affichage de la vue générique",
- "templateCreated": "Nouvelle vue créée"
- },
- "origin": "Origine du contexte",
- "refData": {
- "element": "Élément"
- },
- "selectDisplayField": "Sélectionnez le champ d'affichage",
- "selectOrigin": "Sélectionnez la source de données",
- "title": "Contexte",
- "tooltip": {
- "useContextEditor": "Utiliser l'éditeur de contexte",
- "useDefaultEditor": "Utiliser l'éditeur par défaut"
- }
- },
- "contextFilter": "Filtre contextuel",
- "dashboardFilter": "Filtre du tableau de bord",
- "deactivateFiltering": "Désactiver le filtre",
- "filterVariant": {
- "title": "Variante de filtre",
- "variantsOptions": {
- "selectOrigin": "Sélectionner une variante de filtre",
- "variant_default": "Défaut",
- "variant_modern": "Moderne"
- }
- },
- "historicalDate": "Récupérer les données historiques",
- "keepPrevious": {
- "title": "Conserver les valeurs de filtre précédentes",
- "tooltip": "Si sélectionné, lors de la navigation d'un tableau de bord à un autre, si le même filtre est présent dans les deux tableaux de bord, la valeur sera conservée"
- },
- "share": "Partager le tableau de bord",
- "states": {
- "create": "Créer un état",
- "delete": {
- "confirmationMessage": "Confirmez-vous la suppression de l'état {{state}}?",
- "title": "Supprimer l'état"
- },
- "few": "États",
- "new": "Nouvel état",
- "none": "Aucun état",
- "one": "État",
- "update": {
- "confirmationMessage": "États mis à jour avec succès",
- "title": "État de mise à jour"
- }
- },
- "tooltip": {
- "filter": {
- "closable": "Lorsque la variante est moderne ou que l'application est utilisée comme élément web, un bouton s'affichera pour permettre à l'utilisateur de cacher le filtre",
- "fields": "Vous pouvez utiliser les champs du filtre du tableau de bord, ou utiliser des valeurs statiques.",
- "position": "Ne s'applique que lorsque la variant par défaut est active"
- },
- "historicalDate": "Vous pouvez récupérer les données à une date spécifique en utilisant un champ du filtre du tableau de board.\nVeuillez alors utiliser cette syntaxe : {{filter.}}."
- }
- },
- "form": {
- "core": "Source",
- "create": "Créer un formulaire",
- "edit": "Modifier le formulaire",
- "field": {
- "itemsLabel": "Éléments d'étiquette",
- "label": "Étiquette",
- "name": "Nom du champ",
- "usedIn": "Utilisé par"
- },
- "new": "Nouveau formulaire",
- "notifications": {
- "savingFailed": "Échec de l'enregistrement, certains champs nécessitent votre attention."
- },
- "select": "Sélectionner un formulaire",
- "template": "Modèle"
- },
- "group": {
- "create": "Créer un groupe",
- "description": "Description",
- "fetch": "Récupérer les groupes du service",
- "title": "Titre"
- },
- "mapping": {
- "add": "Ajouter un rang à la table de correspondances",
- "edit": "Modifier un rang de la table de correspondances"
- },
- "page": {
- "add": "Ajouter une page",
- "tooltip": {
- "drag": "Glissez-déposez pour réorganiser",
- "duplicate": "Sélectionner l'application où copier la page"
- }
- },
- "positionAttribute": {
- "edit": "Modifier l'attribut de position",
- "new": "Nouvel attribut de position"
- },
- "pullJob": {
- "edit": "Modifier une tâche planifiée",
- "new": "Nouvelle tâche planifiée",
- "nextIteration": "Prochaine exécution",
- "path": "Chemin",
- "schedule": "Horaire planifié",
- "url": "Url"
- },
- "record": {
- "convert": "Convertir",
- "edit": "Modifier l'enregistrement",
- "new": "Nouvel enregistrement",
- "notifications": {
- "conversionIncomplete": "Il n'y a pas de correspondance entre le(s) enregistrement(s) sélectionné(s) et certains champs de ce formulaire.",
- "rowsAdded": "{{length}} ligne(s) ont été ajoutées à {{field}} dans l'enregistrement {{value}}.",
- "rowsNotAdded": "Erreur lors de l'ajout de ligne(s).",
- "uploadSuccessful": "Enregistrements importés avec succès"
- },
- "restore": "Restaurer",
- "select": "Sélectionnez un enregistrement"
- },
- "referenceData": {
- "add": "Ajouter une référence de données",
- "select": "Sélectionnez une référence de données"
- },
- "resource": {
- "create": "Créer une ressource",
- "select": "Sélectionnez une ressource"
- },
- "role": {
- "create": "Créer un rôle",
- "description": "Description",
- "title": "Titre"
- },
- "step": {
- "new": "Nouvelle étape"
- },
- "subscription": {
- "edit": "Modifier l'abonnement",
- "new": "Nouvel abonnement"
- },
- "user": {
- "firstName": "Prénom",
- "lastName": "Nom",
- "notifications": {
- "rolesUpdated": "Les rôles de {{username}} ont été modifiés.",
- "userImportFail": "L'importation d'utilisateurs a échoué."
- },
- "username": "Nom d'utilisateur"
- },
- "widget": {
- "add": "Ajouter un widget",
- "chart": {
- "defaultTitle": "Widget Graphique"
- },
- "delete": {
- "confirmationMessage": "Souhaitez-vous supprimer le widget ?",
- "title": "Supprimer le widget"
- },
- "display": {
- "border": "Afficher la bordure du widget",
- "expand": "Afficher le bouton pour développer le widget",
- "header": "Afficher l'en-tête du widget",
- "padding": "Utiliser la marge intérieure du widget",
- "searchable": "Autoriser la recherche",
- "sortable": "Autoriser le tri",
- "title": "Affichage des widgets",
- "tooltip": {
- "content": "Contenu de l'infobulle",
- "display": {
- "title": "Afficher l'infobulle",
- "tooltip": "Lorsqu'il est configuré, l'infobulle s'affiche lorsque vous survolez l'icône à côté du titre du widget"
- }
- }
- },
- "map": {
- "defaultTitle": "Widget Carte",
- "latitude": "Latitude",
- "longitude": "Longitude",
- "zoom": "Zoom"
- },
- "sorting": {
- "add": "Ajouter un champ",
- "delete": "Supprimer le champ de tri",
- "empty": "Aucun champ de tri défini",
- "field": "Champ",
- "label": "Étiquette",
- "management": "Gestion des champs de tri",
- "order": "Ordre",
- "select": "Sélectionnez un champ de tri...",
- "title": "Tri"
- },
- "tooltip": {
- "expandButton": {
- "expand": "Étendre le widget",
- "help": "Apparaît uniquement dans le front-office ou en mode prévisualisation.",
- "restore": "Restaurer la taille"
- },
- "selector": {
- "collapse": "Fermer la sélection de widget",
- "expand": "Afficher la sélection de widget"
- }
- }
- },
- "workflow": {
- "notifications": {
- "cannotGoToNextStep": "Impossible de passer à l'étape suivante",
- "cannotGoToPreviousStep": "Impossible de passer à l'étape précédente",
- "goToStep": "De retour à l'étape {{step}}."
- }
- }
- },
- "pages": {
- "administration": {
- "title": "Administration"
- },
- "aggregation": {
- "preview": {
- "label": "Aperçu des données d'agrégation",
- "missingAggregation": "Impossible de charger l'agrégation sélectionnée. Agrégation introuvable"
- }
- },
- "apiConfiguration": {
- "authentication": "Paramètres d'authentification",
- "baseUrl": "Point d'arrivée principal",
- "clientId": "ID Client",
- "graphQL": {
- "endpoint": "Point d'accès GraphQL",
- "title": "Paramètres de GraphQL"
- },
- "host": "Paramètres de l'hôte",
- "notifications": {
- "authTokenFetched": "Jeton d'authentification récupéré, faîtes un autre ping pour obtenir la vraie réponse.",
- "pingFailed": "La requête ping a échoué.",
- "pingReceived": "La requête ping a reçu une réponse positive."
- },
- "ping": "Essayer avec ces paramètres",
- "pingUrl": "Extension ping",
- "placeholder": {
- "baseUrl": "URL de base pour l'API",
- "clientId": "Entrez l'ID Client",
- "graphQLEndpoint": "Extension GraphQL",
- "pingUrl": "Entrez l'URL de l'extension ping",
- "scope": "Entrer le scope",
- "secret": "Entrer le client secret",
- "token": "Entrez le jeton d'accès pour l'authentification",
- "tokenPrefix": "Entrez un préfixe de jeton pour l'authentification",
- "tokenUrl": "Entrez l'URL du jeton d'accès"
- },
- "scope": "Scope",
- "secret": "Client Secret",
- "token": "Jeton d'accès",
- "tokenPrefix": "Préfixe de jeton",
- "tokenUrl": "URL du jeton d'accès"
- },
- "apiConfigurations": {
- "create": "Créer une configuration d'API"
- },
- "appBuilder": {
- "title": "Création de site"
- },
- "application": {
- "addPage": {
- "form": {
- "title": "Formulaires disponibles"
- },
- "selectType": "Sélectionnez le type de page que vous voulez créer",
- "startFromWidget": "Commencer avec un widget"
- },
- "empty": {
- "add": "Ajouter une page",
- "create": "Cliquez sur créer pour terminer le processus",
- "customize": "Personnalisez chacune des pages créées"
- },
- "positionAttributes": {
- "create": "Créer une catégorie de position",
- "title": "Attributs"
- },
- "settings": {
- "actions": "Actions"
- }
- },
- "applications": {
- "all": "Toutes les applications",
- "goTo": "Aller vers la liste d'applications",
- "recent": "Applications récentes",
- "title": "Mes applications"
- },
- "dashboard": {
- "update": {
- "exit": "Quitter sans sauvegarder les changements",
- "exitMessage": "Il y a des changements non sauvegardés dans la page, voulez-vous vraiment quitter cette page ?"
- }
- },
- "formBuilder": {
- "errors": {
- "choices": {
- "valueDuplicated": "Veuillez configurer des valeurs uniques pour les choix de la question : {{question}}"
- },
- "dataFieldDuplicated": "Doublon de nom de valeur : {{name}}. Indiquez un nom de valeur distinct pour chaque question.",
- "missingName": "Nom manquant pour un élément de la page : {{page}}. Veuillez configurer un nom valide (en format snake_case) pour sauvegarder le formulaire.",
- "multipletext": {
- "missingName": "Veuillez configurer un nom ou titre pour chaque champ de text de la question : {{question}}"
- },
- "selectApplication": "Application manquante pour un élément de la page : {{page}}. Veuillez sélectionner au moins une application dans les propriétés de {{question}} pour sauvegarder le formulaire.",
- "snakecase": "Le nom de valeur {{name}} de la page {{page}} est invalide. Veuillez configurer un nom valide (en format snake_case) pour sauvegarder le formulaire."
- },
- "move": {
- "down": "Descendre la question",
- "up": "Monter la question"
- },
- "questionsCategories": {
- "core": "Bibliothèque de questions"
- },
- "title": "Paramètres avancés"
- },
- "forms": {
- "title": "Formulaires disponibles"
- },
- "profile": {
- "notifications": {
- "notUpdated": "Erreur lors de l'enregistrement des préférences.",
- "updated": "Préférences sauvegardées."
- },
- "password": {
- "change": "Changer le mot de passe"
- },
- "title": "Votre profil"
- },
- "pullJobs": {
- "create": "Créer une tâche planifiée"
- },
- "referenceData": {
- "csv": "Fichier CSV d'entrée",
- "fields": {
- "fetch": "Récupérer les champs",
- "help": "Les champs sont calculés en fonction des attributs du premier élément dans la réponse de l'API",
- "missingConfig": "Impossible de récupérer les champs. Configuration manquante : {{config}}",
- "noFields": "Aucun champ trouvé",
- "title": "Champ"
- },
- "graphQLFilter": "Paramètres de la requête GraphQL",
- "pagination": {
- "cursorPath": "Chemin du curseur",
- "cursorVariable": "Variable de requête de curseur",
- "offsetVariable": "Variable de requête de décalage",
- "pageSizeVariable": "Variable de requête de taille de page",
- "pageVariable": "Variable de requête de numéro de page",
- "strategy": "Stratégie de pagination",
- "totalCountPath": "Chemin du nombre total d'articles",
- "usePagination": {
- "hint": "Dépend de la prise en charge de l'API, permet de récupérer des données par page",
- "text": "Utiliser la pagination"
- }
- },
- "path": {
- "placeholder": "Entrez un JSONPath valide",
- "title": "Chemin de données"
- },
- "payload": {
- "label": "Réponse de l'API",
- "show": "Afficher la réponse de l'API"
- },
- "placeholder": {
- "csv": "Insérer le CSV ici",
- "graphQLFilter": "Entrez un filtre graphQL qui sera utilisé une fois les choix cachés"
- },
- "queryName": "Nom de la requête",
- "tooltip": {
- "graphQLFilter": "Vous pouvez utiliser {{lastUpdate}} pour obtenir dynamiquement la dernière date de récupération au format SQL.",
- "path": "Utilise la syntaxe JSONPath pour extraire les éléments de la réponse JSON. Exemples: $.data[*].name, $.data..countries, $.data.countries.*"
- },
- "type": "Type",
- "validateCsv": "Valider le CSV",
- "valueField": "Champ de valeur"
- },
- "workflow": {
- "addStep": {
- "selectType": "Sélectionner quel type d'étape vous voulez créer."
- },
- "deleteStep": {
- "confirmationMessage": "Souhaitez-vous supprimer définitivement l'étape {{step}} ?"
- },
- "empty": {
- "add": "Ajoutez des étapes",
- "customize": "Personnalisez chacune des étapes créées."
- }
- }
- },
- "survey": {
- "customFunctions": {
- "getFollowupSummary": {
- "comment": "Commentaire",
- "followUp": {
- "numbered": "Suivi n°{{numéro}}",
- "one": "Suivi"
- },
- "initialInspection": "Inspection initiale",
- "inspectionAction": "Action d'inspection"
- }
- }
- }
-}
\ No newline at end of file
diff --git a/libs/shared/src/i18n/test.json b/libs/shared/src/i18n/test.json
index 5b7a2136f1..8aae89b463 100644
--- a/libs/shared/src/i18n/test.json
+++ b/libs/shared/src/i18n/test.json
@@ -454,7 +454,9 @@
"semicolon": "******",
"send": "******",
"separator": "******",
- "settings": "******",
+ "settings": {
+ "redirectAfterSubmission": "******"
+ },
"status": "******",
"status_active": "******",
"status_archived": "******",
diff --git a/libs/shared/src/lib/components/pages/graphql/queries.ts b/libs/shared/src/lib/components/pages/graphql/queries.ts
new file mode 100644
index 0000000000..7fc879f94c
--- /dev/null
+++ b/libs/shared/src/lib/components/pages/graphql/queries.ts
@@ -0,0 +1,38 @@
+import { gql } from 'apollo-angular';
+
+/** Graphql request for getting pages */
+export const GET_PAGES = gql`
+ query GetPages($first: Int, $filter: JSON) {
+ pages(first: $first, filter: $filter) {
+ edges {
+ node {
+ id
+ name
+ type
+ content
+ canSee
+ }
+ cursor
+ }
+ totalCount
+ pageInfo {
+ hasNextPage
+ endCursor
+ }
+ }
+ }
+`;
+
+export const GET_APPLICATION_PAGES = gql`
+ query GetApplicationPages($id: ID!) {
+ application(id: $id) {
+ pages {
+ id
+ name
+ type
+ visible
+ icon
+ }
+ }
+ }
+`;
\ No newline at end of file
diff --git a/libs/shared/src/lib/components/widgets/form-settings/form-settings.component.ts b/libs/shared/src/lib/components/widgets/form-settings/form-settings.component.ts
index a621c283a0..4340d40b17 100644
--- a/libs/shared/src/lib/components/widgets/form-settings/form-settings.component.ts
+++ b/libs/shared/src/lib/components/widgets/form-settings/form-settings.component.ts
@@ -6,6 +6,7 @@ import { Form, FormQueryResponse } from '../../../models/form.model';
import { GET_SHORT_FORM_BY_ID } from './graphql/queries';
import { Apollo } from 'apollo-angular';
import { WidgetSettings } from '../../../models/dashboard.model';
+import { Router } from '@angular/router';
/**
* Settings of Form widget.
@@ -35,8 +36,9 @@ export class FormSettingsComponent
* Settings of Form widget.
*
* @param apollo The apollo client
+ * @param router The router service
*/
- constructor(private apollo: Apollo) {
+ constructor(private apollo: Apollo, private router: Router) {
super();
}
diff --git a/libs/shared/src/lib/models/page.model.ts b/libs/shared/src/lib/models/page.model.ts
index f8a11d5f59..893692a851 100644
--- a/libs/shared/src/lib/models/page.model.ts
+++ b/libs/shared/src/lib/models/page.model.ts
@@ -90,6 +90,8 @@ export interface Page {
content: string;
})[];
autoDeletedAt?: Date;
+ /** Page to redirect to after form submission */
+ redirectTo?: string;
}
/** Model for page graphql query response */
diff --git a/libs/shared/src/lib/services/application/application.service.ts b/libs/shared/src/lib/services/application/application.service.ts
index cb8606ea5c..57a6bcdeed 100644
--- a/libs/shared/src/lib/services/application/application.service.ts
+++ b/libs/shared/src/lib/services/application/application.service.ts
@@ -2103,4 +2103,33 @@ export class ApplicationService {
? `${application.id}/${page.type}/${page.id}`
: `${application.id}/${page.type}/${page.content}`;
}
+ /**
+ * Update the redirectTo field of a page.
+ */
+ public updatePageRedirectTo(
+ page: Page,
+ redirectTo: string | null,
+ callback?: () => void
+ ): void {
+ console.log('updatePageRedirectTo called with:', { pageId: page.id, redirectTo });
+ if (!this.isUnlocked) {
+ console.warn('Application is locked');
+ return;
+ }
+
+ this.apollo
+ .mutate({
+ mutation: EDIT_PAGE,
+ variables: {
+ id: page.id,
+ redirectTo: redirectTo || null // Make sure we're sending null, not undefined
+ },
+ })
+ .subscribe(({ errors, data }) => {
+ console.log('Mutation response:', { errors, data });
+ if (!errors && data && callback) {
+ callback();
+ }
+ });
+ }
}
diff --git a/libs/shared/src/lib/services/application/graphql/mutations.ts b/libs/shared/src/lib/services/application/graphql/mutations.ts
index d8e244cd2d..67e2ca2838 100644
--- a/libs/shared/src/lib/services/application/graphql/mutations.ts
+++ b/libs/shared/src/lib/services/application/graphql/mutations.ts
@@ -18,6 +18,7 @@ export const ADD_PAGE = gql`
id
name
type
+ redirectTo
content
createdAt
canSee
@@ -36,6 +37,7 @@ export const DUPLICATE_PAGE = gql`
id
name
type
+ redirectTo
content
createdAt
canSee
@@ -63,6 +65,7 @@ export const RESTORE_PAGE = gql`
id
name
type
+ redirectTo
content
createdAt
canSee
@@ -79,6 +82,7 @@ export const EDIT_PAGE = gql`
$id: ID!
$name: String
$icon: String
+ $redirectTo: String
$permissions: JSON
$visible: Boolean
) {
@@ -86,6 +90,7 @@ export const EDIT_PAGE = gql`
id: $id
name: $name
icon: $icon
+ redirectTo: $redirectTo
permissions: $permissions
visible: $visible
) {
diff --git a/libs/shared/src/lib/services/application/graphql/queries.ts b/libs/shared/src/lib/services/application/graphql/queries.ts
index d0ea4a9a94..ca556b7743 100644
--- a/libs/shared/src/lib/services/application/graphql/queries.ts
+++ b/libs/shared/src/lib/services/application/graphql/queries.ts
@@ -34,6 +34,7 @@ export const GET_APPLICATION_BY_ID = gql`
canSee
canUpdate
canDelete
+ redirectTo
}
roles {
id