mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-04-25 01:33:51 +02:00
Bug fixes
This commit is contained in:
@@ -4130,11 +4130,11 @@ speechSynthesis.getVoices();
|
|||||||
}
|
}
|
||||||
this.lastLocationReset();
|
this.lastLocationReset();
|
||||||
this.clearNowPlaying();
|
this.clearNowPlaying();
|
||||||
this.updateVRConfigVars();
|
this.updateVRLastLocation();
|
||||||
}
|
}
|
||||||
if (isGameNoVR !== this.isGameNoVR) {
|
if (isGameNoVR !== this.isGameNoVR) {
|
||||||
this.isGameNoVR = isGameNoVR;
|
this.isGameNoVR = isGameNoVR;
|
||||||
this.updateVRConfigVars();
|
this.updateVRLastLocation();
|
||||||
}
|
}
|
||||||
if (isSteamVRRunning !== this.isSteamVRRunning) {
|
if (isSteamVRRunning !== this.isSteamVRRunning) {
|
||||||
this.isSteamVRRunning = isSteamVRRunning;
|
this.isSteamVRRunning = isSteamVRRunning;
|
||||||
@@ -6044,10 +6044,11 @@ speechSynthesis.getVoices();
|
|||||||
var ref = this.friends.get(id);
|
var ref = this.friends.get(id);
|
||||||
if (ref) {
|
if (ref) {
|
||||||
ref.memo = String(memo || '');
|
ref.memo = String(memo || '');
|
||||||
ref.$nickName = '';
|
|
||||||
if (memo) {
|
if (memo) {
|
||||||
var array = memo.split('\n');
|
var array = memo.split('\n');
|
||||||
ref.$nickName = array[0];
|
ref.$nickName = array[0];
|
||||||
|
} else {
|
||||||
|
ref.$nickName = '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -7545,6 +7546,10 @@ speechSynthesis.getVoices();
|
|||||||
) {
|
) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (entry.type === 'VideoPlay') {
|
||||||
|
// event time can be before last gameLog entry
|
||||||
|
this.updateSharedFeed(true);
|
||||||
|
}
|
||||||
this.gameLogTable.data.push(entry);
|
this.gameLogTable.data.push(entry);
|
||||||
this.sweepGameLog();
|
this.sweepGameLog();
|
||||||
this.updateSharedFeed(false);
|
this.updateSharedFeed(false);
|
||||||
@@ -7713,7 +7718,7 @@ speechSynthesis.getVoices();
|
|||||||
gameLog.userDisplayName
|
gameLog.userDisplayName
|
||||||
);
|
);
|
||||||
if (typeof ref !== 'undefined') {
|
if (typeof ref !== 'undefined') {
|
||||||
time = new Date().getTime() - ref.joinTime;
|
time = Date.now() - ref.joinTime;
|
||||||
this.lastLocation.playerList.delete(
|
this.lastLocation.playerList.delete(
|
||||||
gameLog.userDisplayName
|
gameLog.userDisplayName
|
||||||
);
|
);
|
||||||
@@ -7748,7 +7753,8 @@ speechSynthesis.getVoices();
|
|||||||
this.addGameLogVideo(gameLog, location, userId, pushToTable);
|
this.addGameLogVideo(gameLog, location, userId, pushToTable);
|
||||||
return;
|
return;
|
||||||
case 'api-request':
|
case 'api-request':
|
||||||
if (!this.isGameRunning) {
|
var bias = Date.parse(gameLog.dt) + 60 * 1000;
|
||||||
|
if (!this.isGameRunning || bias < Date.now()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var userId = '';
|
var userId = '';
|
||||||
@@ -9834,7 +9840,10 @@ speechSynthesis.getVoices();
|
|||||||
);
|
);
|
||||||
|
|
||||||
var downloadProgressStateChange = function () {
|
var downloadProgressStateChange = function () {
|
||||||
this.updateVRConfigVars();
|
AppApi.ExecuteVrFeedFunction(
|
||||||
|
'updateDownloadProgress',
|
||||||
|
`${$app.downloadProgress}`
|
||||||
|
);
|
||||||
};
|
};
|
||||||
$app.watch.downloadProgress = downloadProgressStateChange;
|
$app.watch.downloadProgress = downloadProgressStateChange;
|
||||||
|
|
||||||
@@ -9865,9 +9874,6 @@ speechSynthesis.getVoices();
|
|||||||
notificationTimeout: this.notificationTimeout,
|
notificationTimeout: this.notificationTimeout,
|
||||||
notificationTheme,
|
notificationTheme,
|
||||||
backgroundEnabled: this.vrBackgroundEnabled,
|
backgroundEnabled: this.vrBackgroundEnabled,
|
||||||
isGameRunning: this.isGameRunning,
|
|
||||||
isGameNoVR: this.isGameNoVR,
|
|
||||||
downloadProgress: this.downloadProgress,
|
|
||||||
progressPie
|
progressPie
|
||||||
};
|
};
|
||||||
var json = JSON.stringify(VRConfigVars);
|
var json = JSON.stringify(VRConfigVars);
|
||||||
@@ -9876,7 +9882,6 @@ speechSynthesis.getVoices();
|
|||||||
};
|
};
|
||||||
|
|
||||||
$app.methods.updateVRLastLocation = function () {
|
$app.methods.updateVRLastLocation = function () {
|
||||||
this.updateVRConfigVars();
|
|
||||||
var lastLocation = {
|
var lastLocation = {
|
||||||
date: this.lastLocation.date,
|
date: this.lastLocation.date,
|
||||||
location: this.lastLocation.location,
|
location: this.lastLocation.location,
|
||||||
@@ -10655,10 +10660,11 @@ speechSynthesis.getVoices();
|
|||||||
var ref = this.friends.get(userId);
|
var ref = this.friends.get(userId);
|
||||||
if (ref) {
|
if (ref) {
|
||||||
ref.memo = String(memo || '');
|
ref.memo = String(memo || '');
|
||||||
ref.$nickName = '';
|
|
||||||
if (memo) {
|
if (memo) {
|
||||||
var array = memo.split('\n');
|
var array = memo.split('\n');
|
||||||
ref.$nickName = array[0];
|
ref.$nickName = array[0];
|
||||||
|
} else {
|
||||||
|
ref.$nickName = '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -12521,7 +12527,7 @@ speechSynthesis.getVoices();
|
|||||||
|
|
||||||
$app.methods.saveSetWorldTagsDialog = function () {
|
$app.methods.saveSetWorldTagsDialog = function () {
|
||||||
var D = this.setWorldTagsDialog;
|
var D = this.setWorldTagsDialog;
|
||||||
var oldTags = D.tags.split(',');;
|
var oldTags = D.tags.split(',');
|
||||||
var tags = [];
|
var tags = [];
|
||||||
oldTags.forEach((tag) => {
|
oldTags.forEach((tag) => {
|
||||||
if (tag) {
|
if (tag) {
|
||||||
@@ -15223,7 +15229,7 @@ speechSynthesis.getVoices();
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
this.downloadCurrent.type !== 'Auto' &&
|
this.downloadCurrent.type !== 'Auto' ||
|
||||||
!this.cacheAutoDownloadHistory.has(assetUrl)
|
!this.cacheAutoDownloadHistory.has(assetUrl)
|
||||||
) {
|
) {
|
||||||
this.cacheAutoDownloadHistory.add(assetUrl);
|
this.cacheAutoDownloadHistory.add(assetUrl);
|
||||||
|
|||||||
@@ -79,8 +79,8 @@ html
|
|||||||
el-select(v-model="feedTable.filter" @change="feedTableLookup" multiple clearable collapse-tags style="flex:1" placeholder="Filter")
|
el-select(v-model="feedTable.filter" @change="feedTableLookup" multiple clearable collapse-tags style="flex:1" placeholder="Filter")
|
||||||
el-option(v-once v-for="type in ['GPS', 'Online', 'Offline', 'Status', 'Avatar']" :key="type" :label="type" :value="type")
|
el-option(v-once v-for="type in ['GPS', 'Online', 'Offline', 'Status', 'Avatar']" :key="type" :label="type" :value="type")
|
||||||
el-input(v-model="feedTable.search" placeholder="Search" @keyup.native.13="feedTableLookup" @change="feedTableLookup" clearable style="flex:none;width:150px;margin:0 10px")
|
el-input(v-model="feedTable.search" placeholder="Search" @keyup.native.13="feedTableLookup" @change="feedTableLookup" clearable style="flex:none;width:150px;margin:0 10px")
|
||||||
el-tooltip(placement="bottom" content="Clear feed" :disabled="hideTooltips")
|
//- el-tooltip(placement="bottom" content="Clear feed" :disabled="hideTooltips")
|
||||||
el-button(type="default" @click="clearFeed()" icon="el-icon-delete" circle style="flex:none")
|
//- el-button(type="default" @click="clearFeed()" icon="el-icon-delete" circle style="flex:none")
|
||||||
el-table-column(type="expand" width="20")
|
el-table-column(type="expand" width="20")
|
||||||
template(v-once #default="scope")
|
template(v-once #default="scope")
|
||||||
div(style="position:relative;font-size:14px")
|
div(style="position:relative;font-size:14px")
|
||||||
|
|||||||
@@ -170,6 +170,17 @@ import configRepository from './repository/config.js';
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var removeFromArray = function (array, item) {
|
||||||
|
var {length} = array;
|
||||||
|
for (var i = 0; i < length; ++i) {
|
||||||
|
if (array[i] === item) {
|
||||||
|
array.splice(i, 1);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
var $app = {
|
var $app = {
|
||||||
data: {
|
data: {
|
||||||
// 1 = 대시보드랑 손목에 보이는거
|
// 1 = 대시보드랑 손목에 보이는거
|
||||||
@@ -178,6 +189,7 @@ import configRepository from './repository/config.js';
|
|||||||
currentTime: new Date().toJSON(),
|
currentTime: new Date().toJSON(),
|
||||||
cpuUsage: 0,
|
cpuUsage: 0,
|
||||||
config: {},
|
config: {},
|
||||||
|
downloadProgress: 0,
|
||||||
nowPlaying: {
|
nowPlaying: {
|
||||||
url: '',
|
url: '',
|
||||||
name: '',
|
name: '',
|
||||||
@@ -289,6 +301,10 @@ import configRepository from './repository/config.js';
|
|||||||
this.config = JSON.parse(json);
|
this.config = JSON.parse(json);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
$app.methods.updateDownloadProgress = function (progress) {
|
||||||
|
this.downloadProgress = parseInt(progress, 10);
|
||||||
|
};
|
||||||
|
|
||||||
$app.methods.nowPlayingUpdate = function (json) {
|
$app.methods.nowPlayingUpdate = function (json) {
|
||||||
this.nowPlaying = JSON.parse(json);
|
this.nowPlaying = JSON.parse(json);
|
||||||
if (this.appType === '2') {
|
if (this.appType === '2') {
|
||||||
|
|||||||
764
html/src/vr.pug
764
html/src/vr.pug
@@ -12,373 +12,405 @@ html
|
|||||||
link(rel="stylesheet" href="https://fonts.googleapis.com/css?family=Noto+Sans+JP|Noto+Sans+KR&display=swap")
|
link(rel="stylesheet" href="https://fonts.googleapis.com/css?family=Noto+Sans+JP|Noto+Sans+KR&display=swap")
|
||||||
link(rel="stylesheet" href="vr.css")
|
link(rel="stylesheet" href="vr.css")
|
||||||
body
|
body
|
||||||
.x-app#x-app(v-if="appType === '1'" class="x-app-type" :class="{ background: config && config.backgroundEnabled }")
|
.x-app#x-app(class="x-app-type")
|
||||||
.x-container(style="flex:1")
|
template(v-if="appType === '1'" :class="{ background: config && config.backgroundEnabled }")
|
||||||
.x-friend-list(ref="list" style="color:#aaa")
|
.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" :hint="feed.worldName")]
|
||||||
|
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")] ✔
|
||||||
|
template(v-if="feed.worldName")
|
||||||
|
| #[location(:location="feed.location" :hint="feed.worldName")]
|
||||||
|
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")]
|
||||||
|
template(v-if="feed.statusDescription === feed.previousStatusDescription")
|
||||||
|
i.x-user-status(:class="statusClass(feed.previousStatus)")
|
||||||
|
i.el-icon-right
|
||||||
|
i.x-user-status(:class="statusClass(feed.status)")
|
||||||
|
template(v-else)
|
||||||
|
| #[i.x-user-status(:class="statusClass(feed.status)")] {{feed.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.displayName")]
|
||||||
|
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.displayName")]
|
||||||
|
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.location" :hint="feed.worldName")
|
||||||
|
div(v-else-if="feed.type === 'VideoPlay'" 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")]
|
||||||
|
template(v-if="feed.videoName")
|
||||||
|
| #[span(v-text="feed.videoName")]
|
||||||
|
template(v-else)
|
||||||
|
| #[span(v-text="feed.videoUrl")]
|
||||||
|
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" :hint="feed.details.worldName")] #[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 === 'PortalSpawn'" 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")]
|
||||||
|
template(v-if="feed.worldName")
|
||||||
|
| #[location(:location="feed.instanceId" :hint="feed.worldName")]
|
||||||
|
div(v-else-if="feed.type === 'AvatarChange'" 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.name }}
|
||||||
|
template(v-if="feed.description && feed.description !== feed.name")
|
||||||
|
| - {{ feed.description }}
|
||||||
|
div(v-else-if="feed.type === 'Event'" class="x-friend-item")
|
||||||
|
.detail
|
||||||
|
span.extra
|
||||||
|
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||||||
|
| 🛑 #[span.name(v-text="feed.data")]
|
||||||
|
div(v-else-if="feed.type === 'BlockedOnPlayerJoined'" 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 === 'BlockedOnPlayerLeft'" 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 === 'MutedOnPlayerJoined'" 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 === 'MutedOnPlayerLeft'" 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 === 'Blocked'" 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 === 'Unblocked'" 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 === 'Muted'" 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 === 'Unmuted'" 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")]
|
||||||
|
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" :hint="feed.worldName")]
|
||||||
|
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
|
||||||
|
template(v-if="feed.worldName")
|
||||||
|
| to #[location(:location="feed.location" :hint="feed.worldName")]
|
||||||
|
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")]
|
||||||
|
template(v-if="feed.statusDescription === feed.previousStatusDescription")
|
||||||
|
i.x-user-status(:class="statusClass(feed.previousStatus)")
|
||||||
|
i.el-icon-right
|
||||||
|
i.x-user-status(:class="statusClass(feed.status)")
|
||||||
|
template(v-else)
|
||||||
|
| #[i.x-user-status(:class="statusClass(feed.status)")] {{feed.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.displayName")] 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.displayName")] 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.location" :hint="feed.worldName")
|
||||||
|
div(v-else-if="feed.type === 'VideoPlay'" 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")] changed video to
|
||||||
|
template(v-if="feed.videoName")
|
||||||
|
| #[span(v-text="feed.videoName")]
|
||||||
|
template(v-else)
|
||||||
|
| #[span(v-text="feed.videoUrl")]
|
||||||
|
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" :hint="feed.details.worldName")] #[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 === 'PortalSpawn'" 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 spawned a portal
|
||||||
|
template(v-if="feed.worldName")
|
||||||
|
| to #[location(:location="feed.instanceId" :hint="feed.worldName")]
|
||||||
|
div(v-else-if="feed.type === 'AvatarChange'" 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")] changed into avatar {{ feed.name }}
|
||||||
|
template(v-if="feed.description && feed.description !== feed.name")
|
||||||
|
| - {{ feed.description }}
|
||||||
|
div(v-else-if="feed.type === 'Event'" class="x-friend-item")
|
||||||
|
.detail
|
||||||
|
span.extra
|
||||||
|
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||||||
|
| Event: #[span.name(v-text="feed.data")]
|
||||||
|
div(v-else-if="feed.type === 'BlockedOnPlayerJoined'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||||||
|
.detail
|
||||||
|
span.extra
|
||||||
|
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||||||
|
| Blocked user #[span.name(v-text="feed.displayName")] has joined
|
||||||
|
div(v-else-if="feed.type === 'BlockedOnPlayerLeft'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||||||
|
.detail
|
||||||
|
span.extra
|
||||||
|
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||||||
|
| Blocked user #[span.name(v-text="feed.displayName")] has left
|
||||||
|
div(v-else-if="feed.type === 'MutedOnPlayerJoined'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||||||
|
.detail
|
||||||
|
span.extra
|
||||||
|
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||||||
|
| Muted user #[span.name(v-text="feed.displayName")] has joined
|
||||||
|
div(v-else-if="feed.type === 'MutedOnPlayerLeft'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||||||
|
.detail
|
||||||
|
span.extra
|
||||||
|
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
||||||
|
| Muted user #[span.name(v-text="feed.displayName")] has left
|
||||||
|
div(v-else-if="feed.type === 'Blocked'" 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 blocked you
|
||||||
|
div(v-else-if="feed.type === 'Unblocked'" 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 unblocked you
|
||||||
|
div(v-else-if="feed.type === 'Muted'" 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 muted you
|
||||||
|
div(v-else-if="feed.type === 'Unmuted'" 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 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:62px;height:82px")
|
||||||
|
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="nowPlaying.playing")
|
||||||
|
span(style="float:right;padding-left:10px") {{ nowPlaying.remainingText }}
|
||||||
|
marquee-text {{ nowPlaying.name }}
|
||||||
|
div.np-progress-bar(:style="{ width: nowPlaying.percentage + '%' }")
|
||||||
template(v-if="config && config.minimalFeed")
|
template(v-if="config && config.minimalFeed")
|
||||||
template(v-for="feed in wristFeed")
|
template(v-if="downloadProgress === 100")
|
||||||
.x-friend-item(v-if="feed.type === 'GPS'" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
span(style="display:inline-block;margin-right:5px") #[i.el-icon-loading]
|
||||||
.detail
|
template(v-else-if="downloadProgress > 0")
|
||||||
span.extra
|
span(style="display:inline-block;margin-right:5px") {{ downloadProgress }}%
|
||||||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
template(v-if="lastLocation.date !== 0")
|
||||||
| #[span.name(v-text="feed.displayName")] #[location(:location="feed.location" :hint="feed.worldName")]
|
span(style="float:right") {{ lastLocationTimer }}
|
||||||
div(v-else-if="feed.type === 'Offline'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
span(style="display:inline-block") {{ lastLocation.playerList.length }}
|
||||||
.detail
|
span(style="display:inline-block;font-weight:bold") {{ lastLocation.friendList.length !== 0 ? ` (${lastLocation.friendList.length})` : ''}}
|
||||||
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")] ✔
|
|
||||||
template(v-if="feed.worldName")
|
|
||||||
| #[location(:location="feed.location" :hint="feed.worldName")]
|
|
||||||
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")]
|
|
||||||
template(v-if="feed.statusDescription === feed.previousStatusDescription")
|
|
||||||
i.x-user-status(:class="statusClass(feed.previousStatus)")
|
|
||||||
i.el-icon-right
|
|
||||||
i.x-user-status(:class="statusClass(feed.status)")
|
|
||||||
template(v-else)
|
|
||||||
| #[i.x-user-status(:class="statusClass(feed.status)")] {{feed.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.displayName")]
|
|
||||||
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.displayName")]
|
|
||||||
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.location" :hint="feed.worldName")
|
|
||||||
div(v-else-if="feed.type === 'VideoPlay'" 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")]
|
|
||||||
template(v-if="feed.videoName")
|
|
||||||
| #[span(v-text="feed.videoName")]
|
|
||||||
template(v-else)
|
|
||||||
| #[span(v-text="feed.videoUrl")]
|
|
||||||
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" :hint="feed.details.worldName")] #[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 === 'PortalSpawn'" 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")]
|
|
||||||
template(v-if="feed.worldName")
|
|
||||||
| #[location(:location="feed.instanceId" :hint="feed.worldName")]
|
|
||||||
div(v-else-if="feed.type === 'AvatarChange'" 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.name }}
|
|
||||||
template(v-if="feed.description && feed.description !== feed.name")
|
|
||||||
| - {{ feed.description }}
|
|
||||||
div(v-else-if="feed.type === 'Event'" class="x-friend-item")
|
|
||||||
.detail
|
|
||||||
span.extra
|
|
||||||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
|
||||||
| 🛑 #[span.name(v-text="feed.data")]
|
|
||||||
div(v-else-if="feed.type === 'VideoPlay'" 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 === 'BlockedOnPlayerJoined'" 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 === 'BlockedOnPlayerLeft'" 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 === 'MutedOnPlayerJoined'" 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 === 'MutedOnPlayerLeft'" 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")]
|
|
||||||
template(v-else)
|
template(v-else)
|
||||||
template(v-for="feed in wristFeed")
|
template(v-if="downloadProgress === 100")
|
||||||
.x-friend-item(v-if="feed.type === 'GPS'" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
span(style="display:inline-block;margin-right:5px") Downloading: #[i.el-icon-loading]
|
||||||
.detail
|
template(v-else-if="downloadProgress > 0")
|
||||||
span.extra
|
span(style="display:inline-block;margin-right:5px") Downloading: {{ downloadProgress }}%
|
||||||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
template(v-if="lastLocation.date !== 0")
|
||||||
| #[span.name(v-text="feed.displayName")] is in #[location(:location="feed.location" :hint="feed.worldName")]
|
span(style="float:right") Timer: {{ lastLocationTimer }}
|
||||||
div(v-else-if="feed.type === 'Offline'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
span(style="display:inline-block") Players: {{ lastLocation.playerList.length }}
|
||||||
.detail
|
span(style="display:inline-block;font-weight:bold") {{ lastLocation.friendList.length !== 0 ? ` (${lastLocation.friendList.length})` : ''}}
|
||||||
span.extra
|
br
|
||||||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
span(style="float:right") {{ currentTime | formatDate('YYYY-MM-DD HH:MI:SS AMPM') }}
|
||||||
| #[span.name(v-text="feed.displayName")] has logged out
|
span CPU {{ cpuUsage }}%
|
||||||
div(v-else-if="feed.type === 'Online'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
template(v-else)
|
||||||
.detail
|
svg(class="np-progress-circle")
|
||||||
span.extra
|
circle(class="np-progress-circle-stroke" cx="60" cy="60" stroke="white" r="30" fill="transparent" stroke-width="60")
|
||||||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
|
||||||
| #[span.name(v-text="feed.displayName")] has logged in
|
|
||||||
template(v-if="feed.worldName")
|
|
||||||
| to #[location(:location="feed.location" :hint="feed.worldName")]
|
|
||||||
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")]
|
|
||||||
template(v-if="feed.statusDescription === feed.previousStatusDescription")
|
|
||||||
i.x-user-status(:class="statusClass(feed.previousStatus)")
|
|
||||||
i.el-icon-right
|
|
||||||
i.x-user-status(:class="statusClass(feed.status)")
|
|
||||||
template(v-else)
|
|
||||||
| #[i.x-user-status(:class="statusClass(feed.status)")] {{feed.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.displayName")] 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.displayName")] 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.location" :hint="feed.worldName")
|
|
||||||
div(v-else-if="feed.type === 'VideoPlay'" 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")] changed video to
|
|
||||||
template(v-if="feed.videoName")
|
|
||||||
| #[span(v-text="feed.videoName")]
|
|
||||||
template(v-else)
|
|
||||||
| #[span(v-text="feed.videoUrl")]
|
|
||||||
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" :hint="feed.details.worldName")] #[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 === 'PortalSpawn'" 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 spawned a portal
|
|
||||||
template(v-if="feed.worldName")
|
|
||||||
| to #[location(:location="feed.instanceId" :hint="feed.worldName")]
|
|
||||||
div(v-else-if="feed.type === 'AvatarChange'" 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")] changed into avatar {{ feed.name }}
|
|
||||||
template(v-if="feed.description && feed.description !== feed.name")
|
|
||||||
| - {{ feed.description }}
|
|
||||||
div(v-else-if="feed.type === 'Event'" class="x-friend-item")
|
|
||||||
.detail
|
|
||||||
span.extra
|
|
||||||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
|
||||||
| Event: #[span.name(v-text="feed.data")]
|
|
||||||
div(v-else-if="feed.type === 'VideoPlay'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
|
||||||
.detail
|
|
||||||
span.extra
|
|
||||||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
|
||||||
| Now playing: #[span.name(v-text="feed.data")]
|
|
||||||
div(v-else-if="feed.type === 'BlockedOnPlayerJoined'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
|
||||||
.detail
|
|
||||||
span.extra
|
|
||||||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
|
||||||
| Blocked user #[span.name(v-text="feed.displayName")] has joined
|
|
||||||
div(v-else-if="feed.type === 'BlockedOnPlayerLeft'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
|
||||||
.detail
|
|
||||||
span.extra
|
|
||||||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
|
||||||
| Blocked user #[span.name(v-text="feed.displayName")] has left
|
|
||||||
div(v-else-if="feed.type === 'MutedOnPlayerJoined'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
|
||||||
.detail
|
|
||||||
span.extra
|
|
||||||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
|
||||||
| Muted user #[span.name(v-text="feed.displayName")] has joined
|
|
||||||
div(v-else-if="feed.type === 'MutedOnPlayerLeft'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
|
||||||
.detail
|
|
||||||
span.extra
|
|
||||||
span.time {{ feed.created_at | formatDate('HH:MI') }}
|
|
||||||
| Muted user #[span.name(v-text="feed.displayName")] has left
|
|
||||||
.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="nowPlaying.playing")
|
|
||||||
span(style="float:right;padding-left:10px") {{ nowPlaying.remainingText }}
|
|
||||||
marquee-text {{ nowPlaying.name }}
|
|
||||||
div.np-progress-bar(:style="{ width: nowPlaying.percentage + '%' }")
|
|
||||||
template(v-if="config && config.minimalFeed")
|
|
||||||
template(v-if="config.downloadProgress === 100")
|
|
||||||
span(style="display:inline-block;margin-right:5px") #[i.el-icon-loading]
|
|
||||||
template(v-else-if="config.downloadProgress > 0")
|
|
||||||
span(style="display:inline-block;margin-right:5px") {{ config.downloadProgress }}%
|
|
||||||
template(v-if="lastLocation.date !== 0")
|
|
||||||
span(style="float:right") {{ lastLocationTimer }}
|
|
||||||
span(style="display:inline-block") {{ lastLocation.playerList.length }}
|
|
||||||
span(style="display:inline-block;font-weight:bold") {{ lastLocation.friendList.length !== 0 ? ` (${lastLocation.friendList.length})` : ''}}
|
|
||||||
template(v-else)
|
|
||||||
template(v-if="config.downloadProgress === 100")
|
|
||||||
span(style="display:inline-block;margin-right:5px") Downloading: #[i.el-icon-loading]
|
|
||||||
template(v-else-if="config.downloadProgress > 0")
|
|
||||||
span(style="display:inline-block;margin-right:5px") Downloading: {{ config.downloadProgress }}%
|
|
||||||
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 }}%
|
|
||||||
svg(v-if="appType === '2'" class="np-progress-circle")
|
|
||||||
circle(class="np-progress-circle-stroke" cx="60" cy="60" stroke="white" r="30" fill="transparent" stroke-width="60")
|
|
||||||
script(src="vendor.js")
|
script(src="vendor.js")
|
||||||
script(src="vr.js")
|
script(src="vr.js")
|
||||||
|
|||||||
Reference in New Issue
Block a user