mirror of
https://github.com/bellingcat/ukraine-timemap.git
synced 2026-06-13 05:48:36 +03:00
add loading
This commit is contained in:
@@ -101,6 +101,7 @@ export function fetchDomain () {
|
|||||||
if (Object.values(result).some(resp => resp.hasOwnProperty('error'))) {
|
if (Object.values(result).some(resp => resp.hasOwnProperty('error'))) {
|
||||||
throw new Error('Some URLs returned negative. If you are in development, check the server is running')
|
throw new Error('Some URLs returned negative. If you are in development, check the server is running')
|
||||||
}
|
}
|
||||||
|
dispatch(toggleFetchingDomain())
|
||||||
return result
|
return result
|
||||||
})
|
})
|
||||||
.catch(err => {
|
.catch(err => {
|
||||||
@@ -192,6 +193,20 @@ export function toggleFilter (filter, value) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const SET_LOADING = 'SET_LOADING'
|
||||||
|
export function setLoading () {
|
||||||
|
return {
|
||||||
|
type: SET_LOADING
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export const SET_NOT_LOADING = 'SET_NOT_LOADING'
|
||||||
|
export function setNotLoading () {
|
||||||
|
return {
|
||||||
|
type: SET_NOT_LOADING
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export const UPDATE_TIMERANGE = 'UPDATE_TIMERANGE'
|
export const UPDATE_TIMERANGE = 'UPDATE_TIMERANGE'
|
||||||
export function updateTimeRange (timerange) {
|
export function updateTimeRange (timerange) {
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -219,6 +219,7 @@ class Dashboard extends React.Component {
|
|||||||
</StaticPage>
|
</StaticPage>
|
||||||
)}
|
)}
|
||||||
<LoadingOverlay
|
<LoadingOverlay
|
||||||
|
isLoading={app.loading || app.flags.isFetchingDomain}
|
||||||
ui={app.flags.isFetchingDomain}
|
ui={app.flags.isFetchingDomain}
|
||||||
language={app.language}
|
language={app.language}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
import React from 'react'
|
import React from 'react'
|
||||||
|
import { bindActionCreators } from 'redux'
|
||||||
import { connect } from 'react-redux'
|
import { connect } from 'react-redux'
|
||||||
import * as d3 from 'd3'
|
import * as d3 from 'd3'
|
||||||
import * as selectors from '../selectors'
|
import * as selectors from '../selectors'
|
||||||
|
import { setLoading, setNotLoading } from '../actions'
|
||||||
import hash from 'object-hash'
|
import hash from 'object-hash'
|
||||||
|
|
||||||
import copy from '../common/data/copy.json'
|
import copy from '../common/data/copy.json'
|
||||||
@@ -376,6 +378,8 @@ class Timeline extends React.Component {
|
|||||||
onSelect={this.props.methods.onSelect}
|
onSelect={this.props.methods.onSelect}
|
||||||
dims={dims}
|
dims={dims}
|
||||||
features={this.props.features}
|
features={this.props.features}
|
||||||
|
setLoading={this.props.actions.setLoading}
|
||||||
|
setNotLoading={this.props.actions.setNotLoading}
|
||||||
/>
|
/>
|
||||||
</svg>
|
</svg>
|
||||||
</div>
|
</div>
|
||||||
@@ -409,4 +413,13 @@ function mapStateToProps (state) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default connect(mapStateToProps)(Timeline)
|
function mapDispatchToProps (dispatch) {
|
||||||
|
return {
|
||||||
|
actions: bindActionCreators({ setLoading, setNotLoading }, dispatch)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default connect(
|
||||||
|
mapStateToProps,
|
||||||
|
mapDispatchToProps
|
||||||
|
)(Timeline)
|
||||||
|
|||||||
@@ -69,7 +69,9 @@ const TimelineEvents = ({
|
|||||||
onSelect,
|
onSelect,
|
||||||
transitionDuration,
|
transitionDuration,
|
||||||
dims,
|
dims,
|
||||||
features
|
features,
|
||||||
|
setLoading,
|
||||||
|
setNotLoading
|
||||||
}) => {
|
}) => {
|
||||||
const narIds = narrative ? narrative.steps.map(s => s.id) : []
|
const narIds = narrative ? narrative.steps.map(s => s.id) : []
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,9 @@ import {
|
|||||||
TOGGLE_NOTIFICATIONS,
|
TOGGLE_NOTIFICATIONS,
|
||||||
TOGGLE_COVER,
|
TOGGLE_COVER,
|
||||||
FETCH_ERROR,
|
FETCH_ERROR,
|
||||||
FETCH_SOURCE_ERROR
|
FETCH_SOURCE_ERROR,
|
||||||
|
SET_LOADING,
|
||||||
|
SET_NOT_LOADING
|
||||||
} from '../actions'
|
} from '../actions'
|
||||||
|
|
||||||
function updateHighlighted (appState, action) {
|
function updateHighlighted (appState, action) {
|
||||||
@@ -212,6 +214,20 @@ function fetchSourceError (appState, action) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function setLoading (appState) {
|
||||||
|
return {
|
||||||
|
...appState,
|
||||||
|
loading: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function setNotLoading (appState) {
|
||||||
|
return {
|
||||||
|
...appState,
|
||||||
|
loading: false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function app (appState = initial.app, action) {
|
function app (appState = initial.app, action) {
|
||||||
switch (action.type) {
|
switch (action.type) {
|
||||||
case UPDATE_HIGHLIGHTED:
|
case UPDATE_HIGHLIGHTED:
|
||||||
@@ -254,6 +270,10 @@ function app (appState = initial.app, action) {
|
|||||||
return fetchError(appState, action)
|
return fetchError(appState, action)
|
||||||
case FETCH_SOURCE_ERROR:
|
case FETCH_SOURCE_ERROR:
|
||||||
return fetchSourceError(appState, action)
|
return fetchSourceError(appState, action)
|
||||||
|
case SET_LOADING:
|
||||||
|
return setLoading(appState)
|
||||||
|
case SET_NOT_LOADING:
|
||||||
|
return setNotLoading(appState)
|
||||||
default:
|
default:
|
||||||
return appState
|
return appState
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -93,7 +93,8 @@ const initial = {
|
|||||||
title: 'project title',
|
title: 'project title',
|
||||||
subtitle: 'project subtitle',
|
subtitle: 'project subtitle',
|
||||||
description: 'A description of the project goes here.\n\nThis description may contain markdown.\n\n# This is a large title, for example.\n\n## Whereas this is a slightly smaller title.\n\nCheck out docs/custom-covers.md in the [Timemap GitHub repo](https://github.com/forensic-architecture/timemap) for more information around how to specify custom covers.'
|
description: 'A description of the project goes here.\n\nThis description may contain markdown.\n\n# This is a large title, for example.\n\n## Whereas this is a slightly smaller title.\n\nCheck out docs/custom-covers.md in the [Timemap GitHub repo](https://github.com/forensic-architecture/timemap) for more information around how to specify custom covers.'
|
||||||
}
|
},
|
||||||
|
loading: false
|
||||||
},
|
},
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
Reference in New Issue
Block a user