refactor: dialogs (#1200)

This commit is contained in:
pa
2025-03-26 21:18:05 +09:00
committed by GitHub
parent c4bbb45403
commit 242bcfed22
31 changed files with 1694 additions and 1135 deletions
-100
View File
@@ -1,100 +0,0 @@
mixin favoritesDialog
//- dialog: favorite
el-dialog.x-dialog(
:before-close='beforeDialogClose'
@mousedown.native='dialogMouseDown'
@mouseup.native='dialogMouseUp'
ref='favoriteDialog'
:visible.sync='favoriteDialog.visible'
:title='$t("dialog.favorite.header")'
width='300px')
div(v-if='favoriteDialog.visible' v-loading='favoriteDialog.loading')
span(style='display: block; text-align: center') {{ $t('dialog.favorite.vrchat_favorites') }}
template(v-if='favoriteDialog.currentGroup && favoriteDialog.currentGroup.key')
el-button(
style='display: block; width: 100%; margin: 10px 0'
@click='deleteFavoriteNoConfirm(favoriteDialog.objectId)') #[i.el-icon-check] {{ favoriteDialog.currentGroup.displayName }} ({{ favoriteDialog.currentGroup.count }} / {{ favoriteDialog.currentGroup.capacity }})
template(v-else)
el-button(
v-for='group in favoriteDialog.groups'
:key='group.key'
style='display: block; width: 100%; margin: 10px 0'
@click='addFavorite(group)') {{ group.displayName }} ({{ group.count }} / {{ group.capacity }})
div(v-if='favoriteDialog.visible && favoriteDialog.type === "world"' style='margin-top: 20px')
span(style='display: block; text-align: center') {{ $t('dialog.favorite.local_favorites') }}
template(v-for='group in localWorldFavoriteGroups')
el-button(
v-if='hasLocalWorldFavorite(favoriteDialog.objectId, group)'
:key='group'
style='display: block; width: 100%; margin: 10px 0'
@click='removeLocalWorldFavorite(favoriteDialog.objectId, group)') #[i.el-icon-check] {{ group }} ({{ getLocalWorldFavoriteGroupLength(group) }})
el-button(
v-else
style='display: block; width: 100%; margin: 10px 0'
:key='group'
@click='addLocalWorldFavorite(favoriteDialog.objectId, group)') {{ group }} ({{ getLocalWorldFavoriteGroupLength(group) }})
div(v-if='favoriteDialog.visible && favoriteDialog.type === "avatar"' style='margin-top: 20px')
span(style='display: block; text-align: center') {{ $t('dialog.favorite.local_avatar_favorites') }}
template(v-for='group in localAvatarFavoriteGroups')
el-button(
v-if='hasLocalAvatarFavorite(favoriteDialog.objectId, group)'
:key='group'
style='display: block; width: 100%; margin: 10px 0'
@click='removeLocalAvatarFavorite(favoriteDialog.objectId, group)') #[i.el-icon-check] {{ group }} ({{ getLocalAvatarFavoriteGroupLength(group) }})
el-button(
v-else
:key='group'
style='display: block; width: 100%; margin: 10px 0'
:disabled='!isLocalUserVrcplusSupporter()'
@click='addLocalAvatarFavorite(favoriteDialog.objectId, group)') {{ group }} ({{ getLocalAvatarFavoriteGroupLength(group) }})
//- dialog: export friends list
el-dialog.x-dialog(
:before-close='beforeDialogClose'
@mousedown.native='dialogMouseDown'
@mouseup.native='dialogMouseUp'
:visible.sync='exportFriendsListDialog'
:title='$t("dialog.export_friends_list.header")'
width='650px')
el-tabs(type='card')
el-tab-pane(:label='$t("dialog.export_friends_list.csv")')
el-input(
type='textarea'
v-if='exportFriendsListDialog'
v-model='exportFriendsListCsv'
size='mini'
rows='15'
resize='none'
readonly
style='margin-top: 15px'
@click.native='$event.target.tagName === "TEXTAREA" && $event.target.select()')
el-tab-pane(:label='$t("dialog.export_friends_list.json")')
el-input(
type='textarea'
v-if='exportFriendsListDialog'
v-model='exportFriendsListJson'
size='mini'
rows='15'
resize='none'
readonly
style='margin-top: 15px'
@click.native='$event.target.tagName === "TEXTAREA" && $event.target.select()')
//- dialog: export avatars list
el-dialog.x-dialog(
:before-close='beforeDialogClose'
@mousedown.native='dialogMouseDown'
@mouseup.native='dialogMouseUp'
:visible.sync='exportAvatarsListDialog'
:title='$t("dialog.export_own_avatars.header")'
width='650px')
el-input(
type='textarea'
v-if='exportAvatarsListDialog'
v-model='exportAvatarsListCsv'
size='mini'
rows='15'
resize='none'
readonly
style='margin-top: 15px'
@click.native='$event.target.tagName === "TEXTAREA" && $event.target.select()')
-132
View File
@@ -1,132 +0,0 @@
mixin previousInstances
//- dialog Table: Previous Instances User
el-dialog.x-dialog(
:before-close='beforeDialogClose'
@mousedown.native='dialogMouseDown'
@mouseup.native='dialogMouseUp'
ref='previousInstancesUserDialog'
:visible.sync='previousInstancesUserDialog.visible'
:title='$t("dialog.previous_instances.header")'
width='1000px')
div(style='display: flex; align-items: center; justify-content: space-between')
span(v-text='previousInstancesUserDialog.userRef.displayName' style='font-size: 14px')
el-input(
v-model='previousInstancesUserDialogTable.filters[0].value'
:placeholder='$t("dialog.previous_instances.search_placeholder")'
style='display: block; width: 150px')
data-tables(
v-if='previousInstancesUserDialog.visible'
v-bind='previousInstancesUserDialogTable'
v-loading='previousInstancesUserDialog.loading'
style='margin-top: 10px')
el-table-column(:label='$t("table.previous_instances.date")' prop='created_at' sortable width='170')
template(#default='scope')
span {{ scope.row.created_at | formatDate('long') }}
el-table-column(:label='$t("table.previous_instances.world")' prop='name' sortable)
template(#default='scope')
location(
:location='scope.row.location'
:hint='scope.row.worldName'
:grouphint='scope.row.groupName')
el-table-column(:label='$t("table.previous_instances.instance_creator")' prop='location' width='170')
template(#default='scope')
display-name(
:userid='scope.row.$location.userId'
:location='scope.row.$location.tag'
:force-update-key='previousInstancesUserDialog.forceUpdate')
el-table-column(:label='$t("table.previous_instances.time")' prop='time' width='100' sortable)
template(#default='scope')
span(v-text='scope.row.timer')
el-table-column(:label='$t("table.previous_instances.action")' width='90' align='right')
template(#default='scope')
el-button(
type='text'
icon='el-icon-switch-button'
size='mini'
@click='showLaunchDialog(scope.row.location)')
el-button(
type='text'
icon='el-icon-s-data'
size='mini'
@click='showPreviousInstanceInfoDialog(scope.row.location)')
el-button(
v-if='shiftHeld'
style='color: #f56c6c'
type='text'
icon='el-icon-close'
size='mini'
@click='deleteGameLogUserInstance(scope.row)')
el-button(
v-else
type='text'
icon='el-icon-close'
size='mini'
@click='deleteGameLogUserInstancePrompt(scope.row)')
//- dialog Table: Previous Instances World
el-dialog.x-dialog(
:before-close='beforeDialogClose'
@mousedown.native='dialogMouseDown'
@mouseup.native='dialogMouseUp'
ref='previousInstancesWorldDialog'
:visible.sync='previousInstancesWorldDialog.visible'
:title='$t("dialog.previous_instances.header")'
width='1000px')
div(style='display: flex; align-items: center; justify-content: space-between')
span(v-text='previousInstancesWorldDialog.worldRef.name' style='font-size: 14px')
el-input(
v-model='previousInstancesWorldDialogTable.filters[0].value'
:placeholder='$t("dialog.previous_instances.search_placeholder")'
style='display: block; width: 150px')
data-tables(
v-if='previousInstancesWorldDialog.visible'
v-bind='previousInstancesWorldDialogTable'
v-loading='previousInstancesWorldDialog.loading'
style='margin-top: 10px')
el-table-column(:label='$t("table.previous_instances.date")' prop='created_at' sortable width='170')
template(#default='scope')
span {{ scope.row.created_at | formatDate('long') }}
el-table-column(:label='$t("table.previous_instances.instance_name")' prop='name')
template(#default='scope')
location-world(
:locationobject='scope.row.$location'
:grouphint='scope.row.groupName'
:currentuserid='API.currentUser.id'
@show-launch-dialog='showLaunchDialog')
el-table-column(:label='$t("table.previous_instances.instance_creator")' prop='location')
template(#default='scope')
display-name(
:userid='scope.row.$location.userId'
:location='scope.row.$location.tag'
:force-update-key='previousInstancesWorldDialog.forceUpdate')
el-table-column(:label='$t("table.previous_instances.time")' prop='time' width='100' sortable)
template(#default='scope')
span(v-text='scope.row.timer')
el-table-column(:label='$t("table.previous_instances.action")' width='90' align='right')
template(#default='scope')
el-button(
type='text'
icon='el-icon-s-data'
size='mini'
@click='showPreviousInstanceInfoDialog(scope.row.location)')
el-button(
v-if='shiftHeld'
style='color: #f56c6c'
type='text'
icon='el-icon-close'
size='mini'
@click='deleteGameLogWorldInstance(scope.row)')
el-button(
v-else
type='text'
icon='el-icon-close'
size='mini'
@click='deleteGameLogWorldInstancePrompt(scope.row)')
previous-instance-info-dialog(
:visible.sync='previousInstanceInfoDialogVisible'
:instance-id='previousInstanceInfoDialogInstanceId'
:game-log-is-friend='gameLogIsFriend'
:game-log-is-favorite='gameLogIsFavorite'
:lookup-user='lookupUser'
:is-dark-mode='isDarkMode')
-52
View File
@@ -1,56 +1,4 @@
mixin tags
//- dialog: Set World Tags
el-dialog.x-dialog(
:before-close='beforeDialogClose'
@mousedown.native='dialogMouseDown'
@mouseup.native='dialogMouseUp'
ref='setWorldTagsDialog'
:visible.sync='setWorldTagsDialog.visible'
:title='$t("dialog.set_world_tags.header")'
width='400px')
el-checkbox(v-model='setWorldTagsDialog.avatarScalingDisabled') {{ $t('dialog.set_world_tags.avatar_scaling_disabled') }}
br
el-checkbox(v-model='setWorldTagsDialog.focusViewDisabled') {{ $t('dialog.set_world_tags.focus_view_disabled') }}
br
el-checkbox(v-model='setWorldTagsDialog.debugAllowed') {{ $t('dialog.set_world_tags.enable_debugging') }}
div(style='font-size: 12px; margin-top: 10px')
| {{ $t('dialog.set_world_tags.author_tags') }} #[br]
el-input(
type='textarea'
v-model='setWorldTagsDialog.authorTags'
size='mini'
show-word-limit
:autosize='{ minRows: 2, maxRows: 5 }'
placeholder=''
style='margin-top: 10px')
div(style='font-size: 12px; margin-top: 10px')
| {{ $t('dialog.set_world_tags.content_tags') }} #[br]
el-checkbox(v-model='setWorldTagsDialog.contentHorror') {{ $t('dialog.set_world_tags.content_horror') }}
br
el-checkbox(v-model='setWorldTagsDialog.contentGore') {{ $t('dialog.set_world_tags.content_gore') }}
br
el-checkbox(v-model='setWorldTagsDialog.contentViolence') {{ $t('dialog.set_world_tags.content_violence') }}
br
el-checkbox(v-model='setWorldTagsDialog.contentAdult') {{ $t('dialog.set_world_tags.content_adult') }}
br
el-checkbox(v-model='setWorldTagsDialog.contentSex') {{ $t('dialog.set_world_tags.content_sex') }}
div(style='font-size: 12px; margin-top: 10px')
| {{ $t('dialog.set_world_tags.default_content_settings') }} #[br]
el-checkbox(v-model='setWorldTagsDialog.emoji') {{ $t('dialog.new_instance.content_emoji') }}
br
el-checkbox(v-model='setWorldTagsDialog.stickers') {{ $t('dialog.new_instance.content_stickers') }}
br
el-checkbox(v-model='setWorldTagsDialog.pedestals') {{ $t('dialog.new_instance.content_pedestals') }}
br
el-checkbox(v-model='setWorldTagsDialog.prints') {{ $t('dialog.new_instance.content_prints') }}
br
el-checkbox(v-model='setWorldTagsDialog.drones') {{ $t('dialog.new_instance.content_drones') }}
//- el-input(type="textarea" v-model="setWorldTagsDialog.contentTags" size="mini" show-word-limit :autosize="{ minRows:2, maxRows:5 }" placeholder="" style="margin-top:10px")
template(#footer)
div(style='display: flex')
el-button(size='small' @click='setWorldTagsDialog.visible = false') {{ $t('dialog.set_world_tags.cancel') }}
el-button(type='primary' size='small' @click='saveSetWorldTagsDialog') {{ $t('dialog.set_world_tags.save') }}
//- dialog: Set Avatar Tags
el-dialog.x-dialog(
:before-close='beforeDialogClose'
-44
View File
@@ -1,44 +0,0 @@
mixin worldDialog
world-dialog(
:world-dialog='worldDialog'
:hide-tooltips='hideTooltips'
:is-game-running='isGameRunning'
:last-location='lastLocation'
:instance-join-history='instanceJoinHistory'
:update-instance-info='updateInstanceInfo'
:is-age-gated-instances-visible='isAgeGatedInstancesVisible'
@open-folder-generic='openFolderGeneric'
@delete-vrchat-cache='deleteVRChatCache'
@world-dialog-command='worldDialogCommand'
@refresh-instance-player-count='refreshInstancePlayerCount'
@show-previous-instances-world-dialog='showPreviousInstancesWorldDialog'
@download-and-save-json='downloadAndSaveJson')
//- dialog: change Allowed Video Player Domains
el-dialog.x-dialog(
:before-close='beforeDialogClose'
@mousedown.native='dialogMouseDown'
@mouseup.native='dialogMouseUp'
ref='worldAllowedDomainsDialog'
:visible.sync='worldAllowedDomainsDialog.visible'
:title='$t("dialog.allowed_video_player_domains.header")'
width='600px')
div(v-loading='bioDialog.loading')
el-input(
v-for='(domain, index) in worldAllowedDomainsDialog.urlList'
:key='index'
:value='domain'
v-model='worldAllowedDomainsDialog.urlList[index]'
size='small'
style='margin-top: 5px')
el-button(
slot='append'
icon='el-icon-delete'
@click='worldAllowedDomainsDialog.urlList.splice(index, 1)')
el-button(@click='worldAllowedDomainsDialog.urlList.push("")' size='mini' style='margin-top: 5px') {{ $t('dialog.allowed_video_player_domains.add_domain') }}
template(#footer)
el-button(
type='primary'
size='small'
:disabled='!worldAllowedDomainsDialog.worldId'
@click='saveWorldAllowedDomains') {{ $t('dialog.allowed_video_player_domains.save') }}
+2 -2
View File
@@ -38,7 +38,7 @@ mixin gameLogTab
template(#default='scope')
el-tooltip(placement='right' :open-delay='500' :disabled='hideTooltips')
template(#content)
span {{ $t("view.game_log.filters." + scope.row.type) }}
span {{ $t('view.game_log.filters.' + scope.row.type) }}
span.x-link(
v-if='scope.row.location && scope.row.type !== "Location"'
v-text='$t("view.game_log.filters." + scope.row.type)'
@@ -115,4 +115,4 @@ mixin gameLogTab
type='text'
icon='el-icon-s-data'
size='mini'
@click='showPreviousInstanceInfoDialog(scope.row.location)')
@click='showPreviousInstancesInfoDialog(scope.row.location)')
+4 -11
View File
@@ -38,17 +38,10 @@ mixin notificationsTab
span {{ scope.row.created_at | formatDate('short') }}
el-table-column(:label='$t("table.notification.type")' prop='type' width='180')
template(#default='scope')
el-tooltip(v-if='scope.row.type === "invite"' placement='top')
template(#content)
location(
v-if='scope.row.details'
:location='scope.row.details.worldId'
:hint='scope.row.details.worldName'
:grouphint='scope.row.details.groupName'
:link='false')
span.x-link(
v-text='$t("view.notification.filters." + scope.row.type)'
@click='showWorldDialog(scope.row.details.worldId)')
span.x-link(
v-if='scope.row.type === "invite"'
v-text='$t("view.notification.filters." + scope.row.type)'
@click='showWorldDialog(scope.row.details.worldId)')
el-tooltip(
v-else-if='scope.row.type === "group.queueReady" || scope.row.type === "instance.closed"'
placement='top')