Skip to content

Commit 7ab126e

Browse files
Merge pull request #214 from terminusdb/newDoc
document links create filled form retention on submit error
2 parents 4c52be2 + b892bcc commit 7ab126e

File tree

6 files changed

+30
-13
lines changed

6 files changed

+30
-13
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ export const Alerts = ({message, type, onCancel, time}) => {
6565
<div className="d-flex justify-content-between">
6666
<div className="w-100">
6767
<FaExclamationTriangle className="me-1 mb-1" />
68-
{/*<strong>Oops! Something went wrong.</strong>*/} {message}
68+
{<strong>ERROR: </strong>} {message}
6969
</div>
7070
<AlertCloseButton className={"alert_btn_close alert_danger_text"} onClick={() => onClose("danger")}/>
7171
</div>

packages/tdb-documents-ui/src/components/CreateDocumentLink.js

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import { DisplayDocumentation } from "../templates"
1313
import { documentInternalProperties } from "../helpers/documentHelpers"
1414

1515
// display based on action
16-
const DisplayLinkFrame = ({ reference, args, linkPropertyComment, order_by, onSelect, propertyDocumentation, documentData, cardKey, setDocumentData, action, onChange, documentLinkPropertyName, extracted, required, mode, linked_to, linkId }) => {
16+
const DisplayLinkFrame = ({ reference, args, linkPropertyComment, formData, order_by, onSelect, propertyDocumentation, documentData, cardKey, setDocumentData, action, onChange, documentLinkPropertyName, extracted, required, mode, linked_to, linkId }) => {
1717

1818
let nextCreateLink = false
1919

@@ -126,6 +126,7 @@ const DisplayLinkFrame = ({ reference, args, linkPropertyComment, order_by, onSe
126126
//hideFieldLabel={hideFieldLabel}
127127
linkId={linkId}
128128
onSelect={onSelect}
129+
formData={formData && formData.hasOwnProperty(field) && formData[field] ? formData[field] : false}
129130
args={args}
130131
depth={cardKey}
131132
reference={reference}
@@ -147,7 +148,7 @@ const DisplayLinkFrame = ({ reference, args, linkPropertyComment, order_by, onSe
147148
propertyName: documentLinkPropertyName,
148149
id: fieldID,
149150
key: `${linked_to}__${uuidv4()}`,
150-
formData: util.getFormDataPerProperty(documentData, fieldName),
151+
formData: formData && formData.hasOwnProperty(fieldName) && formData[fieldName]? {[fieldName]: formData[fieldName]} :util.getFormDataPerProperty(documentData, fieldName),
151152
required: definitions.required.includes(fieldName),
152153
mode: mode,
153154
args: args,
@@ -172,7 +173,7 @@ const DisplayLinkFrame = ({ reference, args, linkPropertyComment, order_by, onSe
172173

173174
return <SearchExistingLink onSelect={onSelect}
174175
mode={mode}
175-
formData={null}
176+
formData={formData}
176177
onChange={onChange}
177178
id={cardKey}
178179
linked_to={linked_to}/>
@@ -182,7 +183,7 @@ const DisplayLinkFrame = ({ reference, args, linkPropertyComment, order_by, onSe
182183
}
183184

184185

185-
export const CreateDisplay = ({ args, name, linkPropertyComment, order_by, reference, required, onSelect, propertyDocumentation, cardKey, linked_to, extracted, mode, onChange, action, setAction, documentData, setDocumentData, linkId }) => {
186+
export const CreateDisplay = ({ args, name, formData,linkPropertyComment, order_by, reference, required, onSelect, propertyDocumentation, cardKey, linked_to, extracted, mode, onChange, action, setAction, documentData, setDocumentData, linkId }) => {
186187

187188
return <>
188189
{getDocumentLinkChoiceDescription(name, linked_to)}
@@ -200,6 +201,7 @@ export const CreateDisplay = ({ args, name, linkPropertyComment, order_by, refer
200201
onChange={onChange}
201202
onSelect={onSelect}
202203
order_by={order_by}
204+
formData={formData}
203205
linked_to={linked_to}
204206
documentLinkPropertyName={name}
205207
documentData={documentData}
@@ -214,12 +216,18 @@ function getID (linkId, depth) {
214216
}
215217
return depth+1
216218
}
219+
220+
export function extractFormData(formData, linked_to) {
221+
if(typeof formData === CONST.STRING_TYPE) return formData
222+
if(Object.keys(formData).length) return formData
223+
return { [CONST.TYPE]: linked_to }
224+
}
217225

218226
// CREATE MODE
219-
export const CreateDocument = ({ args, name, required, onSelect, reference, order_by, hideFieldLabel, linked_to, extracted, mode, onChange, depth, propertyDocumentation, linkId }) => {
227+
export const CreateDocument = ({ args, name, required, formData, onSelect, reference, order_by, hideFieldLabel, linked_to, extracted, mode, onChange, depth, propertyDocumentation, linkId }) => {
220228

221-
const [action, setAction] = useState(false)
222-
const [documentData, setDocumentData] = useState({ [CONST.TYPE]: linked_to })
229+
const [action, setAction] = useState(formData ? typeof formData===CONST.STRING_TYPE ? CONST.LINK_EXISTING_DOCUMENT : CONST.LINK_NEW_DOCUMENT :false)
230+
const [documentData, setDocumentData] = useState(formData ? extractFormData(formData, linked_to) : { [CONST.TYPE]: linked_to })
223231
//const [cardKey, setCardKey]=useState(uuidv4())
224232
const [cardKey, setCardKey]=useState(getID(linkId, depth))
225233

@@ -230,6 +238,7 @@ export const CreateDocument = ({ args, name, required, onSelect, reference, orde
230238
if(linked_to) setDocumentData({ [CONST.TYPE]: linked_to } )
231239
}, [linked_to])
232240

241+
233242
return <>
234243
<DisplayDocumentation documentation={propertyDocumentation}/>
235244
<Stack direction="horizontal">
@@ -244,6 +253,7 @@ export const CreateDocument = ({ args, name, required, onSelect, reference, orde
244253
extracted={extracted}
245254
mode= {mode}
246255
linkId={linkId}
256+
formData={formData}
247257
args={args}
248258
order_by={order_by}
249259
propertyDocumentation={propertyDocumentation}

packages/tdb-documents-ui/src/components/EditDocumentLink.js

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { CreateDocument, CreateDisplay } from "./CreateDocumentLink"
1313
import { UnlinkButton } from "./UnlinkButton"
1414
import { SearchExistingLink } from "./SearchExistingLink"
1515
import { documentInternalProperties } from "../helpers/documentHelpers"
16+
import { extractFormData } from "./CreateDocumentLink"
1617

1718
const DisplayFilledFrame = ({ args, documentData, propertyDocumentation, onTraverse, onSelect, reference, setDocumentData, unfoldable, cardKey, action, formData, onChange, documentLinkPropertyName, extracted, required, mode, linked_to, clickedUnlinked }) => {
1819

@@ -48,6 +49,7 @@ const DisplayFilledFrame = ({ args, documentData, propertyDocumentation, onTrave
4849
fields.push(<CreateDocument name={field}
4950
linked_to={linked_to}
5051
mode={mode}
52+
formData={formData && formData.hasOwnProperty(field) && formData[field] ? formData[field] : false}
5153
args={args}
5254
propertyDocumentation={propertyDocumentation}
5355
depth={cardKey}
@@ -72,7 +74,8 @@ const DisplayFilledFrame = ({ args, documentData, propertyDocumentation, onTrave
7274
args={args}
7375
onTraverse={onTraverse}
7476
unfoldable={unfoldable}
75-
formData={formData[field]}
77+
formData={formData && formData.hasOwnProperty(field) && formData[field] ? formData[field] : false}
78+
//formData={formData[field]}
7679
extracted={definitions}
7780
//comment={comment} // review
7881
required={required} />)
@@ -96,7 +99,7 @@ const DisplayFilledFrame = ({ args, documentData, propertyDocumentation, onTrave
9699
required: definitions.required.includes(fieldName),
97100
mode: mode,
98101
args: args,
99-
//fieldUIFrame: fieldUIFrame, // review diff ui
102+
//fieldUIFrame: fieldUIFrame, // review diff ui
100103
onChange: handleChange,
101104
currentDocumentClass: documentData[CONST.TYPE],
102105
defaultClassName: defaultClassName,
@@ -177,13 +180,13 @@ const EditHelper = ({ linked_to, cardKey, setDeleteLink, clickedUnlinked }) => {
177180
label={"Unlink"}
178181
id={cardKey} />
179182
</Stack>
180-
}
183+
}
181184

182185
// EDIT MODE
183186
export const EditDocument = ({ name, args, reference, onTraverse, clickedUnlinked, index, order_by, propertyDocumentation, hideFieldLabel, onSelect, required, comment, formData, linked_to, extracted, mode, onChange, unfoldable, depth }) => {
184187

185188
const [action, setAction] = useState(getAction(formData, unfoldable))
186-
const [documentData, setDocumentData] = useState(formData)
189+
const [documentData, setDocumentData] = useState(formData ? extractFormData(formData, linked_to) : { [CONST.TYPE]: linked_to })
187190
const [deleteLink, setDeleteLink] = useState(false)
188191
const [cardKey, setCardKey]=useState(depth+1)
189192
//const [cardKey, setCardKey]=useState(uuidv4())
@@ -216,11 +219,11 @@ export const EditDocument = ({ name, args, reference, onTraverse, clickedUnlinke
216219
clickedUnlinked={clickedUnlinked}
217220
cardKey={cardKey}
218221
unfoldable={unfoldable}
222+
formData={formData}
219223
reference={reference}
220224
onChange={onChange}
221225
linked_to={linked_to}
222226
onSelect={onSelect}
223-
formData={formData}
224227
documentLinkPropertyName={name}
225228
documentData={documentData}
226229
setDocumentData={setDocumentData}/>}
@@ -235,6 +238,7 @@ export const EditDocument = ({ name, args, reference, onTraverse, clickedUnlinke
235238
args={args}
236239
onSelect={onSelect}
237240
reference={reference}
241+
formData={formData && formData.hasOwnProperty(name) && formData[name] ? formData[name] : false}
238242
linked_to={linked_to}
239243
extracted={extracted}
240244
mode= {mode}

packages/tdb-documents-ui/src/utils.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -401,6 +401,7 @@ export function availableInReference (references, documentType) {
401401
// used to get config form data for subdocuments, documentlinks etc.
402402
export function getFormDataPerProperty (subDocumentData, fieldName) {
403403
if(subDocumentData.hasOwnProperty(fieldName)) return subDocumentData[fieldName]
404+
//if(subDocumentData.hasOwnProperty(fieldName)) return {[fieldName] : subDocumentData[fieldName]}
404405
return ""
405406
}
406407

packages/tdb-documents-ui/src/widgets/choiceDocumentsWidget.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ const DisplaySelectedDocument = ({ props, selected, args, id, clickedUnlinked, c
4141
mode={mode}
4242
hideFieldLabel={true}
4343
args={args}
44+
formData={props && props.formData ? props.formData : false}
4445
onSelect={onSelect}
4546
clickedUnlinked={clickedUnlinked}
4647
reference={reference}

packages/tdb-documents-ui/src/widgets/documentWidget.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ export const TDBDocument = ({ args, extracted, reference, uiFrame, clickedUnlink
2121
linkId={linkId}
2222
order_by={order_by}
2323
args={args}
24+
formData={props && props.formData ? props.formData : false}
2425
onSelect={onSelect}
2526
mode={mode}
2627
hideFieldLabel={hideFieldLabel}

0 commit comments

Comments
 (0)