11import React from "react" ;
2+ import { connect } from "react-redux" ;
23
4+ import { toggleList } from "../actions" ;
35import { useLocalizationContext } from "../components/LocalizationProvider" ;
46import useMatomo from "../utils/useMatomo" ;
7+ import { STREAMGRAPH_MODE } from "../reducers/chartType" ;
58
6- const ListToggle = ( { show, docsNumber, onClick } ) => {
7- const localization = useLocalizationContext ( ) ;
9+ const ListToggle = ( {
10+ docsNumber,
11+ isShown,
12+ isZoomed,
13+ isStreamgraph,
14+ appliedFilter,
15+ onClick,
16+ } ) => {
817 const { trackEvent } = useMatomo ( ) ;
918
1019 const handleClick = ( ) => {
1120 onClick ( ) ;
12- if ( show ) {
21+ if ( isShown ) {
1322 trackEvent ( "List controls" , "Hide list" , "List toggle" ) ;
1423 } else {
1524 trackEvent ( "List controls" , "Show list" , "List toggle" ) ;
1625 }
1726 } ;
1827
28+ const loc = useLocalizationContext ( ) ;
29+ // this should later move to localization
30+ let mainLabel = "Overview" ;
31+ if ( isZoomed ) {
32+ mainLabel = isStreamgraph ? loc . area_streamgraph : loc . area ;
33+ }
34+
35+ let docsLabel = "document" ;
36+ switch ( appliedFilter ) {
37+ case "open_access" :
38+ docsLabel = "open access document" ;
39+ break ;
40+ case "dataset" :
41+ docsLabel = "dataset" ;
42+ break ;
43+ default :
44+ break ;
45+ }
46+
47+ if ( docsNumber > 1 ) {
48+ docsLabel += "s" ;
49+ }
50+
1951 return (
2052 // html template starts here
2153 < div id = "show_hide_button" className = "row" onClick = { handleClick } >
2254 < div className = "col-xs-2" > ▼</ div >
2355 < div className = "col-xs-8" id = "show_hide_button_label" >
2456 < span id = "show_hide_label" >
2557 < span >
26- { show ? localization . hide_list : localization . show_list } { " " }
58+ { mainLabel } { " " }
2759 < span id = "list_item_banner" >
28- (< span id = "list_item_count" > { docsNumber } </ span > { " " }
29- { localization . items } )
60+ (< span id = "list_item_count" > { docsNumber } </ span > { docsLabel } )
3061 </ span >
3162 </ span >
3263 </ span >
@@ -37,4 +68,15 @@ const ListToggle = ({ show, docsNumber, onClick }) => {
3768 ) ;
3869} ;
3970
40- export default ListToggle ;
71+ const mapStateToProps = ( state ) => ( {
72+ isShown : state . list . show ,
73+ isZoomed : state . zoom ,
74+ isStreamgraph : state . chartType === STREAMGRAPH_MODE ,
75+ appliedFilter : state . list . filterValue ,
76+ } ) ;
77+
78+ const mapDispatchToProps = ( dispatch ) => ( {
79+ onClick : ( ) => dispatch ( toggleList ( ) ) ,
80+ } ) ;
81+
82+ export default connect ( mapStateToProps , mapDispatchToProps ) ( ListToggle ) ;
0 commit comments