Project

General

Profile

1
<aside id="sidebar_main">
2
  <div id="sidebar_content">
3
    <div class="menu_section  uk-margin-top">
4
      <div class="uk-text-center">
5
        <a [routerLink]="'/admin/' + stakeholder.alias"
6
           class="uk-link-heading uk-text-uppercase uk-flex uk-flex-middle uk-flex-center">
7
          <icon name="close" ratio="2"></icon>
8
          <span *ngIf="open" class="uk-margin-left">Indicators</span>
9
        </a>
10
      </div>
11
      <div class="menu_section uk-margin-xlarge-top">
12
        <ul class="uk-list">
13
          <ng-template ngFor [ngForOf]="stakeholder.topics" let-topic let-i="index">
14
            <li class="uk-visible-toggle"
15
                [class.uk-active]="topicIndex == i">
16
              <a [routerLink]="'/admin/'+stakeholder.alias + '/indicators/' + topic.alias"
17
                 class="uk-flex uk-flex-middle" [title]="topic.name">
18
                <span *ngIf="topic.icon"></span>
19
                <div class="uk-width-expand uk-position-relative uk-flex uk-flex-middle"
20
                     [class.uk-flex-center]="open">
21
                  <span class="uk-flex-none">
22
                    <ng-container *ngTemplateOutlet="visibilityOptions; context:
23
                    {i:i, type: 'topic', visibility: stakeholder.topics[i].visibility}">
24
                    </ng-container>
25
                  </span>
26
                  <span [class.uk-text-center]="open"
27
                        [class.uk-text-truncate]="!open" [class.uk-width-3-5]="!open">{{topic.name}}</span>
28
                  <span class="uk-invisible-hover color"
29
                        (click)="$event.stopPropagation();$event.preventDefault()">
30
                    <span class="uk-icon more" uk-icon="more-vertical"></span>
31
                    <div #element uk-dropdown="mode: click; pos: bottom-right; offset: 5; delay-hide: 0; flip: false">
32
                      <ul class="uk-nav uk-dropdown-nav uk-list">
33
                        <li><a (click)="editTopicOpen(i); hide(element)">Edit</a></li>
34
                        <ng-template ngFor [ngForOf]="stakeholderUtils.visibility" let-v>
35
                          <li *ngIf="topic.visibility != v.value"><a (click)="changeTopicStatus(i, v.value);
36
                                                                    hide(element)">
37
                            {{'Make ' + v.label.toLowerCase()}}</a>
38
                          </li>
39
                        </ng-template>
40
                        <hr *ngIf="!topic.defaultId" class="uk-nav-divider">
41
                        <li *ngIf="!topic.defaultId"><a (click)="deleteTopicOpen(i, 'delete'); hide(element)">Delete</a>
42
                          <!--                        <ng-container *ngIf="!stakeholder.defaultId">-->
43
                          <!--                          <a (click)="deleteTopicOpen(i, 'delete'); hide(element)">Delete from all profiles</a>-->
44
                          <!--                          <a (click)="deleteTopicOpen(i, 'disconnect'); hide(element)">Delete and disconnect from all profiles</a>-->
45
                          <!--                        </ng-container>-->
46
                        </li>
47
                      </ul>
48
                    </div>
49
                  </span>
50
                </div>
51
              </a>
52
            </li>
53
          </ng-template>
54
          <li class="uk-margin-top" [class.uk-visible-toggle]="open">
55
            <span (click)="editTopicOpen(-1); $event.preventDefault()"
56
                  class="clickable uk-flex uk-flex-middle uk-flex-center">
57
              <span class="uk-icon-button small portal-icon-button">
58
                <icon name="add"></icon>
59
              </span>
60
              <span [class.uk-hidden-hover]="stakeholder.topics.length > 0" class="space" [class.uk-hidden]="!open"> Create new topic</span>
61
            </span>
62
          </li>
63
        </ul>
64
      </div>
65
      <div *ngIf="stakeholder && stakeholder.topics.length > 0" class="uk-position-bottom uk-margin-bottom">
66
        <div class="uk-flex uk-flex-center">
67
          <!--<a class="portal-icon-button uk-icon-button icon-button-small uk-margin-right"  uk-tooltip="Help">
68
            <i uk-icon="icon:question;ratio:0.7" class="uk-icon"></i>
69
          </a>-->
70
          <a class="portal-icon-button uk-icon-button small" uk-tooltip="Preview">
71
            <icon name="preview" [ratio]="0.7"></icon>
72
          </a>
73
          <div #element uk-dropdown="mode: click; pos: top-left; offset: 5; delay-hide: 0; flip: false"
74
               class="uk-padding-remove-horizontal">
75
            <ul class="uk-nav uk-dropdown-nav">
76
              <li><a target="_blank" [routerLink]="'/' + stakeholder.alias + '/' + stakeholder.topics[topicIndex].alias"
77
                     [queryParams]="{view: 'public'}"
78
                     (click)="hide(element)">Public view</a>
79
              </li>
80
              <li><a target="_blank" [routerLink]="'/' + stakeholder.alias + '/' +
81
              stakeholder.topics[topicIndex].alias"
82
                     [queryParams]="{view: 'restricted'}"
83
                     (click)="hide(element)">Restricted view</a>
84
              </li>
85
              <!--<li class="disabled"><a class="uk-disabled uk-text-muted"
86
                                  uk-tooltip="Note: available only in administration dashboard"
87
                     (click)="hide(element)">Private view</a>
88
              </li>-->
89
            </ul>
90
          </div>
91
        </div>
92
      </div>
93
    </div>
94
  </div>
95
  <div *ngIf="!isSmallScreen" id="sidebar_switcher_toggle" class="clickable "
96
       (click)="toggleOpen($event)">
97
    <span class="uk-position-center" *ngIf="!open" uk-icon="icon:chevron-right; ratio: 1.5"></span>
98
    <span class="uk-position-center" *ngIf="open" uk-icon="icon: chevron-left; ratio:1.5"></span>
99
  </div>
100
</aside>
101
<div *ngIf="stakeholder && filters" page-content>
102
  <div header>
103
    <nav>
104
      <div *ngIf="stakeholder.topics.length > 0 && stakeholder.topics[topicIndex]">
105
        <ul *ngIf="stakeholder.topics[topicIndex]"
106
            class="customTabs uk-tab admin uk-flex uk-flex-middle" visibility="true">
107
          <ng-template ngFor [ngForOf]="stakeholder.topics[topicIndex].categories" let-category let-i="index">
108
            <li class="uk-visible-toggle uk-flex uk-flex-middle"
109
                [class.uk-active]="category.alias === stakeholder.topics[topicIndex].categories[categoryIndex].alias">
110
              <span class="uk-flex-none">
111
                <ng-container *ngTemplateOutlet="visibilityOptions; context:
112
                    {i:i, type: 'cat',
113
                    visibility: stakeholder.topics[topicIndex].categories[i].visibility}">
114
                </ng-container>
115
              </span>
116
              <a (click)="toggleCategory(i)">
117
                <span class="title"> {{category.name}}</span>
118
              </a>
119
              <span class="uk-invisible-hover" (click)="$event.stopPropagation();$event.preventDefault()">
120
                    <span class="uk-icon clickable" uk-icon="more-vertical"></span>
121
                    <div #element uk-dropdown="mode: click; pos: bottom-right; offset: 5; delay-hide: 0; flip: false">
122
                      <ul class="uk-nav uk-dropdown-nav">
123
                        <li><a (click)="editCategoryOpen(i); hide(element)">Edit</a></li>
124
                        <ng-template ngFor [ngForOf]="stakeholderUtils.visibility" let-v>
125
                          <li *ngIf="category.visibility != v.value"><a (click)="changeCategoryStatus(i, v.value);
126
                                                                    hide(element)">
127
                            {{'Make ' + v.label.toLowerCase()}}</a>
128
                          </li>
129
                        </ng-template>
130
                        <hr *ngIf="!stakeholder.topics[topicIndex].categories[i].defaultId" class="uk-nav-divider">
131
                        <li *ngIf="!stakeholder.topics[topicIndex].categories[i].defaultId"><a
132
                            (click)="deleteCategoryOpen(i, 'delete'); hide(element)">Delete</a>
133
                        </li>
134
                      </ul>
135
                    </div>
136
                  </span>
137
            </li>
138
          </ng-template>
139
          <li class="uk-visible-toggle">
140
              <span (click)="editCategoryOpen(); $event.preventDefault()" class="clickable">
141
                <span class="uk-icon-button small portal-icon-button">
142
                  <icon name="add"></icon>
143
                </span>
144
                <span [class.uk-hidden-hover]="stakeholder.topics[topicIndex].categories.length > 0" class="space">Create new category</span>
145
              </span>
146
          </li>
147
        </ul>
148
      </div>
149
    </nav>
150
    <ul *ngIf="stakeholder.topics.length > 0 && stakeholder.topics[topicIndex].categories.length > 0 && stakeholder.topics[topicIndex].categories[categoryIndex]"
151
        visibility="true" class="uk-subnav uk-subnav-pill subCategoriesTabs admin uk-flex uk-flex-middle">
152
      <ng-template ngFor [ngForOf]="stakeholder.topics[topicIndex].categories[categoryIndex].subCategories"
153
                   let-subCategory let-i="index">
154
        <li [class.uk-active]="(subCategory.alias ===
155
              stakeholder.topics[topicIndex].categories[categoryIndex].subCategories[subCategoryIndex].alias)"
156
            class="uk-visible-toggle uk-position-relative uk-padding-remove-horizontal">
157
            <span>
158
              <span class="uk-flex-none">
159
                <ng-container *ngTemplateOutlet="visibilityOptions; context:
160
                  {i:i, type: 'sub',
161
                  visibility: stakeholder.topics[topicIndex].categories[categoryIndex].subCategories[i].visibility}">
162
                </ng-container>
163
              </span>
164
              <a (click)="chooseSubcategory(categoryIndex, i);$event.preventDefault()"
165
                 class="space">
166
                <span>{{subCategory.name}}</span>
167
              </a>
168
              <span class="uk-invisible-hover uk-position-center-right color"
169
                    (click)="$event.stopPropagation();$event.preventDefault()">
170
                  <span class="clickable" uk-icon="more-vertical"></span>
171
                  <div #element uk-dropdown="mode: click; pos: bottom-right; offset: 10; delay-hide: 0; flip: false">
172
                    <ul class="uk-nav uk-dropdown-nav">
173
                      <li><a (click)="editSubCategoryOpen(i); hide(element)">Edit</a></li>
174
                      <ng-template ngFor [ngForOf]="stakeholderUtils.visibility" let-v>
175
                        <li *ngIf="subCategory.visibility != v.value"><a (click)="changeSubcategoryStatus(i, v.value);
176
                                                                  hide(element)">
177
                          {{'Make ' + v.label.toLowerCase()}}</a>
178
                        </li>
179
                      </ng-template>
180
                      <hr *ngIf="!stakeholder.topics[topicIndex].categories[categoryIndex].subCategories[i].defaultId"
181
                          class="uk-nav-divider">
182
                      <li *ngIf="!stakeholder.topics[topicIndex].categories[categoryIndex].subCategories[i].defaultId"><a
183
                          (click)="deleteSubcategoryOpen(i, 'delete'); hide(element)">Delete</a>
184

    
185
                      </li>
186
                    </ul>
187
                  </div>
188
                </span>
189
            </span>
190
        </li>
191
      </ng-template>
192
      <li class="uk-visible-toggle">
193
            <span (click)="editSubCategoryOpen(); $event.preventDefault()" class="clickable">
194
              <span class="uk-icon-button small portal-icon-button">
195
                <icon name="add"></icon>
196
              </span>
197
              <span [class.uk-hidden-hover]="stakeholder.topics[topicIndex].categories[selectedCategoryIndex].subCategories.length > 0" class="space">Create new subcategory</span>
198
            </span>
199
      </li>
200
    </ul>
201
    <!--<div class="uk-grid uk-margin-medium" uk-grid>
202
      <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>
203
        <div>
204
          <div dashboard-input [formInput]="filters.get('chartType')"
205
               type="select" [options]="[all].concat(indicatorUtils.allChartTypes)"
206
               label="Chart Type"></div>
207
        </div>
208
        <div>
209
          <div dashboard-input [formInput]="filters.get('status')"
210
               type="select" [options]="[all].concat(stakeholderUtils.visibility)"
211
               label="Status"></div>
212
        </div>
213
      </div>
214
      <div class="uk-width-expand@m uk-width-1-1 uk-flex uk-flex-middle uk-flex-right">
215
        <div class="uk-inline uk-width-medium">
216
          <span class="uk-position-center-right"><i uk-icon="search" class="uk-icon"></i></span>
217
          <div dashboard-input [formInput]="filters.get('keyword')" label="Locate indicator"></div>
218
        </div>
219

    
220
      </div>
221
    </div>-->
222
  </div>
223
  <div inner>
224
    <indicators [properties]="properties"
225
                [topicIndex]="topicIndex"
226
                [categoryIndex]="categoryIndex"
227
                [filters]="filters"
228
                [subcategoryIndex]="subCategoryIndex"></indicators>
229
  </div>
230
</div>
231
<modal-alert #deleteModal (alertOutput)="deleteElement()">
232
  You are about to delete <span class="uk-text-bold" *ngIf="element">"{{element.name}}"</span> {{type}} permanently.
233
  <div *ngIf="elementChildrenActionOnDelete == 'delete'" class="uk-text-bold">
234
    {{getPluralTypeName()}} of all profiles based on this default {{type}}, will be deleted as well.
235
  </div>
236
  Are you sure you want to proceed?
237
</modal-alert>
238

    
239
<modal-alert #editModal (alertOutput)="saveElement()" [okDisabled]="form && (form.invalid || form.pristine)">
240
  <div *ngIf="form" class="uk-grid uk-padding uk-padding-remove-horizontal uk-child-width-1-1" [formGroup]="form"
241
       uk-grid>
242
    <div dashboard-input [formInput]="form.get('name')" label="Title"></div>
243
    <div dashboard-input [formInput]="form.get('description')"
244
         label="Description" type="textarea">
245
    </div>
246
    <div *ngIf="form.get('icon')" dashboard-input [formInput]="form.get('icon')"
247
         label="Icon(SVG)" type="textarea">
248
    </div>
249
    <div dashboard-input [formInput]="form.get('visibility')"
250
         label="Status" [options]="stakeholderUtils.visibility" type="select">
251
    </div>
252
  </div>
253
</modal-alert>
254

    
255

    
256
<ng-template #visibilityOptions let-type="type" let-i="i" let-visibility="visibility">
257
   <span class="uk-invisible-hover" (click)="$event.stopPropagation();$event.preventDefault()">
258
      <span class="clickable visibility small">
259
        <icon [name]="stakeholderUtils.visibilityIcon.get(visibility)" [ratio]="0.5"></icon>
260
      </span>
261
      <div #element uk-dropdown="mode: click; pos: bottom-left; delay-hide: 0; flip: false">
262
        <ul class="uk-nav uk-dropdown-nav">
263
          <li *ngFor="let v of stakeholderUtils.visibility">
264
            <a *ngIf="visibility != v.value"
265
               (click)="$event.stopPropagation();toggleStatusByIndex(i, v.value, type);hide(element);$event.preventDefault()">
266
              <icon [name]="stakeholderUtils.visibilityIcon.get(v.value)" ratio="0.8"></icon>
267
              <span> {{v.label}}</span>
268
            </a>
269
            <a *ngIf="visibility == v.value" class="uk-position-relative">
270
              <icon [name]="stakeholderUtils.visibilityIcon.get(v.value)" [ratio]="0.8"></icon>
271
              <span> {{v.label}}</span>
272
              <span class="uk-position-center-right">
273
                <icon customClass="uk-text-secondary" [ratio]="0.5" name="bullet"></icon>
274
              </span>
275
            </a>
276
          </li>
277
        </ul>
278
      </div>
279
   </span>
280
</ng-template>
(5-5/7)