Skip to content
Snippets Groups Projects
Commit 89476a12 authored by esikkala's avatar esikkala
Browse files

Manuscripts table: refactor event list

parent 580d3dbc
No related branches found
No related tags found
No related merge requests found
...@@ -21,28 +21,35 @@ const styles = () => ({ ...@@ -21,28 +21,35 @@ const styles = () => ({
}); });
const ObjectList = props => { const ObjectList = props => {
const { makeLink, sortValues, numberedList } = props;
let { data } = props; const createBasicItem = (data, isArray) => {
if (data == null || data === '-'){ const firstValue = data;
return '-'; if (!props.makeLink) {
} return (
else if (Array.isArray(data)) { <span>
if (has(props, 'columnId') && props.columnId.endsWith('Timespan')) { {Array.isArray(firstValue.prefLabel) ?
data = sortValues firstValue.prefLabel[0]
? data.sort((a,b) => { : firstValue.prefLabel}
a = has(a, 'start') ? ISOStringToDate(a.start) : ISOStringToDate(a.end); {isArray && '...'}
b = has(b, 'start') ? ISOStringToDate(b.start) : ISOStringToDate(b.end); </span>
// arrange from the most recent to the oldest );
return a > b ? 1 : a < b ? -1 : 0;
})
: data;
} else { } else {
data = sortValues ? orderBy(data, 'prefLabel') : data; return (
<a
target='_blank' rel='noopener noreferrer'
href={firstValue.dataProviderUrl}
>
{Array.isArray(firstValue.prefLabel) ? firstValue.prefLabel[0] : firstValue.prefLabel}
{isArray && '...'}
</a>
);
} }
const firstValue = data[0]; };
const listItems = data.map((item, i) =>
const createBasicList = data => {
return data.map((item, i) =>
<li key={i}> <li key={i}>
{makeLink && {props.makeLink &&
<a <a
target='_blank' rel='noopener noreferrer' target='_blank' rel='noopener noreferrer'
href={item.dataProviderUrl} href={item.dataProviderUrl}
...@@ -50,51 +57,69 @@ const ObjectList = props => { ...@@ -50,51 +57,69 @@ const ObjectList = props => {
{Array.isArray(item.prefLabel) ? item.prefLabel[0] : item.prefLabel} {Array.isArray(item.prefLabel) ? item.prefLabel[0] : item.prefLabel}
</a> </a>
} }
{!makeLink && {!props.makeLink &&
<span>{Array.isArray(item.prefLabel) ? item.prefLabel[0] : item.prefLabel}</span> <span>{Array.isArray(item.prefLabel) ? item.prefLabel[0] : item.prefLabel}</span>
} }
</li> </li>
); );
if (numberedList) { };
return (
<ol className={props.classes.valueList}> const createEventList = data => {
{listItems} return data.map((item, i) =>
</ol> <li key={i}>
); {item.date == null ? <span className={props.classes.noDate}>No date</span> : item.date}
} else { {' '}
return ( <a
<React.Fragment> target='_blank' rel='noopener noreferrer'
{!props.expanded && !makeLink && href={item.dataProviderUrl}
<span>{Array.isArray(firstValue.prefLabel) ? firstValue.prefLabel[0] : firstValue.prefLabel} ...</span>} >
{!props.expanded && makeLink && {Array.isArray(item.prefLabel) ? item.prefLabel[0] : item.prefLabel}
<a </a>
target='_blank' rel='noopener noreferrer' </li>
href={firstValue.dataProviderUrl} );
> };
{Array.isArray(firstValue.prefLabel) ? firstValue.prefLabel[0] : firstValue.prefLabel} ...
</a> const { sortValues } = props;
} let { data } = props;
<Collapse in={props.expanded} timeout="auto" unmountOnExit> if (data == null || data === '-') {
<ul className={props.classes.valueList}> return '-';
{listItems} }
</ul> else if (Array.isArray(data)) {
</Collapse> let listItems = null;
</React.Fragment> let firstValue = null;
); if (has(props, 'columnId') && props.columnId.endsWith('Timespan')) {
data = sortValues
? data.sort((a,b) => {
a = has(a, 'start') ? ISOStringToDate(a.start) : ISOStringToDate(a.end);
b = has(b, 'start') ? ISOStringToDate(b.start) : ISOStringToDate(b.end);
// arrange from the most recent to the oldest
return a > b ? 1 : a < b ? -1 : 0;
})
: data;
listItems = createBasicList(data);
firstValue = createBasicItem(data[0], true);
} else if (props.columnId === 'event') {
data = sortValues ? orderBy(data, 'date') : data;
listItems = createEventList(data);
firstValue = createBasicItem(data[0], true);
}
else {
data = sortValues ? orderBy(data, 'prefLabel') : data;
listItems = createBasicList(data);
firstValue = createBasicItem(data[0], true);
} }
} else if (makeLink) {
return ( return (
<a <React.Fragment>
target='_blank' rel='noopener noreferrer' {!props.expanded && firstValue}
href={data.dataProviderUrl} <Collapse in={props.expanded} timeout="auto" unmountOnExit>
> <ul className={props.classes.valueList}>
{Array.isArray(data.prefLabel) ? data.prefLabel[0] : data.prefLabel} {listItems}
</a> </ul>
</Collapse>
</React.Fragment>
); );
} else { } else {
return ( return createBasicItem(data, false);
<span>{Array.isArray(data.prefLabel) ? data.prefLabel[0] : data.prefLabel}</span>
);
} }
}; };
......
...@@ -96,6 +96,18 @@ export const INITIAL_STATE = { ...@@ -96,6 +96,18 @@ export const INITIAL_STATE = {
numberedList: false, numberedList: false,
minWidth: 250, minWidth: 250,
}, },
{
id: 'event',
label: 'Event',
desc: `
Events related to the manuscript.
`,
valueType: 'object',
makeLink: true,
sortValues: true,
numberedList: false,
minWidth: 250,
},
{ {
id: 'language', id: 'language',
label: 'Language', label: 'Language',
...@@ -117,18 +129,7 @@ export const INITIAL_STATE = { ...@@ -117,18 +129,7 @@ export const INITIAL_STATE = {
// // sortValues: true // // sortValues: true
// // numberedList: false // // numberedList: false
// // }, // // },
{
id: 'event',
label: 'Event',
desc: `
Events related to the manuscript.
`,
valueType: 'object',
makeLink: true,
sortValues: true,
numberedList: false,
minWidth: 250,
},
{ {
id: 'owner', id: 'owner',
label: 'Owner', label: 'Owner',
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment