用户
 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
  • TA的每日心情
    慵懒
    2017-1-6 10:46
  • 签到天数: 2 天

    [LV.1]初来乍到

    173

    主题

    181

    帖子

    981

    金钱

    咫尺尊享

    Rank: 5Rank: 5

    积分
    0
    2017-3-3 10:57:33 柿霖不是林 咫尺尊享 楼主 32733



    [HTML] 纯文本查看 复制代码
    const util = require('../../utils/util.js')
    var app = getApp();
    const defaultLogName = {
      work: '工作',
      rest: '休息'
    }
    const actionName = {
      stop: '停止',
      start: '开始'
    }
     
    const initDeg = {
      left: 45,
      right: -45,
    }
     
    Page({
     
      data: {
        isShowing: false,
        remainTimeText: '',
        timerType: 'work',
        log: {},
        completed: false,
        isRuning: false,
        leftDeg: initDeg.left,
        rightDeg: initDeg.right,
        userInfo: {}
      },
      onLoad: function(){
        var that = this;
        app.getUserInfo(function(userInfo){
          that.setData({
             userInfo: userInfo
          })
        })
      },
     
      onShow: function() {
        if (this.data.isRuning) return
        let workTime = util.formatTime(wx.getStorageSync('workTime'), 'HH')
        let restTime = util.formatTime(wx.getStorageSync('restTime'), 'HH')
        this.setData({
          workTime: workTime,
          restTime: restTime,
          remainTimeText: workTime + ':00'
        })
      },
     
      startTimer: function(e) {
        let startTime = Date.now()
        let isRuning = this.data.isRuning
        let timerType = e.target.dataset.type
        let showTime = this.data[timerType + 'Time']
        let keepTime = showTime * 60 * 1000
        let logName = this.logName || defaultLogName[timerType]
     
        if (!isRuning) {
          this.timer = setInterval((function() {
            this.updateTimer()
            this.startNameAnimation()
          }).bind(this), 1000)
        } else {
          this.stopTimer()
        }
     
        this.setData({
          isRuning: !isRuning,
          completed: false,
          timerType: timerType,
          remainTimeText: showTime + ':00',
          taskName: logName
        })
     
        this.data.log = {
          name: logName,
          startTime: Date.now(),
          keepTime: keepTime,
          endTime: keepTime + startTime,
          action: actionName[isRuning ? 'stop' : 'start'],
          type: timerType
        }
     
        this.saveLog(this.data.log)
      },
     
      startNameAnimation: function() {
        let animation = wx.createAnimation({
          duration: 450
        })
        animation.opacity(0.2).step()
        animation.opacity(1).step()
        this.setData({
          nameAnimation: animation.export()
        })
      },
     
      stopTimer: function() {
        // reset circle progress
        this.setData({
          leftDeg: initDeg.left,
          rightDeg: initDeg.right
        })
     
        // clear timer
        this.timer && clearInterval(this.timer)
      },
     
      updateTimer: function() {
        let log = this.data.log
        let now = Date.now()
        let remainingTime = Math.round((log.endTime - now) / 1000)
        let H = util.formatTime(Math.floor(remainingTime / (60 * 60)) % 24, 'HH')
        let M = util.formatTime(Math.floor(remainingTime / (60)) % 60, 'MM')
        let S = util.formatTime(Math.floor(remainingTime) % 60, 'SS')
        let halfTime
     
        // update text
        if (remainingTime > 0) {
          let remainTimeText = (H === "00" ? "" : (H + ":")) + M + ":" + S
          this.setData({
            remainTimeText: remainTimeText
          })
        } else if (remainingTime == 0) {
          this.setData({
            completed: true
          })
          this.stopTimer()
          return
        }
     
        // update circle progress
        halfTime = log.keepTime / 2
        if ((remainingTime * 1000) > halfTime) {
          this.setData({
            leftDeg: initDeg.left - (180 * (now - log.startTime) / halfTime)
          })
        } else {
          this.setData({
            leftDeg: -135
          })
          this.setData({
            rightDeg: initDeg.right - (180 * (now - (log.startTime + halfTime)) / halfTime)
          })
        }
      },
     
      changeLogName: function(e) {
        this.logName = e.detail.value
      },
     
      saveLog: function(log) {
        var logs = wx.getStorageSync('logs') || []
        logs.unshift(log)
        wx.setStorageSync('logs', logs)
      },
     
      showMenu: function(e) {
        var show = !this.data.isShowing;
        this.setData({
          isShowing:show
        })
      }
    })


    游客,如果您要查看本帖隐藏内容请回复

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    使用道具 举报 回复
    11111111111111
    下载完怎么用
    专注于与个人游戏开发者合作,有产品的朋友联系微信号jim20180688,详聊
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册
    咫尺论坛|小程序开发社区
    X

    扫码添加专属客服即可随时咨询

    还可领取小程序推广攻略