import {
FETCH_RESULTS,
FETCH_RESULT_COUNT,
FETCH_RESULTS_FAILED,
FETCH_PAGINATED_RESULTS,
FETCH_PAGINATED_RESULTS_FAILED,
FETCH_BY_URI,
UPDATE_RESULT_COUNT,
UPDATE_RESULTS,
UPDATE_PAGINATED_RESULTS,
UPDATE_INSTANCE,
UPDATE_PAGE,
UPDATE_ROWS_PER_PAGE,
SORT_RESULTS,
UPDATE_PERSPECTIVE_HEADER_EXPANDED,
UPDATE_URL
} from '../../actions'
import {
fetchResults,
fetchResultsFailed,
fetchResultCount,
updateSortBy,
updateResultCount,
updateResults,
updatePaginatedResults,
updateInstance,
updatePage,
updateRowsPerPage,
updateHeaderExpanded
} from '../helpers'
export const INITIAL_STATE = {
results: null,
resultUpdateID: 0,
resultsSparqlQuery: null,
paginatedResults: [],
paginatedResultsSparqlQuery: null,
instance: null,
instanceSparqlQuery: null,
resultCount: 0,
page: -1,
pagesize: 10,
sortBy: null,
sortDirection: null,
fetching: false,
fetchingResultCount: false,
facetedSearchHeaderExpanded: false,
instancePageHeaderExpanded: true,
properties: [
{
id: 'uri',
valueType: 'object',
makeLink: true,
externalLink: true,
sortValues: true,
numberedList: false,
onlyOnInstancePage: true
},
{
id: 'prefLabel',
valueType: 'object',
makeLink: true,
externalLink: false,
sortValues: true,
numberedList: false,
minWidth: 250
},
{
id: 'author',
valueType: 'object',
makeLink: true,
externalLink: false,
sortValues: true,
numberedList: false,
minWidth: 200
},
{
id: 'work',
valueType: 'object',
makeLink: true,
externalLink: false,
sortValues: true,
numberedList: false,
minWidth: 250,
priority: 5
},
{
id: 'expression',
valueType: 'object',
makeLink: true,
externalLink: false,
sortValues: true,
numberedList: false,
minWidth: 250,
priority: 5
},
{
id: 'productionPlace',
valueType: 'object',
makeLink: true,
externalLink: false,
sortValues: true,
numberedList: false,
showSource: true,
sourceExternalLink: true,
minWidth: 200
},
{
id: 'productionTimespan',
valueType: 'object',
makeLink: false,
externalLink: false,
sortValues: true,
numberedList: false,
showSource: true,
sourceExternalLink: true,
minWidth: 250
},
{
id: 'lastKnownLocation',
valueType: 'object',
makeLink: true,
externalLink: false,
sortValues: true,
numberedList: false,
minWidth: 220
},
{
id: 'note',
valueType: 'string',
renderAsHTML: false,
makeLink: false,
externalLink: false,
sortValues: true,
numberedList: false,
minWidth: 250,
collapsedMaxWords: 12
},
{
id: 'language',
valueType: 'object',
makeLink: true,
externalLink: true,
sortValues: true,
numberedList: false,
minWidth: 150
},
{
id: 'event',
valueType: 'object',
makeLink: true,
externalLink: false,
sortValues: true,
numberedList: false,
minWidth: 450
},
{
id: 'owner',
valueType: 'object',
makeLink: true,
externalLink: false,
sortValues: true,
numberedList: false,
minWidth: 250
},
{
id: 'collection',
valueType: 'object',
makeLink: true,
externalLink: false,
sortValues: true,
numberedList: false,
minWidth: 200
},
{
id: 'transferOfCustodyPlace',
valueType: 'object',
makeLink: true,
externalLink: false,
sortValues: true,
numberedList: false,
minWidth: 220
},
{
id: 'transferOfCustodyTimespan',
valueType: 'object',
makeLink: false,
externalLink: false,
sortValues: true,
numberedList: false,
minWidth: 210
},
{
id: 'material',
valueType: 'object',
makeLink: true,
externalLink: true,
sortValues: true,
numberedList: false,
minWidth: 150
},
{
id: 'height',
valueType: 'string',
makeLink: false,
externalLink: false,
sortValues: true,
numberedList: false,
minWidth: 140
},
{
id: 'width',
valueType: 'string',
makeLink: false,
externalLink: false,
sortValues: true,
numberedList: false,
minWidth: 150
},
{
id: 'folios',
valueType: 'string',
makeLink: false,
externalLink: false,
sortValues: true,
numberedList: false,
minWidth: 150
},
{
id: 'lines',
valueType: 'string',
makeLink: false,
externalLink: false,
sortValues: true,
numberedList: false,
minWidth: 150
},
{
id: 'columns',
valueType: 'string',
makeLink: false,
externalLink: false,
sortValues: true,
numberedList: false,
minWidth: 150
},
{
id: 'miniatures',
valueType: 'string',
makeLink: false,
externalLink: false,
sortValues: true,
numberedList: false,
minWidth: 150
},
{
id: 'decoratedInitials',
valueType: 'string',
makeLink: false,
externalLink: false,
sortValues: true,
numberedList: false,
minWidth: 170
},
{
id: 'historiatedInitials',
valueType: 'string',
makeLink: false,
externalLink: false,
sortValues: true,
numberedList: false,
minWidth: 170
},
{
id: 'source',
valueType: 'object',
makeLink: true,
externalLink: true,
sortValues: true,
numberedList: false,
minWidth: 250
}
]
}
const resultClasses = new Set([
'perspective1',
'productionTimespanLineChart'
])
const perspective1 = (state = INITIAL_STATE, action) => {
if (resultClasses.has(action.resultClass)) {
switch (action.type) {
case FETCH_RESULTS:
case FETCH_PAGINATED_RESULTS:
case FETCH_BY_URI:
return fetchResults(state)
case FETCH_RESULT_COUNT:
return fetchResultCount(state)
case FETCH_RESULTS_FAILED:
case FETCH_PAGINATED_RESULTS_FAILED:
return fetchResultsFailed(state)
case SORT_RESULTS:
return updateSortBy(state, action)
case UPDATE_RESULT_COUNT:
return updateResultCount(state, action)
case UPDATE_RESULTS:
return updateResults(state, action)
case UPDATE_PAGINATED_RESULTS:
return updatePaginatedResults(state, action)
case UPDATE_INSTANCE:
return updateInstance(state, action)
case UPDATE_PAGE:
return updatePage(state, action)
case UPDATE_ROWS_PER_PAGE:
return updateRowsPerPage(state, action)
case UPDATE_PERSPECTIVE_HEADER_EXPANDED:
return updateHeaderExpanded(state, action)
case UPDATE_URL:
return (state)
default:
return state
}
} else return state
}
export default perspective1