wattroll aecbabf3d3 Language menu (#48)
* refactor(Toolbar): change the way z-order of elements is expressed

**Before:**
`.toolbar` was placed over the content of `#toolbar-wrapper`.

**After:**
`.toolbar-panels` are placed behind the content of `#toolbar-wrapper`.

**Reason:**
allows descendants of `.toolbar` to place themselves behind it.

Context
-------

Previously we had the following setup
(`*` means the root of stacking context, `-` means normal child):

    * div#toolbar-wrapper { z-index: 10, position: fixed }
       * div.toolbar { z-index: 10, position: relative }
         - div.toolbar-tabs
           - div.toolbar-tab
           - div.toolbar-tab
           - div.toolbar-tab
       * div.toolbar-panels { position: fixed }
    * div.map-wrapper { position: fixed }
    * div.cover-container { z-index: 501, position: absolute }

That was achivieving what was necessary:
- `#toolbar-wrapper` tree is placed over the `.map-wrapper`,
- `.cover-container` tree is placed over the `#toolbar-wrapper`,
- `.toolbar` tree is placed over `.toolbar-panels`

Problem
-------

The practical problem with it was not being able to make descendants
of `.toolbar` go behind it when sliding away (as they were within
`.toolbar`'s own stacking context).

We needed to add a small language menu which would be positioned next
to the button that opens it, and slide away behind the toolbar like
other toolbar-panels.

Solution
--------

I changed the stacking to be the following:

    * div#toolbar-wrapper { z-index: 10, position: fixed }
       - div.toolbar
         - div.toolbar-tabs
           - div.toolbar-tab
           - div.toolbar-tab
           - div.toolbar-tab
       * div.toolbar-panels { z-index: -1, position: fixed }
    * div.map-wrapper { position: fixed }
    * div.cover-container { z-index: 501, position: absolute }

This explicitly places `.toolbar-panels` behind everything else within
the stacking context created by `#toolbar-wrapper`.

Outcome
-------

Now `.language-menu` can easily be added as:

    * div#toolbar-wrapper { z-index: 10, position: fixed }
       - div.toolbar
         - div.toolbar-tabs
           - div.toolbar-tab
           - div.toolbar-tab { position: relative }
             * div.language-menu { z-index: -1, position: absolute }
           - div.toolbar-tab
       * div.toolbar-panels { z-index: -1, position: fixed }

* feat(Toolbar): add language menu (button and a sliding out panel)
2022-04-13 10:22:09 +01:00
2021-05-24 22:19:54 -07:00
2021-01-19 22:22:12 +01:00
2022-03-21 11:00:33 +01:00
2022-03-20 08:16:47 +01:00
2020-12-14 13:42:08 +00:00
2022-04-13 10:22:09 +01:00
2020-12-08 13:13:50 +00:00
2019-01-15 11:13:55 +00:00
2020-12-07 19:28:07 +00:00
2021-01-17 18:16:28 +13:00
2018-11-02 11:57:31 -04:00
2020-11-25 14:24:26 +00:00
2019-01-15 11:13:55 +00:00
2021-10-21 17:28:16 +02:00
2022-03-20 08:16:47 +01:00
2019-05-16 12:13:47 +01:00

Civilian Harm in Ukraine TimeMap

Visit ukraine.bellingcat.com.

Read Bellingcat's article about this project in English (UK), Русский (Россия)

TimeMap is a tool for exploration, monitoring and classification of incidents in time and space, originally forked from forensic-architecture/timemap.



ukraine.bellingcat.com timemap preview

Development

  • Use node v14.x.x
  • npm install to setup
  • adjust any local configs in config.js
  • CONFIG=config.js npm run dev or npm run dev if the file is named config.js
  • For more info visit the original repo

Contributing

Please check our issues page for desired contributions, and feel free to suggest your own.

Configurations

Documentation of config.js
  • SERVER_ROOT - points to the API base address
  • XXXX_EXT - points to the respective JSONs of the data, for events, sources, and associations
  • MAPBOX_TOKEN - used to load the custom styles
  • DATE_FMT and TIME_FMT - how to consume the events' date/time from the API
  • store.app.language - configures default language
  • store.app.languages - configures available languages
  • store.app.map - configures the initial map view and the UX limits
  • store.app.cluster - configures how clusters/bubbles are grouped into larger clusters, larger radius means bigger cluster bubbles
  • store.app.timeline - configure timeline ranges, zoom level options, and default range
  • store.app.intro - the intro panel that shows on start
  • store.app.cover - configuration for the full page cover, the description is a list of markdown entities, can also contain html
  • store.ui.colors and store.ui.maxNumOfColors are applied to filters, as they are selected

Easiest way to deploy the static files is through

  • nvm use 14
  • npm run build (rather: CI=false npm run build)
  • copy the files to your server, for example to /var/www/html
Description
TimeMap instance for Civilian Harm in Ukraine
Readme 9.8 MiB
Languages
JavaScript 79.3%
SCSS 19.7%
HTML 0.9%