summaryrefslogtreecommitdiff
path: root/animism-align/frontend/app/views/viewer/checklist/credits.components.js
diff options
context:
space:
mode:
Diffstat (limited to 'animism-align/frontend/app/views/viewer/checklist/credits.components.js')
-rw-r--r--animism-align/frontend/app/views/viewer/checklist/credits.components.js66
1 files changed, 28 insertions, 38 deletions
diff --git a/animism-align/frontend/app/views/viewer/checklist/credits.components.js b/animism-align/frontend/app/views/viewer/checklist/credits.components.js
index 6063843..de24639 100644
--- a/animism-align/frontend/app/views/viewer/checklist/credits.components.js
+++ b/animism-align/frontend/app/views/viewer/checklist/credits.components.js
@@ -1,10 +1,10 @@
import React from 'react'
import { connect } from 'react-redux'
import { Arrow } from '../nav/viewer.icons'
-import { parseCredits } from 'app/utils/viewer.utils'
+import { parseCredits, groupColumns } from 'app/utils/viewer.utils'
-const VenuesComponent = ({ venues }) => {
- // const [ open, setOpen ] = React.useState(-1)
+const VenuesList = ({ venues }) => {
+ const [ open, setOpen ] = React.useState(-1)
return (
<div className='site-credits'>
<div className='credits-title'>
@@ -14,6 +14,8 @@ const VenuesComponent = ({ venues }) => {
<CreditsVenue
key={id}
venue={venues.lookup[id]}
+ open={open}
+ setOpen={setOpen}
/>
))}
</div>
@@ -25,7 +27,7 @@ const mapStateToProps = state => ({
venues: state.venue.index,
})
-export const Venues = connect(mapStateToProps)(VenuesComponent)
+export const Venues = connect(mapStateToProps)(VenuesList)
export const CreditsColumns = ({ lines }) => {
const creditSections = parseCredits(lines)
@@ -50,13 +52,11 @@ export const CreditsColumns = ({ lines }) => {
)
}
-const CreditsVenue = ({ venue }) => {
- const [ open, setOpen ] = React.useState(-1)
+const CreditsVenue = ({ venue, open, setOpen }) => {
+ // const [ open, setOpen ] = React.useState(-1)
const isOpen = open === venue.id
- const curators = venue.settings.curator.trim().split('\n')
- const artists = venue.settings.artists.trim().split('\n')
- const publication_heading = venue.settings.publication_heading
- const publication = venue.settings.publication.trim().split('\n')
+ const artistGroups = groupColumns(venue.settings.artists.trim().split('\n'), 4)
+ const creditSections = parseCredits(venue.settings.credits)
return (
<div className={isOpen ? 'venue open' : 'venue'}>
<div className='venue-header' onClick={() => setOpen(isOpen ? -1 : venue.id)}>
@@ -67,44 +67,34 @@ const CreditsVenue = ({ venue }) => {
<Arrow type={isOpen ? 'up' : 'down'} />
</div>
{isOpen && (
- <div className='venue-info credits'>
- <div>
- <div className='credits-title'>
- {curators.length > 1 ? 'Curators' : 'Curator'}
- </div>
- <div className='credits-info'>
- {curators.map((line, i) => (
- <div key={i}>{line}</div>
- ))}
- </div>
+ <div className='venue-info'>
+ <div className='credits-title'>
+ Artists
</div>
-
- <div>
- <div className='credits-title'>
- Artists
- </div>
- <div className='credits-info'>
- {artists.map((line, i) => (
- <div key={i}>{line}</div>
- ))}
- </div>
+ <div className="credits">
+ {artistGroups.map((group, i) => (
+ <div className='credits-info' key={i}>
+ {group.map((line, j) => (
+ <div key={j}>{line}</div>
+ ))}
+ </div>
+ ))}
</div>
-
- {publication.length > 1 && (
- <div>
+ {creditSections.map(section => (
+ <div key={section.i}>
<div className='credits-title'>
- {publication_heading}
+ {section.title}
</div>
- <div className='credits-info'>
- {publication.map((line, i) => (
+ <div className='credits-info-wide'>
+ {section.lines.map((line, j) => (
<div
- key={i}
+ key={j}
dangerouslySetInnerHTML={{ __html: line || " " }}
/>
))}
</div>
</div>
- )}
+ ))}
</div>
)}
</div>