diff --git a/packages/tdb-dashboard/src/components/AboutDataProduct.js b/packages/tdb-dashboard/src/components/AboutDataProduct.js index 17f37987..8ab074c4 100644 --- a/packages/tdb-dashboard/src/components/AboutDataProduct.js +++ b/packages/tdb-dashboard/src/components/AboutDataProduct.js @@ -1,7 +1,7 @@ import React, {useState, useEffect, Fragment, useRef} from "react" import {WOQLClientObj} from '../init-woql-client' import {timeConverter, } from "../pages/utils" -import {Button,Alert} from "react-bootstrap" +import {Button,Alert,ButtonGroup,ToggleButton} from "react-bootstrap" import {DATA_PRODUCT_HEALTHY} from "../pages/constants" import {HealthModal} from "./HealthModal" import {localSettings} from "../../localSettings" @@ -20,9 +20,9 @@ export const AboutDataProduct = ({dataProductDetails, setShowDeleteModal, setSho const {dataProduct,organization} =useParams() const [showHealth, setShowHealth]=useState(false) const [branchCount, setBranchCount]= useState(0) - const {woqlClient, accessControlDashboard} = WOQLClientObj() + const {woqlClient, accessControlDashboard, updateChangeRequestStatus, useChangeRequest,clientUser} = WOQLClientObj() const {documentClasses,getDocumentClasses} = useTDBDocuments(woqlClient) - + const [radioValue, setRadioValue] = useState(useChangeRequest===false ? "Inactive" : "Active"); const {cloneDatabase, loading:loadingClone, error:errorClone , setError:setCloneError} = ManageDatabase() @@ -90,9 +90,43 @@ export const AboutDataProduct = ({dataProductDetails, setShowDeleteModal, setSho const showUpdateHandler = () =>{ setShowUpdate(dataProductDetails) } + + const radios = [ + { name: 'Change Request Mode Active', value: 'Active' , title:'manage your documents using the change request mode'}, + { name: 'Change Request Mode Inactive', value: 'Inactive' , title:'manage your documents directly in the current branch'}, + ]; + + + const updateChangeRequestStatusHandler = function(value){ + setRadioValue(value) + updateChangeRequestStatus(value) + } return + {clientUser.serverType !== "TerminusDB" && + + + + {radios.map((radio, idx) => ( + updateChangeRequestStatusHandler(e.currentTarget.value)} + > + {radio.name} + + ))} + + + + }

About

diff --git a/packages/tdb-dashboard/src/components/DataProductActivityStatus.js b/packages/tdb-dashboard/src/components/DataProductActivityStatus.js index 4cbf4400..473198c1 100644 --- a/packages/tdb-dashboard/src/components/DataProductActivityStatus.js +++ b/packages/tdb-dashboard/src/components/DataProductActivityStatus.js @@ -7,7 +7,7 @@ import { Legend, ResponsiveContainer, AreaChart, Area } from 'recharts' -import {TimeTravelControl} from "../hooks/TimeTravelControl" +import {useTimeTravel} from "../hooks/useTimeTravel" import {printtsDate, printtsTime} from "./utils" import {Loading} from "./Loading" import {PROGRESS_BAR_COMPONENT} from "./constants" @@ -16,7 +16,7 @@ import {Col} from "react-bootstrap" export const DataProductActivityStatus = ()=>{ const { dataProvider - } = TimeTravelControl(50) + } = useTimeTravel(50) return diff --git a/packages/tdb-dashboard/src/components/DatePicker.js b/packages/tdb-dashboard/src/components/DatePicker.js index 55ba3237..d4fb2175 100644 --- a/packages/tdb-dashboard/src/components/DatePicker.js +++ b/packages/tdb-dashboard/src/components/DatePicker.js @@ -11,6 +11,10 @@ export const DatePickerComponent = ({currentDay, setStartTime}) => { // convert to ISO timeStamp if(setStartTime)setStartTime(data) } + + useEffect(()=>{ + setCurrentDate(currentDay) + },[currentDay]) return { - const {currentChangeRequest} = WOQLClientObj() + const {currentChangeRequest,useChangeRequest} = WOQLClientObj() const { organization, dataProduct } = useParams(); @@ -101,18 +101,18 @@ export const IconBar = ({setShowFeedbackForm}) => { {IconBarConfig.graphiql.icon} - + {useChangeRequest && {IconBarConfig.changes.icon} - - {!currentChangeRequest && + } + {useChangeRequest && !currentChangeRequest && { } - {!currentChangeRequest && + {useChangeRequest && !currentChangeRequest && { } - {!currentChangeRequest && + {useChangeRequest && !currentChangeRequest && { async function handleMessage(comment) { let id=extractID(currentCRObject["@id"]) // this call return the changeRequestObj Updated - let res=await addNewMessage(comment, id) + let res=await addNewMessage(comment,id) + // we'll see if add need rebase check every time res.needRebase = currentCRObject.needRebase setCurrentCRObject(res) diff --git a/packages/tdb-dashboard/src/components/QueryPane.js b/packages/tdb-dashboard/src/components/QueryPane.js index e3504387..79192259 100644 --- a/packages/tdb-dashboard/src/components/QueryPane.js +++ b/packages/tdb-dashboard/src/components/QueryPane.js @@ -112,6 +112,7 @@ export const QueryPane = ({queryObj}) => {
diff --git a/packages/tdb-dashboard/src/components/TimeTravel.js b/packages/tdb-dashboard/src/components/TimeTravel.js index 2fcf44e7..e9b23277 100644 --- a/packages/tdb-dashboard/src/components/TimeTravel.js +++ b/packages/tdb-dashboard/src/components/TimeTravel.js @@ -1,12 +1,10 @@ import React, {useState, useEffect, useRef} from "react" import {BiTimer, BiTime, BiMessageAltDetail} from "react-icons/bi" -import {BsFillCircleFill, BsCalendar} from"react-icons/bs" +import {BsFillCircleFill} from"react-icons/bs" import { VerticalTimeline, VerticalTimelineElement } from 'react-vertical-timeline-component' import 'react-vertical-timeline-component/style.min.css' -import {TimeTravelControl} from "../hooks/TimeTravelControl" +import {useTimeTravel} from "../hooks/useTimeTravel" import {Button, Card, Row, Col} from "react-bootstrap" -import {TERMINUS_SUCCESS} from "./constants" -import {Alerts} from "./Alerts" import {AiOutlineUser} from "react-icons/ai" import {printtsDate, printtsTime} from "./utils" import {WOQLClientObj} from '../init-woql-client' @@ -16,31 +14,30 @@ import {PROGRESS_BAR_COMPONENT} from "./constants" import {DatePickerComponent} from "./DatePicker" import {FaInfoCircle} from "react-icons/fa" - -export const TimeTravel = ({show}) => { - +export const TimeTravel = ({refreshTime}) => { let cardColor = "#303030", transparantColor = "transparent", activeColor = "#00bc8c" - const {branch, chosenCommit,setHead, currentChangeRequest} = WOQLClientObj() - - const {currentItem, + const {setHead,chosenCommit,branch} = WOQLClientObj() + const { dataProvider, - //setSelectedValue, - setCurrentDay, loadNextPage, olderCommit, - loadPreviousPage, - setReloadQuery, currentDay, setStartTime, loading, setLoading, - } = TimeTravelControl() + } = useTimeTravel() useEffect(() => { // when new commit logs are loaded on click of previous or next if(dataProvider.length > 0) { setLoading(false) } }, [dataProvider]) + + useEffect(()=>{ + if(refreshTime){ + setStartTime(refreshTime,true) + } + },[refreshTime]) //const [reportAlert, setReportAlert] = useState(false) @@ -53,20 +50,6 @@ export const TimeTravel = ({show}) => { } } - /* useEffect(() => { - if(chosenCommit && setHead){ - setHead(branch, chosenCommit) - let message = `The state of data product has been set to date ${chosenCommit.label}` - setReportAlert() - } - }, [chosenCommit])*/ - - // useEffect(() => { - // if(show){ - // setReloadQuery(Date.now()) - // } - // }, [show]) - const TimelineElements = () => { if(!dataProvider) return
diff --git a/packages/tdb-dashboard/src/components/TimeTravelContainer.js b/packages/tdb-dashboard/src/components/TimeTravelContainer.js index 02983659..148dbfd2 100644 --- a/packages/tdb-dashboard/src/components/TimeTravelContainer.js +++ b/packages/tdb-dashboard/src/components/TimeTravelContainer.js @@ -1,4 +1,4 @@ -import React from "react" +import React, {useState} from "react" import {Card, Button} from "react-bootstrap" import {WOQLClientObj} from '../init-woql-client' import {AiOutlineClose, AiOutlineRollback} from "react-icons/ai" @@ -6,9 +6,10 @@ import {TimeTravel} from "./TimeTravel" export const TimeTravelContainer = ({show, setShowTimeTravel}) => { const {branch,setHead}=WOQLClientObj() - + const [needRefresh,setNeedrefresh] = useState(false) const goToLatestCommit = () => { - setHead("main", { commit: false, time: false }); + setHead(branch, { commit: false, time: false }); + setNeedrefresh(Date.now()) }; let sliderClass = 'time-travel-slider' @@ -21,7 +22,7 @@ export const TimeTravelContainer = ({show, setShowTimeTravel}) => {
Time travel on branch - {branch}
-
- {show && } + {show && }
diff --git a/packages/tdb-dashboard/src/components/layout/TDBToggleButtonGroup.js b/packages/tdb-dashboard/src/components/layout/TDBToggleButtonGroup.js index d5d0ddc7..d9b37172 100644 --- a/packages/tdb-dashboard/src/components/layout/TDBToggleButtonGroup.js +++ b/packages/tdb-dashboard/src/components/layout/TDBToggleButtonGroup.js @@ -14,7 +14,7 @@ export const TDBToggleButtonGroup = (props) => { return {config.buttons.map((item) => - handleOnClick(item.id)} > {item.icon && } {item.label} diff --git a/packages/tdb-dashboard/src/components/utils.js b/packages/tdb-dashboard/src/components/utils.js index 48d0a2dd..e985bb29 100644 --- a/packages/tdb-dashboard/src/components/utils.js +++ b/packages/tdb-dashboard/src/components/utils.js @@ -303,8 +303,11 @@ export const status = { /** just get change request ID, remove "Changerequest/" from ID */ export function extractID(id) { - let str= id.split("/") - return str[1] + if(typeof id === "string"){ + let str= id.split("/") + return str[1] + } + return "" } /** sorts alphabetically */ diff --git a/packages/tdb-dashboard/src/hooks/ChangeRequest.js b/packages/tdb-dashboard/src/hooks/ChangeRequest.js index 48a7f650..788cae5d 100644 --- a/packages/tdb-dashboard/src/hooks/ChangeRequest.js +++ b/packages/tdb-dashboard/src/hooks/ChangeRequest.js @@ -129,6 +129,7 @@ export function ChangeRequest(){ return { loading, setError, + addNewMessage, errorMessage, changeRequestList, createChangeRequest, diff --git a/packages/tdb-dashboard/src/hooks/TimeTravelControl.js b/packages/tdb-dashboard/src/hooks/useTimeTravel.js similarity index 92% rename from packages/tdb-dashboard/src/hooks/TimeTravelControl.js rename to packages/tdb-dashboard/src/hooks/useTimeTravel.js index aa63a38c..cf956d76 100644 --- a/packages/tdb-dashboard/src/hooks/TimeTravelControl.js +++ b/packages/tdb-dashboard/src/hooks/useTimeTravel.js @@ -10,19 +10,22 @@ const QUERY_TYPE_LOAD = 'QUERY_TYPE_LOAD'; const QUERY_TYPE_PREVIOUS = 'QUERY_TYPE_PREVIOUS'; const QUERY_TYPE_NEXT = 'QUERY_TYPE_NEXT'; -export const TimeTravelControl = (limit=5) => { +export const useTimeTravel = (limit=5) => { const {woqlClient, branch, chosenCommit,setHead} = WOQLClientObj() if(!woqlClient) return "" const dataProduct = woqlClient.db() const [report, setError] = useState(false) // type Date - const currentDay = new Date() - if(chosenCommit && chosenCommit.time)currentDay.setTime(chosenCommit.time*1000) + const startcurrentDay = new Date() + // If there is a commit selected I add 6 second to the time + // because the query is less then or he not get the selected one + if(chosenCommit && chosenCommit.time)startcurrentDay.setTime((chosenCommit.time*1000)+6000) //Unix timestamp (in seconds) - const currentStartTime = Math.floor(+currentDay/1000) //currentDay.unix(); + const currentStartTime = Math.floor(+startcurrentDay/1000) const [olderCommit,setOlderCommit] = useState(true); const [currentPage, setCurrentPage] = useState(0); + const [currentDay, setUpdateCurrentDay] = useState(startcurrentDay); const [startTime, setUpdateStartTime] = useState(currentStartTime); const [gotoPosition,setGotoPosition] = useState(null); const [reloadQuery,setReloadQuery] = useState(0); @@ -87,6 +90,8 @@ export const TimeTravelControl = (limit=5) => { else queryObj = WOQL.lib().commits(branch, limit,currentPage); } const tmpWoqlClient = woqlClient.copy() + // I should reset the commit or I see only a subset of commits + tmpWoqlClient.ref(null) tmpWoqlClient.query(queryObj).then((result) => { if (result.bindings) { @@ -214,16 +219,21 @@ export const TimeTravelControl = (limit=5) => { // setReloadQuery(Date.now()); } - const setStartTime=(date)=>{ + const setStartTime=(date,resetday)=>{ setCurrentPage(0); setGotoPosition(null) //setCurrentCommit(null) - const unixTime = (Math.floor(+date/1000)+86400) //time.add(1,'day').unix(); + const unixTime = (Math.floor(+date/1000)+86400) if(unixTime !==startTime) setDataProviderValues({dataProvider:[],selectedValue:0}); if(chosenCommit && chosenCommit.time){ //reset the commit setHead(branch, {}) } + if(resetday){ + const tmpCurrentDay = new Date() + tmpCurrentDay.setTime(date) + setUpdateCurrentDay(tmpCurrentDay+6000) + } setUpdateStartTime(unixTime) } diff --git a/packages/tdb-dashboard/src/hooks/utils.js b/packages/tdb-dashboard/src/hooks/utils.js index e7cacc8f..64d08544 100644 --- a/packages/tdb-dashboard/src/hooks/utils.js +++ b/packages/tdb-dashboard/src/hooks/utils.js @@ -1,4 +1,25 @@ +export function storeChangeRequestDBStatus(orgName,dbName,status,setStatus){ + const cr_name = `TERMINUSCMS_CR_STATUS.${orgName}_____${dbName}` + localStorage.setItem(cr_name,status) + setStatus(status==="Inactive" ? false : true) +} + +export function getStoreChangeRequestDBStatus(orgName,dbName,setStatus){ + const cr_name = `TERMINUSCMS_CR_STATUS.${orgName}_____${dbName}` + const item = localStorage.getItem(cr_name) + let status = true + if(item) status = item==="Inactive" ? false : true + setStatus(status) + return status +} + +export function deleteStoreChangeRequestDBStatus(orgName,dbName){ + const cr_name = `TERMINUSCMS_CR_STATUS.${orgName}_____${dbName}` + localStorage.removeItem(cr_name) +} + + export function graphStructureFromBindings(bindings) { let gs = {} for (var i = 0; i < bindings.length; i++) { diff --git a/packages/tdb-dashboard/src/init-woql-client.js b/packages/tdb-dashboard/src/init-woql-client.js index 525b901a..9bcb56f2 100644 --- a/packages/tdb-dashboard/src/init-woql-client.js +++ b/packages/tdb-dashboard/src/init-woql-client.js @@ -9,6 +9,7 @@ import { formatErrorMessage } from './hooks/hookUtils' import { createApolloClient } from './routing/ApolloClientConfig' import {getChangesUrl} from "./hooks/hookUtils" import {cleanGraphiqlCache} from "./pages/utils" +import {getStoreChangeRequestDBStatus,storeChangeRequestDBStatus} from "./hooks/utils" export const WOQLContext = React.createContext() export const WOQLClientObj = () => useContext(WOQLContext) @@ -34,10 +35,13 @@ export const WOQLClientProvider = ({children, params}) => { const [chosenCommit,setChosenCommit]=useState({}) const [currentCRObject, setCurrentCRObject]=useState(false) const [userHasMergeRole,setTeamUserRoleMerge] = useState(false) + const [currentChangeRequest,setCurrentChangeRequest] = useState(false) const [currentCRName,setCurrentCRName] = useState(false) const [currentCRStartBranch,setCurrentCRStartBranch] = useState(false) + const [useChangeRequest,setUseChangeRequest] = useState(true) + // constants to control sidebar collapse const [collapseSideBar, setCollapseSideBar] = useState(localStorage.getItem(`Terminusdb-SideBar-Collapsed`) === "true" ? true : false) @@ -58,11 +62,11 @@ export const WOQLClientProvider = ({children, params}) => { const noDatabase = {"":true,"profile":true,"administrator" :true} const getLocation = ()=>{ const locArr = location.pathname.split("/") - // const startWith = process.env.BASE_URL ? 2 : 1 + // const startWith = process.env.BASE_URL ? 2 : 1 const teamPath = locArr.length>1 && !noTeam[locArr[1]] ? UTILS.decodeURISegment(locArr[1]) : false const dataPath = locArr.length>2 && !noDatabase[locArr[2]] ? UTILS.decodeURISegment(locArr[2]) : false const page = locArr.length>3 ? locArr[3] : false - // console.log(teamPath,dataPath,page) + // console.log(teamPath,dataPath,page) return {organization:teamPath,dataProduct:dataPath,page} } @@ -150,33 +154,42 @@ export const WOQLClientProvider = ({children, params}) => { setHead('main',{commit:false,time:false}) if(dbName){ + // getStoreChangeRequestDBStatus(client.organization(),dbName,setUseChangeRequest) //clear graphiql interface local storage cleanGraphiqlCache() + + const changeRequestStatus = await client.sendCustomRequest("GET", `${getChangesUrl(client)}/profile/status`) + setUseChangeRequest(changeRequestStatus.isActive) + if(changeRequestStatus.isActive){ // check if there is a change request related - const {TERMINUSCMS_CR , TERMINUSCMS_CR_ID} = changeRequestName(client) + const {TERMINUSCMS_CR , TERMINUSCMS_CR_ID} = changeRequestName(client) - const lastBranch = localStorage.getItem(TERMINUSCMS_CR) - const lastChangeRequest = localStorage.getItem(TERMINUSCMS_CR_ID) + const lastBranch = localStorage.getItem(TERMINUSCMS_CR) + const lastChangeRequest = localStorage.getItem(TERMINUSCMS_CR_ID) - if(lastBranch && lastChangeRequest){ - //check the changeRequest Status - const changeObj = await client.sendCustomRequest("GET", `${getChangesUrl(client)}/${lastChangeRequest}`) - if(changeObj.status=== "Open"){ - client.checkout(lastBranch) - setBranch(lastBranch) - setCurrentChangeRequest(lastChangeRequest) - setCurrentCRStartBranch(changeObj.original_branch) - setCurrentCRName(changeObj.name || changeObj.messages[0].text) + if(lastBranch && lastChangeRequest){ + //check the changeRequest Status + const changeObj = await client.sendCustomRequest("GET", `${getChangesUrl(client)}/${lastChangeRequest}`) + if(changeObj.status=== "Open"){ + client.checkout(lastBranch) + setBranch(lastBranch) + setCurrentChangeRequest(lastChangeRequest) + setCurrentCRStartBranch(changeObj.original_branch) + setCurrentCRName(changeObj.name || changeObj.messages[0].text) + }else{ + localStorage.removeItem(TERMINUSCMS_CR) + localStorage.removeItem(TERMINUSCMS_CR_ID) + setBranch("main") + setCurrentChangeRequest(false) + setCurrentCRName(false) + setCurrentCRStartBranch(false) + } }else{ - localStorage.removeItem(TERMINUSCMS_CR) - localStorage.removeItem(TERMINUSCMS_CR_ID) + //if we are not change request setBranch("main") setCurrentChangeRequest(false) - setCurrentCRName(false) - setCurrentCRStartBranch(false) } }else{ - //if we are not change request setBranch("main") setCurrentChangeRequest(false) } @@ -208,6 +221,7 @@ export const WOQLClientProvider = ({children, params}) => { function exitChangeRequestBranch(branchName = "main"){ woqlClient.checkout(branchName) + woqlClient.ref(null) const {TERMINUSCMS_CR , TERMINUSCMS_CR_ID} = changeRequestName() localStorage.removeItem([TERMINUSCMS_CR]) localStorage.removeItem([TERMINUSCMS_CR_ID]) @@ -226,7 +240,7 @@ export const WOQLClientProvider = ({children, params}) => { if(branchID)woqlClient.checkout(branchID) refObject = refObject || {} let sref=refObject.commit - let refTime=refObject.time + //let refTime=refObject.time sref = sref || false woqlClient.ref(sref) @@ -296,11 +310,21 @@ export const WOQLClientProvider = ({children, params}) => { sidebarStateObj[name]=value } + const updateChangeRequestStatus= async function(status){ + const isActive = status === "Inactive" ? false : true + await woqlClient.sendCustomRequest("PUT", `${getChangesUrl(woqlClient)}/profile/status`,{isActive:isActive}) + setUseChangeRequest(isActive) + if(status==="Inactive"){ + exitChangeRequestBranch(currentCRStartBranch) + } + } return ( { //{currentCRObject.needRebase && currentCRObject.status !== "Merged" &&
- if (currentCRObject.needRebase === false || currentCRObject.status === CONST.MERGED) + if (currentCRObject && (currentCRObject.needRebase === false || currentCRObject.status === CONST.MERGED)) return if(currentCRObject.hasOwnProperty("manageConflict") && currentCRObject.manageConflict) return diff --git a/packages/tdb-dashboard/src/pages/DocumentEdit.js b/packages/tdb-dashboard/src/pages/DocumentEdit.js index f4d93ef7..7e17554e 100644 --- a/packages/tdb-dashboard/src/pages/DocumentEdit.js +++ b/packages/tdb-dashboard/src/pages/DocumentEdit.js @@ -10,7 +10,7 @@ import {DocumentSearchComponent} from "../components/DocumentSearchComponent" import '@terminusdb/terminusdb-documents-ui/dist/css/terminusdb__darkly.css' export const DocumentEdit = () => { - const {setChangeRequestBranch, branch,woqlClient,currentChangeRequest} = WOQLClientObj() + const {setChangeRequestBranch, branch,woqlClient,currentChangeRequest,useChangeRequest} = WOQLClientObj() if(!woqlClient) return '' const [showModal, setShowModal] = useState(false) const {type, docid} = useParams() @@ -53,7 +53,7 @@ export const DocumentEdit = () => { return {error && } {showModal && } - {currentChangeRequest && + {!useChangeRequest || currentChangeRequest && { const {organization,dataProduct,type} = useParams() - const {setChangeRequestBranch, branch,woqlClient,currentChangeRequest} = WOQLClientObj() + const {setChangeRequestBranch, branch,woqlClient,currentChangeRequest,useChangeRequest} = WOQLClientObj() const [showModal, setShowModal] = useState(false) const { @@ -30,7 +29,7 @@ export const DocumentNew = () => { //try to change/add documents in main branch // I'm moving this logic in change request useEffect(() => { - if(!currentChangeRequest){ + if(!currentChangeRequest && useChangeRequest){ setShowModal(true) } getDocumentFrames() @@ -51,7 +50,7 @@ export const DocumentNew = () => { return {showModal && } {error && } - {currentChangeRequest && frames && + {(!useChangeRequest || currentChangeRequest) && frames && { - const { branch,setChangeRequestBranch,woqlClient,currentChangeRequest} = WOQLClientObj() + const { branch,setChangeRequestBranch,woqlClient,currentChangeRequest,useChangeRequest} = WOQLClientObj() const {type, docid} = useParams() const [showCRModal, setShowCRModal] = useState(false) const [showDeleteModal, setShowDeleteModal]=useState(false) const navigate = useNavigate() const location = useLocation() + const { frames, selectedDocument, @@ -60,7 +60,7 @@ export const DocumentView = () => { function deleteDocumentHandler(e) { // I can not change main directly // I can change other branches creates with create branch interface - if(!currentChangeRequest){ + if(!currentChangeRequest && useChangeRequest){ setShowCRModal(true) }else setShowDeleteModal(true) } diff --git a/packages/tdb-dashboard/src/pages/Documents.js b/packages/tdb-dashboard/src/pages/Documents.js index 5d66127c..981e5020 100644 --- a/packages/tdb-dashboard/src/pages/Documents.js +++ b/packages/tdb-dashboard/src/pages/Documents.js @@ -11,7 +11,7 @@ import {Loading} from "../components/Loading" import {Col} from "react-bootstrap" export const Documents = () => { - const {woqlClient} = WOQLClientObj() + const {woqlClient,ref} = WOQLClientObj() const {dataProduct,organization} = useParams() const navigate = useNavigate() const {perDocumentCount, @@ -25,7 +25,7 @@ export const Documents = () => { // useEffect(() => { getDocumentNumbers() - },[dataProduct]) + },[dataProduct,ref]) const getUrl = (pageName)=> { return `/${organization}/${dataProduct}/${pageName}` diff --git a/packages/tdb-dashboard/src/pages/DocumentsGraphqlList.js b/packages/tdb-dashboard/src/pages/DocumentsGraphqlList.js index 663b1945..1c1ae6b6 100644 --- a/packages/tdb-dashboard/src/pages/DocumentsGraphqlList.js +++ b/packages/tdb-dashboard/src/pages/DocumentsGraphqlList.js @@ -11,7 +11,7 @@ import {ErrorMessageReport} from "../components/ErrorMessageReport" // I pass this so I'm sure it exists before loading the component export const DocumentsGraphqlList = ({documentTablesConfig}) => { const {type} = useParams() - const {apolloClient,branch,setChangeRequestBranch,woqlClient} = WOQLClientObj() + const {apolloClient,branch,setChangeRequestBranch,woqlClient,ref} = WOQLClientObj() const {deleteDocument,loading,error,setError} = useTDBDocuments(woqlClient) const [showCRModal, setShowCRModal] = useState(false) const [showDeleteModal, setShowDeleteModal]=useState(false) @@ -72,6 +72,7 @@ export const DocumentsGraphqlList = ({documentTablesConfig}) => { /> } {error && } {!showDeleteModal && { const {type} = useParams() - const {woqlClient, currentChangeRequest } = WOQLClientObj() + const {woqlClient,ref } = WOQLClientObj() const {documentTablesConfig, getGraphqlTablesConfig,loading} = useTDBDocuments(woqlClient) if(!woqlClient) return "" @@ -17,7 +17,7 @@ export const DocumentsPageList = () => { useEffect(() => { getGraphqlTablesConfig() - },[]) + },[ref]) if(loading || documentTablesConfig===null) return if(viewGraphql) return diff --git a/packages/tdb-dashboard/src/pages/GraphqlHandlerbarsPage.js b/packages/tdb-dashboard/src/pages/GraphqlHandlerbarsPage.js index e0126070..69849701 100644 --- a/packages/tdb-dashboard/src/pages/GraphqlHandlerbarsPage.js +++ b/packages/tdb-dashboard/src/pages/GraphqlHandlerbarsPage.js @@ -72,6 +72,7 @@ export function GraphqlHandlerbarsPage({}) { setHandlebarTemplate(classObj['@metadata']['embedding']['template']) }else if(documentTablesConfig && documentTablesConfig.objQueryOpenAI && documentTablesConfig.objQueryOpenAI[classId]){ setGraphqlQuery(format(documentTablesConfig.objQueryOpenAI[classId].query)) + setHandlebarTemplate("") } setType(classId) resetPreviewResult() diff --git a/packages/tdb-dashboard/src/pages/Layout.js b/packages/tdb-dashboard/src/pages/Layout.js index 969e5c4c..6ca1bd9e 100644 --- a/packages/tdb-dashboard/src/pages/Layout.js +++ b/packages/tdb-dashboard/src/pages/Layout.js @@ -99,8 +99,7 @@ export const Layout = (props) => { setCollapseSideBar={setCollapseSideBar}/>
{currentChangeRequest && } - {/*dataProduct && noChange && */} - { dataProduct && } + { dataProduct && showTimeTravel && } {props.children}
diff --git a/packages/tdb-documents-ui-template/src/ListDocumentsComponent.js b/packages/tdb-documents-ui-template/src/ListDocumentsComponent.js index 8c9d76ec..a3c4ae98 100644 --- a/packages/tdb-documents-ui-template/src/ListDocumentsComponent.js +++ b/packages/tdb-documents-ui-template/src/ListDocumentsComponent.js @@ -4,7 +4,7 @@ import Stack from 'react-bootstrap/Stack' import {HiPlusSm} from "react-icons/hi" import { DocumentsGraphqlTable } from "./components/DocumentsGraphqlTable"; -export const ListDocumentsComponent = ({type, apolloClient, tableConfig , advancedSearchConfig, onRowClick, +export const ListDocumentsComponent = ({commit,type, apolloClient, tableConfig , advancedSearchConfig, onRowClick, onDeleteButtonClick, onViewButtonClick, onEditButtonClick, @@ -26,6 +26,7 @@ export const ListDocumentsComponent = ({type, apolloClient, tableConfig , advanc { +export const DocumentsGraphqlTable = ({commit,gqlQuery,apolloClient,tableConfig, advancedSearchConfig, type, onRowClick, onViewButtonClick, onEditButtonClick, onDeleteButtonClick, showGraphqlTab=true}) => { if(!tableConfig || !gqlQuery) return '' const query = gqlQuery//gql`${querystr}` // const [advSearchFields,setAdvFields] = useState(false) @@ -46,7 +46,7 @@ export const DocumentsGraphqlTable = ({gqlQuery,apolloClient,tableConfig, advanc setQueryTodisplay(format(queryStr)) } - },[type]); + },[type,commit]); function onRowClickCall(row){ if (onRowClick) { diff --git a/packages/tdb-react-components/src/queryeditor/Editor.js b/packages/tdb-react-components/src/queryeditor/Editor.js index f91c8655..3a809450 100644 --- a/packages/tdb-react-components/src/queryeditor/Editor.js +++ b/packages/tdb-react-components/src/queryeditor/Editor.js @@ -1,4 +1,4 @@ -import React,{useState} from "react"; +import React,{useEffect, useState} from "react"; import CodeMirror from "@uiw/react-codemirror" import { vscodeDark } from '@uiw/codemirror-theme-vscode'; @@ -25,6 +25,10 @@ export const CodeViewer = ({text, language, theme}) => { export const CodeEditor = ({text, language, onChange, onBlur, theme}) => { const [value,setValue] = useState(text || "") + useEffect(() => { + setValue(text) + }, [language]) + const onChangeHandler = React.useCallback((value, viewUpdate) => { setValue(value) }, []); diff --git a/packages/tdb-react-components/src/queryeditor/WOQLEditor.js b/packages/tdb-react-components/src/queryeditor/WOQLEditor.js index ea00f910..9b0c743f 100644 --- a/packages/tdb-react-components/src/queryeditor/WOQLEditor.js +++ b/packages/tdb-react-components/src/queryeditor/WOQLEditor.js @@ -5,7 +5,7 @@ import {makeWOQLFromString} from "./queryPaneUtils" /** * Controls the display of query viewer and editor */ -export const WOQLEditor = ({editorObject, editable, setEditorContent, setMainError, setWOQLQuery, theme}) => { +export const WOQLEditor = ({language, editorObject, editable, setEditorContent, setMainError, setWOQLQuery, theme}) => { const [syntaxError, setSyntaxError] = useState(false) WOQLEditor.propTypes = { @@ -52,7 +52,7 @@ export const WOQLEditor = ({editorObject, editable, setEditorContent, setMainErr return {syntaxError &&

{syntaxError}

} - +
return(