Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
129 commits
Select commit Hold shift + click to select a range
b4c77e9
implemnted tabs
varun-divya Jul 21, 2025
984b2f5
chnaged theme
varun-divya Jul 21, 2025
f661a63
fixex the bug in rendering tables
varun-divya Jul 21, 2025
59156b0
included orthologs by default. Adjusted search and phenotype explorer…
varun-divya Jul 21, 2025
c4ec08a
took out two columns if its direct association. Attached NOT to objec…
varun-divya Jul 21, 2025
318deda
Added class for negated text
varun-divya Jul 22, 2025
e0b07aa
clean up
varun-divya Jul 22, 2025
8228547
Merge branch 'main' into issue-1049-filter-direct-associations
varun-divya Jul 22, 2025
513f3f0
added tags for all the nodes
varun-divya Jul 22, 2025
538e247
updating phenotype explorer icon
varun-divya Jul 24, 2025
75a6942
make direct associations disable
varun-divya Jul 24, 2025
1cc6330
display all association label in direct/all tabs
varun-divya Jul 24, 2025
b97b4b8
format
varun-divya Jul 24, 2025
81ffcc7
made all associations tab on left by default
varun-divya Jul 24, 2025
8644ec5
reverting unwnted code
varun-divya Jul 25, 2025
254f703
for node disease pages , moved direct tab to left , if direct and all…
varun-divya Jul 25, 2025
8f57ba7
added text below tabs
varun-divya Jul 25, 2025
c84b1cf
display subtext for direct and all tabs
varun-divya Jul 25, 2025
68f574d
if there is only direct associations, show "no subclasses exists" as …
varun-divya Jul 25, 2025
52ea89d
reorerdred gene to phenotype and casual gene
varun-divya Jul 28, 2025
10ee64a
clean up
varun-divya Jul 28, 2025
300f050
updated default tab/selected tab logic
varun-divya Jul 28, 2025
0b63974
node page columns update for different categories
varun-divya Jul 28, 2025
234e905
icons for clinical resource
varun-divya Jul 29, 2025
bd3265f
first draft of node page section overview
varun-divya Jul 30, 2025
e9d4ca5
dynamically built clicnal resources
varun-divya Jul 30, 2025
806b016
clean up
varun-divya Jul 30, 2025
57a877e
clean up
varun-divya Jul 31, 2025
0622c22
error fix
varun-divya Jul 31, 2025
cf6ee15
.
varun-divya Jul 31, 2025
11c97dd
.
varun-divya Jul 31, 2025
9ec6cca
added conditions for diseqase node page and all other node pages
varun-divya Jul 31, 2025
84d0b55
display tabs only if its disease page
varun-divya Jul 31, 2025
0d62aa7
added comments
varun-divya Jul 31, 2025
ecbb91c
Merge branch 'issue-1049-filter-direct-associations' into issue-1110-…
varun-divya Jul 31, 2025
1f21752
clean up
varun-divya Jul 31, 2025
d92da16
clean up
varun-divya Jul 31, 2025
e87e07e
clean up
varun-divya Jul 31, 2025
7c99247
took out maxo relation out from emdical action column
varun-divya Aug 1, 2025
dd059c3
lint,prettier fix
varun-divya Aug 4, 2025
4a4b747
clean up
varun-divya Aug 6, 2025
ab9592d
clean up
varun-divya Aug 6, 2025
5ac635b
added one more variant to app
varun-divya Aug 7, 2025
05b9906
chnaged icon to label
varun-divya Aug 7, 2025
37ba428
added clinical synopsisi and info for patients as tooltips
varun-divya Aug 7, 2025
a8dacc6
took out conditions for isDisease node for tabs and make direct assoc…
varun-divya Aug 7, 2025
0e5daaa
conditions for phenotype node -> same as disease expect mappin's label
varun-divya Aug 7, 2025
6794e5b
reverted phenotype page changes
varun-divya Aug 7, 2025
9beebb2
chnaged button text and subtext
varun-divya Aug 7, 2025
5579d0b
added one more prop to appButton component
varun-divya Aug 8, 2025
9cb9c55
added infor icon to buttons, removed span
varun-divya Aug 8, 2025
b44b002
splitted in to two queries
varun-divya Aug 8, 2025
65d266b
clean up
varun-divya Aug 11, 2025
ed19645
added tooltips and updated tab text
varun-divya Aug 11, 2025
93d2601
added type map, made tooltip compltely dynamic
varun-divya Aug 11, 2025
35ff79b
deleted medical action category
varun-divya Aug 11, 2025
a5a70f8
filtered medical action column from node page
varun-divya Aug 11, 2025
f42dbff
removed un-necessaru code to fetch direct count
varun-divya Aug 12, 2025
f035277
clean up
varun-divya Aug 12, 2025
f55e746
fixed sublcassLabel issue
varun-divya Aug 12, 2025
caf173c
adjusted tooltip when there is no direct associations
varun-divya Aug 12, 2025
12ee298
G2P Exmaple fix, inclde disease in G2P inferred
varun-divya Aug 13, 2025
4f867c0
added tooltip builder
varun-divya Aug 13, 2025
07a4c15
Always drop the "Association" column for D2P and G2P, added taxon and…
varun-divya Aug 13, 2025
d55eefa
tabs update
varun-divya Aug 13, 2025
e79e9cd
updated table headings and histopheno
varun-divya Aug 13, 2025
54a363c
updated histopheno y-axis labels
varun-divya Aug 13, 2025
8308963
section overview update
varun-divya Aug 14, 2025
9e950ae
Merge branch 'main' into issue-1110-node-page-linkouts
varun-divya Aug 14, 2025
25d0e69
Merge branch 'main' into issue-1049-filter-direct-associations
varun-divya Aug 14, 2025
b359a98
Merge branch 'issue-1049-filter-direct-associations' into issue-1110-…
varun-divya Aug 14, 2025
f6cfb43
clean up
varun-divya Aug 14, 2025
088a1d9
OMIM font and background correction
varun-divya Aug 14, 2025
f2db88d
renamed typeConfig file
varun-divya Aug 15, 2025
138f1bb
fixed tooltip
varun-divya Aug 15, 2025
61dc2a1
kg-sources - aggregated tab updated
varun-divya Aug 15, 2025
e6972c0
mapped source names to disease models in node page
varun-divya Aug 15, 2025
ad96d51
added one more variant in appbutton
varun-divya Aug 15, 2025
a0ec16a
back to top button on the left top of toc
varun-divya Aug 15, 2025
682c9e9
clean up
varun-divya Aug 15, 2025
cbd6c73
clean up
varun-divya Aug 15, 2025
6b0040a
changed G2P column labels gene-> Casual gene and phenotypic feature …
varun-divya Aug 15, 2025
3108e74
clean up
varun-divya Aug 15, 2025
83f3584
clean up
varun-divya Aug 15, 2025
fdb2538
testing the top button
varun-divya Aug 19, 2025
a80487b
header fix
varun-divya Aug 19, 2025
ef945c7
testing path
varun-divya Aug 19, 2025
eb8f04b
header fix-check
varun-divya Aug 19, 2025
7fd7784
.
varun-divya Aug 19, 2025
0746a7d
.
varun-divya Aug 19, 2025
03310ee
clean up
varun-divya Aug 19, 2025
79cac8a
deleted unwanted logos and code
varun-divya Aug 19, 2025
61705ab
clean up
varun-divya Aug 19, 2025
8e83d2d
refactor column logic to another file
varun-divya Aug 20, 2025
7ae276e
clean up
varun-divya Aug 20, 2025
b6e6e69
use-association-categories composable
varun-divya Aug 20, 2025
64aa7bb
refactor association table
varun-divya Aug 20, 2025
8d3f0d6
refactor section clinical reosurces
varun-divya Aug 20, 2025
1403b4b
.
varun-divya Aug 20, 2025
8a682a4
phenotype explorer button fix
varun-divya Aug 20, 2025
63a4f12
causal gene direct tab fix
varun-divya Aug 21, 2025
288a182
refactor association columns
varun-divya Aug 21, 2025
1c334b9
added consition for varinat ->disease
varun-divya Aug 21, 2025
cdffec0
tooltipText and tab text updates
varun-divya Aug 21, 2025
203a1d9
updating title
varun-divya Aug 21, 2025
3a34ff0
added pluralize to tootltiptext
varun-divya Aug 21, 2025
1c99041
tooltip text update
varun-divya Aug 21, 2025
52c4802
fix scrol bug
varun-divya Aug 21, 2025
f207b35
clean up
varun-divya Aug 21, 2025
355ac08
adjusted date format in header
varun-divya Aug 21, 2025
b079684
added breakpoint 1000px and adjusted home menu
varun-divya Aug 21, 2025
254cf39
fiixed issue of overlappting large screena nd small screen menus
varun-divya Aug 22, 2025
ff4e7b2
fix search box shrink issue
varun-divya Aug 22, 2025
47c24cf
fixed the !home page layout issue
varun-divya Aug 22, 2025
2734772
hero tool button update
varun-divya Aug 22, 2025
3274577
fixed node page responsive behavior
varun-divya Aug 22, 2025
a17fc6d
made header width smaller
varun-divya Aug 22, 2025
02cfa50
added source to causal gene column when its direct
varun-divya Aug 22, 2025
6566e17
clean up
varun-divya Aug 22, 2025
653b897
Merge branch 'issue-1191-header-breakpoints' into issue-1110-node-pag…
varun-divya Aug 25, 2025
816283d
added conditions to section overview to conditioanlly render descript…
varun-divya Aug 25, 2025
6ce3cfe
fixing the tooltip text issue
varun-divya Aug 25, 2025
6272887
tooltip text update
varun-divya Aug 25, 2025
292f47d
Ehlers-Danlos syndrome - redirect update
varun-divya Aug 25, 2025
b8839ec
format association count in page source
varun-divya Aug 25, 2025
490ae85
fixing tests
varun-divya Aug 26, 2025
6d43512
clean up
varun-divya Aug 26, 2025
709819f
type error fix
varun-divya Aug 26, 2025
10929ec
adding tests
varun-divya Aug 26, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion frontend/src/App.vue
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
Disabling the banner is as simple as commenting out this section.
</TheBanner> -->

<TheHeaderV2 />
<TheHeaderV2 :key="route.path" />
<main>
<router-view />
<TheFloatButtons />
Expand Down
96 changes: 96 additions & 0 deletions frontend/src/components/AppAssociationTabs.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
<template>
<div class="association-tabs">
<div class="tab-item" v-if="hasDirectAssociations">
<AppButton
:info="true"
:info-tooltip="directTooltip"
:class="['tab-button', { active: directActive }]"
:disabled="!hasDirectAssociations"
:text="directLabel"
color="none"
@click="$emit('select', 'direct')"
/>
</div>

<div class="tab-item" v-if="showAllTab">
<AppButton
:info="true"
:info-tooltip="inferredTooltip"
:class="['tab-button', { active: allActive }]"
:text="inferredLabel"
color="none"
@click="$emit('select', 'all')"
/>
</div>
</div>
</template>

<script setup lang="ts">
import AppButton from "@/components/AppButton.vue";

const props = withDefaults(
defineProps<{
hasDirectAssociations: boolean;
showAllTab: boolean;
directActive: boolean;
allActive: boolean;
directLabel: string;
inferredLabel: string;
directTooltip?: string;
inferredTooltip?: string;
}>(),
{
hasDirectAssociations: true,
showAllTab: true,
directActive: true,
allActive: false,
directLabel: "Direct",
inferredLabel: "All",
directTooltip: undefined,
inferredTooltip: undefined,
},
);
defineEmits<{
(e: "select", which: "direct" | "all"): void;
}>();
</script>

<style scoped lang="scss">
$wrap: 900px;
.association-tabs {
display: flex;
flex-wrap: wrap;
gap: 0.25em;
.tab-button {
z-index: 0;
position: relative;
min-width: 22em;
padding: 0.8rem 1.5rem;
border: none;
border-radius: 8px 8px 0 0;
background-color: $light-gray;
&.active {
z-index: 1;
background-color: $theme;
box-shadow: 0 3px 0 0 $theme;
color: white;
}
}
:deep(.tab-button) {
border: none;
outline: none;
box-shadow: none;
&:focus,
&:hover {
outline: none;
box-shadow: none;
}
}
}
.tab-item {
display: flex;
flex-direction: column;
align-items: center;
gap: 0.5rem;
}
</style>
61 changes: 61 additions & 0 deletions frontend/src/components/AppBackToTopButton.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
<template>
<div class="toc-top" v-show="show">
<AppButton
design="link"
color="none"
:text="label"
icon="angle-up"
icon-position="left"
:aria-label="ariaLabel"
@click="scrollTop"
/>
</div>
</template>

<script setup lang="ts">
import { computed } from "vue";
import { useWindowScroll, useWindowSize } from "@vueuse/core";
import AppButton from "@/components/AppButton.vue";

// Props
const props = withDefaults(
defineProps<{
targetId?: string; // anchor to scroll to
thresholdVH?: number; // show after this % of viewport
label?: string;
ariaLabel?: string;
}>(),
{
targetId: "top",
thresholdVH: 0.1,
label: "Back to top",
ariaLabel: "Back to top",
},
);

// Reactive scroll/viewport
const { y } = useWindowScroll();
const { height } = useWindowSize();

// Show control after threshold
const show = computed(() => y.value > height.value * props.thresholdVH);

// Smooth scroll to anchor or page top
const scrollTop = () => {
const el = document.getElementById(props.targetId);
el
? el.scrollIntoView({ behavior: "smooth", block: "start" })
: window.scrollTo({ top: 0, behavior: "smooth" });
};
</script>

<style scoped lang="scss">
.toc-top {
display: flex;
z-index: 1;
justify-content: center;
padding: 1em;
border-bottom: 1px solid #e9eef0;
background: #fff;
}
</style>
90 changes: 80 additions & 10 deletions frontend/src/components/AppButton.vue
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,21 @@
:type="type"
@click="copy ? copyToClipboard(text) : click"
>
<AppIcon v-if="icon && iconPosition === 'left'" :icon="icon" class="icon" />
<span v-if="text" class="truncate">{{ text }}</span>
<AppIcon v-if="icon" :icon="icon" />
<!-- icon on the RIGHT (default) -->
<AppIcon
v-if="icon && iconPosition === 'right'"
:icon="icon"
class="icon"
/>
<!-- optional info icon -->
<AppIcon
v-if="info"
icon="info-circle"
v-tooltip="infoTooltip"
class="info-icon"
/>
</component>
</template>

Expand All @@ -21,29 +34,38 @@ type Props = {
text?: string;
/** icon to show */
icon?: string;
/** where to place the icon relative to text */
iconPosition?: "left" | "right";
/** location to link to */
to?: string;
/** on click action */
click?: () => unknown;
/** visual design */
design?: "normal" | "circle" | "small" | "tile";
design?: "normal" | "circle" | "small" | "tile" | "big" | "link";
/** color */
color?: "primary" | "secondary" | "none";
/** whether to copy text prop to clipboard on click */
copy?: boolean;
/** html button type attribute */
type?: string;
/** show an “i” info icon on the right */
info?: boolean;
/** tooltip text for the info icon */
infoTooltip?: string;
};

const props = withDefaults(defineProps<Props>(), {
text: "",
icon: "",
iconPosition: "right",
to: "",
click: undefined,
design: "normal",
color: "primary",
copy: false,
type: "button",
info: false,
infoTooltip: "",
});

/** element ref */
Expand Down Expand Up @@ -84,7 +106,6 @@ defineExpose({ button });
&.primary {
background: $theme-light;
}

&.secondary {
background: $light-gray;
}
Expand All @@ -106,6 +127,12 @@ defineExpose({ button });
width: fit-content;
}

&.big {
min-width: min(300px, 100% - 40px);
padding: 0px 30px;
font-size: 1.75rem;
}

&.circle {
border-radius: 999px;
color: $off-black;
Expand All @@ -115,7 +142,6 @@ defineExpose({ button });
min-height: 2em;
padding: 0.25em 0.75em;
}

&:not(.text) {
width: 2.5em;
height: 2.5em;
Expand All @@ -124,7 +150,6 @@ defineExpose({ button });
&.primary {
background: $theme-light;
}

&.secondary {
background: $light-gray;
}
Expand All @@ -143,11 +168,9 @@ defineExpose({ button });
&.primary {
color: $theme;
}

&.secondary {
color: $off-black;
}

&:hover,
&:focus {
color: $black;
Expand All @@ -166,7 +189,6 @@ defineExpose({ button });
&.primary {
background: $theme-light;
}

&.secondary {
background: $light-gray;
}
Expand All @@ -177,13 +199,61 @@ defineExpose({ button });
box-shadow: $outline;
}
}

/* link-style button*/
&.link {
min-height: unset;
padding: 0;
gap: 6px;
background: transparent;
color: $theme;
text-decoration: none;

&:hover .truncate,
&:focus .truncate {
text-decoration: underline;
text-decoration-thickness: 2px;
text-underline-offset: 3px;
}

.truncate {
text-decoration: underline;
text-decoration-thickness: 1px;
text-underline-offset: 3px;
}

&:focus {
border-radius: 6px;
outline: none;
box-shadow: 0 0 0 3px rgba($theme, 0.25);
}
}
}
</style>

<style lang="scss">
.fill {
.button.circle.primary {
background: $theme-mid;
}
}

.icon {
margin-left: 0.5em;
}

/* When icon is on the LEFT, remove the left margin and add a right one */
.button.link .icon,
.button.normal .icon,
.button.small .icon,
.button.tile .icon,
.button.big .icon {
margin-left: 0.5em;
}
.button.link.icon-left .icon {
margin-right: 0.25em;
margin-left: 0;
}

.info-icon {
margin-left: 0.5em;
}
</style>
9 changes: 9 additions & 0 deletions frontend/src/components/AppCitation.vue
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,15 @@ type Props = {

const props = defineProps<Props>();

/** name/label */
const title = computed(() => props.title || "");

/** link */
const link = computed(() => props.link || "");

/** authors */
const authors = computed(() => props.authors || "");

/** joined details as string */
const detailsString = computed(() =>
(props.details || []).filter((e) => e).join("&nbsp; · &nbsp;"),
Expand Down
4 changes: 3 additions & 1 deletion frontend/src/components/AppDownloadTable.vue
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@
import type { DownloadItem } from "@/data/downloads";
import AppButton from "./AppButton.vue";

defineProps<{ items: DownloadItem[] }>();
const { items } = withDefaults(defineProps<{ items?: DownloadItem[] }>(), {
items: () => [],
});
</script>

<style scoped>
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/components/AppNodeBadge.vue
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ type Props = {
/** whether to show id. not shown by default, unless name/label empty. */
showId?: boolean;
/** boolen to use for highlighting */
highlight: boolean;
highlight?: boolean;
};

const props = withDefaults(defineProps<Props>(), {
Expand Down
Loading