diff --git a/common/script/index.coffee b/common/script/index.coffee index af7f1efe3d..52c37eaf26 100644 --- a/common/script/index.coffee +++ b/common/script/index.coffee @@ -66,6 +66,13 @@ api.startOfDay = (options={}) -> dayStart.subtract({days:1}) dayStart + +api.startOfDayAllowsFuture = (options={}) -> + # Use this version to use if you need the result even if the offset would cause today's day start to be in the future. + o = sanitizeOptions(options) + moment(o.now).startOf('day').add({hours:o.dayStart}) + + api.dayMapping = {0:'su',1:'m',2:'t',3:'w',4:'th',5:'f',6:'s'} ### diff --git a/website/public/js/controllers/settingsCtrl.js b/website/public/js/controllers/settingsCtrl.js index c59fe7bb3b..4632f13c95 100644 --- a/website/public/js/controllers/settingsCtrl.js +++ b/website/public/js/controllers/settingsCtrl.js @@ -66,24 +66,31 @@ habitrpg.controller('SettingsCtrl', User.set({'flags.newStuff':true}); } - $scope.passDayStart = User.user.preferences.dayStart; + $scope.dayStart = User.user.preferences.dayStart; - $scope.saveDayStart = function(newDayStart){ - var oldDayStart = User.user.preferences.dayStart; - var dayStart = newDayStart; + function updateLastCron(oldDayStart, newDayStart){ + var getOldStart = Shared.startOfDayAllowsFuture({ dayStart: oldDayStart}); + var getNewStart = Shared.startOfDayAllowsFuture({ dayStart: newDayStart}); var lastCron = User.user.lastCron; - var getOldStart = Shared.startOfDay({ dayStart: oldDayStart}); - var getNewStart = Shared.startOfDay({ dayStart: dayStart}); + var momentLastCron = Shared.momentTimestamp(lastCron); var isoNewStart = Shared.isoTimestamp(getNewStart); - - if (dayStart == undefined || _.isNaN(dayStart) || dayStart < 0 || dayStart > 24) { - dayStart = 0; - return alert(window.env.t('enterNumber')); - } - if (Shared.momentTimestamp(getOldStart) <= Shared.momentTimestamp(lastCron) && Shared.momentTimestamp(lastCron) < Shared.momentTimestamp(getNewStart)) { + alert('Times are oldstart'+Shared.friendlyTimestamp(getOldStart)+' lastcron '+Shared.friendlyTimestamp(lastCron)+' and newstart '+Shared.friendlyTimestamp(getNewStart)); + if (getOldStart < momentLastCron && momentLastCron < getNewStart) { + alert('Setting lastcron to '+Shared.friendlyTimestamp(getNewStart)); User.set({ 'lastCron' : isoNewStart}); } - User.set({'preferences.dayStart': dayStart}); + }; + + $scope.saveDayStart = function(varDayStart){ + var oldDayStart = User.user.preferences.dayStart; + var newDayStart = varDayStart; + + if ( newDayStart != Math.floor(newDayStart) || newDayStart < 0 || newDayStart > 24 ) { + newDayStart = 0; + return alert(window.env.t('enterNumber')); + } + updateLastCron( oldDayStart, newDayStart); + User.set({'preferences.dayStart': Math.floor(newDayStart)}); } $scope.language = window.env.language; diff --git a/website/views/options/settings.jade b/website/views/options/settings.jade index 9b7ffb8628..483955da67 100644 --- a/website/views/options/settings.jade +++ b/website/views/options/settings.jade @@ -83,7 +83,7 @@ script(type='text/ng-template', id='partials/options.settings.settings.html') h5(ng-if='showCustomDayStartInfo')!=env.t('customDayStartInfo4') .form-group .input-group - input.form-control(type='number', min='0', max='23', ng-model='passDayStart', ng-blur='saveDayStart(passDayStart)') + input.form-control(type='number', min='0', max='23', ng-model='dayStart', ng-blur='saveDayStart(dayStart)') span.input-group-addon= ':00 (' + env.t('24HrClock') + ')' .personal-options.col-md-6