About me
I am Rajat Khanduri, an undergraduate student pursuing mechanical engineering at the Panjab University .This was my first time participating in the Google Summer of Code and I got the opportunity to work under XWiki for developing an interactive link visualizerapplication (as an installable extension).
Important Links
- Design Page
- Project Page
- Application download & documentation
- Source Code
- Project progress report
- Video demo
Description
The Interactive Link Visualizer application provides an engaging way to explore the relationships between all the pages present in your XWiki instance. More details about the project can be found under the Project Page.
What I did, the current state of the project & what's left to do
I implemented everything I mentioned in the proposal. The project remains completed as of now, there is a project progress report where the weekly progress can be tracked.
There are 2 features which are left as they were introduced as nice to haves only. One is to integrate Page Preview extension and other is to develop to a macro from which users can generate custom visualizations inside XWiki without the need of knowing how SigmaJS and Graphology works.
What code got merged
I did 156 commits in total, with about 33,000 ++ and 21,000-- lines of code. The commit history can be found here.
I also solved all 23 opened Jira issues which can be found here
A few of the commits can be found below:
- Made a set to store lowercase labels in Search in nodes... feature to improve time complexity from O
to O(1) (commit link)
- Optimized the method to generate graph nodes (commit link)
- Node size increases & color changes when hovering over it; for better visuals (INTLV-9 commit)
- Create a mathematical formula to stop the graph layout after some time; that depends on nb (INTLV-10 commit)
- Implement a drag-detection method to avoid accidental clicks on the node (INTLV-3 commit)
- Integrate the Solr Search Facets integration in the application (INTLV-13 commit)
- Add a fullscreen button for the visualisation (INTLV-14 commit)
- Add zoom-in & zoom-out buttons (INTLV-15 commit)
- Fixed Search feature should not work on the panel (INTLV-18 commit)
- Kill and clear the previous graph instance to release memory (INTLV-20 commit)
- Move the application to XWiki space & encapsulate code (commit)
- Fixed: JSX Editor gets console error of document returned as null & object not loading properly (INTLV-21 commit)
- Fixed: Visualisation is initialised twice when there in another DOM updated event (INTLV-22 commit)
- Change the mouse cursor to a hand pointer when hovering over a node to give the indication of a link (INTLV-8 commit)
- Increased arrow head size in the edges by implementing a custom customEdgeArrowHeadProgram class (INTLV-5 commit)
- etc...
Challenges faced
The Design Page contains all the technical challenges I faced during the journey and how I solved them.
Future Plans
I intend to implement the 2 nice to have features whenever I find the time and solve any introduced new bugs in Jira.