diff --git a/index.html b/index.html index c6a9001..fc87d89 100644 --- a/index.html +++ b/index.html @@ -4,6 +4,8 @@ TimeMap - Forensic Architecture + + diff --git a/src/actions/index.js b/src/actions/index.js index d701978..6da357e 100644 --- a/src/actions/index.js +++ b/src/actions/index.js @@ -176,21 +176,7 @@ export function toggleFetchingEvents() { } } -export const TOGGLE_VIEW = 'TOGGLE_VIEW' -export function toggleView() { - return { - type: TOGGLE_VIEW - } -} - -export const TOGGLE_TIMELINE = 'TOGGLE_TIMELINE' -export function toggleTimeline() { - return { - type: TOGGLE_TIMELINE - } -} - -export const TOGGLE_LANGUAGE = 'TOGGLE_LANGUAGE' +export const TOGGLE_LANGUAGE = 'TOGGLE_LANGUAGE'; export function toggleLanguage(language) { return { type: TOGGLE_LANGUAGE, @@ -198,37 +184,14 @@ export function toggleLanguage(language) { } } -export const OPEN_TOOLBAR = 'OPEN_TOOLBAR' -export function openToolbar(toolbarTab = 0) { - return { - type: OPEN_TOOLBAR, - toolbarTab: toolbarTab, - } -} - -export const CLOSE_TOOLBAR = 'CLOSE_TOOLBAR' +export const CLOSE_TOOLBAR = 'CLOSE_TOOLBAR'; export function closeToolbar() { return { type: CLOSE_TOOLBAR } } -export const OPEN_CABINET = 'OPEN_CABINET' -export function openCabinet(tabNum) { - return { - type: OPEN_CABINET, - tabNum: tabNum, - } -} - -export const CLOSE_CABINET = 'CLOSE_CABINET' -export function closeCabinet() { - return { - type: CLOSE_CABINET - } -} - -export const TOGGLE_INFOPOPUP = 'TOGGLE_INFOPOPUP' +export const TOGGLE_INFOPOPUP = 'TOGGLE_INFOPOPUP'; export function toggleInfoPopup() { return { type: TOGGLE_INFOPOPUP diff --git a/src/components/Dashboard.jsx b/src/components/Dashboard.jsx index 365ea81..5a6533f 100644 --- a/src/components/Dashboard.jsx +++ b/src/components/Dashboard.jsx @@ -146,10 +146,6 @@ class Dashboard extends React.Component { viewFilters={this.props.app.filters.views} features={this.props.app.features} - isToolbar={this.props.ui.flags.isToolbar} - toolbarTab={this.props.ui.components.toolbarTab} - isView2d={this.props.ui.flags.isView2d} - filter={this.handleTagFilter} toggle={ (key) => this.handleToggle(key) } actions={this.props.actions} diff --git a/src/components/InfoPopup.jsx b/src/components/InfoPopup.jsx index e795af0..00e67b7 100644 --- a/src/components/InfoPopup.jsx +++ b/src/components/InfoPopup.jsx @@ -77,26 +77,7 @@ export default class InfoPopUp extends React.Component{ ) } - renderView3DLegend() { - const lang = copy[this.props.app.language].legend.view3d; - return ( -
- - {lang.paragraphs.map(paragraph =>

{paragraph}

)} - {lang.colors.map(color => ( -
-
-
{color.label}
-
- ))} -
- ) - } - render() { - if (!this.props.ui.flags.isView2d) { - return (
{this.renderView3DLegend()}
) - } return (
{this.renderView2DLegend()}
) diff --git a/src/components/Toolbar.jsx b/src/components/Toolbar.jsx index 3f96a71..34c9a38 100644 --- a/src/components/Toolbar.jsx +++ b/src/components/Toolbar.jsx @@ -25,10 +25,6 @@ class Toolbar extends React.Component { } } - openCabinet() { - this.props.actions.openCabinet(); - } - resetAllFilters() { this.props.actions.resetAllFilters(); } @@ -54,43 +50,42 @@ class Toolbar extends React.Component { const routeClass = (isViewLayer.routes) ? 'action-button active disabled' : 'action-button disabled' const sitesClass = (isViewLayer.sites) ? 'action-button active disabled' : 'action-button disabled'; const coeventsClass = (isViewLayer.coevents) ? 'action-button active disabled' : 'action-button disabled'; - if (this.props.isView2d) { - return ( -
- - - -
- ); - } + + + + + ); return (
) } @@ -153,7 +148,7 @@ class Toolbar extends React.Component { const title = copy[this.props.language].toolbar.title; return (
-
this.openCabinet()}>

{title}

+

{title}

{/*this.renderToolbarTab(0, 'search')*/} {this.renderToolbarTagRoot()} diff --git a/src/js/map/map.js b/src/js/map/map.js index b43f5a5..e983e73 100644 --- a/src/js/map/map.js +++ b/src/js/map/map.js @@ -273,7 +273,6 @@ Stop and start the development process in terminal after you have added your tok .attr('class', 'location') .attr('transform', (d) => { d.LatLng = new L.LatLng(+d.latitude, +d.longitude); - console.log(lMap.latLngToLayerPoint(d.LatLng)) return `translate(${lMap.latLngToLayerPoint(d.LatLng).x}, ${lMap.latLngToLayerPoint(d.LatLng).y})`; }) diff --git a/src/reducers/index.js b/src/reducers/index.js index c940079..3b39f37 100644 --- a/src/reducers/index.js +++ b/src/reducers/index.js @@ -1,6 +1,4 @@ -import { - combineReducers -} from 'redux' +import { combineReducers } from 'redux' import domain from './domain.js' import app from './app.js' diff --git a/src/reducers/ui.js b/src/reducers/ui.js index 2180304..8ead656 100644 --- a/src/reducers/ui.js +++ b/src/reducers/ui.js @@ -5,8 +5,6 @@ import { TOGGLE_FETCHING_EVENTS, TOGGLE_VIEW, TOGGLE_TIMELINE, - OPEN_CABINET, - CLOSE_CABINET, TOGGLE_INFOPOPUP, TOGGLE_NOTIFICATIONS } from '../actions' @@ -27,41 +25,6 @@ function toggleFetchingEvents(uiState, action) { }); } -function toggleView(uiState, action) { - return Object.assign({}, uiState, { - flags: Object.assign({}, uiState.flags, { - isView2d: !uiState.flags.isView2d - }) - }); -} - -function toggleTimeline(uiState, action) { - return Object.assign({}, uiState, { - flags: Object.assign({}, uiState.flags, { - isTimeline: !uiState.flags.isTimeline - }) - }); -} - -function closeCabinet(uiState, action) { - return Object.assign({}, uiState, { - flags: Object.assign({}, uiState.flags, { - isCabinet: false - }) - }); -} - -function openCabinet(uiState, action) { - return Object.assign({}, uiState, { - flags: Object.assign({}, uiState.flags, { - isCabinet: true - }), - components: Object.assign({}, uiState.components, { - cabinetFileTab: action.tabNum, - }) - }); -} - function toggleInfoPopup(uiState, action) { return Object.assign({}, uiState, { flags: Object.assign({}, uiState.flags, { @@ -84,14 +47,6 @@ function ui(uiState = initial.ui, action) { return toggleFetchingDomain(uiState, action); case TOGGLE_FETCHING_EVENTS: return toggleFetchingEvents(uiState, action); - case TOGGLE_VIEW: - return toggleView(uiState, action); - case TOGGLE_TIMELINE: - return toggleTimeline(uiState, action); - case OPEN_CABINET: - return openCabinet(uiState, action); - case CLOSE_CABINET: - return closeCabinet(uiState, action); case TOGGLE_INFOPOPUP: return toggleInfoPopup(uiState, action); case TOGGLE_NOTIFICATIONS: diff --git a/src/scss/cabinet.scss b/src/scss/cabinet.scss deleted file mode 100644 index 5c132ea..0000000 --- a/src/scss/cabinet.scss +++ /dev/null @@ -1,827 +0,0 @@ -@import 'icons'; -@import 'video'; - -.cabinet-wrapper { - overflow: auto; - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; - width: 100%; - height: 100%; - display: table; - table-layout: fixed; - color: $offwhite; - background-color: $black; - font-family: 'Merriweather', serif; - transition: opacity 0.5s ease 0.1s, z-index 0.1s ease 0s; - opacity: 1; - z-index: $final-level; - - &.hidden { - transition: opacity 0.5s ease 0s, z-index 0.1s ease 0.5s; - opacity: 0; - z-index: $hidden; - } - - &.show { - z-index: $final-level; - } - - .top-action { - position: fixed; - top: 20px; - right: 20px; - z-index: 1; - - button { - font-family: 'Lato'; - font-size: $xlarge; - text-align: left; - text-transform: uppercase; - background: none; - border: none; - color: $offwhite; - outline: none; - cursor: pointer; - transition: 0.2s ease; - letter-spacing: 0.1em; - - .label { - height: 28px; - float: left; - line-height: 28px; - padding-left: 10px; - } - - svg { - float: left; - path, circle, polygon, - polyline, line { - stroke-width: 2px; - transition: 0.2s ease; - stroke: $offwhite; - fill: none; - stroke-linecap: round; - } - } - - &:hover { - transition: 0.2s ease; - letter-spacing: 0.15em; - } - } - } - - .cabinet-header { - position: fixed; - top: 0px; - width: 100%; - padding: 20px 0; - background: $black; - transition: 1s ease; - text-transform: uppercase; - font-family: 'Merriweather', serif; - - .header-title { - width: 280px; - margin: 0 auto; - cursor: pointer; - - p { - font-size: $normal; - margin: 0; - width: 100%; - text-align: center; - transition: 2s ease; - letter-spacing: normal; - } - p:first-child { - font-size: 8px; - } - - &:hover { - p { - transition: 2s ease; - letter-spacing: 0.1em; - } - } - } - } - - .share-sm { - position: fixed; - bottom: 20px; - right: 20px; - } - - .side-menu-file-cabinet { - position: fixed; - top: 20px; - left: 20px; - z-index: 1; - } - - .logo-fa { - background: url('/static/archive/img/logo-fa-square.png'); - margin: 0px 0 30px 20px; - height: 30px; - width: 30px; - background-size: 30px; - animation-name: fadeIn; - animation-duration: 3s; - position: fixed; - top: 20px; - cursor: pointer; - } - - &.cabinet-wrapper-files { - display: block; - background: $black; - } - - &.cabinet-wrapper-cover { - background-color: $black; - background-repeat:no-repeat; - -webkit-background-size:cover; - -moz-background-size:cover; - -o-background-size:cover; - background-size:cover; - background-position:center; - } -} - -.cabinet-cover { - position: absolute; - display: flex; - justify-content: center; - align-items: center; - text-align: center; - vertical-align: middle; - width: 100%; - bottom: 0; - top: 0; - animation-name: fadeIn; - animation-duration: 0.5s; - - .content { - display: inline-block; - width: 90%; - max-width: 800px; - box-sizing: border-box; - padding: 30px; - border-radius: 2px; - overflow: auto; - } - - .cabinet-cover-header { - width: 100%; - margin-bottom: 20px; - animation-name: fallFadeIn; - animation-duration: 3s; - - .main-title { - .title { - font-size: $cover-title; - text-transform: uppercase; - } - margin-top: 0; - margin-bottom: 0; - } - .untertitle { - font-size: $xxlarge; - text-transform: none; - letter-spacing: 0.1em; - } - } - - .cabinet-cover-content { - width: 100%; - - animation-name: fadeIn; - animation-duration: 3s; - - .tile-row { - position: relative; - padding: 10px; - box-sizing: border-box; - - .tile { - position: relative; - display: inline-block; - width: calc(50% - 20px); - height: 90px; - line-height: 90px; - box-sizing: border-box; - background: none; - border: 1px solid $offwhite; - font-family: 'Lato', Helvetica, sans-serif; - font-size: $xxlarge; - text-transform: uppercase; - cursor: pointer; - transition: 1s ease; - letter-spacing: 0.1em; - - span { - z-index: 1; - } - - &:before { - position: absolute; - content: " "; - top: 0; - left: 0; - width: 100%; - height: 100%; - display: block; - z-index: 0; - transition: 1s ease; - background-color: rgba($black, 0.15); - } - - &:hover { - transition: 1s ease; - letter-spacing: 0.15em; - &:before{ - transition: 1s ease; - background-color: rgba($black, 0.3); - } - } - - &:first-child { - margin-right: 20px; - } - - &.full { - width: 100%; - margin-right: 0; - } - - & * { - position: relative; - } - - .tile-content { - margin: 0 auto; - padding: 30px 0; - width: 200px; - - .label { - height: 28px; - float: left; - line-height: 28px; - padding-left: 10px; - } - - svg { - float: left; - path, circle, polygon, - polyline, line { - stroke-width: 2px; - transition: 0.2s ease; - stroke: $offwhite; - fill: none; - stroke-linecap: round; - } - } - } - } - } - } -} - -.secondary-action { - width: 90px; - margin: 0 auto; - letter-spacing: 0.1em; - text-transform: uppercase; - font-family: 'Lato'; - font-size: $small; - padding: 20px 0; - text-align: center; - transition: 0.2s ease; - border-bottom: 2px solid rgba($offwhite, 0); - cursor: pointer; - - &:hover { - transition: 0.2s ease; - letter-spacing: 0.15em; - border-bottom: 2px solid $yellow; - } -} - -.cabinet-files { - animation-name: fadeIn; - animation-duration: 0.5s; - - &.file-tab-list-off { - ul.cabinet-file-tab-list { - transition: 0.2s ease; - left: -300px; - } - } - - ul.cabinet-file-tab-list { - width: 300px; - position: fixed; - float: left; - top: 0; - bottom: 0; - margin: 0; - padding-top: 160px; - border-right: 1px solid $darkgrey; - background: $black; - transition: 0.2s ease; - left: 0; - z-index: 1; - - li.cabinet-file-tab { - width: calc(100% - 40px); - text-align: left; - border: 0; - margin-left: 20px; - margin-right: 20px; - box-sizing: border-box; - font-family: 'Merriweather', serif; - font-size: $large; - font-weight: 100; - border-bottom: 1px solid $darkgrey; - transition: 0.2s ease; - color: $offwhite; - - &:hover { - transition: 0.2s ease; - color: $yellow; - } - - &.react-tabs__tab--selected { - color: $yellow; - - &:after { - content: ' →'; - } - } - } - - .action { - text-align: left; - border: 0; - box-sizing: border-box; - - button { - margin: 20px; - width: calc(100% - 40px); - letter-spacing: 0.1em; - text-transform: uppercase; - font-family: 'Lato'; - font-size: $large; - text-align: left; - padding-left: 0; - } - - &.secondary-action button { - padding: 20px; - border: 1px solid $midwhite; - text-align: center; - &:hover { - transition: 0.2s ease; - border-color: $offwhite; - background: rgba($offwhite, 0.1); - } - } - } - - .language-toggle { - width: 100%; - position: absolute; - bottom: 0; - z-index: 10; - } - } - - - - .react-tabs__tab-panel { - z-index: 0; - } - - .cabinet-file-content { - width: 90%; - max-width: 800px; - box-sizing: border-box; - padding: 140px 30px 60px 30px; - border-radius: 2px; - overflow: auto; - margin: 0 auto; - text-align: left; - animation-name: fadeIn; - animation-duration: 1.5s; - - h1 { - font-size: $title; - text-align: center; - font-weight: 700; - text-transform: uppercase; - margin-bottom: 50px; - } - - .title-separator { - margin: 0 auto; - width: 100px; - border-bottom: 4px solid $yellow; - margin-bottom: 50px; - } - - h2 { - letter-spacing: normal; - text-transform: capitalize; - margin-top: 40px; - } - - .cabinet-body-text { - padding: 10px 0; - - .section { - margin-bottom: 40px; - } - - p { - margin: 20px 0; - font-size: $xlarge; - font-weight: 100; - line-height: 24px; - - &:first-child { - margin-top: 0; - } - - &:last-child { - margin-bottom: 0; - } - } - - .highpoint { - font-size: $xxxlarge; - margin: 60px 0; - border-left: 4px solid $yellow; - padding-left: 20px; - } - - img { - width: 100%; - } - - .actions { - width: 100%; - display: inline-block; - } - - .primary-action { - button { - font-size: $large; - height: 140px; - line-height: 140px; - width: 100%; - padding: 0; - border: 1px solid $offwhite; - background-size: 100%; - color: $offwhite; - cursor: pointer; - outline: none; - font-family: 'Lato', Helvetica, sans-serif; - text-transform: uppercase; - margin-bottom: 10px; - transition: 0.2s ease; - letter-spacing: 0.1em; - - &:after { - content: ' →'; - } - - &:hover { - transition: 0.2s ease; - letter-spacing: 0.15em; - } - } - - &.only-on-mobile { - display: none; - - button:after { - content: ''; - } - } - - &.ja { - button { background-image: url("/static/archive/img/scene01.jpg"); } - } - &.pj { - button { background-image: url("/static/archive/img/scene02.jpg"); } - } - &.st { - button { background-image: url("/static/archive/img/scene03.jpg"); } - } - } - } - } - - .actions { - min-width: 200px; - margin: 0 auto; - - .action { - display: inline-block; - float: left; - } - - button { - font-size: $large; - display: block; - width: 100%; - } - - .primary-action { - width: 100%; - animation-name: fadeIn; - animation-duration: 1s; - - &:first-child { - margin-right: 5%; - } - - button { - height: 120px; - margin: 20px auto; - letter-spacing: 0.1em; - text-transform: uppercase; - font-family: 'Lato'; - } - - &.mobile { - width: 100%; - } - } - - .document-action { - width: 100%; - border: 0; - display: block; - margin: 0 auto; - clear: both; - - button { - display: inline-block; - text-align: center; - width: 100%; - height: 40px; - line-height: 40px; - margin: 10px auto; - padding: 0; - letter-spacing: 0.1em; - text-transform: uppercase; - border: 0; - outline: none; - border-bottom: 4px solid rgba($yellow, 0); - background: none; - - a { - text-align: center; - box-sizing: border-box; - padding-bottom: 5px; - cursor: pointer; - text-decoration: none; - color: $offwhite; - - &:after { - content: '↓'; - } - &:hover { - transition: 0.2s ease; - border-bottom: 4px solid rgba($yellow, 1); - color: $yellow; - } - } - } - } - - &:last-child { - margin-bottom: 40px; - } - } -} - -/** -* -* VIDEO ON LANDING -*/ - -.fullscreen { - position: fixed; - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 2; - background: $black; -} -.video { - display: block; - left: 0px; - overflow: hidden; - padding-bottom: 56.25%; /* 56.25% = 16:9. set ratio */ - position: absolute; - top: 50%; - width: 100%; - -webkit-transform-origin: 50% 0; - transform-origin: 50% 0; - -webkit-transform: translateY(-50%); - transform: translateY(-50%); -} -.video .wrapper { - display: block; - height: 300%; - left: 0px; - overflow: hidden; - position: absolute; - top: 50%; - width: 100%; - -webkit-transform: translateY(-50%); - transform: translateY(-50%); -} -.video iframe { - display: block; - height: 100%; - width: 100%; -} - -/* -* VIDEO ON SITE -*/ - -.video-responsive{ - overflow:hidden; - padding-bottom:56.25%; - position:relative; - height:0; -} -.video-responsive iframe{ - left:0; - top:0; - height:100%; - width:100%; - position:absolute; -} - -/* -* Responsiveness -* -*/ - -@media (max-width: 780px) { - .cabinet-files .cabinet-file-content .cabinet-body-text .primary-action { - &.not-on-mobile { - display: none; - } - &.only-on-mobile { - display: block; - } - } - .cabinet-cover { - .content { - padding: 0; - } - .cabinet-cover-header { - margin-bottom: 40px; - - .main-title { - .title { - font-size: 36px; - } - } - .untertitle { - font-size: $normal; - } - } - - .cabinet-cover-content .tile-row { - padding: 0; - - .tile { - width: 60%; - height: 48px; - line-height: 48px; - margin: 0 20%; - margin-bottom: 10px; - font-size: $normal; - &:first-child { - margin-right: 20%; - } - &.tile00 { - display: none; - } - } - } - } - - .cabinet-files { - ul.cabinet-file-tab-list { - width: 100%; - - li.cabinet-file-tab { - text-align: center; - font-size: $normal; - height: 48px; - line-height: 48px; - } - } - - &.file-tab-list-off { - ul.cabinet-file-tab-list { - transition: 0.2s ease; - left: -100%; - } - } - - .cabinet-file-content { - width: 100%; - margin: 0; - padding: 100px 15px 40px 15px; - box-sizing: border-box; - overflow: auto; - - .cabinet-body-text { - padding: 10px 0; - font-size: $xlarge; - - p { - margin: 20px 0; - } - - img { - width: 100%; - } - } - } - } - .top-action.not-on-mobile { - display: none; - } -} - -/* Tablets with very short heights */ -@media (max-height: 768px) and (min-width: 780px) { - .cabinet-cover .content { - max-width: 640px; - } - - .cabinet-cover .cabinet-cover-header { - margin-bottom: 20px; - - .main-title .title { - font-size: 48px; - } - } - - .cabinet-cover .cabinet-cover-content .tile-row .tile { - height: 50px; - line-height: 50px; - font-size: $xlarge; - - .tile-content { - padding: 10px 0; - } - } -} - -@media (min-width: 1350px) { - .cabinet-files { - animation-name: fadeIn; - animation-duration: 0.5s; - - &.file-tab-list-off { - ul.cabinet-file-tab-list { - left: 0; - } - } - } - - .side-menu-file-cabinet { - display: none; - } -} - -/* ----------- Non-Retina Screens ----------- */ -@media screen - and (min-device-width: 1200px) - and (max-device-width: 1600px) - and (-webkit-min-device-pixel-ratio: 1) { -} - -/* ----------- Retina Screens ----------- */ -@media screen - and (min-device-width: 1200px) - and (max-device-width: 1600px) - and (-webkit-min-device-pixel-ratio: 2) - and (min-resolution: 192dpi) { -} diff --git a/src/selectors/index.js b/src/selectors/index.js index 9f22bb5..d79960a 100644 --- a/src/selectors/index.js +++ b/src/selectors/index.js @@ -10,6 +10,7 @@ export const getSites = (state) => { if (process.env.features.USE_SITES) return state.domain.sites return [] } +console.log(process.env) export const getNotifications = state => state.domain.notifications; export const getTagTree = state => state.domain.tags; export const getTagsFilter = state => state.app.filters.tags; diff --git a/src/store/index.js b/src/store/index.js index c60975a..735a481 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -1,8 +1,4 @@ -import { - createStore, - applyMiddleware, - compose -} from 'redux'; +import { createStore, applyMiddleware, compose } from 'redux'; import thunk from 'redux-thunk'; import rootReducer from '../reducers'; diff --git a/src/store/initial.js b/src/store/initial.js index ba925fe..c5f38ad 100644 --- a/src/store/initial.js +++ b/src/store/initial.js @@ -1,27 +1,33 @@ -// TODO: annotate sections of this state. - -// NB: why does this canvas document need to be created? -const canvas = document.createElement('canvas'); -const gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl'); - const initial = { + /* + * The Domain or 'domain' of this state refers to the tree of data + * available for render and display. + * Selections and filters in the 'app' subtree will operate the domain + * in mapStateToProps of the Dashboard, and deterimne which items + * in the domain will get rendered by React + */ domain: { events: [], narratives: [], locations: [], - categories: [], sites: [], - - // Tag tree - tags: { }, + tags: {}, notifications: [], }, + + /* + * The 'app' subtree of this state determines the data and information to be + * displayed. + * It may refer to those the user interacts with, by selecting, + * fitlering and so on, which ultimately operate on the data to be displayed. + * Additionally, some of the 'app' flags are determined by the config file + * or by the characteristics of the client, browser, etc. + */ app: { error: null, highlighted: null, selected: [], - notifications: [], filters: { timerange: [ d3.timeParse("%Y-%m-%dT%H:%M:%S")("2014-08-22T12:00:00"), @@ -38,7 +44,6 @@ const initial = { }, base_uri: 'http://127.0.0.1:8000/', // Modify accordingly on production setup. isMobile: (/Mobi/.test(navigator.userAgent)), - isWebGL: (gl && gl instanceof WebGLRenderingContext), language: 'en-US', mapAnchor: process.env.MAP_ANCHOR, features: { @@ -46,6 +51,12 @@ const initial = { USE_SEARCH: process.env.features.USE_SEARCH } }, + + /* + * The 'ui' subtree of this state refers the state of the cosmetic + * elements of the application, such as color palettes of groups or how some + * of the UI tools are enabled or disabled dynamically by the user + */ ui: { style: { colors: { @@ -77,9 +88,7 @@ const initial = { flags: { isFetchingDomain: false, isFetchingEvents: false, - isView2d: true, - isTimeline: true, - isToolbar: false, + isCardstack: true, isInfopopup: false, isNotification: true @@ -88,9 +97,6 @@ const initial = { formatter: d3.timeFormat("%d %b, %H:%M"), formatterWithYear: d3.timeFormat("%d %b %Y, %H:%M"), parser: d3.timeParse("%Y-%m-%dT%H:%M:%S") - }, - components: { - toolbarTab: false, } } }; diff --git a/webpack.config.js b/webpack.config.js index 5e7e738..4706f03 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -2,12 +2,18 @@ const webpack = require('webpack'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const userConfig = require('./config'); +const userConfigJSON = {}; + const devMode = process.env.NODE_ENV !== 'production'; const path = require('path'); const APP_DIR = path.resolve(__dirname, './src'); const BUILD_DIR = path.resolve(__dirname, './build'); +for (const k in userConfig) { + userConfigJSON[k] = JSON.stringify(userConfig[k]); +} + const config = { entry: { index: `${APP_DIR}/index.jsx`, @@ -53,16 +59,8 @@ const config = { plugins: [ new webpack.DefinePlugin({ 'process.env': { + ...userConfigJSON, 'NODE_ENV': JSON.stringify('production'), - 'MAPBOX_TOKEN': JSON.stringify(userConfig.MAPBOX_TOKEN), - 'SERVER_ROOT': JSON.stringify(userConfig.SERVER_ROOT), - 'EVENT_EXT': JSON.stringify(userConfig.EVENT_EXT), - 'CATEGORY_EXT': JSON.stringify(userConfig.CATEGORY_EXT), - 'TAG_TREE_EXT': JSON.stringify(userConfig.TAG_TREE_EXT), - 'SITES_EXT': JSON.stringify(userConfig.SITES_EXT), - 'EVENT_DESC_ROOT': JSON.stringify(userConfig.EVENT_DESC_ROOT), - 'MAP_ANCHOR': JSON.stringify(userConfig.MAP_ANCHOR), - 'INCOMING_DATETIME_FORMAT': JSON.stringify(userConfig.INCOMING_DATETIME_FORMAT), 'features': { 'USE_TAGS': JSON.stringify(userConfig.features.USE_TAGS), 'USE_SEARCH': JSON.stringify(userConfig.features.USE_SEARCH),