mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-05-05 06:16:05 +02:00
refactor: Avatar dialog (#1208)
This commit is contained in:
@@ -1,323 +0,0 @@
|
||||
mixin avatarDialog
|
||||
el-dialog.x-dialog.x-avatar-dialog(
|
||||
:before-close='beforeDialogClose'
|
||||
@mousedown.native='dialogMouseDown'
|
||||
@mouseup.native='dialogMouseUp'
|
||||
ref='avatarDialog'
|
||||
:visible.sync='avatarDialog.visible'
|
||||
:show-close='false'
|
||||
width='600px')
|
||||
div(v-loading='avatarDialog.loading')
|
||||
div(style='display: flex')
|
||||
el-popover(placement='right' width='500px' trigger='click')
|
||||
img.x-link(
|
||||
slot='reference'
|
||||
v-lazy='avatarDialog.ref.thumbnailImageUrl'
|
||||
style='flex: none; width: 160px; height: 120px; border-radius: 12px')
|
||||
img.x-link(
|
||||
v-lazy='avatarDialog.ref.imageUrl'
|
||||
style='width: 500px; height: 375px'
|
||||
@click='showFullscreenImageDialog(avatarDialog.ref.imageUrl)')
|
||||
div(style='flex: 1; display: flex; align-items: center; margin-left: 15px')
|
||||
div(style='flex: 1')
|
||||
div
|
||||
span.dialog-title(v-text='avatarDialog.ref.name')
|
||||
div(style='margin-top: 5px')
|
||||
span.x-link.x-grey(
|
||||
v-text='avatarDialog.ref.authorName'
|
||||
@click='showUserDialog(avatarDialog.ref.authorId)'
|
||||
style='font-family: monospace')
|
||||
div
|
||||
el-tag(
|
||||
v-if='avatarDialog.ref.releaseStatus === "public"'
|
||||
type='success'
|
||||
effect='plain'
|
||||
size='mini'
|
||||
style='margin-right: 5px; margin-top: 5px') {{ $t('dialog.avatar.tags.public') }}
|
||||
el-tag(
|
||||
v-else
|
||||
type='danger'
|
||||
effect='plain'
|
||||
size='mini'
|
||||
style='margin-right: 5px; margin-top: 5px') {{ $t('dialog.avatar.tags.private') }}
|
||||
el-tag.x-tag-platform-pc(
|
||||
v-if='avatarDialog.isPC'
|
||||
type='info'
|
||||
effect='plain'
|
||||
size='mini'
|
||||
style='margin-right: 5px; margin-top: 5px') PC
|
||||
span.x-grey(
|
||||
v-if='avatarDialog.platformInfo.pc'
|
||||
style='margin-left: 5px; border-left: inherit; padding-left: 5px') {{ avatarDialog.platformInfo.pc.performanceRating }}
|
||||
span.x-grey(
|
||||
v-if='avatarDialog.bundleSizes["standalonewindows"]'
|
||||
style='margin-left: 5px; border-left: inherit; padding-left: 5px') {{ avatarDialog.bundleSizes['standalonewindows'].fileSize }}
|
||||
el-tag.x-tag-platform-quest(
|
||||
v-if='avatarDialog.isQuest'
|
||||
type='info'
|
||||
effect='plain'
|
||||
size='mini'
|
||||
style='margin-right: 5px; margin-top: 5px') Android
|
||||
span.x-grey(
|
||||
v-if='avatarDialog.platformInfo.android'
|
||||
style='margin-left: 5px; border-left: inherit; padding-left: 5px') {{ avatarDialog.platformInfo.android.performanceRating }}
|
||||
span.x-grey(
|
||||
v-if='avatarDialog.bundleSizes["android"]'
|
||||
style='margin-left: 5px; border-left: inherit; padding-left: 5px') {{ avatarDialog.bundleSizes['android'].fileSize }}
|
||||
el-tag.x-tag-platform-ios(
|
||||
v-if='avatarDialog.isIos'
|
||||
type='info'
|
||||
effect='plain'
|
||||
size='mini'
|
||||
style='margin-right: 5px; margin-top: 5px') iOS
|
||||
span.x-grey(
|
||||
v-if='avatarDialog.platformInfo.ios'
|
||||
style='margin-left: 5px; border-left: inherit; padding-left: 5px') {{ avatarDialog.platformInfo.ios.performanceRating }}
|
||||
span.x-grey(
|
||||
v-if='avatarDialog.bundleSizes["ios"]'
|
||||
style='margin-left: 5px; border-left: inherit; padding-left: 5px') {{ avatarDialog.bundleSizes['ios'].fileSize }}
|
||||
el-tag.x-link(
|
||||
v-if='avatarDialog.inCache'
|
||||
type='info'
|
||||
effect='plain'
|
||||
size='mini'
|
||||
@click='openFolderGeneric(avatarDialog.cachePath)'
|
||||
style='margin-right: 5px; margin-top: 5px')
|
||||
span(v-text='avatarDialog.cacheSize')
|
||||
| {{ $t('dialog.avatar.tags.cache') }}
|
||||
el-tag(
|
||||
v-if='avatarDialog.isQuestFallback'
|
||||
type='info'
|
||||
effect='plain'
|
||||
size='mini'
|
||||
style='margin-right: 5px; margin-top: 5px') {{ $t('dialog.avatar.tags.fallback') }}
|
||||
el-tag(
|
||||
v-if='avatarDialog.hasImposter'
|
||||
type='info'
|
||||
effect='plain'
|
||||
size='mini'
|
||||
style='margin-right: 5px; margin-top: 5px') {{ $t('dialog.avatar.tags.impostor') }}
|
||||
span.x-grey(
|
||||
v-if='avatarDialog.imposterVersion'
|
||||
style='margin-left: 5px; border-left: inherit; padding-left: 5px') v{{ avatarDialog.imposterVersion }}
|
||||
el-tag(
|
||||
v-if='avatarDialog.ref.unityPackageUrl'
|
||||
type='success'
|
||||
effect='plain'
|
||||
size='mini'
|
||||
style='margin-right: 5px; margin-top: 5px') {{ $t('dialog.avatar.tags.future_proofing') }}
|
||||
div
|
||||
template(v-for='tag in avatarDialog.ref.tags')
|
||||
el-tag(
|
||||
v-if='tag.startsWith("content_")'
|
||||
:key='tag'
|
||||
effect='plain'
|
||||
size='mini'
|
||||
style='margin-right: 5px; margin-top: 5px')
|
||||
template(v-if='tag === "content_horror"') {{ $t('dialog.avatar.tags.content_horror') }}
|
||||
template(v-else-if='tag === "content_gore"') {{ $t('dialog.avatar.tags.content_gore') }}
|
||||
template(v-else-if='tag === "content_violence"') {{ $t('dialog.avatar.tags.content_violence') }}
|
||||
template(v-else-if='tag === "content_adult"') {{ $t('dialog.avatar.tags.content_adult') }}
|
||||
template(v-else-if='tag === "content_sex"') {{ $t('dialog.avatar.tags.content_sex') }}
|
||||
template(v-else) {{ tag.replace('content_', '') }}
|
||||
div(style='margin-top: 5px')
|
||||
span(
|
||||
v-show='avatarDialog.ref.name !== avatarDialog.ref.description'
|
||||
v-text='avatarDialog.ref.description'
|
||||
style='font-size: 12px')
|
||||
div(style='flex: none; margin-left: 10px')
|
||||
el-tooltip(
|
||||
v-if='avatarDialog.inCache'
|
||||
placement='top'
|
||||
:content='$t("dialog.avatar.actions.delete_cache_tooltip")'
|
||||
:disabled='hideTooltips')
|
||||
el-button(
|
||||
icon='el-icon-delete'
|
||||
circle
|
||||
@click='deleteVRChatCache(avatarDialog.ref)'
|
||||
:disabled='isGameRunning && avatarDialog.cacheLocked')
|
||||
el-tooltip(
|
||||
v-if='avatarDialog.isFavorite'
|
||||
placement='top'
|
||||
:content='$t("dialog.avatar.actions.favorite_tooltip")'
|
||||
:disabled='hideTooltips')
|
||||
el-button(
|
||||
type='warning'
|
||||
icon='el-icon-star-on'
|
||||
circle
|
||||
@click='avatarDialogCommand("Add Favorite")'
|
||||
style='margin-left: 5px')
|
||||
el-tooltip(
|
||||
v-else
|
||||
placement='top'
|
||||
:content='$t("dialog.avatar.actions.favorite_tooltip")'
|
||||
:disabled='hideTooltips')
|
||||
el-button(
|
||||
type='default'
|
||||
icon='el-icon-star-off'
|
||||
circle
|
||||
@click='avatarDialogCommand("Add Favorite")'
|
||||
style='margin-left: 5px')
|
||||
el-tooltip(
|
||||
placement='top'
|
||||
:content='$t("dialog.avatar.actions.select")'
|
||||
:disabled='hideTooltips')
|
||||
el-button(
|
||||
type='default'
|
||||
icon='el-icon-check'
|
||||
circle
|
||||
:disabled='API.currentUser.currentAvatar === avatarDialog.id'
|
||||
@click='selectAvatar(avatarDialog.id)'
|
||||
style='margin-left: 5px')
|
||||
el-dropdown(
|
||||
trigger='click'
|
||||
@command='avatarDialogCommand'
|
||||
size='small'
|
||||
style='margin-left: 5px')
|
||||
el-button(:type='avatarDialog.isBlocked ? "danger" : "default"' icon='el-icon-more' circle)
|
||||
el-dropdown-menu(#default='dropdown')
|
||||
el-dropdown-item(icon='el-icon-refresh' command='Refresh') {{ $t('dialog.avatar.actions.refresh') }}
|
||||
el-dropdown-item(icon='el-icon-share' command='Share') {{ $t('dialog.avatar.actions.share') }}
|
||||
el-dropdown-item(
|
||||
v-if='avatarDialog.isBlocked'
|
||||
icon='el-icon-circle-check'
|
||||
command='Unblock Avatar'
|
||||
style='color: #f56c6c'
|
||||
divided) {{ $t('dialog.avatar.actions.unblock') }}
|
||||
el-dropdown-item(v-else icon='el-icon-circle-close' command='Block Avatar' divided) {{ $t('dialog.avatar.actions.block') }}
|
||||
el-dropdown-item(
|
||||
v-if='/quest/.test(avatarDialog.ref.tags)'
|
||||
icon='el-icon-check'
|
||||
command='Select Fallback Avatar') {{ $t('dialog.avatar.actions.select_fallback') }}
|
||||
el-dropdown-item(
|
||||
v-if='avatarDialog.ref.authorId !== API.currentUser.id'
|
||||
icon='el-icon-picture-outline'
|
||||
command='Previous Images') {{ $t('dialog.avatar.actions.show_previous_images') }}
|
||||
template(v-if='avatarDialog.ref.authorId === API.currentUser.id')
|
||||
el-dropdown-item(
|
||||
v-if='avatarDialog.ref.releaseStatus === "public"'
|
||||
icon='el-icon-user-solid'
|
||||
command='Make Private'
|
||||
divided) {{ $t('dialog.avatar.actions.make_private') }}
|
||||
el-dropdown-item(v-else icon='el-icon-user' command='Make Public' divided) {{ $t('dialog.avatar.actions.make_public') }}
|
||||
el-dropdown-item(icon='el-icon-edit' command='Rename') {{ $t('dialog.avatar.actions.rename') }}
|
||||
el-dropdown-item(icon='el-icon-edit' command='Change Description') {{ $t('dialog.avatar.actions.change_description') }}
|
||||
el-dropdown-item(icon='el-icon-edit' command='Change Content Tags') {{ $t('dialog.avatar.actions.change_content_tags') }}
|
||||
el-dropdown-item(icon='el-icon-picture-outline' command='Change Image') {{ $t('dialog.avatar.actions.change_image') }}
|
||||
el-dropdown-item(
|
||||
v-if='avatarDialog.ref.unityPackageUrl'
|
||||
icon='el-icon-download'
|
||||
command='Download Unity Package') {{ $t('dialog.avatar.actions.download_package') }}
|
||||
el-dropdown-item(
|
||||
v-if='avatarDialog.hasImposter'
|
||||
icon='el-icon-refresh'
|
||||
command='Regenerate Imposter'
|
||||
style='color: #f56c6c'
|
||||
divided) {{ $t('dialog.avatar.actions.regenerate_impostor') }}
|
||||
el-dropdown-item(
|
||||
v-if='avatarDialog.hasImposter'
|
||||
icon='el-icon-delete'
|
||||
command='Delete Imposter'
|
||||
style='color: #f56c6c') {{ $t('dialog.avatar.actions.delete_impostor') }}
|
||||
el-dropdown-item(v-else icon='el-icon-user' command='Create Imposter' divided) {{ $t('dialog.avatar.actions.create_impostor') }}
|
||||
el-dropdown-item(icon='el-icon-delete' command='Delete' style='color: #f56c6c') {{ $t('dialog.avatar.actions.delete') }}
|
||||
el-tabs
|
||||
el-tab-pane(:label='$t("dialog.avatar.info.header")')
|
||||
.x-friend-list
|
||||
.x-friend-item(style='width: 100%; cursor: default')
|
||||
.detail
|
||||
span.name(style='margin-bottom: 5px') {{ $t('dialog.avatar.info.memo') }}
|
||||
el-input.extra(
|
||||
v-model='avatarDialog.memo'
|
||||
@change='onAvatarMemoChange'
|
||||
size='mini'
|
||||
type='textarea'
|
||||
:rows='2'
|
||||
:autosize='{ minRows: 1, maxRows: 20 }'
|
||||
:placeholder='$t("dialog.avatar.info.memo_placeholder")'
|
||||
resize='none')
|
||||
.x-friend-item(style='width: 100%; cursor: default')
|
||||
.detail
|
||||
span.name {{ $t('dialog.avatar.info.id') }}
|
||||
span.extra {{ avatarDialog.id }}
|
||||
el-tooltip(
|
||||
placement='top'
|
||||
:content='$t("dialog.avatar.info.id_tooltip")'
|
||||
:disabled='hideTooltips')
|
||||
el-dropdown(
|
||||
trigger='click'
|
||||
@click.native.stop
|
||||
size='mini'
|
||||
style='margin-left: 5px')
|
||||
el-button(type='default' icon='el-icon-s-order' size='mini' circle)
|
||||
el-dropdown-menu(#default='dropdown')
|
||||
el-dropdown-item(@click.native='copyAvatarId(avatarDialog.id)') {{ $t('dialog.avatar.info.copy_id') }}
|
||||
el-dropdown-item(@click.native='copyAvatarUrl(avatarDialog.id)') {{ $t('dialog.avatar.info.copy_url') }}
|
||||
.x-friend-item(style='cursor: default')
|
||||
.detail
|
||||
span.name {{ $t('dialog.avatar.info.created_at') }}
|
||||
span.extra {{ avatarDialog.ref.created_at | formatDate('long') }}
|
||||
.x-friend-item(style='cursor: default')
|
||||
.detail
|
||||
span.name {{ $t('dialog.avatar.info.last_updated') }}
|
||||
span.extra(v-if='avatarDialog.lastUpdated') {{ avatarDialog.lastUpdated | formatDate('long') }}
|
||||
span.extra(v-else) {{ avatarDialog.ref.updated_at | formatDate('long') }}
|
||||
.x-friend-item(style='cursor: default')
|
||||
.detail
|
||||
span.name {{ $t('dialog.avatar.info.version') }}
|
||||
span.extra(v-if='avatarDialog.ref.version !== 0' v-text='avatarDialog.ref.version')
|
||||
span.extra(v-else) -
|
||||
.x-friend-item(style='cursor: default')
|
||||
.detail
|
||||
span.name {{ $t('dialog.avatar.info.time_spent') }}
|
||||
el-tooltip(
|
||||
v-if='!hideTooltips'
|
||||
placement='top'
|
||||
style='margin-left: 5px'
|
||||
:content='$t("dialog.world.info.accuracy_notice")')
|
||||
i.el-icon-warning
|
||||
span.extra(v-if='avatarDialog.timeSpent === 0') -
|
||||
span.extra(v-else) {{ timeToText(avatarDialog.timeSpent) }}
|
||||
.x-friend-item(style='width: 100%; cursor: default')
|
||||
.detail
|
||||
span.name {{ $t('dialog.avatar.info.platform') }}
|
||||
span.extra(v-if='avatarDialogPlatform' v-text='avatarDialogPlatform')
|
||||
span.extra(v-else) -
|
||||
el-tab-pane(:label='$t("dialog.avatar.json.header")')
|
||||
el-button(
|
||||
type='default'
|
||||
@click='refreshAvatarDialogTreeData()'
|
||||
size='mini'
|
||||
icon='el-icon-refresh'
|
||||
circle)
|
||||
el-tooltip(
|
||||
placement='top'
|
||||
:content='$t("dialog.avatar.json.file_analysis")'
|
||||
:disabled='hideTooltips')
|
||||
el-button(
|
||||
type='default'
|
||||
@click='getAvatarFileAnalysis'
|
||||
size='mini'
|
||||
icon='el-icon-s-data'
|
||||
circle
|
||||
style='margin-left: 5px')
|
||||
el-button(
|
||||
type='default'
|
||||
@click='downloadAndSaveJson(avatarDialog.id, avatarDialog.ref)'
|
||||
size='mini'
|
||||
icon='el-icon-download'
|
||||
circle
|
||||
style='margin-left: 5px')
|
||||
el-tree(
|
||||
v-if='Object.keys(avatarDialog.fileAnalysis).length > 0'
|
||||
:data='avatarDialog.fileAnalysis'
|
||||
style='margin-top: 5px; font-size: 12px')
|
||||
template(#default='scope')
|
||||
span
|
||||
span(v-text='scope.data.key' style='font-weight: bold; margin-right: 5px')
|
||||
span(v-if='!scope.data.children' v-text='scope.data.value')
|
||||
el-tree(:data='avatarDialog.treeData' style='margin-top: 5px; font-size: 12px')
|
||||
template(#default='scope')
|
||||
span
|
||||
span(v-text='scope.data.key' style='font-weight: bold; margin-right: 5px')
|
||||
span(v-if='!scope.data.children' v-text='scope.data.value')
|
||||
@@ -1,61 +0,0 @@
|
||||
mixin tags
|
||||
//- dialog: Set Avatar Tags
|
||||
el-dialog.x-dialog(
|
||||
:before-close='beforeDialogClose'
|
||||
@mousedown.native='dialogMouseDown'
|
||||
@mouseup.native='dialogMouseUp'
|
||||
ref='setAvatarTagsDialog'
|
||||
:visible.sync='setAvatarTagsDialog.visible'
|
||||
:title='$t("dialog.set_avatar_tags.header")'
|
||||
width='770px')
|
||||
template(v-if='setAvatarTagsDialog.visible')
|
||||
el-checkbox(v-model='setAvatarTagsDialog.contentHorror' @change='updateSelectedAvatarTags') {{ $t('dialog.set_avatar_tags.content_horror') }}
|
||||
br
|
||||
el-checkbox(v-model='setAvatarTagsDialog.contentGore' @change='updateSelectedAvatarTags') {{ $t('dialog.set_avatar_tags.content_gore') }}
|
||||
br
|
||||
el-checkbox(v-model='setAvatarTagsDialog.contentViolence' @change='updateSelectedAvatarTags') {{ $t('dialog.set_avatar_tags.content_violence') }}
|
||||
br
|
||||
el-checkbox(v-model='setAvatarTagsDialog.contentAdult' @change='updateSelectedAvatarTags') {{ $t('dialog.set_avatar_tags.content_adult') }}
|
||||
br
|
||||
el-checkbox(v-model='setAvatarTagsDialog.contentSex' @change='updateSelectedAvatarTags') {{ $t('dialog.set_avatar_tags.content_sex') }}
|
||||
br
|
||||
el-input(
|
||||
v-model='setAvatarTagsDialog.selectedTagsCsv'
|
||||
@input='updateInputAvatarTags'
|
||||
size='mini'
|
||||
:autosize='{ minRows: 2, maxRows: 5 }'
|
||||
:placeholder='$t("dialog.set_avatar_tags.custom_tags_placeholder")'
|
||||
style='margin-top: 10px')
|
||||
template(v-if='setAvatarTagsDialog.ownAvatars.length === setAvatarTagsDialog.selectedCount')
|
||||
el-button(size='small' @click='setAvatarTagsSelectToggle') {{ $t('dialog.set_avatar_tags.select_none') }}
|
||||
template(v-else)
|
||||
el-button(size='small' @click='setAvatarTagsSelectToggle') {{ $t('dialog.set_avatar_tags.select_all') }}
|
||||
span(style='margin-left: 5px') {{ setAvatarTagsDialog.selectedCount }} / {{ setAvatarTagsDialog.ownAvatars.length }}
|
||||
span(v-if='setAvatarTagsDialog.loading' style='margin-left: 5px')
|
||||
i.el-icon-loading
|
||||
br
|
||||
.x-friend-list(style='margin-top: 10px; min-height: 60px; max-height: 280px')
|
||||
.x-friend-item.x-friend-item-border(
|
||||
v-for='avatar in setAvatarTagsDialog.ownAvatars'
|
||||
:key='setAvatarTagsDialog.forceUpdate'
|
||||
@click='showAvatarDialog(avatar.id)'
|
||||
style='width: 350px')
|
||||
.avatar
|
||||
img(v-if='avatar.thumbnailImageUrl' v-lazy='avatar.thumbnailImageUrl')
|
||||
.detail
|
||||
span.name(v-text='avatar.name')
|
||||
span.extra(
|
||||
v-text='avatar.releaseStatus'
|
||||
v-if='avatar.releaseStatus === "public"'
|
||||
style='color: #67c23a')
|
||||
span.extra(
|
||||
v-text='avatar.releaseStatus'
|
||||
v-else-if='avatar.releaseStatus === "private"'
|
||||
style='color: #f56c6c')
|
||||
span.extra(v-text='avatar.releaseStatus' v-else)
|
||||
span.extra(v-text='avatar.$tagString')
|
||||
el-button(type='text' size='mini' @click.stop style='margin-left: 5px')
|
||||
el-checkbox(v-model='avatar.$selected' @change='updateAvatarTagsSelection')
|
||||
template(#footer)
|
||||
el-button(size='small' @click='setAvatarTagsDialog.visible = false') {{ $t('dialog.set_avatar_tags.cancel') }}
|
||||
el-button(type='primary' size='small' @click='saveSetAvatarTagsDialog') {{ $t('dialog.set_avatar_tags.save') }}
|
||||
Reference in New Issue
Block a user