You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
2.1 KiB
60 lines
2.1 KiB
import dayjs from 'dayjs';
|
|
|
|
/**
|
|
* 设置时间轴空数据
|
|
* @param {number} startTime
|
|
* @param {boolean} isUp true 向上加载,false 向下加载
|
|
* @param {string} timeGranularity 颗粒度
|
|
* @param {number} pageCount 加载的颗粒度数量 默认值是10
|
|
*/
|
|
const setPlaceholderTasks = (startTime, isUp, timeGranularity, pageCount) => {
|
|
let result = [];
|
|
pageCount = pageCount || uni.$taskConfig.pageCount;
|
|
for (let i = 0; i < pageCount; i++) {
|
|
const delta = isUp ? `-${i + 1}` - 0 : i;
|
|
|
|
let item = {
|
|
id: uni.$u.guid(20, false, 10),
|
|
panel: {},
|
|
plugins: [],
|
|
process: 4,
|
|
planStart: uni.$moment(startTime).add(delta, timeGranularity).valueOf(),
|
|
};
|
|
// console.log('isup: ', isUp, 'result:', new Date(item.planStart).toLocaleDateString());
|
|
|
|
isUp ? result.unshift(item) : result.push(item);
|
|
}
|
|
return result;
|
|
};
|
|
|
|
/**
|
|
* 超出旧数据上、下限 补齐时间刻度到新数据的起始时间颗粒度
|
|
* @param {object} option
|
|
* @param {array} option.tasks 旧的已有的任务书籍
|
|
* @param {array} option.data 新拿到的任务数据 空值已经过滤过了
|
|
* @param {string} option.timeGranularity 颗粒度
|
|
*/
|
|
const computeFillPlaceholderTaskCount = obj => {
|
|
const { tasks, data, timeGranularity } = obj;
|
|
let result = { prev: 0, next: 0 };
|
|
// 新数据的开始时间 < 旧数据的开始时间
|
|
// 超出了上限 补上限的时间刻度
|
|
// 补上 新数据开始时间 到 旧数据开始时间 的刻度
|
|
if (+data[0].planStart < +tasks[0].planStart) {
|
|
// 找出来需要补几组颗粒度
|
|
result.prev = dayjs(+tasks[0].planStart).diff(+data[0].planStart, timeGranularity) + 1;
|
|
}
|
|
|
|
// 新数据的结束时间 > 旧数据的结束时间
|
|
// 超出了下线 补下限的时间刻度
|
|
// 补上 旧数据截止时间 到 新数据截止时间 的刻度
|
|
if (+data[data.length - 1].planStart > +tasks[tasks.length - 1].planStart) {
|
|
result.next = dayjs(+data[data.length - 1].planStart).diff(+tasks[tasks.length - 1].planStart, timeGranularity) + 1;
|
|
}
|
|
return result;
|
|
};
|
|
|
|
export default {
|
|
setPlaceholderTasks,
|
|
computeFillPlaceholderTaskCount,
|
|
};
|
|
|