@@ -7,6 +7,7 @@ import Chart from "../templates/Chart";
77import Paper from "../templates/Paper" ;
88
99import { mapDispatchToMapEntriesProps } from "../utils/eventhandlers" ;
10+ import { trackMatomoEvent } from "../utils/useMatomo" ;
1011
1112const KnowledgeMap = ( props ) => {
1213 const { data, areas, zoom, animation } = props ;
@@ -17,31 +18,46 @@ const KnowledgeMap = (props) => {
1718 const { handleDeselectPaper, handleSelectPaper } = props ;
1819 const { hoveredBubble, bubbleOrder, changeBubbleOrder } = props ;
1920 const { hoveredPaper, paperOrder, changePaperOrder } = props ;
21+ const { trackMouseOver } = props ;
2022
2123 // bubble section
2224 const handleAreaMouseOver = ( area ) => {
2325 if ( hoveredBubble === area . area_uri ) {
2426 return ;
2527 }
2628
29+ if ( trackMouseOver ) {
30+ trackMatomoEvent ( "Knowledge map" , "Hover bubble" , "Bubble" ) ;
31+ }
32+
2733 changeBubbleOrder ( area . area_uri ) ;
2834 } ;
2935
3036 const handleOtherAreaZoomIn = ( bubble ) => {
3137 handleDeselectPaper ( ) ;
3238 handleZoomIn ( bubble , true ) ;
39+ trackMatomoEvent ( "Knowledge map" , "Zoom in" , "Bubble" ) ;
3340 } ;
3441
3542 const getBubbleZoomClickHandler = ( bubble ) => {
3643 if ( zoomedBubbleUri === bubble . area_uri ) {
37- return handleDeselectPaper ;
44+ if ( ! selectedPaperId ) {
45+ return undefined ;
46+ }
47+ return ( ) => {
48+ handleDeselectPaper ( ) ;
49+ trackMatomoEvent ( "Knowledge map" , "Deselect paper" , "Bubble" ) ;
50+ } ;
3851 }
3952
4053 if ( zoom ) {
4154 return ( ) => handleOtherAreaZoomIn ( bubble ) ;
4255 }
4356
44- return ( ) => handleZoomIn ( bubble ) ;
57+ return ( ) => {
58+ handleZoomIn ( bubble ) ;
59+ trackMatomoEvent ( "Knowledge map" , "Zoom in" , "Bubble" ) ;
60+ } ;
4561 } ;
4662
4763 const sortedAreas = sortAreasByIds ( areas , bubbleOrder ) ;
@@ -50,7 +66,10 @@ const KnowledgeMap = (props) => {
5066 let onClick = undefined ;
5167 let onMouseOver = ( ) => changeBubbleOrder ( null ) ;
5268 if ( zoom ) {
53- onClick = handleZoomOut ;
69+ onClick = ( ) => {
70+ handleZoomOut ( ) ;
71+ trackMatomoEvent ( "Knowledge map" , "Zoom out" , "Chart" ) ;
72+ } ;
5473 onMouseOver = undefined ;
5574 }
5675
@@ -65,7 +84,10 @@ const KnowledgeMap = (props) => {
6584 }
6685 let onDoubleClick = undefined ;
6786 if ( zoomedBubbleUri === bubble . area_uri ) {
68- onDoubleClick = handleZoomOut ;
87+ onDoubleClick = ( ) => {
88+ handleZoomOut ( ) ;
89+ trackMatomoEvent ( "Knowledge map" , "Zoom out" , "Bubble" ) ;
90+ } ;
6991 }
7092
7193 return { onClick, onMouseOver, onDoubleClick } ;
@@ -79,6 +101,7 @@ const KnowledgeMap = (props) => {
79101 handleZoomIn (
80102 areas . find ( ( bubble ) => bubble . area_uri === paper . area_uri )
81103 ) ;
104+ trackMatomoEvent ( "Knowledge map" , "Zoom in" , "Bubble" ) ;
82105 return ;
83106 }
84107
@@ -90,10 +113,15 @@ const KnowledgeMap = (props) => {
90113 // bubble click event
91114 event . stopPropagation ( ) ;
92115 handleSelectPaper ( paper ) ;
116+ trackMatomoEvent ( "Knowledge map" , "Select paper" , "Paper" ) ;
93117 } ;
94118
95119 const handlePaperMouseOver = ( newEnlargeFactor ) => {
96120 changePaperOrder ( paper . safe_id , newEnlargeFactor ) ;
121+
122+ if ( trackMouseOver ) {
123+ trackMatomoEvent ( "Knowledge map" , "Hover paper" , "Paper" ) ;
124+ }
97125 } ;
98126
99127 const handlePaperMouseOut = ( ) => {
@@ -193,6 +221,7 @@ const mapStateToProps = (state) => ({
193221 hoveredPaper : state . paperOrder . hoveredPaper ,
194222 paperOrder : state . paperOrder . order ,
195223 enlargeFactor : state . paperOrder . enlargeFactor ,
224+ trackMouseOver : state . tracking . trackMouseOver ,
196225} ) ;
197226
198227export default connect (
0 commit comments