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 + 1; 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, };