diff --git a/src/mixins/dialogs/favoritesDialog.pug b/src/mixins/dialogs/favoritesDialog.pug index c2abab6d..9d2e4758 100644 --- a/src/mixins/dialogs/favoritesDialog.pug +++ b/src/mixins/dialogs/favoritesDialog.pug @@ -91,21 +91,21 @@ mixin favoritesDialog() pre(v-text="worldImportDialog.errors" style="white-space:pre-wrap;font-size:12px") data-tables(v-if="worldImportDialog.visible" v-bind="worldImportTable" v-loading="worldImportDialog.loading" style="margin-top:10px") el-table-column(:label="$t('table.import.image')" width="70" prop="thumbnailImageUrl") - template(v-once #default="scope") + template(#default="scope") el-popover(placement="right" height="500px" trigger="hover") img.friends-list-avatar(slot="reference" v-lazy="scope.row.thumbnailImageUrl") img.friends-list-avatar(v-lazy="scope.row.imageUrl" style="height:500px;cursor:pointer" @click="showFullscreenImageDialog(scope.row.imageUrl)") el-table-column(:label="$t('table.import.name')" prop="name") - template(v-once #default="scope") + template(#default="scope") span.x-link(v-text="scope.row.name" @click="showWorldDialog(scope.row.id)") el-table-column(:label="$t('table.import.author')" width="120" prop="authorName") - template(v-once #default="scope") + template(#default="scope") span.x-link(v-text="scope.row.authorName" @click="showUserDialog(scope.row.authorId)") el-table-column(:label="$t('table.import.status')" width="70" prop="releaseStatus") - template(v-once #default="scope") + template(#default="scope") span(v-text="scope.row.releaseStatus.charAt(0).toUpperCase() + scope.row.releaseStatus.slice(1)" :style="{ color: scope.row.releaseStatus === 'public' ? '#67c23a' : scope.row.releaseStatus === 'private' ? '#f56c6c' : undefined }") el-table-column(:label="$t('table.import.action')" width="90" align="right") - template(v-once #default="scope") + template(#default="scope") el-button(type="text" icon="el-icon-close" size="mini" @click="deleteItemWorldImport(scope.row)") //- dialog: export avatar list @@ -169,21 +169,21 @@ mixin favoritesDialog() pre(v-text="avatarImportDialog.errors" style="white-space:pre-wrap;font-size:12px") data-tables(v-if="avatarImportDialog.visible" v-bind="avatarImportTable" v-loading="avatarImportDialog.loading" style="margin-top:10px") el-table-column(:label="$t('table.import.image')" width="70" prop="thumbnailImageUrl") - template(v-once #default="scope") + template(#default="scope") el-popover(placement="right" height="500px" trigger="hover") img.friends-list-avatar(slot="reference" v-lazy="scope.row.thumbnailImageUrl") img.friends-list-avatar(v-lazy="scope.row.imageUrl" style="height:500px;cursor:pointer" @click="showFullscreenImageDialog(scope.row.imageUrl)") el-table-column(:label="$t('table.import.name')" prop="name") - template(v-once #default="scope") + template(#default="scope") span.x-link(v-text="scope.row.name" @click="showAvatarDialog(scope.row.id)") el-table-column(:label="$t('table.import.author')" width="120" prop="authorName") - template(v-once #default="scope") + template(#default="scope") span.x-link(v-text="scope.row.authorName" @click="showUserDialog(scope.row.authorId)") el-table-column(:label="$t('table.import.status')" width="70" prop="releaseStatus") - template(v-once #default="scope") + template(#default="scope") span(v-text="scope.row.releaseStatus.charAt(0).toUpperCase() + scope.row.releaseStatus.slice(1)" :style="{ color: scope.row.releaseStatus === 'public' ? '#67c23a' : scope.row.releaseStatus === 'private' ? '#f56c6c' : undefined }") el-table-column(:label="$t('table.import.action')" width="90" align="right") - template(v-once #default="scope") + template(#default="scope") el-button(type="text" icon="el-icon-close" size="mini" @click="deleteItemAvatarImport(scope.row)") //- dialog: export friend list @@ -229,13 +229,13 @@ mixin favoritesDialog() pre(v-text="friendImportDialog.errors" style="white-space:pre-wrap;font-size:12px") data-tables(v-if="friendImportDialog.visible" v-bind="friendImportTable" v-loading="friendImportDialog.loading" style="margin-top:10px") el-table-column(:label="$t('table.import.image')" width="70" prop="currentAvatarThumbnailImageUrl") - template(v-once #default="scope") + template(#default="scope") el-popover(placement="right" height="500px" trigger="hover") img.friends-list-avatar(slot="reference" v-lazy="userImage(scope.row)") img.friends-list-avatar(v-lazy="userImageFull(scope.row)" style="height:500px;cursor:pointer" @click="showFullscreenImageDialog(userImageFull(scope.row))") el-table-column(:label="$t('table.import.name')" prop="displayName") - template(v-once #default="scope") + template(#default="scope") span.x-link(v-text="scope.row.displayName" @click="showUserDialog(scope.row.id)") el-table-column(:label="$t('table.import.action')" width="90" align="right") - template(v-once #default="scope") + template(#default="scope") el-button(type="text" icon="el-icon-close" size="mini" @click="deleteItemFriendImport(scope.row)") diff --git a/src/mixins/dialogs/groups.pug b/src/mixins/dialogs/groups.pug index ca695b8b..4db1533f 100644 --- a/src/mixins/dialogs/groups.pug +++ b/src/mixins/dialogs/groups.pug @@ -83,32 +83,32 @@ mixin groups() el-button(size="small" @click="selectAllGroupMembers") {{ $t('dialog.group_member_moderation.select_all') }} data-tables(v-bind="groupMemberModerationTable" style="margin-top:10px") el-table-column(width="55" prop="$selected" :key="groupMemberModerationTableForceUpdate") - template(v-once #default="scope") + template(#default="scope") el-button(type="text" size="mini" @click.stop) el-checkbox(v-model="scope.row.$selected" @change="groupMemberModerationTableSelectionChange(scope.row)") el-table-column(:label="$t('dialog.group_member_moderation.avatar')" width="70" prop="photo") - template(v-once #default="scope") + template(#default="scope") el-popover(placement="right" height="500px" trigger="hover") img.friends-list-avatar(slot="reference" v-lazy="userImage(scope.row.user)") img.friends-list-avatar(v-lazy="userImageFull(scope.row.user)" style="height:500px;cursor:pointer" @click="showFullscreenImageDialog(userImageFull(scope.row.user))") el-table-column(:label="$t('dialog.group_member_moderation.display_name')" width="160" prop="$displayName" sortable) - template(v-once #default="scope") + template(#default="scope") span(style="cursor:pointer" @click="showUserDialog(scope.row.userId)") span(v-if="randomUserColours" v-text="scope.row.user.displayName" :style="{'color':scope.row.user.$userColour}") span(v-else v-text="scope.row.user.displayName") el-table-column(:label="$t('dialog.group_member_moderation.roles')" prop="roleIds" sortable) - template(v-once #default="scope") + template(#default="scope") template(v-for="roleId in scope.row.roleIds" :key="roleId") span(v-for="(role, rIndex) in groupMemberModeration.groupRef.roles" :key="rIndex" v-if="role.id === roleId" v-text="role.name") span(v-if="scope.row.roleIds.indexOf(roleId) < scope.row.roleIds.length - 1") ,  el-table-column(:label="$t('dialog.group_member_moderation.notes')" prop="managerNotes" sortable) - template(v-once #default="scope") + template(#default="scope") span(v-text="scope.row.managerNotes" @click.stop) el-table-column(:label="$t('dialog.group_member_moderation.joined_at')" width="170" prop="joinedAt" sortable) - template(v-once #default="scope") + template(#default="scope") span {{ scope.row.joinedAt | formatDate('long') }} el-table-column(:label="$t('dialog.group_member_moderation.visibility')" width="120" prop="visibility" sortable) - template(v-once #default="scope") + template(#default="scope") span(v-text="scope.row.visibility") el-tab-pane(:label="$t('dialog.group_member_moderation.bans')" :disabled="!hasGroupPermission(groupDialog.ref, 'group-bans-manage')") div(style="margin-top:10px") @@ -120,32 +120,32 @@ mixin groups() el-button(size="small" @click="selectAllGroupBans") {{ $t('dialog.group_member_moderation.select_all') }} data-tables(v-bind="groupBansModerationTable" style="margin-top:10px") el-table-column(width="55" prop="$selected" :key="groupMemberModerationTableForceUpdate") - template(v-once #default="scope") + template(#default="scope") el-button(type="text" size="mini" @click.stop) el-checkbox(v-model="scope.row.$selected" @change="groupMemberModerationTableSelectionChange(scope.row)") el-table-column(:label="$t('dialog.group_member_moderation.avatar')" width="70" prop="photo") - template(v-once #default="scope") + template(#default="scope") el-popover(placement="right" height="500px" trigger="hover") img.friends-list-avatar(slot="reference" v-lazy="userImage(scope.row.user)") img.friends-list-avatar(v-lazy="userImageFull(scope.row.user)" style="height:500px;cursor:pointer" @click="showFullscreenImageDialog(userImageFull(scope.row.user))") el-table-column(:label="$t('dialog.group_member_moderation.display_name')" width="160" prop="$displayName" sortable) - template(v-once #default="scope") + template(#default="scope") span(style="cursor:pointer" @click="showUserDialog(scope.row.userId)") span(v-if="randomUserColours" v-text="scope.row.user.displayName" :style="{'color':scope.row.user.$userColour}") span(v-else v-text="scope.row.user.displayName") el-table-column(:label="$t('dialog.group_member_moderation.roles')" prop="roleIds" sortable) - template(v-once #default="scope") + template(#default="scope") template(v-for="roleId in scope.row.roleIds" :key="roleId") span(v-for="(role, rIndex) in groupMemberModeration.groupRef.roles" :key="rIndex" v-if="role.id === roleId" v-text="role.name") span(v-if="scope.row.roleIds.indexOf(roleId) < scope.row.roleIds.length - 1") ,  el-table-column(:label="$t('dialog.group_member_moderation.notes')" prop="managerNotes" sortable) - template(v-once #default="scope") + template(#default="scope") span(v-text="scope.row.managerNotes" @click.stop) el-table-column(:label="$t('dialog.group_member_moderation.joined_at')" width="170" prop="joinedAt" sortable) - template(v-once #default="scope") + template(#default="scope") span {{ scope.row.joinedAt | formatDate('long') }} el-table-column(:label="$t('dialog.group_member_moderation.banned_at')" width="170" prop="joinedAt" sortable) - template(v-once #default="scope") + template(#default="scope") span {{ scope.row.bannedAt | formatDate('long') }} el-tab-pane(:label="$t('dialog.group_member_moderation.invites')" :disabled="!hasGroupPermission(groupDialog.ref, 'group-invites-manage')") div(style="margin-top:10px") @@ -159,21 +159,21 @@ mixin groups() el-button(size="small" @click="selectAllGroupInvites") {{ $t('dialog.group_member_moderation.select_all') }} data-tables(v-bind="groupInvitesModerationTable" style="margin-top:10px") el-table-column(width="55" prop="$selected" :key="groupMemberModerationTableForceUpdate") - template(v-once #default="scope") + template(#default="scope") el-button(type="text" size="mini" @click.stop) el-checkbox(v-model="scope.row.$selected" @change="groupMemberModerationTableSelectionChange(scope.row)") el-table-column(:label="$t('dialog.group_member_moderation.avatar')" width="70" prop="photo") - template(v-once #default="scope") + template(#default="scope") el-popover(placement="right" height="500px" trigger="hover") img.friends-list-avatar(slot="reference" v-lazy="userImage(scope.row.user)") img.friends-list-avatar(v-lazy="userImageFull(scope.row.user)" style="height:500px;cursor:pointer" @click="showFullscreenImageDialog(userImageFull(scope.row.user))") el-table-column(:label="$t('dialog.group_member_moderation.display_name')" width="160" prop="$displayName" sortable) - template(v-once #default="scope") + template(#default="scope") span(style="cursor:pointer" @click="showUserDialog(scope.row.userId)") span(v-if="randomUserColours" v-text="scope.row.user.displayName" :style="{'color':scope.row.user.$userColour}") span(v-else v-text="scope.row.user.displayName") el-table-column(:label="$t('dialog.group_member_moderation.notes')" prop="managerNotes" sortable) - template(v-once #default="scope") + template(#default="scope") span(v-text="scope.row.managerNotes" @click.stop) br el-button(@click="groupMembersDeleteSentInvite" :disabled="groupMemberModeration.progressCurrent || !hasGroupPermission(groupDialog.ref, 'group-invites-manage')") {{ $t('dialog.group_member_moderation.delete_sent_invite') }} @@ -184,21 +184,21 @@ mixin groups() el-button(size="small" @click="selectAllGroupJoinRequests") {{ $t('dialog.group_member_moderation.select_all') }} data-tables(v-bind="groupJoinRequestsModerationTable" style="margin-top:10px") el-table-column(width="55" prop="$selected" :key="groupMemberModerationTableForceUpdate") - template(v-once #default="scope") + template(#default="scope") el-button(type="text" size="mini" @click.stop) el-checkbox(v-model="scope.row.$selected" @change="groupMemberModerationTableSelectionChange(scope.row)") el-table-column(:label="$t('dialog.group_member_moderation.avatar')" width="70" prop="photo") - template(v-once #default="scope") + template(#default="scope") el-popover(placement="right" height="500px" trigger="hover") img.friends-list-avatar(slot="reference" v-lazy="userImage(scope.row.user)") img.friends-list-avatar(v-lazy="userImageFull(scope.row.user)" style="height:500px;cursor:pointer" @click="showFullscreenImageDialog(userImageFull(scope.row.user))") el-table-column(:label="$t('dialog.group_member_moderation.display_name')" width="160" prop="$displayName" sortable) - template(v-once #default="scope") + template(#default="scope") span(style="cursor:pointer" @click="showUserDialog(scope.row.userId)") span(v-if="randomUserColours" v-text="scope.row.user.displayName" :style="{'color':scope.row.user.$userColour}") span(v-else v-text="scope.row.user.displayName") el-table-column(:label="$t('dialog.group_member_moderation.notes')" prop="managerNotes" sortable) - template(v-once #default="scope") + template(#default="scope") span(v-text="scope.row.managerNotes" @click.stop) br el-button(@click="groupMembersAcceptInviteRequest" :disabled="groupMemberModeration.progressCurrent || !hasGroupPermission(groupDialog.ref, 'group-invites-manage')") {{ $t('dialog.group_member_moderation.accept_join_requests') }} @@ -211,21 +211,21 @@ mixin groups() el-button(size="small" @click="selectAllGroupBlocked") {{ $t('dialog.group_member_moderation.select_all') }} data-tables(v-bind="groupBlockedModerationTable" style="margin-top:10px") el-table-column(width="55" prop="$selected" :key="groupMemberModerationTableForceUpdate") - template(v-once #default="scope") + template(#default="scope") el-button(type="text" size="mini" @click.stop) el-checkbox(v-model="scope.row.$selected" @change="groupMemberModerationTableSelectionChange(scope.row)") el-table-column(:label="$t('dialog.group_member_moderation.avatar')" width="70" prop="photo") - template(v-once #default="scope") + template(#default="scope") el-popover(placement="right" height="500px" trigger="hover") img.friends-list-avatar(slot="reference" v-lazy="userImage(scope.row.user)") img.friends-list-avatar(v-lazy="userImageFull(scope.row.user)" style="height:500px;cursor:pointer" @click="showFullscreenImageDialog(userImageFull(scope.row.user))") el-table-column(:label="$t('dialog.group_member_moderation.display_name')" width="160" prop="$displayName" sortable) - template(v-once #default="scope") + template(#default="scope") span(style="cursor:pointer" @click="showUserDialog(scope.row.userId)") span(v-if="randomUserColours" v-text="scope.row.user.displayName" :style="{'color':scope.row.user.$userColour}") span(v-else v-text="scope.row.user.displayName") el-table-column(:label="$t('dialog.group_member_moderation.notes')" prop="managerNotes" sortable) - template(v-once #default="scope") + template(#default="scope") span(v-text="scope.row.managerNotes" @click.stop) br el-button(@click="groupMembersDeleteBlockedRequest" :disabled="groupMemberModeration.progressCurrent || !hasGroupPermission(groupDialog.ref, 'group-invites-manage')") {{ $t('dialog.group_member_moderation.delete_blocked_requests') }} @@ -243,20 +243,20 @@ mixin groups() br data-tables(v-bind="groupLogsModerationTable" style="margin-top:10px") el-table-column(:label="$t('dialog.group_member_moderation.created_at')" width="170" prop="created_at" sortable) - template(v-once #default="scope") + template(#default="scope") span {{ scope.row.created_at | formatDate('long') }} el-table-column(:label="$t('dialog.group_member_moderation.type')" width="190" prop="eventType" sortable) - template(v-once #default="scope") + template(#default="scope") span(v-text="scope.row.eventType") el-table-column(:label="$t('dialog.group_member_moderation.display_name')" width="160" prop="actorDisplayName" sortable) - template(v-once #default="scope") + template(#default="scope") span(style="cursor:pointer" @click="showUserDialog(scope.row.actorId)") span(v-text="scope.row.actorDisplayName") el-table-column(:label="$t('dialog.group_member_moderation.description')" prop="description") - template(v-once #default="scope") + template(#default="scope") span(v-text="scope.row.description") el-table-column(:label="$t('dialog.group_member_moderation.data')" prop="data") - template(v-once #default="scope") + template(#default="scope") span(v-if="Object.keys(scope.row.data).length" v-text="JSON.stringify(scope.row.data)") br br diff --git a/src/mixins/dialogs/invites.pug b/src/mixins/dialogs/invites.pug index b29e9f5f..1b504173 100644 --- a/src/mixins/dialogs/invites.pug +++ b/src/mixins/dialogs/invites.pug @@ -76,10 +76,10 @@ mixin invites() 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(v-once #default="scope") + template(#default="scope") countdown-timer(:datetime="scope.row.updatedAt" :hours="1") el-table-column(:label="$t('table.profile.invite_messages.action')" width="70" align="right") - template(v-once #default="scope") + template(#default="scope") el-button(type="text" icon="el-icon-edit" size="mini" @click="showEditAndSendInviteResponseDialog('response', scope.row)") template(#footer) el-button(type="small" @click="cancelSendInviteResponse") {{ $t('dialog.invite_response_message.cancel') }} @@ -93,10 +93,10 @@ mixin invites() 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(v-once #default="scope") + template(#default="scope") countdown-timer(:datetime="scope.row.updatedAt" :hours="1") el-table-column(:label="$t('table.profile.invite_messages.action')" width="70" align="right") - template(v-once #default="scope") + template(#default="scope") el-button(type="text" icon="el-icon-edit" size="mini" @click="showEditAndSendInviteResponseDialog('requestResponse', scope.row)") template(#footer) el-button(type="small" @click="cancelSendInviteRequestResponse") {{ $t('dialog.invite_request_response_message.cancel') }} @@ -126,10 +126,10 @@ mixin invites() 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(v-once #default="scope") + template(#default="scope") countdown-timer(:datetime="scope.row.updatedAt" :hours="1") el-table-column(:label="$t('table.profile.invite_messages.action')" width="70" align="right") - template(v-once #default="scope") + template(#default="scope") el-button(type="text" icon="el-icon-edit" size="mini" @click="showEditAndSendInviteDialog('message', scope.row)") template(#footer) el-button(type="small" @click="cancelSendInvite") {{ $t('dialog.invite_message.cancel') }} @@ -143,10 +143,10 @@ mixin invites() 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(v-once #default="scope") + template(#default="scope") countdown-timer(:datetime="scope.row.updatedAt" :hours="1") el-table-column(:label="$t('table.profile.invite_messages.action')" width="70" align="right") - template(v-once #default="scope") + template(#default="scope") el-button(type="text" icon="el-icon-edit" size="mini" @click="showEditAndSendInviteDialog('request', scope.row)") template(#footer) el-button(type="small" @click="cancelSendInviteRequest") {{ $t('dialog.invite_request_message.cancel') }} diff --git a/src/mixins/dialogs/previousInstances.pug b/src/mixins/dialogs/previousInstances.pug index d18563bb..33baf547 100644 --- a/src/mixins/dialogs/previousInstances.pug +++ b/src/mixins/dialogs/previousInstances.pug @@ -5,19 +5,19 @@ mixin previousInstances() el-input(v-model="previousInstancesUserDialogTable.filters[0].value" :placeholder="$t('dialog.previous_instances.search_placeholder')" style="display:block;width:150px;margin-top:15px") 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(v-once #default="scope") + template(#default="scope") span {{ scope.row.created_at | formatDate('long') }} el-table-column(:label="$t('table.previous_instances.world')" prop="name" sortable) - template(v-once #default="scope") + 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(v-once #default="scope") + template(#default="scope") display-name(:userid="scope.row.$location.userId" :location="scope.row.$location.tag" :key="previousInstancesUserDialog.forceUpdate") el-table-column(:label="$t('table.previous_instances.time')" prop="time" width="100" sortable) - template(v-once #default="scope") + template(#default="scope") span(v-text="scope.row.timer") el-table-column(:label="$t('table.previous_instances.action')" width="90" align="right") - template(v-once #default="scope") + template(#default="scope") el-button(type="text" icon="el-icon-info" size="mini" @click="showLaunchDialog(scope.row.location)") el-button(type="text" icon="el-icon-tickets" 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)") @@ -29,19 +29,19 @@ mixin previousInstances() el-input(v-model="previousInstancesWorldDialogTable.filters[0].value" :placeholder="$t('dialog.previous_instances.search_placeholder')" style="display:block;width:150px;margin-top:15px") 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(v-once #default="scope") + template(#default="scope") span {{ scope.row.created_at | formatDate('long') }} el-table-column(:label="$t('table.previous_instances.instance_name')" prop="name") - template(v-once #default="scope") + template(#default="scope") location-world(:locationobject="scope.row.$location" :grouphint="scope.row.groupName" :currentuserid="API.currentUser.id") el-table-column(:label="$t('table.previous_instances.instance_creator')" prop="location") - template(v-once #default="scope") + template(#default="scope") display-name(:userid="scope.row.$location.userId" :location="scope.row.$location.tag" :key="previousInstancesWorldDialog.forceUpdate") el-table-column(:label="$t('table.previous_instances.time')" prop="time" width="100" sortable) - template(v-once #default="scope") + template(#default="scope") span(v-text="scope.row.timer") el-table-column(:label="$t('table.previous_instances.action')" width="90" align="right") - template(v-once #default="scope") + template(#default="scope") el-button(type="text" icon="el-icon-tickets" 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)") @@ -58,18 +58,18 @@ mixin previousInstances() span {{ scope.row.created_at | formatDate('long') }} span {{ scope.row.created_at | formatDate('short') }} el-table-column(:label="$t('table.gameLog.icon')" prop="isFriend" width="70" align="center") - template(v-once #default="scope") + 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.previous_instances.display_name')" prop="displayName" sortable) - template(v-once #default="scope") + template(#default="scope") span.x-link(v-text="scope.row.displayName" @click="lookupUser(scope.row)") el-table-column(:label="$t('table.previous_instances.time')" prop="time" width="100" sortable) - template(v-once #default="scope") + template(#default="scope") span(v-text="scope.row.timer") el-table-column(:label="$t('table.previous_instances.count')" prop="count" width="100" sortable) - template(v-once #default="scope") + template(#default="scope") span(v-text="scope.row.count") diff --git a/src/mixins/dialogs/settings.pug b/src/mixins/dialogs/settings.pug index 122bae21..119a8353 100644 --- a/src/mixins/dialogs/settings.pug +++ b/src/mixins/dialogs/settings.pug @@ -96,18 +96,18 @@ mixin settings() pre(v-text="noteExportDialog.errors" style="white-space:pre-wrap;font-size:12px") data-tables(v-if="noteExportDialog.visible" v-bind="noteExportTable" v-loading="noteExportDialog.loading" style="margin-top:10px") el-table-column(:label="$t('table.import.image')" width="70" prop="currentAvatarThumbnailImageUrl") - template(v-once #default="scope") + template(#default="scope") 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.import.name')" width="170" prop="name") - template(v-once #default="scope") + template(#default="scope") span.x-link(v-text="scope.row.name" @click="showUserDialog(scope.row.id)") el-table-column(:label="$t('table.import.note')" prop="memo") - template(v-once #default="scope") + template(#default="scope") el-input(v-model="scope.row.memo" type="textarea" maxlength="256" show-word-limit :rows="2" :autosize="{ minRows: 1, maxRows: 10 }" size="mini" resize="none") el-table-column(:label="$t('table.import.skip_export')" width="90" align="right") - template(v-once #default="scope") + template(#default="scope") el-button(type="text" icon="el-icon-close" size="mini" @click="removeFromNoteExportTable(scope.row)") //- dialog: chatbox blacklist @@ -160,10 +160,10 @@ mixin settings() data-tables(v-bind="registryBackupTable" style="margin-top:10px") el-table-column(:label="$t('dialog.registry_backup.name')" prop="name") el-table-column(:label="$t('dialog.registry_backup.date')" prop="date") - template(v-once #default="scope") + template(#default="scope") span {{ scope.row.date | formatDate('long') }} el-table-column(:label="$t('dialog.registry_backup.action')" width="90" align="right") - template(v-once #default="scope") + template(#default="scope") el-tooltip(placement="top" :content="$t('dialog.registry_backup.restore')" :disabled="hideTooltips") el-button(type="text" icon="el-icon-upload2" size="mini" @click="restoreVrcRegistryBackup(scope.row)") el-tooltip(placement="top" :content="$t('dialog.registry_backup.save_to_file')" :disabled="hideTooltips") diff --git a/src/mixins/dialogs/vrcx.pug b/src/mixins/dialogs/vrcx.pug index 493926b8..f31c8bda 100644 --- a/src/mixins/dialogs/vrcx.pug +++ b/src/mixins/dialogs/vrcx.pug @@ -11,7 +11,7 @@ mixin vrcx() br span {{ $t('dialog.vrcx_updater.ready_for_update') }} el-select(v-model="branch" @change="loadBranchVersions" style="display:inline-block;width:150px;margin-right:15px") - el-option(v-once v-for="branch in branches" :key="branch.name" :label="branch.name" :value="branch.name") + el-option(v-for="branch in branches" :key="branch.name" :label="branch.name" :value="branch.name") el-select(v-model="VRCXUpdateDialog.release" style="display:inline-block;width:150px") el-option(v-for="item in VRCXUpdateDialog.releases" :key="item.name" :label="item.tag_name" :value="item.name") div(v-if="!VRCXUpdateDialog.updatePending && VRCXUpdateDialog.release === appVersion" style="margin-top:15px") diff --git a/src/mixins/tabs/feed.pug b/src/mixins/tabs/feed.pug index 9857680c..3c420f10 100644 --- a/src/mixins/tabs/feed.pug +++ b/src/mixins/tabs/feed.pug @@ -7,10 +7,10 @@ mixin feedTab() 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-once v-for="type in ['GPS', 'Online', 'Offline', 'Status', 'Avatar', 'Bio']" :key="type" :label="$t('view.feed.filters.' + type)" :value="type") + 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") el-table-column(type="expand" width="20") - template(v-once #default="scope") + 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") @@ -68,19 +68,19 @@ mixin feedTab() 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(v-once #default="scope") + 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(v-once #default="scope") + 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(v-once #default="scope") + 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(v-once #default="scope") + 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'") diff --git a/src/mixins/tabs/friendLog.pug b/src/mixins/tabs/friendLog.pug index f8a0fc9e..9be0a9e7 100644 --- a/src/mixins/tabs/friendLog.pug +++ b/src/mixins/tabs/friendLog.pug @@ -4,21 +4,21 @@ mixin friendLogTab() 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-once v-for="type in ['Friend', 'Unfriend', 'FriendRequest', 'CancelFriendRequest', 'DisplayName', 'TrustLevel']" :key="type" :label="$t('view.friend_log.filters.' + type)" :value="type") + 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(v-once #default="scope") + template(#default="scope") span {{ scope.row.created_at | formatDate('long') }} el-table-column(:label="$t('table.friendLog.type')" prop="type" width="150") - template(v-once #default="scope") + 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(v-once #default="scope") + 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(v-once #default="scope") + 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)") diff --git a/src/mixins/tabs/friendsList.pug b/src/mixins/tabs/friendsList.pug index 7fc000a9..bca43c9b 100644 --- a/src/mixins/tabs/friendsList.pug +++ b/src/mixins/tabs/friendsList.pug @@ -23,63 +23,63 @@ mixin friendsListTab() el-switch(v-model="friendsListSearchFilterVIP" @change="friendsListSearchChange" active-color="#13ce66") el-input(v-model="friendsListSearch" :placeholder="$t('view.friend_list.search_placeholder')" @change="friendsListSearchChange" clearable style="flex:1") el-select(v-model="friendsListSearchFilters" multiple clearable collapse-tags style="flex:none;width:200px;margin:0 10px" @change="friendsListSearchChange" :placeholder="$t('view.friend_list.filter_placeholder')") - el-option(v-once v-for="type in ['Display Name', 'User Name', 'Rank', 'Status', 'Bio', 'Memo']" :key="type" :label="type" :value="type") + el-option(v-for="type in ['Display Name', 'User Name', 'Rank', 'Status', 'Bio', 'Memo']" :key="type" :label="type" :value="type") el-tooltip(placement="top" :content="$t('view.friend_list.refresh_tooltip')" :disabled="hideTooltips") el-button(type="default" @click="friendsListSearchChange" icon="el-icon-refresh" circle style="flex:none") el-tooltip(placement="top" :content="$t('view.friend_list.clear_tooltip')" :disabled="hideTooltips") el-button(type="default" @click="friendsListTable.data = []" icon="el-icon-delete" circle style="flex:none;margin-left:5px") data-tables(v-bind="friendsListTable" @row-click="selectFriendsListRow" style="margin-top:10px;cursor:pointer") el-table-column(width="55" prop="$selected" v-if="friendsListBulkUnfriendMode" :key="friendsListBulkUnfriendForceUpdate") - template(v-once #default="scope") + template(#default="scope") el-button(type="text" size="mini" @click.stop) el-checkbox(v-model="scope.row.$selected" @change="friendsListBulkUnfriendForceUpdate++") el-table-column(:label="$t('table.friendList.no')" width="70" prop="$friendNumber" sortable="custom") - template(v-once #default="scope") + template(#default="scope") span {{ scope.row.$friendNumber ? scope.row.$friendNumber : '' }} el-table-column(:label="$t('table.friendList.avatar')" width="70" prop="photo") - template(v-once #default="scope") + template(#default="scope") el-popover(placement="right" height="500px" trigger="hover") img.friends-list-avatar(slot="reference" v-lazy="userImage(scope.row)") img.friends-list-avatar(v-lazy="userImageFull(scope.row)" style="height:500px;cursor:pointer" @click="showFullscreenImageDialog(userImageFull(scope.row))") el-table-column(:label="$t('table.friendList.displayName')" min-width="140" prop="displayName" sortable :sort-method="(a, b) => sortAlphabetically(a, b, 'displayName')") - template(v-once #default="scope") + template(#default="scope") span.name(v-if="randomUserColours" v-text="scope.row.displayName" :style="{'color':scope.row.$userColour}") span.name(v-else v-text="scope.row.displayName") el-table-column(:label="$t('table.friendList.rank')" width="110" prop="$trustSortNum" sortable="custom") - template(v-once #default="scope") + template(#default="scope") span.name(v-if="randomUserColours" v-text="scope.row.$trustLevel" :class="scope.row.$trustClass") span.name(v-else v-text="scope.row.$trustLevel" :style="{'color':scope.row.$userColour}") el-table-column(:label="$t('table.friendList.status')" min-width="180" prop="status" sortable :sort-method="(a, b) => sortStatus(a.status, b.status)") - template(v-once #default="scope") + template(#default="scope") i.x-user-status(v-if="scope.row.status !== 'offline'" :class="statusClass(scope.row.status)") span ‎ span(v-text="scope.row.statusDescription") el-table-column(:label="$t('table.friendList.language')" width="110" prop="$languages" sortable :sort-method="(a, b) => sortLanguages(a, b)") - template(v-once #default="scope") + template(#default="scope") el-tooltip(v-for="item in scope.row.$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.friendList.bioLink')" width="100" prop="bioLinks") - template(v-once #default="scope") + template(#default="scope") el-tooltip(v-if="link" v-for="(link, index) in scope.row.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)") el-table-column(:label="$t('table.friendList.joinCount')" width="120" prop="$joinCount" sortable) el-table-column(:label="$t('table.friendList.timeTogether')" width="140" prop="$timeSpent" sortable) - template(v-once #default="scope") + template(#default="scope") span(v-if="scope.row.$timeSpent") {{ timeToText(scope.row.$timeSpent) }} el-table-column(:label="$t('table.friendList.lastSeen')" width="170" prop="$lastSeen" sortable :sort-method="(a, b) => sortAlphabetically(a, b, '$lastSeen')") - template(v-once #default="scope") + template(#default="scope") span {{ scope.row.$lastSeen | formatDate('long') }} el-table-column(:label="$t('table.friendList.lastActivity')" width="170" prop="last_activity" sortable :sort-method="(a, b) => sortAlphabetically(a, b, 'last_activity')") - template(v-once #default="scope") + template(#default="scope") span {{ scope.row.last_activity | formatDate('long') }} el-table-column(:label="$t('table.friendList.lastLogin')" width="170" prop="last_login" sortable :sort-method="(a, b) => sortAlphabetically(a, b, 'last_login')") - template(v-once #default="scope") + template(#default="scope") span {{ scope.row.last_login | formatDate('long') }} el-table-column(:label="$t('table.friendList.dateJoined')" width="120" prop="date_joined" sortable :sort-method="(a, b) => sortAlphabetically(a, b, 'date_joined')") el-table-column(:label="$t('table.friendList.unfriend')" width="100" align="center") - template(v-once #default="scope") + template(#default="scope") el-button(type="text" icon="el-icon-close" style="color:#f56c6c" size="mini" @click.stop="confirmDeleteFriend(scope.row.id)") diff --git a/src/mixins/tabs/gameLog.pug b/src/mixins/tabs/gameLog.pug index 9815fb1a..f33a8a58 100644 --- a/src/mixins/tabs/gameLog.pug +++ b/src/mixins/tabs/gameLog.pug @@ -7,30 +7,30 @@ mixin gameLogTab() 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-once v-for="type in ['Location', 'OnPlayerJoined', 'OnPlayerLeft', 'PortalSpawn', 'VideoPlay', 'Event', 'External', 'StringLoad', 'ImageLoad']" :key="type" :label="$t('view.game_log.filters.' + type)" :value="type") + el-option(v-for="type in ['Location', 'OnPlayerJoined', 'OnPlayerLeft', 'PortalSpawn', '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(v-once #default="scope") + 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(v-once #default="scope") + template(#default="scope") 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(v-once #default="scope") + 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(v-once #default="scope") + 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(v-once #default="scope") + 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'") @@ -49,7 +49,7 @@ mixin gameLogTab() 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(v-once #default="scope") + 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)") diff --git a/src/mixins/tabs/moderation.pug b/src/mixins/tabs/moderation.pug index eeab9dbe..0a8bfbf0 100644 --- a/src/mixins/tabs/moderation.pug +++ b/src/mixins/tabs/moderation.pug @@ -4,27 +4,27 @@ mixin moderationTab() template(#tool) div(style="margin:0 0 10px;display:flex;align-items:center") el-select(v-model="playerModerationTable.filters[0].value" @change="saveTableFilters" multiple clearable style="flex:1" :placeholder="$t('view.moderation.filter_placeholder')") - el-option(v-once v-for="type in ['block', 'unblock', 'mute', 'unmute', 'interactOn', 'interactOff', 'muteChat']" :key="type" :label="$t('view.moderation.filters.' + type)" :value="type") + el-option(v-for="type in ['block', 'unblock', 'mute', 'unmute', 'interactOn', 'interactOff', 'muteChat']" :key="type" :label="$t('view.moderation.filters.' + type)" :value="type") el-input(v-model="playerModerationTable.filters[1].value" :placeholder="$t('view.moderation.search_placeholder')" style="flex:none;width:150px;margin:0 10px") el-tooltip(placement="bottom" :content="$t('view.moderation.refresh_tooltip')" :disabled="hideTooltips") el-button(type="default" :loading="API.isPlayerModerationsLoading" @click="API.refreshPlayerModerations()" icon="el-icon-refresh" circle style="flex:none") el-table-column(:label="$t('table.moderation.date')" prop="created" sortable="custom" width="120") - template(v-once #default="scope") + template(#default="scope") el-tooltip(placement="right") template(#content) span {{ scope.row.created | formatDate('long') }} span {{ scope.row.created | formatDate('short') }} el-table-column(:label="$t('table.moderation.type')" prop="type" width="100") - template(v-once #default="scope") + template(#default="scope") span(v-text="$t('view.moderation.filters.' + scope.row.type)") el-table-column(:label="$t('table.moderation.source')" prop="sourceDisplayName") - template(v-once #default="scope") + template(#default="scope") span.x-link(v-text="scope.row.sourceDisplayName" @click="showUserDialog(scope.row.sourceUserId)") el-table-column(:label="$t('table.moderation.target')" prop="targetDisplayName") - template(v-once #default="scope") + template(#default="scope") span.x-link(v-text="scope.row.targetDisplayName" @click="showUserDialog(scope.row.targetUserId)") el-table-column(:label="$t('table.moderation.action')" width="80" align="right") - template(v-once #default="scope") + template(#default="scope") template(v-if="scope.row.sourceUserId === API.currentUser.id") el-button(v-if="shiftHeld" style="color:#f56c6c" type="text" icon="el-icon-close" size="mini" @click="deletePlayerModeration(scope.row)") el-button(v-else type="text" icon="el-icon-close" size="mini" @click="deletePlayerModerationPrompt(scope.row)") diff --git a/src/mixins/tabs/notifications.pug b/src/mixins/tabs/notifications.pug index aed9e955..3e1c32d4 100644 --- a/src/mixins/tabs/notifications.pug +++ b/src/mixins/tabs/notifications.pug @@ -4,18 +4,18 @@ mixin notificationsTab() 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-once 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-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(v-once #default="scope") + 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(v-once #default="scope") + 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") @@ -28,7 +28,7 @@ mixin notificationsTab() 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(v-once #default="scope") + 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") @@ -38,7 +38,7 @@ mixin notificationsTab() 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(v-once #default="scope") + 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" v-lazy="scope.row.details.imageUrl" style="flex:none;height:50px;border-radius:4px") @@ -48,7 +48,7 @@ mixin notificationsTab() img.x-link(slot="reference" v-lazy="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(v-once #default="scope") + template(#default="scope") span.x-link(v-if="scope.row.type === 'invite'") location(v-if="scope.row.details" :location="scope.row.details.worldId" :hint="scope.row.details.worldName" :grouphint="scope.row.details.groupName" :link="true") br @@ -57,7 +57,7 @@ mixin notificationsTab() 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(v-once #default="scope") + 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") diff --git a/src/mixins/tabs/playerList.pug b/src/mixins/tabs/playerList.pug index 38ac2958..6db0fad6 100644 --- a/src/mixins/tabs/playerList.pug +++ b/src/mixins/tabs/playerList.pug @@ -51,7 +51,7 @@ mixin playerListTab() div.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-once v-for="type in photonEventTableTypeFilterList" :key="type" :label="type" :value="type") + 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") @@ -63,17 +63,17 @@ mixin playerListTab() 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(v-once #default="scope") + 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(v-once #default="scope") + 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(v-once #default="scope") + 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)") |   @@ -134,17 +134,17 @@ mixin playerListTab() 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(v-once #default="scope") + 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(v-once #default="scope") + 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(v-once #default="scope") + 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)") |   @@ -205,16 +205,16 @@ mixin playerListTab() div.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(v-once #default="scope") - div(v-if="userImage(scope.row.ref)" style="display:flex;align-items:center;") + 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(v-once #default="scope") + 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(v-once #default="scope") + 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)") @@ -223,7 +223,7 @@ mixin playerListTab() 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(v-once #default="scope") + 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") @@ -233,7 +233,7 @@ mixin playerListTab() 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(v-once #default="scope") + 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 @@ -244,11 +244,11 @@ mixin playerListTab() 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(v-once #default="scope") + 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(v-once #default="scope") + template(#default="scope") template(v-if="scope.row.ref.status") i.x-user-status(:class="statusClass(scope.row.ref.status)") span ‎ @@ -257,18 +257,19 @@ mixin playerListTab() //- 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(v-once #default="scope") + 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(v-once #default="scope") + 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(v-once #default="scope") + 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)") + diff --git a/src/mixins/tabs/profile.pug b/src/mixins/tabs/profile.pug index 97845731..7e541299 100644 --- a/src/mixins/tabs/profile.pug +++ b/src/mixins/tabs/profile.pug @@ -65,10 +65,10 @@ mixin profileTab() 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(v-once #default="scope") + 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(v-once #default="scope") + template(#default="scope") el-button(type="text" icon="el-icon-edit" size="mini" @click="showEditInviteMessageDialog('message', scope.row)") div.options-container div.header-bar @@ -81,10 +81,10 @@ mixin profileTab() 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(v-once #default="scope") + 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(v-once #default="scope") + template(#default="scope") el-button(type="text" icon="el-icon-edit" size="mini" @click="showEditInviteMessageDialog('response', scope.row)") div.options-container div.header-bar @@ -97,10 +97,10 @@ mixin profileTab() 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(v-once #default="scope") + 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(v-once #default="scope") + template(#default="scope") el-button(type="text" icon="el-icon-edit" size="mini" @click="showEditInviteMessageDialog('request', scope.row)") div.options-container div.header-bar @@ -113,16 +113,16 @@ mixin profileTab() 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(v-once #default="scope") + 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(v-once #default="scope") + template(#default="scope") el-button(type="text" icon="el-icon-edit" size="mini" @click="showEditInviteMessageDialog('requestResponse', scope.row)") div.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(v-once #default="scope") + template(#default="scope") span {{ scope.row.updated_at | formatDate('long') }} el-table-column(:label="$t('table.profile.previous_display_name.name')" prop="displayName") div.options-container diff --git a/src/mixins/tabs/search.pug b/src/mixins/tabs/search.pug index d154b637..050f458c 100644 --- a/src/mixins/tabs/search.pug +++ b/src/mixins/tabs/search.pug @@ -8,7 +8,7 @@ mixin searchTab() el-tab-pane(:label="$t('view.search.user.header')" v-loading="isSearchUserLoading" style="min-height:60px") .x-friend-list(style="min-height:500px") .x-friend-item(v-for="user in searchUserResults" :key="user.id" @click="showUserDialog(user.id)") - template(v-once) + template .avatar img(v-lazy="userImage(user)") .detail @@ -26,7 +26,7 @@ mixin searchTab() 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(v-once) + template .avatar img(v-lazy="world.thumbnailImageUrl") .detail @@ -63,7 +63,7 @@ mixin searchTab() 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(v-once) + template .avatar img(v-if="avatar.thumbnailImageUrl" v-lazy="avatar.thumbnailImageUrl") img(v-else-if="avatar.imageUrl" v-lazy="avatar.imageUrl") @@ -79,7 +79,7 @@ mixin searchTab() 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(v-once) + template .avatar img(v-lazy="group.iconUrl") .detail diff --git a/src/mixins/tabs/settings.pug b/src/mixins/tabs/settings.pug index 85a02000..0cf8a3eb 100644 --- a/src/mixins/tabs/settings.pug +++ b/src/mixins/tabs/settings.pug @@ -536,7 +536,7 @@ mixin settingsTab() el-button(size="small" icon="el-icon-time" @click="promptPhotonOverlayMessageTimeout" :disabled="!openVR") {{ $t('view.settings.advanced.photon.event_hud.message_timeout') }} div.options-container-item el-select(v-model="photonEventTableTypeOverlayFilter" @change="photonEventTableFilterChange" multiple clearable collapse-tags style="flex:1" placeholder="Filter") - el-option(v-once v-for="type in photonEventTableTypeFilterList" :key="type" :label="type" :value="type") + el-option(v-for="type in photonEventTableTypeFilterList" :key="type" :label="type" :value="type") br span.sub-header {{ $t('view.settings.advanced.photon.timeout_hud.header') }} simple-switch(:label='$t("view.settings.advanced.photon.timeout_hud.enable")' :value='timeoutHudOverlay' @change='saveEventOverlay("VRCX_TimeoutHudOverlay")' :disabled="!openVR" :tooltip="$t('view.settings.advanced.photon.timeout_hud.enable_tooltip')")