refactor: ES6+ modernization + 2 bugfixes

- var→const/let, function→arrow/class across all 13 JS files
- Timer: prototype→class with ES6 getters
- plan days: IIFE→Array.from declarative generation
- storage/plan: unified formatDate via util.js
- Bugfix: getPlanDay now filters by planId (plan switch accuracy)
- Bugfix: getTodayRecord searches all months (cross-month boundary)
- WXML/WXSS unchanged; public API unchanged
This commit is contained in:
2026-06-04 16:29:25 +08:00
parent ff2700c067
commit 8c7f633541
13 changed files with 404 additions and 494 deletions
+41 -57
View File
@@ -1,6 +1,6 @@
var storage = require('../../utils/storage')
var util = require('../../utils/util')
var themeMod = require('../../utils/theme')
const storage = require('../../utils/storage')
const util = require('../../utils/util')
const themeMod = require('../../utils/theme')
Page({
data: {
@@ -19,36 +19,31 @@ Page({
dayDetail: {}
},
onLoad: function () {
onLoad() {
this.refresh()
},
onShow: function () {
onShow() {
themeMod.applyThemeToPage(this)
try {
var tb = this.getTabBar()
const tb = this.getTabBar()
if (tb) tb.setData({ selected: 1 })
} catch (e) {}
this.refresh()
},
onPullDownRefresh: function () {
onPullDownRefresh() {
this.refresh()
wx.stopPullDownRefresh()
},
refresh: function () {
var stats = storage.getTotalStats()
var monthKey = this.data.currentYear + '-' +
(this.data.currentMonth < 10 ? '0' : '') + this.data.currentMonth
var records = storage.getRecordsByMonth(monthKey)
refresh() {
const stats = storage.getTotalStats()
const monthKey = `${this.data.currentYear}-${String(this.data.currentMonth).padStart(2, '0')}`
const records = storage.getRecordsByMonth(monthKey)
var allRecords = []
var all = storage.getRecords()
Object.keys(all).forEach(function (key) {
allRecords = allRecords.concat(all[key])
})
allRecords.sort(function (a, b) { return b.date.localeCompare(a.date) })
const allRecords = Object.values(storage.getRecords()).flat()
allRecords.sort((a, b) => b.date.localeCompare(a.date))
this.setData({
totalDuration: stats.totalDuration,
@@ -61,48 +56,38 @@ Page({
})
},
onPrevMonth: function () {
var year = this.data.currentYear
var month = this.data.currentMonth
if (month === 1) {
year--
month = 12
onPrevMonth() {
let { currentYear, currentMonth } = this.data
if (currentMonth === 1) {
currentYear--
currentMonth = 12
} else {
month--
currentMonth--
}
this.setData({ currentYear: year, currentMonth: month })
this.setData({ currentYear, currentMonth })
this.refresh()
},
onNextMonth: function () {
var year = this.data.currentYear
var month = this.data.currentMonth
if (month === 12) {
year++
month = 1
onNextMonth() {
let { currentYear, currentMonth } = this.data
if (currentMonth === 12) {
currentYear++
currentMonth = 1
} else {
month++
currentMonth++
}
this.setData({ currentYear: year, currentMonth: month })
this.setData({ currentYear, currentMonth })
this.refresh()
},
onDayTap: function (e) {
var detail = e.detail
var dateStr = detail.year + '-' +
(detail.month < 10 ? '0' : '') + detail.month + '-' +
(detail.day < 10 ? '0' : '') + detail.day
onDayTap(e) {
const { year, month, day } = e.detail
const dateStr = `${year}-${String(month).padStart(2, '0')}-${String(day).padStart(2, '0')}`
var allRecords = []
var all = storage.getRecords()
Object.keys(all).forEach(function (key) {
allRecords = allRecords.concat(all[key])
})
var sessions = allRecords.filter(function (r) { return r.date === dateStr })
var totalDur = 0
sessions.forEach(function (r) { totalDur += r.duration })
var calories = Math.round(totalDur * 0.068)
const allRecords = Object.values(storage.getRecords()).flat()
const sessions = allRecords.filter(r => r.date === dateStr)
const totalDur = sessions.reduce((sum, r) => sum + r.duration, 0)
const calories = Math.round(totalDur * 0.068)
this.setData({
showDayDetail: true,
@@ -111,27 +96,26 @@ Page({
sessions: sessions.length,
duration: totalDur,
durationText: util.formatDuration(totalDur),
calories: calories
calories
}
})
},
onCloseDayDetail: function () {
onCloseDayDetail() {
this.setData({ showDayDetail: false })
},
noop: function () {},
noop() {},
onDeleteRecord: function (e) {
var id = e.currentTarget.dataset.id
var self = this
onDeleteRecord(e) {
const id = e.currentTarget.dataset.id
wx.showModal({
title: '删除记录',
content: '确定要删除这条训练记录吗?',
success: function (res) {
success: (res) => {
if (res.confirm) {
storage.deleteRecord(id)
self.refresh()
this.refresh()
wx.showToast({ title: '已删除', icon: 'none', duration: 1200 })
}
}