@@ -12,6 +12,21 @@ function ebiToggleClass(element, toggleClass){
12
12
element . className = newClass . trim ( ) ;
13
13
}
14
14
15
+ /**
16
+ * Utility function to add classes (only once).
17
+ */
18
+ function ebiActivateClass ( element , cssClass ) {
19
+ element . classList . remove ( cssClass ) ;
20
+ element . classList . add ( cssClass ) ;
21
+ }
22
+
23
+ /**
24
+ * Utility function to remove classes.
25
+ */
26
+ function ebiRemoveClass ( element , cssClass ) {
27
+ element . classList . remove ( cssClass ) ;
28
+ }
29
+
15
30
/**
16
31
* Remove global-nav/global-nav-expanded from header/footer if body.no-global-nav is set
17
32
*/
@@ -66,12 +81,12 @@ function ebiFrameworkPopulateBlackBar() {
66
81
barContents . innerHTML = '<nav class="row">' +
67
82
'<ul id="global-nav" class="menu global-nav text-right">' +
68
83
'<li class="home-mobile"><a href="https://www.ebi.ac.uk"></a></li>' +
69
- '<li class="location embl hide"><a href="http://www.embl.org">EMBL</a></li>' +
70
- '<li class="location barcelona hide"><a href="#">Barcelona</a></li>' +
71
- '<li class="location hamburg hide"><a href="#">Hamburg</a></li>' +
72
- '<li class="location grenoble hide"><a href="#">Heidelberg</a></li>' +
73
- '<li class="location grenoble hide"><a href="#">Grenoble</a></li>' +
74
- '<li class="location rome hide"><a href="#">Rome</a></li>' +
84
+ '<li class="where embl hide"><a href="http://www.embl.org">EMBL</a></li>' +
85
+ '<li class="where barcelona hide"><a href="#">Barcelona</a></li>' +
86
+ '<li class="where hamburg hide"><a href="#">Hamburg</a></li>' +
87
+ '<li class="where grenoble hide"><a href="#">Heidelberg</a></li>' +
88
+ '<li class="where grenoble hide"><a href="#">Grenoble</a></li>' +
89
+ '<li class="where rome hide"><a href="#">Rome</a></li>' +
75
90
'<li id="embl-selector" class="float-right show-for-medium embl-selector">' +
76
91
'<button class="button float-right"> </button>' +
77
92
'</li>' +
@@ -84,7 +99,7 @@ function ebiFrameworkPopulateBlackBar() {
84
99
'<li class="what training"><a href="https://www.ebi.ac.uk/training">Training</a></li>' +
85
100
'<li class="what research"><a href="https://www.ebi.ac.uk/research">Research</a></li>' +
86
101
'<li class="what services"><a href="https://www.ebi.ac.uk/services">Services</a></li>' +
87
- '<li class="location ebi"><a href="https://www.ebi.ac.uk">EMBL-EBI</a></li>' +
102
+ '<li class="where ebi"><a href="https://www.ebi.ac.uk">EMBL-EBI</a></li>' +
88
103
// '<li class="float-right embl-selector">'+
89
104
// '<a class="button float-right"> </a>'+
90
105
// '</li>'+
@@ -96,40 +111,42 @@ function ebiFrameworkPopulateBlackBar() {
96
111
catch ( err ) { } ;
97
112
}
98
113
114
+ /**
115
+ * Reusable function to get part of the black bar
116
+ */
117
+ function ebiGetFacet ( passedAttribute ) {
118
+ var tag = "#masthead-black-bar ." + passedAttribute . toLowerCase ( ) ;
119
+ return document . querySelectorAll ( tag ) [ 0 ] ;
120
+ }
121
+
99
122
/**
100
123
* Active tabs in `#masthead-black-bar` accoriding to metadata
101
124
*/
102
125
function ebiFrameworkActivateBlackBar ( ) {
103
126
// Look at the embl:facet-* meta tags to set active states
104
- // <meta name="embl:facet-who" content="primary" data-tag="Sample group" />
105
- // <meta name="embl:facet-what" content="parent" data-tag="Research" />
106
- // <meta name="embl:facet-where" content="parent" data-tag="EBI" />
127
+ // <meta name="embl:rational" content="-3" />
128
+ // <meta name="embl:external" content="8" />
129
+ // <meta name="embl:active" content="what:*" />
130
+ // <meta name="embl:parent-1" content="" />
131
+ // <meta name="embl:parent-2" content="" />
107
132
try {
108
133
109
- function ebiGetFacet ( passedAttribute ) {
110
- var tag = "#masthead-black-bar ." + passedAttribute . toLowerCase ( ) ;
111
- return document . querySelectorAll ( tag ) [ 0 ] ;
112
- }
113
134
var metas = document . getElementsByTagName ( 'meta' ) ;
114
135
for ( var i = 0 ; i < metas . length ; i ++ ) {
115
- if ( metas [ i ] . getAttribute ( "name" ) == "embl:facet-who" ) {
116
- if ( metas [ i ] . getAttribute ( "content" ) . toLowerCase ( ) == "parent" ) {
117
- var targetFacet = ebiGetFacet ( metas [ i ] . getAttribute ( "data-tag" ) ) ;
118
- // todo: insert this as a new facet, i think?
119
- }
136
+ if ( metas [ i ] . getAttribute ( "name" ) == "embl:active" ) {
137
+ var targetFacet = ebiGetFacet ( metas [ i ] . getAttribute ( "content" ) . replace ( ':' , '.' ) ) ;
138
+ ebiRemoveClass ( targetFacet , 'hide' ) ;
139
+ ebiActivateClass ( targetFacet , 'active' ) ;
120
140
}
121
- if ( metas [ i ] . getAttribute ( "name" ) == "embl:facet-what" ) {
122
- if ( metas [ i ] . getAttribute ( "content" ) . toLowerCase ( ) == "parent" ) {
123
- var targetFacet = ebiGetFacet ( metas [ i ] . getAttribute ( "data-tag" ) ) ;
124
- ebiToggleClass ( targetFacet , 'active' ) ;
125
- }
141
+ if ( metas [ i ] . getAttribute ( "name" ) == "embl:parent-1" ) {
142
+ var targetFacet = ebiGetFacet ( metas [ i ] . getAttribute ( "content" ) . replace ( ':' , '.' ) ) ;
143
+ ebiRemoveClass ( targetFacet , 'hide' ) ;
144
+ ebiActivateClass ( targetFacet , 'active' ) ;
126
145
}
127
- if ( metas [ i ] . getAttribute ( "name" ) == "embl:facet-where" ) {
128
- if ( metas [ i ] . getAttribute ( "content" ) . toLowerCase ( ) == "parent" ) {
129
- var targetFacet = ebiGetFacet ( metas [ i ] . getAttribute ( "data-tag" ) ) ;
130
- ebiToggleClass ( targetFacet , 'active' ) ;
131
- ebiToggleClass ( targetFacet , 'hide' ) ; // as we hide these by default
132
- }
146
+ if ( metas [ i ] . getAttribute ( "name" ) == "embl:parent-2" ) {
147
+ var targetFacet = ebiGetFacet ( metas [ i ] . getAttribute ( "content" ) . replace ( ':' , '.' ) ) ;
148
+ ebiRemoveClass ( targetFacet , 'hide' ) ;
149
+ ebiActivateClass ( targetFacet , 'active' ) ;
133
150
}
134
151
}
135
152
@@ -225,34 +242,26 @@ function ebiFrameworkInsertEMBLdropdown() {
225
242
window . scrollTo ( 0 , 0 ) ;
226
243
} , false ) ;
227
244
228
- // we do this bit with jquery to prototype, would need ro rewire as vanilla JS..
229
- $ ( '#masthead-black-bar .where.active' ) . on ( 'mouseover' , function ( ) {
230
- emblResetContext ( ) ; // clear any other states
231
- $ ( '#masthead-black-bar .where.hide' ) . addClass ( 'hover' ) . removeClass ( 'hide' ) ;
245
+ // we do this bit with jquery to prototype; need to rewire as vanilla JS.
246
+ ebiGetFacet ( 'where.active' ) . addEventListener ( "mouseenter" , function ( event ) {
247
+ $ ( '#masthead-black-bar .where.hide' ) . addClass ( 'hover float-left' ) . removeClass ( 'hide' ) ;
232
248
// $('#masthead-black-bar .where.hide').removeClass('hide').addClass('hover');
233
249
$ ( '#masthead-black-bar .what' ) . addClass ( 'hide' ) ;
234
- } ) ;
235
- $ ( '#masthead-black-bar .what.active' ) . on ( 'mouseover' , function ( ) {
236
- emblResetContext ( ) ; // clear any other states
237
- $ ( '#masthead-black-bar .what.mission' ) . removeClass ( 'hide' ) ;
238
- $ ( '#masthead-black-bar .what' ) . addClass ( 'hover' ) ;
239
- } ) ;
240
-
250
+ } , false ) ;
251
+ ebiGetFacet ( 'what.active' ) . addEventListener ( "mouseenter" , function ( event ) {
252
+ $ ( '#masthead-black-bar .what' ) . removeClass ( 'hide float-left' ) ;
253
+ $ ( '#masthead-black-bar .what' ) . addClass ( 'hover float-left' ) ;
254
+ $ ( '#masthead-black-bar .where' ) . addClass ( 'hide' ) ;
255
+ } , false ) ;
241
256
242
- // reset when user engages with content
243
- function emblResetContext ( ) {
244
- // ebiFrameworkActivateBlackBar( );
245
- $ ( '#masthead-black-bar .where. hover' ) . removeClass ( 'hover' ) . addClass ( 'hide ') ;
257
+ // reset black bar contenxts when mousing out
258
+ blackBar . addEventListener ( "mouseleave" , function ( event ) {
259
+ console . log ( 'purged' ) ;
260
+ $ ( '#masthead-black-bar .hover' ) . removeClass ( 'hover float-left ' ) ;
246
261
$ ( '#masthead-black-bar .what' ) . removeClass ( 'hide' ) ;
247
- $ ( '#masthead-black-bar .what.mission' ) . addClass ( 'hide' ) ;
248
- $ ( '#masthead-black-bar .what.hover' ) . removeClass ( 'hover' ) ;
249
-
250
- // reset everything on the next mouse into content
251
- $ ( '#content' ) . one ( 'mouseover' , function ( ) {
252
- console . log ( 'purged' ) ;
253
- emblResetContext ( ) ;
254
- } ) ;
255
- }
262
+ $ ( '#masthead-black-bar .where' ) . addClass ( 'hide' ) ;
263
+ ebiFrameworkActivateBlackBar ( ) ;
264
+ } ) ;
256
265
257
266
}
258
267
catch ( err ) { } ;
0 commit comments