Giter Club home page Giter Club logo

lettres-vue's Introduction

Lettres-vue

Project setup

Dans un répertoire dédié au projet :

  • Cloner le repository GitHub : git clone https://github.com/chartes/lettres-vue.git

NB : après avoir lancé l'API et installé Elasticsearch :

Voir Readme de l'API

Dans le sous-répertoire de l'application (lettres-vue) :

yarn
yarn serve
  • Ouvrir l'application dans un navigateur et se connecter.

Customize configuration

See Configuration Reference.

lettres-vue's People

Contributors

arnaudvergnet avatar denischiron avatar dependabot[bot] avatar ethieblin avatar fbessou avatar mrgecko avatar vicpsl avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar

lettres-vue's Issues

Notes sauvegardées alors que l'appel de note ne l'est pas

Cas un peu compliqué où on crée une nouvelle note dans un champ "sauvegardable avec un bouton", comme la transcription .
On ajoute une note, on ne sauvegarde pas la transcription (ex: recharge la page).
La note existe bien mais l'appel de note non.

Positionnement Mirador Viewer

Concernant la visionneuse, nous souhaitons adopter une approche similaire à Positions de thèses :

Desktop : lorsque la visionneuse est ouverte, afficher par défaut le texte à gauche et la visionneuse à droite :

image

Il serait intéressant d'utiliser également un toggle pour permettre d'afficher le texte seul, le texte et l'image ou l'image seule (toggle css, si oui, quelles classes css faire varier ?) :

image

Responsive : afficher la visionneuse d'une manière similaire à Positions de thèses mais en l'insérant sous le témoin, est-ce possible ?
image

Merci

Suppression d'un document

La suppression d’un document doit être implémentée puis intégrée côté frontend sous la forme d’un composant (un bouton) intégrable à différents endroits de l’interface.

  • Il faut être connecté avec le role admin pour avoir le droit de supprimer un document
  • La suppression d’un document doit entrainer la suppression des dépendances associées (delete on cascade) : bookmarks, witnesses, changelog, notes, images

Référentiel des personnes

Page de gestion du référentiel des personnes : https://dev.chartes.psl.eu/lettres/persons

NB. Voir documentation chartes/lettres-app#77

Évolutions à discuter. Pour une personne, afficher :

  • la liste de ses correspondants
  • le nombre de lettres échangées
  • la carte des lieux associés à la personne (lieu d’expédition si la personne est l‘expéditeur | lieu de réception si la personne est le destinataire).
  • revoir l’affichage tabulaire (une ligne par type de contenu) : les filtres suffisent sans doute (à discuter).

Quid des personnes morales (organisations ?)

Formulaire de recherche, conception

Lettres, moteur de recherche

  • Le moteur de recherche doit permettre prioritairement d’accéder aux documents (plutôt qu’aux occurrences d’un motif de recherche plein texte). Il s’appuie sur les métadonnées attachées à chaque document. La recherche plein texte vient en complément : le concordancier est "secondaire".
  • Souhait d’un formulaire par défaut à 4 critères (1), complété par d’autres critères (2).

(1) Formulaire par défaut

Objectif

Il s’agit de la boîte de recherche qui doit être toujours accessible.

Objectif : lister tous les documents mentionnant une/des personne(s) ET/OU un/des lieu(x) ET/OU contenant une expression, pour une période définie.

Exemples de requêtes :

  • Lister les lettres en lien avec Henri IV
  • Lister les lettres en lien avec Henri IV ET Catherine de Médicis
  • Lister les lettres en lien avec Senlis
  • Lister les lettres en lien avec Senlis et Lille
  • Lister les lettres en lien avec Henri IV ET Lille
  • Lister les lettres en lien avec Henri IV ET Catherine de Médicis ET Senlis ET Lille
  • Lister les lettres datées (expédiées) à partir de 1562
  • Lister les lettres datées (expédiées) jusqu’à 1593
  • Lister les lettres datées (expédiées) entre 1562 et 1593
  • Lister les lettres datées (expédiées) entre 1562 et 1593, en lien avec Henri IV
  • Lister les lettres datées (expédiées) entre 1562 et 1593, en lien avec Henri IV ET Catherine de Médicis ET Senlis ET Lille
  • Lister les lettres dont la transcription contient le terme réformés?
  • Lister les lettres dont la transcription contient le terme réformés?, en lien avec Catherine de Médicis
  • Lister les lettres dont la transcription contient le terme réformés?, entre 1572 et 1573, en lien avec Catherine de Médicis ET Gaspard de Coligny ET Paris ET Blois

Filtres :

NB. On ne prend PAS en charge l’opérateur 'OU' ; la combinatoire est difficile à appréhender avec autant de filtres. "Lister les lettres en lien avec Henri IV ET Catherine de Médicis" : la collection des lettres où il est question des 2 personnages (et non pas de l’un OU de l’autre).

Il s’agit de filtres : on réduit le nombre de résultats (logique d’entonnoir).

Champs

  1. Personne
  2. Date de lieu
  3. Date de temps
  4. Content

1. Personne

Input avec autocomplétion pour sélectionner une personne décrite en base, quel que soit son statut : expéditeur (sender), destinataire (recipient) ou sujet (inlined).

On doit pouvoir sélectionner plusieurs personnes successivement.

La sélection active est affichée sous la forme d’un tag-filtre activé.

Remarques / questions :

2. Date de lieu

Input avec autocomplétion pour sélectionner une ville décrite en base, quel que soit son statut : lieu d’expédition (location-date-from), lieu de réception (location-date-to) ou sujet (inlined).

On doit pouvoir sélectionner plusieurs villes successivement.

3. Date de temps

Dans cette vue de base, un slider doit permettre de sélectionner l’intervalle entre 2 années.

Cf modèle ENCPOS (slider + 2 inputs pour spécifier une date).

4. Content

Input pour saisir une chaîne de caractères (regex).

(2) Formulaire étendu

Objectif

Il s’agit :

  • d’affiner certains filtres (par ex. pouvoir préciser une date au jour près) ;
  • de fournir de nouveaux filtres.

Exemples de requêtes :

  • Lister les lettres dont Catherine de Medicis est l’expéditrice d’avril 1572
  • Lister les lettres dont la transcription contient le terme réformés? et cite Gaspard de Coligny entre 1572 et 1573
  • Lister les lettres dont la transcription contient le terme réformés? et mentionne Gaspard de Coligny en date du 14 avril 1572 expédiées depuis Blois.
  • Lister les lettres dont la transcription contient le terme réformés? et le paratexte éditorial (notes et analyse) contient le terme protestant.
  • Lister les lettres dont la transcription mentionne Gaspard de Coligny et dont Catherine de Médicis est la destinataire.
  • Lister les lettres dont un témoin est conservé à la BnF.
  • Lister les lettres dont la transcription mentionne Gaspard de Coligny, dont Catherine de Médicis est la destinataire en 1572 et dont un témoin est conservé à la BnF.
  • Lister les lettres dont la transcription mentionne Gaspard de Coligny, dont Catherine de Médicis est la destinataire en 1572 en allemand.
  • Lister les lettres dont un témoin est conservé à la BnF dans le volume coté Fr. 3205.

Champs

  1. Personne
    1. Expéditeur
    2. Destinataire
    3. Sujet
  2. Date de lieu
    1. lieu d’expédition
    2. lieu de réception
    3. sujet
  3. Date de temps
  4. Content
    1. Transcription
    2. Note
    3. Titre ?
    4. Analyse ?
  5. Langue du document
  6. Institution de conservation
      • cote

Personne

Input avec autocomplétion pour sélectionner une personne décrite en base SELON son statut : expéditeur (sender), destinataire (recipient) ou sujet (inlined).

On doit pouvoir sélectionner plusieurs personnes successivement.

La sélection active est affichée sous la forme d’un tag-filtre activé.

Date de lieu

Input avec autocomplétion pour sélectionner une ville décrite en base SELON son statut : lieu d’expédition (location-date-from), lieu de réception (location-date-to) ou sujet (inlined).

On doit pouvoir sélectionner plusieurs villes successivement.

Date de temps

Dans cette vue de base, un slider doit permettre de sélectionner l’intervalle entre 2 dates exprimées au jour près.

Cf modèle déployé dans la recherche avancée de l’application en développement.

Content

Input pour saisir une chaîne de caractères (regex).

Pouvoir activer la recherche floue (ex. du DicoTopo pour le réglage de la fuzziness).

Langue du document

Sélecteur pour la/les langue(s) de la lettre (document_has_language.language_id).

Institution de conservation

Sélectionner une institution de conservation (sélection d’une valeur de institution.name).

Pouvoir saisir une cote (recherche plein texte dans witness.classification_mark)

Visualisation des résultats

  • Liste simple (comme version actuellement déployée enrichies de l’expéditeur et du destinataire)
  • Pouvoir déplier l’analyse
  • Pouvoir en cas de recherche Content afficher les occurrences (modèles ENCPOS)
  • TODO. Spécifier les filtres à afficher pour affiner la réponse (cf EMLO)
  • TODO. Imaginer une vue cartographique (3 types de lieu…)
  • TODO. Imaginer pour chaque personne le graphe de ses correspondants (rebond depuis un tag vers une notice d’autorité ?)

Fonctionnalités

  • conserver dans la session le résultat de la dernière recherche (recherche courante)
  • fournir un lien pour chaque recherche
  • export des résultats ? => une liste ? quel formatage ?
  • pouvoir rechercher des lettres selon un ark Gallica ? Lister toutes les lettres contenues dans un document Gallica identifié par son ark ?

NB. OP écarte l’idée de proposer un filtre par (sous-)collection

Problèmes

mise en cohérence des formulaires (1) et (2)

Exemple du statut des personnes : par défaut (1), on sélectionne une personne quel que soit sont statut. Dans la vue de résultats, ce filtre peut être réexprimé sous la forme de 3 filtres : par ex. le tag sélectionné Catherine de Médicis sera affiché 3 fois, sous les 3 catégories (Expéditeur, Destinataire et Sujet) ; possiblement déselectionnable…

Du coup, un résultat affiché pourra ne plus correspondre à la requête formulée dans le formulaire par défaut.

Bref, on bascule facilement du formualaire (1) au formulaire (2), mais le chemin inverse pose problème.

Point à discuter.

Vue 1

Filtre
Personne Catherine de Médicis Gaspard de Coligny
Lieu Blois Senlis
Date 1572-1575
Contenu réformés?

Vue 2

Filtre
Expéditeur Catherine de Médicis
Destinataire
Personne citée Gaspard de Coligny
Ville d’expédition Blois
Ville de destination Senlis
Ville citée
Date 1572-04-14-1572-07-14
Contenu fuzzy_search("réformés?", 0.8)

Création d'un nouveau document : reprend les données du dernier document consulté

Localistion du problème : Création d'un nouveau document via la route /document-creation :

Comportement actuel :
Un utilisateur connecté peut créer un nouveau document via le menu user (en haut à droite) "Créer un nouveau document".
Un formulaire (route /document-creation) permet d'en créer le titre (seul élément requis à ce stade), puis l'application charge ce nouveau document (/documents/nouvel Id du document créé).

  • Sans ouverture d'un document au préalable lors de la session :
    Le nouveau document affiché est vierge, ce qui est le comportement attendu dans tous les cas de figure.
  • Si un document a déjà été consulté lors de la session en revanche, certaines données de ce dernier sont reprises :

Ici, la date de rédaction, l'étiquette, l'analyse, l'adresse et la lettre sont issues du document consulté au préalable, ce qui n'est pas souhaité.

Comportement souhaité :
Dans tous les cas de figure, un nouveau document ne doit contenir que des données non renseignées, à l'exception du Titre validé et de la Collection défaut.

Visualisation d'une lettre (mode édition ou non) : gérer l'affichage du breadcrumb des collections

Gérer l'affichage du breadcrumb des collections:

  • alignement de l'icône de suppression des collections associées (mode édition)

  • amélioration de l'affichage du breadcrumb (chemin de la collection) :

    • réduction de la police ?
    • chaque breadcrumb encadré ?
    • meilleure séparation des lignes (plus d'espace entre les breadcrumbs, par rapport aux sauts de ligne éventuels dans un breadcrumb)
  • Hors-connection :

  • Mode éditeur :

Merci

Gérer les collections - Filtrer les collections

Rappel : filtrer les collections est l'un des développements nécessaires discutés à l'issue #14.

Rechercher / filtrer parmi les collections

Développements nécessaires :

  • Ajout d'une boite de recherche pour filtrer les collections :

    • pour tous les users connectés (quel que soit leur statut) et non connectés
  • Affichage des résultats :

    • présenter les cartes simplifiées des (sous-)collections correspondantes au motif de recherche, à plat (quel que soit leur niveau hiéarchique)
    • voir notre illustration n°5 à #14 (comment)
  • Ajout de tris : TBD

Edition d'une lettre : déplacer le bouton nouveau témoin

Le bouton nouveau témoin (+) est le seul à apparaître pas lorsque la section Témoin est repliée (contrairement aux autres sections) :

  • le déplacer au dessus des témoins dans la même div ? ou
  • le rendre invisible lorque la section est repliée ?

Merci

Gérer les collections - Ajout/Edition d'une collection

Rappel : l'ajout et l'édition d'une collection est l'un des développements nécessaires discutés à l'issue #14.

Ajout, Gestion des (sous-)collections

Développements nécessaires :

  • construire le formulaire de création / édition de (sous-)collections.

  • pour les seuls admin.

  • le formulaire doit être éditable par tout user admin, comme la mise à jour de la description.

  • le formulaire consiste en : voir #14 (comment).

    • éléments propres à la collection :
      • titre (obligatoire, champ de texte)
      • "administrateur" (obligatoire, sélection d'un administrateur)
        NB : il serait nécessaire de pouvoir sélectionner / éditer l'administrateur associé à une (sous-)collection car c'est celui qui apparaîtra en tant que "Curated by ..." sur la page. Voir le comment : #14 (comment)
      • description (optionnel, champ de texte)
      • NB : les dates associées à la (sous-)collection créée ne sont pas éditables (calculées à partir des documents associés). En l'absence de documents à la création, les attributs date_min et date_max = leur valeur défaut et gérés côté Front pour afficher "na" ou "Non renseigné".
  • gérer relations parents/enfants d'une nouvelle collection (sur la base de la maquette) :
    NB : voir #14 (comment), #14 (comment).

  • page /collections/ :

    • une collection racine est ajoutée à partir de l'URL /collections seulement (image 1 de la pj)
  • page /collections/id :

    • une sous-collection est ajoutée à partir l'URL /collections/id de son parent (image 3 de la pj)
  • redirection à l'issue de la création :
    NB : le comment #14 (comment)

  • Renvoyer vers la collection nouvellement créée

Gérer les collections - Editer les liens des documents vers les collections sur la page /documents/id

Rappel : l'ajout de lettres à une collection est l'un des développements nécessaires discutés à l'issue #14.

édition d'un document pour éditer son(ses) lien(s) vers une(des) collection(s) :

Développements nécessaires :

  • pour les users connectés admin et contributeurs

  • l'ajout d'un document à une collection met à jour la liste des collections auxquelles il est rattaché dans la section "Collections" de sa page /documents/id :
    image

  • ajouter à la page /documents/id/ (section "Collections") un sélecteur de collection(s)

    • liste déroulante (none|toutes les collections disponibles, à plat)
    • pouvoir sélectionner plusieurs (sous-)collections

Gérer les collections - Suppression d'une collection

Rappel : la suppression d'une collection est l'un des développements nécessaires discutés à l'issue #14.

Suppression des (sous-)collections

Développements nécessaires :

  • ajouter pour les admin un bouton de suppression de (sous-)collections.

  • suppression de la collection mais SURTOUT PAS des lettres associées !

  • droits : tout user admin peut supprimer des (sous-)collections.

  • au moment de la suppression, gestion de la migration des lettres (voir #14 (comment)) :

  • page /collections/ :

    • la collection supprimée est collection racine : supprimer la collection, et lier les documents à une collection "fantôme" (qui remplacerait Catherine de Médicis comme collection "défaut"). Voir
      #14 (comment)
  • page /collections/id :

    • les lettres d’une sous-collection restent dans la collection de niveau supérieur (par rapport à la collection supprimée uniquement : elles restent attachées aux autres (sous-)collections auxquelles elles appartiennaient par ailleurs et qui ne sont pas impactées par la suppression)
    • la collection supprimée a des enfants (voir #14 (comment)) : à confirmer entre
      • erreur dans l'interface
      • rattachement de toutes les lettres de ces enfants au niveau supérieur du noeud supprimé (e.g. la supression d'une (sous-)collection signifie qu'il n'est plus pertinent de conserver sa structure et ses enfants)

NB : pas d’impact sur indexation, puisqu’on fait le choix de ne pas proposer de filtre par collection sur la recherche.

Finaliser le maquetage (création document)

Achever la page '.../document-creation' de l'application :

  • Ajouter un titre "CRÉER UN NOUVEAU DOCUMENT" (similaire à la page /bookmarks, voir ci-dessous) :
    image

  • Etablir les données par défaut d'un nouveau document :

    • Seul le titre est obligatoire : ajouter un sous-titre "Renseigner le Titre du document"
    • Ajouter une validation (Titre est une chaîne de caractère non vide)
  • Implémenter la charte graphique

Gérer les collections - Arbre des collections sur la page /collections/id/

Rappel : la présentation de la structure d'une collection est l'un des développements nécessaires discutés à l'issue #14.

Présentation des collections sous forme d’arbre (2) sur la page d'une (sous-)collection /collections/id/

Développements nécessaires :

  • Affichage une colonne « Arbre de la collection » :
    • arborescence simplifiée de la collection (Titre seul)
    • depuis le niveau racine
    • dépliée avec indication du niveau courant
    • voir nos illustration n°3 et 4 à #14 (comment)
    • pour tous les users connectés (quel que soit leur statut) et non connectés

Dictionnaire des abréviations

  • lister (pour l’instant dans cette issue) les abréviations utiles (institutions, fonds, cotes, éléments de texte comme titres protocolaires, etc.)
  • ajouter ce dictionnaire au projet
  • prévoir un accès direct pour les utilisateurs authentifiés

Gérer les collections

Concevoir la partie gestion de collection

Ce ticket se décompose désormais comme suit :

L'historique des discussions sur l'issue 14 avant son découpage est conservé ci-dessous pour référence.

Gérer les collections - Arbre des collections sur la page /collections/ (et les résultats de filtres)

Rappel : la présentation de la structure d'une collection est l'un des développements nécessaires discutés à l'issue #14.

Présentation des collections sous forme d’arbre (1) sur la page racine /collections/

Développements nécessaires :

  • bouton « Parcourir la collection »
    • pour tous les users connectés (quel que soit leur statut) et non connectés
  • ce bouton affiche une arborescence simplifiée de la collection :
    • Titre, nombre de lettres
    • depuis le niveau racine
    • repliée par défaut
    • voir notre illustration n°2 à #14 (comment). NB : Même arbre à afficher sur une liste de résultat comme celle de l'illustration n°5 (e.g. depuis la racine, pour chaque résultat).

Finalisation V1 Front

Dans la perspective de la première mise en production :

Pop Up Témoins : divers bugs d'affichage

PopUp Témoins / Sélection images (URL de la ressource) :

  • centrage du tilde vert de validation / wrap texte
  • Boutons en bas à droite hors-champs (cf #60)

  • Zone d'affichage des images hors-champs (bloc noir en haut)

Merci

Affichage des entités annotées au survol

Les entités nommées (personnes, lieux) sont actuellement étiquetées manuellement par des utilisateurs au sein de l’éditeur de texte riche QuillJS à l’aide des balises persName et placeName.
L’application lie correctement un identifiant à une portion de texte mais ne crée pour le moment qu’un lien html factice qui ne permet, ni d’identifier facilement la cible du lien (nom de la personne ou du lieu), ni d’accéder à la notice d’autorité de l’entité concernée.

Objectif : concevoir un moyen d’afficher un composant au survol des entités permettant d'afficher :

  • Des informations complémentaires concernant l'entité
  • un lien cliquable menant à la page de notice (tbd) de l’entité
  • En mode édition (utilisateur connecté), des boutons d’action supplémentaires :
    • supprimer la liaison entre la portion de texte et l'entité
    • ouvrir le formulaire d’édition de l’entité

Attention, l’utilisation de popup/tooltip via l’insertion de balises autour des entités ne doit pas entrer en conflit avec QuillJS. De plus, ces balises ne doivent pas être sauvegardées.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.