| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234 | <template>	<div class="container">		<metadata title="Admin | Statistics" />		<div class="columns">			<div				class="card column is-10-desktop is-offset-1-desktop is-12-mobile"			>				<header class="card-header">					<p class="card-header-title">Average Logs</p>				</header>				<div class="card-content">					<div class="content">						<table class="table">							<thead>								<tr>									<th>Name</th>									<th>Status</th>									<th>Stage</th>									<th>Jobs in queue</th>									<th>Jobs in progress</th>									<th>Concurrency</th>								</tr>							</thead>							<tbody>								<tr									v-for="module_ in modules"									:key="module_.name"								>									<td>										<router-link											:to="'?moduleName=' + module_.name"											>{{ module_.name }}</router-link										>									</td>									<td>{{ module_.status }}</td>									<td>{{ module_.stage }}</td>									<td>{{ module_.jobsInQueue }}</td>									<td>{{ module_.jobsInProgress }}</td>									<td>{{ module_.concurrency }}</td>								</tr>							</tbody>						</table>					</div>				</div>			</div>		</div>		<br />		<div class="columns" v-if="module_">			<div				class="card column is-10-desktop is-offset-1-desktop is-12-mobile"			>				<header class="card-header">					<p class="card-header-title">Average Logs</p>				</header>				<div class="card-content">					<div class="content">						<table class="table">							<thead>								<tr>									<th>Name</th>									<th>Payload</th>								</tr>							</thead>							<tbody>								<tr									v-for="job in module_.runningJobs"									:key="JSON.stringify(job)"								>									<td>{{ job.name }}</td>									<td>										{{ JSON.stringify(job.payload) }}									</td>								</tr>							</tbody>						</table>					</div>				</div>			</div>		</div>		<br />		<div class="columns" v-if="module_">			<div				class="card column is-10-desktop is-offset-1-desktop is-12-mobile"			>				<header class="card-header">					<p class="card-header-title">Average Logs</p>				</header>				<div class="card-content">					<div class="content">						<table class="table">							<thead>								<tr>									<th>Job name</th>									<th>Successful</th>									<th>Failed</th>									<th>Total</th>									<th>Average timing</th>								</tr>							</thead>							<tbody>								<tr									v-for="(job,									jobName) in module_.jobStatistics"									:key="jobName"								>									<td>{{ jobName }}</td>									<td>										{{ job.successful }}									</td>									<td>										{{ job.failed }}									</td>									<td>										{{ job.total }}									</td>									<td>										{{ job.averageTiming }}									</td>								</tr>							</tbody>						</table>					</div>				</div>			</div>		</div>	</div></template><script>import io from "../../io";export default {	components: {},	data() {		return {			modules: [],			module_: null		};	},	mounted() {		io.getSocket(socket => {			this.socket = socket;			if (this.socket.connected) this.init();			io.onConnect(() => this.init());		});	},	methods: {		init() {			this.socket.emit("utils.getModules", data => {				console.log(data);				if (data.status === "success") {					this.modules = data.modules;				}			});			if (this.$route.query.moduleName) {				this.socket.emit(					"utils.getModule",					this.$route.query.moduleName,					data => {						console.log(data);						if (data.status === "success") {							this.module_ = {								runningJobs: data.runningJobs,								jobStatistics: data.jobStatistics							};						}					}				);			}		},		round(number) {			return Math.round(number);		}	}};</script>//<style lang="scss" scoped>@import "styles/global.scss";.night-mode {	.table {		color: #ddd;		background-color: #222;		thead tr {			background: $night-mode-secondary;			td {				color: #fff;			}		}		tbody tr:hover {			background-color: #111 !important;		}		tbody tr:nth-child(even) {			background-color: #444;		}		strong {			color: #ddd;		}	}	.card {		background-color: $night-mode-secondary;		p {			color: #ddd;		}	}}body {	font-family: "Hind", sans-serif;}.user-avatar {	display: block;	max-width: 50px;	margin: 0 auto;}td {	vertical-align: middle;}.is-primary:focus {	background-color: $primary-color !important;}</style>
 |