forked from FoundKeyGang/FoundKey
Improve job queue view
This commit is contained in:
parent
85d8e6f220
commit
5dbe1d448b
5 changed files with 54 additions and 19 deletions
|
@ -1245,10 +1245,15 @@ admin/views/queue.vue:
|
|||
domains:
|
||||
deliver: "配送"
|
||||
inbox: "受信"
|
||||
db: "データベース"
|
||||
objectStorage: "オブジェクトストレージ"
|
||||
state: "状態"
|
||||
states:
|
||||
delayed: "遅延"
|
||||
active: "処理中"
|
||||
delayed: "予約済み"
|
||||
waiting: "順番待ち"
|
||||
result-is-truncated: "結果は省略されています"
|
||||
other-queues: "その他のキュー"
|
||||
|
||||
admin/views/logs.vue:
|
||||
logs: "ログ"
|
||||
|
|
|
@ -176,6 +176,6 @@ export default Vue.extend({
|
|||
<style lang="stylus" scoped>
|
||||
.wptihjuy
|
||||
min-height 200px !important
|
||||
margin 0 -8px -8px -8px
|
||||
margin -8px
|
||||
|
||||
</style>
|
||||
|
|
|
@ -2,14 +2,28 @@
|
|||
<div>
|
||||
<ui-card>
|
||||
<template #title><fa :icon="faChartBar"/> {{ $t('title') }}</template>
|
||||
<section class="wptihjuy">
|
||||
<header><fa :icon="faPaperPlane"/> Deliver</header>
|
||||
<section>
|
||||
<header><fa :icon="faPaperPlane"/> {{ $t('domains.deliver') }}</header>
|
||||
<x-chart v-if="connection" :connection="connection" :limit="chartLimit" type="deliver"/>
|
||||
</section>
|
||||
<section class="wptihjuy">
|
||||
<header><fa :icon="faInbox"/> Inbox</header>
|
||||
<section>
|
||||
<header><fa :icon="faInbox"/> {{ $t('domains.inbox') }}</header>
|
||||
<x-chart v-if="connection" :connection="connection" :limit="chartLimit" type="inbox"/>
|
||||
</section>
|
||||
<section>
|
||||
<details>
|
||||
<summary>{{ $t('other-queues') }}</summary>
|
||||
<section>
|
||||
<header><fa :icon="faDatabase"/> {{ $t('domains.db') }}</header>
|
||||
<x-chart v-if="connection" :connection="connection" :limit="chartLimit" type="db"/>
|
||||
</section>
|
||||
<ui-hr/>
|
||||
<section>
|
||||
<header><fa :icon="faCloud"/> {{ $t('domains.objectStorage') }}</header>
|
||||
<x-chart v-if="connection" :connection="connection" :limit="chartLimit" type="objectStorage"/>
|
||||
</section>
|
||||
</details>
|
||||
</section>
|
||||
<section>
|
||||
<ui-button @click="removeAllJobs">{{ $t('remove-all-jobs') }}</ui-button>
|
||||
</section>
|
||||
|
@ -23,9 +37,13 @@
|
|||
<template #label>{{ $t('queue') }}</template>
|
||||
<option value="deliver">{{ $t('domains.deliver') }}</option>
|
||||
<option value="inbox">{{ $t('domains.inbox') }}</option>
|
||||
<option value="db">{{ $t('domains.db') }}</option>
|
||||
<option value="objectStorage">{{ $t('domains.objectStorage') }}</option>
|
||||
</ui-select>
|
||||
<ui-select v-model="state">
|
||||
<template #label>{{ $t('state') }}</template>
|
||||
<option value="active">{{ $t('states.active') }}</option>
|
||||
<option value="waiting">{{ $t('states.waiting') }}</option>
|
||||
<option value="delayed">{{ $t('states.delayed') }}</option>
|
||||
</ui-select>
|
||||
</ui-horizon-group>
|
||||
|
@ -48,7 +66,7 @@
|
|||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import { faTasks, faInbox } from '@fortawesome/free-solid-svg-icons';
|
||||
import { faTasks, faInbox, faDatabase, faCloud } from '@fortawesome/free-solid-svg-icons';
|
||||
import { faPaperPlane, faChartBar } from '@fortawesome/free-regular-svg-icons';
|
||||
import i18n from '../../i18n';
|
||||
import XChart from './queue.chart.vue';
|
||||
|
@ -68,7 +86,7 @@ export default Vue.extend({
|
|||
jobsLimit: 50,
|
||||
domain: 'deliver',
|
||||
state: 'delayed',
|
||||
faTasks, faPaperPlane, faInbox, faChartBar
|
||||
faTasks, faPaperPlane, faInbox, faChartBar, faDatabase, faCloud
|
||||
};
|
||||
},
|
||||
|
||||
|
|
|
@ -210,17 +210,25 @@ export default Vue.extend({
|
|||
}
|
||||
|
||||
this.$nextTick(() => {
|
||||
if (this.$refs.prefix) {
|
||||
this.$refs.label.style.left = (this.$refs.prefix.offsetLeft + this.$refs.prefix.offsetWidth) + 'px';
|
||||
if (this.$refs.prefix.offsetWidth) {
|
||||
this.$refs.input.style.paddingLeft = this.$refs.prefix.offsetWidth + 'px';
|
||||
// このコンポーネントが作成された時、非表示状態である場合がある
|
||||
// 非表示状態だと要素の幅などは0になってしまうので、定期的に計算する
|
||||
const clock = setInterval(() => {
|
||||
if (this.$refs.prefix) {
|
||||
this.$refs.label.style.left = (this.$refs.prefix.offsetLeft + this.$refs.prefix.offsetWidth) + 'px';
|
||||
if (this.$refs.prefix.offsetWidth) {
|
||||
this.$refs.input.style.paddingLeft = this.$refs.prefix.offsetWidth + 'px';
|
||||
}
|
||||
}
|
||||
}
|
||||
if (this.$refs.suffix) {
|
||||
if (this.$refs.suffix.offsetWidth) {
|
||||
this.$refs.input.style.paddingRight = this.$refs.suffix.offsetWidth + 'px';
|
||||
if (this.$refs.suffix) {
|
||||
if (this.$refs.suffix.offsetWidth) {
|
||||
this.$refs.input.style.paddingRight = this.$refs.suffix.offsetWidth + 'px';
|
||||
}
|
||||
}
|
||||
}
|
||||
}, 100);
|
||||
|
||||
this.$once('hook:beforeDestroy', () => {
|
||||
clearInterval(clock);
|
||||
});
|
||||
});
|
||||
|
||||
this.$on('keydown', (e: KeyboardEvent) => {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import define from '../../../define';
|
||||
import { deliverQueue, inboxQueue } from '../../../../../queue';
|
||||
import { deliverQueue, inboxQueue, dbQueue, objectStorageQueue } from '../../../../../queue';
|
||||
|
||||
export const meta = {
|
||||
tags: ['admin'],
|
||||
|
@ -13,9 +13,13 @@ export const meta = {
|
|||
export default define(meta, async (ps) => {
|
||||
const deliverJobCounts = await deliverQueue.getJobCounts();
|
||||
const inboxJobCounts = await inboxQueue.getJobCounts();
|
||||
const dbJobCounts = await dbQueue.getJobCounts();
|
||||
const objectStorageJobCounts = await objectStorageQueue.getJobCounts();
|
||||
|
||||
return {
|
||||
deliver: deliverJobCounts,
|
||||
inbox: inboxJobCounts
|
||||
inbox: inboxJobCounts,
|
||||
db: dbJobCounts,
|
||||
objectStorage: objectStorageJobCounts,
|
||||
};
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue