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}
{#each revisions as revision}
{#if revision._sys.version != record._sys.version}
-
-
-
+
version {revision._sys.version}
{friendlyDate(revision._sys.updatedAt)}
compare(e, revision)}
+ class="btn btn-sm btn-outline-primary"
+ on:click={(e) => compare(e, revision)}
>Compare
@@ -150,74 +162,106 @@
{/if}
-{#if selectedRevision}
-
- {#if fieldsWithDiff.length > 0}
-
- If you choose to rollback to this revision
-
-
- Rollback to version {selectedRevision._sys.version}
-
+
+ {#if selectedRevision}
+
+ {#if fieldsWithDiff.length > 0}
+
+ If you choose to rollback to this revision
+
+
+ Rollback to version {selectedRevision._sys.version}
+
- {#if rollbackError}
-
{rollbackError}
- {/if}
-
- {#each fieldsWithDiff as field}
-
-
-
-
-
-
-
-
-
{field.label}
-
{rollbackError}
+ {/if}
+
+ {#each fieldsWithDiff as field}
+
+
+
-
-
+
+ {/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}
+