需要在我的ng重复angularjs中放空行

时间:2017-04-20 13:16:17

标签: angularjs

我有一点问题,我需要在我的重复中添加一个空行

我解释,

我想设置一个带有填充的空数组,例如,今天我有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

1 个答案:

答案 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;
   };
});