Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[gsoc] Added project idea for improving the general map: mobile locations, indoor map, linkable URLs #183

Merged
merged 4 commits into from
Feb 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
112 changes: 112 additions & 0 deletions developer/gsoc-ideas-2024.rst
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,118 @@ General suggestions and warnings
Project Ideas
-------------

Improve OpenWISP General Map: Indoor, Mobile, Linkable URLs
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. image:: ../images/gsoc/ideas/2024/maps.jpg

.. Important::

Languages and technologies used:
**Python**, **Django**, **JavaScript**,
**Leaflet**, **netjsongraph.js**.

**Mentors**: Federico Capoano, Gagan Deep.

**Project size**: 350 hours.

**Difficulty rate**: medium.

This GSoC project aims to enhance the user experience of the general map
within OpenWISP, a feature introduced in the last stable version.

By developing a dedicated map page, facilitating
precise device tracking, and seamlessly integrating indoor floorplans,
the project endeavors to significantly improve the usability and
functionality of the mapping interface, ensuring a more intuitive
and effective user experience.

Pre-requisites to work on this project
######################################

Applicants must demonstrate a solid understanding of Python, Django,
`Leaflet library <https://github.com/makinacorpus/django-leaflet>`_,
JavaScript, `OpenWISP Controller
<https://github.com/openwisp/openwisp-controller#openwisp-controller>`__,
`OpenWISP Monitoring
<https://github.com/openwisp/openwisp-monitoring#openwisp-monitoring>`__.
and `netjsongraph.js
<https://github.com/openwisp/netjsongraph.js?tab=readme-ov-file#netjsongraphjs>`__.

Expected outcomes
#################

- `Add a dedicated map page
<https://github.com/openwisp/openwisp-monitoring/issues/561>`_:
Introduce a dedicated page to display all network devices on a map.
This view will offer the same functionality as the map in the
dashboard, with the sole difference being that this page focuses on
rendering only the map. It will be used for linking specific points
on the map within the rest of the OpenWISP UI.

- `Allow tracking mobile coordinates
<https://github.com/openwisp/openwisp-controller/issues/828>`_:
OpenWISP Controller provides a way for devices to update their
co-ordinates, we want to make the map able to update in real time
as devices send their updated coordinates.

- `Integrate indoor floor plan functionality in the map
<https://github.com/openwisp/openwisp-monitoring/issues/564>`_:
The netjsongraph.js library allows to render indoor maps,
we want to make use of this feature to display the indoor location
of devices and we want this feature to be accessible from the general
map. When zooming in on a device which is flagged as indoor and has
floor plans saved in the database,
users should see an option to switch to the indoor view.
This view would show the floor plan of the indoor location and
any device located on the floor plan, it shall also account for the
following use cases:

- An indoor location can have multiple floors. The view should be
allow users to navigate between different floors.
- There can be multiple devices on the same floor. The view should
show all the devices on a floor. This will require developing an
API endpoint which returns location of devices on the floor plan

- `Make map actions bookmarkable
<https://github.com/openwisp/netjsongraph.js/issues/238>`_:
Update the URL when clicking on a node/link to view its details.
Visiting this URL should automatically focus on the specified
node/link and display its details, if available. This functionality
should also accommodate geo-maps using coordinates.
Clicking on a node/link to view it's details should update
the the page's URL.
When visiting this URL, the map should automatically focus the
said node/link. It shall also open the node's/link's details
if they are available. This should work on geographic maps,
indoor maps and logical maps.

- `Add button to general map from device detail
<https://github.com/openwisp/openwisp-monitoring/issues/562>`_:
Implement a button on the device detail page to allow users to
navigate from the device detail to the general map and inspect
the device's location on the map. The map should focus on the
specific device in question. This feature should also be available
for indoor maps, providing a button in the floor plan section
to open the general map with the indoor view focused.

Throughout the code changes, it is imperative to maintain stable
test coverage and keep the README documentation up to date.

.. note::

The "expected outcomes" mentioned above include links to corresponding
GitHub issues. However, these issues may not cover all aspects of the
project and are primarily intended to gather technical details.
Applicants are encouraged to seek clarification, propose solutions
and open more issues if needed.

Applicants are also expected to deepen their understanding of the UI
changes required by preparing *wireframes* or *mockups*, which must be
included in their application. Demonstrating a willingness and enthusiasm
to learn about UI/UX development is crucial for the success of this
project.

Improve UX and Flexibility of the Firmware Upgrader Module
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Expand Down
Binary file added images/gsoc/ideas/2024/maps.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading