function getTagsValueRepr (val) { if (!val) { return '' } return val.slice().sort().join('\n') } export default { getConfigs () { return { artist: { label: this.$pgettext('*/*/*/Noun', 'Artist'), icon: 'users', getDeleteUrl: (obj) => { return `manage/library/artists/${obj.id}/` }, urls: { getDetail: (obj) => { return {name: 'library.artists.detail', params: {id: obj.id}}}, getAdminDetail: (obj) => { return {name: 'manage.library.artists.detail', params: {id: obj.id}}}, }, moderatedFields: [ { id: 'name', label: this.$pgettext('*/*/*/Noun', 'Name'), getValue: (obj) => { return obj.name } }, { id: 'creation_date', label: this.$pgettext('Content/*/*/Noun', 'Creation date'), getValue: (obj) => { return obj.creation_date } }, { id: 'tags', type: 'tags', label: this.$pgettext('*/*/*/Noun', 'Tags'), getValue: (obj) => { return obj.tags }, getValueRepr: getTagsValueRepr }, { id: 'mbid', label: this.$pgettext('*/*/*/Noun', 'MusicBrainz ID'), getValue: (obj) => { return obj.mbid } }, ] }, album: { label: this.$pgettext('*/*/*', 'Album'), icon: 'play', getDeleteUrl: (obj) => { return `manage/library/albums/${obj.id}/` }, urls: { getDetail: (obj) => { return {name: 'library.albums.detail', params: {id: obj.id}}}, getAdminDetail: (obj) => { return {name: 'manage.library.albums.detail', params: {id: obj.id}}} }, moderatedFields: [ { id: 'title', label: this.$pgettext('*/*/*/Noun', 'Title'), getValue: (obj) => { return obj.title } }, { id: 'creation_date', label: this.$pgettext('Content/*/*/Noun', 'Creation date'), getValue: (obj) => { return obj.creation_date } }, { id: 'release_date', label: this.$pgettext('Content/*/*/Noun', 'Release date'), getValue: (obj) => { return obj.release_date } }, { id: 'tags', type: 'tags', required: true, label: this.$pgettext('*/*/*/Noun', 'Tags'), getValue: (obj) => { return obj.tags }, getValueRepr: getTagsValueRepr }, { id: 'mbid', label: this.$pgettext('*/*/*/Noun', 'MusicBrainz ID'), getValue: (obj) => { return obj.mbid } }, ] }, track: { label: this.$pgettext('*/*/*/Noun', 'Track'), icon: 'music', getDeleteUrl: (obj) => { return `manage/library/tracks/${obj.id}/` }, urls: { getDetail: (obj) => { return {name: 'library.tracks.detail', params: {id: obj.id}}}, getAdminDetail: (obj) => { return {name: 'manage.library.tracks.detail', params: {id: obj.id}}} }, moderatedFields: [ { id: 'title', label: this.$pgettext('*/*/*/Noun', 'Title'), getValue: (obj) => { return obj.title } }, { id: 'position', label: this.$pgettext('*/*/*/Short, Noun', 'Position'), getValue: (obj) => { return obj.position } }, { id: 'copyright', label: this.$pgettext('Content/Track/*/Noun', 'Copyright'), getValue: (obj) => { return obj.copyright } }, { id: 'license', label: this.$pgettext('Content/*/*/Noun', 'License'), getValue: (obj) => { return obj.license }, }, { id: 'tags', label: this.$pgettext('*/*/*/Noun', 'Tags'), getValue: (obj) => { return obj.tags }, getValueRepr: getTagsValueRepr }, { id: 'mbid', label: this.$pgettext('*/*/*/Noun', 'MusicBrainz ID'), getValue: (obj) => { return obj.mbid } }, ] }, library: { label: this.$pgettext('*/*/*/Noun', 'Library'), icon: 'book', getDeleteUrl: (obj) => { return `manage/library/libraries/${obj.uuid}/` }, urls: { getAdminDetail: (obj) => { return {name: 'manage.library.libraries.detail', params: {id: obj.uuid}}} }, moderatedFields: [ { id: 'name', label: this.$pgettext('*/*/*/Noun', 'Name'), getValue: (obj) => { return obj.name } }, { id: 'description', label: this.$pgettext('*/*/*/Noun', 'Description'), getValue: (obj) => { return obj.position } }, { id: 'privacy_level', label: this.$pgettext('*/*/*', 'Visibility'), getValue: (obj) => { return obj.privacy_level } }, ] }, playlist: { label: this.$pgettext('*/*/*', 'Playlist'), icon: 'list', urls: { getDetail: (obj) => { return {name: 'library.playlists.detail', params: {id: obj.id}}}, // getAdminDetail: (obj) => { return {name: 'manage.playlists.detail', params: {id: obj.id}}} }, moderatedFields: [ { id: 'name', label: this.$pgettext('*/*/*/Noun', 'Name'), getValue: (obj) => { return obj.name } }, { id: 'privacy_level', label: this.$pgettext('*/*/*', 'Visibility'), getValue: (obj) => { return obj.privacy_level } }, ] }, account: { label: this.$pgettext('*/*/*/Noun', 'Account'), icon: 'user', urls: { getDetail: (obj) => { return {name: 'profile.full.overview', params: {username: obj.preferred_username, domain: obj.domain}}}, getAdminDetail: (obj) => { return {name: 'manage.moderation.accounts.detail', params: {id: `${obj.preferred_username}@${obj.domain}`}}} }, moderatedFields: [ { id: 'name', label: this.$pgettext('*/*/*/Noun', 'Name'), getValue: (obj) => { return obj.name } }, { id: 'summary', label: this.$pgettext('*/*/*/Noun', 'Bio'), getValue: (obj) => { return obj.summary } }, ] }, channel: { label: this.$pgettext('*/*/*', 'Channel'), icon: 'stream', urls: { getDetail: (obj) => { return {name: 'channels.detail', params: {id: obj.uuid}}}, getAdminDetail: (obj) => { return {name: 'manage.channels.detail', params: {id: obj.uuid}}} }, moderatedFields: [ { id: 'name', label: this.$pgettext('*/*/*/Noun', 'Name'), getValue: (obj) => { return obj.name } }, { id: 'creation_date', label: this.$pgettext('Content/*/*/Noun', 'Creation date'), getValue: (obj) => { return obj.creation_date } }, { id: 'tags', type: 'tags', label: this.$pgettext('*/*/*/Noun', 'Tags'), getValue: (obj) => { return obj.tags }, getValueRepr: getTagsValueRepr }, ] }, } }, getConfig () { return this.configs[this.objectType] }, getFieldConfig (configs, type, fieldId) { let c = configs[type] return c.fields.filter((f) => { return f.id == fieldId })[0] }, getCurrentStateForObj (obj, config) { let s = {} config.fields.forEach(f => { s[f.id] = {value: f.getValue(obj)} }) return s }, }