@airporting/integrations-app 0.4.168 → 0.4.170

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,4 @@
1
+ import type { WorksheetService } from '@/src/components/synchro/worksheetFields.types.ts';
1
2
  export type SynchroWorksheet = {
2
3
  sheetId: number;
3
4
  title: string;
@@ -10,8 +11,11 @@ export type SynchroWorksheetsResponse = {
10
11
  worksheets: SynchroWorksheet[];
11
12
  };
12
13
  /**
13
- * Les onglets d'un tableur Google, lus en direct par le compte de service
14
- * (app-api `GET /v1/synchro/spreadsheets/:id/worksheets`). Cache tres court :
15
- * un onglet renomme doit apparaitre a la prochaine ouverture de la liste.
14
+ * Les onglets d'un tableur, lus en direct (app-api
15
+ * `GET /v1/synchro/spreadsheets/:id/worksheets`) : par le compte de service
16
+ * Google, ou par l'application Airporting cote Graph quand le tableur est un
17
+ * fichier Excel (`service=excel` ; sans le parametre, l'API detecte elle-meme
18
+ * les identifiants de fichiers Excel enregistres). Cache tres court : un
19
+ * onglet renomme doit apparaitre a la prochaine ouverture de la liste.
16
20
  */
17
- export declare function useWorksheetsQuery(spreadsheetId: string | null): import("@tanstack/react-query").UseQueryResult<SynchroWorksheetsResponse, Error>;
21
+ export declare function useWorksheetsQuery(spreadsheetId: string | null, service?: WorksheetService): import("@tanstack/react-query").UseQueryResult<SynchroWorksheetsResponse, Error>;
@@ -1,3 +1,5 @@
1
+ import type { CompanyDestination } from '@/src/api/synchro/types.ts';
2
+ import type { WorksheetService } from '@/src/components/synchro/worksheetFields.types.ts';
1
3
  type Props = {
2
4
  label?: string | null;
3
5
  help?: string | null;
@@ -8,12 +10,19 @@ type Props = {
8
10
  error?: string;
9
11
  /** Identifiant du tableur choisi dans le champ voisin ; null tant qu'il ne l'est pas. */
10
12
  spreadsheetId: string | null;
13
+ /** Service qui heberge le tableur ; `gsheet` par defaut. */
14
+ service?: WorksheetService;
15
+ /** Autres jobs qui ecrivent deja l'onglet saisi sur ce tableur. */
16
+ collisions?: CompanyDestination[] | null;
11
17
  };
12
18
  /**
13
- * Selecteur d'onglet d'un tableur Google : la liste vient du tableur choisi a
14
- * cote, en direct (relue a chaque ouverture et au retour sur la fenetre).
15
- * Sans tableur lisible, on retombe en saisie libre avec la raison : la valeur
16
- * enregistree n'est jamais perdue, meme si l'onglet a ete renomme.
19
+ * Selecteur d'onglet d'un tableur : la liste vient du tableur choisi a cote,
20
+ * en direct (relue a chaque ouverture et au retour sur la fenetre). Marche
21
+ * pour un tableur Google comme pour un fichier Excel, le service etant deduit
22
+ * du champ voisin par le formulaire.
23
+ * La saisie reste libre : on peut taper un nom qui n'existe pas encore, le
24
+ * job creera l'onglet. Sans tableur lisible, on retombe en saisie libre avec
25
+ * la raison, et la valeur enregistree n'est jamais perdue.
17
26
  */
18
- export declare function InputWorksheetSelector({ label, help, required, disabled, value, onChange, error, spreadsheetId, }: Props): import("react/jsx-runtime").JSX.Element;
27
+ export declare function InputWorksheetSelector({ label, help, required, disabled, value, onChange, error, spreadsheetId, service, collisions, }: Props): import("react/jsx-runtime").JSX.Element;
19
28
  export {};
@@ -0,0 +1,12 @@
1
+ import type { CompanyDestination } from '@/src/api/synchro/types.ts';
2
+ type Props = {
3
+ /** Autres jobs de la societe qui ecrivent deja cet onglet de ce tableur. */
4
+ collisions?: CompanyDestination[] | null;
5
+ };
6
+ /**
7
+ * Avertissement en ligne sous un champ d'onglet : un autre job ecrit deja
8
+ * dans cet onglet du meme tableur, les deux synchros s'ecraseraient. Rendu
9
+ * sous la saisie libre comme sous le selecteur, tableur Google ou Excel.
10
+ */
11
+ export declare function WorksheetCollisionAlert({ collisions }: Props): import("react/jsx-runtime").JSX.Element | null;
12
+ export {};
@@ -0,0 +1,23 @@
1
+ import type { WorksheetService } from '@/src/components/synchro/worksheetFields.types.ts';
2
+ export declare const WORKSHEET_FIELD_NAMES: Set<string>;
3
+ export declare const SPREADSHEET_FIELD_NAMES: string[];
4
+ /**
5
+ * Nom du champ voisin de meme prefixe qui porte `suffix`, ou null quand le
6
+ * champ d'onglet ne suit pas la convention `*Sheet_Name` (ex. `Sheet_Name`,
7
+ * `Export_Sheet_Name`, `Import_Sheet_Name`). Renvoyer null plutot que le nom
8
+ * du champ lui-meme evite de lire le nom de l'onglet comme s'il etait un
9
+ * identifiant de tableur.
10
+ */
11
+ export declare function neighbourFieldName(name: string | null | undefined, suffix: string): string | null;
12
+ export declare function spreadsheetIdOf(values: Record<string, unknown>, key: string): string | null;
13
+ /**
14
+ * Le service du tableur d'un champ d'onglet, dans cet ordre :
15
+ *
16
+ * 1. le type de la question voisine `*Spreadsheet_Id` de meme prefixe
17
+ * (`excel_account_selector` = fichier Excel), sinon celui du premier champ
18
+ * tableur connu du formulaire ;
19
+ * 2. le champ cache `Worksheet_Type` (`Excel` contre `GoogleSheets`), teste
20
+ * d'abord sur le prefixe du champ d'onglet puis sur le nom nu ;
21
+ * 3. a defaut, un tableur Google : c'est le cas historique.
22
+ */
23
+ export declare function worksheetServiceOf(fieldTypes: Record<string, string>, values: Record<string, unknown>, name: string | null | undefined): WorksheetService;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Service qui heberge le tableur d'un champ d'onglet : un tableur Google
3
+ * (`gsheet`) ou un fichier Excel sur le SharePoint du client (`excel`). Le
4
+ * type de question reste `gsheets_worksheet_selector` dans les deux cas, pour
5
+ * ne pas casser les 33 formulaires Excel deja en base : c'est le front qui
6
+ * deduit le service et le passe a l'API.
7
+ */
8
+ export type WorksheetService = 'gsheet' | 'excel';
Binary file