From ee1e07ba74764813c4f310652e3bd3f2d989dd43 Mon Sep 17 00:00:00 2001 From: xnought Date: Thu, 25 Jan 2024 19:31:40 -0800 Subject: [PATCH 01/19] feat: change favicon and add logo to assets --- frontend/static/favicon.png | Bin 1571 -> 6458 bytes frontend/static/logo.svg | 28 ++++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 frontend/static/logo.svg diff --git a/frontend/static/favicon.png b/frontend/static/favicon.png index 825b9e65af7c104cfb07089bb28659393b4f2097..5bcafcba11b2363f9da9e6b37afbc9a8ef09b460 100644 GIT binary patch literal 6458 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + From 4b594590cfa407cea54dd9b9cfd064d9e7bdd543 Mon Sep 17 00:00:00 2001 From: xnought Date: Thu, 25 Jan 2024 20:04:42 -0800 Subject: [PATCH 02/19] feat: add new color scheme and font --- frontend/package.json | 1 + frontend/src/app.postcss | 7 +++++ frontend/src/lib/images/logo.svg | 29 +++++++++++++---- frontend/src/routes/Header.svelte | 52 +++++++++++-------------------- frontend/src/routes/styles.css | 10 +++--- frontend/static/logo.svg | 28 ----------------- frontend/tailwind.config.cjs | 26 ++++++++++------ frontend/yarn.lock | 5 +++ 8 files changed, 75 insertions(+), 83 deletions(-) delete mode 100644 frontend/static/logo.svg diff --git a/frontend/package.json b/frontend/package.json index 72df7fa1..bc851907 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -13,6 +13,7 @@ "openapi": "npx openapi-typescript-codegen --input http://localhost:8000/openapi.json --output ./src/openapi --client fetch" }, "devDependencies": { + "@fontsource-variable/inter": "^5.0.16", "@fontsource/fira-mono": "^4.5.10", "@neoconfetti/svelte": "^1.0.0", "@sveltejs/adapter-auto": "^2.0.0", diff --git a/frontend/src/app.postcss b/frontend/src/app.postcss index 1a7b7cf3..4c5081db 100644 --- a/frontend/src/app.postcss +++ b/frontend/src/app.postcss @@ -2,3 +2,10 @@ @tailwind base; @tailwind components; @tailwind utilities; + +:root { + --darkblue: hsla(205, 57%, 23%, 1); + --lightblue: hsla(198, 41%, 54%, 1); + --darkorange: hsla(27, 77%, 55%, 1); + --lightorange: hsla(38, 83%, 60%, 1); +} diff --git a/frontend/src/lib/images/logo.svg b/frontend/src/lib/images/logo.svg index cd025d7f..3a19cfa9 100644 --- a/frontend/src/lib/images/logo.svg +++ b/frontend/src/lib/images/logo.svg @@ -1,11 +1,28 @@ - - - - + + + + + + - - + + + + + + + + + + + + + + + + + diff --git a/frontend/src/routes/Header.svelte b/frontend/src/routes/Header.svelte index 73f9952b..69f53a20 100644 --- a/frontend/src/routes/Header.svelte +++ b/frontend/src/routes/Header.svelte @@ -1,70 +1,56 @@
@@ -42,9 +47,10 @@ .nav { display: flex; align-items: center; - gap: 15px; + gap: 20px; font-size: 18px; font-weight: 300; + margin-left: 10px; } a { From 9641629de0882877078336c30680aea0ee137755 Mon Sep 17 00:00:00 2001 From: xnought Date: Thu, 25 Jan 2024 20:18:17 -0800 Subject: [PATCH 04/19] feat: add search to navbar --- frontend/src/routes/Header.svelte | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/frontend/src/routes/Header.svelte b/frontend/src/routes/Header.svelte index a96a3789..3f47b1e4 100644 --- a/frontend/src/routes/Header.svelte +++ b/frontend/src/routes/Header.svelte @@ -1,6 +1,7 @@
@@ -12,12 +13,21 @@ +
@@ -32,21 +42,26 @@ #logo { /* TODO remove these hard coded constraints and do it right */ - margin-top: 10px; height: 45px; width: 100px; } + #search-bar { + display: flex; + width: 400px; + gap: 5px; + } + .nav-container { display: flex; height: 60px; gap: 20px; margin-left: 20px; + align-items: center; } .nav { display: flex; - align-items: center; gap: 20px; font-size: 18px; font-weight: 300; From 99c697a876f0361e0747dad35b19d762e5d80466 Mon Sep 17 00:00:00 2001 From: xnought Date: Thu, 25 Jan 2024 20:40:51 -0800 Subject: [PATCH 05/19] feat: make the top search work for all tabs --- frontend/src/lib/customStores.ts | 3 +++ frontend/src/routes/Header.svelte | 28 +++++++++++++++++----- frontend/src/routes/search/+page.svelte | 31 ++++--------------------- 3 files changed, 29 insertions(+), 33 deletions(-) create mode 100644 frontend/src/lib/customStores.ts diff --git a/frontend/src/lib/customStores.ts b/frontend/src/lib/customStores.ts new file mode 100644 index 00000000..10c37def --- /dev/null +++ b/frontend/src/lib/customStores.ts @@ -0,0 +1,3 @@ +import { writable } from "svelte/store"; + +export const searchBy = writable(""); diff --git a/frontend/src/routes/Header.svelte b/frontend/src/routes/Header.svelte index 3f47b1e4..040e533d 100644 --- a/frontend/src/routes/Header.svelte +++ b/frontend/src/routes/Header.svelte @@ -1,10 +1,15 @@ -
+
+ + + Login
From 0e54746fe33b624d34053875b876b7fa94f7963a Mon Sep 17 00:00:00 2001 From: xnought Date: Fri, 26 Jan 2024 19:07:25 -0800 Subject: [PATCH 08/19] feat: add fake description --- frontend/src/lib/Markdown.svelte | 2 +- frontend/src/routes/protein/[proteinName]/+page.svelte | 5 +++++ frontend/src/routes/styles.css | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/frontend/src/lib/Markdown.svelte b/frontend/src/lib/Markdown.svelte index fe8b69a4..d4d3b25b 100644 --- a/frontend/src/lib/Markdown.svelte +++ b/frontend/src/lib/Markdown.svelte @@ -21,6 +21,6 @@ } -
+
{@html mdToHTML}
diff --git a/frontend/src/routes/protein/[proteinName]/+page.svelte b/frontend/src/routes/protein/[proteinName]/+page.svelte index e457207d..a77cc7ec 100644 --- a/frontend/src/routes/protein/[proteinName]/+page.svelte +++ b/frontend/src/routes/protein/[proteinName]/+page.svelte @@ -43,6 +43,11 @@ {entry.name} +
+ DescriptionDescriptionDescriptionDescriptionDescriptionDescriptionDescriptionDescriptionDescription + Description Description Description Description +
+ Information diff --git a/frontend/src/routes/styles.css b/frontend/src/routes/styles.css index 7fb790e5..4d566105 100644 --- a/frontend/src/routes/styles.css +++ b/frontend/src/routes/styles.css @@ -7,7 +7,7 @@ --color-bg-0: rgb(202, 216, 228); --color-bg-1: hsl(209, 36%, 86%); --color-bg-2: hsl(224, 44%, 95%); - --color-text: rgba(0, 0, 0, 0.7); + --color-text: rgb(69, 64, 60); --column-width: 42rem; --column-margin-top: 4rem; font-family: var(--font-body); From a4ac2e6b70d5666c81af617bdb4e2ae74bb3ccbf Mon Sep 17 00:00:00 2001 From: xnought Date: Fri, 26 Jan 2024 19:23:18 -0800 Subject: [PATCH 09/19] feat: replace cards with new component --- frontend/src/lib/EntryCard.svelte | 12 +++++++ .../routes/protein/[proteinName]/+page.svelte | 33 ++++++++++++------- 2 files changed, 34 insertions(+), 11 deletions(-) create mode 100644 frontend/src/lib/EntryCard.svelte diff --git a/frontend/src/lib/EntryCard.svelte b/frontend/src/lib/EntryCard.svelte new file mode 100644 index 00000000..00011d09 --- /dev/null +++ b/frontend/src/lib/EntryCard.svelte @@ -0,0 +1,12 @@ + + + +

{title}

+ +
diff --git a/frontend/src/routes/protein/[proteinName]/+page.svelte b/frontend/src/routes/protein/[proteinName]/+page.svelte index a77cc7ec..58c96dd8 100644 --- a/frontend/src/routes/protein/[proteinName]/+page.svelte +++ b/frontend/src/routes/protein/[proteinName]/+page.svelte @@ -10,11 +10,11 @@ Spinner, } from "flowbite-svelte"; import Markdown from "$lib/Markdown.svelte"; - import { Heading, Span } from "flowbite-svelte"; import { numberWithCommas } from "$lib/format"; import { goto } from "$app/navigation"; import References from "$lib/References.svelte"; import { ChevronDownSolid, PenOutline } from "flowbite-svelte-icons"; + import EntryCard from "$lib/EntryCard.svelte"; const fileDownloadDropdown = ["pdb", "fasta"]; @@ -48,11 +48,21 @@ Description Description Description Description
- - Information + +
+
Organism
+
+ {entry.speciesName} +
+ +
Method
+
AlphaFold 2
+
+
+
-
Source Organism
+
Organism
{entry.speciesName}
@@ -66,22 +76,20 @@
Mass (Da)
{numberWithCommas(entry.mass)}
-
+ {#if entry.content} - - Article + - + {/if} {#if entry.refs} - - References + - + {/if}
@@ -130,4 +138,7 @@ font-weight: 500; color: var(--darkblue); } + h2 { + color: var(--darkblue); + } From e8a398f7bad37dfac6af0af59218f40bfc1d3cc5 Mon Sep 17 00:00:00 2001 From: xnought Date: Fri, 26 Jan 2024 19:59:39 -0800 Subject: [PATCH 10/19] fix: reactivity and search --- frontend/src/lib/ProteinVis.svelte | 2 +- frontend/src/routes/Header.svelte | 6 ++- .../routes/protein/[proteinName]/+page.svelte | 51 ++++++++----------- 3 files changed, 26 insertions(+), 33 deletions(-) diff --git a/frontend/src/lib/ProteinVis.svelte b/frontend/src/lib/ProteinVis.svelte index 5053dc52..26e03b2d 100644 --- a/frontend/src/lib/ProteinVis.svelte +++ b/frontend/src/lib/ProteinVis.svelte @@ -28,7 +28,7 @@ alphafoldView: true, reactive: true, sequencePanel: true, - hideControls: false, + hideControls: true, hideCanvasControls: ["animation"], }; diff --git a/frontend/src/routes/Header.svelte b/frontend/src/routes/Header.svelte index 040e533d..1382d4c4 100644 --- a/frontend/src/routes/Header.svelte +++ b/frontend/src/routes/Header.svelte @@ -27,7 +27,11 @@
-
+
@@ -109,13 +89,24 @@ >
-
+ -
+
+ Organism +
+ {entry.speciesName} +
+ Method +
AlphaFold 2
+ Date Published +
11/11/1111
+
+
{:else if !error} @@ -129,16 +120,14 @@ From 9f950bc03611b47463b6aeabbedf7507889a7702 Mon Sep 17 00:00:00 2001 From: xnought Date: Mon, 29 Jan 2024 19:03:46 -0800 Subject: [PATCH 11/19] feat: don't reroute home --- frontend/src/routes/+page.svelte | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/frontend/src/routes/+page.svelte b/frontend/src/routes/+page.svelte index 148b4855..ed7e5c99 100644 --- a/frontend/src/routes/+page.svelte +++ b/frontend/src/routes/+page.svelte @@ -1,19 +1,10 @@ Home -
Landing Page
- - +
Home Page!
From 0cd69590eeb16ab2ee10fbce433e1f5b074f81a8 Mon Sep 17 00:00:00 2001 From: xnought Date: Mon, 29 Jan 2024 19:47:05 -0800 Subject: [PATCH 12/19] feat: add new nav for search --- frontend/src/routes/Header.svelte | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/frontend/src/routes/Header.svelte b/frontend/src/routes/Header.svelte index 1382d4c4..7c65431a 100644 --- a/frontend/src/routes/Header.svelte +++ b/frontend/src/routes/Header.svelte @@ -4,6 +4,7 @@ HomeOutline, UploadOutline, UserOutline, + TableRowOutline, } from "flowbite-svelte-icons"; import { Search, Button } from "flowbite-svelte"; import { searchBy } from "$lib/customStores"; @@ -23,6 +24,9 @@ Upload + Proteins
Date: Mon, 29 Jan 2024 19:47:20 -0800 Subject: [PATCH 13/19] feat: single entry --- frontend/src/app.postcss | 3 +- frontend/src/lib/ListProteins.svelte | 122 ++++++++++++++------------- frontend/src/lib/images/dummy.png | Bin 0 -> 22688 bytes 3 files changed, 64 insertions(+), 61 deletions(-) create mode 100644 frontend/src/lib/images/dummy.png diff --git a/frontend/src/app.postcss b/frontend/src/app.postcss index 4c5081db..ee55594d 100644 --- a/frontend/src/app.postcss +++ b/frontend/src/app.postcss @@ -4,7 +4,8 @@ @tailwind utilities; :root { - --darkblue: hsla(205, 57%, 23%, 1); + --darkblue-hsl: 205, 57%, 23%; + --darkblue: hsla(var(--darkblue-hsl), 1); --lightblue: hsla(198, 41%, 54%, 1); --darkorange: hsla(27, 77%, 55%, 1); --lightorange: hsla(38, 83%, 60%, 1); diff --git a/frontend/src/lib/ListProteins.svelte b/frontend/src/lib/ListProteins.svelte index decec787..79cb2ae1 100644 --- a/frontend/src/lib/ListProteins.svelte +++ b/frontend/src/lib/ListProteins.svelte @@ -2,80 +2,82 @@ import { goto } from "$app/navigation"; import type { ProteinEntry } from "$lib/backend"; import { numberWithCommas } from "$lib/format"; - import { - Table, - TableBody, - TableBodyCell, - TableBodyRow, - TableHead, - TableHeadCell, - } from "flowbite-svelte"; import { Tabs, TabItem } from "flowbite-svelte"; - import { Card } from "flowbite-svelte"; + import dummy from "$lib/images/dummy.png"; export let allEntries: ProteinEntry[] | null = null; + const dummyDesc = + "scriptionDescriptionDescription DescriptionDescription Description Description"; - - - - - Protein name - Organism - Length - Mass (Da) - - - {#if allEntries} - {#each allEntries as entry} - { - goto(`/protein/${entry.name}`); - }} - > - {entry.name} - {entry.speciesName} - {entry.length} - {numberWithCommas(entry.mass)} - - {/each} - {/if} - -
-
- -
- {#if allEntries} - {#each allEntries as entry} - goto(`/protein/${entry.name}`)} - > -
+ + + {#if allEntries} + {#each allEntries as entry} + + +
goto(`/protein/${entry.name}`)} + > +
+ dummy +
+
+
{entry.name}
-
- Length: {entry.length}, Mass (Da): {numberWithCommas(entry.mass)} +
+ {dummyDesc} +
+
+
+ Organism: {entry.speciesName}, + Method: AlphaFold2 +
+
+ Length: {entry.length}, + Mass: {numberWithCommas(entry.mass)} +
- - {/each} - {/if} -
+
+
+ {/each} + {/if}
+ not yet implemented
diff --git a/frontend/src/lib/images/dummy.png b/frontend/src/lib/images/dummy.png new file mode 100644 index 0000000000000000000000000000000000000000..dafb2040fe81387489f2f303dad2327f65cd6eae GIT binary patch literal 22688 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 BSHA!N literal 0 HcmV?d00001 From 91b1bd484159e2e4dbcd54105af1ba4a3b49ccc7 Mon Sep 17 00:00:00 2001 From: xnought Date: Mon, 29 Jan 2024 20:04:41 -0800 Subject: [PATCH 14/19] feat: proteins view --- frontend/src/lib/ListProteins.svelte | 70 +++++++++++++++++----------- 1 file changed, 42 insertions(+), 28 deletions(-) diff --git a/frontend/src/lib/ListProteins.svelte b/frontend/src/lib/ListProteins.svelte index 79cb2ae1..60385815 100644 --- a/frontend/src/lib/ListProteins.svelte +++ b/frontend/src/lib/ListProteins.svelte @@ -12,38 +12,39 @@ - {#if allEntries} - {#each allEntries as entry} - - -
goto(`/protein/${entry.name}`)} - > -
- dummy -
-
-
- {entry.name} -
-
- {dummyDesc} +
+ {#if allEntries} + {#each allEntries as entry} + + +
goto(`/protein/${entry.name}`)} + title={`Name:${entry.name}\nDescription:${dummyDesc}`} + > +
+ dummy
-
-
- Organism: {entry.speciesName}, - Method: AlphaFold2 +
+
+ {entry.name} +
+
+ {dummyDesc}
- Length: {entry.length}, - Mass: {numberWithCommas(entry.mass)} +
Organism: {entry.speciesName}
+
Method: AlphaFold2
+
Length: {entry.length}
+
+ Mass: {numberWithCommas(entry.mass)} +
-
- {/each} - {/if} + {/each} + {/if} +
not yet implemented @@ -57,6 +58,7 @@ padding-left: 15px; padding-bottom: 15px; padding-top: 15px; + box-sizing: border-box; } .prot-container:hover { transform: scale(1.02); @@ -71,13 +73,25 @@ .prot-name { font-size: 1.5em; color: var(--darkblue); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } .prot-desc { - overflow-wrap: break-word; - width: 300px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; font-weight: 300; } b { font-weight: 500; } + .prot-grid { + display: flex; + gap: 20px; + flex-wrap: wrap; + } + .prot-info { + width: 300px; + } From f2fe3a706cc2fae0a8d065fb079dd074db7e5dc2 Mon Sep 17 00:00:00 2001 From: xnought Date: Mon, 29 Jan 2024 20:19:52 -0800 Subject: [PATCH 15/19] fix: layout --- frontend/src/lib/ListProteins.svelte | 71 +++++++++---------- frontend/src/routes/+layout.svelte | 2 +- frontend/src/routes/Header.svelte | 7 +- .../routes/protein/[proteinName]/+page.svelte | 2 +- frontend/src/routes/search/+page.svelte | 20 +++++- frontend/src/routes/upload/+page.svelte | 2 +- 6 files changed, 59 insertions(+), 45 deletions(-) diff --git a/frontend/src/lib/ListProteins.svelte b/frontend/src/lib/ListProteins.svelte index 60385815..65905004 100644 --- a/frontend/src/lib/ListProteins.svelte +++ b/frontend/src/lib/ListProteins.svelte @@ -10,44 +10,39 @@ "scriptionDescriptionDescription DescriptionDescription Description Description"; - - -
- {#if allEntries} - {#each allEntries as entry} - - -
goto(`/protein/${entry.name}`)} - title={`Name:${entry.name}\nDescription:${dummyDesc}`} - > -
- dummy -
-
-
- {entry.name} -
-
- {dummyDesc} -
-
-
Organism: {entry.speciesName}
-
Method: AlphaFold2
-
Length: {entry.length}
-
- Mass: {numberWithCommas(entry.mass)} -
-
+
+ {#if allEntries} + {#each allEntries as entry} + + +
goto(`/protein/${entry.name}`)} + title={`Name:${entry.name}\nDescription:${dummyDesc}`} + > +
+ dummy +
+
+
+ {entry.name} +
+
+ {dummyDesc} +
+
+
Organism: {entry.speciesName}
+
Method: AlphaFold2
+
Length: {entry.length}
+
+ Mass: {numberWithCommas(entry.mass)}
- {/each} - {/if} -
- - not yet implemented - +
+
+ {/each} + {/if} +
diff --git a/frontend/src/routes/upload/+page.svelte b/frontend/src/routes/upload/+page.svelte index c4b053a9..af95a379 100644 --- a/frontend/src/routes/upload/+page.svelte +++ b/frontend/src/routes/upload/+page.svelte @@ -27,7 +27,7 @@ $: file = files ? files[0] : undefined; // we're just concerned with one file -
+