コード例 #1
0
ファイル: browseTreesMode.js プロジェクト: heath/OTM2
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');
}
コード例 #2
0
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');
}