Project

General

Profile

1
<div page-content>
2
  <div header>
3
    <div class="uk-margin-top">
4
      <a routerLink="../" class="uk-text-secondary uk-text-uppercase uk-text-bold uk-text-small">
5
         <span class="uk-icon-button uk-icon small uk-button-secondary">
6
            <icon name="arrow_left"></icon>
7
         </span>
8
        <span class="space">
9
          Go back to Content Providers
10
        </span>
11
      </a>
12
    </div>
13
  </div>
14
  <div inner>
15
    <div class="uk-card-header">
16
      <div class="uk-flex uk-flex-middle uk-child-width-1-1 uk-child-width-1-2@m uk-grid" uk-grid>
17
        <div>
18
          <div class="uk-text-small uk-text-muted">Filters for</div>
19
          <div>
20
            <span *ngIf="dataProvider" class="uk-text-bold">{{dataProvider.officialname}}</span>
21
            <span *ngIf="dirty"> (unsaved changes)</span>
22
          </div>
23
        </div>
24
        <div class="  uk-flex uk-flex-right">
25
          <button (click)="reset()" [disabled]="loading  || !dirty"
26
                  class="uk-button uk-button-secondary outlined uk-margin-small-right">Reset
27
          </button>
28
          <button (click)="save()" class="uk-button uk-button-secondary uk-margin-small-right"
29
                  [disabled]="loading || !dirty || selectionCriteria.invalid ">Save
30
          </button>
31
        </div>
32
      </div>
33
    </div>
34
    <div class="uk-card uk-card-default uk-position-relative" style="min-height: 60vh">
35
      <div *ngIf="!loading" class="uk-padding-large uk-padding-remove-bottom uk-overflow-auto" style="max-height: 60vh;">
36
        <div *ngIf="criteria.length == 0" class="uk-padding-large uk-text-center uk-text-bold">
37
          <div *ngIf="dataProvider">No filters for {{dataProvider.officialname}}.</div>
38
          <div>If no filters are specified, all research results of this content provider will be included in your community.</div>
39
        </div>
40
        <form *ngIf="criteria.length > 0" [formGroup]="selectionCriteria">
41
          <div formArrayName="criteria" class="uk-margin-bottom">
42
            <div class="uk-margin-top" *ngFor="let criterion of criteria.controls; let i=index" [formGroupName]="i">
43
              <h6  class="uk-text-bold uk-form-label uk-margin-small-bottom">Filter {{i + 1}}</h6>
44
              <div class="uk-padding criterion" formArrayName="constraint">
45
                <div class="uk-flex uk-flex-middle uk-grid-small uk-margin-small-bottom" uk-grid>
46
                  <div class="uk-width-small uk-visible@m"></div>
47
                  <div class="uk-width-1-4">
48
                    <label class="uk-text-uppercase uk-text-bold">Constraint Field</label>
49
                  </div>
50
                  <div class="uk-width-1-4">
51
                    <label class="uk-text-uppercase uk-text-bold">Operator</label>
52
                  </div>
53
                  <div class="uk-width-1-4">
54
                    <label class="uk-text-uppercase uk-text-bold">Term</label>
55
                  </div>
56
                </div>
57
                <div *ngFor="let constraint of getConstraint(i).controls; let j=index"
58
                     [formGroupName]="j" class="uk-margin-bottom">
59
                  <div class="uk-flex uk-flex-middle uk-grid-small" uk-grid>
60
                    <div class="uk-width-small@m uk-width-1-1 uk-flex uk-flex-center">
61
                      <span *ngIf="j > 0">AND</span>
62
                    </div>
63
                    <div class="uk-width-1-4" dashboard-input type="select" placeholder="Select a field" [options]="fields" [formInput]="constraint.get('field')"></div>
64
                    <div class="uk-width-1-4" dashboard-input type="select" placeholder="Select an operator" [options]="verbs" [formInput]="constraint.get('verb')"></div>
65
                    <div class="uk-width-1-4" dashboard-input placeholder="Write a term" [formInput]="constraint.get('value')"></div>
66
                    <div class="uk-width-expand uk-flex uk-flex-center">
67
                      <a class="uk-link-heading" (click)="removeConstraint(i, j)">
68
                        <icon name="close" [attr.uk-tooltip]="(getConstraint(i).length === 1?'By removing this constraint, the filter will be removed too':null)"></icon>
69
                      </a>
70
                    </div>
71
                  </div>
72
                </div>
73
                <div class="uk-flex uk-flex-middle uk-grid-small" uk-grid>
74
                  <div class="uk-width-small@m uk-width-1-1 uk-flex uk-flex-center"></div>
75
                  <a (click)="addConstraint(i)" class="uk-flex uk-flex-middle uk-text-uppercase">
76
                    <button class="large uk-icon-button uk-button-secondary">
77
                      <icon name="add"></icon>
78
                    </button>
79
                    <button class="uk-button uk-button-link uk-margin-small-left uk-text-secondary">
80
                      Add Constraint
81
                    </button>
82
                  </a>
83
                </div>
84
              </div>
85
            </div>
86
          </div>
87
        </form>
88
        <div class="uk-flex uk-flex-center uk-margin-large-bottom">
89
          <a (click)="addCriteria()" class="uk-flex uk-flex-middle uk-text-uppercase"
90
             uk-tooltip="<div class='uk-padding-small'>Add filter to limit research results.<br>Results which satisfy any of the selected filters will be included in your community.</div>">
91
            <button class="large uk-icon-button uk-button-secondary">
92
              <icon name="add"></icon>
93
            </button>
94
            <button class="uk-button uk-button-link uk-margin-small-left uk-text-secondary">
95
              Add filter
96
            </button>
97
          </a>
98
        </div>
99
      </div>
100
      <div *ngIf="loading" class="uk-position-center">
101
        <loading></loading>
102
      </div>
103
    </div>
104
  </div>
105
</div>
(3-3/5)