diff --git a/front/js/svelte/records/Edit.svelte b/front/js/svelte/records/Edit.svelte index 15d2d56..c4410d7 100644 --- a/front/js/svelte/records/Edit.svelte +++ b/front/js/svelte/records/Edit.svelte @@ -221,7 +221,7 @@ {:else if activeContentTab === "_graph"} {:else if activeContentTab === "_info"} - + {/if} diff --git a/front/js/svelte/records/Info.svelte b/front/js/svelte/records/Info.svelte index 4147cc4..5ff5478 100644 --- a/front/js/svelte/records/Info.svelte +++ b/front/js/svelte/records/Info.svelte @@ -2,23 +2,26 @@ import {friendlyDate} from "../../helpers"; import Avatar from "../account/Avatar.svelte"; import {usernameById} from "../account/users"; - import {isEqual} from "lodash"; - import Status from "./Status.svelte"; + import {isEqual, sortBy} from "lodash"; import Icon from "../common/Icon.svelte"; import RevisionCell from "./revisions/RevisionCell.svelte"; + import {getContext} from "svelte"; + import RevisionEdgeRow from "./revisions/RevisionEdgeRow.svelte"; + const channel = getContext("channel"); export let record; + export let graph; export let users; export let schema; + let revisionSection; let rollbackError = ""; $: revisions = []; $: fieldsWithDiff = []; $: selectedRevision = null; - $: recordEdges = {}; - $: selectedRevisionEdges = {}; + $: edgeFieldsDiff = {}; axios - .get(`/records/${record.id}/revisions`) + .get(`${channel.lucentUrl}/records/${record.id}/revisions`) .then((response) => { revisions = response.data; }) @@ -26,19 +29,30 @@ console.log(error); }); - function getEdgesByField(edges) { - return schema.fields - .filter((f) => ["file", "reference"].includes(f.ui)) - .reduce((c, f) => { - let fieldEdges = edges - .filter((e) => e.field === f.name) - .map((e) => - record._children.find((child) => child.id === e.to) - ); + function getEdgesByField(fieldsWithDiff, revision) { - c[f.name] = fieldEdges; - return c; - }, {}); + edgeFieldsDiff = graph.edges.filter((e) => e.depth === 1).reduce((c, e) => { + if (!c[e.field]) { + c[e.field] = { + record: [], + revision: [], + } + } + c[e.field]["record"].push(e) + return c; + }, {}); + + + edgeFieldsDiff = revision._edges.reduce((c, e) => { + if (!c[e.field]) { + c[e.field] = { + record: [], + revision: [], + } + } + c[e.field]["revision"].push(e) + return c; + }, edgeFieldsDiff); } function compare(e, revision) { @@ -48,6 +62,8 @@ fieldsWithDiff = schema.fields.filter((f) => { return !isEqual(selectedRevision.data[f.name], record.data[f.name]); }); + getEdgesByField(fieldsWithDiff, revision) + revisionSection.scrollIntoView(); } function rollback(e) { @@ -55,7 +71,7 @@ rollbackError = ""; axios .post( - `/records/${record.id}/rollback/${selectedRevision._sys.version}` + `${channel.lucentUrl}/records/${record.id}/rollback/${selectedRevision._sys.version}` ) .then((response) => { window.location.reload(); @@ -82,16 +98,16 @@
created {friendlyDate(record._sys.createdAt)}
updated {friendlyDate(record._sys.updatedAt)}
@@ -101,42 +117,38 @@ >Rules for this schema - Revisions are retained for {schema.revisionRetentionDays} days -
- Each record maintains the last {schema.revisionRetentionNumber} + Each record maintains the last {schema.revisions} versions
- {#if schema.revisionRetentionDays > 0} + {#if schema.revisions > 0}
Revisions
{#each revisions as revision} {#if revision._sys.version != record._sys.version}
-
- -
+
version {revision._sys.version}
{friendlyDate(revision._sys.updatedAt)}
@@ -150,74 +162,106 @@
{/if}
-{#if selectedRevision} -
- {#if fieldsWithDiff.length > 0} -

- If you choose to rollback to this revision -

- +
+ {#if selectedRevision} +
+ {#if fieldsWithDiff.length > 0} +

+ If you choose to rollback to this revision +

+ - {#if rollbackError} - {rollbackError} - {/if} -
- {#each fieldsWithDiff as field} - - -
-
- -
-
-
- {field.label} - {rollbackError} + {/if} +
+ {#each fieldsWithDiff as field} + + +
+
+ +
+
+
+ {field.label} + +
+
+
+
-
- + + {/each} +
+ {:else} +
+ Nothing will change +
+ {/if} + +
+

+ Record References +

+ {#each Object.entries(edgeFieldsDiff) as [field, edges]} +
+
+ {field}: +
+
+

Record

+ {#each edges.record as edge} + + {:else} +

No references

+ {/each} +

Revision

+ {#each edges.revision as edge} + + {:else} +

No references

+ {/each}
- {/each}
- {:else} -
- Nothing will change -
- {/if} -
-{/if} +
+ + {/if} +