diff --git a/src/c3nav/site/static/site/css/c3nav.css b/src/c3nav/site/static/site/css/c3nav.css index fdfa5cc6..2caba568 100644 --- a/src/c3nav/site/static/site/css/c3nav.css +++ b/src/c3nav/site/static/site/css/c3nav.css @@ -446,6 +446,22 @@ main:not([data-view=route-result]) #route-dots { color: #b2b2b2; } +#route-details .details-body > div:not(:last-child) { + border: 0 #dddddd solid; + border-bottom-width: 1px; +} +.routeitem { + padding: 3px 10px 2px 53px; + position: relative; +} +.routeitem .icon { + color: #7C848A; + position: absolute; + top: 4px; + left: 16px; + font-size: 21px; +} + #popup-buttons, #attributions { display: none; } diff --git a/src/c3nav/site/static/site/js/c3nav.js b/src/c3nav/site/static/site/js/c3nav.js index 68f7de31..4276c5a9 100644 --- a/src/c3nav/site/static/site/js/c3nav.js +++ b/src/c3nav/site/static/site/js/c3nav.js @@ -76,11 +76,11 @@ c3nav = { c3nav.init_locationinputs(); - var $location_buttons = $('#location-buttons'); - $location_buttons.find('.details').on('click', c3nav._location_buttons_details_click); - $location_buttons.find('.route').on('click', c3nav._location_buttons_route_click); + $('#location-buttons').find('.route').on('click', c3nav._location_buttons_route_click); - $('#location-buttons, #route-result-buttons').find('.share').on('click', c3nav._buttons_share_click); + var $result_buttons = $('#location-buttons, #route-result-buttons'); + $result_buttons.find('.share').on('click', c3nav._buttons_share_click); + $result_buttons.find('.details').on('click', c3nav._buttons_details_click); $('#route-search-buttons, #route-result-buttons').find('.swap').on('click', c3nav._route_buttons_swap_click); $('#route-search-buttons').find('.close').on('click', c3nav._route_buttons_close_click); $('#map').on('click', '.location-popup .button-clear', c3nav._popup_button_click); @@ -232,10 +232,12 @@ c3nav = { $location_details.removeClass('loading'); }, load_route: function (origin, destination, nofly) { - var $route = $('#route-summary'); + var $route = $('#route-summary'), + $details_wrapper = $('#route-details'); if ($route.attr('data-origin') !== String(origin.id) || $route.attr('data-destination') !== String(destination.id)) { c3nav._clear_route_layers(); $route.addClass('loading').attr('data-origin', origin.id).attr('data-destination', destination.id); + $details_wrapper.addClass('loading'); $.post('/api/routing/route/', { 'origin': origin.id, 'destination': destination.id, @@ -265,15 +267,27 @@ c3nav = { }, _display_route_result: function(result, nofly) { var $route = $('#route-summary'), + $details_wrapper = $('#route-details'), + $details = $details_wrapper.find('.details-body'), first_primary_level = null, last_primary_level = null, level_collect = [], next_level_collect = [], in_intermediate_level = true, - item, coords; + item, coords, description; c3nav._clear_route_layers(); + + $details.html(''); + $details.append(c3nav._build_location_html(result.origin)); + for (var i=0; i < result.items.length; i++) { item = result.items[i]; + + for (var j=0; j < item.descriptions.length; j++) { + description = item.descriptions[j]; + $details.append(c3nav._build_route_item('more_vert', description)); + } + coords = [item.coordinates[0], item.coordinates[1]]; level_collect.push(coords); if (item.level) { @@ -312,12 +326,17 @@ c3nav = { } level_collect = level_collect.slice(-1); } + if (i > 0 && item.space && item.space.title && item.space.id !== result.destination.id) { + $details.append(c3nav._build_route_item('place', item.space.title)); + } } if (last_primary_level) { c3nav._add_line_to_route(last_primary_level, next_level_collect); c3nav._add_line_to_route(last_primary_level, level_collect); } + $details.append(c3nav._build_location_html(result.destination)); + // add origin and destination lines c3nav._add_line_to_route(first_primary_level, c3nav._add_intermediate_point( result.origin.point.slice(1), @@ -333,8 +352,15 @@ c3nav = { c3nav._firstRouteLevel = first_primary_level; $route.find('span').text(String(result.distance)+' m'); $route.removeClass('loading'); + $details_wrapper.removeClass('loading'); + if (!nofly) c3nav.fly_to_bounds(true); }, + _build_route_item: function (icon, text) { + return $('
') + .append($(''+icon+'')) + .append($('').text(text)); + }, _add_intermediate_point: function(origin, destination, next) { var angle = Math.atan2(destination[1]-next[1], destination[0]-next[0]), distance = Math.sqrt(Math.pow(origin[0]-destination[0], 2) + Math.pow(origin[1]-destination[1], 2)), @@ -461,7 +487,7 @@ c3nav = { }, // button handlers - _location_buttons_details_click: function () { + _buttons_details_click: function () { c3nav.update_state(null, null, !c3nav.state.details); }, _location_buttons_route_click: function () { diff --git a/src/c3nav/site/templates/site/map.html b/src/c3nav/site/templates/site/map.html index b9c381ac..a941e9ec 100644 --- a/src/c3nav/site/templates/site/map.html +++ b/src/c3nav/site/templates/site/map.html @@ -97,7 +97,18 @@
-
+
+
+

{% trans 'Details' %}

+
+
+
+ place + CCL Atrium Ebene 0 + Raum, Ebene 0 +
+
+
{% else %}