mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-04-27 10:43:48 +02:00
Previous Instance Info Dialog
This commit is contained in:
@@ -19239,6 +19239,65 @@ speechSynthesis.getVoices();
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// App: Previous Instance Info Dialog
|
||||||
|
|
||||||
|
$app.data.previousInstanceInfoDialogTable = {
|
||||||
|
data: [],
|
||||||
|
filters: [
|
||||||
|
{
|
||||||
|
prop: 'displayName',
|
||||||
|
value: ''
|
||||||
|
}
|
||||||
|
],
|
||||||
|
tableProps: {
|
||||||
|
stripe: true,
|
||||||
|
size: 'mini',
|
||||||
|
defaultSort: {
|
||||||
|
prop: 'created_at',
|
||||||
|
order: 'descending'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
pageSize: 10,
|
||||||
|
paginationProps: {
|
||||||
|
small: true,
|
||||||
|
layout: 'sizes,prev,pager,next,total',
|
||||||
|
pageSizes: [10, 25, 50, 100]
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
$app.data.previousInstanceInfoDialog = {
|
||||||
|
visible: false,
|
||||||
|
loading: false,
|
||||||
|
forceUpdate: 0,
|
||||||
|
$location: {}
|
||||||
|
};
|
||||||
|
|
||||||
|
$app.methods.showPreviousInstanceInfoDialog = function (instanceId) {
|
||||||
|
this.$nextTick(() =>
|
||||||
|
adjustDialogZ(this.$refs.previousInstanceInfoDialog.$el)
|
||||||
|
);
|
||||||
|
var D = this.previousInstanceInfoDialog;
|
||||||
|
D.$location = API.parseLocation(instanceId);
|
||||||
|
D.visible = true;
|
||||||
|
D.loading = true;
|
||||||
|
this.refreshPreviousInstanceInfoTable();
|
||||||
|
};
|
||||||
|
|
||||||
|
$app.methods.refreshPreviousInstanceInfoTable = function () {
|
||||||
|
var D = this.previousInstanceInfoDialog;
|
||||||
|
database.getPlayersFromInstance(D.$location.tag).then((data) => {
|
||||||
|
var array = [];
|
||||||
|
for (var entry of Array.from(data.values())) {
|
||||||
|
entry.timer = timeToText(entry.time);
|
||||||
|
array.push(entry);
|
||||||
|
}
|
||||||
|
array.sort(compareByCreatedAt);
|
||||||
|
this.previousInstanceInfoDialogTable.data = array;
|
||||||
|
D.loading = false;
|
||||||
|
workerTimers.setTimeout(() => D.forceUpdate++, 150);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
$app.data.dtHour12 = configRepository.getBool('VRCX_dtHour12');
|
$app.data.dtHour12 = configRepository.getBool('VRCX_dtHour12');
|
||||||
$app.data.dtIsoFormat = configRepository.getBool('VRCX_dtIsoFormat');
|
$app.data.dtIsoFormat = configRepository.getBool('VRCX_dtIsoFormat');
|
||||||
$app.methods.setDatetimeFormat = async function () {
|
$app.methods.setDatetimeFormat = async function () {
|
||||||
|
|||||||
@@ -2230,15 +2230,19 @@ html
|
|||||||
el-button(v-if="VRCXUpdateDialog.updatePending" type="primary" size="small" @click="restartVRCX") Install
|
el-button(v-if="VRCXUpdateDialog.updatePending" type="primary" size="small" @click="restartVRCX") Install
|
||||||
|
|
||||||
//- dialog: launch
|
//- dialog: launch
|
||||||
el-dialog.x-dialog(:before-close="beforeDialogClose" @mousedown.native="dialogMouseDown" @mouseup.native="dialogMouseUp" ref="launchDialog" :visible.sync="launchDialog.visible" title="Launch" width="400px")
|
el-dialog.x-dialog(:before-close="beforeDialogClose" @mousedown.native="dialogMouseDown" @mouseup.native="dialogMouseUp" ref="launchDialog" :visible.sync="launchDialog.visible" title="Launch" width="450px")
|
||||||
div #[span(v-text="launchDialog.shortUrl" style="word-break:break-all;font-size:12px")]
|
div #[span(v-text="launchDialog.shortUrl" style="word-break:break-all;font-size:12px")]
|
||||||
el-tooltip(placement="top" content="Copy to clipboard" :disabled="hideTooltips")
|
el-tooltip(placement="top" content="Copy to clipboard" :disabled="hideTooltips")
|
||||||
el-button(v-if="launchDialog.shortUrl" @click="copyInstanceUrl(launchDialog.shortUrl)" size="mini" icon="el-icon-s-order" style="margin-left:5px" circle)
|
el-button(v-if="launchDialog.shortUrl" @click="copyInstanceUrl(launchDialog.shortUrl)" size="mini" icon="el-icon-s-order" style="margin-left:5px" circle)
|
||||||
div(style="margin-top:10px") #[span(v-text="launchDialog.url" style="word-break:break-all;font-size:12px")]
|
div(style="margin-top:10px") #[span(v-text="launchDialog.url" style="word-break:break-all;font-size:12px")]
|
||||||
el-tooltip(placement="top" content="Copy to clipboard" :disabled="hideTooltips")
|
el-tooltip(placement="top" content="Copy to clipboard" :disabled="hideTooltips")
|
||||||
el-button(@click="copyInstanceUrl(launchDialog.url)" size="mini" icon="el-icon-s-order" style="margin-left:5px" circle)
|
el-button(@click="copyInstanceUrl(launchDialog.url)" size="mini" icon="el-icon-s-order" style="margin-left:5px" circle)
|
||||||
|
div(style="margin-top:10px") #[span(v-text="launchDialog.location" style="word-break:break-all;font-size:12px")]
|
||||||
|
el-tooltip(placement="top" content="Copy to clipboard" :disabled="hideTooltips")
|
||||||
|
el-button(@click="copyInstanceUrl(launchDialog.location)" size="mini" icon="el-icon-s-order" style="margin-left:5px" circle)
|
||||||
template(#footer)
|
template(#footer)
|
||||||
el-checkbox(v-model="launchDialog.desktop" style="float:left;margin-top:5px") Start as Desktop (No VR)
|
el-checkbox(v-model="launchDialog.desktop" style="float:left;margin-top:5px") Start as Desktop (No VR)
|
||||||
|
el-button(size="small" @click="showPreviousInstanceInfoDialog(launchDialog.location)") Info
|
||||||
el-button(size="small" @click="showInviteDialog(launchDialog.location)" :disabled="checkCanInvite(launchDialog.location)") Invite
|
el-button(size="small" @click="showInviteDialog(launchDialog.location)" :disabled="checkCanInvite(launchDialog.location)") Invite
|
||||||
el-button(type="primary" size="small" @click="launchGame(locationToLaunchArg(launchDialog.location))") Launch
|
el-button(type="primary" size="small" @click="launchGame(locationToLaunchArg(launchDialog.location))") Launch
|
||||||
|
|
||||||
@@ -2845,9 +2849,10 @@ html
|
|||||||
el-table-column(label="Time" prop="time" width="90" sortable)
|
el-table-column(label="Time" prop="time" width="90" sortable)
|
||||||
template(v-once #default="scope")
|
template(v-once #default="scope")
|
||||||
span(v-text="scope.row.timer")
|
span(v-text="scope.row.timer")
|
||||||
el-table-column(label="Action" width="60" align="right")
|
el-table-column(label="Action" width="90" align="right")
|
||||||
template(v-once #default="scope")
|
template(v-once #default="scope")
|
||||||
el-button(type="text" icon="el-icon-info" size="mini" @click="showLaunchDialog(scope.row.location)")
|
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(type="text" icon="el-icon-close" size="mini" @click="confirmDeleteGameLogUserInstance(scope.row)")
|
el-button(type="text" icon="el-icon-close" size="mini" @click="confirmDeleteGameLogUserInstance(scope.row)")
|
||||||
|
|
||||||
//- dialog Table: Previous Instances World
|
//- dialog Table: Previous Instances World
|
||||||
@@ -2876,10 +2881,32 @@ html
|
|||||||
el-table-column(label="Time" prop="time" width="90" sortable)
|
el-table-column(label="Time" prop="time" width="90" sortable)
|
||||||
template(v-once #default="scope")
|
template(v-once #default="scope")
|
||||||
span(v-text="scope.row.timer")
|
span(v-text="scope.row.timer")
|
||||||
el-table-column(label="Action" width="60" align="right")
|
el-table-column(label="Action" width="90" align="right")
|
||||||
template(v-once #default="scope")
|
template(v-once #default="scope")
|
||||||
|
el-button(type="text" icon="el-icon-tickets" size="mini" @click="showPreviousInstanceInfoDialog(scope.row.location)")
|
||||||
el-button(type="text" icon="el-icon-close" size="mini" @click="confirmDeleteGameLogWorldInstance(scope.row)")
|
el-button(type="text" icon="el-icon-close" size="mini" @click="confirmDeleteGameLogWorldInstance(scope.row)")
|
||||||
|
|
||||||
|
//- dialog Table: Previous Instance Info
|
||||||
|
el-dialog.x-dialog(:before-close="beforeDialogClose" @mousedown.native="dialogMouseDown" @mouseup.native="dialogMouseUp" ref="previousInstanceInfoDialog" :visible.sync="previousInstanceInfoDialog.visible" title="Previous Instance Info" width="800px")
|
||||||
|
location(:location="previousInstanceInfoDialog.$location.tag" style="font-size:14px")
|
||||||
|
el-input(v-model="previousInstanceInfoDialogTable.filters[0].value" placeholder="Search" style="display:block;width:150px;margin-top:15px")
|
||||||
|
data-tables(v-if="previousInstanceInfoDialog.visible" v-bind="previousInstanceInfoDialogTable" v-loading="previousInstanceInfoDialog.loading" style="margin-top:10px")
|
||||||
|
el-table-column(label="Date" prop="created_at" sortable width="110")
|
||||||
|
template(v-once #default="scope")
|
||||||
|
el-tooltip(placement="left")
|
||||||
|
template(#content)
|
||||||
|
span {{ scope.row.created_at | formatDate('long') }}
|
||||||
|
span {{ scope.row.created_at | formatDate('short') }}
|
||||||
|
el-table-column(label="Display Name" prop="displayName" sortable)
|
||||||
|
template(v-once #default="scope")
|
||||||
|
span.x-link(v-text="scope.row.displayName" @click="lookupUser(scope.row)")
|
||||||
|
el-table-column(label="Time" prop="time" width="90" sortable)
|
||||||
|
template(v-once #default="scope")
|
||||||
|
span(v-text="scope.row.timer")
|
||||||
|
el-table-column(label="Count" prop="count" width="90" sortable)
|
||||||
|
template(v-once #default="scope")
|
||||||
|
span(v-text="scope.row.count")
|
||||||
|
|
||||||
//- dialog: open source software notice
|
//- dialog: open source software notice
|
||||||
el-dialog.x-dialog(:before-close="beforeDialogClose" @mousedown.native="dialogMouseDown" @mouseup.native="dialogMouseUp" :visible.sync="ossDialog" title="Open Source Software Notice" width="650px")
|
el-dialog.x-dialog(:before-close="beforeDialogClose" @mousedown.native="dialogMouseDown" @mouseup.native="dialogMouseUp" :visible.sync="ossDialog" title="Open Source Software Notice" width="650px")
|
||||||
div(style="height:350px;overflow:hidden scroll;word-break:break-all")
|
div(style="height:350px;overflow:hidden scroll;word-break:break-all")
|
||||||
|
|||||||
@@ -1360,6 +1360,42 @@ class Database {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async getPlayersFromInstance(location) {
|
||||||
|
var players = new Map();
|
||||||
|
await sqliteService.execute(
|
||||||
|
(dbRow) => {
|
||||||
|
var time = 0;
|
||||||
|
var count = 0;
|
||||||
|
var created_at = dbRow[0];
|
||||||
|
if (dbRow[3]) {
|
||||||
|
time = dbRow[3];
|
||||||
|
}
|
||||||
|
var ref = players.get(dbRow[1]);
|
||||||
|
if (typeof ref !== 'undefined') {
|
||||||
|
time += ref.time;
|
||||||
|
count = ref.count;
|
||||||
|
created_at = ref.created_at;
|
||||||
|
}
|
||||||
|
if (dbRow[4] === 'OnPlayerJoined') {
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
var row = {
|
||||||
|
created_at,
|
||||||
|
displayName: dbRow[1],
|
||||||
|
userId: dbRow[2],
|
||||||
|
time,
|
||||||
|
count
|
||||||
|
};
|
||||||
|
players.set(row.displayName, row);
|
||||||
|
},
|
||||||
|
`SELECT created_at, display_name, user_id, time, type FROM gamelog_join_leave WHERE location = @location`,
|
||||||
|
{
|
||||||
|
'@location': location
|
||||||
|
}
|
||||||
|
);
|
||||||
|
return players;
|
||||||
|
}
|
||||||
|
|
||||||
async getpreviousDisplayNamesByUserId(ref) {
|
async getpreviousDisplayNamesByUserId(ref) {
|
||||||
var data = new Map();
|
var data = new Map();
|
||||||
await sqliteService.execute(
|
await sqliteService.execute(
|
||||||
|
|||||||
Reference in New Issue
Block a user