From f743bd68a17812a6f83da4650080a1c8fd70cedc Mon Sep 17 00:00:00 2001 From: Anton Nikolaev Date: Thu, 29 Apr 2021 12:02:54 -0700 Subject: [PATCH] UI Conversion: Use Select from antd Summary: Used Antd's Select component instead of the old one. In addition to that also enabled search in Select which can be quite handly as there might be many databases / tables. Reviewed By: mweststrate Differential Revision: D28068179 fbshipit-source-id: 4ff337a532e035c8b53a23858b5ba6d900e65ebd --- desktop/plugins/public/databases/index.tsx | 92 +++++++++++++------ desktop/plugins/public/databases/package.json | 1 + 2 files changed, 63 insertions(+), 30 deletions(-) diff --git a/desktop/plugins/public/databases/index.tsx b/desktop/plugins/public/databases/index.tsx index 86862d0f3..b905cd6ca 100644 --- a/desktop/plugins/public/databases/index.tsx +++ b/desktop/plugins/public/databases/index.tsx @@ -11,7 +11,6 @@ import { styled, produce, Toolbar, - Select, ManagedTable, Text, Button, @@ -47,7 +46,11 @@ import { usePlugin, useValue, Layout, + useMemoize, } from 'flipper-plugin'; +import {Select} from 'antd'; + +const {Option} = Select; const PAGE_SIZE = 50; @@ -1040,14 +1043,49 @@ export function Component() { [instance], ); - const tableOptions = - (state.selectedDatabase && - state.databases[state.selectedDatabase - 1] && - state.databases[state.selectedDatabase - 1].tables.reduce( - (options, tableName) => ({...options, [tableName]: tableName}), - {}, - )) || - {}; + const databaseOptions = useMemoize( + (databases) => + databases.map((x) => ( + + )), + [state.databases], + ); + + const selectedDatabaseName = useMemoize( + (selectedDatabase: number, databases: DatabaseEntry[]) => + selectedDatabase && databases[state.selectedDatabase - 1] + ? databases[selectedDatabase - 1].name + : undefined, + [state.selectedDatabase, state.databases], + ); + + const tableOptions = useMemoize( + (selectedDatabase: number, databases: DatabaseEntry[]) => + selectedDatabase && databases[state.selectedDatabase - 1] + ? databases[selectedDatabase - 1].tables.map((tableName) => ( + + )) + : [], + [state.selectedDatabase, state.databases], + ); + + const selectedTableName = useMemoize( + ( + selectedDatabase: number, + databases: DatabaseEntry[], + selectedDatabaseTable: string | null, + ) => + selectedDatabase && databases[selectedDatabase - 1] + ? databases[selectedDatabase - 1].tables.find( + (t) => t === selectedDatabaseTable, + ) ?? databases[selectedDatabase - 1].tables[0] + : undefined, + [state.selectedDatabase, state.databases, state.selectedDatabaseTable], + ); return ( @@ -1092,23 +1130,20 @@ export function Component() { Database Table
@@ -1118,15 +1153,12 @@ export function Component() { Database {