我有一点问题,我需要在我的重复中添加一个空行
我解释,
我想设置一个带有填充的空数组,例如,今天我有8条记录(上午1点到8点,上午4点到10点和下午3点到3点),每小时我想要最少4个字段(如我有一个记录在早上8点我必须有3个字段空的更多,因为我没有什么9am我必须有4个字段空...)
首先我想从过滤器方面出发,我想花时间进行对象对话并使用下一个对话对象进行测试,但下一个功能不起作用
$.each(conversations, function (index, conversation)
{
///i want to get my next object to test hours
console.log($(this).next());
var conversationDate = moment(conversation.dateenvoi);
//alert(conversationDate)
if (conversationDate >= startDate && conversationDate <= endDate)
{
result.push(conversation);
}
});
我创造了一个更多帮助的plunker
http://plnkr.co/edit/Y4uPrswSaB4fwBneLAzU?p=preview
感谢您的帮助
修改
我有8个录音
凌晨1点到8点 凌晨4点到10点 下午3点到3点
我的重复将会成为这个
8:00加比 10:00牛仔裤 10月3日 10:00打捞 10点一点 3点弗朗索瓦 凌晨3点坦率地说 3:00苏珊但是我想要重复这个
8:00加比 8:00 x 8:00 x 8:00 x 9:00 x 9:00 x 9:00 x 9:00 x 10:00牛仔裤 10月3日 10:00打捞 10点一点 11:00 x 11:00 x 11:00 x 11:00 x 12:00 x 12:00 x 12:00 x 12:00 x 1点x 1点x 1点x 1点x 2:00 x 2:00 x 2:00 x 2:00 x 3点弗朗索瓦 凌晨3点坦率地说 凌晨3点 3:00 x当没有记录时我把X
答案 0 :(得分:0)
我希望我已经做到了。 请参阅plunker
请注意,对话必须按会话日期排序。
另外在我看来,最好在过滤之前添加空行,在控制器中的某处。您可以将对话复制到另一个变量,并用于添加空行,然后将其传递给ng-repeat。在这种情况下,你的日期范围过滤器将只是'日期范围'过滤器,仅此而已。
app.filter('daterange', function() {
return function(conversations, startDate, endDate) {
var result = [];
var perHourCount = 4; //it's better to obtain this value using grouping by hour and getting max value
var firstDate, lastDate;
// date filters
endDate = moment(startDate).add(1, 'days').subtract(7300, 'second');
var startDate = (startDate && !isNaN(Date.parse(startDate))) ? Date.parse(startDate) : moment('2015-01-01');
var endDate = (endDate && !isNaN(Date.parse(endDate))) ? Date.parse(endDate) : moment('2050-12-31');
// if the conversations are loaded
if (conversations && conversations.length > 0) {
var filteredByDateRange = conversations.filter(function(x) {
var conversationDate = moment(x.dateenvoi);
return conversationDate >= startDate && conversationDate <= endDate;
});
if (filteredByDateRange.length > 0) {
firstDate = moment(filteredByDateRange[0].dateenvoi);
lastDate = moment(filteredByDateRange[filteredByDateRange.length - 1].dateenvoi);
}
for (var date = firstDate; date <= lastDate; date.add(1, 'h')) {
var filteredPerHour = filteredByDateRange.filter(function(x) {
//it's possible to use diff() here
return moment(x.dateenvoi).format("YYYY-MM-DD hh:mm") == date.format("YYYY-MM-DD hh:mm");
});
for (var i = 0; i < perHourCount; i++) {
var conversation = filteredPerHour[i];
if (conversation) {
result.push(conversation);
} else {
result.push({
dateenvoi: date.format("YYYY-MM-DD HH:mm:ss"),
Name: 'X',
City: 'X',
Country: 'X'
});
}
}
}
}
return result;
};
});