From bea19a263db88fef44b4356082b199fbfcc39a25 Mon Sep 17 00:00:00 2001
From: "Shishkevich D." <135337715+shishkevichd@users.noreply.github.com>
Date: Sun, 6 Apr 2025 16:40:33 +0700
Subject: Code refactoring (#2865)
* refactor: use vue inline styles in entire application
* refactor: setting row in dashboard page
* refactor: use blob for download file in text modal
* refactor: move all html templates in `web/html` folder
* refactor: `DeviceUtils` -> `MediaQueryMixin`
The transition to mixins has been made, as they can update themselves.
* chore: pretty right buttons in `outbounds` tab in xray settings
* refactor: add translations for system status
* refactor: adjust gutter spacing in setting list item
* refactor: use native `a-input-password` for password field
* chore: return old system status
with new translations
* chore: add missing translation
---
web/html/inbounds.html | 1530 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 1530 insertions(+)
create mode 100644 web/html/inbounds.html
(limited to 'web/html/inbounds.html')
diff --git a/web/html/inbounds.html b/web/html/inbounds.html
new file mode 100644
index 00000000..cadcb95a
--- /dev/null
+++ b/web/html/inbounds.html
@@ -0,0 +1,1530 @@
+
+
+{{template "head" .}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
[[ total.clients ]]
+
+
+ [[ clientEmail ]]
+
+ [[ total.deactive.length ]]
+
+
+
+ [[ clientEmail ]]
+
+ [[ total.depleted.length ]]
+
+
+
+ [[ clientEmail ]]
+
+ [[ total.expiring.length ]]
+
+
+
+ [[ clientEmail ]]
+
+ [[ onlineClients.length ]]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ i18n "pages.inbounds.addInbound" }}
+
+
+
+ {{ i18n "pages.inbounds.generalActions" }}
+
+ generalActions(a)" :theme="themeSwitcher.currentTheme">
+
+
+ {{ i18n "pages.inbounds.importInbound" }}
+
+
+
+ {{ i18n "pages.inbounds.export" }}
+
+
+
+ {{ i18n "pages.inbounds.export" }} - {{ i18n "pages.settings.subSettings" }}
+
+
+
+ {{ i18n "pages.inbounds.resetAllTraffic" }}
+
+
+
+ {{ i18n "pages.inbounds.resetAllClientTraffics" }}
+
+
+
+ {{ i18n "pages.inbounds.delDepletedClients" }}
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ i18n "pages.inbounds.autoRefresh" }}
+
+
+
+
+ {{ i18n "pages.inbounds.autoRefreshInterval" }}
+
+ [[ key ]]s
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ i18n "none" }}
+ {{ i18n "disabled" }}
+ {{ i18n "depleted" }}
+ {{ i18n "depletingSoon" }}
+ {{ i18n "online" }}
+
+
+
+
+
+ e.preventDefault()" type="more" :style="{ fontSize: '20px', textDecoration: 'solid' }">
+ clickAction(a, dbInbound)" :theme="themeSwitcher.currentTheme">
+
+
+ {{ i18n "edit" }}
+
+
+
+ {{ i18n "qrCode" }}
+
+
+
+
+ {{ i18n "pages.client.add"}}
+
+
+
+ {{ i18n "pages.client.bulk"}}
+
+
+
+ {{ i18n "pages.inbounds.resetInboundClientTraffics"}}
+
+
+
+ {{ i18n "pages.inbounds.export"}}
+
+
+
+ {{ i18n "pages.inbounds.export"}} - {{ i18n "pages.settings.subSettings" }}
+
+
+
+ {{ i18n "pages.inbounds.delDepletedClients" }}
+
+
+
+
+
+ {{ i18n "info"}}
+
+
+
+
+ {{ i18n "pages.inbounds.exportInbound" }}
+
+
+ {{ i18n "pages.inbounds.resetTraffic" }}
+
+
+ {{ i18n "pages.inbounds.clone"}}
+
+
+
+ {{ i18n "delete"}}
+
+
+
+
+ {{ i18n "pages.inbounds.enable" }}
+
+
+
+
+
+ [[ dbInbound.protocol ]]
+
+ [[ dbInbound.toInbound().stream.network ]]
+ TLS
+ Reality
+
+
+
+
+ [[ clientCount[dbInbound.id].clients ]]
+
+
+ [[ clientEmail ]]
+
+ [[ clientCount[dbInbound.id].deactive.length ]]
+
+
+
+ [[ clientEmail ]]
+
+ [[ clientCount[dbInbound.id].depleted.length ]]
+
+
+
+ [[ clientEmail ]]
+
+ [[ clientCount[dbInbound.id].expiring.length ]]
+
+
+
+ [[ clientEmail ]]
+
+ [[ clientCount[dbInbound.id].online.length ]]
+
+
+
+
+
+
+
+
+ ↑[[ SizeFormatter.sizeFormat(dbInbound.up) ]]
+ ↓[[ SizeFormatter.sizeFormat(dbInbound.down) ]]
+
+
+ {{ i18n "remained" }}
+ [[ SizeFormatter.sizeFormat(dbInbound.total - dbInbound.up - dbInbound.down) ]]
+
+
+
+
+ [[ SizeFormatter.sizeFormat(dbInbound.up + dbInbound.down) ]] /
+
+ [[ SizeFormatter.sizeFormat(dbInbound.total) ]]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ [[ DateUtil.formatMillis(dbInbound.expiryTime) ]]
+
+
+ [[ DateUtil.convertToJalalian(moment(dbInbound.expiryTime)) ]]
+
+
+ [[ remainedDays(dbInbound._expiryTime) ]]
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ i18n "pages.inbounds.protocol" }}
+
+ [[ dbInbound.protocol ]]
+
+ [[ dbInbound.toInbound().stream.network ]]
+ tls
+ reality
+
+
+
+
+ {{ i18n "pages.inbounds.port" }}
+ [[ dbInbound.port ]]
+
+
+ {{ i18n "clients" }}
+
+ [[ clientCount[dbInbound.id].clients ]]
+
+
+ [[ clientEmail ]]
+
+ [[ clientCount[dbInbound.id].deactive.length ]]
+
+
+
+ [[ clientEmail ]]
+
+ [[ clientCount[dbInbound.id].depleted.length ]]
+
+
+
+ [[ clientEmail ]]
+
+ [[ clientCount[dbInbound.id].expiring.length ]]
+
+
+
+ [[ clientEmail ]]
+
+ [[ clientCount[dbInbound.id].online.length ]]
+
+
+
+
+ {{ i18n "pages.inbounds.traffic" }}
+
+
+
+
+
+ ↑[[ SizeFormatter.sizeFormat(dbInbound.up) ]]
+ ↓[[ SizeFormatter.sizeFormat(dbInbound.down) ]]
+
+
+ {{ i18n "remained" }}
+ [[ SizeFormatter.sizeFormat(dbInbound.total - dbInbound.up - dbInbound.down) ]]
+
+
+
+
+ [[ SizeFormatter.sizeFormat(dbInbound.up + dbInbound.down) ]] /
+
+ [[ SizeFormatter.sizeFormat(dbInbound.total) ]]
+
+
+
+
+
+
+
+
+
+
+
+ {{ i18n "pages.inbounds.expireDate" }}
+
+
+
+ [[ DateUtil.formatMillis(dbInbound.expiryTime) ]]
+
+
+ [[ DateUtil.convertToJalalian(moment(dbInbound.expiryTime)) ]]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{template "component/aClientTable"}}
+
+
+
+
+
+
+
+
+
+
+{{template "js" .}}
+
+
+
+
+{{template "component/aSidebar" .}}
+{{template "component/aThemeSwitch" .}}
+{{template "component/aCustomStatistic" .}}
+{{template "component/aPersianDatepicker" .}}
+