### 在线时长计算
1. 整个系统的在线时长
2. 页面在线时长？
3. 局部view的在线时长

#### 在线时长计算
1. 当前页面聚焦 通过visibilitychange判断 不在页面聚焦就不算统计事件
2. 如果在页面聚焦状态，如果长期挂机。没有鼠标跟键盘操作。超过5分钟也是无效的。
3. 键盘点击事件，鼠标点击事件监听，鼠标滑动事件。屏幕点击事件。
4. 如果是局部view,首先是页面聚焦状态。其次是页面有操作行为？
5. 用户需要配置哪些页面需要收集，哪些view需要收集。
   
#### 时长什么时候推送上去
1. 页面切换的时候推送当前页面的， 跟随pageview数据上传，还是重新建立一个事件模型追踪？
2. 跟随pageview数据不好控制。pageview记录的是路由变化。时长数据的话是要在变化后再上传？最后的数据怎么办？这方案不符合。
3. 局部的内容的怎么推？
#### 计算过程
1. 初始化时间计数器0， 是否有操作Flag
2. 开启定时 1分钟循环。循环内监听用户行为，如果用户有行为，flag设置true, 说明这一分钟生效， 到时间，计数器叠加1分钟。
3. 1分钟完成后，计数器叠加1分钟，循环重新计算，如果一分钟没有用户行为。不加入计数器。
4. 页面是否隐藏了，如果页面隐藏时间超过30秒，则为下线。需要提交数据了，如果不能提交数据，则需要缓存到本地，下次访问时候上传。
5. 最后，监听页面关闭事件。需要强制执行运算。


#### 默认行为
1. 默认根据pageview计算页面内的使用时长。
2. 局部的需要通过注册添加监听方式支持。

#### 配置
```ts
{
    'trackOnline': Boolean | ITrackOnlineOptions
}
{
    duration: number,
    url: string,
    startTime: number
    endTime: number
    // views: [{
    //     name: string,
    //     duration: number
    // }]
}
```