Browse Source

chore: pretty `backup` and `xray version` modal (#2737)

* chore: pretty `backup & restore` modal

* chore: pretty `xray version` modal

* fix: new `xray version` modal style
Shishkevich D. 3 weeks ago
parent
commit
c6d27a4463

+ 48 - 40
web/html/xui/index.html

@@ -19,6 +19,18 @@
   .ant-card-dark h2 {
     color: var(--dark-color-text-primary);
   }
+  .ant-backup-list-item {
+    text-align: left;
+    user-select: none;
+    cursor: pointer;
+  }
+  .dark .ant-backup-list-item svg {
+    color: var(--dark-color-text-primary);
+  }
+  .dark .ant-backup-list, 
+  .dark .ant-xray-version-list {
+    border-color: var(--dark-color-stroke);
+  }
 </style>
 
 <body>
@@ -262,12 +274,14 @@
         @ok="() => versionModal.visible = false" :class="themeSwitcher.currentTheme" footer="">
       <a-alert type="warning" style="margin-bottom: 12px; width: fit-content"
         message='{{ i18n "pages.index.xraySwitchClickDesk" }}' show-icon></a-alert>
-      <template v-for="version, index in versionModal.versions">
-        <a-tag :color="index % 2 == 0 ? 'purple' : 'green'" style="margin-right: 12px; margin-bottom: 12px"
-          @click="switchV2rayVersion(version)">
-          [[ version ]]
-        </a-tag>
-      </template>
+      <a-list class="ant-xray-version-list" bordered style="width: 100%;">
+        <a-list-item class="ant-xray-version-list-item" v-for="version in versionModal.versions">
+          <a-list-item-meta>
+            <template #title>[[ version ]]</template>
+          </a-list-item-meta>
+          <a-radio :checked="version === `v${status.xray.version}`" @click="switchV2rayVersion(version)"></a-radio>
+        </a-list-item>
+      </a-list>
     </a-modal>
     <a-modal id="log-modal" v-model="logModal.visible"
         :closable="true" @cancel="() => logModal.visible = false"
@@ -314,20 +328,32 @@
       </a-form>
       <div class="ant-input" style="height: auto; max-height: 500px; overflow: auto; margin-top: 0.5rem;" v-html="logModal.formattedLogs"></div>
     </a-modal>
-    <a-modal id="backup-modal" v-model="backupModal.visible" :title="backupModal.title"
-        :closable="true" footer=""
+    <a-modal id="backup-modal" 
+        v-model="backupModal.visible" 
+        title='{{ i18n "pages.index.backupTitle" }}'
+        :closable="true"
+        footer=""
         :class="themeSwitcher.currentTheme">
-      <a-alert type="warning" style="margin-bottom: 10px; width: fit-content"
-        :message="backupModal.description"
-        show-icon>
-      </a-alert>
       <a-space direction="horizontal" style="text-align: center; margin-bottom: 10px;">
-        <a-button type="primary" @click="exportDatabase()">
-            [[ backupModal.exportText ]]
-        </a-button>
-        <a-button type="primary" @click="importDatabase()">
-            [[ backupModal.importText ]]
-        </a-button>
+        <a-list class="ant-backup-list" bordered style="width: 100%;">
+          <a-list-item class="ant-backup-list-item" @click="exportDatabase()">
+            <a-list-item-meta>
+              <template #title>{{ i18n "pages.index.exportDatabase" }}</template>
+              <template #description>{{ i18n "pages.index.exportDatabaseDesc" }}</template>
+            </a-list-item-meta>
+            <a-icon type="right" />
+          </a-list-item>
+          <a-list-item class="ant-backup-list-item" @click="importDatabase()">
+            <a-list-item-meta>
+              <template #title>{{ i18n "pages.index.importDatabase" }}</template>
+              <template #description>{{ i18n "pages.index.importDatabaseDesc" }}</template>
+              <templaet #avatar>
+                <a-icon type="import" />
+              </templaet>
+            </a-list-item-meta>
+            <a-icon type="right" />
+          </a-list-item>
+        </a-list>
       </a-space>
     </a-modal>
   </a-layout>
@@ -491,24 +517,11 @@
 
     const backupModal = {
         visible: false,
-        title: '',
-        description: '',
-        exportText: '',
-        importText: '',
-        show({
-            title = '{{ i18n "pages.index.backupTitle" }}',
-            description = '{{ i18n "pages.index.backupDescription" }}',
-            exportText = '{{ i18n "pages.index.exportDatabase" }}',
-            importText = '{{ i18n "pages.index.importDatabase" }}',
-        }) {
-            this.title = title;
-            this.description = description;
-            this.exportText = exportText;
-            this.importText = importText;
-            this.visible = true;
+        show() {
+          this.visible = true;
         },
         hide() {
-            this.visible = false;
+          this.visible = false;
         },
     };
 
@@ -604,12 +617,7 @@
                 txtModal.show('config.json', JSON.stringify(msg.obj, null, 2), 'config.json');
             },
             openBackup() {
-                backupModal.show({
-                    title: '{{ i18n "pages.index.backupTitle" }}',
-                    description: '{{ i18n "pages.index.backupDescription" }}',
-                    exportText: '{{ i18n "pages.index.exportDatabase" }}',
-                    importText: '{{ i18n "pages.index.importDatabase" }}',
-                });
+              backupModal.show();
             },
             exportDatabase() {
                 window.location = basePath + 'server/getDb';

+ 2 - 1
web/translation/translate.en_US.toml

@@ -113,9 +113,10 @@
 "config" = "Config"
 "backup" = "Backup & Restore"
 "backupTitle" = "Database Backup & Restore"
-"backupDescription" = "It is recommended to make a backup before restoring a database."
 "exportDatabase" = "Back Up"
+"exportDatabaseDesc" = "Click to download a .db file containing a backup of your current database to your device."
 "importDatabase" = "Restore"
+"importDatabaseDesc" = "Click to select and upload a .db file from your device to restore your database from a backup."
 
 [pages.inbounds]
 "title" = "Inbounds"

+ 4 - 3
web/translation/translate.es_ES.toml

@@ -113,9 +113,10 @@
 "config" = "Configuración"
 "backup" = "Copia de Seguridad y Restauración"
 "backupTitle" = "Copia de Seguridad y Restauración de la Base de Datos"
-"backupDescription" = "Recuerda hacer una copia de seguridad antes de importar una nueva base de datos."
-"exportDatabase" = "Descargar Base de Datos"
-"importDatabase" = "Cargar Base de Datos"
+"exportDatabase" = "Copia de seguridad"
+"exportDatabaseDesc" = "Haz clic para descargar un archivo .db que contiene una copia de seguridad de tu base de datos actual en tu dispositivo."
+"importDatabase" = "Restaurar"
+"importDatabaseDesc" = "Haz clic para seleccionar y cargar un archivo .db desde tu dispositivo para restaurar tu base de datos desde una copia de seguridad."
 
 [pages.inbounds]
 "title" = "Entradas"

+ 3 - 2
web/translation/translate.fa_IR.toml

@@ -113,9 +113,10 @@
 "config" = "پیکربندی"
 "backup" = "پشتیبان‌گیری"
 "backupTitle" = "پشتیبان‌گیری دیتابیس"
-"backupDescription" = "توصیه‌می‌شود قبل‌از واردکردن یک دیتابیس جدید، نسخه پشتیبان تهیه ‌کنید"
 "exportDatabase" = "پشتیبان‌گیری"
-"importDatabase" = "بازگرداندن"
+"exportDatabaseDesc" = "برای دانلود یک فایل .db حاوی پشتیبان از پایگاه داده فعلی خود به دستگاهتان کلیک کنید."
+"importDatabase" = "بازیابی"
+"importDatabaseDesc" = "برای انتخاب و آپلود یک فایل .db از دستگاهتان و بازیابی پایگاه داده از یک پشتیبان کلیک کنید."
 
 [pages.inbounds]
 "title" = "کاربران"

+ 2 - 1
web/translation/translate.id_ID.toml

@@ -113,9 +113,10 @@
 "config" = "Konfigurasi"
 "backup" = "Cadangan & Pulihkan"
 "backupTitle" = "Cadangan & Pulihkan Database"
-"backupDescription" = "Disarankan untuk membuat cadangan sebelum memulihkan database."
 "exportDatabase" = "Cadangkan"
+"exportDatabaseDesc" = "Klik untuk mengunduh file .db yang berisi cadangan dari database Anda saat ini ke perangkat Anda."
 "importDatabase" = "Pulihkan"
+"importDatabaseDesc" = "Klik untuk memilih dan mengunggah file .db dari perangkat Anda untuk memulihkan database dari cadangan."
 
 [pages.inbounds]
 "title" = "Masuk"

+ 2 - 1
web/translation/translate.ja_JP.toml

@@ -113,9 +113,10 @@
 "config" = "設定"
 "backup" = "バックアップと復元"
 "backupTitle" = "データベースのバックアップと復元"
-"backupDescription" = "データベースを復元する前にバックアップすることをお勧めします"
 "exportDatabase" = "バックアップ"
+"exportDatabaseDesc" = "クリックして、現在のデータベースのバックアップを含む .db ファイルをデバイスにダウンロードします。"
 "importDatabase" = "復元"
+"importDatabaseDesc" = "クリックして、デバイスから .db ファイルを選択し、アップロードしてバックアップからデータベースを復元します。"
 
 [pages.inbounds]
 "title" = "インバウンド一覧"

+ 3 - 2
web/translation/translate.pt_BR.toml

@@ -113,9 +113,10 @@
 "config" = "Configuração"
 "backup" = "Backup e Restauração"
 "backupTitle" = "Backup e Restauração do Banco de Dados"
-"backupDescription" = "É recomendado fazer um backup antes de restaurar o banco de dados."
-"exportDatabase" = "Fazer Backup"
+"exportDatabase" = "Backup"
+"exportDatabaseDesc" = "Clique para baixar um arquivo .db contendo um backup do seu banco de dados atual para o seu dispositivo."
 "importDatabase" = "Restaurar"
+"importDatabaseDesc" = "Clique para selecionar e enviar um arquivo .db do seu dispositivo para restaurar seu banco de dados a partir de um backup."
 
 [pages.inbounds]
 "title" = "Inbounds"

+ 2 - 1
web/translation/translate.ru_RU.toml

@@ -113,9 +113,10 @@
 "config" = "Конфигурация"
 "backup" = "Резервное копирование и восстановление"
 "backupTitle" = "База данных резервных копий"
-"backupDescription" = "Рекомендуется сделать резервную копию перед восстановлением базы данных."
 "exportDatabase" = "Экспорт базы данных"
+"exportDatabaseDesc" = "Нажмите, чтобы скачать файл .db, содержащий резервную копию вашей текущей базы данных на ваше устройство."
 "importDatabase" = "Импорт базы данных"
+"importDatabaseDesc" = "Нажмите, чтобы выбрать и загрузить файл .db с вашего устройства для восстановления базы данных из резервной копии."
 
 [pages.inbounds]
 "title" = "Подключения"

+ 2 - 1
web/translation/translate.tr_TR.toml

@@ -113,9 +113,10 @@
 "config" = "Yapılandırma"
 "backup" = "Yedekle & Geri Yükle"
 "backupTitle" = "Veritabanı Yedekleme & Geri Yükleme"
-"backupDescription" = "Veritabanını geri yüklemeden önce yedek almanız önerilir."
 "exportDatabase" = "Yedekle"
+"exportDatabaseDesc" = "Mevcut veritabanınızın yedeğini içeren bir .db dosyasını cihazınıza indirmek için tıklayın."
 "importDatabase" = "Geri Yükle"
+"importDatabaseDesc" = "Cihazınızdan bir .db dosyası seçip yükleyerek veritabanınızı yedekten geri yüklemek için tıklayın."
 
 [pages.inbounds]
 "title" = "Gelenler"

+ 3 - 2
web/translation/translate.uk_UA.toml

@@ -113,9 +113,10 @@
 "config" = "Конфігурація"
 "backup" = "Резервне копіювання та відновлення"
 "backupTitle" = "Резервне копіювання та відновлення бази даних"
-"backupDescription" = "Рекомендується зробити резервну копію перед відновленням бази даних."
-"exportDatabase" = "Резервне копіювання"
+"exportDatabase" = "Резервна копія"
+"exportDatabaseDesc" = "Натисніть, щоб завантажити файл .db, що містить резервну копію вашої поточної бази даних на ваш пристрій."
 "importDatabase" = "Відновити"
+"importDatabaseDesc" = "Натисніть, щоб вибрати та завантажити файл .db з вашого пристрою для відновлення бази даних з резервної копії."
 
 [pages.inbounds]
 "title" = "Вхідні"

+ 4 - 3
web/translation/translate.vi_VN.toml

@@ -113,9 +113,10 @@
 "config" = "Cấu hình"
 "backup" = "Sao lưu & Khôi phục"
 "backupTitle" = "Sao lưu & Khôi phục Cơ sở dữ liệu"
-"backupDescription" = "Hãy nhớ sao lưu trước khi nhập cơ sở dữ liệu mới."
-"exportDatabase" = "Tải về Cơ sở dữ liệu"
-"importDatabase" = "Tải lên Cơ sở dữ liệu"
+"exportDatabase" = "Sao lưu"
+"exportDatabaseDesc" = "Nhấp để tải xuống tệp .db chứa bản sao lưu cơ sở dữ liệu hiện tại của bạn vào thiết bị."
+"importDatabase" = "Khôi phục"
+"importDatabaseDesc" = "Nhấp để chọn và tải lên tệp .db từ thiết bị của bạn để khôi phục cơ sở dữ liệu từ bản sao lưu."
 
 [pages.inbounds]
 "title" = "Điểm vào (Inbounds)"

+ 2 - 1
web/translation/translate.zh_CN.toml

@@ -113,9 +113,10 @@
 "config" = "配置"
 "backup" = "备份和恢复"
 "backupTitle" = "备份和恢复数据库"
-"backupDescription" = "恢复数据库之前建议进行备份"
 "exportDatabase" = "备份"
+"exportDatabaseDesc" = "点击下载包含当前数据库备份的 .db 文件到您的设备。"
 "importDatabase" = "恢复"
+"importDatabaseDesc" = "点击选择并上传设备中的 .db 文件以从备份恢复数据库。"
 
 [pages.inbounds]
 "title" = "入站列表"

+ 2 - 1
web/translation/translate.zh_TW.toml

@@ -113,9 +113,10 @@
 "config" = "配置"
 "backup" = "備份和恢復"
 "backupTitle" = "備份和恢復資料庫"
-"backupDescription" = "恢復資料庫之前建議進行備份"
 "exportDatabase" = "備份"
+"exportDatabaseDesc" = "點擊下載包含當前資料庫備份的 .db 文件到您的設備。"
 "importDatabase" = "恢復"
+"importDatabaseDesc" = "點擊選擇並上傳設備中的 .db 文件以從備份恢復資料庫。"
 
 [pages.inbounds]
 "title" = "入站列表"