2014-07-29 17:34:10 +00:00
var Metamaps = { } ; // this variable declaration defines a Javascript object that will contain all the variables and functions used by us, broken down into 'sub-modules' that look something like this
/ *
* unless you are on a page with the Javascript InfoVis Toolkit ( Topic or Map ) the only section in the metamaps
2014-07-30 03:18:43 +00:00
* object will be these
2014-07-29 17:34:10 +00:00
GlobalUI
2014-07-30 03:18:43 +00:00
Active
Maps
Mappers
Backbone
2014-07-29 17:34:10 +00:00
* all these get added when you are on a page with the Javascript Infovis Toolkit
Settings
Touch
Mouse
Selected
Metacodes
Topics
Synapses
Mappings
Create
TopicCard
SynapseCard
Visualize
Util
Realtime
Control
Filter
Listeners
Organize
Map
Mapper
2014-07-30 03:18:43 +00:00
Topic
Synapse
2014-07-29 17:34:10 +00:00
JIT
* /
2014-07-30 03:18:43 +00:00
Metamaps . Active = {
Map : null ,
Topic : null ,
Mapper : null
} ;
2014-08-10 17:06:58 +00:00
Metamaps . Maps = { } ;
2014-07-29 17:34:10 +00:00
$ ( document ) . ready ( function ( ) {
for ( var prop in Metamaps ) {
2014-07-30 03:18:43 +00:00
2014-07-29 17:34:10 +00:00
// this runs the init function within each sub-object on the Metamaps one
if ( Metamaps . hasOwnProperty ( prop ) &&
Metamaps [ prop ] . hasOwnProperty ( 'init' ) &&
typeof ( Metamaps [ prop ] . init ) == 'function'
) {
Metamaps [ prop ] . init ( ) ;
}
}
} ) ;
Metamaps . GlobalUI = {
notifyTimeout : null ,
2014-07-30 03:18:43 +00:00
lightbox : null ,
2014-07-29 17:34:10 +00:00
init : function ( ) {
var self = Metamaps . GlobalUI ;
self . Search . init ( ) ;
self . CreateMap . init ( ) ;
self . Account . init ( ) ;
//bind lightbox clicks
$ ( '.openLightbox' ) . click ( function ( event ) {
self . openLightbox ( $ ( this ) . attr ( 'data-open' ) ) ;
event . preventDefault ( ) ;
return false ;
} ) ;
2014-07-30 05:02:47 +00:00
$ ( '#lightbox_screen, #lightbox_close' ) . click ( self . closeLightbox ) ;
2014-07-31 01:10:10 +00:00
// initialize global backbone models and collections
2014-08-06 14:09:01 +00:00
if ( Metamaps . Active . Mapper ) Metamaps . Active . Mapper = new Metamaps . Backbone . Mapper ( Metamaps . Active . Mapper ) ;
2014-08-10 17:06:58 +00:00
Metamaps . Mappers = new Metamaps . Backbone . MapperCollection ( [ Metamaps . Active . Mapper ] ) ;
var myCollection = Metamaps . Maps . Mine ? Metamaps . Maps . Mine : [ ] ;
var featuredCollection = Metamaps . Maps . Featured ? Metamaps . Maps . Featured : [ ] ;
var activeCollection = Metamaps . Maps . Active ? Metamaps . Maps . Active : [ ] ;
2014-08-20 19:37:18 +00:00
Metamaps . Maps . Mine = new Metamaps . Backbone . MapsCollection ( myCollection , { id : 'mine' , sortBy : 'name' } ) ;
Metamaps . Maps . Featured = new Metamaps . Backbone . MapsCollection ( featuredCollection , { id : 'featured' , sortBy : 'name' } ) ;
Metamaps . Maps . Active = new Metamaps . Backbone . MapsCollection ( activeCollection , { id : 'active' , sortBy : 'updated_at' } ) ;
2014-07-29 17:34:10 +00:00
} ,
openLightbox : function ( which ) {
2014-07-30 03:18:43 +00:00
var self = Metamaps . GlobalUI ;
2014-07-29 17:34:10 +00:00
$ ( '.lightboxContent' ) . hide ( ) ;
$ ( '#' + which ) . show ( ) ;
2014-07-30 03:18:43 +00:00
self . lightbox = which ;
2014-07-29 17:34:10 +00:00
$ ( '#lightbox_overlay' ) . show ( ) ;
2014-07-31 01:10:10 +00:00
var heightOfContent = '-' + ( $ ( '#lightbox_main' ) . height ( ) / 2 ) + 'px' ;
// animate the content in from the bottom
$ ( '#lightbox_main' ) . animate ( {
'top' : '50%' ,
'margin-top' : heightOfContent
} , 200 , 'easeOutCubic' ) ;
// fade the black overlay in
$ ( '#lightbox_screen' ) . animate ( {
'opacity' : '0.42'
} , 200 ) ;
2014-07-29 17:34:10 +00:00
if ( Metamaps . Create && ! Metamaps . Create . metacodeScrollerInit ) {
$ ( '.customMetacodeList, .metacodeSetList' ) . mCustomScrollbar ( {
mouseWheelPixels : 200 ,
advanced : {
updateOnContentResize : true
}
} ) ;
Metamaps . Create . metacodeScrollerInit = true ;
}
if ( which == "switchMetacodes" ) {
Metamaps . Create . isSwitchingSet = true ;
}
} ,
2014-07-30 05:02:47 +00:00
closeLightbox : function ( event ) {
2014-07-30 03:18:43 +00:00
var self = Metamaps . GlobalUI ;
2014-07-30 05:02:47 +00:00
if ( event ) event . preventDefault ( ) ;
2014-07-31 01:10:10 +00:00
// animate the lightbox content offscreen
$ ( '#lightbox_main' ) . animate ( {
'top' : '100%' ,
'margin-top' : '0'
} , 200 , 'easeInCubic' ) ;
// fade the black overlay out
$ ( '#lightbox_screen' ) . animate ( {
'opacity' : '0.0'
} , 200 , function ( ) {
$ ( '#lightbox_overlay' ) . hide ( ) ;
} ) ;
2014-07-30 03:18:43 +00:00
if ( self . lightbox === 'forkmap' ) Metamaps . GlobalUI . CreateMap . reset ( 'fork_map' ) ;
if ( self . lightbox === 'newmap' ) Metamaps . GlobalUI . CreateMap . reset ( 'new_map' ) ;
2014-07-29 17:34:10 +00:00
if ( Metamaps . Create && Metamaps . Create . isSwitchingSet ) {
Metamaps . Create . cancelMetacodeSetSwitch ( ) ;
}
2014-07-30 03:18:43 +00:00
self . lightbox = null ;
2014-07-29 17:34:10 +00:00
} ,
2014-08-10 17:06:58 +00:00
notifyUser : function ( message , leaveOpen ) {
2014-07-29 17:34:10 +00:00
var self = Metamaps . GlobalUI ;
2014-07-30 03:18:43 +00:00
2014-08-10 17:06:58 +00:00
Metamaps . Famous . toast . surf . setContent ( message ) ;
Metamaps . Famous . toast . show ( ) ;
clearTimeout ( self . notifyTimeOut ) ;
if ( ! leaveOpen ) {
self . notifyTimeOut = setTimeout ( function ( ) {
Metamaps . Famous . toast . hide ( ) ;
} , 8000 ) ;
2014-07-29 17:34:10 +00:00
}
2014-08-10 17:06:58 +00:00
} ,
clearNotify : function ( ) {
var self = Metamaps . GlobalUI ;
2014-07-29 17:34:10 +00:00
clearTimeout ( self . notifyTimeOut ) ;
2014-08-10 17:06:58 +00:00
Metamaps . Famous . toast . hide ( ) ;
2014-07-29 17:34:10 +00:00
}
} ;
Metamaps . GlobalUI . CreateMap = {
2014-07-30 03:18:43 +00:00
newMap : null ,
emptyMapForm : "" ,
emptyForkMapForm : "" ,
topicsToMap : [ ] ,
synapsesToMap : [ ] ,
2014-07-29 17:34:10 +00:00
init : function ( ) {
2014-07-30 03:18:43 +00:00
var self = Metamaps . GlobalUI . CreateMap ;
self . newMap = new Metamaps . Backbone . Map ( { permission : 'commons' } ) ;
self . bindFormEvents ( ) ;
self . emptyMapForm = $ ( '#new_map' ) . html ( ) ;
} ,
bindFormEvents : function ( ) {
var self = Metamaps . GlobalUI . CreateMap ;
2014-07-29 17:34:10 +00:00
2014-07-30 03:18:43 +00:00
$ ( '.new_map button.cancel' ) . unbind ( ) . bind ( 'click' , function ( event ) {
event . preventDefault ( ) ;
Metamaps . GlobalUI . closeLightbox ( ) ;
2014-07-29 17:34:10 +00:00
} ) ;
2014-07-30 03:18:43 +00:00
$ ( '.new_map button.submitMap' ) . unbind ( ) . bind ( 'click' , self . submit ) ;
2014-07-29 17:34:10 +00:00
2014-07-30 03:18:43 +00:00
// bind permission changer events on the createMap form
$ ( '.permIcon' ) . unbind ( ) . bind ( 'click' , self . switchPermission ) ;
2014-07-29 17:34:10 +00:00
} ,
2014-07-30 03:18:43 +00:00
generateSuccessMessage : function ( id ) {
var stringStart = "Success! Do you want to <br> <a href='/maps/" ;
stringStart += id ;
stringStart += "'>Go to your new map?</a>" ;
stringStart += "<br>or<br><a href='#' onclick='Metamaps.GlobalUI.closeLightbox(); return false;'>Stay on this " ;
var page = Metamaps . Active . Map ? 'map' : 'page' ;
var stringEnd = "?</a>" ;
return stringStart + page + stringEnd ;
} ,
switchPermission : function ( ) {
var self = Metamaps . GlobalUI . CreateMap ;
self . newMap . set ( 'permission' , $ ( this ) . attr ( 'data-permission' ) ) ;
$ ( this ) . siblings ( '.permIcon' ) . find ( '.mapPermIcon' ) . removeClass ( 'selected' ) ;
$ ( this ) . find ( '.mapPermIcon' ) . addClass ( 'selected' ) ;
} ,
submit : function ( event ) {
event . preventDefault ( ) ;
var self = Metamaps . GlobalUI . CreateMap ;
2014-07-29 17:34:10 +00:00
2014-07-30 03:18:43 +00:00
if ( Metamaps . GlobalUI . lightbox === 'forkmap' ) {
self . newMap . set ( 'topicsToMap' , self . topicsToMap ) ;
self . newMap . set ( 'synapsesToMap' , self . synapsesToMap ) ;
}
var formId = Metamaps . GlobalUI . lightbox === 'forkmap' ? '#fork_map' : '#new_map' ;
2014-08-10 20:52:49 +00:00
var form = $ ( formId )
2014-07-29 17:34:10 +00:00
2014-07-30 03:18:43 +00:00
self . newMap . set ( 'name' , form . find ( '#map_name' ) . val ( ) ) ;
self . newMap . set ( 'desc' , form . find ( '#map_desc' ) . val ( ) ) ;
2014-07-29 17:34:10 +00:00
2014-07-30 03:18:43 +00:00
// TODO validate map attributes
2014-08-10 20:52:49 +00:00
if ( self . newMap . get ( 'name' ) . length === 0 ) {
console . log ( 'Empty map name.' ) ;
Metamaps . GlobalUI . notifyUser ( 'map name is mandatory.' ) ;
return ;
} else if ( self . newMap . get ( 'name' ) . length > 140 ) {
console . log ( 'map name cannot exceed 140 characteres.' ) ;
Metamaps . GlobalUI . notifyUser ( 'map name cannot exceed 140 characteres.' ) ;
return ;
}
//console.log('self.newMap.get("name").length='+self.newMap.get("name").length.toString());
2014-07-30 03:18:43 +00:00
self . newMap . save ( null , {
success : self . success
// TODO add error message
} ) ;
if ( Metamaps . GlobalUI . lightbox === 'forkmap' ) {
form . html ( 'Working...' ) ;
2014-07-29 17:34:10 +00:00
}
2014-07-30 03:18:43 +00:00
} ,
success : function ( model ) {
var self = Metamaps . GlobalUI . CreateMap ;
var formId = Metamaps . GlobalUI . lightbox === 'forkmap' ? '#fork_map' : '#new_map' ;
var form = $ ( formId ) ;
form . html ( self . generateSuccessMessage ( model . id ) ) ;
$ ( '#lightbox_main' ) . css ( 'margin-top' , '-' + ( $ ( '#lightbox_main' ) . height ( ) / 2 ) + 'px' ) ;
} ,
reset : function ( id ) {
var self = Metamaps . GlobalUI . CreateMap ;
2014-07-29 17:34:10 +00:00
2014-07-30 03:18:43 +00:00
var form = $ ( '#' + id ) ;
if ( id === "fork_map" ) {
self . topicsToMap = [ ] ;
self . synapsesToMap = [ ] ;
form . html ( self . emptyForkMapForm ) ;
}
else {
form . html ( self . emptyMapForm ) ;
}
self . bindFormEvents ( ) ;
self . newMap = new Metamaps . Backbone . Map ( { permission : 'commons' } ) ;
2014-07-29 17:34:10 +00:00
return false ;
} ,
} ;
Metamaps . GlobalUI . Account = {
isOpen : false ,
changing : false ,
init : function ( ) {
var self = Metamaps . GlobalUI . Account ;
2014-08-15 22:04:22 +00:00
$ ( '.sidebarAccountIcon' ) . click ( self . toggleBox ) ;
$ ( '.sidebarAccountBox' ) . click ( function ( event ) {
event . stopPropagation ( ) ;
} ) ;
$ ( 'body' ) . click ( self . close ) ;
} ,
toggleBox : function ( event ) {
var self = Metamaps . GlobalUI . Account ;
if ( self . isOpen ) self . close ( ) ;
else self . open ( ) ;
event . stopPropagation ( ) ;
2014-07-29 17:34:10 +00:00
} ,
open : function ( ) {
var self = Metamaps . GlobalUI . Account ;
2014-08-15 22:04:22 +00:00
Metamaps . Realtime . close ( ) ;
Metamaps . Filter . close ( ) ;
2014-08-10 17:06:58 +00:00
2014-07-29 17:34:10 +00:00
if ( ! self . isOpen && ! self . changing ) {
self . changing = true ;
$ ( '.sidebarAccountBox' ) . fadeIn ( 200 , function ( ) {
self . changing = false ;
self . isOpen = true ;
2014-08-27 02:51:50 +00:00
$ ( '.sidebarAccountBox #user_email' ) . focus ( ) ;
2014-07-29 17:34:10 +00:00
} ) ;
}
} ,
2014-08-15 22:04:22 +00:00
close : function ( ) {
2014-07-29 17:34:10 +00:00
var self = Metamaps . GlobalUI . Account ;
2014-08-15 22:04:22 +00:00
if ( ! self . changing ) {
self . changing = true ;
2014-08-27 02:51:50 +00:00
$ ( '.sidebarAccountBox #user_email' ) . blur ( ) ;
2014-08-15 22:04:22 +00:00
$ ( '.sidebarAccountBox' ) . fadeOut ( 200 , function ( ) {
self . changing = false ;
self . isOpen = false ;
} ) ;
}
2014-07-29 17:34:10 +00:00
}
} ;
Metamaps . GlobalUI . Search = {
2014-08-10 17:06:58 +00:00
locked : false ,
2014-07-29 17:34:10 +00:00
isOpen : false ,
timeOut : null ,
changing : false ,
optionsInitialized : false ,
init : function ( ) {
var self = Metamaps . GlobalUI . Search ;
// bind the hover events
$ ( ".sidebarSearch" ) . hover ( function ( ) {
self . open ( )
} , function ( ) {
self . close ( 800 , false )
} ) ;
$ ( '.sidebarSearchIcon' ) . click ( function ( e ) {
$ ( '.sidebarSearchField' ) . focus ( ) ;
} ) ;
$ ( '.sidebarSearch' ) . click ( function ( e ) {
e . stopPropagation ( ) ;
} ) ;
$ ( 'body' ) . click ( function ( e ) {
self . close ( 0 , false ) ;
} ) ;
// open if the search is closed and user hits ctrl+/
// close if they hit ESC
$ ( 'body' ) . bind ( 'keydown' , function ( e ) {
switch ( e . which ) {
case 191 :
2014-08-10 17:06:58 +00:00
if ( ( e . ctrlKey && ! self . isOpen ) || ( e . ctrlKey && self . locked ) ) {
2014-07-29 17:34:10 +00:00
self . open ( ) ;
}
break ;
case 27 :
if ( self . isOpen ) {
self . close ( 0 , true ) ;
}
break ;
default :
break ; //console.log(e.which);
}
} ) ;
2014-07-30 03:18:43 +00:00
2014-07-29 17:34:10 +00:00
self . startTypeahead ( ) ;
} ,
2014-08-10 17:06:58 +00:00
lock : function ( ) {
var self = Metamaps . GlobalUI . Search ;
self . locked = true ;
} ,
unlock : function ( ) {
var self = Metamaps . GlobalUI . Search ;
self . locked = false ;
} ,
2014-07-29 17:34:10 +00:00
open : function ( ) {
var self = Metamaps . GlobalUI . Search ;
clearTimeout ( self . timeOut ) ;
2014-08-10 17:06:58 +00:00
if ( ! self . isOpen && ! self . changing && ! self . locked ) {
2014-07-29 17:34:10 +00:00
self . changing = true ;
$ ( '.sidebarSearch .twitter-typeahead, .sidebarSearch .tt-hint, .sidebarSearchField' ) . animate ( {
2014-08-10 17:06:58 +00:00
width : '400px'
} , 300 , function ( ) {
2014-07-29 17:34:10 +00:00
$ ( '.sidebarSearchField, .sidebarSearch .tt-hint' ) . css ( {
2014-08-27 02:51:50 +00:00
padding : '7px 10px 3px 10px' ,
2014-08-10 17:06:58 +00:00
width : '380px'
2014-07-29 17:34:10 +00:00
} ) ;
$ ( '.sidebarSearchField' ) . focus ( ) ;
self . changing = false ;
self . isOpen = true ;
} ) ;
}
2014-08-10 17:06:58 +00:00
else if ( self . locked ) $ ( '.sidebarSearchField' ) . focus ( ) ;
2014-07-29 17:34:10 +00:00
} ,
close : function ( closeAfter , bypass ) {
var self = Metamaps . GlobalUI . Search ;
self . timeOut = setTimeout ( function ( ) {
2014-08-10 17:06:58 +00:00
if ( ! self . locked && ! self . changing && self . isOpen && ( bypass || $ ( '.sidebarSearchField' ) . val ( ) == '' ) ) {
2014-07-29 17:34:10 +00:00
self . changing = true ;
$ ( '.sidebarSearchField, .sidebarSearch .tt-hint' ) . css ( {
2014-08-27 02:51:50 +00:00
padding : '7px 0 3px 0' ,
2014-08-10 17:06:58 +00:00
width : '400px'
2014-07-29 17:34:10 +00:00
} ) ;
$ ( '.sidebarSearch .twitter-typeahead, .sidebarSearch .tt-hint, .sidebarSearchField' ) . animate ( {
width : '0'
2014-08-10 17:06:58 +00:00
} , 300 , function ( ) {
2014-07-29 17:34:10 +00:00
$ ( '.sidebarSearchField' ) . typeahead ( 'setQuery' , '' ) ;
$ ( '.sidebarSearchField' ) . blur ( ) ;
self . changing = false ;
self . isOpen = false ;
} ) ;
}
} , closeAfter ) ;
2014-08-10 17:06:58 +00:00
if ( self . locked ) {
$ ( '.sidebarSearchField' ) . typeahead ( 'setQuery' , '' ) ;
$ ( '.sidebarSearchField' ) . blur ( ) ;
}
2014-07-29 17:34:10 +00:00
} ,
startTypeahead : function ( ) {
var self = Metamaps . GlobalUI . Search ;
2014-07-31 01:10:10 +00:00
var mapheader = Metamaps . Active . Mapper ? '<h3 class="search-header">Maps</h3><input type="checkbox" class="limitToMe" id="limitMapsToMe"></input><label for="limitMapsToMe" class="limitToMeLabel">added by me</label><div class="minimizeResults minimizeMapResults"></div><div class="clearfloat"></div>' : '<h3 class="search-header">Maps</h3><div class="minimizeResults minimizeMapResults"></div><div class="clearfloat"></div>' ;
var topicheader = Metamaps . Active . Mapper ? '<h3 class="search-header">Topics</h3><input type="checkbox" class="limitToMe" id="limitTopicsToMe"></input><label for="limitTopicsToMe" class="limitToMeLabel">added by me</label><div class="minimizeResults minimizeTopicResults"></div><div class="clearfloat"></div>' : '<h3 class="search-header">Topics</h3><div class="minimizeResults minimizeTopicResults"></div><div class="clearfloat"></div>' ;
2014-07-29 17:34:10 +00:00
var mapperheader = '<h3 class="search-header">Mappers</h3><div class="minimizeResults minimizeMapperResults"></div><div class="clearfloat"></div>' ;
var topics = {
name : 'topics' ,
limit : 9999 ,
dupChecker : function ( datum1 , datum2 ) {
return false ;
} ,
template : $ ( '#topicSearchTemplate' ) . html ( ) ,
remote : {
url : '/search/topics?term=%QUERY' ,
replace : function ( ) {
var q = '/search/topics?term=' + $ ( '.sidebarSearchField' ) . val ( ) ;
2014-07-31 01:10:10 +00:00
if ( Metamaps . Active . Mapper && $ ( "#limitTopicsToMe" ) . is ( ':checked' ) ) {
q += "&user=" + Metamaps . Active . Mapper . id . toString ( ) ;
2014-07-29 17:34:10 +00:00
}
return q ;
} ,
filter : function ( dataset ) {
if ( dataset . length == 0 ) {
dataset . push ( {
value : "No results" ,
label : "No results" ,
typeImageURL : "/assets/icons/wildcard.png" ,
rtype : "noresult"
} ) ;
}
return dataset ;
}
} ,
engine : Hogan ,
header : topicheader
} ;
var maps = {
name : 'maps' ,
limit : 9999 ,
dupChecker : function ( datum1 , datum2 ) {
return false ;
} ,
template : $ ( '#mapSearchTemplate' ) . html ( ) ,
remote : {
url : '/search/maps?term=%QUERY' ,
replace : function ( ) {
var q = '/search/maps?term=' + $ ( '.sidebarSearchField' ) . val ( ) ;
2014-07-31 01:10:10 +00:00
if ( Metamaps . Active . Mapper && $ ( "#limitMapsToMe" ) . is ( ':checked' ) ) {
q += "&user=" + Metamaps . Active . Mapper . id . toString ( ) ;
2014-07-29 17:34:10 +00:00
}
return q ;
} ,
filter : function ( dataset ) {
if ( dataset . length == 0 ) {
dataset . push ( {
value : "No results" ,
label : "No results" ,
rtype : "noresult"
} ) ;
}
return dataset ;
}
} ,
engine : Hogan ,
header : mapheader
} ;
var mappers = {
name : 'mappers' ,
limit : 9999 ,
dupChecker : function ( datum1 , datum2 ) {
return false ;
} ,
template : $ ( '#mapperSearchTemplate' ) . html ( ) ,
remote : {
url : '/search/mappers?term=%QUERY' ,
filter : function ( dataset ) {
if ( dataset . length == 0 ) {
dataset . push ( {
value : "No results" ,
label : "No results" ,
rtype : "noresult"
} ) ;
}
return dataset ;
}
} ,
engine : Hogan ,
header : mapperheader
} ;
$ ( '.sidebarSearchField' ) . typeahead ( [ topics , maps , mappers ] ) ;
//Set max height of the search results box to prevent it from covering bottom left footer
$ ( '.sidebarSearchField' ) . bind ( 'typeahead:opened' , function ( event ) {
var h = $ ( window ) . height ( ) ;
$ ( ".tt-dropdown-menu" ) . css ( 'max-height' , h - 100 ) ;
} ) ;
$ ( window ) . resize ( function ( ) {
var h = $ ( window ) . height ( ) ;
$ ( ".tt-dropdown-menu" ) . css ( 'max-height' , h - 100 ) ;
} ) ;
// tell the autocomplete to launch a new tab with the topic, map, or mapper you clicked on
$ ( '.sidebarSearchField' ) . bind ( 'typeahead:selected' , self . handleResultClick ) ;
// don't do it, if they clicked on a 'addToMap' button
$ ( '.sidebarSearch button.addToMap' ) . click ( function ( event ) {
event . stopPropagation ( ) ;
} ) ;
// make sure that when you click on 'limit to me' or 'toggle section' it works
$ ( '.sidebarSearchField' ) . bind ( 'keyup' , self . initSearchOptions ) ;
} ,
handleResultClick : function ( event , datum , dataset ) {
var self = Metamaps . GlobalUI . Search ;
if ( datum . rtype != "noresult" ) {
self . close ( 0 , true ) ;
var win ;
if ( dataset == "topics" ) {
2014-08-11 22:57:34 +00:00
Metamaps . Router . topics ( datum . id ) ;
2014-07-29 17:34:10 +00:00
} else if ( dataset == "maps" ) {
2014-08-11 16:04:06 +00:00
Metamaps . Router . maps ( datum . id ) ;
2014-07-29 17:34:10 +00:00
} else if ( dataset == "mappers" ) {
win = window . open ( '/maps/mappers/' + datum . id , '_blank' ) ;
2014-08-11 16:04:06 +00:00
win . focus ( ) ;
2014-07-29 17:34:10 +00:00
}
}
} ,
initSearchOptions : function ( ) {
var self = Metamaps . GlobalUI . Search ;
function toggleResultSet ( set ) {
var s = $ ( '.tt-dataset-' + set + ' .tt-suggestions' ) ;
if ( s . css ( 'height' ) == '0px' ) {
s . css ( {
'height' : 'auto' ,
'border-top' : 'none' ,
'overflow' : 'visible'
} ) ;
$ ( this ) . removeClass ( 'maximizeResults' ) . addClass ( 'minimizeResults' ) ;
} else {
s . css ( {
'height' : '0' ,
'border-top' : '1px solid rgb(56, 56, 56)' ,
'overflow' : 'hidden'
} ) ;
$ ( this ) . removeClass ( 'minimizeResults' ) . addClass ( 'maximizeResults' ) ;
}
}
if ( ! self . optionsInitialized ) {
$ ( '.limitToMe' ) . bind ( "change" , function ( e ) {
// set the value of the search equal to itself to retrigger the autocomplete event
self . isOpen = false ;
$ ( '.sidebarSearchField' ) . typeahead ( 'setQuery' , $ ( '.sidebarSearchField' ) . val ( ) ) ;
setTimeout ( function ( ) {
self . isOpen = true ;
} , 2000 ) ;
} ) ;
// when the user clicks minimize section, hide the results for that section
$ ( '.minimizeMapperResults' ) . click ( function ( e ) {
toggleResultSet . call ( this , 'mappers' ) ;
} ) ;
$ ( '.minimizeTopicResults' ) . click ( function ( e ) {
toggleResultSet . call ( this , 'topics' ) ;
} ) ;
$ ( '.minimizeMapResults' ) . click ( function ( e ) {
toggleResultSet . call ( this , 'maps' ) ;
} ) ;
self . optionsInitialized = true ;
}
}
} ;