UNPKG

@collectionspace/cspace-public-browser

Version:
627 lines (626 loc) 21 kB
"use strict"; 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'] } } };