Guest User

Untitled

a guest
Apr 20th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.17 KB | None | 0 0
  1. import { Component } from '@angular/core';
  2. import { HttpClient } from '@angular/common/http';
  3. import { HttpErrorResponse } from '@angular/common/http';
  4.  
  5. @Component({
  6. selector: 'app-root',
  7. templateUrl: './app.component.html',
  8. styleUrls: ['./app.component.css']
  9. })
  10. export class AppComponent {
  11. title = 'User table';
  12. constructor (private httpService: HttpClient) { }
  13. url: string = 'https://example.com/users.json';
  14. arrUsers: string [];
  15. filters: Object = {};
  16.  
  17. ngOnInit () {
  18. this.httpService.get(this.url).subscribe(
  19. data => {
  20. this.arrUsers = data as string [];
  21. },
  22. (err: HttpErrorResponse) => {
  23. console.log (err.message);
  24. }
  25. );
  26.  
  27. }
  28.  
  29. checkboxChange(event: any, arg1: any) {
  30. //this.filters[arg1] = event.target.checked;
  31. //console.log(this.filters);
  32. }
  33. }
  34.  
  35. <div>
  36. <div class="filter-panel">
  37. <div class="filter-panel__content">
  38.  
  39. <div class="filter-panel__content__filter">
  40. <span class="filter-text">gender:</span>
  41. <div class="filter-panel__input-box">
  42. <div class="filter-panel__checkbox" *ngFor="let user of arrUsers| generatedcheckbox: 'gender' ;">
  43. <input type="checkbox" (change)="checkboxChange($event, user.gender)" /> {{user.gender}}
  44. </div>
  45. </div>
  46. </div>
  47.  
  48. <div class="filter-panel__content__filter">
  49. <span class="filter-text">department:</span>
  50. <div class="filter-panel__input-box">
  51. <div class="filter-panel__checkbox" *ngFor="let user of arrUsers| generatedcheckbox: 'department' ;">
  52. <input type="checkbox" (click)="checkboxChange($event, user.department)" /> {{user.department}}
  53. </div>
  54. </div>
  55. </div>
  56.  
  57. </div>
  58. </div>
  59.  
  60. <table class="user-table" cellspacing='0' *ngIf="arrUsers">
  61. <caption>{{ title }}</caption>
  62. <tr>
  63. <th>Имя</th>
  64. <th>Возраст</th>
  65. <th>Пол</th>
  66. <th>Департамент</th>
  67. <th>Адрес</th>
  68. </tr>
  69.  
  70.  
  71. <tr *ngFor="let user of arrUsers| filterdata: filters: 'gender'">
  72. <td>{{user.name}}</td>
  73. <td>{{user.age}}</td>
  74. <td>{{user.gender}}</td>
  75. <td>{{user.department}}</td>
  76. <td>{{user.address.city + ', ' + user.address.street}}</td>
  77.  
  78. </tr>
  79. </table>
  80. </div>
  81.  
  82. import { Pipe, PipeTransform } from '@angular/core';
  83.  
  84. @Pipe({
  85. name: 'generatedcheckbox'
  86. })
  87. export class GeneratedCheckboxPipe implements PipeTransform {
  88. transform(items: any[], arg1: string, arg2:string): any[] {
  89. if (!items) return [];
  90. if (!arg1) return items;
  91. if (arg1 == '' || arg1 == null) return [];
  92.  
  93. var seen = {};
  94.  
  95. if (arg2) //arg1=adress, arg2=city --> adress.city
  96. return items.filter((e) => seen.hasOwnProperty(e[arg1][arg2]) ? false : (seen[e[arg1][arg2]] = true) );
  97.  
  98. return items.filter((e) => seen.hasOwnProperty(e[arg1]) ? false : (seen[e[arg1]] = true) );
  99.  
  100. }
  101.  
  102. }
  103.  
  104. import { Pipe, PipeTransform } from '@angular/core';
  105.  
  106. @Pipe({
  107. name: 'filterdata'
  108. })
  109. export class FilterdataPipe implements PipeTransform {
  110.  
  111. transform(check: any, checked: any, arg1: string, arg2: string): any {
  112. console.log('checked',checked);
  113. //...
  114. return check
  115. }
  116.  
  117. }
  118.  
  119. [
  120. {
  121. "id": "d70b5",
  122. "name": "Name1",
  123. "age": 18,
  124. "gender": "male",
  125. "department": "Back",
  126. "address": {
  127. "city": "Moscow",
  128. "street": "Street 923"
  129. }
  130. },
  131. {
  132. "id": "573f3",
  133. "name": "Name2",
  134. "age": 24,
  135. "gender": "female",
  136. "department": "Back",
  137. "address": {
  138. "city": "Moscow",
  139. "street": "Avenue 666"
  140. }
  141. },
  142. {
  143. "id": "573f3",
  144. "name": "Name3",
  145. "age": 29,
  146. "gender": "female",
  147. "department": "Front",
  148. "address": {
  149. "city": "New-York",
  150. "street": "Street 68"
  151. }
  152. },
  153. {
  154. "id": "573f3",
  155. "name": "Name4",
  156. "age": 33,
  157. "gender": "male",
  158. "department": "Back",
  159. "address": {
  160. "city": "Moscow",
  161. "street": "Street 97"
  162. }
  163. }
  164. ]
Add Comment
Please, Sign In to add comment