Giter VIP home page Giter VIP logo

cassandre's Introduction

CASSANDRE - Diary for qualitative analysis

License: GNU Affero General Public License

Contact: [email protected]

Home page: https://github.com/Hypertopic/Cassandre

Notice

Cassandre is a server software. There is no need to install it on your own computer to use it. The usual way is to be "hosted" by one's own institution (ask your system administrator). If your use cases meet our research interests, we can also host your data on our community server.

Installation requirements

Installation procedure

docker-compose up -d

Two services are now available:

Security settings

By default, users are managed both by CouchDB and LDAP.

  1. In CouchDB, create an administrator account.
  2. In CouchDB, create a database named _users.
  3. Create an empty {"_id": "_security"} object into _users database.
  4. Choose a password and set in as the secret in conf/couchdb.ini and conf/aaaforrest.yml.
  5. Set LDAP settings to fit your own LDAP server.

You can create a user account from Cassandre.

cassandre's People

Contributors

benel avatar chao avatar christophe-lejeune avatar dependabot[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

cassandre's Issues

Speed up views generation

For now, different views have a loop on words (corpus_lexicometrics, document_lexicometrics, kwic, phrase). To improve views generation performance, we could try to emit in the same loop views that have similar keys and reduce functions.

This seems to be the case of phrase and corpus_lexicometrics:

for each word1 {
  get word2 and word3
  if you have word3 {
    emit([word1, word2, word3])
  } else {
    emit(word1)
  }
}

Créer un marqueur

Création de la documentation de la fonctionnalité Créer un marqueur

Créer un projet d'analyse qualitative

Créer un projet d'analyse qualitative

But

Cette fonctionnalitée permet de créer un projet d'analyse qualitative.
On peut spécifier :

  • Son nom ex: "Culture du mouvement pour le logiciel libre"

Scénario :

Afficher la liste des journaux de bord

Required features

  • List all diaries.
  • Diary's icon features badges counting number of memos.
  • Diary's icon features badges counting number of contributing users.
  • Filter diaries according to user access.

Description

Cette fonctionnalité permet d'afficher la liste des journaux de bord et peut constituer la page maitre de l'application. A partir de cette page on peut :

  • consulter ses propres journaux de bord.
  • consulter les journaux dont l'utilisateur est collaborateur.
  • consulter les journaux récent (modifié/crée récemment)
  • créer des journaux de bord (#53)

Fonctionnalité

Scénario

Sera présent sur l'interface :

  • un volet principal à droite affichant des dossiers pour journaux de bord
  • Un volet à gauche affichant une icone permettant de créer un nouveau journal (#53) et de filtrer les journaux que l'on souhaite faire apparaitre sur le volet principal : Tous, Récent, Les miens, ceux auquel je collabore, ...

Maquette

maquette

Saving a document in a noname corpus

As experienced by adventurous students, weird things happened when the corpus name is an empty string...

The document is saved but an exception is thrown and the document cannot be displayed.

Show specificities of a given text

Words that are specific to a text are highlighted inside the text, by shading all the words of the text (the more specific, the darker). This feature uses a TFIDF-like formula.

Show raw text

Leave the shading view (from a rarities, specificities or repeated segments features) and show back the text in black characters.

Voir les dernières actions sur un compte-rendu

In brief

This discussion suggests to develop the following features :

  1. The date and the user name are stored when a user :
  • renames a diary,
  • modifies a memo,
  • comments a memo,
  • consults a memo.
    • The history shows modifications, comments and consultation of a memo.
    • Search what a specific user have done.
  1. History of the modifications is available for
  • each memo.
  • each diary.

Introducing the issue

In reference to the last meeting with @christophe-lejeune (09/04/15), I suggest a new feature that allows a user to see who consulted or commented his memos. As it has been said, it would be useful to monitor who took a look at a given memo, then the user could know who is aware of what he wrote and talk about it in the future.

Here are some ideas, point of view of the memo's creator :

  • List all the users who has consulted or commented the memo (the date is shown)
  • Search for a specific user on the list
  • List only the users who commented the memo
  • List only the users who consulted the memo

Workaround for LaSuli bugs

LaSuli has a bug, when the web page source code is updated (even a white space), it could break the highlights. See issue #16 (https://github.com/chao/LaSuli/issues/16)

I have been thinking of this for days, but I still have no idea how to fix it perfectly.
However, I do have a solution.

We just have to ignore all white spaces (no matter it's significant of insignificant) both in highlight creation and rendering. This will fix the bug for most of web pages.

But we will have to update Cassandre. We need to change the payload of text from "it's a example" to "it's a example". Otherwise the " " also will be ignored during highlight rendering.

CouchDB unavailable after documents deletion

When multiple documents are deleted (even only 10 at once), CouchDB (version 1.0.1) enters views update. As a consequence, the whole base/application becomes unavailable for minutes (!). Such a behavior is not necessarily a bug, but the result is not really robust.

Regrouper des marqueurs dans un registre

Issue created w/ @PabloPrudhommeau

What we understand after reading issue #42 is that the category aren't necessary to create a keyword. However it should be a great feature to reference those keywords into registers.

Since the keywords can be created without a defined category, it would be interesting to affect them a posteriori, but also at its creation.

We identified the following scenario:

  • Select a word in the corpus
  • Define it as a keyword
  • Chose one of the three items:
    • Affect an existing category to the keyword
    • Create a new category for the keyword which will automatically affected to it
    • Not affect a category to the keyword & leave it blank

Import a forum thread into Cassandre

  • The original page URL could be saved into Cassandre as an alternative resource.
  • Neither phpBB nor Doct***o produces well-formed xHTML. Therefore we cannot use xpath nor XSLT. There could be a set of regular expressions for each kind of forum.

Matthieu implemented forums parsers that might be reused:

    $p_post_seperator = '/class="messagetable"/u',
    $p_thread_title = '/Sujet : <h3>(.*)<\/h3>/u',
    $p_date = '/le (\d\d-\d\d-\d\d\d\d).*(\d\d:\d\d:\d\d)/u',
    $p_author = '/<b class="s2">(.*?)<\/b>/u',
    $p_id = '/<a name="t(\d+)"><\/a>/u',
    $p_msg = '/<div id="para\d+">(.*)<\/div><\/td><\/tr>/u',
    $p_end_thread = '/<script language="javascript" type="text\/javascript">var listenumreponse/u',
    $p_nextpg = '/<div class="pagepresuiv"><a href="(.*)" class="cHeader" accesskey="x">Page Suivante<\/a>/u'

Highlights should be kept unchanged when source text is edited

Given that highlights are stored in the source text, the edit form considers them as attributes. This behaviour leads to the deletion of highlights (because their structure is more complicated than key-value conventional attributes).

A solution would be that edit form prevents highlights to be listed as attributes and saves them (unchanged) in each new version of the edited source text.

Voir de manière synthétique le journal de bord

Required features

  • Draw a graphical network of groundings between memos, diagrams and graphs.
  • Quote (" & ') are allowed in memo name.

Afficher un journal de bord

Description

Cette fonctionnalité permet d'afficher un journal de bord.
Elle permet d'afficher la liste des compte rendus du journal de bord sous forme de graphe et sous forme de liste filtrable.

Fonctionnalité

Scénario

Sur l'interface, il est possible

  • de modifier le journal de bord (la liste des collaborateurs, le nom) via l'icone de roue crantée.
  • sur le volet de gauche (qui se déplie se cache ou s'affiche pour profiter de l'espace entier) de faire une recherche sur les comptes-rendus
  • sur l'espace de droite, de consulter l'arbre des comptes rendus (créee à partir des ancrages) et d'accéder au contenu d'un compte rendu en cliquant dessus.

Maquette

Version verticale :
journal

Version horizontale :
journal

Tracer une schématisation

Summary of requested features/fixes

Diagrams

In axial coding, diagrams allow to link two dimensions/properties.

  • The user may create a diagram from a coding memo.
  • A diagram may link two properties, varying in the same direction.
  • A diagram may link two properties, varying in opposite directions.
  • A diagram may link two dimensions, varying in the same direction.
  • A diagram may link two dimensions, varying in opposite directions.
  • A diagram may link a dimension and a property.
  • Negative cases can be mentioned on the diagram.
  • The name of the diagram is generated from the name of its components.
  • The name of the diagram should be updated when one of its component is renamed.
  • Diagram's shape is not affected by the length of the component's label.

Graphs

In selective coding, graphs allows to integrate all properties/dimensions.

  • The user may create a graph from a diagram
  • A graph is constructing by adding diagrams to its groundings.
  • Clicking a graph's node directs to the matching coding memo.
  • Clicking one graph's edge directs to the matching diagram.
  • Graphs should not override menu buttons.
  • Graph name may be modified.

Discussion

Les diagrammes ou schématisations sont des comptes-rendus spécifiques, dont le mode de saisie est graphique (et non de texte libre). On peut en distinguer deux types :

  • Les schématisations de codage axial associent deux nœuds, soit deux bâtonnets, soit deux triangles (illustrés pages 104, 108 et 109 du Manuel d'analyse qualitative).
  • Les schématisations de codage sélectif (ou "schématisations finales") comportent, elles, plus de nœuds (illustrées page 118 du Manuel).

Dans les deux cas, les schématisations gagneraient à être tracées au moyen d'un éditeur (ce qui présenterait plusieurs avantages sur la 'simple' importation d'images) :

  • Les utilisateurs pourraient choisir les noms des nœuds parmi les étiquettes déjà créées. Ainsi les ancrages des schématisations se compléteraient automatiquement.
  • En outre, ce faisant, cliquer sur les nœuds de la schématisation permettrait d'aller et venir entre la schématisation et le matériau (ce type de navigation est proposée par d'autres logiciels d'analyse de textes, comme NVivo, par exemple).
  • L'éditeur pourrait assister l'agrégation des schématisations de codage axial en une schématisation de codage sélectif, selon les conventions explicitées pages 116-117 du Manuel. Agréger des diagrammes serait précieux pour l'analyste et offrirait également des possibilités de navigation supplémentaires : cliquer sur un lien de la schématisation finale permettrait de "remonter" à la schématisation de codage axial d'où cette articulation provient. Les ancrages de la schématisation finale (s'appuyant sur des schématisations de codage axial) seraient ainsi, eux aussi, gérés par le système.

Ce qui précède n'implique pas nécessairement de disposer d'une interface WYSIWYG : une image dotée de liens dynamiques pourrait aussi être générée à partir de la déclaration des noms de nœuds et de leurs relations.

Rédiger un compte-rendu

Summary of required features

  • Create a memo.
  • Edit a memo.
    • Memo includes Markdown Layout.
    • Link to online pictures (thanks to Markdown)
    • Upload a picture to a memo.
      • Same as above (with drag and drop).
  • Delete the picture attached to a memo.
  • Delete a memo.

Discussion

Issue created with @Yeahger & @valentinlefevre

We try and synthesized the scenario 'writing a memo'. The different steps we were able to identify are the following:

  • Writing the date
  • Writing the place & context
  • Writing down the first impressions & notes
  • Transcribe the interview
  • Labeling the interview
  • Naming the hole memo for referencing it
  • Join meeting review & own notes
  • Transcribe the decisions taken during the meeting

We also understood the need about anchors which is a central feature in the activity of writing a memo.

Partager un compte-rendu

All the listed tools will be available from the memo page

The user can choose to let his memo public or private, in case it's private he can :

  • Share to user(s) or group of user
  • Share by date
  • Share by memo's object (minutes, observation...)
  • Take a look at the shared memos

"Select all" doesn't always select.

Reproduction scenario:

  • Open /text
  • Click on Create...
  • Fill title with FOO
  • Fill corpus with BAR
  • Save
  • Save
  • Click on BAR
  • Click on Delete...
  • Check Select all
  • Uncheck Select all
  • Check Select all
  • Foo is not checked :’-(
  • Click on Delete...
  • Foo is still there :’-(

Broken link to draft text

Once, when a text was in draft mode, clicking on its name in the list, opened the form to edit it.

Now the URI rewrite is broken (e.g. /text/IF14/undefined/a1ff instead of /editable_text/a1ff), and the page displays:

{"error":"not_found","reason":"missing"}

Dresser une table des propriétés

Summary of required features

  • Draw a minimal table thanks to Markdown Layout
  • Draw a complete table with red and green cells on a dedicated page.
  • Move line or column with mouse.
  • Quoting a field memo adds a groundings to the table.

Discussion

Une table des propriétés (présentée dans le Manuel d'analyse qualitative, pages 99-101) constitue un compte-rendu (mémo) d'un type particulier, nécessitant un mode de saisie tabulaire.

  • Les noms de lignes de ce tableau devraient pouvoir être saisis librement.
  • Les entêtes de colonnes seraient choisis parmi les étiquettes créées (propriétés, dimensions, catégories).
  • Les cellules du tableau devraient comporter la référence (peut-être via un hyperlien) à un passage d'un compte-rendu de terrain.

Unification des fonctionnalités

Rédigé avec @valentinlefevre

Introduction

Comme nous l'avions annoncé lors de la réunion avec @christophe-lejeune le 04/06, nous allons présenter les différents scénarii possibles avec les maquettes servant à la démonstration. Dans la mesure du possible, les scenarii se succèderont de manière logique.

Dans ce ticket on va tenter d'être le plus synthétique et clair possible pour ouvrir la discussion sur tous les scénarios, il va être très long.

Également nous avons pris l'initiative de proposer des solutions à différentes problématiques. Autant celles entendues lors des réunions que celles explicitement discutées dans les différents tickets. Évidemment aucune de nos suggestions ne fait office de solution parfaite ou fixe, mais il serait intéressant que ces différentes maquettes deviennent des modèles approuvés par le client. Donc des maquettes sur lesquels nous pourrons nous appuyer pour proposer de nouvelles fonctionnalités. C'est pourquoi à chaque remarque ou suggestion, les maquettes qui vont suivre seront éditées.

Scenarii


Création d'un journal de bord

Lister les journaux de bord

  • La croix permet de supprimer le journal de bord, elle n'apparaît qu'au survole de la souris
  • Clique sur le bouton "Nouveau journal"

Créer un journal de bord

  • Clique sur le bouton "Créer"

Renvoie vers Lister les journaux de bord


Affichage de la vue synthétique d'un journal de bord

À partir de Lister les journaux de bord

  • Double clique sur un journal de bord ("Locomotives")

Voir un journal de bord dans sa globalité


Consultation d'un compte-rendu

À partir de Voir un journal de bord dans sa globalité

  • Double clique sur un compte-rendu ("Table des propriétés")

Consulter un compte-rendu


Parcours dans les comptes-rendus

À partir de Consulter d'un compte rendu

  • Clique sur le bouton ufgfdg

Lister les comptes-rendus qui s'appuient sur celui consulté

  • Clique sur un compte-rendu ("Se préserver")

Renvoie vers Consulter un compte-rendu


Création d'un compte-rendu à partir de la vue synthétique d'un journal de bord

À partir de Voir un journal de bord dans sa globalité

  • Clique sur le bouton "Créer un compte-rendu"

Proposer les choix d'ancrages

  • L'utilisateur choisi le type de compte-rendu qu'il souhaite à partir de cette fenêtre
    • Lorsqu'il change de type de compte-rendu souhaité, les propositions d'ancrages sont actualisées
  • Les propositions sont séparées en deux parties afin d'assister le chercheur sur la "Gounded method theory". Il reste libre de choisir
  • Les comptes-rendus appaissent dans l'ordre d'apparation, la premier étant le plus récent
  • Clique sur le bouton "Valider"

Rédiger un compte-rendu

  • Clique sur le bouton enregistrer

Enregistre le compte-rendu et renvoie vers Consulter un compte-rendu


Création d'un compte-rendu à partir d'une consultation d'un compte-rendu

À partir de Consulter un compte-rendu

  • Clique sur le bouton "Créer un compte-rendu"

Proposer les choix d'ancrages

  • Le premier compte-rendu apparent est nativement coché et bloqué, l'utilisateur ayant lancé la création d'un nouveau compte-rendu depuis la consultation de ce compte-rendu choisi comme ancrage par défaut
  • Clique sur le bouton "Valider"

Renvoie vers Rédiger un compte-rendu


Observation du flux sur un compte-rendu

À partir de Consulter un compte-rendu

  • Clique sur le bouton gfgf

Lister les flux

Parcourir les comptes-rendus

According to the discussion I had with @benel, it would be interresting to make things clear about how the user would read his log book (i.e. Journal de bord).

The object of this issue is to outline the principal idea on how the log book's interface is shown.

I have heard that @benel drew a mock-up on a white board and @EdwardNjango photographed it, could you respond to this issue en share the picture?

As precisions, we know :

  • A log book always starts with a "Compte rendu de terrain", so we could take this as an index when the user read his log book
  • There is a dependence between each memo's type (e.g. "Compte rendu de codage" depends on "Compte rendu de terrain", "Compte rendu théorique" depends on "Compte rendu de terrain", and so on), so there is a logic and permanent sequence

Our idea :

  • "Compte rendu de terrain" is always the first memo shown
  • A viewport allows to consult all the different memos by sliding (left or right)
  • The sequence of memo is made in reference to the diagram that you can see in issue #40 (comment)

I will post a mockup, this issue could give a principal view for those issues : #40, #45, #46, #41

For the moment, here is a mockup sample

Log book

2015-04-17 12 42 39

Ajouter un ancrage à un compte-rendu

Summary of requested features

  • Add grounding to a memo.
    • Needs refactoring.
  • Remove one memo's grounding.

Discussion

Tel qu'il a été minutieusement évoqué dans le ticket #40, la rédaction d'un compte rendu donné exige dans certains cas la prise en compte de plusieurs version de types de comptes rendus.

Exemple : Le compte rendu théorique N°2 nécessite les comptes rendus de codage N° 1 et 2.

Dans ce cas, la solution idéale qui conviendrait au système de navigation retenu serait un système d'ancrage qui permettrait de référencer directement un compte rendu donné dynamiquement.

Voir de manière synthétique le journal de bord

But du ticket

Le but de ce ticket est de mettre en avant une fonctionnalité un peu délaissée qui a été évoquée la première fois pendant la séance du TD 23/05/2015 de 8h à 10h avec VB. En raison d'un grand nombre de ticket, cette issue ne vas pas être détaillée. Pour l'instant, cette issue servira dans un premier temps à

  • Informer @christophe-lejeune de cette idée, pour que l'on puisse avoir un feedback de sa part
  • Nous permettre de classer ce ticket dans les tâches prioritaires ou non prioritaires

Synthèse des besoins

Il a été évoqué le besoin d'avoir une vue extrêmement synthétique et globale de l'ensemble du journal de bord. Cette vue synthétique permettrait à la fois de naviguer au sein de l'ensemble du journal de bord et de consulter de manière global celui-ci (de voir l’avancement de certaines tâches par exemple, ou même de voir qui a participé à quelle partie du journal de bord via un système de couleur).
Cette vue globale ressemblerait à une sorte de carte qui permettrait à l'utilisateur (pas forcément à l'aise avec le cheminement des différents compte-rendus, ou de la navigation en général) de s'orienter facilement dans le journal de bord.

Create a corpus

When creating a document, a form allows to mention the corpus it will belongs to.

Save a pattern

The text used to generate a KWIC can be stored to be reused.

Commenter un compte-rendu

Summary of required features and fixes

  • Memos can be commented
  • The id of the person that authored of the comment is saved
  • Comment may include quotes from the memo
  • The author of the memo may define who is allowed to comment his/her memo

Discussion

Issue créee avec @AndreMarvell.

Un utilisateur peut laisser un commentaire sur un mémo, s'il possède un compte.
Voici des idées de ce que pourrait comporter un commentaire :

  • l'auteur
  • la date
  • le message
  • citer un extrait du mémo
  • joindre un document
  • faire référence à un autre mémo
  • noter la pertinence du commentaire (système de + / - )

Concernant la disposition des commentaires et de leurs réponses, nous avons songé à deux possibilités :

  • une hiérarchisation des commentaires : ce système est assez visuel, mais est plus compliqué à mettre en place. Il est plus pertinent lorsqu'il y a des possibilités d'avoir des grosses discussions sur un sujet.
  • une réponse directe envers une personne en citant son pseudonyme avec "@" : plus simple à mettre en place, peut être suffisant pour notre cas.

Ci-dessous, une illustration des deux cas :
capture d ecran 2015-04-10 a 11 37 16

Créer un journal de bord

Required features

  • Create a new diary.
  • Choose type of first memo.
  • Choose registred users to contribute.
  • Invite unregistred users to contribute.

Description

Cette fonctionnalité permet de créer un journal de bord et de permettre d'y rassembler les compte rendus.

Fonctionnalité

Accès à la fonctionnalité

La création d'un journal de bord est possible depuis l'interface affichant la liste des journaux de bord. Un bouton nouveau permet de créer un nouveau journal de bord (#52)

Scénario

L'interface de création d'un journal de bord peut s'afficher sous forme de popup en premier plan de la liste des journaux de bord ou sous forme de page.

Cette interface permet de spécifier :

  • le nom du journal de bord (ex: "Culture du mouvement pour le logiciel libre")
  • les collaborateurs du journal de bord

Un bouton créer permet de créer le journal de bord et dirige l'utilisateur vers l'interface de visualisation d'un projet.

Maquette

screen shot 2015-05-06 at 01 21 41

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.