# Bases : quelques formules utiles [Bases](https://help.obsidian.md/bases) est un plugin de base dans Obsidian. Il permet de **créer des vues de type bases de données**. À l'aide d'une base, vous pouvez **afficher**, **modifier**, **trier** et **filtrer** vos notes en vous basant sur leurs [propriétés](https://help.obsidian.md/properties). Dans cet article, je référence quelques **formules personnalisées** utiles pour adapter l'affichage des propriétés. ## Créer un lien personnalisé Créer un lien vers un fichier ou une URL externe, j'utilise la fonction `link()`. Syntaxe : `link(string | file , display text | any ? img | emoji | any ?)` Par exemple pour créer un lien hypertexte "More…" qui ouvre un fichier : ``` link(file.path,"More...") ``` Pour afficher un émoji cliquable [🔗](https://mypkb.fr/Home)vers [mypkb.fr](https://mypkb.fr/Home) j'utilise la syntaxe suivante : ``` link("https://mypkb.fr/Home","🔗") ``` ## Découper une chaine Pour récupérer une portion d'une chaine présente dans une propriété. Je peux diviser en plusieurs morceaux ou couper une partie. ### Diviser une chaine plusieurs parts La fonction `split()` permet de diviser une chaine en parts et de la **convertir en liste**. Par exemple pour découper une URL sur la base du symbole `/` permet ensuite de manipuler les différents éléments de la liste. Syntaxe : `string.split(separator: string | Regexp, n?: number)` Exemple : Si propriété `url_properties` contient une chaine sous la forme `https://mypkb.fr/Home`. Pour afficher uniquement le FQDN `mypkb.fr`, la fonction `split()` doit utiliser le séparateur `/` afin de découper la chaine en 4 morceaux de `[0]` à `[3]` et on affiche uniquement l'élément `[2]` en sortie : ``` url_properties.split("/")[2] ``` Pour connaitre le nombre d'éléments total, utilisez la fonction `length`. Dans l'exemple précédent, la commande retournerait la valeur `4` : ``` url_properties.split("/").length ``` ### Supprimer une partie (slice) La fonction `slice()` permet de couper une partie d'une chaine. Par exemple, La propriété `date_propertie` contient la valeur `2025-10-17T16:11:21+02:00`. Pour supprimer la partie UTC d'une date au format [[memo-dates-iso-8601|ISO 8601]] je dois supprimer tout ce qui se situe après le 19ᵉ caractère : ``` date_propertie.slice(0, 19) ``` ## Manipulation des dates et durée Savoir depuis combien de temps est créée une note : ``` file.ctime.date() - now() ``` Convertir une date [[memo-dates-iso-8601|ISO 8601]] en date standard au format `yyyy/MM/DD hh:mm` : ``` date(iso_date_propertie.slice(0, 19)).format("yyyy/MM/DD hh:mm") ``` Calculer la durée entre `now()` et une chaine au format date [[memo-dates-iso-8601|ISO 8601]] : - On supprime la partie UTC de la date - On utilise la fonction `date()` pour convertir la chaine en date - On calcule la différence entre `now()` et la date récupérée. ``` date(share_updated.slice(0, 19)) - now () ``` ## Valeur conditionnelle La fonction `if()` permet de modifier l'affichage d'une propriété selon une condition : Syntaxe : `if(condition: any, trueResult: any, falseResult?: any)` Par exemple, si la propriété `title` existe, l'utiliser pour créer un lien vers la note, sinon utiliser le nom de la note. ``` if(title,link(file.path,title),link(file.path,file.name)) ```