diff --git a/src/components/settings/EdgeFieldSettings.svelte b/src/components/settings/EdgeFieldSettings.svelte
index 89dd33e2..975e3928 100644
--- a/src/components/settings/EdgeFieldSettings.svelte
+++ b/src/components/settings/EdgeFieldSettings.svelte
@@ -88,6 +88,38 @@
);
});
+ // Drop transitive rules that reference the removed field —
+ // unlike rename, there's no replacement label to substitute.
+ settings.implied_relations.transitive =
+ settings.implied_relations.transitive.filter(
+ (rule) =>
+ rule.close_field !== edge_field.label &&
+ !rule.chain.some(
+ (attr) => attr.field === edge_field.label,
+ ),
+ );
+
+ // Clear any edge source default pointing at the removed field.
+ const sources = settings.explicit_edge_sources;
+ if (sources.tag_note.default_field === edge_field.label)
+ sources.tag_note.default_field = "";
+ if (
+ sources.list_note.default_neighbour_field ===
+ edge_field.label
+ )
+ sources.list_note.default_neighbour_field = "";
+ if (sources.dendron_note.default_field === edge_field.label)
+ sources.dendron_note.default_field = "";
+ if (
+ sources.johnny_decimal_note.default_field ===
+ edge_field.label
+ )
+ sources.johnny_decimal_note.default_field = "";
+ if (sources.date_note.default_field === edge_field.label)
+ sources.date_note.default_field = "";
+ if (sources.regex_note.default_field === edge_field.label)
+ sources.regex_note.default_field = "";
+
autosave();
},
@@ -186,6 +218,17 @@
autosave();
},
+
+ set_hidden: (edge_field: EdgeField, hidden: boolean) => {
+ const target = settings.edge_fields.find(
+ (f) => f.label === edge_field.label,
+ );
+ if (!target) return;
+
+ target.hide_in_views = hidden || undefined;
+
+ autosave();
+ },
},
groups: {
@@ -460,6 +503,22 @@
{/each}
+
+
{#each group_labels as group_label}
field_group_labels.includes(group.label))
.flatMap((group) => group.fields),
);
+
+export const omit_hidden_view_fields = (
+ edge_fields: BreadcrumbsSettings["edge_fields"],
+ labels: string[],
+) => {
+ const hidden = new Set(
+ edge_fields.filter((f) => f.hide_in_views).map((f) => f.label),
+ );
+ return labels.filter((l) => !hidden.has(l));
+};