Skip to content

Commit 8bc605d

Browse files
committed
added size
1 parent 7d8342f commit 8bc605d

File tree

6 files changed

+114
-5
lines changed

6 files changed

+114
-5
lines changed

src/components/ServerItem.vue

+5
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ function onClickLogs() {
3232
router.push(`/server-logs-list/${model.value!.uuid}`);
3333
}
3434
35+
function onClickSize() {
36+
router.push(`/server-size/${model.value!.uuid}`);
37+
}
38+
3539
function onClickStats() {
3640
router.push(`/server-stats/${model.value!.uuid}`);
3741
}
@@ -73,6 +77,7 @@ function onClickKnownPlayers() {
7377
<button class="column-right" type="button" @click="onClickDelete" :disabled="model!.isRunning">Delete</button>
7478
<button class="column-right" type="button" @click="onClickClone">Clone</button>
7579
<button class="column-right" type="button" @click="onClickLogs">Logs</button>
80+
<button class="column-right" type="button" @click="onClickSize">Size</button>
7681
<button class="column-right" type="button" @click="onClickStats" :disabled="!model!.isRunning">Stats</button>
7782
<button class="column-right" type="button" @click="onClickKnownPlayers">Known Players</button>
7883
</p>

src/plugins/router.ts

+2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import ServerLogsList from '../views/ServerLogsList.vue';
99
import ViewServerLog from '../views/ViewServerLog.vue';
1010
import PlayersList from '../views/PlayersList.vue';
1111
import ServerStats from '../views/ServerStats.vue';
12+
import ServerSize from '../views/ServerSize.vue';
1213
import PageNotFound from '../views/PageNotFound.vue';
1314

1415
const routes = [
@@ -20,6 +21,7 @@ const routes = [
2021
{ path: '/view-server/:id', component: ViewServer },
2122
{ path: '/server-logs-list/:id', component: ServerLogsList },
2223
{ path: '/server-stats/:id', component: ServerStats },
24+
{ path: '/server-size/:id', component: ServerSize },
2325
{ path: '/players-list/:id', component: PlayersList },
2426
{ path: '/view-server-log/:id/:log/:file', component: ViewServerLog },
2527
{ path: '/', redirect: '/servers-list' }

src/stores/servers.ts

+11-2
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,10 @@ import {
1616
recreateArsDockerImage,
1717
getPlayersFromLog,
1818
getKnownPlayers,
19-
getStats
19+
getStats,
20+
getSize
2021
} from '../utils/api';
21-
import { PlayerIdentityId, Server, DockerStats, Result, LogFile, ArsStatus } from '../utils/interfaces';
22+
import { PlayerIdentityId, Server, DockerStats, Result, LogFile, ArsStatus, ResultSize } from '../utils/interfaces';
2223

2324
interface State {
2425
servers: Server[];
@@ -107,6 +108,14 @@ export const useServersStore = defineStore('servers', {
107108
return result;
108109
}
109110
},
111+
async getSize(uuid: string): Promise<ResultSize | null> {
112+
const result: ResultSize | Result = await getSize(uuid);
113+
if ((result as unknown as Result).value === false) {
114+
return null;
115+
} else {
116+
return result;
117+
}
118+
},
110119
async getPublicIp(): Promise<string> {
111120
if (this.publicIp === '') {
112121
this.publicIp = await getPublicIp();

src/utils/api.ts

+20-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,15 @@
1-
import { IpAddress, Result, Server, ServerId, PlayerIdentityId, DockerStats, LogFile, ArsStatusResult, ArsStatus } from './interfaces';
1+
import {
2+
IpAddress,
3+
Result,
4+
Server,
5+
ServerId,
6+
PlayerIdentityId,
7+
DockerStats,
8+
LogFile,
9+
ArsStatusResult,
10+
ArsStatus,
11+
ResultSize
12+
} from './interfaces';
213
import { useLogsStore } from '../stores/logs';
314

415
const api = import.meta.env.VITE_API_URL;
@@ -104,6 +115,14 @@ export async function getStats(uuid: string): Promise<DockerStats> {
104115
return result;
105116
}
106117

118+
export async function getSize(uuid: string): Promise<ResultSize> {
119+
const jsonResponse = await fetch(`${apiProtocol}://${api}/api/server/${uuid}/size`);
120+
const result = (await jsonResponse.json()) as ResultSize;
121+
const logsStore = useLogsStore();
122+
logsStore.add(`Getting Size for Server with UUID: ${uuid}`);
123+
return result;
124+
}
125+
107126
export async function addServer(server: Server): Promise<string> {
108127
const jsonResponse = await fetch(`${apiProtocol}://${api}/api/add-server`, {
109128
method: 'POST',
@@ -140,7 +159,6 @@ export async function getPublicIp(): Promise<string> {
140159

141160
export async function getArsStatus(): Promise<ArsStatus> {
142161
const jsonResponse = await fetch(`${apiProtocol}://${api}/api/get-ars-status`);
143-
144162
const result = (await jsonResponse.json()) as ArsStatusResult;
145163
const logsStore = useLogsStore();
146164
logsStore.add(`ARS status fetched`);
@@ -149,7 +167,6 @@ export async function getArsStatus(): Promise<ArsStatus> {
149167

150168
export async function recreateArsDockerImage(): Promise<boolean> {
151169
const jsonResponse = await fetch(`${apiProtocol}://${api}/api/recreate-ars-docker-image`);
152-
153170
const result = (await jsonResponse.json()) as Result;
154171
const logsStore = useLogsStore();
155172
logsStore.add(`ARS docker image recreation started`);

src/utils/interfaces.ts

+9
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,15 @@ export interface Result {
1212
value: boolean;
1313
}
1414

15+
export interface ResultSize {
16+
profileDir: string;
17+
serverDir: string;
18+
modsDir: string;
19+
logsDir: string;
20+
allMods: string;
21+
allLogs: string;
22+
}
23+
1524
export interface LogFile {
1625
logFile: string;
1726
}

src/views/ServerSize.vue

+67
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
<script setup lang="ts">
2+
import { computed, onMounted, ref } from 'vue';
3+
import { useRoute } from 'vue-router';
4+
import { useServersStore } from '../stores/servers';
5+
import Loading from '../components/Loading.vue';
6+
import NotFound from '../components/NotFound.vue';
7+
import { ResultSize } from '../utils/interfaces';
8+
9+
const route = useRoute();
10+
11+
const loading = ref(true);
12+
const found = ref(false);
13+
14+
const serversStore = useServersStore();
15+
16+
const size = ref<ResultSize>({
17+
profileDir: 'unknown',
18+
serverDir: 'unknown',
19+
modsDir: 'unknown',
20+
logsDir: 'unknown',
21+
allMods: 'unknown',
22+
allLogs: 'unknown'
23+
});
24+
25+
async function getSize() {
26+
const result = await serversStore.getSize(route.params.id as string);
27+
if (result) {
28+
size.value = result;
29+
found.value = true;
30+
}
31+
loading.value = false;
32+
}
33+
34+
const allMods = computed(() => {
35+
const mods = size.value.allMods.split('\n');
36+
mods.pop();
37+
mods.pop();
38+
return mods.join('\n');
39+
});
40+
41+
const allLogs = computed(() => {
42+
const logs = size.value.allLogs.split('\n');
43+
logs.pop();
44+
logs.pop();
45+
return logs.join('\n');
46+
});
47+
48+
onMounted(async () => {
49+
getSize();
50+
});
51+
</script>
52+
53+
<template>
54+
<Loading v-if="loading" />
55+
<NotFound v-else-if="!found" />
56+
<div v-else>
57+
<h1>Arma Reforger Server Size</h1>
58+
<h2>Profile: {{ size.profileDir }}</h2>
59+
<h3>Mods: {{ size.modsDir }}</h3>
60+
<pre v-html="allMods"></pre>
61+
<h3>Logs: {{ size.logsDir }}</h3>
62+
<pre v-html="allLogs"></pre>
63+
<h2>Server: {{ size.serverDir }}</h2>
64+
</div>
65+
</template>
66+
67+
<style scoped></style>

0 commit comments

Comments
 (0)