diff options
Diffstat (limited to 'animism-align/frontend/app/utils/annotation.utils.js')
| -rw-r--r-- | animism-align/frontend/app/utils/annotation.utils.js | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/animism-align/frontend/app/utils/annotation.utils.js b/animism-align/frontend/app/utils/annotation.utils.js index d76f473..b1f93d1 100644 --- a/animism-align/frontend/app/utils/annotation.utils.js +++ b/animism-align/frontend/app/utils/annotation.utils.js @@ -56,3 +56,40 @@ export const sectionProgress = (section, play_ts) => { export const sectionProgressPercentage = (section, play_ts) => { return (Math.round(sectionProgress(section, play_ts) * 2000) / 20) + '%' } + +export const makeMediaItems = (media, types) => { + const { lookup, order } = media + if (!(types instanceof Set)) { + types = new Set(types) + } + const listItems = order.filter(id => types.has(lookup[id].type)).map(id => { + const { title, author, type } = lookup[id] + return { + name: id, + label: '[' + type + '] ' + author + ' - ' + title + } + }).sort((a,b) => a.label.localeCompare(b.label)) + return listItems +} + +export const makeGalleryItems = (annotation, media) => { + if (!annotation.settings.media_id) return {} + if (!media.lookup[annotation.settings.media_id]) return {} + let thumbnail, frame_id + const item = media.lookup[annotation.settings.media_id] + if (item.type !== 'gallery') return {} + const gallery_items = item.settings.image_order.map((id, index) => { + const caption = item.settings.caption_lookup && item.settings.caption_lookup[id] + console.log(caption) + return { + name: index, + label: (index + 1) + ") " + (caption ? (caption.title || "") : "") + } + }) + if (annotation.settings.frame_index) { + frame_id = item.settings.image_order[annotation.settings.frame_index] + thumbnail = item.settings.thumbnail_lookup[frame_id] + } + return { item, gallery_items, frame_id, thumbnail } +} + |
