diff --git a/packages/tdb-dashboard/src/components/AboutDataProduct.js b/packages/tdb-dashboard/src/components/AboutDataProduct.js index 8ab074c4..d0e8f274 100644 --- a/packages/tdb-dashboard/src/components/AboutDataProduct.js +++ b/packages/tdb-dashboard/src/components/AboutDataProduct.js @@ -24,6 +24,8 @@ export const AboutDataProduct = ({dataProductDetails, setShowDeleteModal, setSho const {documentClasses,getDocumentClasses} = useTDBDocuments(woqlClient) const [radioValue, setRadioValue] = useState(useChangeRequest===false ? "Inactive" : "Active"); + + const isAdmin = accessControlDashboard ? accessControlDashboard.isAdmin() : false const {cloneDatabase, loading:loadingClone, error:errorClone , setError:setCloneError} = ManageDatabase() const cloneInTeam = useRef(null); @@ -38,6 +40,10 @@ export const AboutDataProduct = ({dataProductDetails, setShowDeleteModal, setSho return `${localSettings.server}${organization}/${organization}/${dataProduct}` } + useEffect(() =>{ + setRadioValue(useChangeRequest===false ? "Inactive" : "Active") + },[useChangeRequest]) + useEffect(() => { if(!healthColor) setColor("text-muted") if(healthColor == DATA_PRODUCT_HEALTHY) setColor("text-success") @@ -104,7 +110,7 @@ export const AboutDataProduct = ({dataProductDetails, setShowDeleteModal, setSho return - {clientUser.serverType !== "TerminusDB" && + {clientUser.serverType !== "TerminusDB" && isAdmin && diff --git a/packages/tdb-dashboard/src/components/IconBar.js b/packages/tdb-dashboard/src/components/IconBar.js index be8c08b8..94fcc95f 100644 --- a/packages/tdb-dashboard/src/components/IconBar.js +++ b/packages/tdb-dashboard/src/components/IconBar.js @@ -8,7 +8,9 @@ import {useParams} from 'react-router-dom' export const IconBar = ({setShowFeedbackForm}) => { - const {currentChangeRequest,useChangeRequest} = WOQLClientObj() + const {currentChangeRequest,useChangeRequest, accessControlDashboard} = WOQLClientObj() + + const instanceRead = accessControlDashboard && accessControlDashboard.instanceRead() ? accessControlDashboard.instanceRead() : false const { organization, dataProduct } = useParams(); @@ -66,7 +68,7 @@ export const IconBar = ({setShowFeedbackForm}) => { {IconBarConfig.dataProductModal.icon} - + {instanceRead && { id={IconBarConfig.documentExplorer.key}> {IconBarConfig.documentExplorer.icon} - + } { - + {instanceRead && {IconBarConfig.graphiql.icon} - - {useChangeRequest && + } + {instanceRead && useChangeRequest && { {IconBarConfig.changes.icon} } - {useChangeRequest && !currentChangeRequest && + {instanceRead && useChangeRequest && !currentChangeRequest && + <> { {IconBarConfig.openAI.icon} - } - {useChangeRequest && !currentChangeRequest && { {IconBarConfig.search.icon} - } - {useChangeRequest && !currentChangeRequest && - + { {IconBarConfig.actions.icon} + }
diff --git a/packages/tdb-dashboard/src/components/OpenAICard.js b/packages/tdb-dashboard/src/components/OpenAICard.js index 1a6baa1f..b1ce4d66 100644 --- a/packages/tdb-dashboard/src/components/OpenAICard.js +++ b/packages/tdb-dashboard/src/components/OpenAICard.js @@ -4,7 +4,7 @@ import {useOpenAI} from "../hooks/useOpenAI" import {Alerts} from "./Alerts" import {SwitchOpenAi} from "./SwitchOpenAi" -export const OpenAICard=({organization})=>{ +export const OpenAICard=({organization,isAdmin})=>{ const {loading,changeOpenAIStatus, error,saveOpenAIKey,hasOpenAIKEY,hasKey,deleteOpenAIKEY} = useOpenAI() @@ -25,8 +25,11 @@ export const OpenAICard=({organization})=>{ } } - function deleteKey () { - deleteOpenAIKEY(organization) + async function deleteKey () { + const done = await deleteOpenAIKEY(organization) + if(done && openAIKEY.current){ + openAIKEY.current.value = "" + } } function changeStatus (isActive){ @@ -36,7 +39,7 @@ export const OpenAICard=({organization})=>{ const title = hasKey === false ? "Add your secret OpenAI API key" : "Your OpenAI API key has been set" const subTitle= getLabel() - + function getLabel(){ if(hasKey === false){ return
} - {!commit && /* + {loading && Search Documents} + {!loading && !commit && /*

You need to index your data before you can search

if you haven't already done it, Go to Profile page and add an OpenAi Key to your team,

after you can start to index your data using the change request workflow
*/} {error && } - {loading && Search Documents} + {searchResult &&
diff --git a/packages/tdb-dashboard/src/pages/GraphqlHandlerbarsPage.js b/packages/tdb-dashboard/src/pages/GraphqlHandlerbarsPage.js index 69849701..76c3cafa 100644 --- a/packages/tdb-dashboard/src/pages/GraphqlHandlerbarsPage.js +++ b/packages/tdb-dashboard/src/pages/GraphqlHandlerbarsPage.js @@ -135,7 +135,7 @@ export function GraphqlHandlerbarsPage({}) { - Preview + Preview - showing only the first 10 results diff --git a/packages/tdb-dashboard/src/pages/IndexingActionMonitor copy.js b/packages/tdb-dashboard/src/pages/IndexingActionMonitor copy.js deleted file mode 100644 index e37dece4..00000000 --- a/packages/tdb-dashboard/src/pages/IndexingActionMonitor copy.js +++ /dev/null @@ -1,93 +0,0 @@ -import React, {useEffect, useState} from "react"; -import {Container , Card, Button, ListGroup,Badge} from "react-bootstrap" -import {useParams} from "react-router-dom"; -import {Loading} from "../components/Loading" -import {extractID, getDays} from "../components/utils" -import { Layout } from "./Layout"; -import { useOpenAI } from "../hooks/useOpenAI"; -import {AiFillCheckCircle, AiFillCloseCircle, AiFillClockCircle} from "react-icons/ai" -import {ImSpinner5} from "react-icons/im" - -export const IndexingActionMonitor=(props)=>{ - - const {loading,error,getSearchableCommit,searchableCommit} = useOpenAI() - const {dataProduct} = useParams() - useEffect(()=>{ - getSearchableCommit(10) - },[dataProduct]) - - const formatListItem=()=>{ - if(searchableCommit.lenght === 0) return - No running actions - - let display= searchableCommit.map((item,index)=>{ - //statusCount+=1 - return - }) - return display - } - - return -
-
- - - Indexing Actions - - - - {loading && } - {searchableCommit && formatListItem()} - - - -
-
-
-} - -const endStatus = {"Assigned":true, "Error":true} - -function ItemElement ({item}){ - const startstatus = extractID(item.indexing_status || "") - const index = extractID(item.index || "") - const [status , setStatus] = useState(startstatus) - const {pollingCall} = useOpenAI() - - const updateStatus = (doc) =>{ - item.indexing_status = `@schema:Indexing_Status/${doc.indexing_status}` - setStatus(doc.indexing_status) - } - useEffect(()=>{ - if(!endStatus[startstatus]){ - pollingCall(index, updateStatus) - } - },[item.index]) - - const iconTypes = {'Assigned':, - 'Progress':, - 'Error':, - 'Complete':} - - const name = item.name ? item.name['@value'] : '' - - //"@schema:Indexing_Status/Progress" - const message = "no message" //item.messages[0].text || '' //item[tracking_branch] - return - {iconTypes[status]} -
-
- Change request - {name || item.tracking_branch["@value"]} - from branch - {item.branch["@value"]} - -
- - runned {getDays(item.time["@value"])} days ago - - -
- {status=== "Assigned" && {item.searchable_commit["@value"]}} -
-} \ No newline at end of file diff --git a/packages/tdb-dashboard/src/pages/IndexingActionMonitor.js b/packages/tdb-dashboard/src/pages/IndexingActionMonitor.js index c98684e6..22f252e1 100644 --- a/packages/tdb-dashboard/src/pages/IndexingActionMonitor.js +++ b/packages/tdb-dashboard/src/pages/IndexingActionMonitor.js @@ -10,7 +10,6 @@ import {ImSpinner5} from "react-icons/im" import { useParams } from "react-router-dom"; import { DisplayNoIndexingAction } from "../components/DisplayNoIndexingAction" - export const IndexingActionMonitor=(props)=>{ const {loading,error,getSearchableCommit,searchableCommit} = useOpenAI() @@ -28,23 +27,22 @@ export const IndexingActionMonitor=(props)=>{ return display } - - return
- {!searchableCommit.length && } + {loading && } {searchableCommit.length>0 && Indexing Actions - {loading && } + {searchableCommit && formatListItem()} } + {!loading && searchableCommit && searchableCommit.length === 0 && }
@@ -93,16 +91,19 @@ function ItemElement ({item}){ from branch {item.branch["@value"]} -
+ + {status === "Error" && item.error_message && +
Error: {item.error_message["@value"]}
} - runned {getDays(item.time["@value"])} days ago + ran {getDays(item.time["@value"])} days ago + {status === "Progress" && } @@ -110,6 +111,7 @@ function ItemElement ({item}){ {status=== "Assigned" && {item.searchable_commit["@value"]}} +