1
0

Get rid of momentjs for the silly calculations we do.

This commit is contained in:
2018-05-06 03:51:52 +02:00
parent ddc1bd7c0a
commit b21ff45649
5 changed files with 53 additions and 33 deletions

View File

@ -3,29 +3,52 @@ window.handlePopState = (event) ->
if event.state
return gotoDate event.state.dateFrom, event.state.dateTo, false
window.goPrevious = ->
window.gotoDate window.datePrevFrom, window.datePrevTo
window.goNext = ->
window.gotoDate window.dateNextFrom, window.dateNextTo
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()
# Prepare for calculations
objFrom = new Date _dateFrom
objTo = new Date _dateTo
span = objTo.getTime() - objFrom.getTime() # milliseconds
console.log 'Current range: %o - %o (%o)', _dateFrom, _dateTo, span
objPrevTo = new Date objFrom.getTime()
objPrevTo.setDate objPrevTo.getDate() - 1 # get day before current "dateFrom"
objPrevFrom = new Date objPrevTo.getTime() - span # calculate span
window.datePrevFrom = objPrevFrom.toISOString()[...10]
window.datePrevTo = objPrevTo.toISOString()[...10]
console.log 'PREV button will go to: %o - %o', window.datePrevFrom, window.datePrevTo
objNextFrom = new Date objTo.getTime()
objNextFrom.setDate objNextFrom.getDate() + 1 # get day after current "dateTo"
objNextTo = new Date objNextFrom.getTime() + span # calculate span
window.dateNextFrom = objNextFrom.toISOString()[...10]
window.dateNextTo = objNextTo.toISOString()[...10]
console.log 'NEXT button will go to: %o - %o', window.dateNextFrom, window.dateNextTo
# disable Next button if we'd end up in the future
if objNextFrom > new Date()
$('#nextButton').addClass 'disabled'
else
$('#nextButton').removeClass 'disabled'
# disable today button
if _dateFrom.isSame moment(), 'day'
# disable today button if dateFrom isn't today
if _dateFrom is new Date().toISOString()[...10]
$('#todayButton').addClass 'disabled'
$('#livemap_on').removeClass 'disabled'
else
@ -35,21 +58,22 @@ window.updateDateNav = (_dateFrom, _dateTo) ->
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()
today = new Date().toISOString()[...10]
_dateFrom = _dateFrom ? today
_dateTo = _dateTo ? today
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')
$('#dateFrom').val window.dateFrom
$('#dateTo').val window.dateTo
# 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'
dateFrom: window.dateFrom
dateTo: window.dateTo
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
@ -67,7 +91,6 @@ window.gotoAccuracy = ->
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
@ -94,10 +117,11 @@ window.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'
today = new Date().toISOString()[...10]
window.dateFrom = if _GET.has 'dateFrom' then _GET.get 'dateFrom' else today
window.dateTo = if _GET.has 'dateTo' then _GET.get 'dateTo' else today
$('#dateFrom').val window.dateFrom
$('#dateTo').val window.dateTo
# date params event handlers
updateDateNav()

View File

@ -90,8 +90,8 @@ class window.OwnMap
console.log 'getMarkers'
params =
'action': 'getMarkers'
'dateFrom': window.dateFrom.format 'YYYY-MM-DD'
'dateTo': window.dateTo.format 'YYYY-MM-DD'
'dateFrom': window.dateFrom
'dateTo': window.dateTo
'accuracy': window.accuracy
#'trackerID' : trackerID
#'epoc': time()

View File

@ -22,8 +22,7 @@
"js-cookie": "^2.2.0",
"leaflet": "^1.3.1",
"leaflet-hotline": "https://github.com/iosphere/Leaflet.hotline.git#v0.4.0",
"leaflet-awesome-markers": "^2.0.2",
"moment": "^2.22.1"
"leaflet-awesome-markers": "^2.0.2"
},
"ignore": [
"**/.*",

View File

@ -19,7 +19,7 @@
<div class="container">
<div class="row page-header">
<div class="col-1 text-left">
<a href="#" onclick="gotoDate(datePrevFrom, datePrevTo);" class="btn btn-primary" role="button">
<a href="#" onclick="goPrevious();" class="btn btn-primary" role="button">
<span class="d-none d-sm-block">Previous</span>
<span class="d-block d-sm-none"><span class="fas fa-arrow-left"></span></span>
</a>
@ -45,7 +45,7 @@
<span class="d-none d-sm-block">Today</span>
<span class="d-block d-sm-none"><span class="fas fa-arrow-up"></span></span>
</a>
<a href="#" onclick="gotoDate(dateNextFrom, dateNextTo);" class="btn btn-primary" style="display: inline-block;" id="nextButton">
<a href="#" onclick="goNext();" class="btn btn-primary" style="display: inline-block;" id="nextButton">
<span class="d-none d-sm-block">Next</span>
<span class="d-block d-sm-none"><span class="fas fa-arrow-right"></span></span>
</a>

View File

@ -1,9 +1,6 @@
<!-- JQUERY !-->
<script type="text/javascript" src="bower_components/jQuery/dist/jquery.min.js"></script>
<!-- MOMENTS.JS !-->
<script type="text/javascript" src="bower_components/moment/min/moment-with-locales.min.js"></script>
<!-- BOOTSTRAP !-->
<script type="text/javascript" src="bower_components/bootstrap/dist/js/bootstrap.min.js" ></script>
<link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.min.css"/>