|
|
const moment = require("moment")
module.exports = class { onCreate() { this.state = { operation: "", links: [], parentLink: null, } }
onInput(input) { if (input.data) { this.refresh(input.data) } }
refresh(data) { this.state.links = [] this.state.operation = opText[data.op] this.state.parentLink = null
switch (data.model) { case "Channel": { const key = data.keys.find(k => k.id !== "*")
this.state.operation += " channel" this.state.links = [{ text: key.id, href: `/data/channels/`, }]
break }
case "Character": { const character = data.objects.find(o => o.type === "Character")
this.state.operation += " character" this.state.links = [{ text: `${character.name} (${character.id})`, href: `/data/characters/`, }]
break }
case "Story": { const key = data.keys.find(k => k.model === "Story" && k.id !== "*") const story = data.objects.find(o => o.type === "Story") this.state.operation += " story" this.state.links = [{ text: story.name, href: `/story/${key.id}`, }]
break }
case "Chapter": { const storyKey = data.keys.find(k => k.model === "Story") const chapterKey = data.keys.find(k => k.model === "Chapter") const chapter = data.objects.find(o => o.type === "Chapter") this.state.operation += " chapter" this.state.links = [{ text: (chapter||{}).title || `Untitled chapter (${(chapterKey||chapter).id})`, href: `/story/${storyKey.id}#${(chapterKey||chapter).id}`, }]
break }
case "Comment": { const storyKey = data.keys.find(k => k.model === "Story") || {} const chapterKey = data.keys.find(k => k.model === "Chapter") const chapter = data.objects.find(o => o.type === "Chapter") || {} const comment = data.objects.find(o => o.type === "Comment") || {} this.state.operation += ' ' + comment.characterName + " comment in chapter" this.state.links = [{ text: chapter.title || `ID (${chapterKey.id})`, href: `/story/${storyKey.id}#${chapterKey.id}`, }]
break }
case "Log": { const key = data.keys.find(k => k.id !== "*") this.state.operation += " log" this.state.links = [{ text: key.id, href: `/logs/${key.id}`, }]
break }
case "File": { const key = data.keys.find(k => k.id !== "*") const fileObj = data.objects.find(o => o.type === "File") || {name: key.id} this.state.operation += " file" this.state.links = [{ text: fileObj.name, href: `/data/files#${key.id}`, }]
break }
case "Post": { const logKey = data.keys.find(k => k.model === "Log") const postKeys = data.keys.filter(k => k.model === "Post") const postObjs = data.objects.filter(o => o.type === "Post") this.state.operation += (postKeys.length > 1) ? " posts" : " post" this.state.links = postObjs.map(po => ({ text: `[${moment(po.time).format("HH:mm")}] ${po.nick}`, href: `/logs/${logKey.id}#${po.id}`, })) this.state.parentLink = { prefix: "in log", text: `${logKey.id}`, href: `/logs/${logKey.id}`, }
break } } } }
const opText = { add: "added", remove: "removed", upload: "uploaded", move: "moved", edit: "edited", import: "imported", tag: "tagged", untag: "untagged", "move-in": "moved in", "move-out": "moved out", }
|