diff --git a/src/c3nav/settings.py b/src/c3nav/settings.py index 2f8ec8a6..4c07cff3 100644 --- a/src/c3nav/settings.py +++ b/src/c3nav/settings.py @@ -66,6 +66,10 @@ PUBLIC_EDITOR = config.getboolean('c3nav', 'editor', fallback=True) PUBLIC_BASE_MAPDATA = config.getboolean('c3nav', 'public_base_mapdata', fallback=False) AUTO_PROCESS_UPDATES = config.getboolean('c3nav', 'auto_process_updates', fallback=True) +RANDOM_LOCATION_GROUPS = config.get('c3nav', 'random_location_groups', fallback=None) +if RANDOM_LOCATION_GROUPS: + RANDOM_LOCATION_GROUPS = tuple(int(i) for i in RANDOM_LOCATION_GROUPS.split(',')) + if config.has_option('django', 'secret'): SECRET_KEY = config.get('django', 'secret') else: diff --git a/src/c3nav/site/static/site/css/c3nav.scss b/src/c3nav/site/static/site/css/c3nav.scss index 58f451b5..5a0b048e 100644 --- a/src/c3nav/site/static/site/css/c3nav.scss +++ b/src/c3nav/site/static/site/css/c3nav.scss @@ -671,7 +671,18 @@ main.show-options #resultswrapper #route-options { font-size: 35px; top: 5px; } -.locationinput:not(.empty) button.locate, .locationinput.empty button.clear { +main:not([data-random-location-groups]) button.random { + display: none; +} +#search button.random { + right: 45px; + color: lighten($color-icon-light, 18%); + &:hover { + color: lighten($color-icon-light, 8%); + } +} +.locationinput:not(.empty) button.locate, .locationinput.empty button.clear, +main[data-view^=route] button.random, .locationinput:not(.empty) button.random { -webkit-transform: scale(0.7); -ms-transform: scale(0.7); transform: scale(0.7); diff --git a/src/c3nav/site/static/site/js/c3nav.js b/src/c3nav/site/static/site/js/c3nav.js index 497dd561..9728d716 100644 --- a/src/c3nav/site/static/site/js/c3nav.js +++ b/src/c3nav/site/static/site/js/c3nav.js @@ -155,6 +155,8 @@ c3nav = { c3nav.ssids = $main.is('[data-ssids]') ? JSON.parse($main.attr('data-ssids')) : null; + c3nav.random_location_groups = $main.is('[data-random-location-groups]') ? $main.attr('data-random-location-groups').split(',').map(id => parseInt(id)) : null; + history.replaceState(state, window.location.path); c3nav.load_state(state, true); c3nav.update_map_locations(); @@ -864,6 +866,7 @@ c3nav = { .on('keydown', c3nav._locationinput_keydown); $('.locationinput .clear').on('click', c3nav._locationinput_clear); $('.locationinput .locate').on('click', c3nav._locationinput_locate); + $('.locationinput .random').on('click', c3nav._random_location_click); $('.leaflet-control-user-location a').on('click', c3nav._goto_user_location_click).dblclick(function(e) { e.stopPropagation(); }); $('#autocomplete').on('mouseover', '.location', c3nav._locationinput_hover_suggestion) .on('click', '.location', c3nav._locationinput_click_suggestion); @@ -1132,6 +1135,66 @@ c3nav = { } }, + _random_location_click: function() { + var $button = $('button.random'), + parent = $button.parent(), + width = parent.width(), + height = parent.height(); + + $cover = $('