backup: snapshot before optimization
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
var plans = {
|
||||
beginner: {
|
||||
id: 'beginner',
|
||||
name: '初级 (7天)',
|
||||
totalDays: 7,
|
||||
description: '适合初学者,从30秒起步',
|
||||
days: [
|
||||
{ day: 1, target: 30 },
|
||||
{ day: 2, target: 40 },
|
||||
{ day: 3, target: 50 },
|
||||
{ day: 4, target: 60 },
|
||||
{ day: 5, target: 70 },
|
||||
{ day: 6, target: 80 },
|
||||
{ day: 7, target: 90 }
|
||||
]
|
||||
},
|
||||
intermediate: {
|
||||
id: 'intermediate',
|
||||
name: '中级 (14天)',
|
||||
totalDays: 14,
|
||||
description: '有一定基础,从60秒起步',
|
||||
days: [
|
||||
{ day: 1, target: 60 }, { day: 2, target: 60 },
|
||||
{ day: 3, target: 75 }, { day: 4, target: 75 },
|
||||
{ day: 5, target: 90 }, { day: 6, target: 90 },
|
||||
{ day: 7, target: 105 }, { day: 8, target: 105 },
|
||||
{ day: 9, target: 120 }, { day: 10, target: 120 },
|
||||
{ day: 11, target: 135 }, { day: 12, target: 135 },
|
||||
{ day: 13, target: 150 }, { day: 14, target: 150 }
|
||||
]
|
||||
},
|
||||
advanced: {
|
||||
id: 'advanced',
|
||||
name: '高级 (30天)',
|
||||
totalDays: 30,
|
||||
description: '挑战自我,从90秒起步',
|
||||
days: (function () {
|
||||
var arr = []
|
||||
for (var i = 1; i <= 30; i++) {
|
||||
arr.push({ day: i, target: 90 + Math.floor((i - 1) / 3) * 15 })
|
||||
}
|
||||
return arr
|
||||
})()
|
||||
}
|
||||
}
|
||||
|
||||
function getPlan(planId) {
|
||||
return plans[planId] || plans.beginner
|
||||
}
|
||||
|
||||
function getTodayTarget(planId, currentDay) {
|
||||
var plan = getPlan(planId)
|
||||
for (var i = 0; i < plan.days.length; i++) {
|
||||
if (plan.days[i].day === currentDay) return plan.days[i].target
|
||||
}
|
||||
return plan.days[0].target
|
||||
}
|
||||
|
||||
function getPlanDay(planId, records) {
|
||||
var plan = getPlan(planId)
|
||||
var now = new Date()
|
||||
var today = now.getFullYear() + '-' +
|
||||
('0' + (now.getMonth() + 1)).slice(-2) + '-' +
|
||||
('0' + now.getDate()).slice(-2)
|
||||
var dates = {}
|
||||
records.forEach(function (r) {
|
||||
if (r.date !== today) dates[r.date] = true
|
||||
})
|
||||
var trainedDays = Object.keys(dates).length
|
||||
return Math.min(trainedDays + 1, plan.totalDays)
|
||||
}
|
||||
|
||||
module.exports = { plans: plans, getPlan: getPlan, getTodayTarget: getTodayTarget, getPlanDay: getPlanDay }
|
||||
Reference in New Issue
Block a user