Skip to content

Tableaux ​

Noms ​

Dans Constellation, chaque tableau est défini par un code identifiant et peut ensuite être nommé dans autant de langues que vous le souhaitez.

client.tableaux.sauvegarderNomTableau({ idTableau, langue, nom }) ​

Sauvegarde le nom du tableau dans une langue donnée.

Paramètres ​

NomTypeDescription
idTableaustringL'identifiant du tableau.
nomstringLe nom du tableau.
languestringLa langue du nom.

Exemple ​

ts

import { créerConstellation } from "@constl/ipa";
const client = créerConstellation();

const idBd = await client.bds.créerBd({ licence: "ODBl-1_0" });
const idTableau = await client.tableaux.créerTableau({ idBd });
await client.tableaux.sauvegarderNomTableau({
    idTableau, 
    langue: "fr", 
    nom: "Hydrologie" 
});

client.tableaux.sauvegarderNomsTableau({ idTableau, noms }) ​

Sauvegarde le nom du tableau dans plusieurs langues en même temps.

Paramètres ​

NomTypeDescription
idTableaustringL'identifiant du tableau.
noms{ [langue: string]: string }Les noms du tableau, indexés par langue.

Exemple ​

ts

import { créerConstellation } from "@constl/ipa";
const client = créerConstellation();

const idBd = await client.bds.créerBd({ licence: "ODBl-1_0" });
const idTableau = await client.tableaux.créerTableau({ idBd });
await client.tableaux.sauvegarderNomsTableau({ 
    idTableau, 
    noms: { fr: "Observations", த: "கண்காணிப்புகள்"}
});

client.tableaux.effacerNomTableau({ idTableau, langue }) ​

Efface la traduction du nom du tableau dans une langue donnée.

Paramètres ​

NomTypeDescription
idTableaustringL'identifiant du tableau.
languestringLa langue dont ont doit effacer le nom.

Exemple ​

ts
import { créerConstellation } from "@constl/ipa";
const client = créerConstellation();

const idBd = await client.bds.créerBd({ licence: "ODBl-1_0" });
const idTableau = await client.tableaux.créerTableau({ idBd });
await client.tableaux.effacerNomTableau({ idTableau, langue: "fr" });

client.tableaux.suivreNomsTableau({ idTableau, f }) ​

Suit les noms (traduits en différentes langues) du tableau.

Paramètres ​

NomTypeDescription
idTableaustringL'identifiant du tableau.
f(noms: { [langue: string]: string }) => voidUne fonction qui sera appelée avec les noms du tableau chaque fois qu'ils changent

Retour ​

TypeDescription
Promise<() => Promise<void>>Fonction à appeler pour arrêter le suivi.

Exemple ​

ts
import { créerConstellation } from "@constl/ipa";
const client = créerConstellation();

const idBd = await client.bds.créerBd({ licence: "ODBl-1_0" });
const idTableau = await client.tableaux.créerTableau({ idBd });

const fOublierNoms = await client.tableaux.suivreNomsTableau({ 
    idTableau,
    f: async noms => {
        console.log(noms);
        await fOublierNoms();
    }
});

await client.tableaux.sauvegarderNomsTableau({ 
    idTableau, 
    noms: { fr: "Observations", த: "கண்காணிப்புகள்"}
});

Colonnes ​

Chaque colonne d'un tableau est associé à une variable Constellation.

client.tableaux.ajouterColonneTableau({ idTableau, idVariable, idColonne }) ​

Ajoute une colonne à un tableau.

Paramètres ​

NomTypeDescription
idTableaustringL'identifiant du tableau.
idVariablestringL'identifiant de la variable à associer à la colonne.
idColonne`stringundefined`

Exemple ​

ts
import { ref } from "vue";
import { créerConstellation } from "@constl/ipa";

const client = créerConstellation();

const idBd = await client.bds.créerBd({ licence: "ODBl-1_0" });
const idTableau = await client.tableaux.créerTableau({ idBd });
const idVariable = await client.variables.créerVariable({ catégorie: "horoDatage" });

const idColonne = await client.tableaux.ajouterColonneTableau({ idTableau, idVariable });

client.tableaux.effacerColonneTableau({ idTableau, idColonne }) ​

Efface une colonne d'un tableau.

Paramètres ​

NomTypeDescription
idTableaustringL'identifiant du tableau.
idColonnestringL'identifiant de la colonne.

Exemple ​

ts
// ...continuant de ci-dessus...
const idColonne = await client.tableaux.effacerColonneTableau({ idTableau, idVariable });

client.tableaux.suivreColonnesTableau({ idTableau, f, catégories }) ​

Suit les colonnes d'un tableau.

Paramètres ​

NomTypeDescription
idTableaustringL'identifiant du tableau.
f(colonnes: InfoCol`[InfoColAvecCatégorie](#types-colonnes) ) => void`
catégories`booleanundefined`

Retour ​

TypeDescription
Promise<() => Promise<void>>Fonction à appeler pour arrêter le suivi.

Exemple ​

ts
import { ref } from "vue";
import { créerConstellation, type tableaux } from "@constl/ipa";

const client = créerConstellation();

const idBd = await client.bds.créerBd({ licence: "ODBl-1_0" });
const idTableau = await client.tableaux.créerTableau({ idBd });
const idVariable = await client.variables.créerVariable({ catégorie: "horoDatage" });

const idColonne = await client.tableaux.ajouterColonneTableau({ idTableau, idVariable });

const colonnes = ref<tableaux.InfoColAvecCatégorie>();
const fOublierColonnes = await client.tableaux.suivreColonnesTableau({ 
    idTableau,
    f: x => colonnes.value = x
});

client.tableaux.réordonnerColonneTableau({ idTableau, idColonne, position }) ​

Réordonne les colonnes d'un tableau.

Paramètres ​

NomTypeDescription
idTableaustringL'identifiant du tableau.
idColonnestringL'identifiant de la colonne à déplacer.
positionnumberLa nouvelle position de la colonne.

Exemple ​

ts
import { ref } from "vue";
import { créerConstellation, type tableaux } from "@constl/ipa";

const client = créerConstellation();

const idBd = await client.bds.créerBd({ licence: "ODBl-1_0" });
const idTableau = await client.tableaux.créerTableau({ idBd });
const idVariableDate = await client.variables.créerVariable({ catégorie: "horoDatage" });
const idVariableImage = await client.variables.créerVariable({ catégorie: "image" });

const idColonneImage = await client.tableaux.ajouterColonneTableau({ idTableau, idVariable: idVariableImage });
const idColonneDate = await client.tableaux.ajouterColonneTableau({ idTableau, idVariable: idVariableDate });

const fOublierColonnes = await client.tableaux.réordonnerColonneTableau({ 
    idTableau,
    idColonne: idColonneDate,
    position: 0,
});

Index ​

Les colonnes d'un tableau peuvent être identifiées en tant que colonnes indexes. Les valeurs de ces colonnes ne peuvent pas être dupliquées parmi les données. Par exemple, si vous spécifiez l'horodatage et le site d'échantillonnage en tant que colonnes indexes, Constellation, lors de tout fusionnement de données, s'assurera que les indexes ne soient pas dupliqués et combinera les rangées avec des sites et horodatages identiques.

client.tableaux.changerColIndex({ idTableau, idColonne, val }) ​

Change le statut d'index d'une colonne.

Paramètres ​

NomTypeDescription
idTableaustringL'identifiant du tableau.
idColonnestringL'identifiant de la colonne.
valbooleanSi la colonne est une colonne indexe ou non.

Exemple ​

ts
import { ref } from "vue";
import { créerConstellation } from "@constl/ipa";

const client = créerConstellation();

const idBd = await client.bds.créerBd({ licence: "ODBl-1_0" });
const idTableau = await client.tableaux.créerTableau({ idBd });
const idVariable = await client.variables.créerVariable({ catégorie: "horoDatage" });

const idColonne = await client.tableaux.ajouterColonneTableau({ idTableau, idVariable });

await client.tableaux.changerColIndex({ 
    idTableau,
    idColonne,
    val: true
});

client.tableaux.suivreIndex({ idTableau, f }) ​

Suit les noms (traduits en différentes langues) du tableau.

Paramètres ​

NomTypeDescription
idTableaustringL'identifiant du tableau.
f(colonnes: string[]) => voidUne fonctionne qui sera appellée avec les identifiants des colonnes indexes chaque fois que ceux-ci changent.

Retour ​

TypeDescription
Promise<() => Promise<void>>Fonction à appeler pour arrêter le suivi.

Exemple ​

ts
import { ref } from "vue";
import { créerConstellation } from "@constl/ipa";

const client = créerConstellation();

const idBd = await client.bds.créerBd({ licence: "ODBl-1_0" });
const idTableau = await client.tableaux.créerTableau({ idBd });

const indexes = ref<string[]>();
const fOublierIndexes = await client.tableaux.suivreIndex({ 
    idTableau,
    f: x => indexes.value = x
});

Variables ​

Vous pouvez suivre la liste des variables associées avec un tableau.

client.tableaux.suivreVariables({ idTableau, f }) ​

Suit les variables associées au tableau.

Paramètres ​

NomTypeDescription
suivreVariablesstringL'identifiant du tableau.
f(variables: string[]) => voidUne fonction qui sera appelée avec la liste des identifiants des variables associées au tableau chaque fois que celle-ci change.

Retour ​

TypeDescription
Promise<() => Promise<void>>Fonction à appeler pour arrêter le suivi.

Données ​

Ces fonctions vous permettent d'observer et de modifier les données d'un tableau.

client.tableaux.ajouterÉlément({ idTableau, vals }) ​

Ajoute un ou plusieurs éléments à un tableau.

Paramètres ​

NomTypeDescription
idTableaustringL'identifiant du tableau.
valsélémentBdListeDonnées[]Les données à ajouter.

Retour ​

TypeDescription
Promise<string[]>Les identifiants uniques des éléments ajoutés.

Exemple ​

ts
import { ref } from "vue";
import { créerConstellation, type bds, type tableaux } from "@constl/ipa";

const client = créerConstellation();

// Créer nos variables
const idVarSite = await client.variables.créerVariable({ 
    catégorie: 'chaîneNonTraductible'
});
const idVarDate = await client.variables.créerVariable({ 
    catégorie: 'horoDatage'
});
const idVarTempérature = await client.variables.créerVariable({ 
    catégorie: 'numérique'
});

// Créer notre base de données
const idBd = await client.bds.créerBd({ licence: "ODbl-1_0" });
const idTableau = await client.bds.ajouterTableauBd({ idBd });
const idColSite = await client.tableaux.ajouterColonneTableau({
  idTableau,
  idVariable: idVarSite,
});
const idColDate = await client.tableaux.ajouterColonneTableau({
  idTableau,
  idVariable: idVarDate,
});
const idColTempérature = await client.tableaux.ajouterColonneTableau({
  idTableau,
  idVariable: idVarTempérature,
});

// Enfin, ajouter les données
const idsÉléments = await client.tableaux.ajouterÉlément({ 
  schémaBd, 
  idNuéeUnique, 
  clefTableau: CLEF_TABLEAU,
  vals: {
    "site": "mon site d'observation",
    "date": Date.now(),
    "température": 52.2,
  },
});

client.tableaux.modifierÉlément({ idTableau, vals, idÉlément }) ​

Modifie un élément d'un tableau.

Paramètres ​

NomTypeDescription
idTableaustringL'identifiant du tableau.
vals{ [idColonne: string]: élémentsBdundefined }
idÉlémentstringL'identifiant de l'élément à modifier.

Retour ​

TypeDescription
Promise<string>L'identifiant unique de l'élément modifié.

Exemple ​

ts
// ...continuant de ci-dessus...

await client.tableaux.modifierÉlément({ 
  idTableau,
  vals: {
    [idColTempérature]: 38.2 ,
  },
  idsÉléments[0],
});

client.tableaux.effacerÉlément({ idTableau, idÉlément }) ​

Efface un élément d'un tableau.

Paramètres ​

NomTypeDescription
idTableaustringL'identifiant du tableau.
idÉlémentstringL'identifiant de la rangée à effacer.

Exemple ​

ts
// ...continuant de ci-dessus...
await client.tableaux.effacerÉlément({ 
  idTableau, 
  idÉlément: idsÉléments[0],
});

client.tableaux.suivreDonnées({ idTableau, f, clefsSelonVariables }) ​

Suit les données d'un tableau.

Paramètres ​

NomTypeDescription
idTableaustringL'identifiant du tableau.
f(données:élémentDonnées[]) => voidLa fonction qui sera appellée avec les données chaque fois que celles-ci changent.
clefsSelonVariables`booleanundefined`

Retour ​

TypeDescription
Promise<() => Promise<void>>Fonction à appeler pour arrêter le suivi.

Exemple ​

ts
// ...continuant de ci-dessus...

const données = ref<tableaux.élémentDonnées[]>();
const fOublierDonnées = await client.tableaux.suivreDonnées({ 
    idTableau,
    f: x => données.value = x,
 });

Règles ​

Vous pouvez ajouter des règles de validation des données directement aux tableaux. Pour voir toutes les possibilités de règles permises, voir la section correspondante.

client.tableaux.ajouterRègleTableau({ idTableau, idColonne, règle }) ​

Ajoute une règle de validation à un tableau.

Paramètres ​

NomTypeDescription
idTableaustringL'identifiant du tableau.
idColonnestringL'identifiant de la colonne.
règlevalid.règleVariableLa règle à ajouter.

Retour ​

TypeDescription
Promise<string>L'identifiant unique de la nouvelle règle.

Exemple ​

ts
import { ref } from "vue";
import { créerConstellation } from "@constl/ipa";

const client = créerConstellation();

const idBd = await client.bds.créerBd({ licence: "ODBl-1_0" });
const idTableau = await client.tableaux.créerTableau({ idBd });
const idVariable = await client.variables.créerVariable({ catégorie: "numérique" });

const idColonne = await client.tableaux.ajouterColonneTableau({ idTableau, idVariable });

const règle: valid.règleBornes = {
    typeRègle: "bornes",
    détails: {
        type: "fixe",
        val: 0,
        op: ">=",
    },
};
const idRègle = await client.tableaux.ajouterRègleTableau({ idTableau, idColonne, règle })

client.tableaux.effacerRègleTableau({ idTableau, idRègle }) ​

Ajoute une règle de validation à un tableau.

Paramètres ​

NomTypeDescription
idTableaustringL'identifiant du tableau.
idColonnestringL'identifiant de la règle à effacer.

Exemple ​

ts
// ...continuant de ci-dessus...
await client.tableaux.effacerRègleTableau({ idTableau, idRègle })

client.tableaux.suivreRègles({ idTableau, f }) ​

Suit les règles associées au tableau.

Paramètres ​

NomTypeDescription
idTableaustringL'identifiant du tableau.
f(règles: valid.règleColonne []) => voidUne fonction qui sera appelée avec les règles du tableau chaque fois que celles-ci changent.

Retour ​

TypeDescription
Promise<() => Promise<void>>Fonction à appeler pour arrêter le suivi.

Exemple ​

ts
// ...continuant de ci-dessus...

const règles = ref<valid.règleColonne[]>();

const fOublierRègles = await client.tableaux.suivreRègles({ 
    idTableau,
    f: x => règles.value = x,
});

Validation ​

Constellation vous permet de valider les données des tableaux.

client.tableaux.suivreValidDonnées({ idTableau, f }) ​

Suit les erreurs de validation des données du tableau.

Paramètres ​

NomTypeDescription
idTableaustringL'identifiant du tableau.
f(erreurs: valid.erreurValidation []) => voidUne fonction qui sera appelée avec les erreurs de validation du tableau chaque fois que celles-ci changent.

Retour ​

TypeDescription
Promise<() => Promise<void>>Fonction à appeler pour arrêter le suivi.

Exemple ​

ts
// ...continuant de ci-dessus...

const erreursValidation = ref<valid.erreurValidation[]>();

const fOublierRègles = await client.tableaux.suivreValidDonnées({ 
    idTableau,
    f: x => erreursValidation.value = x,
});

client.tableaux.suivreValidRègles({ idTableau, f }) ​

Suit les erreurs présentes dans les règles elles-mêmes. Ces erreurs peuvent indiquer si:

  • La colonne associée à une règle catégorique n'existe pas.
  • La colonne associée à une règle de bornes n'existe pas sur ce tableau.
  • Aucune colonne sur ce tableau n'a la variable associée à une règle de bornes.

Paramètres ​

NomTypeDescription
idTableaustringL'identifiant du tableau.
f(erreurs: valid.erreurRègle []) => voidUne fonction qui sera appelée avec les erreurs des règles du tableau chaque fois que celles-ci changent.

Retour ​

TypeDescription
Promise<() => Promise<void>>Fonction à appeler pour arrêter le suivi.

Exemple ​

ts
// ...continuant de ci-dessus...

const erreursRègles = ref<valid.erreurRègle[]>();

const fOublierRègles = await client.tableaux.suivreValidRègles({ 
    idTableau,
    f: x => erreursRègles.value = x,
});

Importation et exportation ​

Vous pouvez importer et exporter des données d'un tableau.

ASTUCE

Vous pouvez également automatiser ces actions !

client.tableaux.importerDonnées({ idTableau, données, conversions, cheminBaseFichiers }) ​

Importer des données vers un tableau Constellation.

Paramètres ​

NomTypeDescription
idTableaustringL'identifiant du tableau.
donnéesélémentBdListeDonnéesLes données à importer.
conversions{ [col: string]: tableaux.conversionDonnées` }undefined`
cheminBaseFichiers`stringundefined`

Exemple ​

ts
import { créerConstellation } from "@constl/ipa";
const client = créerConstellation();

const idBd = await client.bds.créerBd(: "ODBl-1_0" });
const idTableau = await client.tableaux.créerTableau({ idBd });

const idVarDate = await client.variables.créerVariable({
  catégorie: "horoDatage",
});
const idVarEndroit = await client.variables.créerVariable({
  catégorie: "chaîneNonTraductible",
});
const idVarTempMin = await client.variables.créerVariable({
  catégorie: "numérique",
});
const idVarTempMax = await client.variables.créerVariable({
  catégorie: "numérique",
});

const idsCols = {};
for (const idVariable of [
  idVarDate,
  idVarEndroit,
  idVarTempMin,
  idVarTempMax,
]) {
  const idCol = await client.tableaux.ajouterColonneTableau({
    idTableau,
    idVariable,
  });
  idsCols[idVar] = idCol;
}

const nouvellesDonnées = [
  {
    [idsCols[idVarEndroit]]: "ici",
    [idsCols[idVarDate]]: "2023-01-01",
    [idsCols[idVarTempMin]]: 101,  // Ouach! Fahrenheit...
  },
  {
    [idsCols[idVarEndroit]]: "là",
    [idsCols[idVarDate]]: "2023-01-01",
    [idsCols[idVarTempMax]]: 110,
  },
];

// Convertir à centigrades
const fÀC = {
  type: "numérique";
  opération: [
    { op: "-", val: 32 },
    { op: "*", val: 5/9 }
  ]
}

// Finalement, importer les données
await client.tableaux.importerDonnées({
  idTableau,
  données: nouvellesDonnées,
  conversions: {  
    [idsCols[idVarTempMin]]: fÀC,
    [idsCols[idVarTempMaxx]]: fÀC,
  }
});

client.tableaux.exporterDonnées({ idTableau, langues, doc, nomFichier }) ​

Exporte des données d'un tableau Constellation, mais ne le sauvegarde pas immédiatement au disque.

Paramètres ​

NomTypeDescription
idTableaustringL'identifiant du tableau.
langues`string[]undefined`
doc`xlsx.WorkBookundefined`
nomFichier`stringundefined`

Retour ​

TypeDescription
Promise<donnéesBdExportées>Les données exportées, prètes à être écrites à un fichier de votre choix.

Exemple ​

ts
import { créerConstellation } from "@constl/ipa";
const client = créerConstellation();

const idBd = await client.bds.créerBd(: "ODBl-1_0" });
const idTableau = await client.bds.ajouterTableauBd({ idBd });

// ... ajouter des colonnes et des données ...

const donnéesExportées = await client.tableaux.exporterDonnées({ 
    idTableau, 
    langues: ["fr", "த", "kaq"],
});

// Faire quelque chose avec le document

client.tableaux.suivreDonnéesExportation({ idTableau, langues, f }) ​

Suite les données d'un tableau en format exportation (données traduites).

Paramètres ​

NomTypeDescription
idTableaustringL'identifiant du tableau.
langues`string[]undefined`
fPromise<donnéesTableauExportation>Fonction de suivi qui sera appellée chaque fois que changeront les données.

Retour ​

TypeDescription
Promise<() => Promise<void>>Fonction à appeler pour arrêter le suivi.

Exemple ​

ts
import { créerConstellation } from "@constl/ipa";
const client = créerConstellation();

const idBd = await client.bds.créerBd(: "ODBl-1_0" });
const idTableau = await client.bds.ajouterTableauBd({ idBd });

// ... ajouter des colonnes et des données ...

const fOublier = await client.tableaux.suivreDonnéesExportation({ 
    idTableau, 
    langues: ["fr", "த", "kaq"],
    f: console.log
});

Types ​

Plusieurs types sont associés aux tableaux Constellation et à leurs données.

Types données ​

ts
// Représente une rangé de données provenant d'un tableau
interface élémentDonnées<
  T extends élémentBdListeDonnées = élémentBdListeDonnées
> {
  données: T;
  id: string;  // Identifiant unique de la rangé de données
}

type élémentBdListeDonnées = {
  [key: string]: élémentsBd;
};

// Représente tout type de données pouvant être sauvegardé à orbit-db
type élémentsBd =
  | number
  | boolean
  | string
  | { [clef: string]: élémentsBd }
  | Array<élémentsBd>;

Types colonnes ​

Ces types sont associés avec les informations des colonnes des tableaux.

ts
type InfoCol = {
  id: string;
  variable: string;
  index?: boolean;
};

type InfoColAvecCatégorie = InfoCol & {
  catégorie?: catégorieVariables;
};

Types conversions données ​

ts
export type conversionDonnées =
  | conversionDonnéesNumérique
  | conversionDonnéesDate
  | conversionDonnéesChaîne;

export type conversionDonnéesNumérique = {
  type: "numérique";
  opération?: opérationConversionNumérique | opérationConversionNumérique[];
  systèmeNumération?: string;
};

export type opérationConversionNumérique = {
  op: "+" | "-" | "/" | "*" | "^";
  val: number;
}

export type conversionDonnéesDate = {
  type: "horoDatage";
  système: string;
  format: string;
};
export type conversionDonnéesChaîne = {
  type: "chaîne";
  langue: string;
};

Types exportation ​

ts
type donnéesTableauExportation = {
  nomTableau: string;
  données: élémentBdListeDonnées[];
  fichiersSFIP: Set<string>;
};

Disponible sous licence AGPL-3.0