@@ -14,8 +14,8 @@ import {
1414 Tooltip ,
1515 Avatar ,
1616 Typography ,
17- // message,
1817} from "antd" ;
18+ import { slugify } from "../../helpers/report" ;
1919import { FileTextOutlined } from "@ant-design/icons" ;
2020import { BsDashLg } from "react-icons/bs" ;
2121import * as d3 from "d3" ;
@@ -29,14 +29,6 @@ import filteredEventsActions from "../../redux/filteredEvents/actions";
2929import ErrorPanel from "../errorPanel" ;
3030import ReportModal from "../reportModal" ;
3131
32- /* helper to build the report anchor */
33- function slugify ( s ) {
34- const str = String ( s || "" ) . trim ( ) . toLowerCase ( ) ;
35- const ascii = str . normalize ( "NFKD" ) . replace ( / [ \u0300 - \u036f ] / g, "" ) ;
36- const cleaned = ascii . replace ( / [ ^ a - z 0 - 9 ] + / g, "-" ) . replace ( / ^ - + | - + $ / g, "" ) ;
37- return cleaned || "section" ;
38- }
39-
4032const { Text } = Typography ;
4133
4234const { selectFilteredEvent, applyTierOverride } = filteredEventsActions ;
@@ -49,6 +41,16 @@ const eventColumns = {
4941} ;
5042
5143class FilteredEventsListPanel extends Component {
44+ handleResetFilters = ( ) => {
45+ this . setState ( {
46+ geneFilters : [ ] ,
47+ tierFilters : [ ] ,
48+ typeFilters : [ ] ,
49+ roleFilters : [ ] ,
50+ effectFilters : [ ] ,
51+ variantFilters : [ ] ,
52+ } ) ;
53+ } ;
5254 state = {
5355 eventType : "all" ,
5456 tierFilters : [ 1 , 2 ] , // start with tiers 1 & 2 checked
@@ -116,7 +118,8 @@ class FilteredEventsListPanel extends Component {
116118 try {
117119 if ( ! window . indexedDB || ! tierKey ) return null ;
118120
119- const dbInfos = ( indexedDB . databases && ( await indexedDB . databases ( ) ) ) || [ ] ;
121+ const dbInfos =
122+ ( indexedDB . databases && ( await indexedDB . databases ( ) ) ) || [ ] ;
120123 const dbNames = ( dbInfos || [ ] ) . map ( ( d ) => d ?. name ) . filter ( Boolean ) ;
121124
122125 for ( const dbName of dbNames ) {
@@ -151,7 +154,11 @@ class FilteredEventsListPanel extends Component {
151154 const val = getReq . result ;
152155 if ( val != null ) {
153156 db . close ( ) ;
154- resolve ( typeof val === "object" && val !== null ? ( val . v ?? null ) : val ) ;
157+ resolve (
158+ typeof val === "object" && val !== null
159+ ? val . v ?? null
160+ : val
161+ ) ;
155162 return ;
156163 }
157164 if ( ! store . getAll ) {
@@ -171,7 +178,11 @@ class FilteredEventsListPanel extends Component {
171178 ) ;
172179 if ( match ) {
173180 db . close ( ) ;
174- resolve ( typeof match === "object" && match !== null ? ( match . v ?? null ) : match ) ;
181+ resolve (
182+ typeof match === "object" && match !== null
183+ ? match . v ?? null
184+ : match
185+ ) ;
175186 } else {
176187 tryStore ( i + 1 ) ;
177188 }
@@ -195,7 +206,7 @@ class FilteredEventsListPanel extends Component {
195206 } ;
196207
197208 applyTierOverrideIfAny = async ( ) => {
198- console . log ( ' Applying tier override if any...' ) ;
209+ console . log ( " Applying tier override if any..." ) ;
199210 const { id, selectedFilteredEvent, viewMode } = this . props ;
200211 if ( ! selectedFilteredEvent || viewMode !== "detail" ) return ;
201212
@@ -204,7 +215,7 @@ class FilteredEventsListPanel extends Component {
204215 if ( override != null && `${ selectedFilteredEvent . tier } ` !== `${ override } ` ) {
205216 this . props . applyTierOverride ( selectedFilteredEvent . uid , `${ override } ` ) ;
206217 } else {
207- console . log ( ' No tier override found or no change needed.' ) ;
218+ console . log ( " No tier override found or no change needed." ) ;
208219 }
209220 } ;
210221
@@ -223,10 +234,6 @@ class FilteredEventsListPanel extends Component {
223234 ) ;
224235 } ;
225236
226-
227-
228-
229-
230237 render ( ) {
231238 const {
232239 t,
@@ -689,17 +696,23 @@ class FilteredEventsListPanel extends Component {
689696 </ Row >
690697 ) : (
691698 < >
692- < Row className = "ant-panel-container ant-home-plot-container" >
693- < Button
694- type = "primary"
695- icon = { < FileTextOutlined /> }
696- onClick = { this . handleExportNotes }
697- disabled = { ! reportSrc }
698- style = { { marginBottom : 16 } }
699- >
700- { t ( "components.filtered-events-panel.export.notes" ) }
701- </ Button >
702- < Col className = "gutter-row table-container" span = { 24 } >
699+ < Row
700+ className = "ant-panel-container ant-home-plot-container"
701+ align = "middle"
702+ justify = "space-between"
703+ >
704+ < Col span = { 24 } >
705+ < Button
706+ type = "primary"
707+ icon = { < FileTextOutlined /> }
708+ onClick = { this . handleExportNotes }
709+ disabled = { ! reportSrc }
710+ style = { { marginBottom : 16 } }
711+ >
712+ { t ( "components.filtered-events-panel.export.notes" ) }
713+ </ Button >
714+ </ Col >
715+ < Col flex = "auto" >
703716 < Segmented
704717 size = "small"
705718 options = { Object . keys ( eventColumns ) . map ( ( d ) => {
@@ -734,6 +747,15 @@ class FilteredEventsListPanel extends Component {
734747 value = { eventType }
735748 />
736749 </ Col >
750+ < Col style = { { textAlign : "right" } } flex = "none" >
751+ < Button
752+ type = "link"
753+ onClick = { this . handleResetFilters }
754+ style = { { float : "right" , marginBottom : 16 } }
755+ >
756+ { t ( "components.filtered-events-panel.reset-filters" ) }
757+ </ Button >
758+ </ Col >
737759 </ Row >
738760 < Row className = "ant-panel-container ant-home-plot-container" >
739761 < Col className = "gutter-row table-container" span = { 24 } >
@@ -825,7 +847,7 @@ class FilteredEventsListPanel extends Component {
825847 "components.tracks-modal.hetsnp-copy-number"
826848 ) ,
827849 hetsnpPlotYAxis2Title : t (
828- "components.tracks-modal.hetsnp -count"
850+ "components.tracks-modal.hetsnps -count"
829851 ) ,
830852 mutationsPlotTitle : t (
831853 "components.tracks-modal.mutations-plot"
@@ -851,7 +873,9 @@ class FilteredEventsListPanel extends Component {
851873 onClose = { this . handleCloseDetailReport }
852874 src = {
853875 reportSrc
854- ? `${ reportSrc } #${ slugify ( `${ selectedFilteredEvent ?. gene } ${ selectedFilteredEvent ?. variant } ` ) } `
876+ ? `${ reportSrc } #${ slugify (
877+ `${ selectedFilteredEvent ?. gene } ${ selectedFilteredEvent ?. variant } `
878+ ) } `
855879 : undefined
856880 }
857881 title = {
@@ -878,7 +902,9 @@ class FilteredEventsListPanel extends Component {
878902 mutations = { mutations }
879903 genomeCoverage = { genomeCoverage }
880904 methylationBetaCoverage = { methylationBetaCoverage }
881- methylationIntensityCoverage = { methylationIntensityCoverage }
905+ methylationIntensityCoverage = {
906+ methylationIntensityCoverage
907+ }
882908 hetsnps = { hetsnps }
883909 genes = { genes }
884910 igv = { igv }
@@ -894,13 +920,17 @@ class FilteredEventsListPanel extends Component {
894920 open = { showReportModal }
895921 onClose = { this . handleCloseReportModal }
896922 src = { reportSrc }
897- title = { t ( "components.filtered-events-panel.export.notes" ) }
923+ title = { t (
924+ "components.filtered-events-panel.export.notes"
925+ ) }
898926 loading = { loading }
899927 genome = { genome }
900928 mutations = { mutations }
901929 genomeCoverage = { genomeCoverage }
902930 methylationBetaCoverage = { methylationBetaCoverage }
903- methylationIntensityCoverage = { methylationIntensityCoverage }
931+ methylationIntensityCoverage = {
932+ methylationIntensityCoverage
933+ }
904934 hetsnps = { hetsnps }
905935 genes = { genes }
906936 igv = { igv }
0 commit comments