163 lines
5.7 KiB
CoffeeScript
163 lines
5.7 KiB
CoffeeScript
window.handlePopState = (event) ->
|
|
console.log 'handlePopState: %o', event
|
|
if event.state
|
|
return gotoDate event.state.dateFrom, event.state.dateTo, false
|
|
|
|
window.updateDateNav = (_dateFrom, _dateTo) ->
|
|
console.log 'updateDateNav: %o, %o', _dateFrom, _dateTo
|
|
|
|
_dateFrom ?= window.dateFrom
|
|
_dateTo ?= window.dateTo
|
|
|
|
diff = _dateTo.diff _dateFrom, 'days'
|
|
# if(dateTo.isSame(dateFrom)){ diff = diff+1; }
|
|
|
|
window.datePrevTo = moment(_dateFrom).subtract 1, 'days'
|
|
window.datePrevFrom = moment(datePrevTo).subtract diff, 'days'
|
|
|
|
window.dateNextFrom = moment(_dateTo).add 1, 'days'
|
|
window.dateNextTo = moment(dateNextFrom).add diff, 'days'
|
|
|
|
# disable Next button
|
|
if dateNextFrom.isAfter moment()
|
|
$('#nextButton').addClass 'disabled'
|
|
else
|
|
$('#nextButton').removeClass 'disabled'
|
|
|
|
# disable today button
|
|
if _dateFrom.isSame moment(), 'day'
|
|
$('#todayButton').addClass 'disabled'
|
|
$('#livemap_on').removeClass 'disabled'
|
|
else
|
|
$('#todayButton').removeClass 'disabled'
|
|
$('#livemap_on').addClass 'disabled'
|
|
|
|
window.gotoDate = (_dateFrom, _dateTo, pushState) ->
|
|
console.log 'gotoDate: %o, %o, %o', _dateFrom, _dateTo, pushState
|
|
|
|
_dateFrom = if _dateFrom? then moment(_dateFrom) else moment()
|
|
_dateTo = if _dateTo? then moment(_dateTo) else moment()
|
|
pushState = pushState ? true
|
|
|
|
window.dateFrom = _dateFrom
|
|
window.dateTo = _dateTo
|
|
|
|
$('#dateFrom').val moment(window.dateFrom).format('YYYY-MM-DD')
|
|
$('#dateTo').val moment(window.dateTo).format('YYYY-MM-DD')
|
|
|
|
# push selected dates in window.history stack
|
|
if pushState
|
|
data =
|
|
dateFrom: moment(window.dateFrom).format 'YYYY-MM-DD'
|
|
dateTo: moment(window.dateTo).format 'YYYY-MM-DD'
|
|
url = "#{window.location.pathname}?dateFrom=#{data.dateFrom}&dateTo=#{data.dateTo}"
|
|
console.log 'Pushing state: %o with data: %o', url, data
|
|
window.history.pushState data, '', url
|
|
|
|
updateDateNav()
|
|
window.mymap.getMarkers()
|
|
return false
|
|
|
|
window.gotoAccuracy = ->
|
|
console.log 'gotoAccuracy'
|
|
|
|
_accuracy = parseInt $('#accuracy').val()
|
|
|
|
if _accuracy != window.accuracy
|
|
Cookies.set 'accuracy', _accuracy
|
|
console.log 'Accuracy cookie = %o', Cookies.get 'accuracy'
|
|
|
|
# location.href='./?dateFrom='+moment(dateFrom).format('YYYY-MM-DD') + '&dateTo=' + moment(dateTo).format('YYYY-MM-DD') + '&accuracy=' + _accuracy + '&trackerID=' + trackerID;
|
|
window.accuracy = _accuracy
|
|
window.mymap.getMarkers()
|
|
else
|
|
$('#configCollapse').collapse 'hide'
|
|
return false
|
|
|
|
window.changeTrackerID = ->
|
|
console.log 'changeTrackerID'
|
|
|
|
_trackerID = $('#trackerID_selector').val()
|
|
|
|
if _trackerID != window.trackerID
|
|
Cookies.set 'trackerID', _trackerID
|
|
console.log 'changeTrackerID: trackerID cookie = %o', Cookies.get 'trackerID'
|
|
|
|
window.trackerID = _trackerID
|
|
window.mymap.drawMap()
|
|
else
|
|
$('#configCollapse').collapse 'hide'
|
|
return false
|
|
|
|
window.initUI = ->
|
|
console.log 'BEGIN: initUI'
|
|
|
|
_GET = new URLSearchParams window.location.search
|
|
|
|
window.dateFrom = if _GET.has 'dateFrom' then moment _GET.get 'dateFrom' else moment()
|
|
window.dateTo = if _GET.has 'dateTo' then moment _GET.get 'dateTo' else moment()
|
|
$('#dateFrom').val window.dateFrom.format 'YYYY-MM-DD'
|
|
$('#dateTo').val window.dateTo.format 'YYYY-MM-DD'
|
|
|
|
# date params event handlers
|
|
updateDateNav()
|
|
|
|
$('.input-daterange').on 'change', (e) ->
|
|
return gotoDate $('#dateFrom').val(), $('#dateTo').val()
|
|
|
|
# accuracy event handlers
|
|
$('#accuracy').change -> gotoAccuracy()
|
|
$('#accuracySubmit').click -> gotoAccuracy()
|
|
|
|
$('#trackerID_selector').change -> changeTrackerID()
|
|
|
|
$('#configCollapse').on 'show.bs.collapse', (e) ->
|
|
$('#configButton').removeClass('btn-default').addClass('btn-primary').addClass('active')
|
|
$('#configCollapse').on 'hide.bs.collapse', (e) ->
|
|
$('#configButton').addClass('btn-default').removeClass('btn-primary').removeClass('active')
|
|
|
|
# setup history popupstate event handler
|
|
window.onpopstate = window.handlePopState
|
|
|
|
window.showHideMarkers = ->
|
|
console.log 'showHideMarkers'
|
|
# $('#show_markers').change(function() {
|
|
if $('#show_markers').hasClass 'btn-default'
|
|
window.mymap.showMarkers()
|
|
Cookies.set 'show_markers', 1, { expires: 365 }
|
|
window.show_markers = 1
|
|
$('#show_markers').removeClass('btn-default').addClass('btn-primary').addClass('active')
|
|
return true
|
|
else
|
|
window.mymap.hideMarkers()
|
|
Cookies.set 'show_markers', 0, { expires: 365 }
|
|
window.show_markers = 0
|
|
$('#show_markers').removeClass('btn-primary').removeClass('active').addClass('btn-default')
|
|
return true
|
|
|
|
window.resetZoom = ->
|
|
console.log 'resetZoom'
|
|
window.mymap.resetZoom()
|
|
return false
|
|
|
|
window.setLiveMap = ->
|
|
console.log 'setLiveMap'
|
|
if window.mymap.toggleLiveView()
|
|
$('#livemap_on').removeClass('btn-default').addClass('btn-primary').addClass 'active'
|
|
else
|
|
$('#livemap_on').addClass('btn-default').removeClass('btn-primary').removeClass 'active'
|
|
|
|
window.geodecodeMarker = (tid, i) ->
|
|
console.log 'geodecodeMarker: %o, %o', tid, i
|
|
window.mymap.geodecodeMarker tid, i
|
|
|
|
window.deleteMarker = (tid, i) ->
|
|
console.log 'deleteMarker: %o, %o', tid, i
|
|
if confirm "Do you really want to delete this marker for #{tid}?"
|
|
console.log 'deleteMarker: Confirmation given'
|
|
window.mymap.deleteMarker tid, i
|
|
|
|
window.showBoundingBox = (tid, i) ->
|
|
console.log 'showBoundingBox: %o, %o', tid, i
|
|
console.warn 'NOT YET IMPLEMENTED'
|