@collectionspace/cspace-public-browser
Version:
CollectionSpace public browser
627 lines (626 loc) • 21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _reactIntl = require("react-intl");
var _memoizeOne = _interopRequireDefault(require("memoize-one"));
var _formatHelpers = require("../helpers/formatHelpers");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
const defaultDepartmentLabels = {
antiquities: 'Antiquities',
'architecture-design': 'Architecture and Design',
'decorative-arts': 'Decorative Arts',
ethnography: 'Ethnography',
herpetology: 'Herpetology',
'media-performance-art': 'Media and Performance Art',
'paintings-sculpture': 'Paintings and Sculpture',
paleobotany: 'Paleobotany',
photographs: 'Photographs',
'prints-drawings': 'Prints and Drawings'
};
const getDepartmentLabels = (0, _memoizeOne.default)(() => {
// lazy importing to avoid circular dependency
// eslint-disable-next-line global-require
const config = require('./index').default;
const customLabels = config.get('departmentLabels');
if (customLabels) {
// Merge custom messages with defaults
return {
...defaultDepartmentLabels,
...customLabels
};
}
return defaultDepartmentLabels;
});
const formatDepartment = data => {
const departmentLabels = getDepartmentLabels();
const message = departmentLabels[data];
return message ?? data;
};
var _default = exports.default = {
basename: '',
container: '#cspace-browser',
gatewayUrl: 'http://localhost:8180/gateway/core',
locale: 'en-US',
detailPath: 'detail',
// Time in milliseconds to wait before fetching a search result image. If the search result is
// scrolled offscreen before the time elapses, the image is not loaded until the result is
// scrolled into view again. This applies only to pages of results after the first. Images for
// the first page are fetched immediately.
imageLoadDelay: 2000,
// Time in milliseconds to wait before fetching another page of search results, when the result
// list is scrolled to the bottom.
pageLoadDelay: 1000,
// The maximum number of results to automatically load while scrolling. Once this number of
// results has been retrieved, the user must click a button to load more results.
pageAutoLoadLimit: 80,
defaultQuery: {
term: {
'ecm:primaryType': 'CollectionObject'
}
},
fulltextSearchFields: ['all_field'],
includeFields: ['ecm:name', 'ecm:primaryType', 'collectionspace_denorm:mediaCsid', 'collectionspace_denorm:title'],
referenceField: 'ecm:name',
defaultSortOrder: 'bestmatch',
sortField: 'collectionspace_denorm:title',
storageKey: 'cspace-browser',
mediaSnapshotSort: {
title: 'asc'
},
searchResultImageDerivative: 'Small',
detailImageDerivative: 'Medium',
tileTitle: {
field: 'collectionspace_denorm:title',
formatValue: _formatHelpers.displayName
},
filterOrder: {
_term: 'asc'
},
filterSize: 300,
filters: {
fields: {
objectName: {
field: 'collectionspace_denorm:objectNameList.objectName',
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "filter.objectName.label",
"defaultMessage": "Name"
},
shortLabel: {
"id": "filter.objectName.shortLabel",
"defaultMessage": "Name"
}
})
},
objectProductionPerson: {
field: 'collectionobjects_common:objectProductionPersonGroupList.objectProductionPerson.displayName',
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "filter.objectProductionPerson.label",
"defaultMessage": "Production person"
},
shortLabel: {
"id": "filter.objectProductionPerson.shortLabel",
"defaultMessage": "Prod. person"
}
})
},
objectProductionOrganization: {
field: 'collectionobjects_common:objectProductionOrganizationGroupList.objectProductionOrganization.displayName',
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "filter.objectProductionOrganization.label",
"defaultMessage": "Production organization"
},
shortLabel: {
"id": "filter.objectProductionOrganization.shortLabel",
"defaultMessage": "Prod. organization"
}
})
},
objectProductionPeople: {
field: 'collectionobjects_common:objectProductionPeopleGroupList.objectProductionPeople',
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "filter.objectProductionPeople.label",
"defaultMessage": "Production people/culture"
},
shortLabel: {
"id": "filter.objectProductionPeople.shortLabel",
"defaultMessage": "Prod. people/culture"
}
})
},
prodYears: {
field: 'collectionspace_denorm:prodYears',
type: 'histogram',
interval: 10,
formatValue: _formatHelpers.decade,
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "filter.prodYears.label",
"defaultMessage": "Production date"
},
shortLabel: {
"id": "filter.prodYears.shortLabel",
"defaultMessage": "Prod. date"
}
})
},
objectProductionPlace: {
field: 'collectionobjects_common:objectProductionPlaceGroupList.objectProductionPlace',
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "filter.objectProductionPlace.label",
"defaultMessage": "Production place"
},
shortLabel: {
"id": "filter.objectProductionPlace.shortLabel",
"defaultMessage": "Prod. place"
}
})
},
material: {
field: 'collectionspace_denorm:materialGroupList.material',
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "filter.material.label",
"defaultMessage": "Material"
},
shortLabel: {
"id": "filter.material.shortLabel",
"defaultMessage": "Material"
}
})
},
color: {
field: 'collectionobjects_common:colors',
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "filter.color.label",
"defaultMessage": "Color"
},
shortLabel: {
"id": "filter.color.shortLabel",
"defaultMessage": "Color"
}
})
},
responsibleDepartment: {
field: 'collectionobjects_common:responsibleDepartments',
formatValue: formatDepartment,
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "filter.responsibleDepartment.label",
"defaultMessage": "Department"
},
shortLabel: {
"id": "filter.responsibleDepartment.shortLabel",
"defaultMessage": "Dept"
}
})
},
exhibitionTitle: {
field: 'collectionspace_denorm:exhibition.title',
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "filter.exhibitionTitle.label",
"defaultMessage": "Exhibition title"
},
shortLabel: {
"id": "filter.exhibitionTitle.shortLabel",
"defaultMessage": "Exhibition title"
}
})
},
subject: {
field: 'collectionspace_denorm:contentSubjectList.subject',
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "filter.subject.label",
"defaultMessage": "Subject"
},
shortLabel: {
"id": "filter.subject.shortLabel",
"defaultMessage": "Subject"
}
}),
order: {
_count: 'desc'
}
},
technique: {
field: 'collectionobjects_common:techniqueGroupList.technique',
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "filter.technique.label",
"defaultMessage": "Technique"
},
shortLabel: {
"id": "filter.technique.shortLabel",
"defaultMessage": "Technique"
}
})
},
hasMedia: {
field: 'collectionspace_denorm:hasMedia',
formatValue: _formatHelpers.boolean,
showSearch: false,
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "filter.hasMedia.label",
"defaultMessage": "Has image"
},
shortLabel: {
"id": "filter.hasMedia.shortLabel",
"defaultMessage": "Has image"
}
})
}
},
groups: {
group_id: {
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "filterGroup.group_id.label",
"defaultMessage": "Identification"
}
}),
fields: ['responsibleDepartment', 'objectName', 'exhibitionTitle']
},
group_media: {
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "filterGroup.group_media.label",
"defaultMessage": "Media"
}
}),
fields: ['hasMedia']
},
group_description: {
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "filterGroup.group_description.label",
"defaultMessage": "Description"
}
}),
fields: ['material', 'subject', 'color']
},
group_production: {
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "filterGroup.group_production.label",
"defaultMessage": "Production"
}
}),
fields: ['technique', 'objectProductionPerson', 'objectProductionOrganization', 'objectProductionPeople', 'objectProductionPlace', 'prodYears']
}
},
layout: {
filters1: ['group_id', 'group_media', 'group_description', 'group_production']
}
},
detailTitle: data => {
const {
'collectionobjects_common:titleGroupList': titleGroups
} = data;
if (titleGroups && titleGroups.length > 0) {
const {
title
} = titleGroups[0];
return title;
}
return undefined;
},
detailSubtitle: data => {
const {
'collectionspace_denorm:objectNameList': objectNameGroups
} = data;
if (objectNameGroups && objectNameGroups.length > 0) {
const {
objectName
} = objectNameGroups[0];
return objectName;
}
return undefined;
},
detailDescription: data => {
const {
'collectionobjects_common:briefDescriptions': briefDescriptions
} = data;
if (briefDescriptions && briefDescriptions.length > 0) {
return briefDescriptions.flatMap(desc => desc.split('\n'));
}
return [];
},
detailFields: {
fields: {
objectNumber: {
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "detailField.objectNumber.label",
"defaultMessage": "Number"
}
}),
field: 'collectionobjects_common:objectNumber'
},
objectName: {
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "detailField.objectName.label",
"defaultMessage": "Name"
}
}),
field: 'collectionspace_denorm:objectNameList',
format: (0, _formatHelpers.listOf)((0, _formatHelpers.valueAt)({
path: 'objectName',
format: (0, _formatHelpers.filterLink)({})
}))
},
responsibleDepartment: {
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "detailField.responsibleDepartment.label",
"defaultMessage": "Department"
}
}),
field: 'collectionobjects_common:responsibleDepartments',
format: (0, _formatHelpers.listOf)((0, _formatHelpers.filterLink)({
linkTextFormat: formatDepartment
}))
},
objectProductionPerson: {
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "detailField.objectProductionPerson.label",
"defaultMessage": "Person"
}
}),
field: 'collectionobjects_common:objectProductionPersonGroupList',
format: (0, _formatHelpers.listOf)((0, _formatHelpers.nameRole)({
nameFieldName: 'objectProductionPerson',
roleFieldName: 'objectProductionPersonRole'
}))
},
objectProductionOrganization: {
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "detailField.objectProductionOrganization.label",
"defaultMessage": "Organization"
}
}),
field: 'collectionobjects_common:objectProductionOrganizationGroupList',
format: (0, _formatHelpers.listOf)((0, _formatHelpers.nameRole)({
nameFieldName: 'objectProductionOrganization',
roleFieldName: 'objectProductionOrganizationRole'
}))
},
objectProductionPeople: {
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "detailField.objectProductionPeople.label",
"defaultMessage": "People/culture"
}
}),
field: 'collectionobjects_common:objectProductionPeopleGroupList',
format: (0, _formatHelpers.listOf)((0, _formatHelpers.nameRole)({
nameFieldName: 'objectProductionPeople',
roleFieldName: 'objectProductionPeopleRole'
}))
},
objectProductionPlace: {
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "detailField.objectProductionPlace.label",
"defaultMessage": "Place"
}
}),
field: 'collectionobjects_common:objectProductionPlaceGroupList',
format: (0, _formatHelpers.listOf)((0, _formatHelpers.nameRole)({
nameFieldName: 'objectProductionPlace',
roleFieldName: 'objectProductionPlaceRole'
}))
},
objectProductionDate: {
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "detailField.objectProductionDate.label",
"defaultMessage": "Date"
}
}),
field: 'collectionobjects_common:objectProductionDateGroupList',
format: (0, _formatHelpers.listOf)((0, _formatHelpers.valueAt)({
path: 'dateDisplayDate'
}))
},
material: {
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "detailField.material.label",
"defaultMessage": "Material"
}
}),
field: 'collectionspace_denorm:materialGroupList',
format: (0, _formatHelpers.listOf)((0, _formatHelpers.valueAt)({
path: 'material',
format: (0, _formatHelpers.filterLink)({})
}))
},
color: {
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "filter.color.label",
"defaultMessage": "Color"
}
}),
field: 'collectionobjects_common:colors',
format: _formatHelpers.inlineList
},
technique: {
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "detailField.technique.label",
"defaultMessage": "Technique"
}
}),
field: 'collectionobjects_common:techniqueGroupList',
format: (0, _formatHelpers.listOf)((0, _formatHelpers.nameRole)({
nameFieldName: 'technique',
roleFieldName: 'techniqueType'
}))
},
subject: {
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "detailField.subject.label",
"defaultMessage": "Subject"
}
}),
field: 'collectionspace_denorm:contentSubjectList',
format: (0, _formatHelpers.listOf)((0, _formatHelpers.valueAt)({
path: 'subject',
format: (0, _formatHelpers.filterLink)({})
}))
},
contentDescription: {
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "detailField.contentDescription.label",
"defaultMessage": "Content Description"
}
}),
field: 'collectionobjects_common:contentDescription',
format: (0, _formatHelpers.split)({
format: _formatHelpers.paragraphs
})
},
measuredPart: {
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "detailField.measuredPart.label",
"defaultMessage": "Dimensions"
}
}),
field: 'collectionobjects_common:measuredPartGroupList',
format: (0, _formatHelpers.listOf)((0, _formatHelpers.nameRole)({
nameFieldName: 'dimensionSummary',
roleFieldName: 'measuredPart',
linkName: false
}))
},
creditLine: {
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "detailField.creditLine.label",
"defaultMessage": "Credit"
}
}),
field: 'collectionspace_denorm:creditLine',
format: _formatHelpers.list
},
rightStatement: {
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "detailField.rightStatement.label",
"defaultMessage": "Right Statement"
}
}),
field: 'collectionobjects_common:rightsGroupList',
format: (0, _formatHelpers.listOf)((0, _formatHelpers.valueAt)({
path: 'rightStatement'
}))
},
standardizedRightStatement: {
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "detailField.standardizedRightStatement.label",
"defaultMessage": "Standardized Right Statement"
}
}),
field: 'collectionobjects_common:rightsGroupList',
format: (0, _formatHelpers.listOf)((0, _formatHelpers.valueAt)({
path: 'standardizedRightStatement',
format: _formatHelpers.displayName
}))
},
rightReproductionStatement: {
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "detailField.rightReproductionStatement.label",
"defaultMessage": "Right Reproduction Statement"
}
}),
field: 'collectionobjects_common:rightsInGroupList',
format: (0, _formatHelpers.listOf)((0, _formatHelpers.valueAt)({
path: 'rightReproductionStatement'
}))
},
relatedLinks: {
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "detailField.relatedLinks.label",
"defaultMessage": "Related Links"
}
}),
field: 'collectionobjects_common:publishedRelatedLinkGroupList',
format: (0, _formatHelpers.listOf)((0, _formatHelpers.linkText)({
urlFieldName: 'relatedLink',
textFieldName: 'descriptiveTitle',
type: 'external'
}))
}
},
groups: {
group_id: {
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "detailGroup.group_id.label",
"defaultMessage": "Identification"
}
}),
fields: ['objectNumber', 'objectName', 'responsibleDepartment']
},
group_description: {
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "detailGroup.group_description.label",
"defaultMessage": "Description"
}
}),
fields: ['material', 'technique', 'subject', 'contentDescription', 'measuredPart', 'creditLine']
},
group_production: {
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "detailGroup.group_production.label",
"defaultMessage": "Production"
}
}),
fields: ['objectProductionPerson', 'objectProductionOrganization', 'objectProductionPeople', 'objectProductionPlace', 'objectProductionDate']
},
group_rights: {
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "detailGroup.group_rights.label",
"defaultMessage": "Rights"
}
}),
fields: ['rightStatement', 'standardizedRightStatement', 'rightReproductionStatement']
},
group_reference: {
messages: (0, _reactIntl.defineMessages)({
label: {
"id": "detailGroup.group_reference.label",
"defaultMessage": "Reference"
}
}),
fields: ['relatedLinks']
}
},
layout: {
fields1: ['group_id', 'group_description', 'group_production', 'group_rights', 'group_reference']
}
}
};