var http = require('../../utils/request')
var ble = require('../../services/ble')

Page({
  data: {
    records: [],
    total: 0,
    totalHours: 0,
    totalMs: 0,
    monthCount: 0,
    page: 1,
    pageSize: 20,
    loading: true,
    loadingMore: false
  },

  onShow: function () {
    this.loadRecords(true)
  },

  onPullDownRefresh: function () {
    this.loadRecords(true).then(function () {
      wx.stopPullDownRefresh()
    })
  },

  onReachBottom: function () {
    if (this.data.records.length < this.data.total) {
      this.loadRecords(false)
    }
  },

  loadRecords: function (refresh) {
    var self = this
    var page = refresh ? 1 : self.data.page + 1

    if (refresh) {
      self.setData({ loading: true })
    } else {
      self.setData({ loadingMore: true })
    }

    return http.get('/api/v1/treatment/history', {
      page: page,
      page_size: self.data.pageSize
    }).then(function (data) {
      var pageMs = 0
      var now = new Date()
      var monthStart = new Date(now.getFullYear(), now.getMonth(), 1)
      var monthCount = refresh ? 0 : self.data.monthCount

      var records = (data.records || []).map(function (r) {
        var durationMin = Math.floor((r.total_duration_ms || 0) / 60000)
        pageMs += (r.total_duration_ms || 0)
        r.duration_text = durationMin + '分钟'
        r.region_names = ble.getRegionName(r.regions || 0).join('、')
        r.wavelength_name = ble.getWavelengthName(r.wavelength || 2)
        r.date_text = self.formatDate(r.start_time || r.created_at)

        if (r.start_time && new Date(r.start_time) >= monthStart) {
          monthCount++
        }
        return r
      })

      var totalMs = refresh ? pageMs : self.data.totalMs + pageMs

      self.setData({
        records: refresh ? records : self.data.records.concat(records),
        total: data.total || 0,
        totalMs: totalMs,
        totalHours: Math.round(totalMs / 3600000),
        monthCount: monthCount,
        page: page,
        loading: false,
        loadingMore: false
      })
    }).catch(function () {
      self.setData({ loading: false, loadingMore: false })
    })
  },

  formatDate: function (dateStr) {
    if (!dateStr) return ''
    var d = new Date(dateStr)
    var now = new Date()
    var today = new Date(now.getFullYear(), now.getMonth(), now.getDate())
    var yesterday = new Date(today.getTime() - 86400000)
    var h = ('0' + d.getHours()).slice(-2)
    var m = ('0' + d.getMinutes()).slice(-2)

    if (d >= today) return '今天 ' + h + ':' + m
    if (d >= yesterday) return '昨天 ' + h + ':' + m
    return (d.getMonth() + 1) + '月' + d.getDate() + '日 ' + h + ':' + m
  }
})
