mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-05-05 06:16:05 +02:00
refactor: dialogs (#1224)
* refactor: dialogs * fix: storeAvatarImage * FriendLog.vue * FriendLog.vue * FriendLog.vue * GameLog.vue * fix: next day button jumping to the wrong date * sync master * fix: launchGame * Notification.vue * Feed.vue * Search.vue * Profile.vue * PlayerList.vue * Login.vue * utils * update dialog * del gameLog.pug * fix * fix: group role cannot be displayed currently * fix: "Hide Friends in Same Instance" hides players in unrelated private instances (#1210) * fix * fix: "Hide Friends in Same Instance" does not work when "Split Favorite Friends" is enabled * fix Notification.vue message * fix: deleteFavoriteNoConfirm * fix: feed status style * fix: infinite loading when deleting note * fix: private players will not be hidden when 'Hide Friends in Same Instance', and 'Hide Friends in Same Instance' will not work when 'Split Favorite Friends'
This commit is contained in:
@@ -1,195 +0,0 @@
|
||||
mixin feedTab
|
||||
.x-container(v-show='menuActiveIndex === "feed"')
|
||||
div(style='margin: 0 0 10px; display: flex; align-items: center')
|
||||
div(style='flex: none; margin-right: 10px; display: flex; align-items: center')
|
||||
el-tooltip(
|
||||
placement='bottom'
|
||||
:content='$t("view.feed.favorites_only_tooltip")'
|
||||
:disabled='hideTooltips')
|
||||
el-switch(v-model='feedTable.vip' @change='feedTableLookup' active-color='#13ce66')
|
||||
el-select(
|
||||
v-model='feedTable.filter'
|
||||
@change='feedTableLookup'
|
||||
multiple
|
||||
clearable
|
||||
style='flex: 1; height: 40px'
|
||||
:placeholder='$t("view.feed.filter_placeholder")')
|
||||
el-option(
|
||||
v-for='type in ["GPS", "Online", "Offline", "Status", "Avatar", "Bio"]'
|
||||
:key='type'
|
||||
:label='$t("view.feed.filters." + type)'
|
||||
:value='type')
|
||||
el-input(
|
||||
v-model='feedTable.search'
|
||||
:placeholder='$t("view.feed.search_placeholder")'
|
||||
@keyup.native.13='feedTableLookup'
|
||||
@change='feedTableLookup'
|
||||
clearable
|
||||
style='flex: none; width: 150px; margin: 0 10px')
|
||||
data-tables(v-bind='feedTable' v-loading='feedTable.loading' lazy)
|
||||
el-table-column(type='expand' width='20')
|
||||
template(#default='scope')
|
||||
div(style='position: relative; font-size: 14px')
|
||||
template(v-if='scope.row.type === "GPS"')
|
||||
location(
|
||||
v-if='scope.row.previousLocation'
|
||||
:location='scope.row.previousLocation'
|
||||
style='display: inline-block')
|
||||
el-tag(type='info' effect='plain' size='mini' style='margin-left: 5px') {{ timeToText(scope.row.time) }}
|
||||
br
|
||||
span(style='margin-right: 5px')
|
||||
i.el-icon-right
|
||||
location(
|
||||
v-if='scope.row.location'
|
||||
:location='scope.row.location'
|
||||
:hint='scope.row.worldName'
|
||||
:grouphint='scope.row.groupName')
|
||||
template(v-else-if='scope.row.type === "Offline"')
|
||||
template(v-if='scope.row.location')
|
||||
location(
|
||||
:location='scope.row.location'
|
||||
:hint='scope.row.worldName'
|
||||
:grouphint='scope.row.groupName')
|
||||
el-tag(type='info' effect='plain' size='mini' style='margin-left: 5px') {{ timeToText(scope.row.time) }}
|
||||
template(v-else-if='scope.row.type === "Online"')
|
||||
location(
|
||||
v-if='scope.row.location'
|
||||
:location='scope.row.location'
|
||||
:hint='scope.row.worldName'
|
||||
:grouphint='scope.row.groupName')
|
||||
template(v-else-if='scope.row.type === "Avatar"')
|
||||
div(style='display: flex; align-items: center')
|
||||
el-popover(placement='right' width='500px' trigger='click')
|
||||
div(
|
||||
slot='reference'
|
||||
style='display: inline-block; vertical-align: top; width: 160px')
|
||||
template(v-if='scope.row.previousCurrentAvatarThumbnailImageUrl')
|
||||
img.x-link(
|
||||
v-lazy='scope.row.previousCurrentAvatarThumbnailImageUrl'
|
||||
style='flex: none; width: 160px; height: 120px; border-radius: 4px')
|
||||
br
|
||||
avatar-info(
|
||||
:imageurl='scope.row.previousCurrentAvatarThumbnailImageUrl'
|
||||
:userid='scope.row.userId'
|
||||
:hintownerid='scope.row.previousOwnerId'
|
||||
:hintavatarname='scope.row.previousAvatarName'
|
||||
:avatartags='scope.row.previousCurrentAvatarTags')
|
||||
img.x-link(
|
||||
v-lazy='scope.row.previousCurrentAvatarImageUrl'
|
||||
style='width: 500px; height: 375px'
|
||||
@click='showFullscreenImageDialog(scope.row.previousCurrentAvatarImageUrl)')
|
||||
span(style='position: relative; margin: 0 10px')
|
||||
i.el-icon-right
|
||||
el-popover(placement='right' width='500px' trigger='click')
|
||||
div(
|
||||
slot='reference'
|
||||
style='display: inline-block; vertical-align: top; width: 160px')
|
||||
template(v-if='scope.row.currentAvatarThumbnailImageUrl')
|
||||
img.x-link(
|
||||
v-lazy='scope.row.currentAvatarThumbnailImageUrl'
|
||||
style='flex: none; width: 160px; height: 120px; border-radius: 4px')
|
||||
br
|
||||
avatar-info(
|
||||
:imageurl='scope.row.currentAvatarThumbnailImageUrl'
|
||||
:userid='scope.row.userId'
|
||||
:hintownerid='scope.row.ownerId'
|
||||
:hintavatarname='scope.row.avatarName'
|
||||
:avatartags='scope.row.currentAvatarTags')
|
||||
img.x-link(
|
||||
v-lazy='scope.row.currentAvatarImageUrl'
|
||||
style='width: 500px; height: 375px'
|
||||
@click='showFullscreenImageDialog(scope.row.currentAvatarImageUrl)')
|
||||
template(v-else-if='scope.row.type === "Status"')
|
||||
el-tooltip(placement='top')
|
||||
template(#content)
|
||||
span(v-if='scope.row.previousStatus === "active"') {{ $t('dialog.user.status.active') }}
|
||||
span(v-else-if='scope.row.previousStatus === "join me"') {{ $t('dialog.user.status.join_me') }}
|
||||
span(v-else-if='scope.row.previousStatus === "ask me"') {{ $t('dialog.user.status.ask_me') }}
|
||||
span(v-else-if='scope.row.previousStatus === "busy"') {{ $t('dialog.user.status.busy') }}
|
||||
span(v-else) {{ $t('dialog.user.status.offline') }}
|
||||
i.x-user-status(:class='statusClass(scope.row.previousStatus)')
|
||||
span(v-text='scope.row.previousStatusDescription' style='margin-left: 5px')
|
||||
br
|
||||
span
|
||||
i.el-icon-right
|
||||
el-tooltip(placement='top')
|
||||
template(#content)
|
||||
span(v-if='scope.row.status === "active"') {{ $t('dialog.user.status.active') }}
|
||||
span(v-else-if='scope.row.status === "join me"') {{ $t('dialog.user.status.join_me') }}
|
||||
span(v-else-if='scope.row.status === "ask me"') {{ $t('dialog.user.status.ask_me') }}
|
||||
span(v-else-if='scope.row.status === "busy"') {{ $t('dialog.user.status.busy') }}
|
||||
span(v-else) {{ $t('dialog.user.status.offline') }}
|
||||
i.x-user-status(:class='statusClass(scope.row.status)' style='margin: 0 5px')
|
||||
span(v-text='scope.row.statusDescription')
|
||||
template(v-else-if='scope.row.type === "Bio"')
|
||||
pre(
|
||||
v-html='formatDifference(scope.row.previousBio, scope.row.bio)'
|
||||
style='font-family: inherit; font-size: 12px; white-space: pre-wrap; line-height: 25px; line-height: 22px')
|
||||
el-table-column(:label='$t("table.feed.date")' prop='created_at' sortable='custom' width='120')
|
||||
template(#default='scope')
|
||||
el-tooltip(placement='right')
|
||||
template(#content)
|
||||
span {{ scope.row.created_at | formatDate('long') }}
|
||||
span {{ scope.row.created_at | formatDate('short') }}
|
||||
el-table-column(:label='$t("table.feed.type")' prop='type' width='80')
|
||||
template(#default='scope')
|
||||
span.x-link(v-text='$t("view.feed.filters." + scope.row.type)')
|
||||
el-table-column(:label='$t("table.feed.user")' prop='displayName' width='180')
|
||||
template(#default='scope')
|
||||
span.x-link(
|
||||
v-text='scope.row.displayName'
|
||||
@click='showUserDialog(scope.row.userId)'
|
||||
style='padding-right: 10px')
|
||||
el-table-column(:label='$t("table.feed.detail")')
|
||||
template(#default='scope')
|
||||
template(v-if='scope.row.type === "GPS"')
|
||||
location(
|
||||
v-if='scope.row.location'
|
||||
:location='scope.row.location'
|
||||
:hint='scope.row.worldName'
|
||||
:grouphint='scope.row.groupName')
|
||||
template(v-else-if='scope.row.type === "Offline" || scope.row.type === "Online"')
|
||||
location(
|
||||
v-if='scope.row.location'
|
||||
:location='scope.row.location'
|
||||
:hint='scope.row.worldName'
|
||||
:grouphint='scope.row.groupName')
|
||||
template(v-else-if='scope.row.type === "Status"')
|
||||
template(v-if='scope.row.statusDescription === scope.row.previousStatusDescription')
|
||||
el-tooltip(placement='top')
|
||||
template(#content)
|
||||
span(v-if='scope.row.previousStatus === "active"') {{ $t('dialog.user.status.active') }}
|
||||
span(v-else-if='scope.row.previousStatus === "join me"') {{ $t('dialog.user.status.join_me') }}
|
||||
span(v-else-if='scope.row.previousStatus === "ask me"') {{ $t('dialog.user.status.ask_me') }}
|
||||
span(v-else-if='scope.row.previousStatus === "busy"') {{ $t('dialog.user.status.busy') }}
|
||||
span(v-else) {{ $t('dialog.user.status.offline') }}
|
||||
i.x-user-status(:class='statusClass(scope.row.previousStatus)')
|
||||
span(style='margin: 0 5px')
|
||||
i.el-icon-right
|
||||
el-tooltip(placement='top')
|
||||
template(#content)
|
||||
span(v-if='scope.row.status === "active"') {{ $t('dialog.user.status.active') }}
|
||||
span(v-else-if='scope.row.status === "join me"') {{ $t('dialog.user.status.join_me') }}
|
||||
span(v-else-if='scope.row.status === "ask me"') {{ $t('dialog.user.status.ask_me') }}
|
||||
span(v-else-if='scope.row.status === "busy"') {{ $t('dialog.user.status.busy') }}
|
||||
span(v-else) {{ $t('dialog.user.status.offline') }}
|
||||
i.x-user-status(:class='statusClass(scope.row.status)')
|
||||
template(v-else)
|
||||
el-tooltip(placement='top')
|
||||
template(#content)
|
||||
span(v-if='scope.row.status === "active"') {{ $t('dialog.user.status.active') }}
|
||||
span(v-else-if='scope.row.status === "join me"') {{ $t('dialog.user.status.join_me') }}
|
||||
span(v-else-if='scope.row.status === "ask me"') {{ $t('dialog.user.status.ask_me') }}
|
||||
span(v-else-if='scope.row.status === "busy"') {{ $t('dialog.user.status.busy') }}
|
||||
span(v-else) {{ $t('dialog.user.status.offline') }}
|
||||
i.x-user-status(:class='statusClass(scope.row.status)' style='margin-right: 3px')
|
||||
span(v-text='scope.row.statusDescription')
|
||||
template(v-else-if='scope.row.type === "Avatar"')
|
||||
avatar-info(
|
||||
:imageurl='scope.row.currentAvatarImageUrl'
|
||||
:userid='scope.row.userId'
|
||||
:hintownerid='scope.row.ownerId'
|
||||
:hintavatarname='scope.row.avatarName'
|
||||
:avatartags='scope.row.currentAvatarTags')
|
||||
template(v-else-if='scope.row.type === "Bio"')
|
||||
span(v-text='scope.row.bio')
|
||||
@@ -1,54 +0,0 @@
|
||||
mixin friendLogTab
|
||||
.x-container(v-if='menuActiveIndex === "friendLog"')
|
||||
data-tables(v-bind='friendLogTable' ref='friendLogTableRef')
|
||||
template(#tool)
|
||||
div(style='margin: 0 0 10px; display: flex; align-items: center')
|
||||
el-select(
|
||||
v-model='friendLogTable.filters[0].value'
|
||||
@change='saveTableFilters'
|
||||
multiple
|
||||
clearable
|
||||
style='flex: 1'
|
||||
:placeholder='$t("view.friend_log.filter_placeholder")')
|
||||
el-option(
|
||||
v-for='type in ["Friend", "Unfriend", "FriendRequest", "CancelFriendRequest", "DisplayName", "TrustLevel"]'
|
||||
:key='type'
|
||||
:label='$t("view.friend_log.filters." + type)'
|
||||
:value='type')
|
||||
el-input(
|
||||
v-model='friendLogTable.filters[1].value'
|
||||
:placeholder='$t("view.friend_log.search_placeholder")'
|
||||
style='flex: none; width: 150px; margin-left: 10px')
|
||||
el-table-column(:label='$t("table.friendLog.date")' prop='created_at' sortable='custom' width='200')
|
||||
template(#default='scope')
|
||||
el-tooltip(placement='right')
|
||||
template(#content)
|
||||
span {{ scope.row.created_at | formatDate('long') }}
|
||||
span {{ scope.row.created_at | formatDate('short') }}
|
||||
el-table-column(:label='$t("table.friendLog.type")' prop='type' width='150')
|
||||
template(#default='scope')
|
||||
span(v-text='$t("view.friend_log.filters." + scope.row.type)')
|
||||
el-table-column(:label='$t("table.friendLog.user")' prop='displayName')
|
||||
template(#default='scope')
|
||||
span(v-if='scope.row.type === "DisplayName"') {{ scope.row.previousDisplayName }} #[i.el-icon-right]
|
||||
span.x-link(
|
||||
v-text='scope.row.displayName || scope.row.userId'
|
||||
@click='showUserDialog(scope.row.userId)'
|
||||
style='padding-right: 10px')
|
||||
template(v-if='scope.row.type === "TrustLevel"')
|
||||
span ({{ scope.row.previousTrustLevel }} #[i.el-icon-right] {{ scope.row.trustLevel }})
|
||||
el-table-column(:label='$t("table.friendLog.action")' width='80' align='right')
|
||||
template(#default='scope')
|
||||
el-button(
|
||||
v-if='shiftHeld'
|
||||
style='color: #f56c6c'
|
||||
type='text'
|
||||
icon='el-icon-close'
|
||||
size='mini'
|
||||
@click='deleteFriendLog(scope.row)')
|
||||
el-button(
|
||||
v-else
|
||||
type='text'
|
||||
icon='el-icon-delete'
|
||||
size='mini'
|
||||
@click='deleteFriendLogPrompt(scope.row)')
|
||||
@@ -1,118 +0,0 @@
|
||||
mixin gameLogTab
|
||||
.x-container(v-show='menuActiveIndex === "gameLog"')
|
||||
data-tables(v-bind='gameLogTable' v-loading='gameLogTable.loading')
|
||||
template(#tool)
|
||||
div(style='margin: 0 0 10px; display: flex; align-items: center')
|
||||
div(style='flex: none; margin-right: 10px; display: flex; align-items: center')
|
||||
el-tooltip(
|
||||
placement='bottom'
|
||||
:content='$t("view.feed.favorites_only_tooltip")'
|
||||
:disabled='hideTooltips')
|
||||
el-switch(v-model='gameLogTable.vip' @change='gameLogTableLookup' active-color='#13ce66')
|
||||
el-select(
|
||||
v-model='gameLogTable.filter'
|
||||
@change='gameLogTableLookup'
|
||||
multiple
|
||||
clearable
|
||||
style='flex: 1'
|
||||
:placeholder='$t("view.game_log.filter_placeholder")')
|
||||
el-option(
|
||||
v-for='type in ["Location", "OnPlayerJoined", "OnPlayerLeft", "VideoPlay", "Event", "External", "StringLoad", "ImageLoad"]'
|
||||
:key='type'
|
||||
:label='$t("view.game_log.filters." + type)'
|
||||
:value='type')
|
||||
el-input(
|
||||
v-model='gameLogTable.search'
|
||||
:placeholder='$t("view.game_log.search_placeholder")'
|
||||
@keyup.native.13='gameLogTableLookup'
|
||||
@change='gameLogTableLookup'
|
||||
clearable
|
||||
style='flex: none; width: 150px; margin: 0 10px')
|
||||
el-table-column(:label='$t("table.gameLog.date")' prop='created_at' sortable='custom' width='120')
|
||||
template(#default='scope')
|
||||
el-tooltip(placement='right')
|
||||
template(#content)
|
||||
span {{ scope.row.created_at | formatDate('long') }}
|
||||
span {{ scope.row.created_at | formatDate('short') }}
|
||||
el-table-column(:label='$t("table.gameLog.type")' prop='type' width='120')
|
||||
template(#default='scope')
|
||||
el-tooltip(placement='right' :open-delay='500' :disabled='hideTooltips')
|
||||
template(#content)
|
||||
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)'
|
||||
@click='showWorldDialog(scope.row.location)')
|
||||
span(v-else v-text='$t("view.game_log.filters." + scope.row.type)')
|
||||
el-table-column(:label='$t("table.gameLog.icon")' prop='isFriend' width='70' align='center')
|
||||
template(#default='scope')
|
||||
template(v-if='gameLogIsFriend(scope.row)')
|
||||
el-tooltip(v-if='gameLogIsFavorite(scope.row)' placement='top' content='Favorite')
|
||||
span ⭐
|
||||
el-tooltip(v-else placement='top' content='Friend')
|
||||
span 💚
|
||||
el-table-column(:label='$t("table.gameLog.user")' prop='displayName' width='180')
|
||||
template(#default='scope')
|
||||
span.x-link(
|
||||
v-if='scope.row.displayName'
|
||||
v-text='scope.row.displayName'
|
||||
@click='lookupUser(scope.row)'
|
||||
style='padding-right: 10px')
|
||||
el-table-column(:label='$t("table.gameLog.detail")' prop='data')
|
||||
template(#default='scope')
|
||||
location(
|
||||
v-if='scope.row.type === "Location"'
|
||||
:location='scope.row.location'
|
||||
:hint='scope.row.worldName'
|
||||
:grouphint='scope.row.groupName')
|
||||
location(
|
||||
v-else-if='scope.row.type === "PortalSpawn"'
|
||||
:location='scope.row.instanceId'
|
||||
:hint='scope.row.worldName'
|
||||
:grouphint='scope.row.groupName')
|
||||
template(v-else-if='scope.row.type === "Event"')
|
||||
span(v-text='scope.row.data')
|
||||
template(v-else-if='scope.row.type === "External"')
|
||||
span(v-text='scope.row.message')
|
||||
template(v-else-if='scope.row.type === "VideoPlay"')
|
||||
span(v-if='scope.row.videoId' style='margin-right: 5px') {{ scope.row.videoId }}:
|
||||
span(v-if='scope.row.videoId === "LSMedia"' v-text='scope.row.videoName')
|
||||
span.x-link(
|
||||
v-else-if='scope.row.videoName'
|
||||
@click='openExternalLink(scope.row.videoUrl)'
|
||||
v-text='scope.row.videoName')
|
||||
span.x-link(v-else @click='openExternalLink(scope.row.videoUrl)' v-text='scope.row.videoUrl')
|
||||
template(v-else-if='scope.row.type === "ImageLoad"')
|
||||
span.x-link(@click='openExternalLink(scope.row.resourceUrl)' v-text='scope.row.resourceUrl')
|
||||
template(v-else-if='scope.row.type === "StringLoad"')
|
||||
span.x-link(@click='openExternalLink(scope.row.resourceUrl)' v-text='scope.row.resourceUrl')
|
||||
template(
|
||||
v-else-if='scope.row.type === "Notification" || scope.row.type === "OnPlayerJoined" || scope.row.type === "OnPlayerLeft"')
|
||||
span.x-link(v-else v-text='scope.row.data')
|
||||
el-table-column(:label='$t("table.gameLog.action")' width='80' align='right')
|
||||
template(#default='scope')
|
||||
template(
|
||||
v-if='scope.row.type !== "OnPlayerJoined" && scope.row.type !== "OnPlayerLeft" && scope.row.type !== "Location" && scope.row.type !== "PortalSpawn"')
|
||||
el-button(
|
||||
v-if='shiftHeld'
|
||||
style='color: #f56c6c'
|
||||
type='text'
|
||||
icon='el-icon-close'
|
||||
size='mini'
|
||||
@click='deleteGameLogEntry(scope.row)')
|
||||
el-button(
|
||||
v-else
|
||||
type='text'
|
||||
icon='el-icon-delete'
|
||||
size='mini'
|
||||
@click='deleteGameLogEntryPrompt(scope.row)')
|
||||
el-tooltip(
|
||||
placement='top'
|
||||
:content='$t("dialog.previous_instances.info")'
|
||||
:disabled='hideTooltips')
|
||||
el-button(
|
||||
v-if='scope.row.type === "Location"'
|
||||
type='text'
|
||||
icon='el-icon-s-data'
|
||||
size='mini'
|
||||
@click='showPreviousInstancesInfoDialog(scope.row.location)')
|
||||
@@ -1,261 +0,0 @@
|
||||
mixin notificationsTab
|
||||
.x-container(v-if='menuActiveIndex === "notification"' v-loading='API.isNotificationsLoading')
|
||||
data-tables.notification-table(v-bind='notificationTable' ref='notificationTableRef')
|
||||
template(#tool)
|
||||
div(style='margin: 0 0 10px; display: flex; align-items: center')
|
||||
el-select(
|
||||
v-model='notificationTable.filters[0].value'
|
||||
@change='saveTableFilters'
|
||||
multiple
|
||||
clearable
|
||||
style='flex: 1'
|
||||
:placeholder='$t("view.notification.filter_placeholder")')
|
||||
el-option(
|
||||
v-for='type in ["requestInvite", "invite", "requestInviteResponse", "inviteResponse", "friendRequest", "ignoredFriendRequest", "message", "boop", "groupChange", "group.announcement", "group.informative", "group.invite", "group.joinRequest", "group.transfer", "group.queueReady", "moderation.warning.group", "moderation.report.closed", "instance.closed"]'
|
||||
:key='type'
|
||||
:label='$t("view.notification.filters." + type)'
|
||||
:value='type')
|
||||
el-input(
|
||||
v-model='notificationTable.filters[1].value'
|
||||
:placeholder='$t("view.notification.search_placeholder")'
|
||||
style='flex: none; width: 150px; margin: 0 10px')
|
||||
el-tooltip(
|
||||
placement='bottom'
|
||||
:content='$t("view.notification.refresh_tooltip")'
|
||||
:disabled='hideTooltips')
|
||||
el-button(
|
||||
type='default'
|
||||
:loading='API.isNotificationsLoading'
|
||||
@click='API.refreshNotifications()'
|
||||
icon='el-icon-refresh'
|
||||
circle
|
||||
style='flex: none')
|
||||
el-table-column(:label='$t("table.notification.date")' prop='created_at' sortable='custom' width='120')
|
||||
template(#default='scope')
|
||||
el-tooltip(placement='right')
|
||||
template(#content)
|
||||
span {{ scope.row.created_at | formatDate('long') }}
|
||||
span {{ scope.row.created_at | formatDate('short') }}
|
||||
el-table-column(:label='$t("table.notification.type")' prop='type' width='180')
|
||||
template(#default='scope')
|
||||
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')
|
||||
template(#content)
|
||||
location(
|
||||
v-if='scope.row.location'
|
||||
:location='scope.row.location'
|
||||
:hint='scope.row.worldName'
|
||||
:grouphint='scope.row.groupName'
|
||||
:link='false')
|
||||
span.x-link(
|
||||
v-text='$t("view.notification.filters." + scope.row.type)'
|
||||
@click='showWorldDialog(scope.row.location)')
|
||||
el-tooltip(
|
||||
v-else-if='scope.row.link'
|
||||
placement='top'
|
||||
:content='scope.row.linkText'
|
||||
:disabled='hideTooltips')
|
||||
span.x-link(
|
||||
v-text='$t("view.notification.filters." + scope.row.type)'
|
||||
@click='openNotificationLink(scope.row.link)')
|
||||
span(v-else v-text='$t("view.notification.filters." + scope.row.type)')
|
||||
el-table-column(:label='$t("table.notification.user_group")' prop='senderUsername' width='150')
|
||||
template(#default='scope')
|
||||
template(v-if='scope.row.type === "groupChange"')
|
||||
span.x-link(v-text='scope.row.senderUsername' @click='showGroupDialog(scope.row.senderUserId)')
|
||||
template(v-else-if='scope.row.senderUserId')
|
||||
span.x-link(v-text='scope.row.senderUsername' @click='showUserDialog(scope.row.senderUserId)')
|
||||
template(v-else-if='scope.row.link && scope.row.data?.groupName')
|
||||
span.x-link(v-text='scope.row.data?.groupName' @click='openNotificationLink(scope.row.link)')
|
||||
template(v-else-if='scope.row.link')
|
||||
span.x-link(v-text='scope.row.linkText' @click='openNotificationLink(scope.row.link)')
|
||||
el-table-column(:label='$t("table.notification.photo")' width='100' prop='photo')
|
||||
template(#default='scope')
|
||||
template(v-if='scope.row.details && scope.row.details.imageUrl')
|
||||
el-popover(placement='right' width='500px' trigger='click')
|
||||
img.x-link(
|
||||
slot='reference'
|
||||
:src='getSmallThumbnailUrl(scope.row.details.imageUrl)'
|
||||
style='flex: none; height: 50px; border-radius: 4px')
|
||||
img.x-link(
|
||||
v-lazy='scope.row.details.imageUrl'
|
||||
style='width: 500px'
|
||||
@click='showFullscreenImageDialog(scope.row.details.imageUrl)')
|
||||
template(v-else-if='scope.row.imageUrl')
|
||||
el-popover(placement='right' width='500px' trigger='click')
|
||||
img.x-link(
|
||||
slot='reference'
|
||||
:src='getSmallThumbnailUrl(scope.row.imageUrl)'
|
||||
style='flex: none; height: 50px; border-radius: 4px')
|
||||
img.x-link(
|
||||
v-lazy='scope.row.imageUrl'
|
||||
style='width: 500px'
|
||||
@click='showFullscreenImageDialog(scope.row.imageUrl)')
|
||||
el-table-column(:label='$t("table.notification.message")' prop='message')
|
||||
template(#default='scope')
|
||||
span.x-link(v-if='scope.row.type === "invite"' style='display: flex')
|
||||
location(
|
||||
v-if='scope.row.details'
|
||||
:location='scope.row.details.worldId'
|
||||
:hint='scope.row.details.worldName'
|
||||
:grouphint='scope.row.details.groupName'
|
||||
:link='true')
|
||||
br
|
||||
el-tooltip(
|
||||
v-if='scope.row.message && scope.row.message !== `This is a generated invite to ${scope.row.details?.worldName}`'
|
||||
placement='top')
|
||||
template(#content)
|
||||
pre.extra(
|
||||
style='display: inline-block; vertical-align: top; font-family: inherit; font-size: 12px; white-space: pre-wrap; margin: 0') {{ scope.row.message || '-' }}
|
||||
div(v-text='scope.row.message')
|
||||
span(
|
||||
v-else-if='scope.row.details && scope.row.details.inviteMessage'
|
||||
v-text='scope.row.details.inviteMessage')
|
||||
span(
|
||||
v-else-if='scope.row.details && scope.row.details.requestMessage'
|
||||
v-text='scope.row.details.requestMessage')
|
||||
span(
|
||||
v-else-if='scope.row.details && scope.row.details.responseMessage'
|
||||
v-text='scope.row.details.responseMessage')
|
||||
el-table-column(:label='$t("table.notification.action")' width='100' align='right')
|
||||
template(#default='scope')
|
||||
template(v-if='scope.row.senderUserId !== API.currentUser.id && !scope.row.$isExpired')
|
||||
template(v-if='scope.row.type === "friendRequest"')
|
||||
el-tooltip(placement='top' content='Accept' :disabled='hideTooltips')
|
||||
el-button(
|
||||
type='text'
|
||||
icon='el-icon-check'
|
||||
style='color: #67c23a'
|
||||
size='mini'
|
||||
@click='acceptFriendRequestNotification(scope.row)')
|
||||
template(v-else-if='scope.row.type === "invite"')
|
||||
el-tooltip(placement='top' content='Decline with message' :disabled='hideTooltips')
|
||||
el-button(
|
||||
type='text'
|
||||
icon='el-icon-chat-line-square'
|
||||
size='mini'
|
||||
@click='showSendInviteResponseDialog(scope.row)')
|
||||
template(v-else-if='scope.row.type === "requestInvite"')
|
||||
template(
|
||||
v-if='lastLocation.location && isGameRunning && checkCanInvite(lastLocation.location)')
|
||||
el-tooltip(placement='top' content='Invite' :disabled='hideTooltips')
|
||||
el-button(
|
||||
type='text'
|
||||
icon='el-icon-check'
|
||||
style='color: #67c23a'
|
||||
size='mini'
|
||||
@click='acceptRequestInvite(scope.row)')
|
||||
el-tooltip(placement='top' content='Decline with message' :disabled='hideTooltips')
|
||||
el-button(
|
||||
type='text'
|
||||
icon='el-icon-chat-line-square'
|
||||
size='mini'
|
||||
style='margin-left: 5px'
|
||||
@click='showSendInviteRequestResponseDialog(scope.row)')
|
||||
template(v-if='scope.row.responses')
|
||||
template(v-for='response in scope.row.responses')
|
||||
el-tooltip(placement='top' :content='response.text' :disabled='hideTooltips')
|
||||
el-button(
|
||||
v-if='response.icon === "check"'
|
||||
type='text'
|
||||
icon='el-icon-check'
|
||||
size='mini'
|
||||
style='margin-left: 5px'
|
||||
@click='sendNotificationResponse(scope.row.id, scope.row.responses, response.type)')
|
||||
el-button(
|
||||
v-else-if='response.icon === "cancel"'
|
||||
type='text'
|
||||
icon='el-icon-close'
|
||||
size='mini'
|
||||
style='margin-left: 5px'
|
||||
@click='sendNotificationResponse(scope.row.id, scope.row.responses, response.type)')
|
||||
el-button(
|
||||
v-else-if='response.icon === "ban"'
|
||||
type='text'
|
||||
icon='el-icon-circle-close'
|
||||
size='mini'
|
||||
style='margin-left: 5px'
|
||||
@click='sendNotificationResponse(scope.row.id, scope.row.responses, response.type)')
|
||||
el-button(
|
||||
v-else-if='response.icon === "bell-slash"'
|
||||
type='text'
|
||||
icon='el-icon-bell'
|
||||
size='mini'
|
||||
style='margin-left: 5px'
|
||||
@click='sendNotificationResponse(scope.row.id, scope.row.responses, response.type)')
|
||||
el-button(
|
||||
v-else-if='response.icon === "reply" && scope.row.type === "boop"'
|
||||
type='text'
|
||||
icon='el-icon-chat-line-square'
|
||||
size='mini'
|
||||
style='margin-left: 5px'
|
||||
@click='showSendBoopDialog(scope.row.senderUserId)')
|
||||
el-button(
|
||||
v-else-if='response.icon === "reply"'
|
||||
type='text'
|
||||
icon='el-icon-chat-line-square'
|
||||
size='mini'
|
||||
style='margin-left: 5px'
|
||||
@click='sendNotificationResponse(scope.row.id, scope.row.responses, response.type)')
|
||||
el-button(
|
||||
v-else
|
||||
type='text'
|
||||
icon='el-icon-collection-tag'
|
||||
size='mini'
|
||||
style='margin-left: 5px'
|
||||
@click='sendNotificationResponse(scope.row.id, scope.row.responses, response.type)')
|
||||
template(
|
||||
v-if='scope.row.type !== "requestInviteResponse" && scope.row.type !== "inviteResponse" && scope.row.type !== "message" && scope.row.type !== "boop" && scope.row.type !== "groupChange" && !scope.row.type.includes("group.") && !scope.row.type.includes("moderation.") && !scope.row.type.includes("instance.")')
|
||||
el-tooltip(placement='top' content='Decline' :disabled='hideTooltips')
|
||||
el-button(
|
||||
v-if='shiftHeld'
|
||||
style='color: #f56c6c; margin-left: 5px'
|
||||
type='text'
|
||||
icon='el-icon-close'
|
||||
size='mini'
|
||||
@click='hideNotification(scope.row)')
|
||||
el-button(
|
||||
v-else
|
||||
type='text'
|
||||
icon='el-icon-close'
|
||||
size='mini'
|
||||
style='margin-left: 5px'
|
||||
@click='hideNotificationPrompt(scope.row)')
|
||||
template(v-if='scope.row.type === "group.queueReady"')
|
||||
el-tooltip(placement='top' content='Delete log' :disabled='hideTooltips')
|
||||
el-button(
|
||||
v-if='shiftHeld'
|
||||
style='color: #f56c6c; margin-left: 5px'
|
||||
type='text'
|
||||
icon='el-icon-close'
|
||||
size='mini'
|
||||
@click='deleteNotificationLog(scope.row)')
|
||||
el-button(
|
||||
v-else
|
||||
type='text'
|
||||
icon='el-icon-delete'
|
||||
size='mini'
|
||||
style='margin-left: 5px'
|
||||
@click='deleteNotificationLogPrompt(scope.row)')
|
||||
template(
|
||||
v-if='scope.row.type !== "friendRequest" && scope.row.type !== "ignoredFriendRequest" && !scope.row.type.includes("group.") && !scope.row.type.includes("moderation.")')
|
||||
el-tooltip(placement='top' content='Delete log' :disabled='hideTooltips')
|
||||
el-button(
|
||||
v-if='shiftHeld'
|
||||
style='color: #f56c6c; margin-left: 5px'
|
||||
type='text'
|
||||
icon='el-icon-close'
|
||||
size='mini'
|
||||
@click='deleteNotificationLog(scope.row)')
|
||||
el-button(
|
||||
v-else
|
||||
type='text'
|
||||
icon='el-icon-delete'
|
||||
size='mini'
|
||||
style='margin-left: 5px'
|
||||
@click='deleteNotificationLogPrompt(scope.row)')
|
||||
@@ -1,479 +0,0 @@
|
||||
mixin playerListTab
|
||||
.x-container(v-show='menuActiveIndex === "playerList"' style='padding-top: 5px')
|
||||
div(style='display: flex; flex-direction: column; height: 100%')
|
||||
div(v-if='currentInstanceWorld.ref.id' style='display: flex')
|
||||
el-popover(placement='right' width='500px' trigger='click' style='height: 120px')
|
||||
img.x-link(
|
||||
slot='reference'
|
||||
v-lazy='currentInstanceWorld.ref.thumbnailImageUrl'
|
||||
style='flex: none; width: 160px; height: 120px; border-radius: 4px')
|
||||
img.x-link(
|
||||
v-lazy='currentInstanceWorld.ref.imageUrl'
|
||||
style='width: 500px; height: 375px'
|
||||
@click='showFullscreenImageDialog(currentInstanceWorld.ref.imageUrl)')
|
||||
div(style='margin-left: 10px; display: flex; flex-direction: column; min-width: 320px; width: 100%')
|
||||
div
|
||||
span.x-link(
|
||||
@click='showWorldDialog(currentInstanceWorld.ref.id)'
|
||||
style='font-weight: bold; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 1')
|
||||
| #[i.el-icon-s-home(v-show='API.currentUser.$homeLocation && API.currentUser.$homeLocation.worldId === currentInstanceWorld.ref.id' style='margin-right: 5px')] {{ currentInstanceWorld.ref.name }}
|
||||
div
|
||||
span.x-link.x-grey(
|
||||
v-text='currentInstanceWorld.ref.authorName'
|
||||
@click='showUserDialog(currentInstanceWorld.ref.authorId)'
|
||||
style='font-family: monospace')
|
||||
div(style='margin-top: 5px')
|
||||
el-tag(
|
||||
v-if='currentInstanceWorld.ref.$isLabs'
|
||||
type='primary'
|
||||
effect='plain'
|
||||
size='mini'
|
||||
style='margin-right: 5px') {{ $t('dialog.world.tags.labs') }}
|
||||
el-tag(
|
||||
v-else-if='currentInstanceWorld.ref.releaseStatus === "public"'
|
||||
type='success'
|
||||
effect='plain'
|
||||
size='mini'
|
||||
style='margin-right: 5px') {{ $t('dialog.world.tags.public') }}
|
||||
el-tag(
|
||||
v-else-if='currentInstanceWorld.ref.releaseStatus === "private"'
|
||||
type='danger'
|
||||
effect='plain'
|
||||
size='mini'
|
||||
style='margin-right: 5px') {{ $t('dialog.world.tags.private') }}
|
||||
el-tag.x-tag-platform-pc(
|
||||
v-if='currentInstanceWorld.isPC'
|
||||
type='info'
|
||||
effect='plain'
|
||||
size='mini'
|
||||
style='margin-right: 5px') PC
|
||||
span.x-grey(
|
||||
v-if='currentInstanceWorld.bundleSizes["standalonewindows"]'
|
||||
style='margin-left: 5px; border-left: inherit; padding-left: 5px') {{ currentInstanceWorld.bundleSizes['standalonewindows'].fileSize }}
|
||||
el-tag.x-tag-platform-quest(
|
||||
v-if='currentInstanceWorld.isQuest'
|
||||
type='info'
|
||||
effect='plain'
|
||||
size='mini'
|
||||
style='margin-right: 5px') Android
|
||||
span.x-grey(
|
||||
v-if='currentInstanceWorld.bundleSizes["android"]'
|
||||
style='margin-left: 5px; border-left: inherit; padding-left: 5px') {{ currentInstanceWorld.bundleSizes['android'].fileSize }}
|
||||
el-tag.x-tag-platform-ios(
|
||||
v-if='currentInstanceWorld.isIOS'
|
||||
type='info'
|
||||
effect='plain'
|
||||
size='mini'
|
||||
style='margin-right: 5px') iOS
|
||||
span.x-grey(
|
||||
v-if='currentInstanceWorld.bundleSizes["ios"]'
|
||||
style='margin-left: 5px; border-left: inherit; padding-left: 5px') {{ currentInstanceWorld.bundleSizes['ios'].fileSize }}
|
||||
el-tag(
|
||||
v-if='currentInstanceWorld.avatarScalingDisabled'
|
||||
type='warning'
|
||||
effect='plain'
|
||||
size='mini'
|
||||
style='margin-right: 5px; margin-top: 5px') {{ $t('dialog.world.tags.avatar_scaling_disabled') }}
|
||||
el-tag(
|
||||
v-if='currentInstanceWorld.inCache'
|
||||
type='info'
|
||||
effect='plain'
|
||||
size='mini'
|
||||
style='margin-right: 5px')
|
||||
span {{ currentInstanceWorld.cacheSize }} {{ $t('dialog.world.tags.cache') }}
|
||||
div(style='margin-top: 5px')
|
||||
location-world(
|
||||
:locationobject='currentInstanceLocation'
|
||||
:currentuserid='API.currentUser.id'
|
||||
@show-launch-dialog='showLaunchDialog')
|
||||
span(v-if='lastLocation.playerList.size > 0' style='margin-left: 5px')
|
||||
| {{ lastLocation.playerList.size }}
|
||||
| #[template(v-if='lastLocation.friendList.size > 0') ({{ lastLocation.friendList.size }})]
|
||||
| ― #[timer(v-if='lastLocation.date' :epoch='lastLocation.date')]
|
||||
div(style='margin-top: 5px')
|
||||
span(
|
||||
v-show='currentInstanceWorld.ref.name !== currentInstanceWorld.ref.description'
|
||||
v-text='currentInstanceWorld.ref.description'
|
||||
:style='{ fontSize: "12px", overflow: "hidden", textOverflow: "ellipsis", display: "-webkit-box", WebkitBoxOrient: "vertical", WebkitLineClamp: currentInstanceWorldDescriptionExpanded ? "none" : "2" }')
|
||||
div(style='display: flex; justify-content: end')
|
||||
el-button(
|
||||
v-if='currentInstanceWorld.ref.description.length > 50 && !currentInstanceWorldDescriptionExpanded'
|
||||
type='text'
|
||||
size='mini'
|
||||
@click='currentInstanceWorldDescriptionExpanded = true') {{ !currentInstanceWorldDescriptionExpanded && 'Show more' }}
|
||||
div(style='display: flex; flex-direction: column; margin-left: 20px')
|
||||
.x-friend-item(style='cursor: default')
|
||||
.detail
|
||||
span.name {{ $t('dialog.world.info.capacity') }}
|
||||
span.extra {{ currentInstanceWorld.ref.recommendedCapacity | commaNumber }} ({{ currentInstanceWorld.ref.capacity | commaNumber }})
|
||||
.x-friend-item(style='cursor: default')
|
||||
.detail
|
||||
span.name {{ $t('dialog.world.info.last_updated') }}
|
||||
span.extra {{ currentInstanceWorld.lastUpdated | formatDate('long') }}
|
||||
.x-friend-item(style='cursor: default')
|
||||
.detail
|
||||
span.name {{ $t('dialog.world.info.created_at') }}
|
||||
span.extra {{ currentInstanceWorld.ref.created_at | formatDate('long') }}
|
||||
.photon-event-table(v-if='photonLoggingEnabled')
|
||||
div(style='position: absolute; width: 600px; margin-left: 215px; z-index: 1')
|
||||
el-select(
|
||||
v-model='photonEventTableTypeFilter'
|
||||
@change='photonEventTableFilterChange'
|
||||
multiple
|
||||
clearable
|
||||
collapse-tags
|
||||
style='flex: 1; width: 220px'
|
||||
:placeholder='$t("view.player_list.photon.filter_placeholder")')
|
||||
el-option(
|
||||
v-for='type in photonEventTableTypeFilterList'
|
||||
:key='type'
|
||||
:label='type'
|
||||
:value='type')
|
||||
el-input(
|
||||
v-model='photonEventTableFilter'
|
||||
@input='photonEventTableFilterChange'
|
||||
:placeholder='$t("view.player_list.photon.search_placeholder")'
|
||||
clearable
|
||||
style='width: 150px; margin-left: 10px')
|
||||
el-button(@click='showChatboxBlacklistDialog' style='margin-left: 10px') {{ $t('view.player_list.photon.chatbox_blacklist') }}
|
||||
el-tooltip(
|
||||
placement='bottom'
|
||||
:content='$t("view.player_list.photon.status_tooltip")'
|
||||
:disabled='hideTooltips')
|
||||
div(
|
||||
style='display: inline-block; margin-left: 15px; font-size: 14px; vertical-align: text-top; margin-top: 1px')
|
||||
span(v-if='ipcEnabled && !photonEventIcon') 🟢
|
||||
span(v-else-if='ipcEnabled') ⚪
|
||||
span(v-else) 🔴
|
||||
el-tabs(type='card')
|
||||
el-tab-pane(:label='$t("view.player_list.photon.current")')
|
||||
data-tables(v-bind='photonEventTable' style='margin-bottom: 10px')
|
||||
el-table-column(:label='$t("table.playerList.date")' prop='created_at' width='120')
|
||||
template(#default='scope')
|
||||
el-tooltip(placement='right')
|
||||
template(#content)
|
||||
span {{ scope.row.created_at | formatDate('long') }}
|
||||
span {{ scope.row.created_at | formatDate('short') }}
|
||||
el-table-column(:label='$t("table.playerList.user")' prop='photonId' width='160')
|
||||
template(#default='scope')
|
||||
span.x-link(
|
||||
v-text='scope.row.displayName'
|
||||
@click='showUserFromPhotonId(scope.row.photonId)'
|
||||
style='padding-right: 10px')
|
||||
el-table-column(:label='$t("table.playerList.type")' prop='type' width='140')
|
||||
el-table-column(:label='$t("table.playerList.detail")' prop='text')
|
||||
template(#default='scope')
|
||||
template(v-if='scope.row.type === "ChangeAvatar"')
|
||||
span.x-link(
|
||||
v-text='scope.row.avatar.name'
|
||||
@click='showAvatarDialog(scope.row.avatar.id)')
|
||||
|
|
||||
span(v-if='!scope.row.inCache' style='color: #aaa') #[i.el-icon-download]
|
||||
span.avatar-info-public(v-if='scope.row.avatar.releaseStatus === "public"') {{ $t('dialog.avatar.labels.public') }}
|
||||
span.avatar-info-own(v-else-if='scope.row.avatar.releaseStatus === "private"') {{ $t('dialog.avatar.labels.private') }}
|
||||
template(
|
||||
v-if='scope.row.avatar.description && scope.row.avatar.name !== scope.row.avatar.description')
|
||||
|
|
||||
| - {{ scope.row.avatar.description }}
|
||||
template(v-else-if='scope.row.type === "ChangeStatus"')
|
||||
template(v-if='scope.row.status !== scope.row.previousStatus')
|
||||
el-tooltip(placement='top')
|
||||
template(#content)
|
||||
span(v-if='scope.row.previousStatus === "active"') {{ $t('dialog.user.status.active') }}
|
||||
span(v-else-if='scope.row.previousStatus === "join me"') {{ $t('dialog.user.status.join_me') }}
|
||||
span(v-else-if='scope.row.previousStatus === "ask me"') {{ $t('dialog.user.status.ask_me') }}
|
||||
span(v-else-if='scope.row.previousStatus === "busy"') {{ $t('dialog.user.status.busy') }}
|
||||
span(v-else) {{ $t('dialog.user.status.offline') }}
|
||||
i.x-user-status(:class='statusClass(scope.row.previousStatus)')
|
||||
span
|
||||
i.el-icon-right
|
||||
el-tooltip(placement='top')
|
||||
template(#content)
|
||||
span(v-if='scope.row.status === "active"') {{ $t('dialog.user.status.active') }}
|
||||
span(v-else-if='scope.row.status === "join me"') {{ $t('dialog.user.status.join_me') }}
|
||||
span(v-else-if='scope.row.status === "ask me"') {{ $t('dialog.user.status.ask_me') }}
|
||||
span(v-else-if='scope.row.status === "busy"') {{ $t('dialog.user.status.busy') }}
|
||||
span(v-else) {{ $t('dialog.user.status.offline') }}
|
||||
i.x-user-status(
|
||||
:class='statusClass(scope.row.status)'
|
||||
style='margin-right: 5px')
|
||||
span(
|
||||
v-if='scope.row.statusDescription !== scope.row.previousStatusDescription'
|
||||
v-text='scope.row.statusDescription')
|
||||
template(v-else-if='scope.row.type === "ChangeGroup"')
|
||||
span.x-link(
|
||||
v-if='scope.row.previousGroupName'
|
||||
v-text='scope.row.previousGroupName'
|
||||
@click='showGroupDialog(scope.row.previousGroupId)'
|
||||
style='margin-right: 5px')
|
||||
span.x-link(
|
||||
v-else
|
||||
v-text='scope.row.previousGroupId'
|
||||
@click='showGroupDialog(scope.row.previousGroupId)'
|
||||
style='margin-right: 5px')
|
||||
span
|
||||
i.el-icon-right
|
||||
span.x-link(
|
||||
v-if='scope.row.groupName'
|
||||
v-text='scope.row.groupName'
|
||||
@click='showGroupDialog(scope.row.groupId)'
|
||||
style='margin-left: 5px')
|
||||
span.x-link(
|
||||
v-else
|
||||
v-text='scope.row.groupId'
|
||||
@click='showGroupDialog(scope.row.groupId)'
|
||||
style='margin-left: 5px')
|
||||
span.x-link(
|
||||
v-else-if='scope.row.type === "PortalSpawn"'
|
||||
@click='showWorldDialog(scope.row.location, scope.row.shortName)')
|
||||
location(
|
||||
:location='scope.row.location'
|
||||
:hint='scope.row.worldName'
|
||||
:grouphint='scope.row.groupName'
|
||||
:link='false')
|
||||
span(v-else-if='scope.row.type === "ChatBoxMessage"' v-text='scope.row.text')
|
||||
span(v-else-if='scope.row.type === "OnPlayerJoined"')
|
||||
span(v-if='scope.row.platform === "Desktop"' style='color: #409eff') Desktop
|
||||
span(v-else-if='scope.row.platform === "VR"' style='color: #409eff') VR
|
||||
span(v-else-if='scope.row.platform === "Quest"' style='color: #67c23a') Android
|
||||
span.x-link(
|
||||
v-text='scope.row.avatar.name'
|
||||
@click='showAvatarDialog(scope.row.avatar.id)')
|
||||
|
|
||||
span(v-if='!scope.row.inCache' style='color: #aaa') #[i.el-icon-download]
|
||||
span.avatar-info-public(v-if='scope.row.avatar.releaseStatus === "public"') {{ $t('dialog.avatar.labels.public') }}
|
||||
span.avatar-info-own(v-else-if='scope.row.avatar.releaseStatus === "private"') {{ $t('dialog.avatar.labels.private') }}
|
||||
span(v-else-if='scope.row.type === "SpawnEmoji"')
|
||||
span(v-if='scope.row.imageUrl')
|
||||
el-tooltip(placement='right')
|
||||
template(#content)
|
||||
img.friends-list-avatar(
|
||||
v-lazy='scope.row.imageUrl'
|
||||
style='height: 500px; cursor: pointer'
|
||||
@click='showFullscreenImageDialog(scope.row.imageUrl)')
|
||||
span(v-text='scope.row.fileId')
|
||||
span(v-else v-text='scope.row.text')
|
||||
span(
|
||||
v-else-if='scope.row.color === "yellow"'
|
||||
v-text='scope.row.text'
|
||||
style='color: yellow')
|
||||
span(v-else v-text='scope.row.text')
|
||||
el-tab-pane(:label='$t("view.player_list.photon.previous")')
|
||||
data-tables(v-bind='photonEventTablePrevious' style='margin-bottom: 10px')
|
||||
el-table-column(:label='$t("table.playerList.date")' prop='created_at' width='120')
|
||||
template(#default='scope')
|
||||
el-tooltip(placement='right')
|
||||
template(#content)
|
||||
span {{ scope.row.created_at | formatDate('long') }}
|
||||
span {{ scope.row.created_at | formatDate('short') }}
|
||||
el-table-column(:label='$t("table.playerList.user")' prop='photonId' width='160')
|
||||
template(#default='scope')
|
||||
span.x-link(
|
||||
v-text='scope.row.displayName'
|
||||
@click='lookupUser(scope.row)'
|
||||
style='padding-right: 10px')
|
||||
el-table-column(:label='$t("table.playerList.type")' prop='type' width='140')
|
||||
el-table-column(:label='$t("table.playerList.detail")' prop='text')
|
||||
template(#default='scope')
|
||||
template(v-if='scope.row.type === "ChangeAvatar"')
|
||||
span.x-link(
|
||||
v-text='scope.row.avatar.name'
|
||||
@click='showAvatarDialog(scope.row.avatar.id)')
|
||||
|
|
||||
span(v-if='!scope.row.inCache' style='color: #aaa') #[i.el-icon-download]
|
||||
span.avatar-info-public(v-if='scope.row.avatar.releaseStatus === "public"') {{ $t('dialog.avatar.labels.public') }}
|
||||
span.avatar-info-own(v-else-if='scope.row.avatar.releaseStatus === "private"') {{ $t('dialog.avatar.labels.private') }}
|
||||
template(
|
||||
v-if='scope.row.avatar.description && scope.row.avatar.name !== scope.row.avatar.description')
|
||||
|
|
||||
| - {{ scope.row.avatar.description }}
|
||||
template(v-else-if='scope.row.type === "ChangeStatus"')
|
||||
template(v-if='scope.row.status !== scope.row.previousStatus')
|
||||
el-tooltip(placement='top')
|
||||
template(#content)
|
||||
span(v-if='scope.row.previousStatus === "active"') {{ $t('dialog.user.status.active') }}
|
||||
span(v-else-if='scope.row.previousStatus === "join me"') {{ $t('dialog.user.status.join_me') }}
|
||||
span(v-else-if='scope.row.previousStatus === "ask me"') {{ $t('dialog.user.status.ask_me') }}
|
||||
span(v-else-if='scope.row.previousStatus === "busy"') {{ $t('dialog.user.status.busy') }}
|
||||
span(v-else) {{ $t('dialog.user.status.offline') }}
|
||||
i.x-user-status(:class='statusClass(scope.row.previousStatus)')
|
||||
span
|
||||
i.el-icon-right
|
||||
el-tooltip(placement='top')
|
||||
template(#content)
|
||||
span(v-if='scope.row.status === "active"') {{ $t('dialog.user.status.active') }}
|
||||
span(v-else-if='scope.row.status === "join me"') {{ $t('dialog.user.status.join_me') }}
|
||||
span(v-else-if='scope.row.status === "ask me"') {{ $t('dialog.user.status.ask_me') }}
|
||||
span(v-else-if='scope.row.status === "busy"') {{ $t('dialog.user.status.busy') }}
|
||||
span(v-else) {{ $t('dialog.user.status.offline') }}
|
||||
i.x-user-status(
|
||||
:class='statusClass(scope.row.status)'
|
||||
style='margin-right: 5px')
|
||||
span(
|
||||
v-if='scope.row.statusDescription !== scope.row.previousStatusDescription'
|
||||
v-text='scope.row.statusDescription')
|
||||
template(v-else-if='scope.row.type === "ChangeGroup"')
|
||||
span.x-link(
|
||||
v-if='scope.row.previousGroupName'
|
||||
v-text='scope.row.previousGroupName'
|
||||
@click='showGroupDialog(scope.row.previousGroupId)'
|
||||
style='margin-right: 5px')
|
||||
span.x-link(
|
||||
v-else
|
||||
v-text='scope.row.previousGroupId'
|
||||
@click='showGroupDialog(scope.row.previousGroupId)'
|
||||
style='margin-right: 5px')
|
||||
span
|
||||
i.el-icon-right
|
||||
span.x-link(
|
||||
v-if='scope.row.groupName'
|
||||
v-text='scope.row.groupName'
|
||||
@click='showGroupDialog(scope.row.groupId)'
|
||||
style='margin-left: 5px')
|
||||
span.x-link(
|
||||
v-else
|
||||
v-text='scope.row.groupId'
|
||||
@click='showGroupDialog(scope.row.groupId)'
|
||||
style='margin-left: 5px')
|
||||
span.x-link(
|
||||
v-else-if='scope.row.type === "PortalSpawn"'
|
||||
@click='showWorldDialog(scope.row.location, scope.row.shortName)')
|
||||
location(
|
||||
:location='scope.row.location'
|
||||
:hint='scope.row.worldName'
|
||||
:grouphint='scope.row.groupName'
|
||||
:link='false')
|
||||
span(v-else-if='scope.row.type === "ChatBoxMessage"' v-text='scope.row.text')
|
||||
span(v-else-if='scope.row.type === "OnPlayerJoined"')
|
||||
span(v-if='scope.row.platform === "Desktop"' style='color: #409eff') Desktop
|
||||
span(v-else-if='scope.row.platform === "VR"' style='color: #409eff') VR
|
||||
span(v-else-if='scope.row.platform === "Quest"' style='color: #67c23a') Android
|
||||
span.x-link(
|
||||
v-text='scope.row.avatar.name'
|
||||
@click='showAvatarDialog(scope.row.avatar.id)')
|
||||
|
|
||||
span(v-if='!scope.row.inCache' style='color: #aaa') #[i.el-icon-download]
|
||||
span.avatar-info-public(v-if='scope.row.avatar.releaseStatus === "public"') {{ $t('dialog.avatar.labels.public') }}
|
||||
span.avatar-info-own(v-else-if='scope.row.avatar.releaseStatus === "private"') {{ $t('dialog.avatar.labels.private') }}
|
||||
span(v-else-if='scope.row.type === "SpawnEmoji"')
|
||||
span(v-if='scope.row.imageUrl')
|
||||
el-tooltip(placement='right')
|
||||
template(#content)
|
||||
img.friends-list-avatar(
|
||||
v-lazy='scope.row.imageUrl'
|
||||
style='height: 500px; cursor: pointer'
|
||||
@click='showFullscreenImageDialog(scope.row.imageUrl)')
|
||||
span(v-text='scope.row.fileId')
|
||||
span(v-else v-text='scope.row.text')
|
||||
span(
|
||||
v-else-if='scope.row.color === "yellow"'
|
||||
v-text='scope.row.text'
|
||||
style='color: yellow')
|
||||
span(v-else v-text='scope.row.text')
|
||||
.current-instance-table
|
||||
data-tables(
|
||||
v-bind='currentInstanceUserList'
|
||||
@row-click='selectCurrentInstanceRow'
|
||||
style='margin-top: 10px; cursor: pointer')
|
||||
el-table-column(:label='$t("table.playerList.avatar")' width='70' prop='photo')
|
||||
template(#default='scope')
|
||||
template(v-if='userImage(scope.row.ref)')
|
||||
el-popover(placement='right' height='500px' trigger='hover')
|
||||
img.friends-list-avatar(slot='reference' v-lazy='userImage(scope.row.ref)')
|
||||
img.friends-list-avatar(
|
||||
v-lazy='userImageFull(scope.row.ref)'
|
||||
style='height: 500px; cursor: pointer'
|
||||
@click='showFullscreenImageDialog(userImageFull(scope.row.ref))')
|
||||
el-table-column(:label='$t("table.playerList.timer")' width='80' prop='timer' sortable)
|
||||
template(#default='scope')
|
||||
timer(:epoch='scope.row.timer')
|
||||
el-table-column(
|
||||
v-if='photonLoggingEnabled'
|
||||
:label='$t("table.playerList.photonId")'
|
||||
width='110'
|
||||
prop='photonId'
|
||||
sortable)
|
||||
template(#default='scope')
|
||||
template(v-if='chatboxUserBlacklist.has(scope.row.ref.id)')
|
||||
el-tooltip(placement='left' content='Unblock chatbox messages')
|
||||
el-button(
|
||||
type='text'
|
||||
icon='el-icon-turn-off-microphone'
|
||||
size='mini'
|
||||
style='color: red; margin-right: 5px'
|
||||
@click.stop='deleteChatboxUserBlacklist(scope.row.ref.id)')
|
||||
template(v-else)
|
||||
el-tooltip(placement='left' content='Block chatbox messages')
|
||||
el-button(
|
||||
type='text'
|
||||
icon='el-icon-microphone'
|
||||
size='mini'
|
||||
style='margin-right: 5px'
|
||||
@click.stop='addChatboxUserBlacklist(scope.row.ref)')
|
||||
span(v-text='scope.row.photonId')
|
||||
el-table-column(:label='$t("table.playerList.icon")' prop='isMaster' width='70' align='center')
|
||||
template(#default='scope')
|
||||
el-tooltip(v-if='scope.row.isMaster' placement='left' content='Instance Master')
|
||||
span 👑
|
||||
el-tooltip(v-if='scope.row.isModerator' placement='left' content='Moderator')
|
||||
span ⚔️
|
||||
el-tooltip(v-if='scope.row.isFriend' placement='left' content='Friend')
|
||||
span 💚
|
||||
el-tooltip(v-if='scope.row.timeoutTime' placement='left' content='Timeout')
|
||||
span(style='color: red') 🔴{{ scope.row.timeoutTime }}s
|
||||
el-table-column(:label='$t("table.playerList.platform")' prop='inVRMode' width='80')
|
||||
template(#default='scope')
|
||||
template(v-if='scope.row.ref.last_platform')
|
||||
span(v-if='scope.row.ref.last_platform === "standalonewindows"' style='color: #409eff') PC
|
||||
span(v-else-if='scope.row.ref.last_platform === "android"' style='color: #67c23a') A
|
||||
span(v-else-if='scope.row.ref.last_platform === "ios"' style='color: #c7c7ce') iOS
|
||||
span(v-else) {{ scope.row.ref.last_platform }}
|
||||
template(v-if='scope.row.inVRMode !== null')
|
||||
span(v-if='scope.row.inVRMode') VR
|
||||
span(
|
||||
v-else-if='scope.row.ref.last_platform === "android" || scope.row.ref.last_platform === "ios"') M
|
||||
span(v-else) D
|
||||
el-table-column(
|
||||
:label='$t("table.playerList.displayName")'
|
||||
min-width='140'
|
||||
prop='displayName'
|
||||
sortable='custom')
|
||||
template(#default='scope')
|
||||
span(
|
||||
v-if='randomUserColours'
|
||||
v-text='scope.row.ref.displayName'
|
||||
:style='{ color: scope.row.ref.$userColour }')
|
||||
span(v-else v-text='scope.row.ref.displayName')
|
||||
el-table-column(:label='$t("table.playerList.status")' min-width='180' prop='ref.status')
|
||||
template(#default='scope')
|
||||
template(v-if='scope.row.ref.status')
|
||||
i.x-user-status(:class='statusClass(scope.row.ref.status)' style='margin-right: 3px')
|
||||
span(v-text='scope.row.ref.statusDescription')
|
||||
//- el-table-column(label="Group" min-width="180" prop="groupOnNameplate" sortable)
|
||||
//- template(v-once #default="scope")
|
||||
//- span(v-text="scope.row.groupOnNameplate")
|
||||
el-table-column(
|
||||
:label='$t("table.playerList.rank")'
|
||||
width='110'
|
||||
prop='$trustSortNum'
|
||||
sortable='custom')
|
||||
template(#default='scope')
|
||||
span.name(v-text='scope.row.ref.$trustLevel' :class='scope.row.ref.$trustClass')
|
||||
el-table-column(:label='$t("table.playerList.language")' width='100' prop='ref.$languages')
|
||||
template(#default='scope')
|
||||
el-tooltip(v-for='item in scope.row.ref.$languages' :key='item.key' placement='top')
|
||||
template(#content)
|
||||
span {{ item.value }} ({{ item.key }})
|
||||
span.flags(
|
||||
:class='languageClass(item.key)'
|
||||
style='display: inline-block; margin-right: 5px')
|
||||
el-table-column(:label='$t("table.playerList.bioLink")' width='100' prop='ref.bioLinks')
|
||||
template(#default='scope')
|
||||
div(style='display: flex; align-items: center')
|
||||
el-tooltip(v-if='link' v-for='(link, index) in scope.row.ref.bioLinks' :key='index')
|
||||
template(#content)
|
||||
span(v-text='link')
|
||||
img(
|
||||
:src='getFaviconUrl(link)'
|
||||
style='width: 16px; height: 16px; vertical-align: middle; margin-right: 5px; cursor: pointer'
|
||||
@click.stop='openExternalLink(link)')
|
||||
@@ -1,366 +0,0 @@
|
||||
mixin profileTab
|
||||
.x-container(v-if='menuActiveIndex === "profile"')
|
||||
.options-container(style='margin-top: 0')
|
||||
span.header {{ $t('view.profile.profile.header') }}
|
||||
.x-friend-list(style='margin-top: 10px')
|
||||
.x-friend-item(@click='showUserDialog(API.currentUser.id)')
|
||||
.avatar
|
||||
img(v-lazy='userImage(API.currentUser, true)')
|
||||
.detail
|
||||
span.name(v-text='API.currentUser.displayName')
|
||||
span.extra(v-text='API.currentUser.username')
|
||||
.x-friend-item(style='cursor: default')
|
||||
.detail
|
||||
span.name {{ $t('view.profile.profile.last_activity') }}
|
||||
span.extra {{ API.currentUser.last_activity | formatDate('long') }}
|
||||
.x-friend-item(style='cursor: default')
|
||||
.detail
|
||||
span.name {{ $t('view.profile.profile.two_factor') }}
|
||||
span.extra {{ API.currentUser.twoFactorAuthEnabled ? $t('view.profile.profile.two_factor_enabled') : $t('view.profile.profile.two_factor_disabled') }}
|
||||
.x-friend-item(@click='getVRChatCredits()')
|
||||
.detail
|
||||
span.name {{ $t('view.profile.profile.vrchat_credits') }}
|
||||
span.extra {{ API.currentUser.$vrchatcredits ?? $t('view.profile.profile.refresh') }}
|
||||
div(style='margin-top: 10px')
|
||||
el-button(
|
||||
size='small'
|
||||
type='danger'
|
||||
plain
|
||||
icon='el-icon-switch-button'
|
||||
@click='logout()'
|
||||
style='margin-left: 0; margin-right: 5px; margin-top: 10px') {{ $t('view.profile.profile.logout') }}
|
||||
el-button(
|
||||
size='small'
|
||||
icon='el-icon-picture-outline'
|
||||
@click='showGalleryDialog()'
|
||||
style='margin-left: 0; margin-right: 5px; margin-top: 10px') {{ $t('view.profile.profile.manage_gallery_icon') }}
|
||||
el-button(
|
||||
size='small'
|
||||
icon='el-icon-chat-dot-round'
|
||||
@click='showDiscordNamesDialog()'
|
||||
style='margin-left: 0; margin-right: 5px; margin-top: 10px') {{ $t('view.profile.profile.discord_names') }}
|
||||
el-button(
|
||||
size='small'
|
||||
icon='el-icon-printer'
|
||||
@click='showExportFriendsListDialog()'
|
||||
style='margin-left: 0; margin-right: 5px; margin-top: 10px') {{ $t('view.profile.profile.export_friend_list') }}
|
||||
el-button(
|
||||
size='small'
|
||||
icon='el-icon-user'
|
||||
@click='showExportAvatarsListDialog()'
|
||||
style='margin-left: 0; margin-right: 5px; margin-top: 10px') {{ $t('view.profile.profile.export_own_avatars') }}
|
||||
|
||||
.options-container
|
||||
span.header {{ $t('view.profile.game_info.header') }}
|
||||
.x-friend-list(style='margin-top: 10px')
|
||||
.x-friend-item
|
||||
.detail(@click='API.getVisits()')
|
||||
span.name {{ $t('view.profile.game_info.online_users') }}
|
||||
span.extra(v-if='visits') {{ $t('view.profile.game_info.user_online', { count: visits }) }}
|
||||
span.extra(v-else) {{ $t('view.profile.game_info.refresh') }}
|
||||
.options-container
|
||||
.header-bar
|
||||
span.header {{ $t('view.profile.vrc_sdk_downloads.header') }}
|
||||
el-tooltip(placement='top' :content='$t("view.profile.refresh_tooltip")' :disabled='hideTooltips')
|
||||
el-button(
|
||||
type='default'
|
||||
@click='API.getConfig()'
|
||||
size='mini'
|
||||
icon='el-icon-refresh'
|
||||
circle
|
||||
style='margin-left: 5px')
|
||||
.x-friend-list(style='margin-top: 10px')
|
||||
.x-friend-item(v-for='(link, item) in API.cachedConfig.downloadUrls' :key='item' placement='top')
|
||||
.detail(@click='openExternalLink(link)')
|
||||
span.name(v-text='item')
|
||||
span.extra(v-text='link')
|
||||
.options-container
|
||||
span.header {{ $t('view.profile.direct_access.header') }}
|
||||
div(style='margin-top: 10px')
|
||||
el-button-group
|
||||
el-button(size='small' @click='promptUsernameDialog()') {{ $t('view.profile.direct_access.username') }}
|
||||
el-button(size='small' @click='promptUserIdDialog()') {{ $t('view.profile.direct_access.user_id') }}
|
||||
el-button(size='small' @click='promptWorldDialog()') {{ $t('view.profile.direct_access.world_instance') }}
|
||||
el-button(size='small' @click='promptAvatarDialog()') {{ $t('view.profile.direct_access.avatar') }}
|
||||
.options-container
|
||||
.header-bar
|
||||
span.header {{ $t('view.profile.invite_messages') }}
|
||||
el-tooltip(placement='top' :content='$t("view.profile.refresh_tooltip")' :disabled='hideTooltips')
|
||||
el-button(
|
||||
type='default'
|
||||
@click='inviteMessageTable.visible = true; refreshInviteMessageTable("message")'
|
||||
size='mini'
|
||||
icon='el-icon-refresh'
|
||||
circle
|
||||
style='margin-left: 5px')
|
||||
el-tooltip(
|
||||
placement='top'
|
||||
:content='$t("view.profile.clear_results_tooltip")'
|
||||
:disabled='hideTooltips')
|
||||
el-button(
|
||||
type='default'
|
||||
@click='inviteMessageTable.visible = false'
|
||||
size='mini'
|
||||
icon='el-icon-delete'
|
||||
circle
|
||||
style='margin-left: 5px')
|
||||
data-tables(v-if='inviteMessageTable.visible' v-bind='inviteMessageTable' style='margin-top: 10px')
|
||||
el-table-column(
|
||||
:label='$t("table.profile.invite_messages.slot")'
|
||||
prop='slot'
|
||||
sortable='custom'
|
||||
width='70')
|
||||
el-table-column(:label='$t("table.profile.invite_messages.message")' prop='message')
|
||||
el-table-column(
|
||||
:label='$t("table.profile.invite_messages.cool_down")'
|
||||
prop='updatedAt'
|
||||
sortable='custom'
|
||||
width='110'
|
||||
align='right')
|
||||
template(#default='scope')
|
||||
countdown-timer(:datetime='scope.row.updatedAt' :hours='1')
|
||||
el-table-column(:label='$t("table.profile.invite_messages.action")' width='60' align='right')
|
||||
template(#default='scope')
|
||||
el-button(
|
||||
type='text'
|
||||
icon='el-icon-edit'
|
||||
size='mini'
|
||||
@click='showEditInviteMessageDialog("message", scope.row)')
|
||||
.options-container
|
||||
.header-bar
|
||||
span.header {{ $t('view.profile.invite_response_messages') }}
|
||||
el-tooltip(placement='top' :content='$t("view.profile.refresh_tooltip")' :disabled='hideTooltips')
|
||||
el-button(
|
||||
type='default'
|
||||
@click='inviteResponseMessageTable.visible = true; refreshInviteMessageTable("response")'
|
||||
size='mini'
|
||||
icon='el-icon-refresh'
|
||||
circle
|
||||
style='margin-left: 5px')
|
||||
el-tooltip(
|
||||
placement='top'
|
||||
:content='$t("view.profile.clear_results_tooltip")'
|
||||
:disabled='hideTooltips')
|
||||
el-button(
|
||||
type='default'
|
||||
@click='inviteResponseMessageTable.visible = false'
|
||||
size='mini'
|
||||
icon='el-icon-delete'
|
||||
circle
|
||||
style='margin-left: 5px')
|
||||
data-tables(
|
||||
v-if='inviteResponseMessageTable.visible'
|
||||
v-bind='inviteResponseMessageTable'
|
||||
style='margin-top: 10px')
|
||||
el-table-column(
|
||||
:label='$t("table.profile.invite_messages.slot")'
|
||||
prop='slot'
|
||||
sortable='custom'
|
||||
width='70')
|
||||
el-table-column(:label='$t("table.profile.invite_messages.message")' prop='message')
|
||||
el-table-column(
|
||||
:label='$t("table.profile.invite_messages.cool_down")'
|
||||
prop='updatedAt'
|
||||
sortable='custom'
|
||||
width='110'
|
||||
align='right')
|
||||
template(#default='scope')
|
||||
countdown-timer(:datetime='scope.row.updatedAt' :hours='1')
|
||||
el-table-column(:label='$t("table.profile.invite_messages.action")' width='60' align='right')
|
||||
template(#default='scope')
|
||||
el-button(
|
||||
type='text'
|
||||
icon='el-icon-edit'
|
||||
size='mini'
|
||||
@click='showEditInviteMessageDialog("response", scope.row)')
|
||||
.options-container
|
||||
.header-bar
|
||||
span.header {{ $t('view.profile.invite_request_messages') }}
|
||||
el-tooltip(placement='top' :content='$t("view.profile.refresh_tooltip")' :disabled='hideTooltips')
|
||||
el-button(
|
||||
type='default'
|
||||
@click='inviteRequestMessageTable.visible = true; refreshInviteMessageTable("request")'
|
||||
size='mini'
|
||||
icon='el-icon-refresh'
|
||||
circle
|
||||
style='margin-left: 5px')
|
||||
el-tooltip(
|
||||
placement='top'
|
||||
:content='$t("view.profile.clear_results_tooltip")'
|
||||
:disabled='hideTooltips')
|
||||
el-button(
|
||||
type='default'
|
||||
@click='inviteRequestMessageTable.visible = false'
|
||||
size='mini'
|
||||
icon='el-icon-delete'
|
||||
circle
|
||||
style='margin-left: 5px')
|
||||
data-tables(
|
||||
v-if='inviteRequestMessageTable.visible'
|
||||
v-bind='inviteRequestMessageTable'
|
||||
style='margin-top: 10px')
|
||||
el-table-column(
|
||||
:label='$t("table.profile.invite_messages.slot")'
|
||||
prop='slot'
|
||||
sortable='custom'
|
||||
width='70')
|
||||
el-table-column(:label='$t("table.profile.invite_messages.message")' prop='message')
|
||||
el-table-column(
|
||||
:label='$t("table.profile.invite_messages.cool_down")'
|
||||
prop='updatedAt'
|
||||
sortable='custom'
|
||||
width='110'
|
||||
align='right')
|
||||
template(#default='scope')
|
||||
countdown-timer(:datetime='scope.row.updatedAt' :hours='1')
|
||||
el-table-column(:label='$t("table.profile.invite_messages.action")' width='60' align='right')
|
||||
template(#default='scope')
|
||||
el-button(
|
||||
type='text'
|
||||
icon='el-icon-edit'
|
||||
size='mini'
|
||||
@click='showEditInviteMessageDialog("request", scope.row)')
|
||||
.options-container
|
||||
.header-bar
|
||||
span.header {{ $t('view.profile.invite_request_response_messages') }}
|
||||
el-tooltip(placement='top' :content='$t("view.profile.refresh_tooltip")' :disabled='hideTooltips')
|
||||
el-button(
|
||||
type='default'
|
||||
@click='inviteRequestResponseMessageTable.visible = true; refreshInviteMessageTable("requestResponse")'
|
||||
size='mini'
|
||||
icon='el-icon-refresh'
|
||||
circle
|
||||
style='margin-left: 5px')
|
||||
el-tooltip(
|
||||
placement='top'
|
||||
:content='$t("view.profile.clear_results_tooltip")'
|
||||
:disabled='hideTooltips')
|
||||
el-button(
|
||||
type='default'
|
||||
@click='inviteRequestResponseMessageTable.visible = false'
|
||||
size='mini'
|
||||
icon='el-icon-delete'
|
||||
circle
|
||||
style='margin-left: 5px')
|
||||
data-tables(
|
||||
v-if='inviteRequestResponseMessageTable.visible'
|
||||
v-bind='inviteRequestResponseMessageTable'
|
||||
style='margin-top: 10px')
|
||||
el-table-column(
|
||||
:label='$t("table.profile.invite_messages.slot")'
|
||||
prop='slot'
|
||||
sortable='custom'
|
||||
width='70')
|
||||
el-table-column(:label='$t("table.profile.invite_messages.message")' prop='message')
|
||||
el-table-column(
|
||||
:label='$t("table.profile.invite_messages.cool_down")'
|
||||
prop='updatedAt'
|
||||
sortable='custom'
|
||||
width='110'
|
||||
align='right')
|
||||
template(#default='scope')
|
||||
countdown-timer(:datetime='scope.row.updatedAt' :hours='1')
|
||||
el-table-column(:label='$t("table.profile.invite_messages.action")' width='60' align='right')
|
||||
template(#default='scope')
|
||||
el-button(
|
||||
type='text'
|
||||
icon='el-icon-edit'
|
||||
size='mini'
|
||||
@click='showEditInviteMessageDialog("requestResponse", scope.row)')
|
||||
.options-container
|
||||
span.header {{ $t('view.profile.past_display_names') }}
|
||||
data-tables(v-bind='pastDisplayNameTable' style='margin-top: 10px')
|
||||
el-table-column(
|
||||
:label='$t("table.profile.previous_display_name.date")'
|
||||
prop='updated_at'
|
||||
sortable='custom')
|
||||
template(#default='scope')
|
||||
span {{ scope.row.updated_at | formatDate('long') }}
|
||||
el-table-column(:label='$t("table.profile.previous_display_name.name")' prop='displayName')
|
||||
.options-container
|
||||
.header-bar
|
||||
span.header {{ $t('view.profile.config_json') }}
|
||||
el-tooltip(placement='top' :content='$t("view.profile.refresh_tooltip")' :disabled='hideTooltips')
|
||||
el-button(
|
||||
type='default'
|
||||
@click='refreshConfigTreeData()'
|
||||
size='mini'
|
||||
icon='el-icon-refresh'
|
||||
circle
|
||||
style='margin-left: 5px')
|
||||
el-tooltip(
|
||||
placement='top'
|
||||
:content='$t("view.profile.clear_results_tooltip")'
|
||||
:disabled='hideTooltips')
|
||||
el-button(
|
||||
type='default'
|
||||
@click='configTreeData = []'
|
||||
size='mini'
|
||||
icon='el-icon-delete'
|
||||
circle
|
||||
style='margin-left: 5px')
|
||||
el-tree(v-if='configTreeData.length > 0' :data='configTreeData' style='margin-top: 10px; 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')
|
||||
.options-container
|
||||
.header-bar
|
||||
span.header {{ $t('view.profile.current_user_json') }}
|
||||
el-tooltip(placement='top' :content='$t("view.profile.refresh_tooltip")' :disabled='hideTooltips')
|
||||
el-button(
|
||||
type='default'
|
||||
@click='refreshCurrentUserTreeData()'
|
||||
size='mini'
|
||||
icon='el-icon-refresh'
|
||||
circle
|
||||
style='margin-left: 5px')
|
||||
el-tooltip(
|
||||
placement='top'
|
||||
:content='$t("view.profile.clear_results_tooltip")'
|
||||
:disabled='hideTooltips')
|
||||
el-button(
|
||||
type='default'
|
||||
@click='currentUserTreeData = []'
|
||||
size='mini'
|
||||
icon='el-icon-delete'
|
||||
circle
|
||||
style='margin-left: 5px')
|
||||
el-tree(
|
||||
v-if='currentUserTreeData.length > 0'
|
||||
:data='currentUserTreeData'
|
||||
style='margin-top: 10px; 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')
|
||||
.options-container
|
||||
.header-bar
|
||||
span.header {{ $t('view.profile.feedback') }}
|
||||
el-tooltip(placement='top' :content='$t("view.profile.refresh_tooltip")' :disabled='hideTooltips')
|
||||
el-button(
|
||||
type='default'
|
||||
@click='getCurrentUserFeedback()'
|
||||
size='mini'
|
||||
icon='el-icon-refresh'
|
||||
circle
|
||||
style='margin-left: 5px')
|
||||
el-tooltip(
|
||||
placement='top'
|
||||
:content='$t("view.profile.clear_results_tooltip")'
|
||||
:disabled='hideTooltips')
|
||||
el-button(
|
||||
type='default'
|
||||
@click='currentUserFeedbackData = []'
|
||||
size='mini'
|
||||
icon='el-icon-delete'
|
||||
circle
|
||||
style='margin-left: 5px')
|
||||
el-tree(
|
||||
v-if='currentUserFeedbackData.length > 0'
|
||||
:data='currentUserFeedbackData'
|
||||
style='margin-top: 10px; 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,205 +0,0 @@
|
||||
mixin searchTab
|
||||
.x-container(v-show='menuActiveIndex === "search"')
|
||||
div(style='margin: 0 0 10px; display: flex; align-items: center')
|
||||
el-input(
|
||||
v-model='searchText'
|
||||
:placeholder='$t("view.search.search_placeholder")'
|
||||
@keyup.native.13='search()'
|
||||
style='flex: 1')
|
||||
el-tooltip(placement='bottom' :content='$t("view.search.clear_results_tooltip")' :disabled='hideTooltips')
|
||||
el-button(
|
||||
type='default'
|
||||
@click='clearSearch()'
|
||||
icon='el-icon-delete'
|
||||
circle
|
||||
style='flex: none; margin-left: 10px')
|
||||
el-tabs(ref='searchTab' type='card' style='margin-top: 15px' @tab-click='searchText = ""')
|
||||
el-tab-pane(
|
||||
:label='$t("view.search.user.header")'
|
||||
v-loading='isSearchUserLoading'
|
||||
style='min-height: 60px')
|
||||
el-checkbox(v-model='searchUserByBio' style='margin-left: 10px') {{ $t('view.search.user.search_by_bio') }}
|
||||
el-checkbox(v-model='searchUserSortByLastLoggedIn' style='margin-left: 10px') {{ $t('view.search.user.sort_by_last_logged_in') }}
|
||||
.x-friend-list(style='min-height: 500px')
|
||||
.x-friend-item(v-for='user in searchUserResults' :key='user.id' @click='showUserDialog(user.id)')
|
||||
template
|
||||
.avatar
|
||||
img(v-lazy='userImage(user, true)')
|
||||
.detail
|
||||
span.name(v-text='user.displayName')
|
||||
span.extra(
|
||||
v-if='randomUserColours'
|
||||
v-text='user.$trustLevel'
|
||||
:class='user.$trustClass')
|
||||
span.extra(v-else v-text='user.$trustLevel' :style='{ color: user.$userColour }')
|
||||
el-button-group(style='margin-top: 15px' v-if='searchUserResults.length')
|
||||
el-button(
|
||||
:disabled='!searchUserParams.offset'
|
||||
@click='moreSearchUser(-1)'
|
||||
icon='el-icon-back'
|
||||
size='small') {{ $t('view.search.prev_page') }}
|
||||
el-button(
|
||||
:disabled='searchUserResults.length < 10'
|
||||
@click='moreSearchUser(1)'
|
||||
icon='el-icon-right'
|
||||
size='small') {{ $t('view.search.next_page') }}
|
||||
el-tab-pane(
|
||||
:label='$t("view.search.world.header")'
|
||||
v-loading='isSearchWorldLoading'
|
||||
style='min-height: 60px')
|
||||
el-dropdown(
|
||||
@command='(row) => searchWorld(row)'
|
||||
size='small'
|
||||
trigger='click'
|
||||
style='margin-bottom: 15px')
|
||||
el-button(size='small') {{ $t('view.search.world.category') }} #[i.el-icon-arrow-down.el-icon--right]
|
||||
el-dropdown-menu(#default='dropdown')
|
||||
el-dropdown-item(
|
||||
v-for='row in API.cachedConfig.dynamicWorldRows'
|
||||
:key='row.index'
|
||||
v-text='row.name'
|
||||
:command='row')
|
||||
el-checkbox(v-model='searchWorldLabs' style='margin-left: 10px') {{ $t('view.search.world.community_lab') }}
|
||||
.x-friend-list(style='min-height: 500px')
|
||||
.x-friend-item(
|
||||
v-for='world in searchWorldResults'
|
||||
:key='world.id'
|
||||
@click='showWorldDialog(world.id)')
|
||||
template
|
||||
.avatar
|
||||
img(v-lazy='world.thumbnailImageUrl')
|
||||
.detail
|
||||
span.name(v-text='world.name')
|
||||
span.extra(v-if='world.occupants') {{ world.authorName }} ({{ world.occupants }})
|
||||
span.extra(v-else v-text='world.authorName')
|
||||
el-button-group(style='margin-top: 15px' v-if='searchWorldResults.length')
|
||||
el-button(
|
||||
:disabled='!searchWorldParams.offset'
|
||||
@click='moreSearchWorld(-1)'
|
||||
icon='el-icon-back'
|
||||
size='small') {{ $t('view.search.prev_page') }}
|
||||
el-button(
|
||||
:disabled='searchWorldResults.length < 10'
|
||||
@click='moreSearchWorld(1)'
|
||||
icon='el-icon-right'
|
||||
size='small') {{ $t('view.search.next_page') }}
|
||||
el-tab-pane(
|
||||
:label='$t("view.search.avatar.header")'
|
||||
v-loading='isSearchAvatarLoading'
|
||||
style='min-height: 60px')
|
||||
div(style='display: flex; align-items: center; justify-content: space-between')
|
||||
div(style='display: flex; align-items: center')
|
||||
el-dropdown(
|
||||
v-if='avatarRemoteDatabaseProviderList.length > 1'
|
||||
trigger='click'
|
||||
@click.native.stop
|
||||
size='mini'
|
||||
style='margin-right: 5px')
|
||||
el-button(size='small') {{ $t('view.search.avatar.search_provider') }} #[i.el-icon-arrow-down.el-icon--right]
|
||||
el-dropdown-menu(#default='dropdown')
|
||||
el-dropdown-item(
|
||||
v-for='provider in avatarRemoteDatabaseProviderList'
|
||||
:key='provider'
|
||||
@click.native='setAvatarProvider(provider)') #[i.el-icon-check.el-icon--left(v-if='provider === avatarRemoteDatabaseProvider')] {{ provider }}
|
||||
el-tooltip(
|
||||
placement='bottom'
|
||||
:content='$t("view.search.avatar.refresh_tooltip")'
|
||||
:disabled='hideTooltips')
|
||||
el-button(
|
||||
type='default'
|
||||
:loading='userDialog.isAvatarsLoading'
|
||||
@click='refreshUserDialogAvatars()'
|
||||
size='mini'
|
||||
icon='el-icon-refresh'
|
||||
circle)
|
||||
span(style='font-size: 14px; margin-left: 5px; margin-right: 5px') {{ $t('view.search.avatar.result_count', { count: searchAvatarResults.length }) }}
|
||||
div(style='display: flex; align-items: center')
|
||||
el-radio-group(
|
||||
v-model='searchAvatarFilter'
|
||||
size='mini'
|
||||
style='margin: 5px; display: block'
|
||||
@change='searchAvatar')
|
||||
el-radio(label='all') {{ $t('view.search.avatar.all') }}
|
||||
el-radio(label='public') {{ $t('view.search.avatar.public') }}
|
||||
el-radio(label='private') {{ $t('view.search.avatar.private') }}
|
||||
el-divider(direction='vertical')
|
||||
el-radio-group(
|
||||
v-model='searchAvatarFilterRemote'
|
||||
size='mini'
|
||||
style='margin: 5px; display: block'
|
||||
@change='searchAvatar')
|
||||
el-radio(label='all') {{ $t('view.search.avatar.all') }}
|
||||
el-radio(label='local') {{ $t('view.search.avatar.local') }}
|
||||
el-radio(label='remote' :disabled='!avatarRemoteDatabase') {{ $t('view.search.avatar.remote') }}
|
||||
div(style='display: flex; justify-content: end')
|
||||
el-radio-group(
|
||||
:disabled='searchAvatarFilterRemote !== "local"'
|
||||
v-model='searchAvatarSort'
|
||||
size='mini'
|
||||
style='margin: 5px; display: block'
|
||||
@change='searchAvatar')
|
||||
el-radio(label='name') {{ $t('view.search.avatar.sort_name') }}
|
||||
el-radio(label='update') {{ $t('view.search.avatar.sort_update') }}
|
||||
el-radio(label='created') {{ $t('view.search.avatar.sort_created') }}
|
||||
.x-friend-list(style='margin-top: 20px; min-height: 500px')
|
||||
.x-friend-item(
|
||||
v-for='avatar in searchAvatarPage'
|
||||
:key='avatar.id'
|
||||
@click='showAvatarDialog(avatar.id)')
|
||||
template
|
||||
.avatar
|
||||
img(v-if='avatar.thumbnailImageUrl' v-lazy='avatar.thumbnailImageUrl')
|
||||
img(v-else-if='avatar.imageUrl' v-lazy='avatar.imageUrl')
|
||||
.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.authorName')
|
||||
el-button-group(style='margin-top: 15px' v-if='searchAvatarPage.length')
|
||||
el-button(
|
||||
:disabled='!searchAvatarPageNum'
|
||||
@click='moreSearchAvatar(-1)'
|
||||
icon='el-icon-back'
|
||||
size='small') {{ $t('view.search.prev_page') }}
|
||||
el-button(
|
||||
:disabled='searchAvatarResults.length < 10 || (searchAvatarPageNum + 1) * 10 >= searchAvatarResults.length'
|
||||
@click='moreSearchAvatar(1)'
|
||||
icon='el-icon-right'
|
||||
size='small') {{ $t('view.search.next_page') }}
|
||||
el-tab-pane(
|
||||
:label='$t("view.search.group.header")'
|
||||
v-loading='isSearchGroupLoading'
|
||||
style='min-height: 60px')
|
||||
.x-friend-list(style='min-height: 500px')
|
||||
.x-friend-item(
|
||||
v-for='group in searchGroupResults'
|
||||
:key='group.id'
|
||||
@click='showGroupDialog(group.id)')
|
||||
template
|
||||
.avatar
|
||||
img(v-lazy='getSmallThumbnailUrl(group.iconUrl)')
|
||||
.detail
|
||||
span.name
|
||||
span(v-text='group.name')
|
||||
span(style='margin-left: 5px; font-weight: normal') ({{ group.memberCount }})
|
||||
span(
|
||||
style='margin-left: 5px; color: #909399; font-weight: normal; font-family: monospace; font-size: 12px') {{ group.shortCode }}.{{ group.discriminator }}
|
||||
span.extra(v-text='group.description')
|
||||
el-button-group(style='margin-top: 15px' v-if='searchGroupResults.length')
|
||||
el-button(
|
||||
:disabled='!searchGroupParams.offset'
|
||||
@click='moreSearchGroup(-1)'
|
||||
icon='el-icon-back'
|
||||
size='small') {{ $t('view.search.prev_page') }}
|
||||
el-button(
|
||||
:disabled='searchGroupResults.length < 10'
|
||||
@click='moreSearchGroup(1)'
|
||||
icon='el-icon-right'
|
||||
size='small') {{ $t('view.search.next_page') }}
|
||||
Reference in New Issue
Block a user