diff --git a/src/ensembl/src/content/app/entity-viewer/gene-view/GeneView.scss b/src/ensembl/src/content/app/entity-viewer/gene-view/GeneView.scss
index 69bff4c790dfa5773d579c61ae882376cb7ce8ee..baafe8b81a4ec7e1039dd152299163f94c782e5c 100644
--- a/src/ensembl/src/content/app/entity-viewer/gene-view/GeneView.scss
+++ b/src/ensembl/src/content/app/entity-viewer/gene-view/GeneView.scss
@@ -16,8 +16,8 @@ $backgroundColor: $black;
display: grid;
background-color: $backgroundColor;
grid-template-columns: 178px 902px 1fr;
- grid-template-rows: min-content 90px 1fr;
- padding: 75px 20px 10px 20px;
+ grid-template-rows: min-content 75px 1fr;
+ padding: 60px 20px 10px;
height: 100%; // may need to change this later
width: 100%;
overflow-y: auto;
@@ -39,7 +39,7 @@ $backgroundColor: $black;
grid-area: 2 / 1 / 3 / 4;
z-index: 2;
position: sticky;
- top: -105px;
+ top: -90px;
height: 100%;
background-color: $backgroundColor;
padding-left: 180px;
diff --git a/src/ensembl/src/content/app/entity-viewer/gene-view/GeneView.tsx b/src/ensembl/src/content/app/entity-viewer/gene-view/GeneView.tsx
index 1993a1281124f3427bbd0f4e1e205104ae36f262..5dbd25eedf51dd0533e5be0330f682967e202a40 100644
--- a/src/ensembl/src/content/app/entity-viewer/gene-view/GeneView.tsx
+++ b/src/ensembl/src/content/app/entity-viewer/gene-view/GeneView.tsx
@@ -56,6 +56,7 @@ const QUERY = gql`
query Gene($id: String!) {
gene(byId: { id: $id }) {
id
+ version
slice {
location {
start
diff --git a/src/ensembl/src/content/app/entity-viewer/gene-view/components/default-transcripts-list/DefaultTranscriptsList.scss b/src/ensembl/src/content/app/entity-viewer/gene-view/components/default-transcripts-list/DefaultTranscriptsList.scss
index 410de72accc5861be3c462b527a9ae3ba4f1606e..0cb05695c76151d3ef4b78847ddb6ae1433eb667 100644
--- a/src/ensembl/src/content/app/entity-viewer/gene-view/components/default-transcripts-list/DefaultTranscriptsList.scss
+++ b/src/ensembl/src/content/app/entity-viewer/gene-view/components/default-transcripts-list/DefaultTranscriptsList.scss
@@ -3,15 +3,26 @@
.header {
border-bottom: 1px solid $orange;
- padding: 8px 0;
+ padding: 0;
position: sticky;
top: -15px;
background-color: $black;
z-index: 1;
+ font-size: 12px;
+}
+
+.headerChevron {
+ width: 16px;
+ height: 16px;
+ cursor: pointer;
+ margin-left: 0.5em;
+ top: 5px;
+ position: relative;
}
.content {
position: relative;
+ padding-top: 36px;
}
.stripedBackground {
@@ -33,7 +44,8 @@
.row {
display: grid;
grid-template-columns: $left_column $middle_column $middle_column_right_gap $right_column;
- padding: 3px 0;
+ padding: 9px 0px;
+ font-size: 12px;
}
.left {
@@ -45,6 +57,7 @@
.middle {
grid-column: 2/3;
position: relative;
+ top: 2px;
}
.right {
diff --git a/src/ensembl/src/content/app/entity-viewer/gene-view/components/default-transcripts-list/transcripts-list-item-info/TranscriptsListItemInfo.scss b/src/ensembl/src/content/app/entity-viewer/gene-view/components/default-transcripts-list/transcripts-list-item-info/TranscriptsListItemInfo.scss
index c2a08ef101c03cd97e0af84c3c642518b8b920ed..fa1d1306133ce69feb48ac07c3de4af0ad92dd33 100644
--- a/src/ensembl/src/content/app/entity-viewer/gene-view/components/default-transcripts-list/transcripts-list-item-info/TranscriptsListItemInfo.scss
+++ b/src/ensembl/src/content/app/entity-viewer/gene-view/components/default-transcripts-list/transcripts-list-item-info/TranscriptsListItemInfo.scss
@@ -60,3 +60,7 @@
cursor: pointer;
height: 16px;
}
+
+.viewInApp {
+ padding-top: 32px;
+}
diff --git a/src/ensembl/src/content/app/entity-viewer/gene-view/components/default-transcripts-list/transcripts-list-item-info/TranscriptsListItemInfo.tsx b/src/ensembl/src/content/app/entity-viewer/gene-view/components/default-transcripts-list/transcripts-list-item-info/TranscriptsListItemInfo.tsx
index d08d050ab6a127d07786ebfc24ae37ff7cc4cbd6..bec8f6dea365c1d845356bc7b277409f639c92db 100644
--- a/src/ensembl/src/content/app/entity-viewer/gene-view/components/default-transcripts-list/transcripts-list-item-info/TranscriptsListItemInfo.tsx
+++ b/src/ensembl/src/content/app/entity-viewer/gene-view/components/default-transcripts-list/transcripts-list-item-info/TranscriptsListItemInfo.tsx
@@ -149,7 +149,7 @@ export const TranscriptsListItemInfo = (
- Spliced RNA length {splicedRNALength} bp
+ Spliced RNA length {splicedRNALength} bp
Coding exons {getNumberOfCodingExons(transcript)}{' '}
@@ -171,8 +171,10 @@ export const TranscriptsListItemInfo = (
{props.expandDownload && renderInstantDownload(props)}
-
{transcript.symbol}
+ {transcript.symbol}
+
+
diff --git a/src/ensembl/src/content/app/entity-viewer/gene-view/components/gene-overview-image/GeneOverviewImage.scss b/src/ensembl/src/content/app/entity-viewer/gene-view/components/gene-overview-image/GeneOverviewImage.scss
index 89b061adcc5016dc154bbd40955801fef1403e3f..850427907dd2e813a46fda6e1e8849292f8a7877 100644
--- a/src/ensembl/src/content/app/entity-viewer/gene-view/components/gene-overview-image/GeneOverviewImage.scss
+++ b/src/ensembl/src/content/app/entity-viewer/gene-view/components/gene-overview-image/GeneOverviewImage.scss
@@ -55,5 +55,5 @@
.ruler {
grid-column: 3/4;
grid-row: 3/4;
- padding-top: 10px;
+ padding-top: 15px;
}
diff --git a/src/ensembl/src/content/app/entity-viewer/gene-view/components/gene-overview-image/GeneOverviewImage.tsx b/src/ensembl/src/content/app/entity-viewer/gene-view/components/gene-overview-image/GeneOverviewImage.tsx
index 006d98719e6f84579ada9835892e3db42fc87958..0ea22329cb2631b8131a246f928c2ef242b9da0a 100644
--- a/src/ensembl/src/content/app/entity-viewer/gene-view/components/gene-overview-image/GeneOverviewImage.tsx
+++ b/src/ensembl/src/content/app/entity-viewer/gene-view/components/gene-overview-image/GeneOverviewImage.tsx
@@ -97,7 +97,9 @@ export const GeneImage = (props: GeneOverviewImageProps) => {
};
const GeneId = (props: GeneOverviewImageProps) => (
-
{props.gene.id}
+
+ {props.gene.id}.{props.gene.version}
+
);
const DirectionIndicator = () => {
diff --git a/src/ensembl/src/content/app/entity-viewer/gene-view/components/gene-view-sidebar-tabs/GeneViewSidebarTabs.scss b/src/ensembl/src/content/app/entity-viewer/gene-view/components/gene-view-sidebar-tabs/GeneViewSidebarTabs.scss
index 25bff36f54401eb9e12d29c9747e8b5cd81d9dae..b39969e46f7991381d8d60c862d7bf8d628ce057 100644
--- a/src/ensembl/src/content/app/entity-viewer/gene-view/components/gene-view-sidebar-tabs/GeneViewSidebarTabs.scss
+++ b/src/ensembl/src/content/app/entity-viewer/gene-view/components/gene-view-sidebar-tabs/GeneViewSidebarTabs.scss
@@ -16,7 +16,6 @@
.defaultTab {
background-color: transparent;
color: $blue;
- font-weight: 700;
border-radius: 3px;
margin-right: 3px;
height: 30px;
diff --git a/src/ensembl/src/content/app/entity-viewer/gene-view/components/gene-view-tabs/GeneViewTabs.scss b/src/ensembl/src/content/app/entity-viewer/gene-view/components/gene-view-tabs/GeneViewTabs.scss
index 009f4a8a59e11fb5358ead31f15ca3aba5420343..13fd893ec3c159f79221cd6ecf12d86ea46d8e2a 100644
--- a/src/ensembl/src/content/app/entity-viewer/gene-view/components/gene-view-tabs/GeneViewTabs.scss
+++ b/src/ensembl/src/content/app/entity-viewer/gene-view/components/gene-view-tabs/GeneViewTabs.scss
@@ -1,12 +1,14 @@
@import 'src/styles/common';
.geneTab {
- background-color: #33adff;
+ background-color: $blue;
color: #fff;
font-weight: 700;
border-radius: 3px;
margin-right: 3px;
height: 30px;
+ display: flex;
+ align-items: center;
&::after {
border: none;
}
diff --git a/src/ensembl/src/content/app/entity-viewer/gene-view/components/transcripts-filter/TranscriptsFilter.scss b/src/ensembl/src/content/app/entity-viewer/gene-view/components/transcripts-filter/TranscriptsFilter.scss
index e12cae5e7e23b58fa290cd80b2ae46de98aa1a80..937237ae471366b8b50d684472daccb5cbf88022 100644
--- a/src/ensembl/src/content/app/entity-viewer/gene-view/components/transcripts-filter/TranscriptsFilter.scss
+++ b/src/ensembl/src/content/app/entity-viewer/gene-view/components/transcripts-filter/TranscriptsFilter.scss
@@ -4,7 +4,7 @@
.container {
display: grid;
grid-template-columns: $left_column auto;
- padding: 3px 0;
+ padding: 9px 0;
}
.filterLabel {
@@ -23,7 +23,7 @@
.filterBox {
display: grid;
- grid-template-columns: 270px minmax(210px,auto) 20px;
+ grid-template-columns: 270px minmax(210px, auto) 20px;
background-color: $soft-black;
color: $white;
text-align: left;
diff --git a/src/ensembl/src/content/app/entity-viewer/gene-view/components/transcripts-filter/TranscriptsFilter.tsx b/src/ensembl/src/content/app/entity-viewer/gene-view/components/transcripts-filter/TranscriptsFilter.tsx
index 93b4bfe48841f075fcdef96ed5a8121e7c23276e..a3ef2358c5aab331be0c87356a2e08511a5939a4 100644
--- a/src/ensembl/src/content/app/entity-viewer/gene-view/components/transcripts-filter/TranscriptsFilter.tsx
+++ b/src/ensembl/src/content/app/entity-viewer/gene-view/components/transcripts-filter/TranscriptsFilter.tsx
@@ -1,3 +1,19 @@
+/**
+ * See the NOTICE file distributed with this work for additional information
+ * regarding copyright ownership.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
import React, { useState } from 'react';
import classNames from 'classnames';
import noop from 'lodash/noop';
@@ -15,8 +31,8 @@ import styles from './TranscriptsFilter.scss';
import Checkbox from 'src/shared/components/checkbox/Checkbox';
type Props = {
- toggleFilter : () => void;
- isSidebarOpen : boolean;
+ toggleFilter: () => void;
+ isSidebarOpen: boolean;
};
type OptionValue = string | number | boolean;
@@ -28,17 +44,15 @@ const radioData: RadioOptions = [
];
const TranscriptsFilter = (props: Props) => {
-
const [isChecked, setChecked] = useState(false);
- const filterBoxClassnames = classNames(
- styles.filterBox,
- { [styles.filterBoxFullWidth]: !props.isSidebarOpen }
- );
+ const filterBoxClassnames = classNames(styles.filterBox, {
+ [styles.filterBoxFullWidth]: !props.isSidebarOpen
+ });
const [selectedRadio, setselectedRadio] = useState
('default');
- const radioChange = (value: OptionValue ) => {
+ const radioChange = (value: OptionValue) => {
setselectedRadio(value);
};
@@ -48,21 +62,21 @@ const TranscriptsFilter = (props: Props) => {
return (
-
+
Filter & sort
-
+
-
+
Sort by
{
Filter by
);
-}
+};
const mapStateToProps = (state: RootState) => {
return {
- isSidebarOpen: isEntityViewerSidebarOpen(state),
+ isSidebarOpen: isEntityViewerSidebarOpen(state)
};
};
diff --git a/src/ensembl/src/content/app/entity-viewer/shared/components/entity-viewer-topbar/EntityViewerTopbar.scss b/src/ensembl/src/content/app/entity-viewer/shared/components/entity-viewer-topbar/EntityViewerTopbar.scss
index bfe908de4a5d6c239ffe173d53025ad08874463d..090410f764fbcfda602501af791b86c7c70845c9 100644
--- a/src/ensembl/src/content/app/entity-viewer/shared/components/entity-viewer-topbar/EntityViewerTopbar.scss
+++ b/src/ensembl/src/content/app/entity-viewer/shared/components/entity-viewer-topbar/EntityViewerTopbar.scss
@@ -3,6 +3,6 @@
align-items: center;
}
-.scaleSwitcherWrapper {
+.entityTypeIndicatorWrapper {
margin-left: auto;
}
diff --git a/src/ensembl/src/content/app/entity-viewer/shared/components/entity-viewer-topbar/EntityViewerTopbar.tsx b/src/ensembl/src/content/app/entity-viewer/shared/components/entity-viewer-topbar/EntityViewerTopbar.tsx
index 0e6fa44aa91fee3a1faa94610edc74c3052c7f14..c1033f1d17ce260a361bada4cd914bff9136dbe4 100644
--- a/src/ensembl/src/content/app/entity-viewer/shared/components/entity-viewer-topbar/EntityViewerTopbar.tsx
+++ b/src/ensembl/src/content/app/entity-viewer/shared/components/entity-viewer-topbar/EntityViewerTopbar.tsx
@@ -17,7 +17,7 @@
import React from 'react';
import { useQuery, gql } from '@apollo/client';
-import ScaleSwitcher from './scale-switcher/ScaleSwitcher';
+import EntityTypeIndicator from 'src/shared/components/entity-type-indicator/EntityTypeIndicator';
import { GeneSummaryStrip } from 'src/shared/components/feature-summary-strip';
import { Slice } from 'src/content/app/entity-viewer/types/slice';
@@ -72,8 +72,8 @@ export const EntityViewerTopbar = (props: EntityViewerTopbarProps) => {
) : null}
-
);
diff --git a/src/ensembl/src/content/app/entity-viewer/shared/components/entity-viewer-topbar/scale-switcher/ScaleSwitcher.scss b/src/ensembl/src/content/app/entity-viewer/shared/components/entity-viewer-topbar/scale-switcher/ScaleSwitcher.scss
deleted file mode 100644
index 7fc173ec12fdf65eba90dfea090c904817ba262d..0000000000000000000000000000000000000000
--- a/src/ensembl/src/content/app/entity-viewer/shared/components/entity-viewer-topbar/scale-switcher/ScaleSwitcher.scss
+++ /dev/null
@@ -1,24 +0,0 @@
-@import 'src/styles/common';
-
-.container {
- display: flex;
-}
-
-.selectedNode {
- border-radius: 12px;
- height: 24px;
- padding: 1px 20px 0 20px;
- margin-right: 24px;
- background-color: $black;
- color: $white;
- text-align: center;
- cursor: default;
-}
-
-.emptyNode {
- border-radius: 100%;
- background-color: $grey;
- margin: 6px 24px 0 0;
- width: 10px;
- height: 10px;
-}
diff --git a/src/ensembl/src/content/app/entity-viewer/shared/rest/rest-adaptors/rest-gene-adaptor.ts b/src/ensembl/src/content/app/entity-viewer/shared/rest/rest-adaptors/rest-gene-adaptor.ts
index 5784b988b22471c20047c08ece44d63c18221774..eeef88a9aad6a6b425370ffc021cd3b4e4d70e0f 100644
--- a/src/ensembl/src/content/app/entity-viewer/shared/rest/rest-adaptors/rest-gene-adaptor.ts
+++ b/src/ensembl/src/content/app/entity-viewer/shared/rest/rest-adaptors/rest-gene-adaptor.ts
@@ -27,6 +27,7 @@ export const restGeneAdaptor = (gene: GeneInResponse): Gene => {
return {
id: gene.id,
+ version: gene.version,
type: 'Gene',
symbol: gene.display_name,
so_term: gene.biotype,
diff --git a/src/ensembl/src/content/app/entity-viewer/types/gene.ts b/src/ensembl/src/content/app/entity-viewer/types/gene.ts
index 64ac2e8580af53f9663d16bbc29110f9b7130b34..15aec9525e5fad9b2198dc63c64f192c64fa28f8 100644
--- a/src/ensembl/src/content/app/entity-viewer/types/gene.ts
+++ b/src/ensembl/src/content/app/entity-viewer/types/gene.ts
@@ -24,6 +24,7 @@ import { Metadata } from './metadata';
export type Gene = {
type: 'Gene';
id: string;
+ version: number;
symbol: string;
source?: Source;
so_term: string; // is there a better name for it?
diff --git a/src/ensembl/src/shared/components/entity-type-indicator/EntityTypeIndicator.scss b/src/ensembl/src/shared/components/entity-type-indicator/EntityTypeIndicator.scss
new file mode 100644
index 0000000000000000000000000000000000000000..b19ac2f4af8df3e6ad7314919083b35b1875ea2f
--- /dev/null
+++ b/src/ensembl/src/shared/components/entity-type-indicator/EntityTypeIndicator.scss
@@ -0,0 +1,11 @@
+@import 'src/styles/common';
+
+.indicator {
+ border-radius: 30px;
+ height: 21px;
+ padding: 1px 16px 0;
+ margin-right: 24px;
+ background-color: $black;
+ color: $white;
+ text-align: center;
+}
diff --git a/src/ensembl/src/content/app/entity-viewer/shared/components/entity-viewer-topbar/scale-switcher/ScaleSwitcher.tsx b/src/ensembl/src/shared/components/entity-type-indicator/EntityTypeIndicator.tsx
similarity index 61%
rename from src/ensembl/src/content/app/entity-viewer/shared/components/entity-viewer-topbar/scale-switcher/ScaleSwitcher.tsx
rename to src/ensembl/src/shared/components/entity-type-indicator/EntityTypeIndicator.tsx
index 55a145e6f313b3ecd003dbb098cbfb7d41f50b54..bc9021e0293ab7b63c6019a222775e142cac495a 100644
--- a/src/ensembl/src/content/app/entity-viewer/shared/components/entity-viewer-topbar/scale-switcher/ScaleSwitcher.tsx
+++ b/src/ensembl/src/shared/components/entity-type-indicator/EntityTypeIndicator.tsx
@@ -16,22 +16,13 @@
import React from 'react';
-import styles from './ScaleSwitcher.scss';
+import styles from './EntityTypeIndicator.scss';
-const ScaleSwitcher = () => {
- return (
-
- {renderEmptyDots(3)}
-
Gene
- {renderEmptyDots(3)}
-
- );
+type EntityTypeIndicatorProps = {
+ entity: string;
};
+const EntityTypeIndicator = (props: EntityTypeIndicatorProps) => (
+ {props.entity}
+);
-const renderEmptyDots = (number: number) => {
- return [...Array(number)].map((_, index) => (
-
- ));
-};
-
-export default ScaleSwitcher;
+export default EntityTypeIndicator;
diff --git a/src/ensembl/src/shared/components/radio-group/RadioGroup.tsx b/src/ensembl/src/shared/components/radio-group/RadioGroup.tsx
index c738374beb5881972719f99f7f3f41bc3e2b95bd..5f8d69fc0ad4912a34bbccb942d91e0dfb7f5611 100644
--- a/src/ensembl/src/shared/components/radio-group/RadioGroup.tsx
+++ b/src/ensembl/src/shared/components/radio-group/RadioGroup.tsx
@@ -41,35 +41,27 @@ type Props = {
};
const RadioGroup = (props: Props) => {
- const handleOnChange = (value: OptionValue) => {
+ const handleChange = (value: OptionValue) => {
if (props.disabled || value === props.selectedOption) {
return;
}
props.onChange(value);
};
- const labelClass = classNames (
- styles.label,
- props.classNames?.label,
- )
+ const labelClass = classNames(styles.label, props.classNames?.label);
- const wrapperClass = classNames (
- styles.wrapper,
- props.classNames?.wrapper,
- )
+ const wrapperClass = classNames(styles.wrapper, props.classNames?.wrapper);
const getRadioClass = (option: RadioOption) => {
- const radioCheckedClass = classNames (
+ const radioCheckedClass = classNames(
styles.radioChecked,
- props.classNames?.radioChecked,
+ props.classNames?.radioChecked
);
const radioClass = classNames(
styles.radio,
props.classNames?.radio,
- option.value === props.selectedOption
- ? radioCheckedClass
- : undefined
+ option.value === props.selectedOption ? radioCheckedClass : undefined
);
return radioClass;
@@ -79,12 +71,15 @@ const RadioGroup = (props: Props) => {
{props.options.map((option, index) => (
-
handleOnChange(option.value)} className={getRadioClass(option)} />
+
handleChange(option.value)}
+ className={getRadioClass(option)}
+ />
);
});