2017-04-20 54 views
-2

我有一個小問題,我需要把一個空行中我NG重複需要把空行中我NG重複angularjs

我解釋,

我想建立一個空數組例如,今天我有8條記錄(上午1點到8點,上午4點到10點,下午3點到3點),每小時我想有最少4個字段(因爲我在上午8點有記錄,我必須有3個字段爲空更多,因爲我沒有什麼東西上午9點,我必須有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至下午15點

我NG重複將使這一

8:00加比 10:00牛仔 10:00馬克 10:00薩爾瓦託 10:00奧尼爾 3: 00弗朗索瓦 3:00坦率 3:00蘇珊

,但我想我這一個在我的NG重複

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:00馬克 10:00薩爾瓦託 10:00奧尼爾 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:00 X 1:00 X 1:00 x 1:00 x 2:00 x 2:00 x 2:00 x 2:00 X 3:00弗朗索瓦 3:00坦率 3:00蘇珊 3:00 X

時,有沒有記錄,我把X

+0

請正確解釋您的要求。 – Ananya

+0

好的Ananya,請檢查我的編輯 – Gazano

回答

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