2017-01-18 19 views
0

Ich hoffe, Ihr könnt mir helfen ich bin sehr neu zu scharfkantiges MaterialErgebnisse filtern nach Datumsbereich scharfkantiges Material

ich eine Tabelle mit N Ergebnisse haben und ich versuche, einen Filter für einen Bereich von Daten zu tun. Ich habe einen wählen mit den Optionen (1 Tag, 5 Tage, 1 Woche, 15 Tage), die mit einer variablen

JS

vm.rangos=[ 
    {id:"1",name:'1 día',value:'1'}, 
    {id:"2",name:'5 días',value:'5'}, 
    {id:"3",name:'1 Semana',value:'7'}, 
    {id:"4",name:'15 días',value:'15'} 
    ]; 

HTML

<div layout="row" flex="90" layout-align="start center"> 
    <label flex="25">Rango</label> 
     <select flex="60" ng-model="vm.rangoSelected" placeholder="" ng-options="ran.name for ran in vm.rangos" class="selectPersonalizado "> 
     </select> 
</div> 

geladen und Ich weiß ehrlich nicht, wie man die Funktion durchführt, um den Filter durchzuführen, um Ergebnisse innerhalb des vorgewählten Bereiches anzuzeigen

In dieser Funktion sammle ich den Wert von th e ausgewählt

function sendFilter(){ 
     var filterSend = ""; 
     switch(vm.filterSelected){ 

      case 'rango': 
      filterSend = vm.rangoSelected.value; 
      break; 
      default: 
      alert('no hecho'); 
      break; 

     } 
     vm.showLastMovements(filterSend); 
    } 

JSON

{ 
    "result": { 
    "httpCode": 200, 
    "httpMessage": "OK", 
    "moreInformation": "" 
    }, 
    "data": { 
    "movements": [ 
     { 
     "operationDate": "2017-01-18", 
     "concept": "Decathlon", 
     "amount": "-450.0", 
     "currency": "EUR", 
     "balance": "29150.0", 
     "category": 1 
     }, 
     { 
     "operationDate": "2017-01-18", 
     "concept": "Corte Ingles", 
     "amount": "-259.0", 
     "currency": "EUR", 
     "balance": "34000.0", 
     "category": 2 
     }, 
     { 
     "operationDate": "2017-01-15", 
     "concept": "Carrefour", 
     "amount": "348.0", 
     "currency": "EUR", 
     "balance": "12000.0", 
     "category": 1 
     }, 
     { 
     "operationDate": "2017-01-01", 
     "concept": "Corte Ingles", 
     "amount": "-259.0", 
     "currency": "EUR", 
     "balance": "34000.0", 
     "category": 2 
     }, 
     { 
     "operationDate": "2016-12-30", 
     "concept": "Cortefiel", 
     "amount": "348.0", 
     "currency": "EUR", 
     "balance": "12000.0", 
     "category": 1 
     } 

    ] 
    } 
} 

In dieser Funktion whith eine Warnung, zeigen Sie mir den Wert der Auswahl.

Wenn Sie mir helfen können oder zumindest einige Informationen geben, um diese Funktion zu erstellen, um dann den Anruf aus dem Fall zu machen, um die Datensätze dieser Auswahl anzuzeigen, würde ich es begrüßen.

Vielen Dank

+0

Was ist der Inhalt, den Sie mit dem Bereich filtern möchten? –

+0

Ich habe eine Liste mit mehreren Ergebnissen (Kategorie, Datum, Beschreibung, Preis) und mit diesem Filter versuche ich zu zeigen, hängt davon ab, was ich auswählen (1 Tag, 5 Tage, 1 Woche oder 15 Tage) das Neueste. Eigentlich arbeite ich mit JSON um die Liste zu zeigen, fragst du mich das? – derek

+0

Ich bin mir nicht sicher, ob ich das verstehe. Mit dem Filter möchten Sie die Ergebnisse nach dem Bereich filtern. Möchten Sie den ausgewählten Bereich mit dem Datum des Ergebnisses vergleichen? –

Antwort

0

Dieser Ihre HTML wird:

<div layout="row" flex="90" layout-align="start center"> 
    <label flex="25">Rango</label> 
     <select flex="60" ng-model="vm.rangoSelected" placeholder="" ng-options="ran.name for ran in vm.rangos" class="selectPersonalizado "> 
     </select> 
</div> 

und lassen Sie annehmen, dass diese Iteration durch die Liste

<tr md-row ng-repeat="movement in data.movements | filter: customFilter"> 
    <td md-cell>{{movement}}</td> 
    </tr> 

-Controller

data.movements Tisch ist:

function customFilter(movement){ 
    var movementDate = new Date (movement.operationDate); 
    var filterDate= new Date(); 
    filterDate.setDate(filterDate.getDate() - vm.rangoSelected.value) //In here you will have to transform the rangoSelected.value to days. 
    return (movementDate.getTime() > filterDate.getTime()); //this will return true if the movement's date is bigger than your selected range. 
} 

Beachten Sie, dass getTime() die Anzahl der Millisekunden seit 1970/01/01 zurückgibt. Das wird Ihnen helfen, die Reichweitenberechnungen durchzuführen.

Verwandte Themen