import { Class_LinkElement } from './Link'; /** Une tranche de la série d'un flux (une combinaison de dataTags). */ export type Type_LinkSeriesEntry = { /** Clé stable de la combinaison (groupe:tag|groupe:tag). */ key: string; /** Libellé de la combinaison, tel qu'affiché (« Auvergne-Rhône-Alpes »). */ label: string; /** Valeur brute, pour dimensionner une barre. `null` = pas de valeur. */ value: number | null; /** Valeur FORMATÉE (chiffres significatifs du flux), sans suffixe d'unité. */ text: string; /** Cette tranche est-elle celle actuellement sélectionnée dans les bannières ? */ is_current: boolean; }; /** Série complète d'un flux : ses tranches et l'unité qui les qualifie toutes. */ export type Type_LinkSeries = { /** Symbole d'unité, '' si l'unité n'est pas affichée. */ unit: string; entries: Type_LinkSeriesEntry[]; }; export declare class LinkTooltip { private _link; constructor(link: Class_LinkElement); getBlockHTML(block_id: string): string | null; /** Onglet principal : valeur du lien, donnée, tags de flux (contenu historique). */ private getMainTabHTML; /** * Noms des DIMENSIONS sous lesquelles ce flux porte des données saisies — de * quoi annoncer le contenu du bloc « Données » sans le déplier. */ getDataAxisNames(): string[]; /** * Onglet Données : un tableau par dimension (axe d'agrégation). Chaque tableau * liste les flux enfants feuille→feuille de cet axe avec valeur et ratio. */ private getDataTabHTML; /** * Formate la donnée saisie d'un lien (value.valueData), via le même chemin que * la ligne « donnée » de l'onglet principal : link_data_label('data', …) qui * renvoie '' s'il n'y a pas de data_value. Unité nommée comme formatLinkValue. */ private formatLinkDataValue; /** * Formate un total brut (somme de valeurs enfants) avec la même unité/format * que les cellules Valeur du tableau (unité nommée). */ private formatTotal; /** * Lignes "Source", "URL" et "Hypothèse" de la donnée courante du flux. Affichées * seulement si renseignées ; l'URL est rendue cliquable (le tooltip étant * épinglable, cf. #158). Aucun affichage si le flux n'a pas de valeur courante. */ private getDataSourceUrlRows; /** * Rend une URL en lien cliquable (le tooltip étant épinglable, cf. #158). * Le libellé affiché est le domaine (hostname sans "www."), court et lisible ; * l'URL complète reste en href + en infobulle (title). Bleu souligné pour * qu'on voie que c'est un hyperlien. */ private urlAnchor; /** Lignes du contexte dataTags courant : un groupe par ligne (tag(s) sélectionné(s)). */ private getDataTagContextRows; /** Trie une combinaison de dataTags selon l'ordre des groupes du sankey. */ private orderTags; /** * Combinaisons de dataTags d'un lien (séries) : pour chaque feuille de l'arbre * de valeurs, une entrée { clé stable, libellé "tag / tag", valeur }. * Vide si le lien n'a pas de dataTags (valeur unique). */ private getValueComboEntries; /** Nombre affiché d'une valeur de lien selon le mode (data vs réconcilié). */ private linkValueNumber; /** * Formate un nombre avec le même nombre de chiffres significatifs que la * valeur du flux (config value_label : significant_digits, scientific_notation, * custom_digit, unit_factor) — réplique l'étape de formatage de format_value, * SANS suffixe d'unité (l'unité est indiquée une fois au-dessus de la série). */ private fmtNum; /** Symbole d'unité des séries ('' si l'unité n'est pas affichée sur ce flux). */ private getSeriesUnit; /** Libellé « Unité : X » à afficher au-dessus des séries (vide si pas d'unité visible). */ private getSeriesUnitLabelHTML; /** * SÉRIE du flux : sa valeur pour chaque combinaison de dataTags. Renvoie `null` * quand il n'y a pas de série (valeur unique, ou une seule combinaison). * * ORDRE PRÉSERVÉ — celui des groupes de dataTags du sankey, jamais un tri par * valeur : une série est souvent TEMPORELLE (des années), et la trier par * valeur décroissante détruirait la seule lecture qui compte, la chronologie. */ getSeriesFlux(): Type_LinkSeries | null; /** * Onglet Séries données : un tableau par dimension ; flux enfants en lignes, * combinaisons de dataTags du flux parent en colonnes. */ private getSeriesDataHTML; /** * Collecte les flux enfants groupés par dimension (axe d'agrégation). * * Les données sont stockées à des granularités MIXTES : parfois feuille→feuille * (ex. Bois sur pied - Chêne → Prélèvements - Bois d'œuvre - Chêne), parfois * depuis le nœud AGRÉGÉ vers des feuilles (ex. Bois sur pied → Pertes de récolte * - Pin maritime, donnée IFN). On considère donc, des deux côtés, le nœud * lui-même ET tous ses descendants (toutes dimensions, cross-product) comme * extrémités possibles — `descendAll` — en mémorisant le 1er axe emprunté * depuis la racine (null pour la racine). Indispensable aussi pour les flux « à * cheval » sur deux dimensions (source par essences, cible par type de bois × * essences) : une descente mono-axe les ratait. * * Chaque flux trouvé est rangé dans le groupe du 1er axe de son extrémité * SOURCE (perspective source ; cible si la source est le nœud agrégé / ne se * désagrège pas). Comme un flux a une seule extrémité source, il tombe dans un * seul groupe. * * Filtre `valueData` : seuls les flux portant une donnée saisie apparaissent. * C'est aussi ce qui évite le double comptage antagoniste (essences vs * propriétés) : la donnée n'est saisie que sur UNE décomposition, alors que les * valeurs réconciliées existeraient sur les deux. */ private getChildLinkGroups; /** * Renvoie le nœud `root` ET tous ses descendants (en suivant TOUTES ses * dimensions, cross-product), sous forme de map id → { nœud, firstAxis }, où * firstAxis est le 1er axe (id de groupe de level tags) emprunté depuis root * pour atteindre ce nœud (null pour root lui-même). Inclure root permet de * capter les flux-données stockés au niveau agrégé. */ private descendAll; }