From 42352ae10a7b7a20f899a2fbec08b6155f794378 Mon Sep 17 00:00:00 2001
From: Timm Fitschen <t.fitschen@indiscale.com>
Date: Tue, 19 Mar 2024 09:48:24 +0100
Subject: [PATCH] WIP: query panel

---
 src/components/fdos/create.tsx       |  5 ---
 src/components/fdos/list.tsx         |  1 -
 src/components/header/QueryPanel.tsx | 50 ++++++++++++++++++++++++++++
 src/components/header/index.tsx      |  2 ++
 src/components/repositories/list.tsx |  1 -
 src/utils.tsx                        |  1 -
 6 files changed, 52 insertions(+), 8 deletions(-)
 create mode 100644 src/components/header/QueryPanel.tsx

diff --git a/src/components/fdos/create.tsx b/src/components/fdos/create.tsx
index f5b6d6c..470b37a 100644
--- a/src/components/fdos/create.tsx
+++ b/src/components/fdos/create.tsx
@@ -128,7 +128,6 @@ const FileUpload: React.FC<any> = ({ register, errors, name, label, setError })
     validate
   })
 
-  console.log(inputProps)
   const onChange = (e: any) => {
     setFiles(e.target?.files)
     inputProps.onChange(e)
@@ -164,10 +163,8 @@ const StepData: React.FC<any> = ({ register, errors }) => {
 export const FdoCreate: React.FC<IResourceComponentsProps> = () => {
   const go = useGo()
   const accessToken = useAccessToken()
-  console.log('accessToken: ', accessToken)
 
   const formRet = useStepsForm<any, HttpError, any>({ defaultValues: { repository: '', profile: '' }, refineCoreProps: { meta: { headers: { Authentication: `Bearer ${accessToken}` } } } })
-  console.log('formRet', formRet)
   const {
     setError,
     saveButtonProps,
@@ -189,8 +186,6 @@ export const FdoCreate: React.FC<IResourceComponentsProps> = () => {
   }
 
   const onSubmit = (data: any) => {
-    console.log('data', data)
-
     onFinish([{ fdo: data.repository }, data.fdo_data[0], data.fdo_metadata[0]])
   }
   const theme = useTheme()
diff --git a/src/components/fdos/list.tsx b/src/components/fdos/list.tsx
index a026e79..3e7bd98 100644
--- a/src/components/fdos/list.tsx
+++ b/src/components/fdos/list.tsx
@@ -25,7 +25,6 @@ const columns: Array<GridColDef<OperationsLogRecord>> = [
     flex: 1,
     type: 'string',
     renderCell: (params): any => {
-      console.log('params', params)
       return <Link href={`/fdo/show/${params.id}`}>{params.id}</Link>
     }
   }, {
diff --git a/src/components/header/QueryPanel.tsx b/src/components/header/QueryPanel.tsx
new file mode 100644
index 0000000..03357f3
--- /dev/null
+++ b/src/components/header/QueryPanel.tsx
@@ -0,0 +1,50 @@
+import { useState } from 'react'
+import Paper from '@mui/material/Paper'
+import InputBase from '@mui/material/InputBase'
+import IconButton from '@mui/material/IconButton'
+import SearchIcon from '@mui/icons-material/Search'
+import FormHelperText from '@mui/material/FormHelperText'
+import FormControl from '@mui/material/FormControl'
+import { useGo, useNotification } from '@refinedev/core'
+
+export default function QueryPanel () {
+  const [pid, setPid] = useState('')
+  const [error, setError] = useState<string | boolean>(false)
+  const go = useGo()
+  const onChange = (e: any) => {
+    setPid(e.target.value)
+    setError(false)
+  }
+  const onSubmit = (e: any) => {
+    e.preventDefault()
+    if (!pid.includes('/')) {
+      setError('prefix / suffix')
+      return false
+    }
+
+    const prefix = pid?.split('/', 1)[0]
+    const suffix = pid?.substring(prefix.length + 1)
+    go({ to: { resource: 'fdo', action: 'show', id: pid, meta: { prefix, suffix } }, type: 'push' })
+  }
+  return (
+    <FormControl error={!!error}>
+    <Paper
+      component="form"
+      sx={{ p: '2px 4px', display: 'flex', alignItems: 'center', width: 400 }}
+      onSubmit={onSubmit}
+    >
+      <FormHelperText>{error}</FormHelperText>
+      <InputBase
+        sx={{ flex: 1 }}
+        placeholder="Resolve PID"
+        inputProps={{ 'aria-label': 'resolve pid' }}
+        value={pid}
+        onChange={onChange}
+      />
+      <IconButton onClick={onSubmit} type="button" sx={{ p: '10px' }} aria-label="search">
+        <SearchIcon />
+      </IconButton>
+    </Paper>
+    </FormControl>
+  )
+}
diff --git a/src/components/header/index.tsx b/src/components/header/index.tsx
index c10df7b..5aa8bee 100644
--- a/src/components/header/index.tsx
+++ b/src/components/header/index.tsx
@@ -16,6 +16,7 @@ import Link from 'next/link'
 import { useRouter } from 'next/router'
 import React, { useContext } from 'react'
 import UserComponent from './UserComponent'
+import QueryPanel from './QueryPanel'
 
 export const Header: React.FC<RefineThemedLayoutV2HeaderProps> = ({
   sticky = true
@@ -38,6 +39,7 @@ export const Header: React.FC<RefineThemedLayoutV2HeaderProps> = ({
             alignItems="center"
             gap="16px"
           >
+            <QueryPanel/>
             <FormControl sx={{ minWidth: 64 }}>
               <Select
                 disableUnderline
diff --git a/src/components/repositories/list.tsx b/src/components/repositories/list.tsx
index 95088b5..b840c0e 100644
--- a/src/components/repositories/list.tsx
+++ b/src/components/repositories/list.tsx
@@ -43,7 +43,6 @@ const columns: Array<GridColDef<IRepository>> = [
 
 export const RepositoriesList: React.FC<IResourceComponentsProps> = () => {
   const { dataGridProps } = useDataGrid<IRepository>()
-  console.log('repositoriesList', dataGridProps)
 
   return (
     <List>
diff --git a/src/utils.tsx b/src/utils.tsx
index 756de8c..edc9cb2 100644
--- a/src/utils.tsx
+++ b/src/utils.tsx
@@ -14,7 +14,6 @@ export const useAccessToken: any = () => {
   const { mutate: logout } = useLogout()
   const { open } = useNotification()
 
-  console.log('useAccessToken', identity)
   const data = identity?.data?.data
 
   if (data?.accessToken == null) {
-- 
GitLab