Skip to content

Commit fe198e6

Browse files
committed
fix(FR-2820): add Active/Inactive tabs and consolidate controls in Project page
Resolves #7254(FR-2820) ## Summary - Add Active/Inactive tab split to the Project page BAICard, replacing the single "Project" tab. The active tab drives an `is_active` filter merged into the GraphQL query, and the redundant `is_active` BAIPropertyFilter entry is removed. - Consolidate per-row actions (edit, deactivate/restore, purge) from the standalone `controls` column into the `name` column using `BAINameActionCell`, matching the convention on other listing pages. - Add a Restore action (via Popconfirm, since restore is reversible) that calls `modify_group` with `is_active: true` for inactive projects. - Switch the purge confirmation from `modal.confirm` to `BAIConfirmModalWithInput` with the project name as the typed confirmation string, per the destructive-confirmation rule. - Remove the `is_active` and `Controls` columns from the table since tabs and BAINameActionCell handle those respectively. - Add i18n keys for Restore, RestoreProject, EditProject, etc. across all 21 locale files.
1 parent 82d550b commit fe198e6

23 files changed

Lines changed: 380 additions & 248 deletions

File tree

packages/backend.ai-ui/src/components/fragments/BAIProjectTable.tsx

Lines changed: 212 additions & 176 deletions
Large diffs are not rendered by default.

packages/backend.ai-ui/src/locale/de.json

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -212,26 +212,30 @@
212212
"comp:BAIProjectTable": {
213213
"AreYouSureToDeactivateProject": "Möchten Sie das Projekt {{projectName}} wirklich deaktivieren?",
214214
"AreYouSureToPurgeProject": "Sind Sie sicher, dass Sie {{projectName}} endgültig löschen möchten? Diese Aktion ist unwiderruflich.",
215+
"AreYouSureToRestoreProject": "Are you sure to restore project {{projectName}}?",
215216
"ContainerRegistry": "Container-Registry",
216-
"Controls": "Steuerelemente",
217217
"CreatedAt": "Erstellt am",
218218
"Deactivate": "Deaktivieren",
219219
"DeactivateProject": "Projekt deaktivieren",
220220
"Description": "Beschreibung",
221221
"Domain": "Domäne",
222+
"EditProject": "Edit",
222223
"FailedToDeactivateProject": "Fehler beim Deaktivieren des Projekts.",
223224
"FailedToPurgeProject": "Fehler beim Bereinigen des Projekts.",
225+
"FailedToRestoreProject": "Failed to restore the project.",
224226
"IntegrationID": "Integrations‑ID",
225-
"IsActive": "Aktiv",
226227
"Name": "Name",
227228
"Project": "Projekt",
228229
"ProjectDeactivated": "Das Projekt wurde deaktiviert.",
229230
"ProjectID": "Projekt‑ID",
230-
"ProjectPurged": "Das Projekt wurde endgültig gelöscht.",
231+
"ProjectPurged": "The project has been purged.",
232+
"ProjectRestored": "The project has been restored.",
231233
"Purge": "Bereinigen",
232234
"PurgeProject": "Projekt bereinigen",
233235
"Registry": "Registry",
234236
"ResourcePolicy": "Ressourcenrichtlinie",
237+
"Restore": "Restore",
238+
"RestoreProject": "Restore Project",
235239
"ScalingGroups": "Ressourcengruppen",
236240
"StorageNodes": "Speicherknoten",
237241
"TotalResourceSlots": "Gesamtanzahl der Ressourcen-Slots",

packages/backend.ai-ui/src/locale/el.json

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -212,26 +212,30 @@
212212
"comp:BAIProjectTable": {
213213
"AreYouSureToDeactivateProject": "Είστε βέβαιοι ότι θέλετε να απενεργοποιήσετε το έργο {{projectName}};",
214214
"AreYouSureToPurgeProject": "Είστε βέβαιοι ότι θέλετε να διαγράψετε οριστικά το {{projectName}}? Αυτή η ενέργεια είναι μη αναστρέψιμη.",
215+
"AreYouSureToRestoreProject": "Are you sure to restore project {{projectName}}?",
215216
"ContainerRegistry": "Αποθετήριο κοντέινερ",
216-
"Controls": "Έλεγχοι",
217217
"CreatedAt": "Δημιουργήθηκε στις",
218218
"Deactivate": "Απενεργοποίηση",
219219
"DeactivateProject": "Απενεργοποίηση έργου",
220220
"Description": "Περιγραφή",
221221
"Domain": "Τομέας",
222+
"EditProject": "Edit",
222223
"FailedToDeactivateProject": "Η απενεργοποίηση του έργου απέτυχε.",
223224
"FailedToPurgeProject": "Αποτυχία εκκαθάρισης του έργου.",
225+
"FailedToRestoreProject": "Failed to restore the project.",
224226
"IntegrationID": "ID ενσωμάτωσης",
225-
"IsActive": "Ενεργό",
226227
"Name": "Όνομα",
227228
"Project": "Έργο",
228229
"ProjectDeactivated": "Το έργο έχει απενεργοποιηθεί.",
229230
"ProjectID": "ID έργου",
230-
"ProjectPurged": "Το projecth έχει διαγραφεί.",
231+
"ProjectPurged": "The project has been purged.",
232+
"ProjectRestored": "The project has been restored.",
231233
"Purge": "Εκκαθάριση",
232234
"PurgeProject": "Μόνιμη διαγραφή έργου",
233235
"Registry": "Μητρώο",
234236
"ResourcePolicy": "Πολιτική πόρων",
237+
"Restore": "Restore",
238+
"RestoreProject": "Restore Project",
235239
"ScalingGroups": "Ομάδες πόρων",
236240
"StorageNodes": "Κόμβοι Αποθήκευσης",
237241
"TotalResourceSlots": "Συνολικές θέσεις πόρων",

packages/backend.ai-ui/src/locale/en.json

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -215,26 +215,30 @@
215215
"comp:BAIProjectTable": {
216216
"AreYouSureToDeactivateProject": "Are you sure to deactivate project {{projectName}}?",
217217
"AreYouSureToPurgeProject": "Are you sure to purge {{projectName}}? This action is irreversible.",
218+
"AreYouSureToRestoreProject": "Are you sure to restore project {{projectName}}?",
218219
"ContainerRegistry": "Container Registry",
219-
"Controls": "Controls",
220220
"CreatedAt": "Created At",
221221
"Deactivate": "Deactivate",
222222
"DeactivateProject": "Deactivate Project",
223223
"Description": "Description",
224224
"Domain": "Domain",
225+
"EditProject": "Edit",
225226
"FailedToDeactivateProject": "Failed to deactivate the project.",
226227
"FailedToPurgeProject": "Failed to purge the project.",
228+
"FailedToRestoreProject": "Failed to restore the project.",
227229
"IntegrationID": "Integration ID",
228-
"IsActive": "Active",
229230
"Name": "Name",
230231
"Project": "Project",
231232
"ProjectDeactivated": "The project has been deactivated.",
232233
"ProjectID": "Project ID",
233-
"ProjectPurged": "The projecth has been purged",
234+
"ProjectPurged": "The project has been purged.",
235+
"ProjectRestored": "The project has been restored.",
234236
"Purge": "Purge",
235237
"PurgeProject": "Purge Project",
236238
"Registry": "Registry",
237239
"ResourcePolicy": "Resource Policy",
240+
"Restore": "Restore",
241+
"RestoreProject": "Restore Project",
238242
"ScalingGroups": "Resource Groups",
239243
"StorageNodes": "Storage Nodes",
240244
"TotalResourceSlots": "Total Resource Slots",

packages/backend.ai-ui/src/locale/es.json

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -212,26 +212,30 @@
212212
"comp:BAIProjectTable": {
213213
"AreYouSureToDeactivateProject": "¿Está seguro de que desea desactivar el proyecto {{projectName}}?",
214214
"AreYouSureToPurgeProject": "¿Está seguro de que desea purgar {{projectName}}? Esta acción es irreversible.",
215+
"AreYouSureToRestoreProject": "Are you sure to restore project {{projectName}}?",
215216
"ContainerRegistry": "Registro de contenedores",
216-
"Controls": "Controles",
217217
"CreatedAt": "Creado el",
218218
"Deactivate": "Desactivar",
219219
"DeactivateProject": "Desactivar proyecto",
220220
"Description": "Descripción",
221221
"Domain": "Dominio",
222+
"EditProject": "Edit",
222223
"FailedToDeactivateProject": "No se pudo desactivar el proyecto.",
223224
"FailedToPurgeProject": "No se pudo purgar el proyecto.",
225+
"FailedToRestoreProject": "Failed to restore the project.",
224226
"IntegrationID": "ID de integración",
225-
"IsActive": "Activo",
226227
"Name": "Nombre",
227228
"Project": "Proyecto",
228229
"ProjectDeactivated": "El proyecto ha sido desactivado.",
229230
"ProjectID": "ID del proyecto",
230-
"ProjectPurged": "El proyecto ha sido purgado.",
231+
"ProjectPurged": "The project has been purged.",
232+
"ProjectRestored": "The project has been restored.",
231233
"Purge": "Purgar",
232234
"PurgeProject": "Eliminar proyecto permanentemente",
233235
"Registry": "Registro",
234236
"ResourcePolicy": "Política de recursos",
237+
"Restore": "Restore",
238+
"RestoreProject": "Restore Project",
235239
"ScalingGroups": "Grupos de recursos",
236240
"StorageNodes": "Nodos de almacenamiento",
237241
"TotalResourceSlots": "Total de ranuras de recursos",

packages/backend.ai-ui/src/locale/fi.json

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -212,26 +212,30 @@
212212
"comp:BAIProjectTable": {
213213
"AreYouSureToDeactivateProject": "Haluatko varmasti poistaa projektin {{projectName}} käytöstä?",
214214
"AreYouSureToPurgeProject": "Haluatko varmasti poistaa {{projectName}}? Tämä toimenpide on peruuttamaton.",
215+
"AreYouSureToRestoreProject": "Are you sure to restore project {{projectName}}?",
215216
"ContainerRegistry": "Säiliörekisteri",
216-
"Controls": "Ohjaimet",
217217
"CreatedAt": "Luotu",
218218
"Deactivate": "Poista käytöstä",
219219
"DeactivateProject": "Poista projekti käytöstä",
220220
"Description": "Kuvaus",
221221
"Domain": "Toimialue",
222+
"EditProject": "Edit",
222223
"FailedToDeactivateProject": "Projektin poistaminen käytöstä epäonnistui.",
223224
"FailedToPurgeProject": "Projektin tyhjennys epäonnistui.",
225+
"FailedToRestoreProject": "Failed to restore the project.",
224226
"IntegrationID": "Integraation tunnus",
225-
"IsActive": "Aktiivinen",
226227
"Name": "Nimi",
227228
"Project": "Projekti",
228229
"ProjectDeactivated": "Projekti on poistettu käytöstä.",
229230
"ProjectID": "Projektin tunnus",
230-
"ProjectPurged": "Projekti on poistettu pysyvästi.",
231+
"ProjectPurged": "The project has been purged.",
232+
"ProjectRestored": "The project has been restored.",
231233
"Purge": "Tyhjennä",
232234
"PurgeProject": "Poista projekti pysyvästi",
233235
"Registry": "Rekisteri",
234236
"ResourcePolicy": "Resurssipolitiikka",
237+
"Restore": "Restore",
238+
"RestoreProject": "Restore Project",
235239
"ScalingGroups": "Resurssiryhmät",
236240
"StorageNodes": "Tallennussolmut",
237241
"TotalResourceSlots": "Resurssipaikat yhteensä",

packages/backend.ai-ui/src/locale/fr.json

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -212,26 +212,30 @@
212212
"comp:BAIProjectTable": {
213213
"AreYouSureToDeactivateProject": "Voulez-vous vraiment désactiver le projet {{projectName}} ?",
214214
"AreYouSureToPurgeProject": "Voulez-vous vraiment purger {{projectName}}? Cette action est irréversible.",
215+
"AreYouSureToRestoreProject": "Are you sure to restore project {{projectName}}?",
215216
"ContainerRegistry": "Registre de conteneurs",
216-
"Controls": "Contrôles",
217217
"CreatedAt": "Créé le",
218218
"Deactivate": "Désactiver",
219219
"DeactivateProject": "Désactiver le projet",
220220
"Description": "Description",
221221
"Domain": "Domaine",
222+
"EditProject": "Edit",
222223
"FailedToDeactivateProject": "Impossible de désactiver le projet.",
223224
"FailedToPurgeProject": "Échec de la purge du projet.",
225+
"FailedToRestoreProject": "Failed to restore the project.",
224226
"IntegrationID": "ID d'intégration",
225-
"IsActive": "Actif",
226227
"Name": "Nom",
227228
"Project": "Projet",
228229
"ProjectDeactivated": "Le projet a été désactivé.",
229230
"ProjectID": "ID du projet",
230-
"ProjectPurged": "Le projet a été purgé.",
231+
"ProjectPurged": "The project has been purged.",
232+
"ProjectRestored": "The project has been restored.",
231233
"Purge": "Purger",
232234
"PurgeProject": "Purger le projet",
233235
"Registry": "Registre",
234236
"ResourcePolicy": "Politique des ressources",
237+
"Restore": "Restore",
238+
"RestoreProject": "Restore Project",
235239
"ScalingGroups": "Groupes de ressources",
236240
"StorageNodes": "Nœuds de stockage",
237241
"TotalResourceSlots": "Nombre total de créneaux de ressources",

packages/backend.ai-ui/src/locale/id.json

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -212,26 +212,30 @@
212212
"comp:BAIProjectTable": {
213213
"AreYouSureToDeactivateProject": "Anda yakin ingin menonaktifkan proyek {{projectName}}?",
214214
"AreYouSureToPurgeProject": "Apakah Anda yakin ingin menghapus {{projectName}}? Tindakan ini tidak dapat dibatalkan.",
215+
"AreYouSureToRestoreProject": "Are you sure to restore project {{projectName}}?",
215216
"ContainerRegistry": "Registri Kontainer",
216-
"Controls": "Kontrol",
217217
"CreatedAt": "Dibuat pada",
218218
"Deactivate": "Nonaktifkan",
219219
"DeactivateProject": "Nonaktifkan Proyek",
220220
"Description": "Deskripsi",
221221
"Domain": "Domain",
222+
"EditProject": "Edit",
222223
"FailedToDeactivateProject": "Gagal menonaktifkan proyek.",
223224
"FailedToPurgeProject": "Gagal menghapus proyek secara permanen.",
225+
"FailedToRestoreProject": "Failed to restore the project.",
224226
"IntegrationID": "ID Integrasi",
225-
"IsActive": "Aktif",
226227
"Name": "Nama",
227228
"Project": "Proyek",
228229
"ProjectDeactivated": "Proyek telah dinonaktifkan.",
229230
"ProjectID": "ID Proyek",
230-
"ProjectPurged": "Proyek telah dihapus secara permanen.",
231+
"ProjectPurged": "The project has been purged.",
232+
"ProjectRestored": "The project has been restored.",
231233
"Purge": "Bersihkan",
232234
"PurgeProject": "Hapus Proyek Secara Permanen",
233235
"Registry": "Registri",
234236
"ResourcePolicy": "Kebijakan Sumber Daya",
237+
"Restore": "Restore",
238+
"RestoreProject": "Restore Project",
235239
"ScalingGroups": "Grup Sumber Daya",
236240
"StorageNodes": "Node Penyimpanan",
237241
"TotalResourceSlots": "Jumlah Slot Sumber Daya",

packages/backend.ai-ui/src/locale/it.json

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -212,26 +212,30 @@
212212
"comp:BAIProjectTable": {
213213
"AreYouSureToDeactivateProject": "Sei sicuro di voler disattivare il progetto {{projectName}}?",
214214
"AreYouSureToPurgeProject": "Sei sicuro di voler eliminare {{projectName}}? Questa azione è irreversibile.",
215+
"AreYouSureToRestoreProject": "Are you sure to restore project {{projectName}}?",
215216
"ContainerRegistry": "Registro dei container",
216-
"Controls": "Controlli",
217217
"CreatedAt": "Creato il",
218218
"Deactivate": "Disattiva",
219219
"DeactivateProject": "Disattiva progetto",
220220
"Description": "Descrizione",
221221
"Domain": "Dominio",
222+
"EditProject": "Edit",
222223
"FailedToDeactivateProject": "Impossibile disattivare il progetto.",
223224
"FailedToPurgeProject": "Impossibile eliminare definitivamente il progetto.",
225+
"FailedToRestoreProject": "Failed to restore the project.",
224226
"IntegrationID": "ID integrazione",
225-
"IsActive": "Attivo",
226227
"Name": "Nome",
227228
"Project": "Progetto",
228229
"ProjectDeactivated": "Il progetto è stato disattivato.",
229230
"ProjectID": "ID progetto",
230-
"ProjectPurged": "Il progetto è stato eliminato.",
231+
"ProjectPurged": "The project has been purged.",
232+
"ProjectRestored": "The project has been restored.",
231233
"Purge": "Svuota",
232234
"PurgeProject": "Elimina definitivamente il progetto",
233235
"Registry": "Registro",
234236
"ResourcePolicy": "Politica delle risorse",
237+
"Restore": "Restore",
238+
"RestoreProject": "Restore Project",
235239
"ScalingGroups": "Gruppi di risorse",
236240
"StorageNodes": "Nodi di archiviazione",
237241
"TotalResourceSlots": "Slot risorse totali",

packages/backend.ai-ui/src/locale/ja.json

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -212,26 +212,30 @@
212212
"comp:BAIProjectTable": {
213213
"AreYouSureToDeactivateProject": "プロジェクト「{{projectName}}」を無効化してもよろしいですか?",
214214
"AreYouSureToPurgeProject": "本当に{{projectName}}を完全に削除しますか?この操作は取り消せません。",
215+
"AreYouSureToRestoreProject": "Are you sure to restore project {{projectName}}?",
215216
"ContainerRegistry": "コンテナレジストリ",
216-
"Controls": "操作",
217217
"CreatedAt": "作成日時",
218218
"Deactivate": "無効化",
219219
"DeactivateProject": "プロジェクトを無効化",
220220
"Description": "説明",
221221
"Domain": "ドメイン",
222+
"EditProject": "Edit",
222223
"FailedToDeactivateProject": "プロジェクトの無効化に失敗しました。",
223224
"FailedToPurgeProject": "プロジェクトの完全削除に失敗しました。",
225+
"FailedToRestoreProject": "Failed to restore the project.",
224226
"IntegrationID": "連携ID",
225-
"IsActive": "アクティブ",
226227
"Name": "名前",
227228
"Project": "プロジェクト",
228229
"ProjectDeactivated": "プロジェクトは無効化されました。",
229230
"ProjectID": "プロジェクトID",
230-
"ProjectPurged": "プロジェクトは完全に削除されました",
231+
"ProjectPurged": "The project has been purged.",
232+
"ProjectRestored": "The project has been restored.",
231233
"Purge": "パージ",
232234
"PurgeProject": "プロジェクトを完全に削除",
233235
"Registry": "レジストリ",
234236
"ResourcePolicy": "リソースポリシー",
237+
"Restore": "Restore",
238+
"RestoreProject": "Restore Project",
235239
"ScalingGroups": "リソースグループ",
236240
"StorageNodes": "ストレージノード",
237241
"TotalResourceSlots": "合計リソーススロット数",

0 commit comments

Comments
 (0)