Skip to content
Snippets Groups Projects
Commit 34b16aaf authored by Maximilian Giller's avatar Maximilian Giller :squid:
Browse files

Simplified reference structure a little

parent 6015e04f
No related branches found
No related tags found
No related merge requests found
Pipeline #57091 failed
import React, { useState } from "react";
import React from "react";
import { DescriptiveReference } from "../../common/graph/node";
import "./nodetypeentry.css";
type ReferenceEntryProps = {
reference: DescriptiveReference;
onReferenceDelete: (url: string) => void;
onReferenceChange: (
originalUrl: string,
reference: DescriptiveReference
) => void;
onReferenceDelete: () => void;
onReferenceChange: (reference: DescriptiveReference) => void;
};
function ReferenceEntry({
......@@ -16,23 +13,15 @@ function ReferenceEntry({
onReferenceDelete,
onReferenceChange,
}: ReferenceEntryProps) {
const [editedReference, setEditedReference] =
useState<DescriptiveReference>(reference);
const originalUrl = reference.url;
const onPropChange = (
prop: keyof DescriptiveReference,
newValue: string
) => {
reference[prop] = newValue;
setEditedReference(reference);
};
return (
<div
className="reference"
onBlur={() => onReferenceChange(originalUrl, editedReference)}
>
<div className="reference" onBlur={() => onReferenceChange(reference)}>
<label htmlFor="reference-url">Url</label>
<br />
<input
......@@ -52,9 +41,7 @@ function ReferenceEntry({
}
/>
<br />
<button onClick={() => onReferenceDelete(originalUrl)}>
Delete
</button>
<button onClick={onReferenceDelete}>Delete</button>
</div>
);
}
......
......@@ -12,31 +12,15 @@ function ReferencesEditor({
references,
onReferencesChange,
}: ReferencesEditorProps) {
const isUrlUnique = (url: string): boolean =>
!references.some((ref: DescriptiveReference) => ref.url == url);
const handleReferenceDelete = (url: string) => {
references = references.filter(
(ref: DescriptiveReference) => ref.url != url
);
const handleReferenceDelete = (index: number) => {
references = references.filter((ref, i: number) => i !== index);
onReferencesChange(references);
};
const handleReferenceChange = (
url: string,
reference: DescriptiveReference
reference: DescriptiveReference,
index: number
) => {
// Make sure url stays unique
if (isUrlUnique(reference.url)) {
console.log(
"URL of changed reference is not unique anymore for current node. Cannot save changes on reference."
);
return;
}
const index: number = references.findIndex(
(ref: DescriptiveReference) => ref.url == url
);
references[index] = reference;
onReferencesChange(references);
};
......@@ -58,16 +42,18 @@ function ReferencesEditor({
<ReferenceEntry
key={index}
reference={reference}
onReferenceChange={handleReferenceChange}
onReferenceDelete={handleReferenceDelete}
onReferenceChange={(ref) =>
handleReferenceChange(ref, index)
}
onReferenceDelete={() =>
handleReferenceDelete(index)
}
/>
);
}
)}
<br />
<button onClick={addReference} disabled={!isUrlUnique("")}>
Add reference
</button>
<button onClick={addReference}>Add reference</button>
</div>
);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment