Skip to content

Commit 43df3b6

Browse files
committed
[fix] Updated blog
1 parent aab6f48 commit 43df3b6

File tree

1 file changed

+98
-82
lines changed

1 file changed

+98
-82
lines changed

content/blog/gsoc-25-improve-openwisp-general-map-indoor-mobile-linkable-urls.rst

Lines changed: 98 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -30,67 +30,88 @@ open-source projects.
3030
About the Project
3131
-----------------
3232

33-
The project focused on improving the OpenWISP general map by adding new
34-
features such as indoor floor plan integration, and linkable map URLs and
35-
real-time mobile device tracking. These enhancements are aimed at making
36-
the platform more accessible and useful for network administrators,
37-
helping them navigate complex networks, monitor devices, and troubleshoot
38-
issues more efficiently.
39-
40-
While the journey presented deep technical challenges and learning
41-
opportunities, it also allowed me to collaborate with a vibrant community
42-
and contribute to an open-source project that impacts users globally.
33+
The project aimed to enhance the OpenWISP general map with features that
34+
improve accessibility, navigation, and monitoring for network
35+
administrators. Key additions include indoor floor plan integration,
36+
linkable map URLs, and real-time mobile device tracking. These
37+
improvements help users manage complex networks more effectively and
38+
troubleshoot issues with ease.
39+
40+
The experience presented significant technical challenges that deepened my
41+
understanding of mapping libraries like `Leaflet.js
42+
<https://github.com/Leaflet/Leaflet>`_ and `netjsongraph.js
43+
<https://github.com/openwisp/netjsongraph.js>`_, while also offering
44+
opportunities to collaborate with the open-source community and contribute
45+
to a project with global impact.
4346

4447
Building the General Map Enhancements
4548
-------------------------------------
4649

47-
My work revolved around improving the map UI to make it more usable by
48-
enabling features such as searching for devices, adding filters based on
49-
device status, opening indoor maps directly from the general map view, and
50-
viewing a device’s location within an indoor map. Additionally, the
51-
improvements support sharing URLs for specific views and implementing
52-
real-time location updates for mobile devices to enhance monitoring and
53-
navigation.
50+
My contributions focused on making the map interface more intuitive and
51+
interactive. I added features like device search, status-based filtering,
52+
and seamless access to indoor maps from the general map view. Users can
53+
now view specific devices within floor plans, switch between floors, and
54+
open maps in fullscreen mode for better visualization. Additionally, users
55+
can share URLs that link directly to specific nodes, graph states, or zoom
56+
levels, making navigation and collaboration much easier.
5457

5558
.. image:: {static}/images/blog/gsoc25/improve-openwisp-general-map-indoor-mobile-linkable-urls/before-after-ui-view.png
56-
:alt: Improve DashBoard Map UI in OpenWISP
59+
:alt: Improved Dashboard Map UI before and after in OpenWISP
5760

5861
Features Implemented
5962
--------------------
6063

64+
UI improvements on Location Pop-up
65+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
66+
67+
.. image:: {static}/images/blog/gsoc25/improve-openwisp-general-map-indoor-mobile-linkable-urls/improved-popup-ui-feature.gif
68+
:alt: Improved Dashboard Map UI Location Pop-up in OpenWISP
69+
70+
The location pop-up in the dashboard map has been enhanced to improve
71+
usability and navigation. Users can now search for devices by name and
72+
filter them by labels directly within the map interface through a popup
73+
above the map. After filtering, users can quickly navigate to the detailed
74+
page of the selected device. Additionally, devices associated with floor
75+
plans include a button that opens the corresponding floor layout overlay
76+
for better visualization.
77+
78+
To optimize performance, infinite scroll has been implemented in the
79+
device list table to load data efficiently as users scroll. A debounce
80+
mechanism is also applied to the search input, ensuring that unnecessary
81+
queries are minimized and the interface remains responsive.
82+
6183
Indoor Map View
6284
~~~~~~~~~~~~~~~
6385

64-
.. image:: {static}/images/blog/gsoc25/improve-openwisp-general-map-indoor-mobile-linkable-urls/improved-general-map-view.gif
86+
.. image:: {static}/images/blog/gsoc25/improve-openwisp-general-map-indoor-mobile-linkable-urls/indoor-map-view.gif
6587
:alt: Indoor Map view in OpenWISP
6688

67-
For the Indoor map view, I improved the UI of the dashboard map to make it
68-
more user-friendly and efficient. The updated interface allows users to
69-
search for devices by name and filter devices by their labels. If a device
70-
has an associated floor plan, a button is displayed that opens the floor
71-
plan overlay, allowing users to switch between floors and toggle
72-
fullscreen mode for a better visualization experience. The data for the
73-
indoor map is provided through a newly created API endpoint, which loads
74-
the least positive floor by default and supports filtering based on the
75-
selected floor. To optimize performance, I implemented separate instances
76-
of netjsongraph in dedicated div elements, allowing the map to be shown or
77-
hidden efficiently without unnecessary reloads.
89+
If a device has an associated floor plan, a button is displayed that opens
90+
the floor plan overlay, allowing users to switch between floors and toggle
91+
fullscreen mode for a better visualization experience. Additionally, users
92+
can click on a node in the indoor map to open a popup from which they can
93+
navigate directly to the device’s detail page, making it easier to access
94+
relevant information from within the map.
95+
96+
To optimize performance, separate instances of `netjsongraph.js
97+
<https://github.com/openwisp/netjsongraph.js>`_ are used in dedicated
98+
elements, enabling the map to be shown or hidden efficiently without
99+
unnecessary reloads.
78100

79101
Shareable URLs
80102
~~~~~~~~~~~~~~
81103

82-
.. image:: {static}/images/blog/gsoc25/improve-openwisp-general-map-indoor-mobile-linkable-urls/share-url.gif
104+
.. image:: {static}/images/blog/gsoc25/improve-openwisp-general-map-indoor-mobile-linkable-urls/shareable-urls.gif
83105
:alt: Shareable URLs Feature in OpenWISP
84106

85-
I added a new feature in netjsongraph.js called urlFragments, which is
86-
disabled by default and can be enabled when needed. With this feature,
87-
every time a user clicks on a node or link in the map, the URL is updated
88-
with parameters like graph ID, node ID, and zoom level. This makes it easy
89-
to create shareable URLs that anyone can use to open the map directly to
90-
the selected node or view. The logic is designed to be standardized and
91-
extendable, so it can be applied across multiple maps, such as the
92-
geographic and indoor maps. In the future, this could become a default
93-
option, but for now, it’s available as an opt-in feature.
107+
Support for shareable URLs has been added to the map interface. Whenever
108+
users click on a node or link, the URL is dynamically updated with
109+
parameters such as the graph ID, node ID, and zoom level to reflect the
110+
current view. This allows users to bookmark or share direct links to
111+
specific views within both geographic and indoor maps, simplifying
112+
navigation and collaboration. The implementation is designed to be
113+
standardized and extendable, enabling it to support multiple maps on a
114+
single page when needed.
94115

95116
Real Time Device Location
96117
~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -110,57 +131,52 @@ and validated, we can proceed with releasing these along with OpenWISP 26.
110131
You can follow the development process and explore the implementation
111132
details in the following pull requests:
112133

134+
- `Indoor Coordinates Endpoint
135+
<https://github.com/openwisp/openwisp-controller/pull/976>`_
113136
- `Indoor Floor Plan Integration
114137
<https://github.com/openwisp/openwisp-monitoring/pull/688>`_
115-
- `Linkable Map URLs
138+
- `Linkable Map URLs in Monitoring
116139
<https://github.com/openwisp/openwisp-monitoring/pull/703>`_
140+
- `Linkable Map URLs in Netjsongraph.js
141+
<https://github.com/openwisp/netjsongraph.js/pull/417>`_
117142
- `Real-Time Mobile Device Tracking
118143
<https://github.com/openwisp/openwisp-monitoring/issues/563>`_
119144

120145
My Experience
121146
-------------
122147

123-
My GSoC journey with OpenWISP has been an incredibly rewarding experience.
124-
Working under the mentorship of Federico Capoano and Gagan Deep, I had the
125-
chance to grow both technically and personally. Their guidance, patience,
126-
and insightful feedback helped me navigate the challenges of developing
127-
complex features while staying aligned with OpenWISP’s architecture and
128-
community standards.
129-
130-
Throughout the summer, I focused on improving the map UI by adding new
131-
functionalities that enhance usability, navigation, and accessibility.
132-
Implementing the indoor map view in particular allowed me to dive deep
133-
into front-end optimization, API design, and user experience improvements.
134-
I learned how to efficiently manage data flow, create scalable components,
135-
and handle dynamic visualization using netjsongraph. The process of
136-
creating API endpoints, refining interactions, and integrating feedback
137-
helped me better understand best practices in software development.
138-
139-
Some of the toughest challenges I faced were managing conflicts between
140-
overlapping Coordinate Reference Systems (CRS) and designing the
141-
bookmarkable URL feature. These problems pushed me to explore and
142-
understand the inner workings of libraries like Leaflet.js and
143-
netjsongraph.js more deeply, expanding my knowledge of mapping tools and
144-
data handling.
145-
146-
Although the shareable URLs feature has been implemented and works well,
147-
refining its performance and ensuring smooth integration across multiple
148-
views presented new learning opportunities. The real-time mobile device
149-
tracking feature, while still under development, has further motivated me
150-
to explore advanced data synchronization and event-driven architectures.
151-
152-
Beyond coding, I had the opportunity to engage with the OpenWISP
153-
community, review code, collaborate on discussions, and contribute to
154-
improving documentation and testing workflows. This experience has
155-
strengthened my problem-solving skills, communication, and confidence in
156-
contributing to open-source projects. I am grateful for the support I
157-
received and the chance to grow as a developer.
158-
159-
The push we needed towards the end of the program to complete the project
160-
was especially helpful. It gave me the motivation and structure to focus
161-
my efforts, prioritize tasks, and deliver as much as possible within the
162-
timeline. The final weeks taught me the importance of discipline, time
163-
management, and perseverance when working on open-source projects.
148+
My GSoC journey with OpenWISP has been a highly rewarding experience. With
149+
the mentorship of `Federico Capoano (nemesifier)
150+
<https://github.com/nemesifier>`_ and `Gagan Deep (pandafy)
151+
<https://github.com/pandafy>`_, I was able to grow both technically and
152+
personally. Their guidance, patience, and feedback helped me navigate
153+
challenges while ensuring my contributions aligned with OpenWISP’s
154+
architecture and community standards.
155+
156+
During the program, I focused on enhancing the map UI by implementing
157+
features such as indoor map views, device search, and improved navigation.
158+
This gave me the opportunity to deepen my understanding of front-end
159+
optimization, API design, scalable components, and efficient data flow
160+
management using tools like `netjsongraph.js
161+
<https://github.com/openwisp/netjsongraph.js>`_.
162+
163+
Some of the toughest challenges I encountered included handling conflicts
164+
between overlapping Coordinate Reference Systems (CRS) and designing the
165+
bookmarkable URL feature. These challenges pushed me to explore libraries
166+
like `Leaflet.js <https://github.com/Leaflet/Leaflet>`_ and
167+
`netjsongraph.js <https://github.com/openwisp/netjsongraph.js>`_ more
168+
thoroughly, broadening my knowledge of mapping tools and data handling
169+
techniques.
170+
171+
Beyond coding, engaging with the OpenWISP community through discussions
172+
and reviews was a valuable learning experience. The push we needed toward
173+
the end of the program was especially helpful—it provided the motivation
174+
and structure to stay focused, prioritize tasks, and deliver as much as
175+
possible within the timeline. These final weeks taught me the importance
176+
of discipline, time management, and perseverance when contributing to
177+
open-source projects. I’m grateful for the support I received, which
178+
strengthened my skills, confidence, and commitment to open-source
179+
development.
164180

165181
What's Next?
166182
------------

0 commit comments

Comments
 (0)