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('chartType')"
6
             type="select" [options]="[all].concat(indicatorUtils.allChartTypes)"
7
             label="Chart Type"></div>
8
      </div>
9
      <div>
10
        <div dashboard-input [formInput]="filters.get('privacy')"
11
             type="select" [options]="[all].concat(indicatorUtils.isPublic)"
12
             label="Privacy"></div>
13
      </div>
14
      <div>
15
        <div dashboard-input [formInput]="filters.get('status')"
16
             type="select" [options]="[all].concat(indicatorUtils.isActive)"
17
             label="Status"></div>
18
      </div>
19
    </div>
20
    <div class="uk-width-expand@m uk-width-1-1 uk-flex uk-flex-middle uk-flex-right">
21
      <div class="uk-inline uk-width-medium">
22
        <span class="uk-position-center-right"><i class="material-icons">search</i></span>
23
        <div dashboard-input [formInput]="filters.get('keyword')" label="Locate indicator"></div>
24
      </div>
25
      <div [class.uk-active]="grid" class="uk-margin-small-left">
26
        <a [routerLink]="" class="uk-icon-button" (click)="changeGrid(true)"><i
27
            class="material-icons">view_module</i></a>
28
      </div>
29
      <div [class.uk-active]="!grid" class="uk-margin-small-left">
30
        <a [routerLink]="" class="uk-icon-button" (click)="changeGrid(false)"><i class="material-icons">list</i></a>
31
      </div>
32
    </div>
33
  </div>
34
  <div *ngIf="stakeholder && canEdit" id="page_content_inner">
35
    <div class="uk-child-width-1-2 uk-flex-middle" uk-grid>
36
      <div>
37
        <ul id="breadcrumbs">
38
          <li><span>{{stakeholder.topics[topicIndex].name}}</span></li>
39
          <li>
40
            <span>{{stakeholder.topics[topicIndex].categories[categoryIndex].name}}</span></li>
41
          <li>
42
            <span class="md-color-blue-900 uk-text-bold">
43
              {{stakeholder.topics[topicIndex].categories[categoryIndex].subCategories[subcategoryIndex].name}}
44
            </span>
45
          </li>
46
        </ul>
47
      </div>
48
      <div class="uk-flex uk-flex-right">
49
        <a class="md-btn  md-btn-primary waves-button waves-effect">
50
          <i class="material-icons uk-margin-small-right">remove_red_eye</i>
51
          Preview
52
          <i class="material-icons uk-margin-small-left">keyboard_arrow_down</i>
53
        </a>
54
        <div #element uk-dropdown="mode: click; pos: bottom-right; offset: 5; delay-hide: 0; flip: false"
55
             class="uk-padding-remove-horizontal">
56
          <ul class="uk-nav uk-dropdown-nav">
57
            <li><a target="_blank" [routerLink]="preview" [queryParams]="{view: 'public'}" (click)="hide(element)">Public</a>
58
            </li>
59
            <li><a target="_blank" [routerLink]="preview" [queryParams]="{view: 'private'}" (click)="hide(element)">Private</a>
60
            </li>
61
          </ul>
62
        </div>
63
      </div>
64
    </div>
65
    <h4 class="uk-text-bold">Number Indicators</h4>
66
    <div *ngIf="numberSections">
67
      <ng-template ngFor [ngForOf]="displayNumbers" let-number let-i="index">
68
        <div [class.list-view]="!grid" [id]="'number-' + number._id"
69
             class="uk-grid-match section uk-grid-small uk-grid uk-margin-top"
70
             uk-sortable="group: number" uk-grid>
71
          <div *ngIf="grid" class="tools disable-sortable uk-sortable-nodrag">
72
            <div class="md-btn-group">
73
              <button class="md-btn md-btn-mini" (click)="createSection(i, 'number')"><i class="material-icons">add</i></button>
74
              <!--<button class="md-btn md-btn-mini"><i class="material-icons rotate-90">drag_indicator</i></button>-->
75
              <button class="md-btn md-btn-mini" (click)="deleteNumberSectionOpen(number, i)"><i class="material-icons">clear</i>
76
              </button>
77
            </div>
78
          </div>
79
          <div *ngIf="grid && numberSections.at(i)"
80
               class="uk-form-row uk-width-1-1 uk-grid-medium uk-flex uk-flex-middle uk-margin-bottom disable-sortable uk-sortable-nodrag"
81
               uk-grid>
82
            <div dashboard-input class="uk-width-2-3 uk-width-1-3@m" [formInput]="numberSections.at(i).get('title')"
83
                 label="Add a section title"></div>
84
            <div class="uk-width-expand">
85
              <button *ngIf="numberSections.at(i).dirty" class="md-btn"
86
                      (click)="saveSection(numberSections.at(i).value, i, 'number')">
87
                Save
88
              </button>
89
            </div>
90
          </div>
91
          <div *ngIf="!grid && number.title" class="uk-width-1-1 disable-sortable uk-sortable-nodrag">
92
            <h4>{{number.title}}</h4>
93
          </div>
94
          <ng-template ngFor [ngForOf]="number.indicators" let-indicator let-j="index">
95
            <div *ngIf="indicator" [id]="indicator._id"
96
                 [class.uk-width-1-5@m]="grid && indicator.width === 'small'"
97
                 [class.uk-width-1-3@m]="grid && indicator.width === 'medium'"
98
                 [class.uk-width-1-2@m]="!grid || indicator.width === 'large'"
99
                 [class.disable-sortable]="!canReorder"
100
                 [class.uk-sortable-nodrag]="!canReorder">
101
              <div class="md-card" [class.md-card-hover]="canReorder">
102
                <div class="md-card-toolbar">
103
                  <div class="md-card-toolbar-actions" [class.uk-flex-middle]="!grid" [class.uk-flex]="!grid">
104
                    <ng-template [ngIf]="!grid">
105
                      <div class="uk-margin-medium-right uk-flex uk-flex-middle">
106
                        <i class="material-icons md-24 uk-margin-small-right">{{indicatorUtils.isPublicIcon.get(indicator.isPublic)}}</i>
107
                        {{(indicator.isPublic) ? 'Public' : 'Private'}}
108
                      </div>
109
                      <div class="uk-margin-medium-right uk-flex uk-flex-middle">
110
                        <i class="material-icons md-24 uk-margin-small-right"
111
                           [class.md-color-green-300]="indicator.isActive">{{indicatorUtils.isActiveIcon}}</i>
112
                        {{(indicator.isActive) ? 'Active' : 'Inactive'}}
113
                      </div>
114
                    </ng-template>
115
                    <div class="md-card-dropdown uk-inline">
116
                      <i class="md-icon material-icons">more_vert</i>
117
                      <div #element uk-dropdown="mode: click; pos: bottom-right; delay-hide: 0; flip: false"
118
                           class="uk-padding-remove-horizontal">
119
                        <ul class="uk-nav uk-dropdown-nav">
120
                          <li *ngIf="isAdministrator"><a
121
                              (click)="editNumberIndicatorOpen(number, indicator._id)">Edit</a></li>
122
                          <li><a (click)="toggleIndicatorStatus(number._id, indicator);hide(element)">
123
                            {{indicator.isActive ? 'Inactive' : 'Active'}}</a>
124
                          </li>
125
                          <li><a (click)="toggleIndicatorAccess(number._id, indicator);hide(element)">
126
                            {{indicator.isPublic ? 'Private' : 'Public'}}</a>
127
                          </li>
128
                          <hr *ngIf="isAdministrator" class="uk-nav-divider">
129
                          <li *ngIf="isAdministrator"><a
130
                              (click)="deleteIndicatorOpen(number, indicator._id, 'number');hide(element)">Delete</a>
131
                          </li>
132
                        </ul>
133
                      </div>
134
                    </div>
135
                  </div>
136
                  <div class="md-card-toolbar-heading-text">
137
                    {{indicator.name ? indicator.name : 'No title available'}}
138
                  </div>
139
                </div>
140
                <div *ngIf="grid" class="md-card-content">
141
                  <div class="uk-flex uk-flex-center" uk-grid>
142
                    <div class="uk-width-1-1">
143
                      {{indicator.description}}
144
                    </div>
145
                    <div class="uk-width-1-2 uk-text-center"
146
                         title="{{indicator.isPublic?'Visible to all users':'Visible to members'}}">
147
                      <i class="material-icons md-24">{{indicatorUtils.isPublicIcon.get(indicator.isPublic)}}</i>
148
                      <div>{{(indicator.isPublic) ? 'Public' : 'Private'}}</div>
149
                    </div>
150
                    <div class="uk-width-1-2 uk-text-center"
151
                         title="{{indicator.isActive?'Included in the indicators list':'Available only through administration dashboard'}}">
152
                      <i class="material-icons md-24"
153
                         [class.md-color-green-300]="indicator.isActive">{{indicatorUtils.isActiveIcon}}</i>
154
                      <div>{{(indicator.isActive) ? 'Active' : 'Inactive'}}</div>
155
                    </div>
156
                  </div>
157
                </div>
158
              </div>
159
            </div>
160
          </ng-template>
161
          <div *ngIf="isAdministrator" class="disable-sortable uk-sortable-nodrag"
162
               [class.uk-width-1-3@m]="grid"
163
               [class.uk-width-1-1@m]="!grid">
164
            <div class="md-card clickable" (click)="editNumberIndicatorOpen(number)">
165
              <div class="md-card-toolbar">
166
                <div class="md-card-toolbar-heading-text"
167
                     [class.uk-flex-middle]="!grid"
168
                     [class.uk-flex]="!grid"
169
                     [class.uk-flex-center]="!grid">
170
                  <i *ngIf="!grid" class="material-icons md-36">add</i>
171
                  <span>Create a custom Indicator</span>
172
                </div>
173
              </div>
174
              <div *ngIf="grid" class="md-card-content">
175
                <div uk-grid>
176
                  <div class="uk-width-1-1">
177
                    Create a new number Indicator
178
                  </div>
179
                  <div class="uk-width-1-1 uk-flex uk-flex-center">
180
                    <i class="material-icons md-48">add</i>
181
                  </div>
182
                </div>
183
              </div>
184
            </div>
185
          </div>
186
        </div>
187
      </ng-template>
188
      <div *ngIf="grid" class="new-section uk-margin-top">
189
        <div class="tools uk-flex uk-flex-middle">
190
          <button class="md-btn uk-margin-small-right" (click)="createSection(-1, 'number')">
191
            <i class="material-icons md-24 md-color-white">add</i>
192
          </button>
193
          <span>Create a new section</span>
194
        </div>
195
      </div>
196
    </div>
197
    <h4 class="uk-text-bold">Chart Indicators</h4>
198
    <div *ngIf="chartSections">
199
      <ng-template ngFor [ngForOf]="displayCharts" let-chart let-i="index">
200
        <div [class.list-view]="!grid" [id]="'chart-' + chart._id"
201
             class="uk-grid-match section uk-grid-small uk-grid uk-margin-top"
202
             uk-sortable="group: chart" uk-grid>
203
          <div *ngIf="grid" class="tools disable-sortable uk-sortable-nodrag">
204
            <div class="md-btn-group">
205
              <button class="md-btn md-btn-mini" (click)="createSection(i)"><i class="material-icons">add</i></button>
206
              <!--<button class="md-btn md-btn-mini"><i class="material-icons rotate-90">drag_indicator</i></button>-->
207
              <button class="md-btn md-btn-mini" (click)="deleteChartSectionOpen(chart, i)"><i class="material-icons">clear</i>
208
              </button>
209
            </div>
210
          </div>
211
          <div *ngIf="grid && chartSections.at(i)"
212
               class="uk-form-row uk-width-1-1 uk-grid-medium uk-flex uk-flex-middle uk-margin-bottom disable-sortable uk-sortable-nodrag"
213
               uk-grid>
214
            <div dashboard-input class="uk-width-2-3 uk-width-1-3@m" [formInput]="chartSections.at(i).get('title')"
215
                 label="Add a section title"></div>
216
            <div class="uk-width-expand">
217
              <button *ngIf="chartSections.at(i).dirty" class="md-btn"
218
                      (click)="saveSection(chartSections.at(i).value, i)">
219
                Save
220
              </button>
221
            </div>
222
          </div>
223
          <div *ngIf="!grid && chart.title" class="uk-width-1-1 disable-sortable uk-sortable-nodrag">
224
            <h4>{{chart.title}}</h4>
225
          </div>
226
          <ng-template ngFor [ngForOf]="chart.indicators" let-indicator let-j="index">
227
            <div *ngIf="indicator" [id]="indicator._id"
228
                 [class.uk-width-1-3@m]="grid && indicator.width === 'small'"
229
                 [class.uk-width-1-2@m]="grid && indicator.width === 'medium'"
230
                 [class.uk-width-1-1@m]="!grid || indicator.width === 'large'"
231
                 [class.disable-sortable]="!canReorder"
232
                 [class.uk-sortable-nodrag]="!canReorder">
233
              <div class="md-card" [class.md-card-hover]="canReorder">
234
                <div class="md-card-toolbar">
235
                  <div class="md-card-toolbar-actions" [class.uk-flex-middle]="!grid" [class.uk-flex]="!grid">
236
                    <ng-template [ngIf]="!grid">
237
                      <div *ngFor="let indicatorPath of indicator.indicatorPaths"
238
                           class="uk-margin-medium-right uk-text-capitalize uk-flex uk-flex-middle">
239
                        <i class="material-icons md-24 uk-margin-small-right">
240
                          {{indicatorUtils.chartTypesIcons.get(indicatorPath.type)}}
241
                        </i>
242
                        {{indicatorPath.type + ' Chart'}}
243
                      </div>
244
                    </ng-template>
245
                    <div *ngIf="!grid" class="uk-margin-medium-right uk-flex uk-flex-middle"
246
                         title="{{indicator.isPublic?'Visible to all users':'Visible to members'}}">
247
                      <i class="material-icons md-24 uk-margin-small-right">
248
                        {{indicatorUtils.isPublicIcon.get(indicator.isPublic)}}
249
                      </i>
250
                      {{(indicator.isPublic) ? 'Public' : 'Private'}}
251
                    </div>
252
                    <div *ngIf="!grid" class="uk-margin-medium-right uk-flex uk-flex-middle"
253
                         title="{{indicator.isActive?'Included in the indicators list':'Available only through administration dashboard'}}">
254
                      <i class="material-icons md-24 uk-margin-small-right"
255
                         [class.md-color-green-300]="indicator.isActive">
256
                        {{indicatorUtils.isActiveIcon}}
257
                      </i>
258
                      {{(indicator.isActive) ? 'Active' : 'Inactive'}}
259
                    </div>
260
                    <div class="md-card-dropdown uk-inline">
261
                      <i class="md-icon material-icons">more_vert</i>
262
                      <div #element uk-dropdown="mode: click; pos: bottom-right; delay-hide: 0; flip: false"
263
                           class="uk-padding-remove-horizontal">
264
                        <ul class="uk-nav uk-dropdown-nav">
265
                          <li><a (click)="editChartIndicatorOpen(chart, indicator._id);hide(element)">Edit</a></li>
266
                          <li><a (click)="toggleIndicatorStatus(chart._id, indicator);hide(element)">
267
                            {{indicator.isActive ? 'Inactive' : 'Active'}}</a>
268
                          </li>
269
                          <li><a (click)="toggleIndicatorAccess(chart._id, indicator);hide(element)">
270
                            {{indicator.isPublic ? 'Private' : 'Public'}}</a>
271
                          </li>
272
                          <hr class="uk-nav-divider">
273
                          <li><a (click)="deleteIndicatorOpen(chart, indicator._id);hide(element)">Delete</a></li>
274
                        </ul>
275
                      </div>
276
                    </div>
277
                  </div>
278
                  <div class="md-card-toolbar-heading-text">
279
                    {{indicator.name ? indicator.name : indicator.indicatorPaths[0].parameters['title']}}
280
                  </div>
281
                </div>
282
                <div *ngIf="grid" class="md-card-content">
283
                  <div class="uk-flex uk-flex-center" uk-grid>
284
                    <div class="uk-width-1-1">
285
                      {{indicator.description ? indicator.description : ''}}
286
                    </div>
287
                    <div class="uk-width-1-3 uk-text-center"
288
                         [ngClass]="'uk-child-width-1-' + indicator.indicatorPaths.length" uk-grid>
289
                      <div *ngFor="let indicatorPath of indicator.indicatorPaths">
290
                        <i class="material-icons md-24">
291
                          {{indicatorUtils.chartTypesIcons.get(indicatorPath.type)}}
292
                        </i>
293
                        <div class="uk-text-capitalize">{{indicatorPath.type + ' Chart'}}</div>
294
                      </div>
295
                    </div>
296
                    <div class="uk-width-1-3 uk-text-center"
297
                         title="{{indicator.isPublic?'Visible to all users':'Visible to members'}}">
298
                      <i class="material-icons md-24">
299
                        {{indicatorUtils.isPublicIcon.get(indicator.isPublic)}}
300
                      </i>
301
                      <div>{{(indicator.isPublic) ? 'Public' : 'Private'}}</div>
302
                    </div>
303
                    <div class="uk-width-1-3 uk-text-center"
304
                         title="{{indicator.isActive?'Included in the indicators list':'Available only through administration dashboard'}}">
305
                      <i class="material-icons md-24" [class.md-color-green-300]="indicator.isActive">
306
                        {{indicatorUtils.isActiveIcon}}
307
                      </i>
308
                      <div>{{(indicator.isActive) ? 'Active' : 'Inactive'}}</div>
309
                    </div>
310
                    <iframe *ngIf="indicator.indicatorPaths[0] && indicator.indicatorPaths[0].source !== 'image' &&
311
                                  safeUrls.get(indicatorUtils.getFullUrl(stakeholder, indicator.indicatorPaths[0]))"
312
                            [src]="safeUrls.get(indicatorUtils.getFullUrl(stakeholder, indicator.indicatorPaths[0]))"
313
                            class="uk-width-1-1 uk-height-medium"></iframe>
314
                    <div *ngIf="indicator.indicatorPaths[0] && indicator.indicatorPaths[0].source === 'image'">
315
                      <img class="uk-width-1-1 uk-height-medium" [src]="indicator.indicatorPaths[i].url">
316
                    </div>
317
                  </div>
318
                </div>
319
              </div>
320
            </div>
321
          </ng-template>
322
          <div class="disable-sortable uk-sortable-nodrag"
323
               [class.uk-width-1-3@m]="grid"
324
               [class.uk-width-1-1@m]="!grid">
325
            <div class="md-card clickable" (click)="editChartIndicatorOpen(chart)">
326
              <div class="md-card-toolbar">
327
                <div class="md-card-toolbar-heading-text"
328
                     [class.uk-flex-middle]="!grid"
329
                     [class.uk-flex]="!grid"
330
                     [class.uk-flex-center]="!grid">
331
                  <i *ngIf="!grid" class="material-icons md-36">add</i>
332
                  <span>Create a custom Indicator</span>
333
                </div>
334
              </div>
335
              <div *ngIf="grid" class="md-card-content">
336
                <div uk-grid>
337
                  <div class="uk-width-1-1">
338
                    Use our advance tool to create a custom Indicator that suit the needs of your funding
339
                    KPI's.
340
                  </div>
341
                  <div class="uk-width-1-1 uk-flex uk-flex-center">
342
                    <i class="material-icons md-48">add</i>
343
                  </div>
344
                </div>
345
              </div>
346
            </div>
347
          </div>
348
        </div>
349
      </ng-template>
350
      <div *ngIf="grid" class="new-section uk-margin-top">
351
        <div class="tools uk-flex uk-flex-middle">
352
          <button class="md-btn uk-margin-small-right" (click)="createSection()">
353
            <i class="material-icons md-24 md-color-white">add</i>
354
          </button>
355
          <span>Create a new section</span>
356
        </div>
357
      </div>
358
    </div>
359
  </div>
360
</div>
361
<modal-alert #editNumberModal
362
             [classBody]="'large-modal'"
363
             (alertOutput)="saveIndicator()"
364
             [okDisabled]="numberIndicatorFb && (numberIndicatorFb.invalid || numberIndicatorFb.pristine)">
365
  <div *ngIf="numberIndicatorFb" class="uk-padding-small" [formGroup]="numberIndicatorFb">
366
    <div dashboard-input class="uk-form-row" [formInput]="numberIndicatorFb.get('name')" label="Title"></div>
367
    <div dashboard-input class="uk-form-row" [formInput]="numberIndicatorFb.get('description')"
368
         label="Description" type="textarea">
369
    </div>
370
    <div class="uk-form-row uk-flex uk-flex-middle">
371
      <div dashboard-input class="uk-width-small" [formInput]="numberIndicatorFb.get('isPublic')"
372
           label="Accessibility" [options]="indicatorUtils.isPublic" type="select">
373
      </div>
374
      <div dashboard-input class="uk-margin-small-left uk-width-small" [formInput]="numberIndicatorFb.get('isActive')"
375
           label="Visibility" [options]="indicatorUtils.isActive" type="select">
376
      </div>
377
      <div dashboard-input class="uk-margin-small-left uk-width-small" [formInput]="numberIndicatorFb.get('width')"
378
           type="select" [options]="indicatorUtils.indicatorSizes"
379
           label="Number Size">
380
      </div>
381
    </div>
382
    <h5 class="uk-text-bold uk-margin-top uk-margin-bottom">
383
      Number Settings
384
    </h5>
385
    <div *ngIf="numberIndicatorPaths" formArrayName="indicatorPaths">
386
      <div *ngFor="let indicatorPath of numberIndicatorPaths.controls; let i=index"
387
           [formGroup]="indicatorPath">
388
        <div class="uk-grid-medium uk-form-row uk-flex uk-flex-middle" uk-grid>
389
          <div class="uk-width-2-3@s">
390
            <div dashboard-input [formInput]="indicatorPath.get('url')" type="textarea" rows="3"
391
                 label="Number path url"></div>
392
          </div>
393
          <div class="uk-width-1-3@s">
394
            <div dashboard-input [formInput]="indicatorPath.get('source')" label="Source"
395
                 type="select" [options]="indicatorUtils.sourceTypes">
396
            </div>
397
          </div>
398
        </div>
399
        <div formArrayName="jsonPath">
400
          <div class="uk-margin-top uk-margin-bottom uk-text-large">
401
            JSON Path
402
          </div>
403
          <div class="uk-grid uk-grid-medium" uk-grid>
404
            <div *ngFor="let jsonPath of getJsonPath(i).controls; let j=index" class="uk-flex uk-flex-middle">
405
              <div dashboard-input class="uk-width-small"
406
                   [formInput]="jsonPath"
407
                   [label]="'Level ' + +(j + 1)"></div>
408
              <i *ngIf="getJsonPath(i).length !== 1"
409
                 class="material-icons md-24 uk-margin-left uk-text-danger clickable" (click)="removeJsonPath(i, j)">close</i>
410
              <div *ngIf="j < (getJsonPath(i).length - 1)" class="uk-text-center uk-margin-left">
411
                <i class="material-icons">arrow_forward</i>
412
              </div>
413
              <div *ngIf="j === (getJsonPath(i).length - 1)" class="uk-margin-left">
414
                <button class="md-btn md-btn-small md-btn-primary" (click)="addJsonPath(i)">Add level</button>
415
              </div>
416
            </div>
417
          </div>
418
        </div>
419
      </div>
420
    </div>
421
  </div>
422
</modal-alert>
423
<modal-alert #editChartModal
424
             [classBody]="'large-modal'"
425
             (alertOutput)="saveIndicator()"
426
             [okDisabled]="chartIndicatorFb && (chartIndicatorFb.invalid || chartIndicatorFb.pristine)">
427
  <div *ngIf="chartIndicatorFb" class="uk-padding-small" [formGroup]="chartIndicatorFb">
428
    <div dashboard-input class="uk-form-row" [formInput]="chartIndicatorFb.get('name')" label="Title"></div>
429
    <div dashboard-input class="uk-form-row" [formInput]="chartIndicatorFb.get('description')"
430
         label="Description" type="textarea">
431
    </div>
432
    <div class="uk-form-row uk-flex uk-flex-middle">
433
      <div dashboard-input class="uk-width-small" [formInput]="chartIndicatorFb.get('isPublic')"
434
           label="Accessibility" [options]="indicatorUtils.isPublic" type="select">
435
      </div>
436
      <div dashboard-input class="uk-margin-small-left uk-width-small" [formInput]="chartIndicatorFb.get('isActive')"
437
           label="Visibility" [options]="indicatorUtils.isActive" type="select">
438
      </div>
439
      <div dashboard-input class="uk-margin-small-left uk-width-small" [formInput]="chartIndicatorFb.get('width')"
440
           type="select" [options]="indicatorUtils.indicatorSizes"
441
           label="Chart Size">
442
      </div>
443
    </div>
444
    <h5 class="uk-text-bold uk-margin-top uk-margin-bottom">
445
      Chart Settings
446
    </h5>
447
    <div *ngIf="chartIndicatorPaths" formArrayName="indicatorPaths">
448
      <div *ngFor="let indicatorPath of chartIndicatorPaths.controls; let i=index"
449
           [formGroup]="indicatorPath">
450
        <div dashboard-input class="uk-form-row"
451
             [title]="indicatorPath.get('url').disabled?'Default chart URLs cannot change':''"
452
             [formInput]="indicatorPath.get('url')"
453
             label="Chart Url"></div>
454
        <div *ngIf="urlParameterizedMessage.length > 0" class="uk-alert-warning uk-alert">
455
          {{urlParameterizedMessage}}
456
        </div>
457
        <div formArrayName="parameters">
458
          <div *ngIf="getParameter(i, 'title')" class="uk-form-row">
459
            <div dashboard-input
460
                 [formInput]="getParameter(i, 'title').get('value')"
461
                 label="Chart Title"></div>
462
          </div>
463
          <div *ngIf="getParameter(i, 'subtitle')" class="uk-form-row">
464
            <div dashboard-input
465
                 [formInput]="getParameter(i, 'subtitle').get('value')"
466
                 label="Chart Subtitle"></div>
467
          </div>
468
          <div class="uk-grid-medium uk-form-row" uk-grid>
469
            <div *ngIf="!getParameter(i, 'type')" class="uk-width-1-3@s">
470
              <div dashboard-input [formInput]="indicatorPath.get('type')"
471
                   type="select"
472
                   [options]="(indicatorPath.get('type').value == 'table' && getParameter(i, 'data_title_0'))?indicatorUtils.getChartTypes(indicatorPath.get('type').value):indicatorUtils.allChartTypes"
473
                   label="Chart Type"></div>
474
            </div>
475
            <div *ngIf="getParameter(i, 'type')" class="uk-width-1-3@s">
476
              <div dashboard-input [formInput]="getParameter(i, 'type').get('value')"
477
                   type="select" [options]="indicatorUtils.getChartTypes(getParameter(i, 'type').get('value').value)"
478
                   label="Chart Type"></div>
479
            </div>
480
            <div *ngIf="getParameter(i, 'xAxisTitle')" class="uk-width-1-3@s">
481
              <div dashboard-input [formInput]="getParameter(i, 'xAxisTitle').get('value')"
482
                   label="X-Axis Title"></div>
483
            </div>
484
            <div *ngIf="getParameter(i, 'yAxisTitle')" class="uk-width-1-3@s">
485
              <div dashboard-input [formInput]="getParameter(i, 'yAxisTitle').get('value')"
486
                   label="Y-Axis Title"></div>
487
            </div>
488
            <div *ngIf="getParameter(i, 'data_title_0')" class="uk-width-1-3@s">
489
              <div dashboard-input [formInput]="getParameter(i, 'data_title_0').get('value')"
490
                   label="Data title"></div>
491
            </div>
492
            <div *ngIf="getParameter(i, 'data_title_1')" class="uk-width-1-3@s">
493
              <div dashboard-input [formInput]="getParameter(i, 'data_title_1').get('value')"
494
                   label="Data title"></div>
495
            </div>
496
            <div *ngIf="getParameter(i, 'start_year')" class="uk-width-1-3@s">
497
              <div dashboard-input [formInput]="getParameter(i, 'start_year').get('value')"
498
                   label="Year (From)"></div>
499
            </div>
500
            <div *ngIf="getParameter(i, 'end_year')" class="uk-width-1-3@s">
501
              <div dashboard-input [formInput]="getParameter(i, 'end_year').get('value')"
502
                   label="Year (To)"></div>
503
            </div>
504
          </div>
505
        </div>
506
        <div *ngIf="indicator && indicator.indicatorPaths[i] && indicator.indicatorPaths[i].safeResourceUrl"
507
             class="uk-margin-medium-top uk-position-relative">
508
          <div *ngIf="(hasDifference(i)) && !indicatorPath.invalid"
509
               class="uk-width-1-1 uk-height-medium refresh-iframe">
510
            <div class="uk-position-relative uk-height-1-1">
511
              <div class="uk-position-center md-color-white uk-text-center clickable"
512
                   (click)="refreshIndicator()">
513
                <div><i class="material-icons md-color-white">refresh</i></div>
514
                <span>Click to refresh the graph view</span>
515
              </div>
516
            </div>
517
          </div>
518
          <iframe *ngIf="indicator.indicatorPaths[i].source !== 'image'"
519
                  [src]="indicator.indicatorPaths[i].safeResourceUrl"
520
                  class="uk-width-1-1 uk-height-medium"></iframe>
521
          <div *ngIf="indicator.indicatorPaths[i].source === 'image'">
522
            <img class="uk-width-1-1 uk-height-medium" [src]="indicator.indicatorPaths[i].url">
523
          </div>
524
        </div>
525
      </div>
526
    </div>
527
  </div>
528
</modal-alert>
529
<modal-alert #deleteModal (alertOutput)="deleteIndicator()">
530
  You are about to delete <span class="uk-text-bold" *ngIf="indicator && index !== -1">
531
  "{{indicator.name ? indicator.name : indicator.indicatorPaths[0].parameters.title}}"</span> indicator permanently.
532
  Are you sure you want to proceed?
533
</modal-alert>
534
<modal-alert #deleteNumberSectionModal (alertOutput)="deleteSection('number')">
535
  You are about to delete this section and his indicators permanently.
536
  Are you sure you want to proceed?
537
</modal-alert>
538
<modal-alert #deleteChartSectionModal (alertOutput)="deleteSection()">
539
  You are about to delete this section and his indicators permanently.
540
  Are you sure you want to proceed?
541
</modal-alert>
(1-1/6)