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