mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-04-11 19:03:51 +02:00
292 lines
25 KiB
Plaintext
292 lines
25 KiB
Plaintext
doctype html
|
||
html
|
||
head
|
||
meta(http-equiv="Content-Type" content="text/html;charset=utf-8")
|
||
meta(http-equiv="Cache-Control" content="no-cache")
|
||
meta(http-equiv="referrer" content="no-referrer")
|
||
meta(http-equiv="viewport" content="width=device-width,initial-scale=1,user-scalable=no")
|
||
title VRCXVR
|
||
link(rel="dns-prefetch" href="https://fonts.gstatic.com")
|
||
link(rel="preconnect" href="https://api.vrchat.cloud")
|
||
link(rel="preconnect" href="https://d348imysud55la.cloudfront.net")
|
||
link(rel="stylesheet" href="https://fonts.googleapis.com/css?family=Noto+Sans+JP|Noto+Sans+KR&display=swap")
|
||
link(rel="stylesheet" href="vr.css")
|
||
body
|
||
.x-app#x-app(v-if="appType === '1'" class="x-app-type")
|
||
.x-container(style="flex:1")
|
||
.x-friend-list(ref="list" style="color:#aaa")
|
||
template(v-if="config && config.minimalFeed")
|
||
template(v-for="feed in wristFeed")
|
||
.x-friend-item(v-if="feed.type === 'GPS'" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| #[span.name(v-text="feed.displayName")] #[location(:location="feed.location[0]")]
|
||
div(v-else-if="feed.type === 'Offline'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| #[span.name(v-text="feed.displayName")] ✖️
|
||
div(v-else-if="feed.type === 'Online'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| #[span.name(v-text="feed.displayName")] ✔
|
||
div(v-else-if="feed.type === 'Status'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| #[span.name(v-text="feed.displayName")] #[i.x-user-status(:class="userStatusClass(feed.status[0])")] {{feed.status[0].statusDescription}}
|
||
div(v-else-if="feed.type === 'OnPlayerJoined'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| ▶️ #[span.name(v-text="feed.data")]
|
||
div(v-else-if="feed.type === 'OnPlayerLeft'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| ◀️ #[span.name(v-text="feed.data")]
|
||
div(v-else-if="feed.type === 'OnPlayerJoining'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
span.spin ▶️
|
||
span.name(v-text="feed.displayName" style="margin-left:20px")
|
||
div(v-else-if="feed.type === 'Location'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
location(:location="feed.data[0]" :hint="feed.data[1]")
|
||
div(v-else-if="feed.type === 'invite'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| 📨 #[span.name(v-text="feed.senderUsername")] #[location(:location="feed.details.worldId")] #[span(v-text="feed.details.inviteMessage")]
|
||
div(v-else-if="feed.type === 'requestInvite'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| 📩 #[span.name(v-text="feed.senderUsername")] #[span(v-text="feed.details.requestMessage")]
|
||
div(v-else-if="feed.type === 'inviteResponse'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| 💬 #[span.name(v-text="feed.senderUsername")] #[span(v-text="feed.details.responseMessage")]
|
||
div(v-else-if="feed.type === 'requestInviteResponse'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| 💬 #[span.name(v-text="feed.senderUsername")] #[span(v-text="feed.details.responseMessage")]
|
||
div(v-else-if="feed.type === 'friendRequest'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| 💚 #[span.name(v-text="feed.senderUsername")]
|
||
div(v-else-if="feed.type === 'Friend'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| 💖 #[span.name(v-text="feed.displayName")]
|
||
div(v-else-if="feed.type === 'Unfriend'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| 💔 #[span.name(v-text="feed.displayName")]
|
||
div(v-else-if="feed.type === 'DisplayName'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| 📃 #[span.name(v-text="feed.previousDisplayName")] #[i.el-icon-right] #[span.name(v-text="feed.displayName")]
|
||
div(v-else-if="feed.type === 'TrustLevel'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| 🤝 #[span.name(v-text="feed.displayName")] {{ feed.previousTrustLevel }} #[i.el-icon-right] {{ feed.trustLevel }}
|
||
div(v-else-if="feed.type === 'showAvatar'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| 👀 #[span.name(v-text="feed.sourceDisplayName")]
|
||
div(v-else-if="feed.type === 'hideAvatar'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| 🙈 #[span.name(v-text="feed.sourceDisplayName")]
|
||
div(v-else-if="feed.type === 'block'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| 🛑 #[span.name(v-text="feed.sourceDisplayName")] has blocked you
|
||
div(v-else-if="feed.type === 'mute'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| 🔇 #[span.name(v-text="feed.sourceDisplayName")] has muted you
|
||
div(v-else-if="feed.type === 'unmute'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| 🎤 #[span.name(v-text="feed.sourceDisplayName")] has unmuted you
|
||
template(v-else)
|
||
template(v-for="feed in wristFeed")
|
||
.x-friend-item(v-if="feed.type === 'GPS'" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| #[span.name(v-text="feed.displayName")] is in #[location(:location="feed.location[0]")]
|
||
div(v-else-if="feed.type === 'Offline'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| #[span.name(v-text="feed.displayName")] has logged out
|
||
div(v-else-if="feed.type === 'Online'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| #[span.name(v-text="feed.displayName")] has logged in
|
||
div(v-else-if="feed.type === 'Status'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| #[span.name(v-text="feed.displayName")] is #[i.x-user-status(:class="userStatusClass(feed.status[0])")] {{feed.status[0].statusDescription}}
|
||
div(v-else-if="feed.type === 'OnPlayerJoined'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| #[span.name(v-text="feed.data")] has joined
|
||
div(v-else-if="feed.type === 'OnPlayerLeft'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| #[span.name(v-text="feed.data")] has left
|
||
div(v-else-if="feed.type === 'OnPlayerJoining'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| #[span.name(v-text="feed.displayName")] is joining
|
||
div(v-else-if="feed.type === 'Location'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
location(:location="feed.data[0]" :hint="feed.data[1]")
|
||
div(v-else-if="feed.type === 'invite'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| #[span.name(v-text="feed.senderUsername")] has invited you to #[location(:location="feed.details.worldId")] #[span(v-text="feed.details.inviteMessage")]
|
||
div(v-else-if="feed.type === 'requestInvite'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| #[span.name(v-text="feed.senderUsername")] has requested an invite #[span(v-text="feed.details.requestMessage")]
|
||
div(v-else-if="feed.type === 'inviteResponse'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| #[span.name(v-text="feed.senderUsername")] has responded to your invite #[span(v-text="feed.details.responseMessage")]
|
||
div(v-else-if="feed.type === 'requestInviteResponse'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| #[span.name(v-text="feed.senderUsername")] has responded to your invite request #[span(v-text="feed.details.responseMessage")]
|
||
div(v-else-if="feed.type === 'friendRequest'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| #[span.name(v-text="feed.senderUsername")] has sent you a friend request
|
||
div(v-else-if="feed.type === 'Friend'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| #[span.name(v-text="feed.displayName")] is now your friend
|
||
div(v-else-if="feed.type === 'Unfriend'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| #[span.name(v-text="feed.displayName")] is no longer your friend
|
||
div(v-else-if="feed.type === 'DisplayName'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| #[span.name(v-text="feed.previousDisplayName")] changed their name to #[span.name(v-text="feed.displayName")]
|
||
div(v-else-if="feed.type === 'TrustLevel'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| #[span.name(v-text="feed.displayName")] trust level is now {{ feed.trustLevel }}
|
||
div(v-else-if="feed.type === 'showAvatar'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| #[span.name(v-text="feed.sourceDisplayName")] has shown your avatar
|
||
div(v-else-if="feed.type === 'hideAvatar'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| #[span.name(v-text="feed.sourceDisplayName")] has hidden your avatar
|
||
div(v-else-if="feed.type === 'block'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| #[span.name(v-text="feed.sourceDisplayName")] has blocked you
|
||
div(v-else-if="feed.type === 'mute'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| #[span.name(v-text="feed.sourceDisplayName")] has muted you
|
||
div(v-else-if="feed.type === 'unmute'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||
.detail
|
||
span.extra
|
||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||
| #[span.name(v-text="feed.sourceDisplayName")] has unmuted you
|
||
.x-containerbottom
|
||
div(style="display:flex;flex-direction:row")
|
||
template(v-if="devices.length")
|
||
div(v-for="device in devices" style="flex:none;text-align:center;width:58px;height:74px")
|
||
template(v-if="device[0] === 'tracker'")
|
||
img(v-if="device[1] !== 'connected'" src="images/tracker_status_off.png" style="width:32px;height:32px")
|
||
img(v-else-if="device[2] < 20" src="images/tracker_status_ready_low.png" style="width:32px;height:32px")
|
||
img(v-else src="images/tracker_status_ready.png" style="width:32px;height:32px")
|
||
br
|
||
span {{ device[2] }}%
|
||
template(v-else-if="device[0] === 'leftController'")
|
||
img(v-if="device[1] !== 'connected'" src="images/controller_status_off.png" style="width:32px;height:32px")
|
||
img(v-else-if="device[2] < 20" src="images/controller_status_ready_low.png" style="width:32px;height:32px")
|
||
img(v-else src="images/controller_status_ready.png" style="width:32px;height:32px")
|
||
br
|
||
span L:{{ device[2] }}%
|
||
template(v-else-if="device[0] === 'rightController'")
|
||
img(v-if="device[1] !== 'connected'" src="images/controller_status_off.png" style="width:32px;height:32px")
|
||
img(v-else-if="device[2] < 20" src="images/controller_status_ready_low.png" style="width:32px;height:32px")
|
||
img(v-else src="images/controller_status_ready.png" style="width:32px;height:32px")
|
||
br
|
||
span R:{{ device[2] }}%
|
||
template(v-else-if="device[0] === 'controller'")
|
||
img(v-if="device[1] !== 'connected'" src="images/controller_status_off.png" style="width:32px;height:32px")
|
||
img(v-else-if="device[2] < 20" src="images/controller_status_ready_low.png" style="width:32px;height:32px")
|
||
img(v-else src="images/controller_status_ready.png" style="width:32px;height:32px")
|
||
br
|
||
span {{ device[2] }}%
|
||
template(v-else-if="device[0] === 'base'")
|
||
img(v-if="device[1] !== 'connected'" src="images/base_status_off.png" style="width:32px;height:32px")
|
||
img(v-else-if="device[2] < 20" src="images/base_status_ready_low.png" style="width:32px;height:32px")
|
||
img(v-else src="images/base_status_ready.png" style="width:32px;height:32px")
|
||
br
|
||
span {{ device[2] }}%
|
||
template(v-else)
|
||
img(v-if="device[1] !== 'connected'" src="images/other_status_off.png" style="width:32px;height:32px")
|
||
img(v-else-if="device[2] < 20" src="images/other_status_ready_low.png" style="width:32px;height:32px")
|
||
img(v-else src="images/other_status_ready.png" style="width:32px;height:32px")
|
||
br
|
||
span {{ device[2] }}%
|
||
.x-containerbottom
|
||
template(v-if="lastLocation.date != 0")
|
||
span(style="float:right") Timer: {{ lastLocationTimer }}
|
||
span(style="display:inline-block") Players: {{ lastLocation.playerList.length }}
|
||
span(style="display:inline-block;font-weight:bold") {{ lastLocation.friendList.length !== 0 ? ` (${lastLocation.friendList.length})` : ''}}
|
||
br
|
||
span(style="float:right") {{ currentTime | formatDate('YYYY-MM-DD HH:MI:SS AMPM') }}
|
||
span CPU {{ cpuUsage }}%
|
||
script(src="vr.js")
|