Project

General

Profile

1
<div id="page_content">
2
  <div class="uk-padding-small md-bg-white" uk-grid>
3
    <div *ngIf="filters" class="uk-width-2-3@m uk-width-1-1 uk-child-width-1-3@m uk-child-width-1-1" uk-grid>
4
      <div>
5
        <div dashboard-input [formInput]="filters.get('privacy')"
6
             type="select" [options]="[all].concat(stakeholderUtils.isPublic)"
7
             label="Privacy"></div>
8
      </div>
9
      <div>
10
        <div dashboard-input [formInput]="filters.get('status')"
11
             type="select" [options]="[all].concat(stakeholderUtils.isActive)"
12
             label="Status"></div>
13
      </div>
14
    </div>
15
    <div class="uk-width-expand@m uk-width-1-1 uk-flex uk-flex-middle uk-flex-right">
16
      <div class="uk-inline uk-width-medium">
17
        <span class="uk-position-center-right"><i class="material-icons">search</i></span>
18
        <div dashboard-input [formInput]="filters.get('keyword')" label="Locate profile"></div>
19
      </div>
20
      <div [class.uk-active]="grid" class="uk-margin-small-left">
21
        <a [routerLink]="" class="uk-icon-button" (click)="changeGrid(true)"><i
22
          class="material-icons">view_module</i></a>
23
      </div>
24
      <div [class.uk-active]="!grid" class="uk-margin-small-left">
25
        <a [routerLink]="" class="uk-icon-button" (click)="changeGrid(false)"><i class="material-icons">list</i></a>
26
      </div>
27
    </div>
28
  </div>
29
  <div id="page_content_inner">
30
    <h4 class="uk-text-bold main">Default Profiles</h4>
31
    <div [class.uk-child-width-1-4@m]="grid"
32
         [class.uk-child-width-1-3@s]="grid"
33
         [class.uk-child-width-1-1]="!grid"
34
         [class.list-view]="!grid"
35
         class="uk-grid-match uk-grid-small"
36
         uk-grid>
37
      <loading *ngIf="loading"></loading>
38
      <ng-template ngFor [ngForOf]="defaultStakeholders" let-stakeholder let-i="index">
39
        <a *ngIf="stakeholder" [routerLink]="stakeholder.alias">
40
          <div class="md-card">
41
            <div class="md-card-toolbar">
42
              <div class="md-card-toolbar-actions" [class.uk-flex-middle]="!grid" [class.uk-flex]="!grid">
43
                <span *ngIf="!grid" class="uk-margin-medium-right uk-flex uk-flex-middle">
44
                  <i class="material-icons md-24 uk-margin-small-right">{{stakeholderUtils.isPublicIcon.get(stakeholder.isPublic)}}</i>
45
                  {{(stakeholder.isPublic) ? 'Public' : 'Private'}}
46
                </span>
47
                <span *ngIf="!grid" class="uk-margin-medium-right uk-flex uk-flex-middle">
48
                  <i class="material-icons md-24 uk-margin-small-right"
49
                     [class.md-color-green-300]="stakeholder.isActive">{{stakeholderUtils.isActiveIcon}}</i>
50
                  {{(stakeholder.isActive) ? 'Active' : 'Inactive'}}
51
                </span>
52
                <div class="md-card-dropdown uk-inline">
53
                  <i class="md-icon material-icons"
54
                     (click)="$event.stopPropagation();$event.preventDefault()">more_vert</i>
55
                  <div #element uk-dropdown="mode: click; pos: bottom-right; delay-hide: 0; flip: false" class="uk-padding-remove-horizontal">
56
                    <ul class="uk-nav uk-dropdown-nav">
57
                      <li><a (click)="$event.stopPropagation();editStakeholder(stakeholder, true);hide(element);$event.preventDefault()">Edit</a>
58
                      </li>
59
                      <li><a (click)="$event.stopPropagation();toggleStakeholderStatus(stakeholder);hide(element);$event.preventDefault()">
60
                        {{stakeholder.isActive ? 'Inactive' : 'Active'}}</a>
61
                      </li>
62
                      <li><a (click)="$event.stopPropagation();toggleStakeholderAccess(stakeholder);hide(element);$event.preventDefault()">
63
                        {{stakeholder.isPublic ? 'Private' : 'Public'}}</a>
64
                      </li>
65
                      <hr *ngIf="isAdministrator()" class="uk-nav-divider">
66
                      <li *ngIf="isAdministrator()"><a
67
                        (click)="$event.stopPropagation();deleteStakeholderOpen(stakeholder);hide(element);$event.preventDefault()">Delete</a>
68
                      </li>
69
                    </ul>
70
                  </div>
71
                </div>
72
              </div>
73
              <div class="md-card-toolbar-heading-text">{{stakeholder.name}}</div>
74
            </div>
75
            <div *ngIf="grid" class="md-card-content">
76
              <div class="uk-flex uk-flex-center" uk-grid>
77
                <div class="uk-width-1-2 uk-text-center">
78
                  <i class="material-icons md-24">{{stakeholderUtils.isPublicIcon.get(stakeholder.isPublic)}}</i>
79
                  <div>{{(stakeholder.isPublic) ? 'Public' : 'Private'}}</div>
80
                </div>
81
                <div class="uk-width-1-2 uk-text-center">
82
                  <i class="material-icons md-24"
83
                     [class.md-color-green-300]="stakeholder.isActive">{{stakeholderUtils.isActiveIcon}}</i>
84
                  <div>{{(stakeholder.isActive) ? 'Active' : 'Inactive'}}</div>
85
                </div>
86
              </div>
87
            </div>
88
          </div>
89
        </a>
90
      </ng-template>
91
      <div *ngIf="!loading">
92
        <div class="md-card clickable" (click)="editStakeholder(null, true)">
93
          <div class="md-card-toolbar">
94
            <div class="md-card-toolbar-heading-text"
95
                 [class.uk-flex-middle]="!grid"
96
                 [class.uk-flex]="!grid"
97
                 [class.uk-flex-center]="!grid">
98
              <i *ngIf="!grid" class="material-icons md-36">add</i>
99
              <span>Create a default profile</span>
100
            </div>
101
          </div>
102
          <div *ngIf="grid" class="md-card-content">
103
            <div uk-grid>
104
              <div class="uk-width-1-1">
105
                Create a new default profile.
106
              </div>
107
              <div class="uk-width-1-1 uk-flex uk-flex-center">
108
                <i class="material-icons md-48">add</i>
109
              </div>
110
            </div>
111
          </div>
112
        </div>
113
      </div>
114
    </div>
115
    <h4 class="uk-text-bold">Profiles</h4>
116
    <div [class.uk-child-width-1-4@m]="grid"
117
         [class.uk-child-width-1-3@s]="grid"
118
         [class.uk-child-width-1-1]="!grid"
119
         [class.list-view]="!grid"
120
         class="uk-grid-match uk-grid-small"
121
         uk-grid>
122
      <loading *ngIf="loading"></loading>
123
      <ng-template ngFor [ngForOf]="displayStakeholders" let-stakeholder let-i="index">
124
        <a *ngIf="stakeholder" [routerLink]="stakeholder.alias">
125
          <div class="md-card">
126
            <div class="md-card-toolbar">
127
              <div class="md-card-toolbar-actions" [class.uk-flex-middle]="!grid" [class.uk-flex]="!grid">
128
                <span *ngIf="!grid" class="uk-margin-medium-right uk-flex uk-flex-middle">
129
                  <i class="material-icons md-24 uk-margin-small-right">{{stakeholderUtils.isPublicIcon.get(stakeholder.isPublic)}}</i>
130
                  {{(stakeholder.isPublic) ? 'Public' : 'Private'}}
131
                </span>
132
                <span *ngIf="!grid" class="uk-margin-medium-right uk-flex uk-flex-middle">
133
                  <i class="material-icons md-24 uk-margin-small-right"
134
                     [class.md-color-green-300]="stakeholder.isActive">{{stakeholderUtils.isActiveIcon}}</i>
135
                  {{(stakeholder.isActive) ? 'Active' : 'Inactive'}}
136
                </span>
137
                <div class="md-card-dropdown uk-inline">
138
                  <i class="md-icon material-icons"
139
                     (click)="$event.stopPropagation();$event.preventDefault()">more_vert</i>
140
                  <div #element uk-dropdown="mode: click; pos: bottom-right; delay-hide: 0; flip: false" class="uk-padding-remove-horizontal">
141
                    <ul class="uk-nav uk-dropdown-nav">
142
                      <li><a
143
                        (click)="$event.stopPropagation();editStakeholder(stakeholder);hide(element);$event.preventDefault()">Edit</a>
144
                      </li>
145
                      <li><a (click)="$event.stopPropagation();toggleStakeholderStatus(stakeholder);hide(element);$event.preventDefault()">
146
                        {{stakeholder.isActive ? 'Inactive' : 'Active'}}</a>
147
                      </li>
148
                      <li><a (click)="$event.stopPropagation();toggleStakeholderAccess(stakeholder);hide(element);$event.preventDefault()">
149
                        {{stakeholder.isPublic ? 'Private' : 'Public'}}</a>
150
                      </li>
151
                      <hr class="uk-nav-divider">
152
                      <li><a
153
                        (click)="$event.stopPropagation();deleteStakeholderOpen(stakeholder);hide(element);$event.preventDefault()">Delete</a>
154
                      </li>
155
                    </ul>
156
                  </div>
157
                </div>
158
              </div>
159
              <div class="md-card-toolbar-heading-text">{{stakeholder.name}}</div>
160
            </div>
161
            <div *ngIf="grid" class="md-card-content">
162
              <div class="uk-flex uk-flex-center" uk-grid>
163
                <div class="uk-width-1-2 uk-text-center">
164
                  <i class="material-icons md-24">{{stakeholderUtils.isPublicIcon.get(stakeholder.isPublic)}}</i>
165
                  <div>{{(stakeholder.isPublic) ? 'Public' : 'Private'}}</div>
166
                </div>
167
                <div class="uk-width-1-2 uk-text-center">
168
                  <i class="material-icons md-24"
169
                     [class.md-color-green-300]="stakeholder.isActive">{{stakeholderUtils.isActiveIcon}}</i>
170
                  <div>{{(stakeholder.isActive) ? 'Active' : 'Inactive'}}</div>
171
                </div>
172
              </div>
173
            </div>
174
          </div>
175
        </a>
176
      </ng-template>
177
      <div *ngIf="!loading">
178
        <div class="md-card clickable" (click)="editStakeholder()">
179
          <div class="md-card-toolbar">
180
            <div class="md-card-toolbar-heading-text"
181
                 [class.uk-flex-middle]="!grid"
182
                 [class.uk-flex]="!grid"
183
                 [class.uk-flex-center]="!grid">
184
              <i *ngIf="!grid" class="material-icons md-36">add</i>
185
              <span>Create a profile</span>
186
            </div>
187
          </div>
188
          <div *ngIf="grid" class="md-card-content">
189
            <div uk-grid>
190
              <div class="uk-width-1-1">
191
                Create a new profile by selecting the type (Funder, Organization, Research Initiative or Project) and
192
                select indicators based on a default or a blank profile.
193
              </div>
194
              <div class="uk-width-1-1 uk-flex uk-flex-center">
195
                <i class="material-icons md-48">add</i>
196
              </div>
197
            </div>
198
          </div>
199
        </div>
200
      </div>
201
    </div>
202
  </div>
203
</div>
204
<modal-alert #editStakeholderModal
205
             (alertOutput)="save()"
206
             [okDisabled]="stakeholderFb && (stakeholderFb.invalid || (stakeholderFb.pristine && index !==-1 && !file))">
207
  <div *ngIf="stakeholderFb" class="uk-padding-small" [formGroup]="stakeholderFb">
208
    <div class="uk-form-row uk-flex uk-flex-middle uk-child-width-1-2" uk-grid>
209
      <div dashboard-input [formInput]="stakeholderFb.get('name')" label="Name"></div>
210
      <div dashboard-input [formInput]="stakeholderFb.get('alias')" label="Alias"></div>
211
    </div>
212
    <div dashboard-input class="uk-form-row" [type]="'textarea'" [rows]="4" [formInput]="stakeholderFb.get('description')" label="Description"></div>
213
    <div class="uk-form-row uk-flex uk-flex-middle uk-child-width-1-3" uk-grid>
214
      <div dashboard-input [formInput]="stakeholderFb.get('index_id')"
215
           label="Index id">
216
      </div>
217
      <div dashboard-input [formInput]="stakeholderFb.get('index_name')"
218
           label="Index name">
219
      </div>
220
      <div dashboard-input [formInput]="stakeholderFb.get('index_shortName')"
221
           label="Index short name">
222
      </div>
223
    </div>
224
    <div class="uk-grid uk-flex uk-flex-top" uk-grid>
225
      <div class="uk-width-1-5">
226
        <img [src]="photo">
227
      </div>
228
      <div class="uk-width-expand">
229
        <div dashboard-input [formInput]="stakeholderFb.get('logoUrl')" label="Logo Path/URL"></div>
230
      </div>
231
    </div>
232
    <div class="uk-text-center uk-margin-bottom">
233
      <div>- OR -</div>
234
      <div class="uk-margin-small-top">
235
        <div uk-form-custom class="uk-width-auto">
236
          <input id="photo" type="file" (change)="fileChangeEvent($event)"/>
237
          <button class="md-btn md-btn-primary md-btn-small" tabindex="-1">Upload</button>
238
        </div>
239
        <button *ngIf="file" class="md-btn md-btn-danger md-btn-small uk-margin-small-left" (click)="removePhoto()">Remove</button>
240
      </div>
241
      <div *ngIf="uploadError" class="uk-text-danger uk-margin-small-top">{{uploadError}}</div>
242
    </div>
243
    <div class="uk-form-row uk-flex uk-flex-middle uk-child-width-1-3" uk-grid>
244
      <div dashboard-input [formInput]="stakeholderFb.get('isPublic')"
245
           label="Privacy" [options]="stakeholderUtils.isPublic" type="select">
246
      </div>
247
      <div dashboard-input [formInput]="stakeholderFb.get('isActive')"
248
           label="Status" [options]="stakeholderUtils.isActive" type="select">
249
      </div>
250
      <div dashboard-input [formInput]="stakeholderFb.get('type')"
251
           label="Type" [options]="stakeholderUtils.types" type="select">
252
      </div>
253
    </div>
254
    <div *ngIf="!stakeholderFb.get('isDefault').value && index === -1 && stakeholderFb.get('type').valid">
255
      <div *ngIf="defaultStakeholdersOptions.length === 0" class="uk-text-danger">No default profiles has been found for this type.</div>
256
      <div *ngIf="defaultStakeholdersOptions.length > 0"
257
           dashboard-input class="uk-form-row" [formInput]="stakeholderFb.get('defaultId')"
258
           label="Indicators" [options]="defaultStakeholdersOptions" type="select"></div>
259
    </div>
260
  </div>
261
</modal-alert>
262
<modal-alert #deleteStakeholderModal (alertOutput)="deleteStakeholder()"></modal-alert>
(2-2/4)