Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
189 commits
Select commit Hold shift + click to select a range
49e27f1
No path required during attach
Jan 24, 2022
017f5aa
Other files added
Jan 24, 2022
b9dad9d
Creation de CompteRendu.md
sea-gull-diana Jan 24, 2022
c84dbd2
CompteRendu
sea-gull-diana Jan 24, 2022
85a2734
Diagrammes de sequence
sea-gull-diana Jan 28, 2022
29b0acf
ajout nombre de nodes du graph actuel dans une balise texte à côté du…
Akkuun Feb 2, 2022
ec76e31
Merge remote-tracking branch 'origin/master'
Akkuun Feb 2, 2022
a0f4690
ajout fonction node
Akkuun Feb 2, 2022
bdbfba9
Todo.md
sea-gull-diana Feb 2, 2022
ca7d48c
Merge branch 'master' of https://github.com/Dalwaj/JS_Graph_Sage into…
sea-gull-diana Feb 2, 2022
977207e
Todo.md
sea-gull-diana Feb 2, 2022
9546466
Move selection added
Feb 2, 2022
79c3173
ajout fonction calcul nombre d'arrête
Akkuun Feb 2, 2022
026ae9e
Sequence diagram added + some css
Feb 2, 2022
1d48ae0
Merge remote-tracking branch 'origin/mathis' into mathis
Akkuun Feb 3, 2022
1f8393d
reglement fonction temps reel
Akkuun Feb 3, 2022
c7b5325
Errors fixed
Feb 3, 2022
8c21909
Update
Feb 3, 2022
228ae50
Resize and scale the graph depending on the window size
Feb 4, 2022
0f9e9f5
Compte rendu du 3e reunion avec M. Valicov
sea-gull-diana Feb 4, 2022
cea8224
Update
Feb 5, 2022
a28f922
Mapped sage graph's nodes to their string representations in JS to pr…
sea-gull-diana Feb 9, 2022
def326a
Mapping of nodes + 1st attempt at inverse connection
sea-gull-diana Feb 10, 2022
4cf35aa
Create things-to-add.md
pvalicov Feb 10, 2022
7e32cc4
Merge pull request #1 from pvalicov/patch-1
sea-gull-diana Feb 10, 2022
f893a59
Reverse connection and import modified graph from Sage by using Renew…
sea-gull-diana Feb 10, 2022
1e57916
Create things-to-add.md
pvalicov Feb 10, 2022
cce4bf6
Trying to fix gitignore not ignoring result.html
sea-gull-diana Feb 10, 2022
b56a1da
result.html bug. need to fix gitignore
sea-gull-diana Feb 10, 2022
414c5a2
Changes pulled from master to branch, conflict resolved
sea-gull-diana Feb 10, 2022
d899456
Little response bug fixed
sea-gull-diana Feb 10, 2022
f2b9c08
Merge branch 'master' of https://github.com/Dalwaj/JS_Graph_Sage
sea-gull-diana Feb 10, 2022
71109d6
added Compte Rendu for the last meeting
sea-gull-diana Feb 10, 2022
c96e3c7
Page reload problem partially solved - new connection is created, but…
sea-gull-diana Feb 12, 2022
658f1a1
G6 added
Feb 13, 2022
a4fdd33
Volets déroulants
Feb 13, 2022
1a902ba
Movable overlay
Feb 13, 2022
87be59b
Update
Feb 16, 2022
4934942
Update
Feb 16, 2022
d7c7bc1
Inverted connection ready. Page reload ready.
sea-gull-diana Feb 16, 2022
628ae1d
ajout maxdegree,mindegree
Akkuun Feb 16, 2022
350dd88
merge coflited resolved
Akkuun Feb 16, 2022
3c4f50f
vs deleted
Akkuun Feb 16, 2022
9dcb37d
Unused variable declaration deleted
sea-gull-diana Feb 16, 2022
94fe38c
ajout iseulerian && ishamiltonian
Akkuun Feb 16, 2022
ce250bd
Afficher un message en demandant à l'utilisateur de fermer une page
0b3ud Feb 17, 2022
ac26aeb
Verifier si le port est occupé avec un raise Exception
0b3ud Feb 17, 2022
5c09cb5
ajout girth information but discuss with teacher when case of infinity
Akkuun Feb 17, 2022
756e4fb
UML diagrams + gitignore
sea-gull-diana Feb 18, 2022
72d6fb4
Merge branch 'mergeTest' of https://github.com/Dalwaj/JS_Graph_Sage i…
sea-gull-diana Feb 18, 2022
5e0f85b
gitignore ignore .idea/ and .vs/
sea-gull-diana Feb 18, 2022
e1b8335
Gitignore updated, result.html tracking removed
sea-gull-diana Feb 19, 2022
a7c4313
Gitignore updated, result.html tracking removed
sea-gull-diana Feb 19, 2022
9ceec25
Added spanning tree coloration - works, but needs refactoring
sea-gull-diana Feb 23, 2022
1175fdc
Small gui changes (redraw graph button)
sea-gull-diana Feb 24, 2022
69a3e7a
Update CompteRendu.md
sea-gull-diana Feb 24, 2022
45bc8f0
Merge conflict resolved
sea-gull-diana Feb 24, 2022
12e2110
Fixing gitignore. Again.
sea-gull-diana Feb 24, 2022
de83aad
Trying to merge with branch dziyana. Fixing conflict
sea-gull-diana Feb 24, 2022
e6313b6
Merged with dziyana branch
sea-gull-diana Feb 24, 2022
d522770
Update CompteRendu.md
sea-gull-diana Feb 25, 2022
eb2b0f1
Merge conflict resolved
sea-gull-diana Mar 9, 2022
5e1da6b
Fixing problem of coloration interfering with spanning tree. Showing …
sea-gull-diana Mar 14, 2022
433b875
optimising vertex coloration
sea-gull-diana Mar 14, 2022
042c845
resolving merge conflict
sea-gull-diana Mar 14, 2022
463bee7
Create new Readme.md with a User Guide
sea-gull-diana Mar 14, 2022
2dd9f58
Typo found
sea-gull-diana Mar 14, 2022
516a2b5
A couple more changes to readme
sea-gull-diana Mar 14, 2022
1180016
Udate
Mar 30, 2022
dac49f4
Compte rendu rdv 30/03
sea-gull-diana Mar 30, 2022
41efc36
Coloration classes displayed on demand (closes #6) + fixed span_tree …
sea-gull-diana Mar 30, 2022
c7cd16d
merge conflict resolved - branch mergeTest merged to dziyana
sea-gull-diana Mar 30, 2022
43a7899
branch master merged to dziyana
sea-gull-diana Mar 30, 2022
a025ce0
merge avec branche jawad
sea-gull-diana Mar 31, 2022
6d2045b
delete result.html
sea-gull-diana Apr 1, 2022
e40bcc6
Trying to fix bugs produced by merge, commented parts that didn't wor…
sea-gull-diana Apr 1, 2022
02b4d93
Left menu minimum width set and a couple of other css and html bugs f…
sea-gull-diana Apr 1, 2022
c0f7f82
Found the method that was preventing select drop-down menu from unfol…
sea-gull-diana Apr 2, 2022
462a925
Menu resize option added (yet to be improved)
sea-gull-diana Apr 4, 2022
b011495
merged with mergeTest branch
sea-gull-diana Apr 5, 2022
fa45e21
Merge branch 'master' of https://github.com/Dalwaj/JS_Graph_Sage
sea-gull-diana Apr 5, 2022
bd86715
Fixing bug with different vertex types
sea-gull-diana Apr 11, 2022
8e1a557
span tree display works with multiple vertex types
sea-gull-diana Apr 11, 2022
77952d9
Rdv 11/04
sea-gull-diana Apr 11, 2022
b69790a
add girth function with infinity case
Akkuun Apr 13, 2022
b517616
Text area instead of span for G6 and button
Apr 14, 2022
2119357
unused function deleted
Apr 14, 2022
036fa22
unused variable deleted
Apr 14, 2022
079a622
Update
Apr 14, 2022
895d8c6
Sections are hidden by default, default layout = spring
Apr 15, 2022
974a620
Merge conflicts resolved
Apr 15, 2022
c86a669
Code refactored, feedback added, unlock/lock auto save added
Apr 16, 2022
df591c9
Bug with loops and g6 fixed
Apr 16, 2022
e084174
Button style edited
Apr 16, 2022
a37c642
Animation on button added
Apr 16, 2022
34ea509
ajout fonction edge/vertex connectivity chromatic number/index ajout …
Akkuun Apr 18, 2022
e336f63
Fixing merge conflicts
sea-gull-diana Apr 18, 2022
d636326
rm result.html
0b3ud Apr 19, 2022
fabf687
Bug fixed: G6 functionality conflicting with page reload
sea-gull-diana Apr 19, 2022
a14423f
Merge conflicts solved, bug fixed: save conflicting with page reload
sea-gull-diana Apr 19, 2022
4d7aeab
rectification du mode DARK / LIGHT avec sauvagarde du mode lors de la…
Akkuun Apr 19, 2022
4544cab
Stop setting nodes' coordinates by default (closes #9), functionality…
sea-gull-diana Apr 19, 2022
c503d70
Freezing nodes coordinates on F-key down, #10
sea-gull-diana Apr 19, 2022
d12813d
Drawing graph according to its positions if it has any, line added to…
sea-gull-diana Apr 19, 2022
50f302c
Resize functionality restored
sea-gull-diana Apr 19, 2022
65749ac
update_graph not only if auto-safe enabled, but also to freeze graph …
sea-gull-diana Apr 19, 2022
87c630b
ready for merge
Akkuun Apr 20, 2022
c89df7f
Update CompteRendu.md
sea-gull-diana Apr 20, 2022
8d3580d
rdv 20/04
sea-gull-diana Apr 20, 2022
51f9e44
Update CompteRendu.md
sea-gull-diana Apr 20, 2022
d6e4f3e
conflict solved
Akkuun Apr 20, 2022
4d90e2f
merge with branch mathis
Akkuun Apr 20, 2022
3086d1b
rectification selection avec light mode / dark
Akkuun Apr 20, 2022
9cbaccb
user interface light mode information visualization solved
Akkuun Apr 21, 2022
d996c6c
ok
Apr 22, 2022
d448d69
Merge branch 'mergeTest' of github.com:Projet-SageMath-Graphs/JS_Grap…
Apr 22, 2022
e9905e2
restrucuration menu
Akkuun Apr 29, 2022
174bec2
Bug with opening empty graphs handled
sea-gull-diana May 1, 2022
7da9299
Interface resized on window resize
sea-gull-diana May 1, 2022
e3803a6
ajustement de la fenêtre properties non déplié, rectification texte g…
Akkuun May 1, 2022
bc6ee91
ajustement de la fenêtre properties non déplié, rectification texte g…
Akkuun May 1, 2022
b86cb14
Merge branch 'mergeTest' of github.com:Projet-SageMath-Graphs/JS_Grap…
May 2, 2022
80ff594
Refactoring g6
May 2, 2022
b319344
validation
May 2, 2022
0287f3e
Refactoring
May 3, 2022
35c834c
Merged with branch mergeTest
sea-gull-diana May 3, 2022
2610d86
push master rectification visualization
Akkuun May 3, 2022
a7dc857
rectification
Akkuun May 3, 2022
faa5e38
rectification
Akkuun May 3, 2022
d07bc8c
Update CompteRendu.md
sea-gull-diana May 3, 2022
c2498f7
bug empty graph rectification for girth function
Akkuun May 4, 2022
334e89a
backup
May 5, 2022
dc992b7
Merge branch 'master' of github.com:Projet-SageMath-Graphs/JS_Graph_Sage
May 5, 2022
db39719
mergeVertecies Still have a redraw graph issues
0b3ud May 7, 2022
b12f95a
Dynamic ports
ObadaTabbab May 8, 2022
56069a3
mergeVertices done and the log consol stil to clean
ObadaTabbab May 8, 2022
c1df9b4
gloabal var declaration bug solved
ObadaTabbab May 8, 2022
622871e
Not using UpdateGraphProperties on positions change, fixing problems …
sea-gull-diana May 8, 2022
b435d22
Fixed menu size, resize nodes and edge thickness on window resized
sea-gull-diana May 9, 2022
d19f862
save
Akkuun May 9, 2022
bb82398
asve
Akkuun May 9, 2022
eaab14f
rectification gith
Akkuun May 9, 2022
daca36f
rectification girth
Akkuun May 9, 2022
1561820
Update CompteRendu.md
sea-gull-diana May 9, 2022
6d25007
Added graph resize on window resize
sea-gull-diana May 10, 2022
df6b1ef
Merge branch 'master' of https://github.com/Dalwaj/JS_Graph_Sage
sea-gull-diana May 10, 2022
27bde54
Merge branch 'dynamicPorts'
ObadaTabbab May 11, 2022
7cbe414
g6 works
May 11, 2022
b3ccc99
save
Akkuun May 12, 2022
c42328f
Migrating d3.js from v3 to v4 (issue #5) - graph is displayed coreect…
sea-gull-diana May 12, 2022
6651779
Bug fixed with display of graphs with non-integer nodes' names (#5)
sea-gull-diana May 12, 2022
40ef9d0
Migration v4, brush bugs fixed, #5
sea-gull-diana May 13, 2022
7802e30
Drag bugs fixed, #5
sea-gull-diana May 14, 2022
e8212a2
Migration to v4. Fixed bug with adding and removing elements. #5
sea-gull-diana May 14, 2022
7ded099
Improving graph rescale on window resize
sea-gull-diana May 14, 2022
536fcfb
Bug fixed with rescaling an empty graph
sea-gull-diana May 14, 2022
5dbb831
Merge branch 'master' of https://github.com/Dalwaj/JS_Graph_Sage
sea-gull-diana May 14, 2022
37ef9b9
recenter.. and center.. joined into one function, bug fixed with poss…
sea-gull-diana May 15, 2022
07a11da
Migrated to v5, #5
sea-gull-diana May 15, 2022
51cba8d
Migration to v6, #5
sea-gull-diana May 15, 2022
acb4f4d
Migration to v7 (no changes needed), #5
sea-gull-diana May 15, 2022
6e97903
Unmark element as selected when readded on Ctrl+Z
sea-gull-diana May 15, 2022
7770d40
Solving conflicts
ObadaTabbab May 15, 2022
71acf61
Bug with dblclick fixed, unnecessary comments deleted
sea-gull-diana May 15, 2022
fad6e94
save
Akkuun May 16, 2022
d4f66c8
chabgement texte
Akkuun May 16, 2022
43f117c
rectification girth avec forest, alignement texte G6 et zone de texte…
Akkuun May 16, 2022
cea85da
One selection to merge verteces done show in middle position in progr…
ObadaTabbab May 16, 2022
27ec37e
get verteces coordinantes in progress
ObadaTabbab May 16, 2022
9dce2f5
Always setting positions when adding new vertices if other nodes are …
sea-gull-diana May 17, 2022
f373ec6
Merge branch 'master' of https://github.com/Dalwaj/JS_Graph_Sage
sea-gull-diana May 17, 2022
f4db5b1
Bug fixed with graph sliding a bit to the right
sea-gull-diana May 17, 2022
896d711
Edge and vertex coloring can be generated for all vertex types
sea-gull-diana May 17, 2022
3892543
Merge master d3v7
ObadaTabbab May 18, 2022
e9e1288
Merge Verticies fonctionelle
ObadaTabbab May 18, 2022
dee5ab5
function fix
Akkuun May 18, 2022
cc8710f
hamiltonian is now in properties
Akkuun May 18, 2022
21e75be
add vertex,edge connectivity in properties, upgrade menu width
Akkuun May 18, 2022
45a6125
conflict solved
Akkuun May 18, 2022
2077475
Vertices don't loose their positions on merge if they had them set
sea-gull-diana May 18, 2022
48147ea
bug fixed with edge coloration
sea-gull-diana May 18, 2022
ab52d8f
merge failed with master
Akkuun May 19, 2022
1918c7a
Merge branch 'master' of https://github.com/Projet-SageMath-Graphs/JS…
Akkuun May 19, 2022
1093de7
rectification chromaticIndex
Akkuun May 19, 2022
2ebc021
Update CompteRendu.md
sea-gull-diana May 19, 2022
be60fb3
Update CompteRendu.md
sea-gull-diana May 19, 2022
2aa1151
is hamiltonian is now a function and menu display upgraded
Akkuun May 19, 2022
13635f1
bug fix about insert node when mouse is on the menu
Akkuun May 21, 2022
8ab5e76
bug fix with previous changes
Akkuun May 21, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@

workspaceVS.code-workspace
obj/result.html
src/.vscode/.ropeproject/config.py
.idea/
.vs/
.vscode/
*.class
*o
193 changes: 193 additions & 0 deletions CompteRendu.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,193 @@
# Manipulation interactive des graphes avec Sage
Le logiciel SageMath, est un logiciel connu libre et open-source de calcul mathématiques très populaire auprès des scientifiques. Il contient une grande partie implémentée concernant les graphes et leurs algorithmes (le backend programmé en Python). En revanche le frontend est actuellement assez limité et l'utilisateur doit presque entièrement passer par la ligne de commandes. On peut visualiser les graphes en différents formats, et notamment sur un navigateur sous forme d'objets graphiques avec la librairie Javascript d3js, mais on ne peut pas les manipuler "à la main". L'an dernier une équipe d'étudiants de l'IUT avait produit une solution pour résoudre ce problème et permettre une manipulation interactive des graphes à travers un navigateur. Leur solution est ici : https://github.com/NaokimTheFirst/JS_Graph_Sage

Le but du projet est de terminer le travail en enrichissant cette solution. Il s'agit d'ajouter des nouvelles fonctionnalités interactives de manipulations des dessins et les intégrer au projet SageMath. Une possibilité serait de programmer des déroulements d'algos de Sage existants sur un navigateur. Technos : Python (avec SageMath), Javascript, Git.

### Tuteur : Valicov

#### 24/01/2022 - 2e rdv avec tuteur
- Creation d'un fork : https://github.com/Dalwaj/JS_Graph_Sage
- Pull des modifications pour 'attach' par Jawad
- A faire : Diagramme de classes (+ sequences), ajouter les fonctionnalités à l'interface graphique (afficher nombre de sommets, déplacer la partie du graph sélectionnée...)

#### 03/02/2022 - 3e rdv avec tuteur
*Problèmes à resoudre :*
- animation du drag d'une multiselection (à voir si c'est lié au renouvellement trop rapide du fenêtre),
- perte de connexion lors de renouvellement du fenetre,
- absense de connexion inverse entre SageMath et JS_Graph,
- les types des sommets sont transformés en string lors de la connexion.

*Solution proposée pour le problème des strings :* créer un dictionnaire (une map) qui associe à chaque sommet v du graphe initial une chaîne de caractères cv qui est sa représentation textuelle que vous allez utiliser dans le format JSON. Toutes les opération que vous allez effectuer dans d3js sur cv seront transposé sur v à travers ce dictionnaire.

#### 10/02/2022 - 4e rdv
*Nouvelles choses à faire :*
- voir les fichiers _things-to-add.md_ et _ToDo.md_.
- enovoyer le graph en JSON de Python à JavaScript pour remplacer le graphe precedent avec innerHTML (mission déjà accomplie :) ).
- pouvoir relancer la page sans perdre la connexion.

*Travail fait :*
- Mapping des sommets dans un dict pour preserver les types d'origin.
- Possibilite de modifier le graphe dans ls terminal et importer les changements dans l'interface graphique avec le bouton "Renew Graph".

#### 18/02/2022 - 5e rdv
*Nouvelles choses à faire :*
- Pour tout le monde :
1. faire le menage sur le dépôt en effaçant les fichiers de configuration (personnels), du type : .vscode, .idea, .class, .o etc.
2. faire `git rm --cache obj/result.html`
3. ajouter à gitignore :
```
.idea/
.vs/
.vscode/
*.class
*o
```
4. faire `git add .` et `git commit`
- Comprendre comment D3.js marche dans le code et faire migrer vers une version plus récente. Voir les liens :
https://observablehq.com/@d3/d3v6-migration-guide
https://blog.devgenius.io/d3-js-whats-new-in-version-6-5f45b00a85cb
- Permettre à l'utilisateur de sortir du terminal sage avec `exit`.
- Trouver un moyen de remplacer les getters dans InterfaceAndMisc.js par un seul getter.
- Les propriétés "lourdes" (qui prennent le temps pour que le sage les compte), ne doivent être affichées que si l'utilisateur les demande explicitement. Voir _things-to-add.md_/Hard Stuff.
- Chercher le moyen à copier le project board GitHub à un autre compte (organisation ou utilisateur) pour pouvoir le lier au dépot GitHub.
- Pour l'affichage de girth : Bug avec graphs.ClawGraph(), car girth est infinie. Il faut passer une exception dans le code.

*Travail fait :*
- Possibilite de modifier le graphe dans ls terminal et importer les changements dans l'interface graphique avec le bouton "Renew Graph" (Bouton à renommer et repositionner).
- Possibilité de refraichir la page sans perdre la connexion (permet d'importer les changements de même manière que "Renew Graph").
- Refraichir la page ou "Renew Graph" peuvent être utilisés pour repositionner le graph au centre de l'écran et optimiser ça taille.
- Diagramme de séquence pour le processus de connexion (mes changements dans le code original sont marqués en rouge).
- Affichage de plusieurs nouvelles propriétés du graph dans le menu : degrés max et min, is eulerian, hamiltonicity.
- Affichage du graph sous format G6.
- Possibilité de questionner le site _The House Of Graphs_ si le graphe obtenu est déjà connu.
- Project Board crée sur GitHub pour le backlog de nos user stories (à deplacer). Voir : https://github.com/users/sea-gull-diana/projects/1/

#### 25/02/2022 - 6e rdv
*Nouvelles choses à faire :*
- Changer ownership du dépot vers une organisation (et copier-coller le project board vers cette organisation).
- Comment attribuer des portes ? Coder en dur ou choisir n'importe quel porte disponible (voir si les portes sont regroupées par famille et on peut choisir une famille à utiliser).
- Changer la méthode de coloration optimale. Utiliser la fonction du sage plus optimale (voir email).
- La division en groupes à enlever (fonctionnalité non finie, donc le champ du groupe dans le menu sert à rien).
- La prémière ébauche du rapport à faire et envoyer à M. Valicov pendant les vacances.

*Travail fait :*
- Connexion aux portes différentes selon la disponibilité (bugs à fixer voir au-dessus).
- Spanning tree (coloration des arêtes d'un arbre couvrant).

#### 30/03/2022 - 7e rdv
*Nouvelles choses à faire :*
- Faire une réunion du groupe pour merge tout ce qu'on a fait sur GitHub (LE PLUS IMPORTANT - faire avant le rdv suivant).
- Encore quelques boutons à ajouter (voir Project Board).
- Edge contruction

*Travail fait :*
- Affichage des classes de coloration sous la forme du texte
- Bug fixé dans l'affichage de l'arbre recouvrant
- Plan du rapport preparé ;
- Redaction du rapport commencé : [voir document sur OneDrive](https://1drv.ms/w/s!Ah20cN1s-zt3h78TY4GmdzCLvJmvOQ?e=JR4fun).

#### 11/04/2022 - 8e rdv
*Nouvelles choses à faire :*
- Separer dans le menu Orientations et Algorithmic/Hard Stuff
- Resoudre le probleme : les sommets recoivent les coordonées qu'ils n'ont pas a l'origin
Lorsqu'on dessine le graph avec `show_CustomJS`, on ajoute les coordonées aux sommets, l'objet change donc de nature.
**Solution :**
Faire un bouton("save") qui permet de fixer l'embedding (la possibilité de freeze les coordonéees des sommets). Mais si on ne clique pas ce bouton, les sommets ne doivent pas avoir des coordonnes.
**Fonctions utiles :**
`set_pos()` pour donner les coordonnees aux sommets.
`graph.set_embedding()` position des sommets par rapport l'un a l'autre.
- Utiliser le layout `spring` de Sage par defaut dans `show_CustomJS` pour bien dessiner le graphe.
- Edge contraction : plutot que `graph.contract_edge(0,1)`, utiliser la methode `graph.merge_vertices()`

*Travail fait :*
- merge des branches effectué (branche `obada` et les dernieres versions des branches `jawad` et `mathis` en attente)
- Problème de "Girth" reglé, mais pas encore ajouté à master
- Bug corrigé dans l'affichage des graphes avec des sommets de type objet

**Prochaine reunion :** mercredi 20/04 a 9h00
#### 20/04/2022 - 9e rdv
*Nouvelles choses à faire :*
- Nettoyer le code
- Merge des sommets (effectuer le merge sur `newgraph` et pas `targetgraph`, puis l'importer vers interface).
- Migration D3.js
- Restructurer l'interface
- Merge de tout ce qui reste sur la branche `master`.

*Travail fait :*
- Fonctionnalité *Save* (autosauvegarde par defaut, possible de le desactiver en cliquant 'U' et sauvegarder les changements en cliquant 'S').
- Fonctionnalité *Freeze positions* en cliquant 'F' (layout `spring` par defaut s'il n'y a pas de positions fixes).
- Dark et Light Mode avec l'utilisation des cookies pour sauvegarder les preferences de l'utilisateur.

#### 03/05/2022 - 10e rdv
*Nouvelles choses à faire :*
- Regarder la fonctionnalite de Zoom dans la solution [IPE](https://ipe.otfried.org/), voir si on peut faire le même.
- Changer la taille des sommets on window.resize.
- Penser comment régler le problème de sommets qui sortent de la fenêtre quand on diminue sa taille.
- Fixer la taille du menu.
- Is Hamiltonian mettre en *Hard Algorithmes*.
- Penser à afficher le cycle Hamiltonian (comme on fait pour le spanning tree).
- Mettre Girth et les 2 connectivities en *Properties* - ce n'est pas Hard stuff.
- Dans la section *Hard algorithmes* mettre : Coloring, chromatic, is Hamiltonian.
- Le reste mettre dans la section *Oriented graphs*.
- Corriger les bugs de coloration et de *Redraw Graph* avec le graph de type `graphs.HortonGraph()`.
- Ne pas appeler `UpdateGraphProperties` lorsqu'on bouge des sommets ou les renomme.
- Remplacer `is_tree()` par `is_forest()` dans le calcul de Girth.
- Décider si on veut faire une demande pour présenter notre solution pour les Sage Days à Montpellier (la semaine du 13 juin).
- Voir [*phitigra*](https://github.com/jfraymond/phitigra) par J. F. Raymond - solution qui permet de manipuler les graphes comme le notre. Se positionner par rapport à lui. Voir si son truc est trop dépendant de Jupiter.

*Travail fait :*
- Problème d'affichage des graphes vides corrigé.
- L'interface graphique (<rect>) s'adapte à la taille de l'écran on window.resize().
- Amélioration des styles de dark et light modes (quelques bugs corrigés).

#### 09/05/2022 - 11e rdv
*Nouvelles choses à faire :*
- Garder seulement la fonctionnalité de 'U' (renommer comme "On/Off automatic save"), pas besion de 'S' (on peut obtenir le même resultat en appuyant 'U' 2 fois).
- Pour le "merge" des sommets prendre le premier sommet aléatoirement pour ne pas rendre le processus trop compliqué.
- Ne pas redessiner le graphe lors du merge et mettre le nouveau sommet résultant du merge dans le centre du rectangle formé par les sommets fusionnés. Algorithme pour faire un merge sans la fonction sage :
```
liste = []
s = set()
for i in liste:
s.union(g.neighbors(i))
s.difference(liste)
```
- Ajouter des interlignes dans Key Helper pour une mise en page plus claire.
- Renommer "Subdivide Edge" dans Key Helper en "Subdivide Edges".
- Enlever le resize manuel du menu dans css.
- Ne pas afficher les classes de coloration en texte après "Redraw".
- Edge coloring ne marche pas après la subdivision des arêtes.
- Ne pas permettre à l'utilisateur de déplacer les sommets en dehors de la fenêtre !!!
- Renommer "Exist" en "Exists on House of Graphs" (mettre House of Graphs sous le style d'un lien).
- Repositionner le bouton G6 et la zone de texte.

*Travail fait :*
- Resize des sommets et arêtes on window resize.
- `UpdateGraphProperties` n'est plus appelé lors de la repositionnement des sommets.
- Bugs du HortonGraph corrigés.
- Taille du menu fixé.
- Améliorer le positionnement du graphe dans le centre (problème du décalage vers le droit fixé).

#### 19/05/2022 - 12e rdv
*Nouvelles choses à faire :*
- Reécrire les positions des sommets dans command stack (utilisés pour Ctrl+Z) chaque fois qu'on appele la fonction `center_and_scale`.
- Augmenter la taille de menu.
- Rendre la taille l'interface grapique égale à celle de la fênetre. Ne pas avoir de l'interface derrière le menu (actuellement on peut créer un sommet derrière le menu et c'est un bug.
- Ajouter un checkbox 'Allow Multiple Edges' dans le menu.
- Renommer Key Helper en Key Commands.
- Rendre Ctrl+Z possible après le merge des sommets.
- Limiter le nombre de chagements sauvegardé dans le command stack.
- Fixer les bugs de G6 window style.
- Ne pas permettre d'ajouter les changements sur interface avant RedrawGraph si on a fait des changements dans le terminal sage.
- Bug avec les sommets qui portent le même nom.

*Travail fait :*
- Migration d3js de v3 à v7.
- Drag de la selection (bug fixé).
- Resize du graph lors du resize de la fenêtre.
- Problème avec l'ajout des sommets dans un graph avec des sommets positionnés réglé.
- Coloration des arêtes après edge subdivide.
- Renommage des boutons.
- Merge des sommets.

**Prochaine reunion :** ???
63 changes: 12 additions & 51 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,61 +1,22 @@
# JS_Graph_Sage

New version of the Javascript visualization of Sage with D3.js
Student project

Project's logbook :
https://docs.google.com/document/d/1wu1qKDCjxPgVY6a5Im5XkJSdYcvF8YcselkqUSTHnds/edit?usp=sharing
This project was started by the students of Licence Pro at IUT of Montpellier 2 years ago and taken by our group (students on DUT informatique) to improve and debug.

Project's Trello :
https://trello.com/b/7y723RZk/sagemathgraph
# User Guide
### Step 1
Download the source code from GitHub and make sure you have SageMath installed.

Sources :
https://github.com/d3/d3/wiki (D3.js documentation)
http://bl.ocks.org/tgk/6068367 (example we used to add nodes)
https://developer.mozilla.org/en-US/docs/Web/SVG/Element (documentation of SVG elements)
https://travishorn.com/updating-dynamic-data-in-d3-15ce4a9fa856 (data updating in D3.js)
https://www.d3-graph-gallery.com/interactivity.html (interactivity with displaying)
### Step 2
Unzip the source code and type `attach("path_to_file_init_CustomJS.py")` in your Sage terminal.
For example, if you place the project in a folder where your `.sage/` directory is located, you should tap `attach("JS_Graph_Sage/src/Python/init_CustomJS.py")`.


--------------
### Step 3
Now you can launch the interface by creating a graph in terminal (for example: `g = graphs.CompleteGraph(20)`) and typing `show_CustomJS(g)`.
Make sure you have Internet connection.

Methods explanation :

METHODS USED IN window.onload :

LoadGraphData()
Loads the data from the graph and puts index on nodes

InitGraph()
Transfers all the data from the JSON to a D3.js graph object (force)
Adapts the graph layout to the javascript window's dimensions

KeyboardEventInit()
Launched at each key press, triggers an action depending on the key

ManageAllGraphicsElements()
Creates the D3 version of the window, nodes, edges, zooming

InitForce()
Determines a position for each element and adds a force layout to have a dynamic positionning of the nodes and edges



METHODS USED IN KeyboardEventInit() :

RemoveElement(currentObject)
Deletes the mouseovered element. If it's a node, deletes the connected edges

AddNode()
Creates a node at the position of the cursor

FreezeGraph()
Stops the forces simulation to easily manipulate the graph.
If the graph is already frozen, unfreezes it.



OTHER :

AddEdge(src, dest)
Creates an edge between the src and the dest, wich are the names of two nodes of the graph
### Importing changes from terminal
If the modifications you want to add cannot be made in the interface, you can run the necessary commands in Sage terminal and click `Redraw Graph` button on top of the page to import changes. Or you can simply reload the page.
Binary file added Rapport/CommandManagerSequence.pdf
Binary file not shown.
17 changes: 17 additions & 0 deletions ToDo.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Choses à faire

- [X] Changer methode d'installation et premier execution ( changer attach (c'est une importation)): ne pas demander path_to_projet_repo le charger auto sans demander : recuperer l'endroit ou on utilise sage math
- [X] Faire selection groupee
- [X] Ajouter le nb des sommets / aretes dans le menu gauche
- [ ] Diagrammes de séquence sur le processus de connexion
- [ ] Ameliorer la passerelle entre la fenetre web et la boite de commande (Problemes : perte de connexion lors de renouvellement du fenetre)
- [X] Connexion inverse entre SageMath et JS_Graph
- [ ] Empecher la modif de l'interface web a la ligne de commande a chaque modif ? (à clarifier)
- [X] Pb retour modification du graph de la perte de donnee : des int redeveinne des chaine de charactere au retour
- [ ] Fonction permettant de customiser l'interface personnel
- [ ] Diviser la page en deux parties scrollables : partie Menu à gauche et partie Graphe à droite (scrolling responsif)
- [ ] Zoom in / Zoom out de la partie Graphe
- [ ] Ajouter une fonctionnalite : encoder un graph en J6 et afficher toujours sur la page . J6 format dans lequel Sage permet encoder le graph (g.graph6_string()). Pour reconstituer le graph : g.Graph('string J6') ! Ne garde pas les positions des sommets.
(Pour les graphes orientés/directed : autre commande dans SageMath a utiliser)
- [ ] Faire une fonctionnalite pour questionner le Website The House of Graphs (graphs interessants stockes comme J6) si le graphe obtenu est deja connu.
- [ ] Les fonctionnalites/attributs a ajouter dans le menu : voir dans things-to-add.md
Loading