Porphyry icon indicating copy to clipboard operation
Porphyry copied to clipboard

Create a bidirectional link between two items

Open RobinLallier opened this issue 6 years ago • 70 comments

Description

Allow users to link an item to others, into a new "Description" section. This can help highlight similarities between two or more items. A small text can describe what the link is used for.

Deliverables status

Phase 1

  • [ ] Scenarios (Gherkin)
  • [ ] Mockups
  • [ ] Implementation strategy

Phase 2

  • [ ] Acceptance tests (Capybara)
  • [ ] Implementation

Phase 3

  • [ ] Screencast

RobinLallier avatar May 02 '19 07:05 RobinLallier

Mock-up attached :

Capture d’écran 2019-06-20 à 08 57 14 Capture d’écran 2019-06-20 à 08 57 01

RobinLallier avatar Jun 20 '19 06:06 RobinLallier

It can be emulated by posting a comment with a link in it (see feature #47). However this is not bidirectional and you don't have the thumbnail in it.

benel avatar Feb 27 '20 17:02 benel

Studying Abroad : It would be interesting to allow students to have access to suggestions of UEs based on one another to help them find other UEs that might be of interest to them.

Damien71 avatar Mar 19 '20 09:03 Damien71

Dans le cadre de l'Archéologie Grecque, cela pourrait être utile de lier des vitraux du même artiste, ou du même lieux.

hebertquentin avatar Mar 19 '20 10:03 hebertquentin

Dans le cadre de l'Archéologie Grecque, cela pourrait être utile de lier des vitraux du même artiste, ou du même lieux.

@hebertquentin Des vitraux ?!

Notez que s'il s'agit du même artiste, comme il s'agit d'une catégorie, le lien est déjà disponible (voir https://github.com/Hypertopic/Porphyry/blob/v7/features/items_with_same_topic.feature). Pour le même lieu (mais reste à savoir ce que ça veut dire exactement), vous devez chercher le ticket qui correspond (sachant que le lieu est un attribut).

benel avatar Mar 19 '20 10:03 benel

@benel Des vases*

Hum... Je pense supprimer cette carte alors. J'avais mal compris la fonctionnalité.

hebertquentin avatar Mar 19 '20 10:03 hebertquentin

@hebertquentin Vous pouvez laisser votre commentaire, ça rendra peut-être service à d'autres équipes pour ne pas faire la même erreur.

benel avatar Mar 19 '20 11:03 benel

Pour le partage d'expériences cela permettra de définir des compétences transversales à certaines expériences, qui permettront de faire le lien entre plusieurs articles de domaines différents

Gaetanherry avatar Mar 19 '20 14:03 Gaetanherry

Pour le partage d'expériences cela permettra de définir des compétences transversales à certaines expériences, qui permettront de faire le lien entre plusieurs articles de domaines différents

@Ocynox Pourquoi pas, mais vérifiez que le fait d'utiliser une catégorie transversale ne règle pas déjà le problème.

benel avatar Mar 19 '20 14:03 benel

Projet Approche par compétences de la formation : Lien entre UE qu'il faut déjà avoir fait pour en faire une autre

ChloeChamaillard avatar Mar 19 '20 15:03 ChloeChamaillard

Projet sur les vitraux: Cette fonctionnalité serait utile pour pouvoir faire le lien et circuler entre les vitraux ayant des points communs intuitivement sans devoir repasser par la recherche à chaque fois

ShovelBear avatar Mar 19 '20 15:03 ShovelBear

@Morillev Faites bien la différence entre une interface plus simple et une nouvelle fonctionnalité. Là présentement, il n'existera de lien que si quelqu'un le crée. La structure des données sera différente.

benel avatar Mar 19 '20 15:03 benel

Pour l'équipe Approche par compétences de la formation :

Le binôme @MartiSalty et @tinidec s'occuperont du livrable Stratégie d'implémentation de ce ticket (#188).

Le binôme @ChloeChamaillard et @gabyseg s'occuperont du livrable Scénario de ce ticket (#188).

ChloeChamaillard avatar May 07 '20 13:05 ChloeChamaillard

Fonctionnalité : À partir d'un item, obtenir ceux qui sont similaires

Scénario :

Soit l’utilisateur consulte un item « IF05 » Et la liste des items « GL02, EG23, IF14 » similaires est visible dans la rubrique « Voir aussi » Quand l’utilisateur choisit l’item « GL02 » dans la rubrique « Voir aussi » Et l'item « GL02 » est affiché Et l'item « IF05 » est visible dans la rubrique « Voir aussi »


Fonctionnalité : Ajouter un item similaire à un autre item

Scénario :

Soit l’utilisateur créer un item « IF05 » Et l’attribut « items similaires » dans la rubrique « Voir aussi » vide Quand l’utilisateur indique « GL02 » comme valeur pour l’attribut « items similaires » dans la rubrique « Voir aussi » Et l’item « GL02 » est visible dans la liste des « items similaires »

Rédigé par @ChloeChamaillard et @gabyseg

ChloeChamaillard avatar May 14 '20 13:05 ChloeChamaillard

@Hypertopic/approche-par-competences-de-la-formation Je me suis occupé de la partie CouchDB (Hypertopic/Argos#58) comme ça vous pouvez vous concentrer sur la partie React (Porphyry#188).

benel avatar May 19 '20 16:05 benel

Stratégie d'implémentation

Quelle partie du code sera impactée (classes, méthodes) ? Le composant “Item” sera modifié. Une section “Objet en liens” sera ajouté en dessous des “Viewpoints”. Le composant “LinkedItems” sera ajouté dans “itemPage”.

Y aura-t-il des difficultés d'un point de vue algorithmique ? Avez-vous des pistes pour les résoudre ? Nous n’aurons pas d'algorithme dans notre intégration, nous utiliserons seulement de la récupération.

Les données dont vous avez besoin sont-elles déjà chargées par la page ? Si non, quelle sera la requête la plus efficace et comment allez-vous récupérer dans la structure de données précisément celles qui vous intéressent ? Il faudrait ajouter dans la base de données un nouvel attribut multivalué à “Item”. Cette attribut contiendrait une référence à un Item existant ainsi qu’un petit texte de description. Comme dans notre séance sur le développement, vous pouvez tester des petits bouts de code indépendants et les associer à votre stratégie (avec éventuellement des exemples de données, voire même des temps d'exécution).

Existe-t-il des bibliothèques qui pourraient simplifier l'implémentation ? Non, nous avons pas besoin de bibliothèques.

Doit-on intégrer des services extérieurs (ex : cartographie) ? De quelles fonctionnalités en particulier aura-t-on besoin ? Est-ce que le service choisi les propose ou doit-on passer chez un concurrent ? Comment s'utilisent ces fonctionnalités ? avec quels paramètres ? Des services extérieurs ne seront pas nécessaires non plus.

Chaque item pourra être relié à un ou plusieurs autres items avec un petit texte expliquant la relation.

Rédigé par @MartiSalty et @tinidec

ChloeChamaillard avatar Jun 04 '20 12:06 ChloeChamaillard

image

Les liens se trouveront au dessus des commentaires dans une section "Voir aussi".

ChloeChamaillard avatar Jun 04 '20 12:06 ChloeChamaillard

Il faudrait ajouter dans la base de données un nouvel attribut multivalué à “Item”. Cette attribut contiendrait une référence à un Item existant ainsi qu’un petit texte de description.

Avez-vous bien noté que c'est déjà fait ? Avez-vous pu le tester en faisant des requêtes comme je vous y avais invité•e•s ?

benel avatar Jun 04 '20 12:06 benel

Oui on a bien noté que c'est déjà fait, on avait juste pas changé ce qui avait été rédigé. Et on est en train de le tester.

ChloeChamaillard avatar Jun 04 '20 12:06 ChloeChamaillard

Nous rencontrons un problème lors de l'ajout d'un item lié. Nous aimerions savoir pourquoi l'item pourquoi nous n'arrivons pas ajouter un item dans Argos. Voici le code qui permet d'ajouter un item à un autre item.

_setLinkedItem = async (linkedItem) => {
    if (linkedItem!=='') {
      let hypertopic = new Hypertopic((await conf).services);
      return hypertopic
        .get({
          _id: this.props.match.params.item,
          item_corpus: this.props.match.params.corpus
        })
        .then(x => Object.assign(x, {item: linkedItem}))
        .then(hypertopic.post)
        .catch((x) => console.error(x.message));
    } else {
      console.error('Créez un attribut non vide');
      return new Promise().fail();
    }
  }

@gabyseg @LeonVongphanith @MartiSalty

MartiTM avatar Jun 04 '20 14:06 MartiTM

J’ai réécrit les scénarios pour qu’ils correspondent aux Vitraux pour les tests, ce qui donne cela : Fonctionnalité : Créer un lien bidirectionnel entre deux items

Scénario : À partir d'un item, obtenir ceux qui sont similaires Soit "SNZ 006" l'item affiché Et la liste des items "SM 008" similaires est visible dans la rubrique "Voir aussi" Quand l’utilisateur choisit l’item "SM 008" dans la rubrique "Voir aussi" Alors l'item "SM 008" est affiché Et l'item "SNZ 006" est visible dans la rubrique "Voir aussi"

Scénario : Ajouter un item similaire à un autre item Soit l’utilisateur créer un item "SNZ 006" Et l’attribut "items" dans la rubrique "Voir aussi" vide Et l'utilisateur "alice" connecté Quand l’utilisateur indique "SM 008" comme valeur pour l’attribut "items" dans la rubrique "Voir aussi" Alors l’item "SM 008" est visible dans la liste des "items"

Ils ont été mis dans un nouveau fichier dans le dossier features et ensuite il faut modifier les fichiers context.rb, event.rb et outcome.rb pour chaque ligne des scénarios qui n’est pas déjà présente dedans. Est-ce bien cela ?

ChloeChamaillard avatar Jun 04 '20 14:06 ChloeChamaillard

@MartiSalty

Nous rencontrons un problème lors de l'ajout d'un item lié. Nous aimerions savoir pourquoi l'item pourquoi nous n'arrivons pas ajouter un item dans Argos.

Quel genre de problème ? Message d'erreur ? Code et messages de retour HTTP ?

benel avatar Jun 04 '20 14:06 benel

@MartiSalty Quelle est la structure de votre linked_item ?

benel avatar Jun 04 '20 14:06 benel

@gabyseg @LeonVongphanith @MartiSalty

Est-ce que vous avez noté la structure que ça doit avoir dans le document stocké ?

https://github.com/orgs/Hypertopic/teams/approche-par-competences-de-la-formation/discussions/26?from_comment=6#discussion-26-comment-6

Ce n'est pas la même structure que dans les vues : le champ a pour clef items (et non item) et sa valeur est une sorte de hashmap (plus compacte en stockage et plus efficace pour les recherches) :

"items":{"710a9531a5f6991321d3f27b637648c0cd5b7926":{"corpus":"Vitraux - Bénel"}}

benel avatar Jun 04 '20 14:06 benel

@MartiSalty

Nous rencontrons un problème lors de l'ajout d'un item lié. Nous aimerions savoir pourquoi l'item pourquoi nous n'arrivons pas ajouter un item dans Argos.

Quel genre de problème ? Message d'erreur ? Code et messages de retour HTTP ?

Nous n'arrivons pas à ajouter une valeur à items de corpus. Nous n'avons pas non plus de message d'erreur. De plus, nous n'arrivons pas à effectuer des updates sur runkit.

@MartiSalty Quelle est la structure de votre linked_item ?

'linked_item' n'avait pas de structure mais nous avons pris note de votre dernier message.

De plus, nous rencontrons depuis cette après-midi soit une 'internal error' ou une 'TypeError: Cannot read property 'value' of undefined' sur nos tests de requête sur runkit.

@gabyseg @LeonVongphanith @MartiSalty

MartiTM avatar Jun 11 '20 13:06 MartiTM

@MartiSalty J'ai un peu de mal à relier dans ma tête tous les messages pour avoir l'ensemble de l'histoire... Si j'ai bien compris, vous essayez de tester un bout de code à part (indépendant de Porphyry) qui crée (ou modifie ?) un item avec un item relié. C'est ça ?

Si c'est le cas pourriez-vous me mettre le code complet ?

Notez bien, si vous êtes en binôme sur ce ticket, qu'un autre étudiant peut s'occuper pendant ce temps de l'affichage de ces items reliés (l'un est indépendant de l'autre).

benel avatar Jun 11 '20 15:06 benel

@Hypertopic/etudes-a-l-etranger-1

Bonjour,

Nous allons voir pour intégrer cette fonctionnalité dans le projet d'étude à l'étranger. Cela nous servirait à relier des matières entre elles. Par exemple, nous pourrions indiquer que des UEs en France possède des équivalents à l'étranger, et relier ces matières entre elles. De plus, nous pourrons lier des matières avec leur prérequis lorsqu'elles en ont.

ThomasRitaine avatar Mar 11 '21 09:03 ThomasRitaine

@Hypertopic/competences-eut

Cette fonctionnalité est intéressante pour notre projet étant donné que nous avons deux items (UE et Compétences), cela nous permet de relier une UE avec ces compétences ou inversement.

cedfre avatar Mar 12 '21 09:03 cedfre

Cette fonctionnalité est intéressante pour notre projet étant donné que nous avons deux items (UE et Compétences), cela nous permet de relier une UE avec ces compétences ou inversement.

@cedfre @Hypertopic/competences-eut Comme discuté ce matin, ce catalogue mixte UE/compétences correspondrait à une troisième approche (la première étant un catalogue des UE avec une catégorisation notamment par compétence, et la seconde étant un catalogue des compétences avec catégorisation entre autres par UE). Cette troisième approche n'est pas la plus facile à imaginer : je ne vois pas bien encore ce que seront les catégories dans un tel cas...

benel avatar Mar 12 '21 16:03 benel

Pour le projet Graines d'artistes , l'idée est d'ajouter des liens de quelques tableaux dans la page d'afficher un tableau. L'idée est de permettre aux visiteurs de voir directement les tableaux de le même concours ou de le même thème annuel.

therealdarkflamemaster avatar Mar 15 '21 09:03 therealdarkflamemaster