@airporting/integrations-app 0.4.167 → 0.4.169
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.
- package/dist/mf/2070.css +73 -73
- package/dist/mf/5741.js +1 -1
- package/dist/mf/@mf-types/compiled-types/api/synchro/synchroWorksheetsQuery.d.ts +21 -0
- package/dist/mf/@mf-types/compiled-types/components/synchro/inputs/InputWorksheetSelector.d.ts +27 -0
- package/dist/mf/@mf-types/compiled-types/components/synchro/inputs/WorksheetCollisionAlert.d.ts +12 -0
- package/dist/mf/@mf-types/compiled-types/components/synchro/src/defaultScheduleMinute.d.ts +22 -0
- package/dist/mf/@mf-types/compiled-types/components/synchro/worksheetFields.d.ts +23 -0
- package/dist/mf/@mf-types/compiled-types/components/synchro/worksheetFields.types.d.ts +8 -0
- package/dist/mf/@mf-types.zip +0 -0
- package/dist/mf/__federation_expose_synchronisation.js +1 -1
- package/dist/mf/index.js +3 -3
- package/dist/mf/integrations_app.js +3 -3
- package/dist/mf/mf-manifest.json +2 -2
- package/dist/mf/mf-stats.json +9 -9
- package/package.json +1 -1
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { WorksheetService } from '@/src/components/synchro/worksheetFields.types.ts';
|
|
2
|
+
export type SynchroWorksheet = {
|
|
3
|
+
sheetId: number;
|
|
4
|
+
title: string;
|
|
5
|
+
index: number;
|
|
6
|
+
hidden: boolean;
|
|
7
|
+
};
|
|
8
|
+
export type SynchroWorksheetsResponse = {
|
|
9
|
+
spreadsheetId: string;
|
|
10
|
+
title: string;
|
|
11
|
+
worksheets: SynchroWorksheet[];
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
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.
|
|
20
|
+
*/
|
|
21
|
+
export declare function useWorksheetsQuery(spreadsheetId: string | null, service?: WorksheetService): import("@tanstack/react-query").UseQueryResult<SynchroWorksheetsResponse, Error>;
|
package/dist/mf/@mf-types/compiled-types/components/synchro/inputs/InputWorksheetSelector.d.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { CompanyDestination } from '@/src/api/synchro/types.ts';
|
|
2
|
+
import type { WorksheetService } from '@/src/components/synchro/worksheetFields.types.ts';
|
|
3
|
+
type Props = {
|
|
4
|
+
label?: string | null;
|
|
5
|
+
help?: string | null;
|
|
6
|
+
required?: boolean;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
value: unknown;
|
|
9
|
+
onChange: (value: string) => void;
|
|
10
|
+
error?: string;
|
|
11
|
+
/** Identifiant du tableur choisi dans le champ voisin ; null tant qu'il ne l'est pas. */
|
|
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;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
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
|
+
* Sans tableur lisible, on retombe en saisie libre avec la raison : la valeur
|
|
24
|
+
* enregistree n'est jamais perdue, meme si l'onglet a ete renomme.
|
|
25
|
+
*/
|
|
26
|
+
export declare function InputWorksheetSelector({ label, help, required, disabled, value, onChange, error, spreadsheetId, service, collisions, }: Props): import("react/jsx-runtime").JSX.Element;
|
|
27
|
+
export {};
|
package/dist/mf/@mf-types/compiled-types/components/synchro/inputs/WorksheetCollisionAlert.d.ts
ADDED
|
@@ -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,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minute proposée par défaut pour une nouvelle planification.
|
|
3
|
+
*
|
|
4
|
+
* Le formulaire proposait `0`, et personne ne le changeait : au 29/08/2026,
|
|
5
|
+
* 220 planifications actives sur 371 tombaient à la minute zéro, dont 67 à
|
|
6
|
+
* 01:00 et 60 à 22:00. Toutes ces synchros démarrent donc en même temps, et la
|
|
7
|
+
* file met d'autant plus de temps à s'écouler que le pic est concentré. Mesuré
|
|
8
|
+
* la nuit du 28 au 29/08 : jusqu'à 117 min d'attente moyenne dans la fenêtre de
|
|
9
|
+
* reprise, contre moins d'une minute une fois le pic absorbé.
|
|
10
|
+
*
|
|
11
|
+
* La minute est déduite de l'identifiant du client plutôt que tirée au hasard,
|
|
12
|
+
* pour trois raisons : elle est stable dans le temps, donc le client ne voit pas
|
|
13
|
+
* son horaire bouger ; elle est rejouable, donc on peut vérifier l'état attendu
|
|
14
|
+
* sans stocker de graine ; et le facteur 7, premier avec 60, éloigne les
|
|
15
|
+
* identifiants consécutifs au lieu de les coller (deux clients créés à la suite
|
|
16
|
+
* seraient voisins avec un simple modulo).
|
|
17
|
+
*
|
|
18
|
+
* L'heure n'est volontairement pas dérivée : la déplacer changerait la fenêtre
|
|
19
|
+
* de fraîcheur des données promise au client, alors que décaler la minute lui
|
|
20
|
+
* est indifférent.
|
|
21
|
+
*/
|
|
22
|
+
export declare function defaultScheduleMinute(recipeCustomerId: number): number;
|
|
@@ -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';
|
package/dist/mf/@mf-types.zip
CHANGED
|
Binary file
|