44 FSComponent ,
55 MappedSubject ,
66 MappedSubscribable ,
7+ MutableSubscribable ,
78 Subscribable ,
89 SubscribableArray ,
910 VNode ,
@@ -14,6 +15,7 @@ import { Button, InterfaceNavbarItemV2, InterfaceSwitch } from "../../Utils"
1415
1516interface DashboardProps extends ComponentProps {
1617 databases : SubscribableArray < PackageInfo >
18+ reloadPackageList : MutableSubscribable < boolean >
1719 selectedDatabase : Subscribable < PackageInfo | null >
1820 selectedDatabaseIndex : Subscribable < number >
1921 setSelectedDatabase : ( database : PackageInfo ) => void
@@ -61,6 +63,42 @@ export class Dashboard extends DisplayComponent<DashboardProps> {
6163 . set_active_package ( selectedDatabase . uuid )
6264 . then ( _res => { } )
6365 . catch ( err => console . error ( err ) )
66+
67+ this . props . reloadPackageList . set ( true )
68+ }
69+
70+ private deleteSelected ( ) {
71+ const prevSelectedDatabase = this . props . selectedDatabase . get ( )
72+
73+ if ( prevSelectedDatabase === null || this . props . databases . length <= 1 ) {
74+ return
75+ }
76+
77+ let pkg
78+
79+ try {
80+ if ( this . props . selectedDatabaseIndex . get ( ) === 0 ) {
81+ pkg = this . props . databases . get ( 1 )
82+ } else {
83+ pkg = this . props . databases . get ( 0 )
84+ }
85+ } catch {
86+ return
87+ }
88+
89+ if ( this . showActiveDatabase . get ( ) ) {
90+ this . props . interface
91+ . set_active_package ( pkg . uuid )
92+ . then ( _res => { } )
93+ . catch ( err => console . error ( err ) )
94+ }
95+
96+ this . props . interface
97+ . delete_package ( prevSelectedDatabase . uuid )
98+ . then ( _res => { } )
99+ . catch ( err => console . error ( err ) )
100+
101+ this . props . reloadPackageList . set ( true )
64102 }
65103
66104 render ( ) : VNode {
@@ -78,9 +116,17 @@ export class Dashboard extends DisplayComponent<DashboardProps> {
78116 />
79117 </ div >
80118 </ div >
81- < Button onClick = { ( ) => this . setDatabase ( ) } class = "p-4 bg-blue-400 hover:bg-blue-800" >
82- < p class = "text-2xl" > Select Database</ p >
83- </ Button >
119+ < div class = "flex flex-row" >
120+ < Button onClick = { ( ) => this . setDatabase ( ) } class = "p-4 bg-blue-400 hover:bg-blue-800 flex-grow w-full" >
121+ < p class = "text-2xl" > Select Database</ p >
122+ </ Button >
123+ < Button
124+ onClick = { ( ) => this . deleteSelected ( ) }
125+ class = "bg-red-900 hover:bg-red-500 w-[25%] flex items-center justify-center"
126+ >
127+ < span class = "text-5xl" > X</ span >
128+ </ Button >
129+ </ div >
84130 </ div >
85131 < ActiveDatabase selectedDatabase = { this . props . selectedDatabase } showActiveDatabase = { this . showActiveDatabase } />
86132 </ div >
@@ -110,8 +156,12 @@ class ActiveDatabase extends DisplayComponent<ActiveDatabaseProps> {
110156 [ 1 , < p class = "text-3xl mb-4" > Selected Database</ p > ] ,
111157 ] }
112158 />
113- < div class = "mt-2 flex-grow bg-ng-background-700" >
159+ < div class = "mt-2 flex-grow bg-ng-background-700 overflow-auto " >
114160 < div class = "p-4 flex flex-col align-middle items-start flex-start space-y-6 vertical" >
161+ < div class = "flex flex-row space-x-2" >
162+ < span class = "text-2xl" > UUID:</ span >
163+ < span class = "text-xl text-gray-400" > { this . props . selectedDatabase . map ( s => s ?. uuid ) } </ span >
164+ </ div >
115165 < div class = "flex flex-col space-y-2" >
116166 < p class = "text-3xl" > Bundled</ p >
117167 < p class = "text-2xl text-gray-400" > { this . props . selectedDatabase . map ( s => s ?. is_bundled ) } </ p >
0 commit comments