Manualul de utilizare este disponibil aici.
Aplicația noastră a fost creată ca parte a unui proiect școlar.
Scopul ei este de a prezenta teoria grafurilor într-un mod interactiv și modern.
Aplicația a fost creată folosind tehnologii web, cu scopul de a putea rula atât pe dispozitive desktop cât și pe mobile. Interfața a fost realizată în HTML5 și CSS3, iar funcționalitatea este asigurată prin JavaScript (versiunea ES2019).
Este accesibil prin domain-ul graphviser.tools cu ajutorul serviciilor Netlify, care preiau sursele de pe GitHub și le transmit la o varietate de CDN-uri din lume. Mai mult despre cum funcționează aici.
Pentru folosirea aplicației noastre este necesar un dispozitiv cu acces la internet și un browser web care suportă ES2019.
În zilele noastre majoritatea browserelor web suportă această versiune de JavaScript.
Tabel de compatibilitate:
Unica cerință hardware este ca dispozitivul să poată rula un browser web cu versiunea minimă afișată în tabel.
Documentația codului este disponibil aici.
Aplicația se bazează pe trei framework-uri principale:
- jQuery: folosit la crearea animațiilor, la navigare și la manipularea elementelor din Document Object Model (DOM).
- jsPlumb Community Edition: folosit la vizualizarea grafurilor, având ca funcționalitate conectarea vizuală a elementelor și stocarea informațiilor despre aceste conexiuni.
- Bootstrap: folosit la crearea interfeței responsive a aplicației și a paginii cu materiale educative.
Este alcătuit din două părți esențiale:
Conține clasele necesare pentru manipularea și gestionarea elementelor din DOM.
- Conține toate funcțiile de bază pentru editarea grafurilor (adăugare/ștergere de noduri și muchii, setarea costurilor, schimbarea modului de editare).
- Toate funcțiile necesare pentru animare (inițializare, pornire, oprire, pas înainte și înapoi).
- Event listeners pentru modificarea grafurilor.
- Conține funcțiile necesare pentru gestionarea în timp real (adăugare/ștergere rânduri și coloane, actualizarea celulelor).
- Se ocupă de funcționarea meniului și inițializarea grafului la pornirea aplicației sau la schimbarea tipului grafului.
- Conține toate reprezentările grafurilor în memorie.
- Se ocupă de operațiile de editare.
- Rulează algoritmii.
- Interacționează cu TableHandler pentru actualizarea tabelelor.
Aplicația a fost testată în mod continuu în timpul dezvoltării atât de către realizatori cât și de către colegii de clasă respectiv de profesorul de la clasă.
Dezvoltarea aplicației a fost realizată prin ajutorul servicilor GitHub, care ne-au permis să lucrăm mai mulți în paralel. Codul este accesibil pe pagina de GitHub graph-theory-visualization.
Aplicația este securizată printr-o conexiune SSL (Secure Sockets Layer), iar certificatul nostru de SSL este emis de Let’s Encrypt Authority X3.
Interfața este una modernă, ușor de folosit, la care s-a luat în considerare grupul țintă (elevi/studenți).
Butoanele conțin iconuri care sunt percepute ușor de utilizatori și care oferă un aspect lizibil interfeței.
Pentru accesibilitate, fiecare buton afișează funcția sa atâta timp, cât cursorul este ținut peste el.
Meniurile laterale sunt concepute astfel încât utilizatorul să le poate deschide sau închide și redimensiona, după preferință.
Spațiul de lucru se poate micșora, mări și muta, oferind un spațiu flexibil pentru crearea grafurilor.
Fiecare card din meniu conține un link spre secțiunea respectivă din pagina cu materialul educativ.
Aplicația respectiv pagina cu materialul educativ au un design responsive, astfel asigurând compatibilitatea cu dispozitivele mobile și desktop.
Pagina cu materialul educativ conține și quiz-uri, care au rolul de a ajuta utilizatorul să-și verifice cunoștințele.
- Interfață prietenoasă.
- Asigură posibilitatea desenării grafurilor și de animare a algoritmilor.
- Animația se realizează în pași, utilizatorul le poate urmări atât în meniul din dreapta cât și pe graful desenat.
- Reprezentările grafurilor sunt realizate în timp real.
- Suportă toate tipurile de grafuri.
- Oferă informații ușor accesibile despre grafuri și algoritmi.
- Asigură posibilitatea de testare a cunoștințelor, oferă feedback despre rezultatul obținut.
Clic pentru a extinde
jsPlumb Community Edition:
- jsPlumb Community Edition Documentation
- Snap to Grid in jsplumb
- Unable to create straight line connection in JSPlumb
- Iterate through endpoints of div in jsPlumb
Bootstrap:
- Introduction · Bootstrap v4.5
- Grid system · Bootstrap v4.5
- Tables · Bootstrap v4.5
- Images · Bootstrap v4.5
- Buttons · Bootstrap v4.5
- Modal · Bootstrap v4.5
- Tooltips · Bootstrap v4.5
- Figures · Bootstrap v4.5
- Navbar · Bootstrap v4.5
- 30 Most Amazing Free Bootstrap Sidebar Templates 2020
Fontawesome:
Prism.js:
- Prism.js
- Prism.js - Usage
- Prism.js - Test Drive
- Unescaped markup ▲ Prism plugins
- Prism.js
- Line Numbers ▲ Prism plugins
- Copy to Clipboard ▲ Prism plugins
Particles.js:
jquery.inputfit.js:
jquery-resizable.js:
jquery.i18n:
jQuery:
- jQuery API Documentation
- Does jQuery have a handleout for .delegate('hover')?
- How can I deselect text using Javascript or jQuery?
- Disable/enable an input with jQuery?
- How to call a function after a fadeOut() on many elements
- How to add DATA-(something) attribute to .class element with jQuery
- Jquery .on('scroll') not firing the event while scrolling
- How do I pass the this context into an event handler?
- jquery stop child triggering parent event
- Get the size of the screen, current web page and browser window
- Mouse drag to scroll content
JavaScript:
- Listening for variable changes in JavaScript
- Javascript scrollintoview smooth scroll and offset
- How to overload constructors in JavaScript ECMA6?
- Deleting Objects in JavaScript
- Maximum size of an Array in Javascript
- Do the keys of javascript associative arrays need to be strings, or can they be any object?
- Integer division with remainder in JavaScript?
Khan Academy:
-
Getting info on elements with jQuery | DOM access with jQuery
-
Modifying elements with jQuery | DOM modification with jQuery
-
Creating elements with jQuery | DOM modification with jQuery
Educative.io:
- JavaScript in Practice: Getting Started - Learn Interactively
- JavaScript In Practice: ES6 And Beyond - Learn Interactively
Alte resurse:
- https://www.pbinfo.ro/
- https://profs.info.uaic.ro/~vcosmin/pagini/resurse_pregatire/resurse/graf_definitii.pdf
- https://www.tutorialspoint.com/graph_theory/graph_theory_traversability.htm
- Manual de Informatică, pentru clasa a XI-a informatică intensiv (editura Abel, 2006, autori Ignát Judit Anna, Incze Katalin, Jakab Irma Tünde)
- Bazele informaticii Grafuri și elemente de combinatorică (editura Petrion, 1995, autori Cornelia Ivasc, Mona Pruna)