# main svg object
-svg = d3.select ".inner"
- .append "svg"
- .attr "width", width
- .attr "height", height
+# svg = d3.select '#worldmap'
+# .append "svg"
+# .attr "width", width
+# .attr "height", height
+# .append "g"
+# .attr "transform", "translate(0,0)"
+# .call zoom
+
+map = d3.select '#worldmap'
+ .attr "width", width
+ .attr "height", height
.append "g"
.attr "transform", "translate(0,0)"
.call zoom
+
+
+# path objects
+feature = map.selectAll ".feature"
+
# rectangle
-svg.append "rect"
+map.append "rect"
.attr "class", "frame"
.attr "width", width
.attr "height", height
+
# infobox
-infobox = d3.select ".inner"
- .append "div"
- .attr "id","infobox"
- .style "display","none"
-p = infobox.append "p"
- .text "FABZ"
+infobox = d3.select '#infobox'
+ .style "display","none"
+
+infobox.select '#ball'
+ .append "svg"
+ .attr "width", "100%"
+ .attr "height", "20px"
+ .append "rect"
+ .attr "width", "60%"
+ .attr "height", "20px"
+ .attr "fill", '#f40500'
+
+
+setInfoBox = (d) ->
+ c = d.properties.name
+ ae = 0
+ e5 = 0
+ e100 = 0
+ if root.data[d.properties.name]?
+ ae = parseInt(root.data[d.properties.name]['editors'])
+ e5 = parseInt(root.data[d.properties.name]['editors5'])
+ e100 = parseInt(root.data[d.properties.name]['editors100'])
+
+
+ infobox.select '#country' .text c
+ infobox.select '#ae' .text ae
+ infobox.select '#e5' .text e5+" ("+(100.0*e5/ae).toPrecision(3)+"%)"
+ infobox.select '#e100' .text e100+" ("+(100.0*e100/ae).toPrecision(3)+"%)"
+
+ xy = d3.svg.mouse this
+ infobox.style "left", xy[0]+'px'
+ infobox.style "top", xy[1]+'px'
+ infobox.style "display", "block"
-# path objects
-feature = svg.selectAll ".feature"
worldmap = ->
d3.json do
.enter().append "path"
.attr "class", "feature"
.attr "d", path
- .attr "fill", quantize
- # .attr do
- # "fill"
- # (d) ->
- # fill "rgb(0,0,0)"
- .on do
- "mouseover"
- (d) ->
- if root.data[d.properties.name]?
- p.text d.properties.name+" - All:"+root.data[d.properties.name]['editors']+' 5+:'+root.data[d.properties.name]['editors5']+' 100+:'+root.data[d.properties.name]['editors100']
- # console.log root.data[d.properties.name]['editors']
- else
- p.text d.properties.name+": No edits"
- # console.log 'Country '+d.properties.name+' not in data'
- # xy = path.centroid d
- xy = d3.svg.mouse this
- infobox.style "left", xy[0]+'px'
- infobox.style "top", xy[1]+'px'
- infobox.style "display", "block"
+ .attr "fill", quantize
+ .attr do
+ "id"
+ (d) ->
+ d.properties.name
+ .on "mouseover",setInfoBox
+ # .on do
+ # "mouseover"
+ # (d) ->
+ # if root.data[d.properties.name]?
+
+ # p.text d.properties.name+" - All:"+root.data[d.properties.name]['editors']+' 5+:'+root.data[d.properties.name]['editors5']+' 100+:'+root.data[d.properties.name]['editors100']
+ # # console.log root.data[d.properties.name]['editors']
+ # else
+ # p.text d.properties.name+": No edits"
+ # # console.log 'Country '+d.properties.name+' not in data'
+
+ # # xy = path.centroid d
+ # xy = d3.svg.mouse this
+ # infobox.style "left", xy[0]+'px'
+ # infobox.style "top", xy[1]+'px'
+ # infobox.style "display", "block"
.on do
"mouseout"
(d) ->
# load the world map
worldmap()
+ # adding bootstrap tooltips
+ # $ '.page-header' .tooltip title:"for the header it works but is useless"
+ # $ '.feature' .tooltip title:"here it doesn't work"
+
console.log 'Loaded geo coding map!'
error : (err) -> console.error err