Project

General

Profile

1
<ng-template #selected_filters_pills>
2
  <h1 class="uk-grid uk-grid-small uk-text-small" uk-grid>
3
    <ng-container *ngIf="customFilter && ((customFilterEnabled &&
4
    refineFields.indexOf(customFilter.queryFieldName) ==
5
    -1) ||customFilter.isHiddenFilter)">
6
     <span class="">
7
        <span class="selectedFilterLabel customFilterLabel">
8
            <span class="">{{' '+customFilter.valueName}}</span>
9
        </span>
10
      </span>
11
    </ng-container>
12
    <ng-container *ngIf=" resultTypes && resultTypes.countSelectedValues > 0">
13
      <ng-container *ngFor="let type of resultTypes.values; let i = index;  let end = last; ">
14
        <ng-container *ngIf="type.selected">
15
         <span [title]="'Remove '+ type.name" (click)="removeResultType(type.id) "
16
               [class]="((disableForms || disableRefineForms) ? 'uk-disabled' : 'clickable')">
17
            <span class="selectedFilterLabel ">
18
              <a class="uk-link-text">
19
                <span aria-hidden="true">
20
                  <span class="uk-icon">
21
                    <svg width="16" height="16" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" icon="close"
22
                         ratio="0.8"><path fill="none" stroke="#000" stroke-width="1.6" d="M16,16 L4,4"></path><path
23
                      fill="none" stroke="#000" stroke-width="1.6" d="M16,4 L4,16"></path></svg>
24
                  </span>
25
                </span>
26
                <span class="uk-margin-small-left">{{' '+type.name}}</span>
27
              </a>
28
            </span>
29
          </span>
30
        </ng-container>
31
      </ng-container>
32
    </ng-container>
33
    <ng-container *ngIf="selectedRangeFilters > 0">
34
      <ng-container *ngFor="let filter of rangeFilters ">
35
        <ng-container *ngIf="filter.selectedFromAndToValues">
36
                        <span [title]="'Remove '+ filter.selectedFromAndToValues" (click)="removeRangeFilter(filter) "
37
                              [class]="((disableForms || disableRefineForms) ? 'uk-disabled' : 'clickable') ">
38
                          <span class="selectedFilterLabel ">
39
                            <a class="uk-link-text">
40
                              <span aria-hidden="true">
41
                                <span class="uk-icon">
42
                                  <svg width="16" height="16" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"
43
                                       icon="close" ratio="0.8"><path fill="none" stroke="#000" stroke-width="1.6"
44
                                                                      d="M16,16 L4,4"></path><path fill="none"
45
                                                                                                   stroke="#000"
46
                                                                                                   stroke-width="1.6"
47
                                                                                                   d="M16,4 L4,16"></path></svg>
48
                                </span>
49
                              </span>
50
                              <span class="uk-margin-small-left">{{' '+filter.selectedFromAndToValues}}</span>
51
                            </a>
52
                          </span>
53
                        </span>
54
        </ng-container>
55
      </ng-container>
56
    </ng-container>
57
    <ng-container *ngFor="let filter of filters ">
58
      <ng-container *ngIf="filter.countSelectedValues > 0">
59
        <ng-container *ngFor="let value of getSelectedValues(filter); let i = index;  let end = last; ">
60
              <span *ngIf="!customFilter || (customFilter.isHiddenFilter && customFilter.valueId != value.id)"
61
                    [title]="'Remove '+value.name"
62
                    (click)="removeFilter(value, filter) "
63
              [class]="((disableForms || disableRefineForms) ? 'uk-disabled' : 'clickable') + '  '">
64
                        <!-- if no grid on the div above, remove it and move class 'selectedFilterLabel' on top span -->
65
                        <span class="selectedFilterLabel ">
66
                          <a class="uk-link-text">
67
                            <span aria-hidden="true">
68
                              <span class="uk-icon">
69
                                <svg width="16" height="16" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"
70
                                     icon="close" ratio="0.8"><path fill="none" stroke="#000" stroke-width="1.6"
71
                                                                    d="M16,16 L4,4"></path><path fill="none"
72
                                                                                                 stroke="#000"
73
                                                                                                 stroke-width="1.6"
74
                                                                                                 d="M16,4 L4,16"></path></svg>
75
                              </span>
76
                            </span>
77
                            <span class="uk-margin-small-left"
78
                                  [innerHtml]="' ' +
79
                                  ((value.name.length > 34)?value.name.substring(0,34)+'...':value.name)"></span>
80
                          </a>
81
                        </span>
82
                      </span>
83
          </ng-container>
84
      </ng-container>
85
    </ng-container>
86
  </h1>
87
</ng-template>
88
<ng-template #filters_column>
89
  <div [class.filterLoading]="(disableForms || disableRefineForms)">
90
  <div class="uk-width-1-1 uk-margin-top" >
91
    <div class="uk-grid uk-flex uk-flex-bottom">
92
<!--      *ngIf="(selectedRangeFilters+selectedFilters + selectedTypesNum  > 0)
93
|| (filters.length > 0 && (results.length > 0 || disableForms))"-->
94
      <h6 class="uk-text-bold">
95
        Filters
96
      </h6>
97
      <a *ngIf="(selectedRangeFilters+selectedFilters + selectedTypesNum)>1" (click)="clearFilters()"
98
         [class]="((disableForms || disableRefineForms)?'uk-disabled uk-link-muted':'')+'  portal-link ' + 'uk-width-1-2'">
99
        Clear All
100
      </a>
101
    </div>
102
    <div *ngIf="selectedRangeFilters+selectedFilters + selectedTypesNum  > 0 || (customFilter && (customFilter.selected
103
     == true || customFilter.isHiddenFilter))"
104
         class="uk-margin-small-top  uk-margin-medium-bottom">
105
      <ng-container *ngTemplateOutlet="selected_filters_pills; context: {}"></ng-container>
106
    </div>
107
  </div>
108
  <div *ngIf="searchUtils.refineStatus == errorCodes.LOADING && existingFiltersWithValues === 0"
109
       class="'uk-animation-fade uk-margin-top  uk-width-1-1" role="alert">
110
    <span class="loading-gif  uk-align-center" ></span>
111
  </div>
112
  <div *ngIf="searchUtils.refineStatus != errorCodes.LOADING && searchUtils.refineStatus != errorCodes.DONE && results.length > 0"
113
       class="uk-margin-top uk-text-meta">
114
    <span *ngIf="searchUtils.refineStatus == errorCodes.NONE">No filters available</span>
115
    <span *ngIf="searchUtils.refineStatus != errorCodes.NONE" class="uk-text-warning">Filters temporarily unavailable. Please try again later.</span>
116
  </div>
117
  <ul *ngIf="!showUnknownFilters"
118
      [class]="'uk-list uk-list-divider' + (selectedRangeFilters == 0 && selectedFilters == 0 ? ' uk-margin-small-top' : '')">
119
    <!--    searchUtils.refineStatus == errorCodes.DONE &&-->
120
    <ng-container *ngIf="filters.length > 0 && filters[0].values.length >0 && filters[0].filterId == 'resultbestaccessright'">
121
      <li>
122
        <search-filter [filterValuesNum]="filterValuesNum" [showMoreInline]="showMoreFilterValuesInline"
123
                       [isDisabled]="disableForms || disableRefineForms"
124
                       [filter]="filters[0]" [showResultCount]=showResultCount
125
                       (onFilterChange)="filterChanged($event)" [quickFilter]="quickFilter"
126
                       [actionRoute]="true"></search-filter>
127
      </li>
128
    </ng-container>
129
    <li *ngIf="resultTypes && (filters.length > 0)">
130
      <quick-selections [resultTypes]="resultTypes" (typeChange)="queryChanged($event)"
131
                        [isDisabled]="disableForms || disableRefineForms" [vertical]="true"
132
                        [properties]="properties" [actionRoute]="true">
133
      </quick-selections>
134
    </li>
135
    <ng-container *ngFor="let filter of rangeFilters">
136
      <li>
137
        <range-filter [isDisabled]="disableForms || disableRefineForms" [filter]="filter"
138
                      (onFilterChange)="filterChanged($event)" [actionRoute]="true"></range-filter>
139
      </li>
140
    </ng-container>
141
    <ng-container *ngFor="let filter of filters ">
142
      <li *ngIf="filter.values && filter.values.length > 0 && filter.filterId != 'resultbestaccessright'">
143
        <search-filter [filterValuesNum]="filterValuesNum" [showMoreInline]="showMoreFilterValuesInline"
144
                       [isDisabled]="disableForms || disableRefineForms"
145
                       [filter]="filter" [showResultCount]=showResultCount
146
                       (onFilterChange)="filterChanged($event)" [actionRoute]="true"></search-filter>
147
      </li>
148
    </ng-container>
149
  </ul>
150
  </div>
151
</ng-template>
152
<div *ngIf="!includeOnlyResultsAndFilter" [class]="usedBy != 'deposit' && usedBy != 'orcid' && (!customFilter || customFilter.queryFieldName != 'communityId') ?
153
     (stickyForm?'':' uk-position-relative ') :
154
    (+ (stickyForm?'':' uk-section') +' uk-padding-remove-bottom  uk-padding-remove-top ' +
155
    ((usedBy == 'deposit' || usedBy == 'orcid') ? ' uk-padding-remove-top ' : ' '))"
156
     [attr.uk-sticky]="(stickyForm?'{animation:false;offset:100;top:90;cls-active:uk-active uk-sticky-below;cls-inactive:uk-sticky '+
157
     (usedBy != 'deposit' && usedBy != 'orcid' && (!customFilter || customFilter.queryFieldName != 'communityId') ?
158
    '  uk-position-relative ' :(' uk-section '  ))+'}':null)">
159
  <div style="box-sizing: border-box;  "
160
       [class]="' uk-background-norepeat  uk-background-bottom-center   uk-padding-remove-bottom  uk-flex uk-flex-middle uk-background-fixed '+searchFormClass
161
              + (usedBy != 'deposit' && usedBy != 'orcid' && (!customFilter || customFilter.queryFieldName != 'communityId') && !dashboard ?
162
              ' image-front-topbar searchFormMinHeight uk-padding-remove-bottom uk-section' : '')
163
              +(simpleView?'':' advancedSearchFormBackground ')">
164
    <div class="uk-width-1-1">
165
      <breadcrumbs *ngIf="showBreadcrumb && entityType!='community'"
166
                   addClass=" uk-margin-large-left uk-margin-remove-bottom uk-margin-small-top"
167
                   [breadcrumbs]="breadcrumbs"></breadcrumbs>
168
      <div class="uk-position-relative">
169
        <div [class]="'uk-container '+(customFilter && customFilter.queryFieldName ==
170
           'communityId'?'  uk-margin-large-bottom ':'uk-margin-top')+
171
           (entityType === 'community' ||entityType === 'stakeholder'?' uk-position-relative':'')" id="searchForm">
172
          <advanced-search-form
173
            [entityType]="entityType"
174
            [fieldIds]="fieldIds"
175
            [fieldIdsMap]="fieldIdsMap"
176
            [selectedFields]="selectedFields"
177
            (queryChange)="queryChanged($event)"
178
            [isDisabled]="disableForms || disableRefineForms"
179
            [simpleSearchLink]="simpleSearchLink"
180
            [advancedSearchLink]="advancedSearchLink"
181
            [advancedSearchLinkParameters]
182
                  ="this.routerHelper.createQueryParams(this.parameterNames, this.parameterValues)"
183
             [simpleView]="simpleView" [formPlaceholderText]="formPlaceholderText"
184
            [resultTypes]="resultTypes" [quickFilter]="quickFilter" [entitiesSelection]="entitiesSelection"
185
            [showSwitchSearchLink]="showSwitchSearchLink" [customFilter]="customFilter"
186
          >
187
          </advanced-search-form>
188
          <div *ngIf="entityType === 'community' || entityType === 'stakeholder' " class="uk-position-center-right uk-visible@m">
189
            <img src="assets/common-assets/common/search.svg" class="uk-align-center" width="141" height="171" loading="lazy">
190
          </div>
191
        </div>
192
      </div>
193
    </div>
194
  </div>
195
</div>
196
<schema2jsonld *ngIf="url" [URL]="url" type="search" [name]=pageTitleWithFilters
197
               [searchAction]=false [description]="metaDescription" ></schema2jsonld>
198

    
199

    
200
<div id="tm-main" class="   tm-middle" [class.uk-margin-top]="stickyForm">
201
  <div uk-grid>
202
    <div class="tm-main uk-width-1-1@s uk-width-1-1@m  uk-width-1-1@l uk-row-first ">
203
      <!--      <breadcrumbs *ngIf="showBreadcrumb && entityType!='community'"-->
204
      <!--                   addClass="uk-margin-large-left uk-margin-remove-bottom uk-margin-small-top" [breadcrumbs]="breadcrumbs"></breadcrumbs>-->
205
      <div class="uk-container uk-container-large">
206
        <div>
207
          <breadcrumbs *ngIf="showBreadcrumb && entityType=='community'"
208
                       addClass=" " [breadcrumbs]="breadcrumbs"></breadcrumbs>
209
          <helper *ngIf="pageContents && pageContents['top'] && pageContents['top'].length > 0"
210
                  [texts]="pageContents['top']"></helper>
211
          <div [class]="(showRefine && !properties.isDashboard)? 'uk-width-4-5@m  uk-width-4-5@l  uk-width-1-1@s' :'uk-width-1-1'">
212
            <div *ngIf="showRefine && !dashboard" class="uk-offcanvas-content uk-hidden@m  uk-margin-top">
213

    
214
              <a href="#offcanvas-usage" uk-toggle>
215
                <span class="uk-icon uk-margin-small-right uk-margin-small-left">
216
                  <svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"
217
                       data-svg="settings">
218
                    <ellipse fill="none" stroke="#000" cx="6.11" cy="3.55" rx="2.11" ry="2.15"></ellipse>
219
                    <ellipse fill="none" stroke="#000" cx="6.11" cy="15.55" rx="2.11" ry="2.15"></ellipse>
220
                    <circle fill="none" stroke="#000" cx="13.15" cy="9.55" r="2.15"></circle>
221
                    <rect x="1" y="3" width="3" height="1"></rect>
222
                    <rect x="10" y="3" width="8" height="1"></rect>
223
                    <rect x="1" y="9" width="8" height="1"></rect>
224
                    <rect x="15" y="9" width="3" height="1"></rect>
225
                    <rect x="1" y="15" width="3" height="1"></rect>
226
                    <rect x="10" y="15" width="8" height="1"></rect>
227
                  </svg>
228
                </span>
229
                <span>Filters <span
230
                    *ngIf="(selectedRangeFilters+selectedFilters) > 0">({{(selectedRangeFilters + selectedFilters)}})</span></span>
231
                <!--                <svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" ratio="1">-->
232
                <!--                  <rect x="6" y="4" width="12" height="1"></rect><rect x="6" y="9" width="12" height="1"></rect>-->
233
                <!--                  <rect x="6" y="14" width="12" height="1"></rect>-->
234
                <!--                  <rect x="2" y="4" width="2" height="1"></rect>-->
235
                <!--                  <rect x="2" y="9" width="2" height="1"></rect>-->
236
                <!--                  <rect x="2" y="14" width="2" height="1"></rect>-->
237
                <!--                </svg>-->
238
              </a>
239

    
240
              <div #offcanvas_element id="offcanvas-usage" uk-offcanvas overlay style="z-index:10000;">
241
                <div class="uk-offcanvas-bar offcanvas-white">
242
                  <button class="uk-offcanvas-close" type="button" uk-close></button>
243
                  <div class="uk-width-1-1">
244
                    <ng-container *ngTemplateOutlet="filters_column; context: {}"></ng-container>
245
                  </div>
246
                </div>
247
              </div>
248

    
249
            </div>
250
          </div>
251
          <div *ngIf="includeOnlyResultsAndFilter  "
252
               class="uk-margin-medium-top uk-margin-medium-bottom">
253
            <a *ngIf="showSwitchSearchLink && advancedSearchLink" routerLinkActive="router-link-active"
254
               [routerLink]="advancedSearchLink" style="z-index:1;"
255
               [queryParams]="this.routerHelper.createQueryParams(this.parameterNames, this.parameterValues)"
256
               [class]="((disableForms || disableRefineForms)?'  uk-disabled uk-link-muted  ':'') +' portal-link   uk-float-right '">Advanced
257
              search
258
            </a>
259
            <!--  <quick-selections  [resultTypes]="resultTypes"
260
                                (typeChange)="queryChanged()"
261
                                [isDisabled]="disableForms"
262
                                [quickFilter]="quickFilter" [QFselected]="(quickFilter)?quickFilter.selected:null"
263
                                [properties]="properties">
264
              </quick-selections>-->
265

    
266
          </div>
267
          <div class="uk-grid helper-grid uk-padding-small uk-padding-remove-vertical uk-margin-large-bottom">
268
<!--            <div *ngIf="searchUtils.status == errorCodes.LOADING && filters.length == 0;-->
269
<!--                        else elseGridBlock"-->
270
<!--                 class="'uk-animation-fade uk-margin-top  uk-width-1-1" role="alert">-->
271
<!--              <span class="loading-gif  uk-align-center" ></span>-->
272
<!--            </div>-->
273
<!--            <div>-->
274
<!--              <ng-template #elseGridBlock>-->
275
                <div *ngIf="showRefine && !properties.isDashboard
276
                            && (results.length > 0
277
                              || (searchUtils.refineStatus == errorCodes.LOADING && searchUtils.status != errorCodes.LOADING)
278
                              || (!hideFilters &&
279
                                (existingFiltersWithValues > 0 || (selectedRangeFilters + selectedFilters + selectedTypesNum) > 0)
280
                              )
281
                            )"
282
                     class="uk-width-1-4@m search-filters uk-visible@m">
283
                  <ng-container *ngTemplateOutlet="filters_column; context: {}"></ng-container>
284
                </div>
285
                <div class="uk-width-expand@m uk-with-1-1@s">
286
                  <div *ngIf="properties.isDashboard"
287
                    class="uk-width-1-1 uk-margin-top  uk-margin-medium-bottom ">
288
                    <div class="uk-flex uk-flex-bottom">
289
                      <span class="uk-margin-small-right">Filters: </span>
290
                      <ng-container *ngTemplateOutlet="selected_filters_pills; context: {}"></ng-container>
291
                    </div>
292
                  </div>
293
                  <div *ngIf="customFilter && !customFilter.isHiddenFilter &&
294
                  customFilter.selected == false && customFilter.promptToAddFilter"
295
                       class="uk-alert uk-animation-slide-top-small">
296
                    Do you want to see results only for {{customFilter.valueName}}? <a
297
                    (click)="addCustomFilter();">Click here</a>.
298
                  </div>
299
                  <div *ngIf="openaireLink && (searchUtils.totalResults > 0 || !loadPaging )"
300
                       class="uk-alert uk-text-center uk-margin-small-top ">
301
                    <span *ngIf="customFilter">The following results are related to <span class="portal-color"
302
                    >{{customFilter.valueName}}</span>.</span>
303
                      Are you interested to view more results? Visit
304
                    <a
305
                        class="uk-margin-top   uk-link"
306
                        [href]="openaireLink+this.routerHelper.createQueryParamsString(this.parameterNames, this.parameterValues)"
307
                        target="_blank"> OpenAIRE - Explore</a>.
308
                  </div>
309
                    <div class="uk-align-center uk-margin-remove-bottom">
310
                      <div
311
                        *ngIf="(results && searchUtils.totalResults > 0) || (!loadPaging && oldTotalResults > 0 && searchUtils.status == errorCodes.LOADING)"
312
                        class="uk-grid uk-margin-top uk-margin-bottom">
313
                        <div class="uk-width-expand@m uk-grid uk-grid-medium uk-margin-small-bottom">
314
                          <search-results-per-page [size]="searchUtils.size"
315
                                                   (sizeChange)="sizeChanged($event)"
316
                                                   [isDisabled]="disableForms || disableRefineForms">
317
                          </search-results-per-page>
318
                          <search-sorting *ngIf="sort"
319
                                          [entityType]="entityType" [sortBy]="searchUtils.sortBy"
320
                                          (sortByChange)="sortByChanged($event)"
321
                                          [isDisabled]="disableForms || disableRefineForms">
322
                          </search-sorting>
323
                        </div>
324
                        <div *ngIf="showDownload" class="uk-width-auto@m uk-margin-small-bottom">
325
                          <search-download
326
                              *ngIf="( entityType !='community' && entityType != 'stakeholder') && usedBy == 'search'"
327
                              [isDisabled]="disableForms || disableRefineForms"
328
                              [type]="csvPath" [csvParams]="csvParams" [totalResults]="searchUtils.totalResults"
329
                              [piwikSiteId]="piwikSiteId">
330
                          </search-download>
331

    
332
                        </div>
333
                      </div>
334
                      <search-paging [type]="type" [loadPaging]="loadPaging" [oldTotalResults]="oldTotalResults"
335
                                     [(searchUtils)]="searchUtils" [(results)]="results" [(baseUrl)]="searchUtils.baseUrl"
336
                                     [(parameterNames)]="parameterNames" [(parameterValues)]="parameterValues"
337
                                     [isDisabled]="disableForms || disableRefineForms">
338
                      </search-paging>
339
                    </div>
340
                    <div *ngIf="(searchUtils.page <= pagingLimit) || (searchUtils.totalResults <= searchUtils.size*pagingLimit)" class="uk-margin-large-bottom">
341
                      <search-result *ngIf="( entityType !='community' && entityType != 'stakeholder') && usedBy == 'search'"
342
                                     [results]="results"
343
                                     [status]=searchUtils.status
344
                                     [type]="entityType"
345
                                     [showLoading]="true" [properties]=properties [showImpactFactors]="(customFilter &&
346
                                      customFilter.queryFieldName == 'communityId' && customFilter.valueId == 'elixir-gr')">
347
                      </search-result>
348
                      <deposit-result *ngIf="usedBy == 'deposit'"
349
                                      [results]="results"
350
                                      [status]="searchUtils.status"
351
                                      [type]="entityType"
352
                                      [zenodoInformation]="zenodoInformation"
353
                                      [properties]=properties>
354
                      </deposit-result>
355
                      <orcid-result *ngIf="usedBy == 'orcid'"
356
                                      [results]="results"
357
                                      [status]="searchUtils.status"
358
                                      [type]="entityType"
359
                                      [properties]=properties>
360
                      </orcid-result>
361
                      <portal-search-result
362
                          *ngIf="(entityType == 'community' || entityType == 'stakeholder') && usedBy == 'search'"
363
                          [results]="results"
364
                          [status]="searchUtils.status"
365
                          [type]="entityType"
366
                          [showType]="false"
367
                          [showLoading]="true" [properties]=properties>
368
                      </portal-search-result>
369
                    </div>
370

    
371
                    <div [class]="searchUtils.page > pagingLimit ? 'search-results' : ''"
372
                         *ngIf="(searchUtils.page >= pagingLimit) && (searchUtils.totalResults > searchUtils.size*pagingLimit)">
373
                      <p class="uk-alert-warning" uk-alert>For more results please try a new, more specific query</p>
374
                    </div>
375

    
376
                    <div class="uk-align-center uk-margin-remove-bottom">
377
                      <!--                <div *ngIf="(results && searchUtils.totalResults > 0) || (!loadPaging && oldTotalResults > 0 && searchUtils.status == errorCodes.LOADING)"-->
378
                      <!--                      class="uk-grid uk-margin-top uk-margin-bottom">-->
379
                      <!--                  <search-results-per-page class="uk-width-1-2@m uk-width-1-1" [(size)]="searchUtils.size" (sizeChange)="sizeChanged($event)"></search-results-per-page>-->
380
                      <!--                  <search-sorting class="uk-width-1-2@m uk-width-1-1" *ngIf="sort" [(sortBy)]="searchUtils.sortBy" (sortByChange)="sortByChanged($event)"></search-sorting>-->
381
                      <!--                </div>-->
382
                      <search-paging [type]="type" [loadPaging]="loadPaging" [oldTotalResults]="oldTotalResults"
383
                                     [(searchUtils)]="searchUtils" [(results)]="results" [(baseUrl)]="searchUtils.baseUrl"
384
                                     [(parameterNames)]="parameterNames" [(parameterValues)]="parameterValues"
385
                                     [isDisabled]="disableForms || disableRefineForms">
386
                      </search-paging>
387
                    </div>
388
                    <div  *ngIf=" showIndexInfo && searchUtils.status !== errorCodes.LOADING"
389
                          class="uk-margin-small-top uk-grid uk-child-width-1-2">
390
                      <!-- Last Index Info-->
391
                      <div class="">
392
                        <img src="assets/common-assets/graph.svg" style="opacity: 0.4" loading="lazy">
393
                        <span class="uk-margin-small-left uk-text-baseline uk-text-muted">Powered by <a href="https://graph.openaire.eu" class="graph-color">OpenAIRE Research Graph</a></span>
394
                      </div>
395
                      <div class="uk-text-right">
396
                        <span *ngIf="indexUpdateDate" class="uk-text-baseline uk-text-muted">
397
                           <a *ngIf="properties.showLastIndexInformationLink"
398
                               class="uk-link"
399
                               [href]="properties.lastIndexInformationLink" target="_blank">
400

    
401
                                  Last update
402
                                </a><span *ngIf="!(properties.showLastIndexInformationLink) ">
403
                                  Last update
404
                                </span>
405
                                  of records in OpenAIRE: {{indexUpdateDate | date: 'MMM dd, yyyy'}}
406
                        </span>
407
                      </div>
408
                    </div>
409

    
410
                  </div>
411

    
412
            <helper *ngIf="pageContents && pageContents['bottom'] && pageContents['bottom'].length > 0"
413
                  [texts]="pageContents['bottom']"></helper>
414
        </div>
415
      </div>
416
    </div>
417
  </div>
418
</div>
419
<div *ngIf="properties.isDashboard" id="filters_switcher_toggle" href="#style_switcher" uk-toggle=""   >
420
  <i class="  uk-text-muted">
421
    <svg style="margin-top: 8px;" xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24"
422
         viewBox="0 0 20 20"
423
         fill="white" width="24px" height="16px">
424
      <g>
425
        <path d="M0,0h24 M24,24H0" fill="none"/>
426
        <path
427
          d="M4.25,5.61C6.57,8.59,10,13,10,13v5c0,1.1,0.9,2,2,2h0c1.1,0,2-0.9,2-2v-5c0,0,3.43-4.41,5.75-7.39 C20.26,4.95,19.79,4,18.95,4H5.04C4.21,4,3.74,4.95,4.25,5.61z"/>
428
        <path d="M0,0h24v24H0V0z" fill="none"/>
429
      </g>
430
    </svg>
431
  </i>
432
</div>
433
<div *ngIf="properties.isDashboard" id="style_switcher"  class=" uk-offcanvas filters_switcher"
434
     uk-offcanvas="flip:true" mode="slide" overlay="" style="z-index:982;" >
435

    
436
  <div class="uk-offcanvas-bar offcanvas-white">
437
    <div class="uk-float-right" >
438
      <button class="uk-offcanvas-close uk-close uk-icon" type="button" uk-close=""></button>
439

    
440
    </div>
441
    <div class="uk-padding uk-padding-remove-top uk-overflow-auto" style="height:calc(100vh - 100px);">
442
      <ng-container *ngTemplateOutlet="filters_column; context: {}"></ng-container>
443
    </div>
444
  </div>
445
</div>
446
</div>
447
<modal-alert #removeCustomFilter (alertOutput)="closeCustomFilterModal()"></modal-alert>
(13-13/44)