From 146e12632010a5899680b9e4703a3ba54cd0b22c Mon Sep 17 00:00:00 2001 From: Ross Keenan Date: Sat, 31 Jul 2021 20:23:14 +0200 Subject: [PATCH] feat(Grid View): :sparkles: Add dots visualisation to grid view It shows one dot for each 1000 bytes of the file size of that cell --- src/BreadcrumbsSettingTab.ts | 43 +++++-- src/TrailGrid.svelte | 226 +++++++++++++++++++++-------------- src/interfaces.ts | 2 + src/main.ts | 3 +- src/sharedFunctions.ts | 2 + 5 files changed, 175 insertions(+), 101 deletions(-) diff --git a/src/BreadcrumbsSettingTab.ts b/src/BreadcrumbsSettingTab.ts index 0556e17e..d6d5344a 100644 --- a/src/BreadcrumbsSettingTab.ts +++ b/src/BreadcrumbsSettingTab.ts @@ -187,6 +187,33 @@ export class BreadcrumbsSettingTab extends PluginSettingTab { }); }); + new Setting(trailDetails) + .setName("Grid view dots") + .setDesc( + "If the grid view is visible, shows dots based on the file size of each cell." + ) + .addToggle((toggle) => + toggle.setValue(plugin.settings.gridDots).onChange(async (value) => { + plugin.settings.gridDots = value; + await plugin.saveSettings(); + await plugin.drawTrail(); + }) + ); + + const dotsColour = trailDetails.createDiv(); + dotsColour.createEl("h4", { + text: "Dots colour", + }); + const dotsColourPicker = dotsColour.createEl("input", { + type: "color", + }); + + dotsColourPicker.value = plugin.settings.heatmapColour; + dotsColourPicker.addEventListener("change", async () => { + plugin.settings.dotsColour = dotsColourPicker.value; + await plugin.saveSettings(); + }); + new Setting(trailDetails) .setName("Grid view heatmap") .setDesc( @@ -200,17 +227,17 @@ export class BreadcrumbsSettingTab extends PluginSettingTab { }) ); - const mainColourDiv = trailDetails.createDiv(); - mainColourDiv.createEl("h4", { + const heatmapColour = trailDetails.createDiv(); + heatmapColour.createEl("h4", { text: "Heat map colour", }); - const mainColourPicker = mainColourDiv.createEl("input", { type: "color" }); - - mainColourPicker.value = plugin.settings.heatmapColour; + const heatmapColourPicker = heatmapColour.createEl("input", { + type: "color", + }); - mainColourPicker.addEventListener("change", async () => { - plugin.settings.heatmapColour = mainColourPicker.value; - console.log(mainColourPicker.value); + heatmapColourPicker.value = plugin.settings.heatmapColour; + heatmapColourPicker.addEventListener("change", async () => { + plugin.settings.heatmapColour = heatmapColourPicker.value; await plugin.saveSettings(); }); diff --git a/src/TrailGrid.svelte b/src/TrailGrid.svelte index b58ae3e5..fa6c545e 100644 --- a/src/TrailGrid.svelte +++ b/src/TrailGrid.svelte @@ -1,132 +1,174 @@ - {/each} - -{/each} + {/each} - \ No newline at end of file + } + + /* .dots { + height: 10px; + } */ + .dot { + height: 5px; + width: 5px; + border-radius: 50%; + display: inline-block; + } + diff --git a/src/interfaces.ts b/src/interfaces.ts index 8e1eb459..634f4b79 100644 --- a/src/interfaces.ts +++ b/src/interfaces.ts @@ -12,6 +12,8 @@ export interface BreadcrumbsSettings { showRelationType: boolean; showTrail: boolean; trailOrTable: 1 | 2 | 3; + gridDots: boolean; + dotsColour: string; gridHeatmap: boolean; heatmapColour: string; showAll: boolean; diff --git a/src/main.ts b/src/main.ts index dfe95573..30b32f49 100644 --- a/src/main.ts +++ b/src/main.ts @@ -18,7 +18,6 @@ import { closeImpliedLinks, debug, getDVMetadataCache, - getFileFrontmatterArr, getNeighbourObjArr, getObsMetadataCache, } from "src/sharedFunctions"; @@ -36,6 +35,8 @@ const DEFAULT_SETTINGS: BreadcrumbsSettings = { showRelationType: true, showTrail: true, trailOrTable: 3, + gridDots: false, + dotsColour: getComputedStyle(document.body).getPropertyValue("--text-accent"), gridHeatmap: false, heatmapColour: getComputedStyle(document.body).getPropertyValue( "--text-accent" diff --git a/src/sharedFunctions.ts b/src/sharedFunctions.ts index 79def465..006f6087 100644 --- a/src/sharedFunctions.ts +++ b/src/sharedFunctions.ts @@ -373,3 +373,5 @@ export function permute(permutation: any[]): any[][] { export function dropMD(path: string) { return path.split(".md", 1)[0]; } + +export const range = (n: number) => [...Array(5).keys()];