diff options
Diffstat (limited to 'web/html')
| -rw-r--r-- | web/html/component/aClientTable.html | 17 | ||||
| -rw-r--r-- | web/html/inbounds.html | 18 | ||||
| -rw-r--r-- | web/html/modals/inbound_info_modal.html | 6 |
3 files changed, 35 insertions, 6 deletions
diff --git a/web/html/component/aClientTable.html b/web/html/component/aClientTable.html index 53ec27a3..a7279e50 100644 --- a/web/html/component/aClientTable.html +++ b/web/html/component/aClientTable.html @@ -33,12 +33,17 @@ <a-switch v-model="client.enable" @change="switchEnableClient(record.id,client)"></a-switch> </template> <template slot="online" slot-scope="text, client, index"> - <template v-if="client.enable && isClientOnline(client.email)"> - <a-tag color="green">{{ i18n "online" }}</a-tag> - </template> - <template v-else> - <a-tag>{{ i18n "offline" }}</a-tag> - </template> + <a-popover :overlay-class-name="themeSwitcher.currentTheme"> + <template slot="content" > + {{ i18n "lastOnline" }}: [[ formatLastOnline(client.email) ]] + </template> + <template v-if="client.enable && isClientOnline(client.email)"> + <a-tag color="green">{{ i18n "online" }}</a-tag> + </template> + <template v-else> + <a-tag>{{ i18n "offline" }}</a-tag> + </template> + </a-popover> </template> <template slot="client" slot-scope="text, client"> <a-space direction="horizontal" :size="2"> diff --git a/web/html/inbounds.html b/web/html/inbounds.html index 1621807e..dfccdd70 100644 --- a/web/html/inbounds.html +++ b/web/html/inbounds.html @@ -807,6 +807,7 @@ defaultKey: '', clientCount: [], onlineClients: [], + lastOnlineMap: {}, isRefreshEnabled: localStorage.getItem("isRefreshEnabled") === "true" ? true : false, refreshing: false, refreshInterval: Number(localStorage.getItem("refreshInterval")) || 5000, @@ -835,6 +836,7 @@ return; } + await this.getLastOnlineMap(); await this.getOnlineUsers(); this.setInbounds(msg.obj); @@ -849,6 +851,11 @@ } this.onlineClients = msg.obj != null ? msg.obj : []; }, + async getLastOnlineMap() { + const msg = await HttpUtil.post('/panel/api/inbounds/lastOnline'); + if (!msg.success || !msg.obj) return; + this.lastOnlineMap = msg.obj || {} + }, async getDefaultSettings() { const msg = await HttpUtil.post('/panel/setting/defaultSettings'); if (!msg.success) { @@ -1493,6 +1500,17 @@ isClientOnline(email) { return this.onlineClients.includes(email); }, + getLastOnline(email) { + return this.lastOnlineMap[email] || null + }, + formatLastOnline(email) { + const ts = this.getLastOnline(email) + if (!ts) return '-' + if (this.datepicker === 'gregorian') { + return DateUtil.formatMillis(ts) + } + return DateUtil.convertToJalalian(moment(ts)) + }, isRemovable(dbInboundId) { return this.getInboundClients(this.dbInbounds.find(row => row.id === dbInboundId)).length > 1; }, diff --git a/web/html/modals/inbound_info_modal.html b/web/html/modals/inbound_info_modal.html index fe7d7a82..a15172f3 100644 --- a/web/html/modals/inbound_info_modal.html +++ b/web/html/modals/inbound_info_modal.html @@ -217,6 +217,12 @@ </template> </td> </tr> + <tr> + <td>{{ i18n "lastOnline" }}</td> + <td> + <a-tag>[[ app.formatLastOnline(infoModal.clientSettings && infoModal.clientSettings.email ? infoModal.clientSettings.email : '') ]]</a-tag> + </td> + </tr> <tr v-if="infoModal.clientSettings.comment"> <td>{{ i18n "comment" }}</td> <td> |
