Skip to content
GRAPHIC WALKER
Référence API
GraphicWalker

GraphicWalker

GraphicWalker est le composant principal qui fournit une interface complète d'exploration interactive des données avec la construction de graphiques par glisser-déposer, la gestion des champs et plusieurs onglets de graphiques.

import { GraphicWalker } from '@kanaries/graphic-walker';

Props

Props de données

PropTypeRequisDescription
dataRecord<string, any>[]Oui*Tableau d'enregistrements de données. Utilisé pour le calcul côté client.
fieldsIMutField[]OuiDéfinitions de champs décrivant chaque colonne de vos données.
computationIComputationFunctionOui*Fonction de calcul côté serveur. Alternative à data.
computationTimeoutnumberNonDélai d'expiration en ms pour les requêtes de calcul.

*Fournissez soit data (côté client) soit computation (côté serveur), pas les deux.

Props de configuration des graphiques

PropTypePar défautDescription
chartIChart[]undefinedSpécifications de graphiques préconfigurés à charger.
defaultConfig{ config?: Partial<IVisualConfigNew>; layout?: Partial<IVisualLayout> }undefinedConfiguration par défaut appliquée aux nouveaux graphiques.
defaultRenderer'vega-lite' | 'observable-plot''vega-lite'Moteur de rendu par défaut pour les nouveaux graphiques.

Props d'apparence

PropTypePar défautDescription
appearance'media' | 'light' | 'dark''media'Réglage du mode sombre. 'media' suit la préférence système.
vizThemeConfigIThemeKey | GWGlobalConfigundefinedThème de rendu des graphiques. Options intégrées : 'vega', 'g2', 'streamlit'.
uiThemeIUIThemeConfigundefinedSchéma de couleurs personnalisé de l'interface pour les modes clair et sombre.

Props de contrôle de l'interface

PropTypePar défautDescription
hideChartNavbooleanfalseMasque la navigation par onglets des graphiques, limitant à un seul graphique.
hideSegmentNavbooleanfalseMasque la navigation des segments données/visualisation.
hideProfilingbooleanfalseMasque le profilage des champs (aperçus de distribution).
toolbar{ extra?: ToolbarItemProps[]; exclude?: string[] }undefinedPersonnalise la barre d'outils — ajouter des boutons supplémentaires ou exclure les boutons intégrés.

Props de fonctionnalités de données

PropTypePar défautDescription
scalesIChannelScalesundefinedConfigurations d'échelles personnalisées pour les canaux visuels.
geographicDataIGeographicData & { key: string }undefinedDonnées GeoJSON/TopoJSON pour les visualisations géographiques.
geoListIGeoDataItem[]undefinedListe des jeux de données géographiques disponibles à la sélection.
experimentalFeatures{ computedField?: boolean }undefinedActive les fonctionnalités expérimentales comme les champs calculés.

Props i18n

PropTypePar défautDescription
i18nLangstringundefinedCode de langue (ex. 'en-US', 'zh-CN', 'ja-JP').
i18nResourcesRecord<string, Record<string, string>>undefinedRessources de traduction personnalisées.

Props Ref et État

PropTypeDescription
refReact.Ref<IGWHandler>Ref pour accéder à l'API du gestionnaire (exporter des graphiques, naviguer entre les onglets, etc.).
storeRefReact.RefObject<CommonStore>Ref vers le store d'état interne.
keepAliveboolean | stringMaintient l'état du composant en vie lorsqu'il est démonté. Passez une chaîne comme clé unique pour les instances multiples.
onMetaChange(fid: string, meta: Partial<IMutField>) => voidCallback lorsque les métadonnées d'un champ changent.

Gestion des erreurs

PropTypeDescription
onError(err: Error) => voidCallback pour la gestion des erreurs.

Styles

PropTypeDescription
classNamestringClasse CSS appliquée à l'élément racine.
styleReact.CSSPropertiesStyles en ligne appliqués à l'élément racine.

Gestionnaire Ref (IGWHandler)

Accédez au gestionnaire via une ref React pour contrôler le composant de manière programmatique :

import { useRef } from 'react';
import { GraphicWalker } from '@kanaries/graphic-walker';
import type { IGWHandler } from '@kanaries/graphic-walker';
 
function App() {
  const gwRef = useRef<IGWHandler>(null);
 
  return <GraphicWalker ref={gwRef} data={data} fields={fields} />;
}

Propriétés et méthodes du gestionnaire

MembreTypeDescription
chartCountnumberNombre total d'onglets de graphiques.
chartIndexnumberIndex de l'onglet de graphique actuellement sélectionné.
openChart(index)(index: number) => voidBasculer vers un onglet de graphique spécifique.
renderStatus'computing' | 'rendering' | 'idle' | 'error'Statut de rendu actuel du graphique actif.
onRenderStatusChange(cb)(cb: Function) => () => voidÉcouter les changements de statut de rendu. Retourne une fonction de nettoyage.
exportChart(mode?)(mode?: 'svg' | 'data-url') => Promise<IChartExportResult>Exporter le graphique actuel. Par défaut 'svg'.
exportChartList(mode?)(mode?: 'svg' | 'data-url') => AsyncGeneratorGénérateur asynchrone qui produit les données d'export de chaque graphique.

Exemple d'export

async function handleExport() {
  if (!gwRef.current) return;
 
  // Export current chart as SVG
  const result = await gwRef.current.exportChart('svg');
  console.log(result.title, result.charts);
 
  // Export all charts
  for await (const item of gwRef.current.exportChartList('data-url')) {
    console.log(`Chart ${item.index + 1}/${item.total}:`, item.data.title);
  }
}

Exemples

Explorateur de base

import { GraphicWalker } from '@kanaries/graphic-walker';
 
function Explorer({ data, fields }) {
  return <GraphicWalker data={data} fields={fields} />;
}

Avec mode sombre et thème

<GraphicWalker
  data={data}
  fields={fields}
  appearance="dark"
  vizThemeConfig="streamlit"
/>

Avec personnalisation de la barre d'outils

<GraphicWalker
  data={data}
  fields={fields}
  toolbar={{
    exclude: ['export_chart'],
    extra: [
      {
        key: 'custom-save',
        label: 'Save',
        icon: SaveIcon,
        onClick: handleSave,
      },
    ],
  }}
/>

Calcul côté serveur

import { GraphicWalker } from '@kanaries/graphic-walker';
import type { IComputationFunction } from '@kanaries/graphic-walker';
 
const computation: IComputationFunction = async (payload) => {
  const response = await fetch('/api/compute', {
    method: 'POST',
    body: JSON.stringify(payload),
    headers: { 'Content-Type': 'application/json' },
  });
  return response.json();
};
 
function App() {
  return (
    <GraphicWalker
      computation={computation}
      fields={fields}
    />
  );
}