summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--assets/mapper.js50
1 files changed, 46 insertions, 4 deletions
diff --git a/assets/mapper.js b/assets/mapper.js
index 2fc373d..ccd4f38 100644
--- a/assets/mapper.js
+++ b/assets/mapper.js
@@ -7,7 +7,7 @@
// We don't have working GeoJSON support yet
USE_GEOJSON = false
-VERSION = '0.0.1'
+VERSION = '0.0.3'
// Subset of Dewey Maps' Deck
// See https://lite.framacalc.org/XNQBPjpQuO
@@ -189,7 +189,7 @@ function navSetup() {
} else {
showActiveCategoryMarkers(c.id)
}
- $(this).toggleClass('active')
+ $(this).toggleClass('active')
})
.append(listSections(c.subcategories))
ul.append(li)
@@ -215,6 +215,7 @@ function listSections(sections) {
.removeClass('pending')
.toggleClass('active')
toggleMarkers(sec_id)
+ removeSectionSelectionIfEmpty(s)
return false
})
ul.append(li)
@@ -239,23 +240,47 @@ function toggleMarkers(sec_id) {
**/
function toggleAllSections(cat_id, active) {
console.log('toggleAllSections(' + cat_id + ', ' + active + ')')
- categorySections(cat_id).forEach(function(s) {
+ var csec = categorySections(cat_id)
+ var cseclen = csec.length
+ var i = 0
+ csec.forEach(function(s) {
var section = $('#s-' + s.id)
+ sectionOffMap(s.id)
if (active) {
sectionOnMap(s.id)
section.addClass('active')
} else {
sectionOffMap(s.id)
section.removeClass('active')
+ i++
}
})
+ // Remove the .selected on category if all sections are unchecked
+ if (i == cseclen) {
+ uncheckCategoryToggler(cat_id)
+ }
}
function categorySections(cat_id) {
return Categories.find(function(c) { return c.id == cat_id }).subcategories
}
-
+function uncheckCategoryToggler(cat_id) {
+ $('#c-' + cat_id + ' h3 span').removeClass('selected')
+}
+
+function removeSectionSelectionIfEmpty(s) {
+ var sc = sectionCategory(s)
+ if ($('#c-' + sc.id + '.active li.active').length == 0) {
+ uncheckCategoryToggler(sc.id)
+ }
+}
+
+function sectionCategory(s) {
+ var c = Categories.find(function(c) { return (c.subcategories.includes(s)) })
+ console.log(c)
+ return c
+}
/**
* Retrieve markers for given section from the JSON API
@@ -306,6 +331,7 @@ function toGeoJSON(data) {
}
}
+
/**
* Hide markers in all sections for given category
*
@@ -362,6 +388,10 @@ function sectionOnMap(sec_id) {
markers.push(layer)
})
}
+ /* Remove any existing layer, replacing with the new one (refs #4) */
+ if (!$.isEmptyObject(SectionLayers[sec_id])) {
+ map.removeLayer(SectionLayers[sec_id])
+ }
SectionLayers[sec_id] = L.featureGroup.subGroup(mcg, markers)
// mcg.addTo(map)
SectionLayers[sec_id].addTo(map)
@@ -378,6 +408,8 @@ function sectionOffMap(sec_id) {
// console.log('sectionOffMap(' + sec_id + ')')
map.removeLayer(SectionLayers[sec_id])
section.removeClass('on-map')
+ } else {
+ console.log("section " + sec_id + " is not .on-map")
}
}
@@ -433,9 +465,19 @@ function selected_sections() {
$('.on-map').each(function() {
s.push($(this).attr('id').split('s-')[1]);
});
+ console.log("selected sections: " + s)
return s;
}
+function categoryHasSectionsOnMap(cat_id) {
+ var s = selected_sections()
+ s.forEach(function(s) {
+ console.log(s)
+
+ })
+
+}
+
function current_state() {
var c = map.getCenter();
var z = map.getZoom();