Skip to content
Snippets Groups Projects
manuscripts.js 3.29 KiB
import {
  FETCH_RESULTS,
  FETCH_RESULTS_FAILED,
  FETCH_PAGINATED_RESULTS,
  FETCH_PAGINATED_RESULTS_FAILED,
  FETCH_BY_URI,
  UPDATE_RESULTS,
  UPDATE_PAGINATED_RESULTS,
  UPDATE_INSTANCE,
  UPDATE_PAGE,
  SORT_RESULTS,
} from '../actions';
import {
  fetchResults,
  fetchResultsFailed,
  updateSortBy,
  updateResults,
  updatePaginatedResults,
  updateInstance,
  updatePage,
} from './helpers';

export const INITIAL_STATE = {
  results: [],
  paginatedResults: [],
  resultsCount: 0,
  resultsUpdateID: -1,
  instance: {},
  page: -1,
  pagesize: 5,
  sortBy: 'prefLabel',
  sortDirection: 'asc',
  fetching: false,
  tableColumns: [
    {
      id: 'prefLabel',
      label: 'Label',
      desc: 'Label description',
      valueType: 'string',
      makeLink: false,
      sortValues: true,
      numberedList: false
    },
    {
      id: 'author',
      label: 'Author',
      desc: 'Author description',
      valueType: 'object',
      makeLink: true,
      sortValues: true,
      numberedList: false,
      minWidth: 170
    },
    {
      id: 'productionPlace',
      label: 'Production place',
      desc: 'Production place description',
      valueType: 'object',
      makeLink: true,
      sortValues: true,
      numberedList: false,
      minWidth: 170,
    },
    {
      id: 'productionTimespan',
      label: 'Production date',
      desc: 'Production date description',
      valueType: 'object',
      makeLink: false,
      sortValues: true,
      numberedList: false
    },
    {
      id: 'language',
      label: 'Language',
      desc: 'Language description',
      valueType: 'string',
      makeLink: false,
      sortValues: true,
      numberedList: false
    },
    // {
    //   id: 'material',
    //   label: 'Material'
    //   desc: 'Material description'
    //   valueType: 'string',
    //   makeLink: true,
    //   sortValues: true
    //   numberedList: false
    // },
    {
      id: 'event',
      label: 'Event',
      desc: 'Event description',
      valueType: 'event',
      makeLink: true,
      sortValues: true,
      numberedList: false,
      minWidth: 170,
    },
    {
      id: 'owner',
      label: 'Owner',
      desc: 'Owner description',
      valueType: 'owner',
      makeLink: true,
      sortValues: true,
      numberedList: true,
      minWidth: 170
    },
    {
      id: 'source',
      label: 'Source',
      desc: 'Source description',
      valueType: 'object',
      makeLink: true,
      sortValues: true,
      numberedList: false
    },
  ],
};

const manuscripts = (state = INITIAL_STATE, action) => {
  if (action.resultClass === 'manuscripts') {
    switch (action.type) {
      case FETCH_RESULTS:
      case FETCH_PAGINATED_RESULTS:
      case FETCH_BY_URI:
        return fetchResults(state);
      case FETCH_RESULTS_FAILED:
      case FETCH_PAGINATED_RESULTS_FAILED:
        return fetchResultsFailed(state);
      case SORT_RESULTS:
        return updateSortBy(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);
      default:
        return state;
    }
  } else return state;
};

export default manuscripts;