The Gebäude-Navigator helps you to find accessible places in Leipzig. You can define restrictions such as accessibility requirements for the entrance, the lift or the toilet. Your selection may lead to a result list. Results can be displayed on a map. Besides restrictions you can also use a keyword search.
Screenshot:
The latest version of the software runs at:
https://behindertenverband-leipzig.de/gebaeude-navigator
This tool is being developed by Simeon Ackermann and Konrad Abicht as part of the LEDS-project. We work close together with the Behindertenverband Leipzig e.V., a non-profit organization located in Leipzig, which cares about issue of disabled people. Since January 2018 City of Leipzig joined us.
We use accessibility icons from this source:
https://teilhabeplan.behindertenverband-leipzig.de/piktogramme.php
A compact and English version can be found here:
https://github.com/Behindertenverband-Leipzig/accessibility-icons
Icons and related work are licensed under the terms of CC BY 4.0.
TalkBack for Android with ChromeMobile
ChromeVox Extension for Chrome
COBRA (Windows), NVDA (Windows), Orca (Linux with eSpeak)
This section is for people who want to dive into the code.
Checkout this repository and open the dist/index.html
file into your browser.
If you want to adapt the code and see your changes, you can use our Docker container setup (link below).
The architexture is inspired by Redux/Flux and implements a simple data-event flow.
The main class BuildingNavigator
holds the stores as state and passes them to the rendered components. It also passes events from the components to the EventHandler
.
All components extends the React.Component
, output some html and can hold passed props as local states.
To handle an event, the components can call super.handleEvent(event)
to execute an action in the EventHandler
. The action calls a method in a store to change some data.
After changing data in a store the BuildingNavigator
re-renders all components with the new data.
* __mocks__ // mocked methods for testing
* assets/ // repository files
* dist/ // ready to run software
- webfonts/
- images/
- libraries/ // external css libraries
- favicon.ico
- index.html
- main.min.js
- main.min.js.map
- style.css
* src/
- components/ // view components, seperated into subfolders
+ map/
+ sidebar/
+ Map.js
+ Sidebar.js
- stores/ // BuildingStore, FilterStore etc.
- utils/ // additional utilities
- BuildingNavigator.js // main controler class
- EventHandler.js // event handler class
- main.js // entry point
- config.js
* test/ // test environment
* README.md
* package.json // npm configuration
* webpack.config.js // webpack configuration for development
* webpack.production.config.js // webpack configuration for production
As develop environment we use a Docker container with Node.js, NPM, Webpack etl. al. from: https://github.com/AKSW/building-navigator-docker
To setup the development environment follow the instructions in its README.md
.
We use Jest and Enzyme for React GUI tests, and Sinon for asynchronous tests. All current tests are in ./tests
and could started in the Docker container with:
npm test
Code coverage is generated when running the test suite. The report is stored under ./coverage/lcov-report/index.html
To create the production files in ./dist/
exec into the Docker container and run:
npm run build