Revert "Implements repeat every X days since last completion (Fixes #6941) (#8962)"

This reverts commit 9d69d4b863.
This commit is contained in:
Sabe Jones
2017-11-09 22:13:34 +00:00
parent 69e0ab11c0
commit 3f92317b9e
6 changed files with 4 additions and 96 deletions

View File

@@ -278,68 +278,6 @@ describe('shouldDo', () => {
});
});
context('When repeat after completion is on', () => {
beforeEach(() => {
dailyTask.repeatAfterCompletion = true;
dailyTask.everyX = 5;
day = moment('2017-05-01').toDate();
dailyTask.startDate = day;
});
context('last completed is set', () => {
beforeEach(() => {
day = moment('2017-05-03').toDate();
dailyTask.lastCompleted = day;
});
it('should compute daily nextDue values', () => {
options.timezoneOffset = 0;
options.nextDue = true;
nextDue = shouldDo(day, dailyTask, options);
expect(nextDue.length).to.eql(6);
expect(moment(nextDue[0]).toDate()).to.eql(moment.utc('2017-05-08').toDate());
expect(moment(nextDue[1]).toDate()).to.eql(moment.utc('2017-05-09').toDate());
expect(moment(nextDue[2]).toDate()).to.eql(moment.utc('2017-05-10').toDate());
expect(moment(nextDue[3]).toDate()).to.eql(moment.utc('2017-05-11').toDate());
expect(moment(nextDue[4]).toDate()).to.eql(moment.utc('2017-05-12').toDate());
expect(moment(nextDue[5]).toDate()).to.eql(moment.utc('2017-05-13').toDate());
});
it('returns false before X Days passes after completion', () => {
day = moment('2017-05-05').toDate();
expect(shouldDo(day, dailyTask, options)).to.equal(false);
});
it('returns true after X Days passes after completion', () => {
day = moment('2017-05-10').toDate();
expect(shouldDo(day, dailyTask, options)).to.equal(true);
});
});
context('last completed is not set', () => {
it('should compute daily nextDue values', () => {
options.timezoneOffset = 0;
options.nextDue = true;
nextDue = shouldDo(day, dailyTask, options);
expect(nextDue.length).to.eql(6);
expect(moment(nextDue[0]).toDate()).to.eql(moment.utc('2017-05-02').toDate());
expect(moment(nextDue[1]).toDate()).to.eql(moment.utc('2017-05-03').toDate());
expect(moment(nextDue[2]).toDate()).to.eql(moment.utc('2017-05-04').toDate());
expect(moment(nextDue[3]).toDate()).to.eql(moment.utc('2017-05-05').toDate());
expect(moment(nextDue[4]).toDate()).to.eql(moment.utc('2017-05-06').toDate());
expect(moment(nextDue[5]).toDate()).to.eql(moment.utc('2017-05-07').toDate());
});
it('returns true after start date', () => {
day = moment('2017-05-04').toDate();
expect(shouldDo(day, dailyTask, options)).to.equal(true);
});
});
});
context('If number of X days is zero', () => {
beforeEach(() => {
dailyTask.everyX = 0;

View File

@@ -95,12 +95,6 @@
input(type="number", v-model="task.everyX", min="0", required)
| {{ repeatSuffix }}
br
template(v-if="task.frequency === 'daily'")
.form-check
label.custom-control.custom-checkbox
input.custom-control-input(type="checkbox", v-model="task.repeatAfterCompletion")
span.custom-control-indicator
span.custom-control-description {{ $t('repeatAfterCompletionTitle', {everyX: task.everyX}) }}
template(v-if="task.frequency === 'weekly'")
.form-check-inline.weekday-check(
v-for="(day, dayNumber) in ['su','m','t','w','th','f','s']",

View File

@@ -169,7 +169,6 @@
"taskApprovalHasBeenRequested": "Approval has been requested",
"approvals": "Approvals",
"approvalRequired": "Approval Required",
"repeatAfterCompletionTitle": "Repeat Every <%= everyX %> Days Since Last Completed",
"repeatZero": "Daily is never due",
"repeatType": "Repeat Type",
"repeatTypeHelpTitle": "What kind of repeat is this?",

View File

@@ -122,39 +122,19 @@ export function shouldDo (day, dailyTask, options = {}) {
if (dailyTask.frequency === 'daily') {
if (!dailyTask.everyX) return false; // error condition
let lastCompletedDate;
if (dailyTask.repeatAfterCompletion && dailyTask.lastCompleted) {
lastCompletedDate = moment(dailyTask.lastCompleted).zone(o.timezoneOffset).startOf('day');
}
let schedule = moment(startDate).recur()
.every(dailyTask.everyX).days();
if (options.nextDue) {
let filteredDates = [];
for (let i = 1; filteredDates.length < 6; i++) {
let calcDate;
if (dailyTask.repeatAfterCompletion) {
if (lastCompletedDate) {
calcDate = moment(lastCompletedDate).add(dailyTask.everyX + i - 1, 'days');
} else {
calcDate = moment(startDate).add(i, 'days');
}
} else {
calcDate = moment(startDate).add(dailyTask.everyX * i, 'days');
}
let calcDate = moment(startDate).add(dailyTask.everyX * i, 'days');
if (calcDate > startOfDayWithCDSTime) filteredDates.push(calcDate);
}
return filteredDates;
}
if (dailyTask.repeatAfterCompletion) {
if (lastCompletedDate) {
return moment(lastCompletedDate).add(dailyTask.everyX, 'days').isSameOrBefore(startOfDayWithCDSTime);
} else {
return moment(startDate).isSameOrBefore(startOfDayWithCDSTime);
}
} else {
let schedule = moment(startDate).recur().every(dailyTask.everyX).days();
return schedule.matches(startOfDayWithCDSTime);
}
return schedule.matches(startOfDayWithCDSTime);
} else if (dailyTask.frequency === 'weekly') {
let schedule = moment(startDate).recur();

View File

@@ -306,7 +306,6 @@ export function cron (options = {}) {
if (dailiesDaysMissed > 1) dailiesDaysMissed = 1;
if (completed) {
task.lastCompleted = moment(now).subtract({days: 1}).toDate();
dailyChecked += 1;
if (!atLeastOneDailyDue) { // only bother checking until the first thing is found
let thatDay = moment(now).subtract({days: daysMissed});

View File

@@ -224,8 +224,6 @@ export let habit = Task.discriminator('habit', HabitSchema);
export let DailySchema = new Schema(_.defaults({
frequency: {type: String, default: 'weekly', enum: ['daily', 'weekly', 'monthly', 'yearly']},
everyX: {type: Number, default: 1}, // e.g. once every X weeks
repeatAfterCompletion: {type: Boolean, default: false},
lastCompleted: Date,
startDate: {
type: Date,
default () {