Skip to content

Commit 4b2df05

Browse files
authored
Merge pull request #126 from terminusdb/fix_change_request
Fix change request workflow
2 parents 123d961 + 486ea99 commit 4b2df05

16 files changed

+122
-73
lines changed

packages/tdb-dashboard/src/components/CreateChangeRequestModal.js

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,11 @@ import React, {useRef, useState} from "react"
22
import {Alert, Modal, Button, Form} from "react-bootstrap"
33
import {ChangeRequest} from "../hooks/ChangeRequest"
44
import {useNavigate} from "react-router-dom"
5-
import {WOQLClientObj} from '../init-woql-client'
65

76
export const CreateChangeRequestModal = ({showModal, setShowModal , updateViewMode, type}) => {
8-
const {
9-
woqlClient
10-
} = WOQLClientObj()
117
const nameRef = useRef(null);
128
const messageRef = useRef(null);
13-
const {loading,errorMessage,setError,createChangeRequest} = ChangeRequest(woqlClient)
9+
const {loading,errorMessage,setError,createChangeRequest} = ChangeRequest()
1410
const navigate = useNavigate()
1511

1612
const closeModal = () => {

packages/tdb-dashboard/src/components/DocumentComponents.js

Lines changed: 31 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ import Popover from "react-bootstrap/Popover"
2121
import OverlayTrigger from "react-bootstrap/OverlayTrigger"
2222
import Row from "react-bootstrap/Row"
2323
import {DocumentsGraphqlTable} from "./DocumentsGraphqlTable"
24+
import {WOQLClientObj} from '../init-woql-client'
25+
import {CreateChangeRequestModal} from "../components/CreateChangeRequestModal"
2426

2527
// button to view frames
2628
const ViewFramesButton = () => {
@@ -102,8 +104,8 @@ const EditHeader = ({type, id, setView}) => {
102104
/**
103105
* function to display are you sure to delete a document message
104106
*/
105-
const DeleteMessage = ({handleDelete, handleToggle}) => {
106-
return <Card className="border-0">
107+
export const DeleteMessage = ({handleDelete}) => {
108+
return <Card className="border-0 w-100">
107109
<Card.Header className="bg-transparent w-100 fw-bold">
108110
<span>{"Are you sure you want to delete ?"}</span>
109111
</Card.Header>
@@ -116,10 +118,10 @@ const DeleteMessage = ({handleDelete, handleToggle}) => {
116118
onClick={handleDelete}>
117119
<RiDeleteBin7Line className="mb-1" /> Delete
118120
</Button>
119-
<Button className="btn-sm bg-light text-dark"
120-
onClick={handleToggle}>
121+
{/*<Button className="btn-sm bg-light text-dark"
122+
onClick={onCancel}>
121123
<FaTimes className="mr-1" /> Cancel
122-
</Button>
124+
</Button>*/}
123125
</div>
124126

125127
</Card.Body>
@@ -152,27 +154,31 @@ const UpdatingPopover = React.forwardRef(
152154
* @param {*} setView useState constant to set view in Form or JSON View
153155
* @returns View Header
154156
*/
155-
const ViewHeader = ({type, id, startCRMode, setView, setClickedDelete}) => {
157+
const ViewHeader = ({type, id, setView, setShowCRModal, setClickedDelete}) => {
158+
const {
159+
branch
160+
} = WOQLClientObj()
156161

157162
const navigate=useNavigate()
158163
const [show, setShow] = React.useState(false);
164+
159165

160166
const handleToggle = () => {
161167
setShow((prev) => !prev);
162168
};
163169

164170
function handleEdit(e) {
165-
startCRMode(CONST.EDIT_DOCUMENT)
166171
navigate(`${PATH.EDIT_DOC}`)
167172
}
168-
173+
169174
function handleDelete(e) {
170-
startCRMode(CONST.DELETE_DOCUMENT)
171-
setClickedDelete(Date.now())
175+
// show Change Request component if branch is main
176+
if(branch === "main"){
177+
setShowCRModal(Date.now())
178+
}
179+
else setClickedDelete(Date.now())
172180
}
173181

174-
175-
176182
return <Stack direction="horizontal" gap={3} className="w-100">
177183
<div className="col-md-6">
178184
<strong className="text-success">
@@ -193,7 +199,16 @@ const ViewHeader = ({type, id, startCRMode, setView, setClickedDelete}) => {
193199
Edit
194200
</Button>
195201

196-
<OverlayTrigger trigger="click"
202+
<Button variant="danger"
203+
type="button"
204+
title="Delete Document"
205+
onClick={handleDelete}
206+
className="btn-sm btn text-gray">
207+
<RiDeleteBin7Line className=" mb-1"/>
208+
</Button>
209+
210+
{/** commenting overlay trigger for delete */}
211+
{/*<OverlayTrigger trigger="click"
197212
placement="bottom"
198213
rootClose={true}
199214
show={show}
@@ -209,7 +224,7 @@ const ViewHeader = ({type, id, startCRMode, setView, setClickedDelete}) => {
209224
className="btn-sm btn text-gray">
210225
<RiDeleteBin7Line className=" mb-1"/>
211226
</Button>
212-
</OverlayTrigger>
227+
</OverlayTrigger>*/}
213228
</div>
214229
<CloseButton type={type}/>
215230
</Stack>
@@ -224,15 +239,15 @@ const ViewHeader = ({type, id, startCRMode, setView, setClickedDelete}) => {
224239
* @param {*} setView useState constant to set view in Form or JSON View
225240
* @returns
226241
*/
227-
export const Header = ({mode, type, id, startCRMode, setClickedDelete}) => {
242+
export const Header = ({mode, type, id, setShowCRModal, setClickedDelete}) => {
228243
const {
229244
setView
230245
} = DocumentControlObj()
231246

232247
let matchHeader ={
233248
[CONST.CREATE_DOCUMENT] : <CreateHeader type={type} setView={setView}/>,
234249
[CONST.EDIT_DOCUMENT] : <EditHeader type={type} id={id} setView={setView}/>,
235-
[CONST.VIEW_DOCUMENT] : <ViewHeader type={type} id={id} startCRMode={startCRMode} setView={setView} setClickedDelete={setClickedDelete}/>
250+
[CONST.VIEW_DOCUMENT] : <ViewHeader type={type} id={id} setView={setView} setShowCRModal={setShowCRModal} setClickedDelete={setClickedDelete}/>
236251
}
237252
return matchHeader[mode]
238253
}

packages/tdb-dashboard/src/components/DocumentsWoqlTable.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,10 @@ export const DocumentWoqlTable = () => {
9595

9696
// on click document table row
9797
function onRowClick (row) {
98-
const fullId = row["id"]
99-
navigate(`${UTILS.encodeURISegment(fullId)}`)
98+
let fullId = row.original['@id']
99+
100+
let fullIdEncode = btoa(fullId)
101+
navigate(fullIdEncode)
100102
}
101103

102104

packages/tdb-dashboard/src/components/ReviewComponent.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ const ToggleActions = ({ message }) => {
2727
if(res){
2828
setCurrentCRObject(false)
2929
exitChangeRequestBranch()
30-
navigate(`/${organization}/${dataProduct}`)
30+
navigate(`/${organization}/${dataProduct}/change_requests?status=${status}`)
3131
}
3232
}
3333
if(action) doAction()

packages/tdb-dashboard/src/components/SubmitChangeRequestModal.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
import React, {useRef, useState} from "react"
22
import {Alert, Modal, Button, Form} from "react-bootstrap"
33
import {ChangeRequest} from "../hooks/ChangeRequest"
4-
import {WOQLClientObj} from '../init-woql-client'
54

65
export const SubmitChangeRequestModal = ({showModal, setShowModal , updateParent, updateChangeRequestID}) => {
76
const messageRef = useRef(null);
8-
const {woqlClient} = WOQLClientObj()
9-
const {loading,errorMessage,setError,updateChangeRequestStatus} = ChangeRequest(woqlClient)
7+
const {loading,errorMessage,setError,updateChangeRequestStatus} = ChangeRequest()
108

119
const closeModal = () => setShowModal(false)
1210

packages/tdb-dashboard/src/components/utils.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -329,3 +329,13 @@ export function getCRConflictError (errorData) {
329329
</div>
330330
}
331331

332+
export function decodeUrl(id){
333+
let idDecode
334+
try{
335+
idDecode= atob(id)
336+
}catch(err){
337+
return undefined
338+
}
339+
return idDecode
340+
}
341+

packages/tdb-dashboard/src/hooks/BranchControl.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,14 @@ import { ChangeRequest } from "./ChangeRequest"
99
// we have the branches list only in document explorer and in time travel
1010
export function BranchControl (updateTable) {
1111
const {woqlClient,
12-
ref,
12+
ref,
1313
setHead,
1414
branch,
1515
// branches,
1616
// branchNeedReload,
1717
setConsoleTime} = WOQLClientObj()
1818

19-
const {getChangeRequestList} = ChangeRequest(woqlClient)
19+
const {getChangeRequestList} = ChangeRequest()
2020
if(!woqlClient) return ""
2121
const dataProduct = woqlClient.db()
2222

packages/tdb-dashboard/src/hooks/ChangeRequest.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@ import React, {useState} from "react";
22
//import { ClientObj } from "../cms-init-client"
33
//import {errorMessageFormatter} from "../utils/errorMessage"
44

5-
// import {WOQLClientObj} from '../init-woql-client'
5+
import {WOQLClientObj} from '../init-woql-client'
66
import { formatErrorMessage } from './hookUtils'
77

8-
export function ChangeRequest(woqlClient){
8+
export function ChangeRequest(){
9+
const {woqlClient} = WOQLClientObj()
910
const [loading, setLoading] = useState(false)
1011
const [errorMessage, setError] = useState(false)
1112
const [changeRequestList, setChangeRequestList] = useState([])
@@ -96,7 +97,7 @@ export function ChangeRequest(woqlClient){
9697
}finally{
9798
setLoading(false)
9899
}
99-
}
100+
}
100101

101102

102103
return {

packages/tdb-dashboard/src/hooks/DocumentHook.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import { WOQLClientObj } from "../init-woql-client";
66

77
// to be review this
88
export function CheckStatusObj() {
9-
const {woqlClient:client, currentChangeRequest} = WOQLClientObj()
10-
const {getChangeRequestByID} = ChangeRequest(client)
9+
const {currentChangeRequest} = WOQLClientObj()
10+
const {getChangeRequestByID} = ChangeRequest()
1111

1212
async function checkStatus (){
1313
const CRObject = await getChangeRequestByID(currentChangeRequest)
@@ -140,14 +140,14 @@ export function EditDocumentHook(client, extractedUpdate, setLoading, setErrorMs
140140
const {checkStatus} = CheckStatusObj()
141141
async function updateDocument() {
142142
try{
143-
144143
let params={}
145144
let update = extractedUpdate
146145
let documentId = extractedUpdate["@id"]
147146
let commitMsg=`Updating document ${documentId}`
148147
setLoading(true)
149148
await checkStatus ()
150-
const res = await client.updateDocument(update, params, client.db(), commitMsg)
149+
// pass create:true
150+
const res = await client.updateDocument(update, params, client.db(), commitMsg, false, false, false, true)
151151
setLoading(false)
152152
navigate(-1)
153153
}

packages/tdb-dashboard/src/hooks/hookUtils.js

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,16 +38,18 @@ export function getBaseUrlFeedback(){
3838

3939
export function formatErrorMessage (err){
4040
let message = err.message
41-
if(err.data && err.data["api:message"]){
42-
if( err.data["api:message"] === "Incorrect authentication information"){
43-
return "Incorrect authentication information, wrong username or password"
44-
}
45-
message = err.data["api:message"]
46-
}else if (message.indexOf("Network Error")>-1){
41+
if (message.indexOf("Network Error")>-1){
4742
message = "Network Error"
48-
}
49-
else if (err.data && err.data["api:status"] && err.data["api:status"]==="api:conflict") {
50-
message = getCRConflictError(err.data["api:witnesses"])
43+
}else if(err.data){
44+
if( err.data["api:message"] === "Incorrect authentication information"){
45+
message = "Incorrect authentication information, wrong username or password"
46+
}else if (err.data["api:status"]==="api:conflict"){
47+
message = getCRConflictError(err.data["api:witnesses"])
48+
}else if (err.data["api:message"]=== "Schema check failure"){
49+
message = `${err.data["api:message"]} ${JSON.stringify(err.data["system:witnesses"], null, 2)}`
50+
}else{
51+
message = err.data["api:message"]
52+
}
5153
}
5254
return message
5355
}

0 commit comments

Comments
 (0)