function init(options) { config = options.config; map = options.map; plotMarker = options.plotMarker; $fullDetailsButton = options.$fullDetailsButton; var inMyMode = options.inMyMode, // function telling if my mode is active inlineEditForm = options.inlineEditForm, $accordionSection = options.$treeDetailAccordionSection, $buttonGroup = options.$buttonGroup; var clickedIdStream = map.utfEvents .filter(inMyMode) .map('.data.' + config.utfGrid.mapfeatureIdKey); var popupHtmlStream = BU.fetchFromIdStream(clickedIdStream, getPlotPopupContent); var accordionHtmlStream = BU.fetchFromIdStream(clickedIdStream, getPlotAccordionContent, ''); var plotUrlStream = clickedIdStream .map(idToPlotDetailUrl); plotUrlStream.onValue($fullDetailsButton, 'attr', 'href'); plotUrlStream.onValue(inlineEditForm.setUpdateUrl); // Leaflet needs both the content and a coordinate to // show a popup, so zip map clicks together with content // requested via ajax BU.leafletEventStream(map, 'click') .filter(inMyMode) .map('.latlng') .zip(popupHtmlStream, makePopup) // TODO: size is not being sent to makePopup .onValue(showPlotDetailPopup); accordionHtmlStream.onValue(function (html) { var visible = html !== '' && html !== undefined; $accordionSection.collapse(visible ? 'show' : 'hide'); }); accordionHtmlStream.onValue(function (html) { $('#plot-accordion').html(html); }); accordionHtmlStream.onValue(_.bind($buttonGroup.show, $buttonGroup)); var showTreeDetailLink = $accordionSection.parent().find('a'); showTreeDetailLink.on('click', function(event) { if ($('#plot-accordion').html().length === 0) { event.stopPropagation(); } }); // Need to manually wire this here or we wont get the accordion effect $accordionSection.collapse({ parent: $('#map-info'), toggle: false }); $accordionSection.collapse('hide'); }
function init(options) { config = options.config; map = options.map; plotMarker = options.plotMarker; $fullDetailsButton = options.$fullDetailsButton; var inMyMode = options.inMyMode, // function telling if my mode is active inlineEditForm = options.inlineEditForm, $accordionSection = options.$treeDetailAccordionSection, $buttonGroup = options.$buttonGroup; var utfEventStream = map.utfEvents.filter(inMyMode), popupHtmlStream = utfEventStream.flatMap(getPopupContent), clickedIdStream = utfEventStream.map('.data.' + config.utfGrid.mapfeatureIdKey), accordionHtmlStream = BU.fetchFromIdStream(clickedIdStream, getPlotAccordionContent, ''), plotUrlStream = clickedIdStream.map(idToPlotDetailUrl); plotUrlStream.onValue($fullDetailsButton, 'attr', 'href'); plotUrlStream.onValue(inlineEditForm.setUpdateUrl); // Leaflet needs both the content and a coordinate to // show a popup, so zip map clicks together with content // requested via ajax utfEventStream .map('.latlng') .zip(popupHtmlStream, makePopup) .onValue(showPopup); accordionHtmlStream.onValue(function () { $buttonGroup.show(); }); accordionHtmlStream.assign($('#map-feature-accordion'), 'html'); accordionHtmlStream .map(BU.isDefinedNonEmpty) .decode({true: 'show', false: 'hide'}) .onValue(_.bind($accordionSection.collapse, $accordionSection)); var featureTypeStream = accordionHtmlStream.map($) .map('.attr', 'data-map-feature-type'); featureTypeStream .decode({plot: 'visible', resource: 'hidden'}) .assign($('#quick-edit-button'), 'css', 'visibility'); featureTypeStream .decode({plot: config.trans.treeDetails, resource: config.trans.resourceDetails}) .assign($('#accordion-map-feature-detail-tab'), 'html'); var showTreeDetailLink = $accordionSection.parent().find('a'); showTreeDetailLink.on('click', function(event) { if ($('#map-feature-accordion').html().length === 0) { event.stopPropagation(); } }); // Need to manually wire this here or we wont get the accordion effect $accordionSection.collapse({ parent: $('#map-info'), toggle: false }); $accordionSection.collapse('hide'); }