Project

General

Profile

« Previous | Next » 

Revision 59131

[Trunk | Library]: Removed old, unused folders "deposit/datasets", "deposit/publications" and files "deposit.component", "deposit.module" | Removed references to deleted files from app.module and app-routing.module.

View differences:

modules/uoa-services-library/trunk/ng-openaire-library/src/app/deposit/deposit.component.ts
1
import {Component, Input}          from '@angular/core';
2
import {Router, ActivatedRoute}    from '@angular/router';
3
import {Title, Meta}               from '@angular/platform-browser';
4

  
5
import {Observable}                from 'rxjs';
6

  
7
import {EnvProperties}             from '../utils/properties/env-properties';
8

  
9
import {PiwikService}              from '../utils/piwik/piwik.service';
10
import { SEOService } from '../sharedComponents/SEO/SEO.service';
11

  
12
import {ZenodoInformationClass} from './utils/zenodoInformation.class';
13

  
14
@Component({
15
    selector: 'deposit',
16
    templateUrl: 'deposit.component.html'
17
})
18

  
19
export class DepositComponent {
20
  @Input() zenodoInformation: ZenodoInformationClass;
21
  @Input() compatibility: string = '';
22
  @Input() mapUrl: string = null; // optional  in case i-frame is needed
23
  @Input() searchBySubjects: boolean = false; // optional: in case search by subjects is needed
24
  @Input() piwikSiteId = null;
25

  
26
  public status: number;
27

  
28
  // Type of entity: Publication or Research Data
29
  @Input() requestFor: string = "Publications";
30

  
31
  // url's needed for information text
32
  public openAccess: string;
33
  public openAccessRepo: string;
34
  public fp7Guidlines: string;
35
  public h2020Guidlines: string;
36
  public ercGuidlines: string;
37
  public helpdesk: string;
38

  
39
  // Id of the new selected organization to be searched
40
  public selectedId: string = "";
41

  
42
  public warningMessage: string = "";
43

  
44
  piwiksub:any;
45
  properties:EnvProperties;
46
  url=null;
47
  constructor (private  route: ActivatedRoute, private _router: Router,
48
               private _meta: Meta, private _title: Title,
49
               private _piwikService:PiwikService,
50
             private seoService: SEOService ) {
51

  
52
      var title = "Deposit "+this.requestFor;
53
      var description = "Openaire,  repositories, open access,  content provider, compatibility, organization, deposit "+ this.requestFor;
54
      this.updateTitle(title);
55
      this.updateDescription(description);
56
  }
57
  ngOnInit() {
58
    this.route.data
59
      .subscribe((data: { envSpecific: EnvProperties }) => {
60
         this.properties = data.envSpecific;
61
         this.seoService.createLinkForCanonicalURL(this.properties.baseLink+this._router.url, false);
62
         this.updateUrl(data.envSpecific.baseLink+this._router.url);
63
         this.url = data.envSpecific.baseLink+this._router.url;
64

  
65
         this.openAccess = this.properties.openAccess;
66
         this.openAccessRepo = this.properties.openAccessRepo;
67
         this.fp7Guidlines = this.properties.fp7Guidlines
68
         this.h2020Guidlines = this.properties.h2020Guidlines
69
         this.ercGuidlines = this.properties.ercGuidlines
70
         this.helpdesk = this.properties.helpdesk;
71

  
72
         if(this.properties.enablePiwikTrack && (typeof document !== 'undefined')){
73
           this.piwiksub = this._piwikService.trackView(this.properties, "Deposit "+this.requestFor, this.piwikSiteId).subscribe();
74
         }
75
      });
76
    }
77
  ngOnDestroy() {
78
    if(this.piwiksub){
79
      this.piwiksub.unsubscribe();
80
    }
81
  }
82

  
83
  public organizationSelected(id: string) {
84
      if(id && id.length > 0){
85
          if(this.requestFor == "Publications") {
86
              this._router.navigate( ['participate/deposit-publications-result'], { queryParams: { "organizationId": id } } );
87
          } else if(this.requestFor == "Research Data") {
88
              this._router.navigate( ['participate/deposit-datasets-result'], { queryParams: { "organizationId": id } } );
89
          }
90
      } else {
91
          this.warningMessage = "No organization selected";
92
      }
93
  }
94

  
95
  public valueChanged($event) {
96
    this.selectedId = $event.value;
97
  }
98

  
99
  private updateDescription(description:string) {
100
    this._meta.updateTag({content:description},"name='description'");
101
    this._meta.updateTag({content:description},"property='og:description'");
102
  }
103
  private updateTitle(title:string) {
104
    var _prefix ="OpenAIRE | ";
105
    var _title = _prefix + ((title.length> 50 ) ?title.substring(0,50):title);
106
    this._title.setTitle(_title);
107
    this._meta.updateTag({content:_title},"property='og:title'");
108
  }
109
  private updateUrl(url:string) {
110
    this._meta.updateTag({content:url},"property='og:url'");
111
  }
112
}
modules/uoa-services-library/trunk/ng-openaire-library/src/app/deposit/deposit.component.html
1
<div class="">
2
    <div class="uk-article-title custom-article-title uk-margin-bottom">
3
      Share {{requestFor}}
4
    </div>
5
    <schema2jsonld *ngIf="url"  [URL]="url"     name="Share {{requestFor}}" type="other"></schema2jsonld>
6

  
7
    <div class="uk-width-1-1">
8
      <helper position="top"></helper>
9
    </div>
10
    <div class="uk-grid  helper-grid uk-margin-top">
11
      <helper position="left" styleName=" uk-width-1-5 uk-padding-left"></helper>
12
      <div class="uk-width-expand">
13
        <!--div>
14
          <p>
15
              <i>
16
                  Are you a grant recipient from the following: H2020; FP7 with SC39; or ERC?
17
              </i>
18
              Then you are required to publish in
19
              <a href="{{openAccess}}" target="_blank">open access (<i class="custom-external"></i>)</a>.
20
              One way to do this is to deposit your {{requestFor}} into an
21
              <a href="{{openAccessRepo}}" target="_blank">open access repository (<i class="custom-external"></i>)</a>.
22
          </p>
23
          <p>
24
              Click the following to find more information:
25
              <a href="{{fp7Guidlines}}" target="_blank">FP7 guidelines (<i class="custom-external"></i>)</a>,
26
              <a href="{{h2020Guidlines}}" target="_blank">H2020 guidelines (<i class="custom-external"></i>)</a>,
27
              <a href="{{ercGuidlines}}" target="_blank">ERC guidelines (<i class="custom-external"></i>)</a> OR
28
              <a href="{{helpdesk}}" target="_blank">ask a question (<i class="custom-external"></i>)</a> to OpenAIRE’s national representative.
29
          </p>
30
        </div-->
31
          <h5>See if your institution has a repository </h5>
32

  
33
          <form class= "uk-grid">
34
              <div class="uk-width-1-2 ">
35
              <entities-autocomplete [(properties)]=properties fieldId="organization" (click)="warningMessage = ''" [entityType]="'organization'" [depositType]=compatibility   [selectedValue]=selectedId [showSelected]=true
36
                [placeHolderMessage] = "'Organization name'" [title] = "'Organizations'"  [multipleSelections]=false
37
                (selectedValueChanged)="valueChanged($event)">
38
              </entities-autocomplete>
39
              </div>
40
              <button class=" uk-margin-left uk-button portal-button"  type="submit" (click)="organizationSelected(selectedId)" >
41
                  Locate
42
              </button>
43
          </form>
44
          <div *ngIf="warningMessage.length > 0" class="uk-alert uk-alert-warning uk-animation-fade" role="alert">{{warningMessage}}</div>
45

  
46
          <div *ngIf="searchBySubjects" >
47
            <deposit-by-subject></deposit-by-subject>
48
          </div>
49
          <div *ngIf="mapUrl"  class="uk-margin-large-top">
50
            <h5>Or locate repository on map</h5>
51
            <div   class="uk-margin-top">
52
              <i-frame [url]="mapUrl" width="100%" height="900"></i-frame>
53
            </div>
54
          </div>
55
        </div>
56
        <div class="uk-width-1-5">
57
          <helper position="right" before="true"></helper>
58

  
59
          <div class="uk-card uk-card-default uk-card-body portal-card">
60
            Deposit your {{requestFor}} in
61
            <a href="{{zenodoInformation.url}}" target="_blank" uk-tooltip="title: Zenodo is OpenAIRE's catch-all repository hosted by CERN.">
62
              {{zenodoInformation.name}} (<i class="custom-external"></i>)</a>
63
            <div class="uk-margin-top" *ngIf="zenodoInformation && zenodoInformation.shareInZenodoUrl">
64
              <a href="{{zenodoInformation.shareInZenodoUrl}}">More Zenodo communities</a>
65
            </div>
66
            <!-- <div class="uk-margin-top" *ngIf="zenodoInformation && zenodoInformation.shareInZenodoUrl" [innerHtml]="zenodoInformation.shareInZenodoUrl"></div> -->
67
          </div>
68

  
69
          <helper position="right" before="false"></helper>
70
        </div>
71
        <!-- <helper position="right" styleName=" uk-width-1-5"></helper> -->
72
  </div>
73
  <helper position="bottom"></helper>
74
</div>
modules/uoa-services-library/trunk/ng-openaire-library/src/app/deposit/depositResult.component.ts
1
import {Component, Input} from '@angular/core';
2
import {Router, ActivatedRoute} from '@angular/router';
3
import {Title, Meta} from '@angular/platform-browser';
4

  
5
import {Observable} from 'rxjs';
6
import {ErrorCodes} from '../utils/properties/errorCodes';
7

  
8
import {EnvProperties} from '../utils/properties/env-properties';
9

  
10
import {RouterHelper} from '../utils/routerHelper.class';
11
import {FetchDataproviders} from '../utils/fetchEntitiesClasses/fetchDataproviders.class';
12
import {SearchDataprovidersService} from '../services/searchDataproviders.service';
13
import {OrganizationService} from '../services/organization.service';
14
import {PiwikService} from '../utils/piwik/piwik.service';
15
import {SEOService} from '../sharedComponents/SEO/SEO.service';
16

  
17
import {ZenodoInformationClass} from './utils/zenodoInformation.class';
18
import {properties} from "../../../environments/environment";
19

  
20
@Component({
21
  selector: 'deposit-result',
22
  template: `
23
    <div id="tm-main" class=" uk-section uk-padding-remove-top tm-middle">
24
      <div uk-grid uk-grid>
25
        <div class="tm-main uk-width-1-1@s uk-width-1-1@m  uk-width-1-1@l uk-row-first ">
26
          <schema2jsonld *ngIf="url" [URL]="url" name="Share {{requestFor}}" type="other"></schema2jsonld>
27

  
28
          <div class="uk-container ">
29
            <div class="uk-article-title custom-article-title uk-margin-bottom">
30
              Share {{requestFor}}
31
            </div>
32
            <helper position="top"></helper>
33
            <div class="uk-grid  helper-grid">
34
              <helper position="left" styleName=" uk-width-1-5 uk-padding-left"></helper>
35
              <div class="uk-width-expand">
36
                <!--div *ngIf="status != errorCodes.LOADING" class="uk-margin-bottom  uk-margin-top">
37
                  <h3>See if your institution has a repository </h3>
38

  
39
                  <form class= "uk-grid">
40
                      <div class="uk-width-1-2 ">
41
                      <entities-autocomplete [(properties)]=properties fieldId="organization" (click)="warningMessage = ''" [entityType]="'organization'"
42
                        [depositType]=compatibility  [showSelected]=true [placeHolderMessage] = "'Organization name'"
43
                        [title] = "'Organizations'"  [multipleSelections]=false (selectedValueChanged)="valueChanged($event)">
44
                      </entities-autocomplete>
45
                      </div>
46
                      <button class=" uk-button portal-button"  type="submit" (click)="organizationSelected(selectedId)" >
47
                          Locate
48
                      </button>
49
                      <div *ngIf="warningMessage.length > 0" class="uk-alert uk-alert-warning uk-animation-fade" role="alert">{{warningMessage}}</div>
50
                  </form>
51
                </div-->
52

  
53
                <h4 *ngIf=" organization && (fetchDataproviders.searchUtils.status == errorCodes.DONE ||
54
                            (fetchDataproviders.searchUtils.status == errorCodes.LOADING && !fetchDataproviders.loadPaging && fetchDataproviders.oldTotalResults > 0))"
55
                    class="organization">
56
                  <a *ngIf="organization['url']!=''" href="{{organization.url}}" target="_blank">
57
                    <span><i class="custom-external"></i>{{organization['name']}}</span>
58
                  </a>
59
                  <span *ngIf="organization['url']==''">{{organization['name']}}</span>
60
                </h4>
61

  
62
                <div *ngIf="subjectResults" class="uk-width-1-1  uk-margin uk-padding uk-panel  uk-background-muted">
63
                  <form class="uk-margin uk-text-center uk-margin-top">
64
                    <input type="text" [(ngModel)]="subject" class=" uk-input uk-width-1-2" name="subject"
65
                           placeholder="Search for classifications..."/>
66

  
67
                    <button class=" uk-button portal-button" type="submit" (click)="newSubject()">
68
                      Search
69
                    </button>
70
                  </form>
71
                  <div *ngIf="subject.length > 0" class=" uk-text-center ">
72
                      <span>Keywords: {{subject}}<span>
73
                        <a class=" " (click)="subject=''; newSubject()">  <span aria-hidden="true"
74
                                                                                class="uk-icon-button icon-button-small ">
75
                            <svg width="16" height="16" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"
76
                                 icon="close" ratio="0.8"><path fill="none" stroke="#000" stroke-width="1.06"
77
                                                                d="M16,16 L4,4"></path><path fill="none" stroke="#000"
78
                                                                                             stroke-width="1.06"
79
                                                                                             d="M16,4 L4,16"></path></svg>
80
                          </span>
81
                         </a>
82

  
83
                        </span>
84
                    </span>
85
                  </div>
86
                </div>
87

  
88
                <p class="uk-text-meta"
89
                   *ngIf=" fetchDataproviders.searchUtils.status == errorCodes.DONE ||
90
                            (fetchDataproviders.searchUtils.status == errorCodes.LOADING && !fetchDataproviders.loadPaging && fetchDataproviders.oldTotalResults > 0)">
91
                  Please use the information below and contact your repository to deposit your <span
92
                    class="uk-text-lowercase">{{requestFor}}</span>.
93
                </p>
94

  
95
                <div *ngIf="fetchDataproviders.searchUtils.status == errorCodes.DONE ||
96
                            (fetchDataproviders.searchUtils.status == errorCodes.LOADING && !fetchDataproviders.loadPaging && fetchDataproviders.oldTotalResults > 0)"
97
                     class="uk-align-center uk-margin-remove-bottom">
98
                  <search-paging [type]="'content providers'" [(searchUtils)]="fetchDataproviders.searchUtils"
99
                                 [(results)]="fetchDataproviders.results"
100
                                 [(parameterNames)]="parameterNames" [(parameterValues)]="parameterValues"
101
                                 [loadPaging]="fetchDataproviders.loadPaging"
102
                                 [oldTotalResults]="fetchDataproviders.oldTotalResults">
103
                  </search-paging>
104
                </div>
105

  
106
                <div *ngIf="status == errorCodes.LOADING || fetchDataproviders.searchUtils.status == errorCodes.LOADING"
107
                     class="uk-animation-fade uk-margin-top  uk-width-1-1" role="alert"><span
108
                    class="loading-gif  uk-align-center"></span>
109
                </div>
110

  
111
                <div *ngIf="fetchDataproviders.searchUtils.status == errorCodes.DONE"
112
                     class="  uk-margin uk-margin-remove-top other-results">
113
                  <div *ngFor="let result of fetchDataproviders.results"
114
                       [title]="result.compatibilityUNKNOWN ? 'Incompatible content provider' : ''"
115
                       [class]="'uk-margin-small-top uk-card uk-padding-small uk-animation-fade '+(result.compatibilityUNKNOWN ? 'li-disabled ' : 'uk-card-default' ) ">
116
                    <h5>
117
                      <span *ngIf="!result.compatibilityUNKNOWN" class="" title="Compatible Content Provider">
118
                        <svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" icon="check"
119
                             ratio="1"><polyline fill="none" stroke="#000" stroke-width="1.1"
120
                                                 points="4,10 8,15 17,4"></polyline></svg>
121
                      </span>
122
                      <a *ngIf="!result.compatibilityUNKNOWN" [queryParams]="{datasourceId: result.id}"
123
                         routerLinkActive="router-link-active"
124
                         [routerLink]="properties.searchLinkToDataProvider.split('?')[0]">
125
                        <span *ngIf="result['title'].name" [innerHTML]="result['title'].name"></span>
126
                        <span *ngIf="!result['title'].name">[no title available]</span>
127
                      </a>
128
                      <p *ngIf="result.compatibilityUNKNOWN && result['title'].name"
129
                         [innerHTML]="result['title'].name"></p>
130
                      <p *ngIf="result.compatibilityUNKNOWN && !result['title'].name">[no title available]</p>
131
                    </h5>
132

  
133
                    <approved-by-community [contentProviderId]="result.id"></approved-by-community>
134
                    <span *ngIf="result['type'] != undefined && result['type'] != ''"
135
                          class="uk-label custom-label label-blue label-dataprovider"
136
                          title="Type"> {{result['type']}}</span>
137
                    <span *ngIf="result['compatibility'] != undefined && result['compatibility'] != ''"
138
                          class="uk-label custom-label  label-compatibility"
139
                          title="Compatibility">{{result.compatibility}}</span>
140

  
141
                    <div
142
                        *ngIf="subjectResults && result['organizations'] != undefined && result['organizations'].length > 0">
143
                      <span> Organization: </span>
144
                      <span *ngFor="let organization of result['organizations'].slice(0,10) let i=index">
145
                            <!--a *ngIf="organization.url != undefined" href="{{organization.url}}"-->
146
                            <a *ngIf="organization.id" [queryParams]="{organizationId: organization.id}"
147
                               routerLinkActive="router-link-active"
148
                               [routerLink]="properties.searchLinkToOrganization.split('?')[0]">
149
                                    {{organization.name}}</a><span
150

  
151
                          *ngIf="!organization.id">
152
                                    {{organization.name}}</span><span
153

  
154
                          *ngIf="(i < result['organizations'].length-1) && (i < 9)">,</span>
155
                        </span>
156
                      <span *ngIf="result['organizations'].length > 10">...</span>
157
                    </div>
158
                    <div *ngIf="result['countries'] && result['countries'].length > 0">
159
                      Country: <span
160
                        *ngFor="let country of  result['countries'].slice(0,10) let i = index">{{country}}{{(i < (result['countries'].slice(0, 10).length - 1)) ? ", " : ""}}{{(i == result['countries'].slice(0, 10).length - 1 && result['countries'].length > 10) ? "..." : ""}}</span>
161
                    </div>
162
                    <div *ngIf="result['websiteURL'] != undefined && result['websiteURL'] != ''">
163
                      <span>Website URL: </span>
164
                      <span>
165
                          <a href="{{result['websiteURL']}}" target="_blank" class="custom-external custom-icon">
166
                            {{result['websiteURL']}}
167
                          </a>
168
                        </span>
169
                    </div>
170
                    <div *ngIf="result['OAIPMHURL'] != undefined && result['OAIPMHURL'] != ''">
171
                      <span>OAI-PMH URL: </span>
172
                      <span>
173
                          <a href="{{result['OAIPMHURL']}}" target="_blank" class="custom-external custom-icon">
174
                            {{result['OAIPMHURL']}}
175
                          </a>
176
                        </span>
177
                    </div>
178

  
179
                    <div *ngIf="subjectResults && result['subjects'] && result['subjects'].length > 0">
180
                      Subject: <span
181
                        *ngFor="let subject of  result['subjects'].slice(0,10) let i = index">{{subject}}{{(i < (result['subjects'].slice(0, 10).length - 1)) ? ", " : ""}}{{(i == result['subjects'].slice(0, 10).length - 1 && result['subjects'].length > 10) ? "..." : ""}}</span>
182
                    </div>
183
                  </div>
184
                </div>
185

  
186
                <div *ngIf="!subjectResults">
187
                  <div *ngIf="status == errorCodes.NOT_FOUND || status == errorCodes.ERROR ||
188
                              status == errorCodes.NOT_AVAILABLE || status == errorCodes.NONE"
189
                       class="alert alert-warning">
190
                    <div *ngIf="status == errorCodes.NOT_FOUND && organizationId != ''">
191
                      No organization with ID: {{organizationId}} found.
192
                    </div>
193
                    <div *ngIf="status == errorCodes.ERROR && organizationId != ''">
194
                      An error occured.
195
                    </div>
196
                    <span *ngIf="status == errorCodes.NOT_AVAILABLE && organizationId != ''">
197
                          Service temprorarily unavailable. Please try again later.
198
                      </span>
199
                    <div *ngIf="status == errorCodes.NONE">
200
                      No ID for organization.
201
                    </div>
202
                  </div>
203
                </div>
204
                <div *ngIf="status == errorCodes.DONE && fetchDataproviders.searchUtils.status != errorCodes.DONE
205
                      && fetchDataproviders.searchUtils.status != errorCodes.LOADING" class="alert alert-warning">
206
                    <span *ngIf="fetchDataproviders.searchUtils.status == errorCodes.ERROR">
207
                        An error occured.
208
                    </span>
209
                  <span *ngIf="fetchDataproviders.searchUtils.status == errorCodes.NOT_AVAILABLE">
210
                        Service temprorarily unavailable. Please try again later.
211
                    </span>
212
                  <span *ngIf="fetchDataproviders.searchUtils.status == errorCodes.OUT_OF_BOUND">
213
                        Requested page out of bounds.
214
                    </span>
215
                  <div *ngIf="!subjectResults">
216
                    No content providers found for institution:
217
                    <a *ngIf="organization['url']!=''" target="_blank" href="{{organization.url}}">
218
                      <span>{{organization['name']}} (<i class="custom-external"></i>)</span>
219
                    </a>
220
                    <span *ngIf="organization['url']==''">{{organization['name']}}</span>
221
                    .
222
                  </div>
223
                  <div *ngIf="subjectResults">
224
                    No content providers found<span *ngIf="subject != ''"> with classification "{{subject}}"</span>.
225
                  </div>
226
                </div>
227
              </div>
228

  
229
              <div class="uk-width-1-5">
230
                <helper position="right" before="true"></helper>
231

  
232
                <div class="uk-card uk-card-default uk-card-body portal-card">
233
                  Deposit your {{requestFor}} in
234
                  <a href="{{zenodoInformation.url}}" target="_blank"
235
                     uk-tooltip="title: Zenodo is OpenAIRE's catch-all repository hosted by CERN.">
236
                    {{zenodoInformation.name}} (<i class="custom-external"></i>)</a>
237
                  <div class="uk-margin-top" *ngIf="zenodoInformation && zenodoInformation.shareInZenodoUrl">
238
                    <a href="{{zenodoInformation.shareInZenodoUrl}}">More Zenodo communities</a>
239
                  </div>
240
                </div>
241

  
242
                <!--div *ngIf="fetchDataproviders.results.length > 0" class="uk-card uk-card-default uk-card-body portal-card uk-margin-small-top">
243
                   Compatibility is mpla mpla
244
                </div-->
245

  
246
                <helper position="right" before="false"></helper>
247
              </div>
248
            </div>
249
            <button class=" uk-button uk-button-primary uk-margin-small-top" type="submit" (click)="goToDeposit()">
250
              <span class="uk-icon"><svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"
251
                                         icon="chevron-left" ratio="1"><polyline fill="none" stroke="#000"
252
                                                                                 stroke-width="1.03"
253
                                                                                 points="13 16 7 10 13 4"></polyline></svg></span>
254
              Back
255
            </button>
256
            <helper position="bottom"></helper>
257
          </div>
258
        </div>
259
      </div>
260
    </div>
261
  
262
  `
263
})
264

  
265
export class DepositResultComponent {
266
  @Input() zenodoInformation: ZenodoInformationClass;
267
  @Input() compatibility: string = '';
268
  @Input() piwikSiteId = null;
269
  // Type of entity: Publication or Research Data
270
  @Input() requestFor: string = "Publications";
271
  
272
  public organization: { "name": string, "url": string };
273
  public organizationId: string = "";
274
  
275
  // Id of the new selected organization to be searched
276
  public selectedId: string = "";
277
  
278
  @Input() subjectResults: boolean = false;
279
  @Input() subject: string = "";
280
  
281
  public status: number;
282
  public warningMessage: string = "";
283
  
284
  public fetchDataproviders: FetchDataproviders;
285
  public linkToSearchDataproviders: string = "";
286
  
287
  public parameterNames: string[] = [];
288
  public parameterValues: string[] = [];
289
  
290
  public routerHelper: RouterHelper = new RouterHelper();
291
  public errorCodes: ErrorCodes = new ErrorCodes();
292
  sub: any;
293
  piwiksub: any;
294
  properties: EnvProperties = properties;
295
  url = null;
296
  
297
  constructor(private _router: Router,
298
              private  route: ActivatedRoute,
299
              private _searchDataprovidersService: SearchDataprovidersService,
300
              private _organizationService: OrganizationService,
301
              private _meta: Meta,
302
              private _title: Title,
303
              private _piwikService: PiwikService,
304
              private seoService: SEOService) {
305
    
306
    this.fetchDataproviders = new FetchDataproviders(this._searchDataprovidersService);
307
    
308
    this.status = this.errorCodes.LOADING;
309
    
310
    
311
    var title = "Deposit " + this.requestFor;
312
    var description = "Openaire, repositories, open access, content provider, compatibility, organization, deposit " + this.requestFor;
313
    
314
    this.updateTitle(title);
315
    this.updateDescription(description);
316
    
317
  }
318
  
319
  ngOnInit() {
320
    this.seoService.createLinkForCanonicalURL(this.properties.baseLink + this._router.url, false);
321
    this.updateUrl(this.properties.baseLink + this._router.url);
322
    this.url = this.properties.baseLink + this._router.url;
323
    
324
    if (this.properties.enablePiwikTrack && (typeof document !== 'undefined')) {
325
      this.piwiksub = this._piwikService.trackView(this.properties, "Deposit " + this.requestFor, this.piwikSiteId).subscribe();
326
    }
327
    this.sub = this.route.queryParams.subscribe(params => {
328
      this.fetchDataproviders.searchUtils.page = (params['page'] === undefined) ? 1 : +params['page'];
329
      
330
      if (this.subjectResults) {
331
        this.status = this.errorCodes.DONE;
332
        
333
        this.subject = params['subject'];
334
        if (!this.subject) {
335
          this.subject = "";
336
        }
337
        this.parameterNames.push('subject');
338
        this.parameterValues.push(this.subject);
339
        
340
        this.searchDataprovidersBySubject();
341
      } else {
342
        if (this.organizationId) {
343
          this.searchDataproviders();
344
        } else {
345
          this.organizationId = params['organizationId'];
346
          this.parameterNames.push('organizationId');
347
          this.parameterValues.push(this.organizationId);
348
          
349
          if (this.organizationId) {
350
            this.getOrganizationInfo();
351
          }
352
        }
353
        this.selectedId = "";
354
      }
355
    });
356
  }
357
  
358
  ngDoCheck() {
359
    if (!this.subjectResults && (this.organizationId == "" || this.organizationId == undefined)) {
360
      this.organizationId = "";
361
      this.status = this.errorCodes.NONE;
362
      this.fetchDataproviders.searchUtils.status = this.errorCodes.NONE;
363
    }
364
  }
365
  
366
  ngOnDestroy() {
367
    this.sub.unsubscribe();
368
    if (this.piwiksub) {
369
      this.piwiksub.unsubscribe();
370
    }
371
  }
372
  
373
  public newSubject() {
374
    this._router.navigate(['participate/deposit-subject-result'], {queryParams: {"subject": this.subject}});
375
  }
376
  
377
  public searchDataprovidersBySubject() {
378
    this.parameterNames = [];
379
    this.parameterValues = [];
380
    this.parameterNames.push('subject');
381
    this.parameterValues.push(this.subject);
382
    
383
    this.fetchDataproviders.getResultsBySubjectsForDeposit((this.subject == "") ? "*" : this.subject, this.requestFor, this.fetchDataproviders.searchUtils.page, this.fetchDataproviders.searchUtils.size, this.properties);
384
    this.linkToSearchDataproviders = this.properties.searchLinkToDataProviders;
385
  }
386
  
387
  private searchDataproviders() {
388
    // if(this.organization != undefined) {
389
    //     this.fetchDataproviders.getResults(this.organization.name, false, 1, 10);
390
    // } else if(this.organizationId != undefined) {
391
    this.fetchDataproviders.getResultsForDeposit(this.organizationId, this.requestFor, this.fetchDataproviders.searchUtils.page, this.fetchDataproviders.searchUtils.size, this.properties);
392
    //}
393
    this.linkToSearchDataproviders = this.properties.searchLinkToDataProviders;
394
  }
395
  
396
  private getOrganizationInfo() {
397
    this.fetchDataproviders.oldTotalResults = 0;
398
    this.fetchDataproviders.searchUtils.totalResults = 0;
399
    
400
    this._organizationService.getOrganizationNameAndUrlById(this.organizationId, this.properties).subscribe(
401
      data => {
402
        if (data == null) {
403
          this.status = this.errorCodes.NOT_FOUND;
404
          this.fetchDataproviders.searchUtils.status = this.errorCodes.NONE;
405
        } else {
406
          this.organization = data;
407
          this.status = this.errorCodes.DONE;
408
          this.searchDataproviders();
409
        }
410
      },
411
      err => {
412
        //console.log(err)
413
        this.handleError("Error getting organization name and url for id: " + this.organizationId, err);
414
        
415
        this.fetchDataproviders.searchUtils.status = this.errorCodes.NONE;
416
        if (err.status == '404') {
417
          this.status = this.errorCodes.NOT_FOUND;
418
        } else if (err.status == '500') {
419
          this.status = this.errorCodes.ERROR;
420
        } else {
421
          this.status = this.errorCodes.NOT_AVAILABLE;
422
        }
423
      }
424
    );
425
  }
426
  
427
  public goToDeposit() {
428
    if (this.requestFor == "Publications") {
429
      this._router.navigate(['participate/deposit-publications']);
430
    } else if (this.requestFor == "Research Data") {
431
      this._router.navigate(['participate/deposit-datasets']);
432
    }
433
  }
434
  
435
  public valueChanged($event) {
436
    this.selectedId = $event.value;
437
  }
438
  
439
  public organizationSelected(id: string) {
440
    if (id && id.length > 0 && id != this.organizationId) {
441
      this.organization = null;
442
      this.status = this.errorCodes.LOADING;
443
      
444
      if (this.requestFor == "Publications") {
445
        this._router.navigate(['participate/deposit-publications-result'], {queryParams: {"organizationId": id}});
446
      } else if (this.requestFor == "Research Data") {
447
        this._router.navigate(['participate/deposit-datasets-result'], {queryParams: {"organizationId": id}});
448
      }
449
    } else {
450
      this.warningMessage = "No new organization selected";
451
    }
452
  }
453
  
454
  private updateDescription(description: string) {
455
    this._meta.updateTag({content: description}, "name='description'");
456
    this._meta.updateTag({content: description}, "property='og:description'");
457
  }
458
  
459
  private updateTitle(title: string) {
460
    var _prefix = "OpenAIRE | ";
461
    var _title = _prefix + ((title.length > 50) ? title.substring(0, 50) : title);
462
    this._title.setTitle(_title);
463
    this._meta.updateTag({content: _title}, "property='og:title'");
464
  }
465
  
466
  private updateUrl(url: string) {
467
    this._meta.updateTag({content: url}, "property='og:url'");
468
  }
469
  
470
  private handleError(message: string, error) {
471
    console.error("Deposit Result Page: " + message, error);
472
  }
473
}
modules/uoa-services-library/trunk/ng-openaire-library/src/app/deposit/publications/depositPublications.module.ts
1
import { NgModule }            from '@angular/core';
2
import { CommonModule }        from '@angular/common';
3
import { FormsModule }         from '@angular/forms';
4

  
5
import { DepositPublicationsComponent } from './depositPublications.component';
6

  
7
import {DepositModule} from '../deposit.module';
8
import {FreeGuard} from'../../login/freeGuard.guard';
9
import {PreviousRouteRecorder} from '../../utils/piwik/previousRouteRecorder.guard';
10
import {IsRouteEnabled} from '../../error/isRouteEnabled.guard';
11

  
12
@NgModule({
13
  imports: [
14
    CommonModule, FormsModule,
15
    DepositModule
16
    ],
17
  declarations: [
18
    DepositPublicationsComponent
19
  ],
20
  exports: [
21
    DepositPublicationsComponent,
22
   ],
23
  providers:    [FreeGuard,PreviousRouteRecorder, IsRouteEnabled]
24
})
25
export class DepositPublicationsModule { }
modules/uoa-services-library/trunk/ng-openaire-library/src/app/deposit/publications/depositPublicationsResults.module.ts
1
import { NgModule }            from '@angular/core';
2
import { CommonModule }        from '@angular/common';
3
import { FormsModule }         from '@angular/forms';
4

  
5
import { DepositPublicationsResultComponent } from './depositPublicationsResult.component';
6

  
7
import {DepositModule} from '../deposit.module';
8
import {FreeGuard} from'../../login/freeGuard.guard';
9
import {PreviousRouteRecorder} from '../../utils/piwik/previousRouteRecorder.guard';
10
import {IsRouteEnabled} from '../../error/isRouteEnabled.guard';
11

  
12
@NgModule({
13
  imports: [
14
    CommonModule, FormsModule,
15
    DepositModule
16

  
17
  ],
18
  declarations: [
19
    DepositPublicationsResultComponent
20
  ],
21
  exports: [
22
    DepositPublicationsResultComponent
23
   ],
24
  providers:    [FreeGuard,PreviousRouteRecorder, IsRouteEnabled]
25
})
26
export class DepositPublicationsResultsModule { }
modules/uoa-services-library/trunk/ng-openaire-library/src/app/deposit/publications/depositPublicationsResult.component.ts
1
import {Component, Input} from '@angular/core';
2
import {ActivatedRoute}   from '@angular/router';
3
import {EnvProperties}    from '../../utils/properties/env-properties';
4
import {ZenodoInformationClass} from '../utils/zenodoInformation.class';
5

  
6
@Component({
7
    selector: 'deposit-publications-result',
8
    template: `
9
        <deposit-result [compatibility]="'openaire____::47ce9e9f4fad46e732cff06419ecaabb||OpenDOAR'"
10
                        [requestFor]="'Publications'" [piwikSiteId]=piwikSiteId
11
                        [zenodoInformation]="zenodoInformation">
12
        </deposit-result>
13
    `
14
})
15

  
16
export class DepositPublicationsResultComponent {
17
  @Input() zenodoInformation: ZenodoInformationClass;
18
  properties:EnvProperties;
19

  
20
  @Input() piwikSiteId = null;
21

  
22
  constructor (private route: ActivatedRoute) {}
23

  
24
  ngOnInit() {
25
    this.route.data
26
      .subscribe((data: { envSpecific: EnvProperties }) => {
27
         this.properties = data.envSpecific;
28

  
29
         if(!this.zenodoInformation) {
30
           this.zenodoInformation = new ZenodoInformationClass();
31
         }
32
         if(!this.zenodoInformation.url) {
33
           this.zenodoInformation.url = this.properties.zenodo;
34
         }
35
         if(!this.zenodoInformation.name) {
36
           this.zenodoInformation.name = "Zenodo";
37
         }
38
      });
39
  }
40
}
modules/uoa-services-library/trunk/ng-openaire-library/src/app/deposit/publications/depositPublications.component.ts
1
import {Component, Input} from '@angular/core';
2
import {ActivatedRoute}   from '@angular/router';
3
import {EnvProperties}    from '../../utils/properties/env-properties';
4
import {ZenodoInformationClass} from '../utils/zenodoInformation.class';
5

  
6
@Component({
7
    selector: 'deposit-publications',
8
    template: `
9
    <div id="tm-main" class=" uk-section  uk-padding-remove-top tm-middle"   >
10
      <div uk-grid uk-grid>
11
       <div class="tm-main uk-width-1-1@s uk-width-1-1@m  uk-width-1-1@l uk-row-first ">
12

  
13
      <div class="uk-container">
14
        <deposit  [compatibility]="'openaire____::47ce9e9f4fad46e732cff06419ecaabb||OpenDOAR'"
15
                  [requestFor]="'Publications'" [mapUrl]=mapUrl [piwikSiteId]=piwikSiteId
16
                  [zenodoInformation]="zenodoInformation">
17
        </deposit>
18
      </div>
19
      </div>
20
    </div>
21
  </div>
22
    `
23
})
24

  
25
export class DepositPublicationsComponent {
26
  @Input() zenodoInformation: ZenodoInformationClass;
27

  
28
  public mapUrl = null;
29
  @Input() piwikSiteId = null;
30
  properties:EnvProperties;
31

  
32
  constructor (private route: ActivatedRoute) {}
33

  
34
  ngOnInit() {
35
    this.route.data
36
      .subscribe((data: { envSpecific: EnvProperties }) => {
37
         this.properties = data.envSpecific;
38
         this.mapUrl = this.properties.statisticsFrameAPIURL+"markers-test.html";
39

  
40
         if(!this.zenodoInformation) {
41
           this.zenodoInformation = new ZenodoInformationClass();
42
         }
43
         if(!this.zenodoInformation.url) {
44
           this.zenodoInformation.url = this.properties.zenodo;
45
         }
46
         if(!this.zenodoInformation.name) {
47
           this.zenodoInformation.name = "Zenodo";
48
         }
49
      });
50
  }
51
}
modules/uoa-services-library/trunk/ng-openaire-library/src/app/deposit/datasets/depositBySubject.component.ts
1
import {Component, Input}        from '@angular/core';
2
import {Router, ActivatedRoute}  from '@angular/router';
3
import {Title, Meta}             from '@angular/platform-browser';
4

  
5
import {Observable}              from 'rxjs';
6

  
7
import {EnvProperties} from '../../utils/properties/env-properties';
8

  
9
import {PiwikService} from '../../utils/piwik/piwik.service';
10

  
11

  
12
@Component({
13
    selector: 'deposit-by-subject',
14
    template: `
15
        <div class="uk-margin-large-top">
16

  
17
                <h5>Or search for domain specific repositories</h5>
18

  
19
                <form class= "uk-grid">
20
                    <input type="text"  [(ngModel)]="subjectKeyword"  class="uk-margin-medium-left uk-padding-remove-left  uk-input" name="subject" placeholder="Type keywords (e.g Biology, Natural sciences, Social Sciences, Engineering Sciences... )"  style="width: 580px;" />
21

  
22
                    <button class=" uk-button portal-button"  type="submit" (click)="search()" >
23
                        Search
24
                    </button>
25
                </form>
26
        </div>
27
    `
28
})
29

  
30
export class DepositBySubjectComponent {
31
    @Input() subjectKeyword: string='';
32
    @Input() piwikSiteId = null;
33
    properties:EnvProperties;
34

  
35
    constructor (private _router: Router,private  route: ActivatedRoute,
36
                 private _meta: Meta, private _title: Title,
37
                 private _piwikService: PiwikService) { }
38
    ngOnInit() {
39
      this.route.data
40
        .subscribe((data: { envSpecific: EnvProperties }) => {
41
           this.properties = data.envSpecific;
42

  
43
           var title = "Deposit by Subjects";
44
           var description = "Openaire,  repositories, open access,  content provider, compatibility, organization, deposit by subject"
45
           var url = data.envSpecific.baseLink+this._router.url;
46

  
47
           this._title.setTitle(title);
48
           this._meta.updateTag({content:title},"property='og:title'");
49
           this._meta.updateTag({content:description},"name='description'");
50
           this._meta.updateTag({content:description},"property='og:description'");
51
           this._meta.updateTag({content:url},"property='og:url'");
52

  
53
           if(this.properties.enablePiwikTrack && (typeof document !== 'undefined')){
54
             this._piwikService.trackView(this.properties, "Deposit by subjects" , this.piwikSiteId).subscribe();
55
           }
56

  
57
        });
58

  
59
    }
60
    public search() {
61
      this._router.navigate( ['participate/deposit-subject-result'], { queryParams: { "subject": this.subjectKeyword } } );
62
    }
63
}
modules/uoa-services-library/trunk/ng-openaire-library/src/app/deposit/datasets/depositDatasets.module.ts
1
import { NgModule }            from '@angular/core';
2
import { CommonModule }        from '@angular/common';
3
import { FormsModule }         from '@angular/forms';
4

  
5
import { DepositDatasetsComponent } from './depositDatasets.component';
6
import { DepositDatasetsResultComponent } from './depositDatasetsResult.component';
7
 import {DepositModule} from '../deposit.module';
8
import {FreeGuard} from'../../login/freeGuard.guard';
9
import {PreviousRouteRecorder} from '../../utils/piwik/previousRouteRecorder.guard';
10
import {IsRouteEnabled} from '../../error/isRouteEnabled.guard';
11

  
12
@NgModule({
13
  imports: [
14
    CommonModule, FormsModule,
15
    DepositModule
16
  ],
17
  declarations: [
18

  
19
    DepositDatasetsComponent
20

  
21
  ],
22
  exports: [
23
    DepositDatasetsComponent
24
   ],
25
  providers:    [FreeGuard,PreviousRouteRecorder, IsRouteEnabled]
26
})
27
export class DepositDatasetsModule { }
modules/uoa-services-library/trunk/ng-openaire-library/src/app/deposit/datasets/depositDatasetsResults.module.ts
1
import { NgModule }            from '@angular/core';
2
import { CommonModule }        from '@angular/common';
3
import { FormsModule }         from '@angular/forms';
4

  
5
import { DepositDatasetsResultComponent } from './depositDatasetsResult.component';
6

  
7
import {DepositModule} from '../deposit.module';
8
import {FreeGuard} from'../../login/freeGuard.guard';
9
import {PreviousRouteRecorder} from '../../utils/piwik/previousRouteRecorder.guard';
10
import {IsRouteEnabled} from '../../error/isRouteEnabled.guard';
11

  
12
@NgModule({
13
  imports: [
14
    CommonModule, FormsModule,
15
    DepositModule
16
  ],
17
  declarations: [
18

  
19
    DepositDatasetsResultComponent,
20

  
21
  ],
22
  exports: [
23
    DepositDatasetsResultComponent,
24
   ],
25
  providers:    [FreeGuard,PreviousRouteRecorder, IsRouteEnabled]
26
})
27
export class DepositDatasetsResultsModule { }
modules/uoa-services-library/trunk/ng-openaire-library/src/app/deposit/datasets/depositBySubjectResults.module.ts
1
import { NgModule }            from '@angular/core';
2
import { CommonModule }        from '@angular/common';
3
import { FormsModule }         from '@angular/forms';
4

  
5
import { DepositBySubjectResultComponent } from './depositBySubjectResult.component';
6

  
7
import {DepositModule} from '../deposit.module';
8
import {FreeGuard} from'../../login/freeGuard.guard';
9
import {PreviousRouteRecorder} from '../../utils/piwik/previousRouteRecorder.guard';
10
import {PagingModule } from '../../utils/paging.module';
11
import {DataProvidersServiceModule} from '../../services/dataProvidersService.module';
12
import {SearchResultsModule } from '../../searchPages/searchUtils/searchResults.module';
13
import {HelperModule} from '../../utils/helper/helper.module';
14
import {IsRouteEnabled} from '../../error/isRouteEnabled.guard';
15
import {Schema2jsonldModule} from '../../sharedComponents/schema2jsonld/schema2jsonld.module';
16
import { SEOServiceModule } from '../../sharedComponents/SEO/SEOService.module';
17

  
18
@NgModule({
19
  imports: [
20
    CommonModule, FormsModule,
21
    DepositModule,
22
    SearchResultsModule, DataProvidersServiceModule, PagingModule,
23
    HelperModule, Schema2jsonldModule, SEOServiceModule
24
  ],
25
  declarations: [
26

  
27
    DepositBySubjectResultComponent
28

  
29
  ],
30
  exports: [
31
    DepositBySubjectResultComponent
32
   ],
33
  providers:    [FreeGuard,PreviousRouteRecorder, IsRouteEnabled]
34
})
35
export class DepositBySubjectResultsModule { }
modules/uoa-services-library/trunk/ng-openaire-library/src/app/deposit/datasets/depositBySubjectResult.component.html
1

  
2
<div id="tm-main" class=" uk-section  uk-margin-small-top tm-middle"   >
3
  <div uk-grid uk-grid>
4
   <div class="tm-main uk-width-1-1@s uk-width-1-1@m  uk-width-1-1@l uk-row-first ">
5
     <schema2jsonld *ngIf="url"  [URL]="url"     name="Deposit {{requestFor}}" type="other"></schema2jsonld>
6

  
7
    <div class="uk-container uk-margin-top">
8
        <div class="uk-article-title custom-article-title">
9
            Share {{requestFor}}
10
        </div>
11

  
12
                    <div class="uk-width-1-1  uk-margin uk-padding uk-panel  uk-background-muted">
13
                      <form class= "uk-margin uk-text-center uk-margin-top">
14
                          <input type="text"  [(ngModel)]="newSubject"  class=" uk-input uk-width-1-2" name="subject" placeholder="Search for classifications..."   />
15

  
16
                          <button class=" uk-button portal-button"  type="submit" (click)="searchDataproviders()" >
17
                              Search
18
                          </button>
19
                      </form>
20
                      <div *ngIf="subject.length > 0" class=" uk-text-center ">
21
                          <span>Keywords: {{subject}}<span>
22
                            <a class=" " (click) = "subject = ''">  <span (click)="removeContext(context)" aria-hidden="true" class="uk-icon-button icon-button-small ">
23
                                <svg width="16" height="16" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" icon="close" ratio="0.8"><path fill="none" stroke="#000" stroke-width="1.06" d="M16,16 L4,4"></path><path fill="none" stroke="#000" stroke-width="1.06" d="M16,4 L4,16"></path></svg>
24
                              </span>
25
                             </a>
26

  
27
                            </span>
28
                        </span>
29
                      </div>
30
                    </div>
31
          <div class="uk-width-1-1">
32
            <helper position="top"></helper>
33
          </div>
34
          <div class="uk-grid  helper-grid">
35
            <helper position="left" styleName=" uk-width-1-5 uk-padding-left"></helper>
36
            <div class="uk-width-expand">
37
              <div *ngIf="fetchDataproviders.searchUtils.status == errorCodes.LOADING"
38
                    class="uk-animation-fade uk-margin-top  uk-width-1-1" role="alert"><span class="loading-gif  uk-align-center" ></span>
39
              </div>
40

  
41

  
42

  
43
              <div *ngIf="fetchDataproviders.searchUtils.totalResults > 0">
44
                  <p>Please use the information/contacts shown below to deposit your {{requestFor}}.</p>
45
                  <!--showDataProviders [dataProviders]=dataProviders></showDataProviders-->
46
                  <div *ngIf="fetchDataproviders.searchUtils.totalResults" class="">
47
                      <paging-no-load [currentPage]="page" [totalResults]="fetchDataproviders.searchUtils.totalResults"    size=10  (pageChange)="pageChange($event)"> </paging-no-load>
48
                   </div>
49
                   <div class="" *ngIf="fetchDataproviders.results  && fetchDataproviders.searchUtils.totalResults > 0">
50
                         {{fetchDataproviders.searchUtils.totalResults | number}} content providers, page {{fetchDataproviders.searchUtils.page | number}} of {{(totalPages()) | number}}
51
                   </div>
52

  
53
                  <search-result  [(results)]="fetchDataproviders.results"
54
                                  type="dataprovider" urlParam="datasourceId" [showSubjects]=true
55
                                  [custom_class]="'other-results'" [(properties)] = properties>
56
                  </search-result>
57
              </div>
58

  
59
              <div *ngIf="fetchDataproviders.searchUtils.status == errorCodes.NONE && subject != ''" class = "uk-alert uk-alert-primary">
60
                  No content providers found with classification "{{subject}}".
61
              </div>
62
              <div *ngIf="fetchDataproviders.searchUtils.status == errorCodes.ERROR && subject != ''" class = "uk-alert uk-alert-danger">
63
                  An error occured.
64
              </div>
65

  
66
              <!-- <div *ngIf="(fetchDataproviders.searchUtils.totalResults == 0 && fetchDataproviders.searchUtils.status == errorCodes.DONE)
67
                          || fetchDataproviders.searchUtils.status == errorCodes.NONE || fetchDataproviders.searchUtils.status == errorCodes.ERROR" class = "uk-alert  ">
68

  
69
                  You can still deposit your {{requestFor}} in
70
                  <a href="{{zenodo}}" target="_blank">OpenAIRE's Zenodo catch-all repository (<i class="custom-external"></i>)</a>
71
                  hosted by CERN.
72
              </div> -->
73
            </div>
74
            <!-- <helper position="right" styleName=" uk-width-1-5"></helper> -->
75
            <div class="uk-width-1-5">
76
              <helper position="right" before="true"></helper>
77

  
78
              <div class="uk-card uk-card-default uk-card-body portal-card">
79
                Deposit your {{requestFor}} in
80
                <a href="{{zenodoInformation.url}}" target="_blank" uk-tooltip="title: Zenodo is OpenAIRE's catch-all repository hosted by CERN.">
81
                  {{zenodoInformation.name}} (<i class="custom-external"></i>)</a>
82
                <div class="uk-margin-top" *ngIf="zenodoInformation && zenodoInformation.shareInZenodoUrl">
83
                  <a href="{{zenodoInformation.shareInZenodoUrl}}">More Zenodo communities</a>
84
                </div>
85
              </div>
86

  
87
              <helper position="right" before="false"></helper>
88
            </div>
89
      </div>
90

  
91
        <button class=" uk-button uk-button-default uk-margin-small-top"  type="submit" (click)="goToDeposit()">
92
            <span class="uk-icon"><svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" icon="chevron-left" ratio="1"><polyline fill="none" stroke="#000" stroke-width="1.03" points="13 16 7 10 13 4"></polyline></svg></span> Back
93
        </button>
94
        <helper position="bottom"></helper>
95
    </div>
96
    </div>
97
  </div>
98
</div>
modules/uoa-services-library/trunk/ng-openaire-library/src/app/deposit/datasets/depositDatasetsResult.component.ts
1
import {Component, Input} from '@angular/core';
2
import {ActivatedRoute}   from '@angular/router';
3
import {EnvProperties}    from '../../utils/properties/env-properties';
4
import {ZenodoInformationClass} from '../utils/zenodoInformation.class';
5

  
6
@Component({
7
    selector: 'deposit-datasets-result',
8
    template: `
9
        <deposit-result [compatibility]="'openaire____::21f8a223b9925c2f87c404096080b046||Registry of Research Data Repository'"
10
                        [requestFor]="'Research Data'" [piwikSiteId]=piwikSiteId
11
                        [zenodoInformation]="zenodoInformation">
12
        </deposit-result>
13
    `
14
})
15

  
16
export class DepositDatasetsResultComponent {
17
  @Input() zenodoInformation: ZenodoInformationClass;
18
  properties:EnvProperties;
19

  
20
  @Input() piwikSiteId = null;
21

  
22
  constructor (private route: ActivatedRoute) {}
23

  
24
  ngOnInit() {
25
    this.route.data
26
      .subscribe((data: { envSpecific: EnvProperties }) => {
27
         this.properties = data.envSpecific;
28

  
29
         if(!this.zenodoInformation) {
30
           this.zenodoInformation = new ZenodoInformationClass();
31
         }
32
         if(!this.zenodoInformation.url) {
33
           this.zenodoInformation.url = this.properties.zenodo;
34
         }
35
         if(!this.zenodoInformation.name) {
36
           this.zenodoInformation.name = "Zenodo";
37
         }
38
      });
39
  }
40
}
modules/uoa-services-library/trunk/ng-openaire-library/src/app/deposit/datasets/depositDatasets.component.ts
1
import {Component, Input} from '@angular/core';
2
import {ActivatedRoute}   from '@angular/router';
3
import {EnvProperties}    from '../../utils/properties/env-properties';
4
import {ZenodoInformationClass} from '../utils/zenodoInformation.class';
5

  
6
@Component({
7
    selector: 'deposit-datasets',
8
    template: `
9
    <div id="tm-main" class=" uk-section uk-padding-remove-top tm-middle"   >
10
      <div uk-grid uk-grid>
11
       <div class="tm-main uk-width-1-1@s uk-width-1-1@m  uk-width-1-1@l uk-row-first ">
12

  
13
    <div class="uk-container">
14
        <deposit  [compatibility]="'openaire____::21f8a223b9925c2f87c404096080b046||Registry of Research Data Repository'"
15
                  [requestFor]="'Research Data'" [searchBySubjects]=true [piwikSiteId]=piwikSiteId
16
                  [zenodoInformation]="zenodoInformation">
17
        </deposit>
18
    <div>
19
    </div>
20
  </div>
21
</div>
22
    `
23
})
24

  
25
export class DepositDatasetsComponent {
26
  @Input() piwikSiteId = null;
27
  properties:EnvProperties;
28
  @Input() zenodoInformation: ZenodoInformationClass;
29

  
30
  constructor (private route: ActivatedRoute) {}
31

  
32
  ngOnInit() {
33
    this.route.data
34
      .subscribe((data: { envSpecific: EnvProperties }) => {
35
         this.properties = data.envSpecific;
36

  
37
         if(!this.zenodoInformation) {
38
           this.zenodoInformation = new ZenodoInformationClass();
39
         }
40
         if(!this.zenodoInformation.url) {
41
           this.zenodoInformation.url = this.properties.zenodo;
42
         }
43
         if(!this.zenodoInformation.name) {
44
           this.zenodoInformation.name = "Zenodo";
45
         }
46
      });
47
  }
48
}
modules/uoa-services-library/trunk/ng-openaire-library/src/app/deposit/datasets/depositBySubjectResult.component.ts
1
import {Component, Input}           from '@angular/core';
2
import {Router}                     from '@angular/router';
3
import {ActivatedRoute}             from '@angular/router';
4
import {Title, Meta}                from '@angular/platform-browser';
5

  
6
import {Observable}                 from 'rxjs';
7

  
8
import {EnvProperties}               from '../../utils/properties/env-properties';
9

  
10
import {ErrorCodes}                 from '../../utils/properties/errorCodes';
11

  
12
import {FetchDataproviders}         from '../../utils/fetchEntitiesClasses/fetchDataproviders.class';
13
import {RouterHelper}               from '../../utils/routerHelper.class';
14

  
15
import {SearchDataprovidersService} from '../../services/searchDataproviders.service';
16
import {OrganizationService}        from '../../services/organization.service';
17
import {PiwikService}               from '../../utils/piwik/piwik.service';
18
import { SEOService } from '../../sharedComponents/SEO/SEO.service';
19

  
20
import {ZenodoInformationClass} from '../utils/zenodoInformation.class';
21

  
22
@Component({
23
    selector: 'deposit-by-subject-result',
24
    template: `
25
        <deposit-result [requestFor]="'Research Data'" [piwikSiteId]=piwikSiteId
26
                        [zenodoInformation]="zenodoInformation"
27
                        [subjectResults]="true" [subject]="subject">
28
        </deposit-result>
29
    `
30
    //templateUrl: 'depositBySubjectResult.component.html'
31
})
32

  
33
export class DepositBySubjectResultComponent {
34
  @Input() piwikSiteId = null;
35
  @Input() zenodoInformation: ZenodoInformationClass;
36

  
37
  public subject: string = "";
38
  properties:EnvProperties;
39

  
40
  constructor (private  route: ActivatedRoute) {}
41

  
42
  ngOnInit() {
43
    this.route.data
44
      .subscribe((data: { envSpecific: EnvProperties }) => {
45
         this.properties = data.envSpecific;
46

  
47
         if(!this.zenodoInformation) {
48
           this.zenodoInformation = new ZenodoInformationClass();
49
         }
50
         if(!this.zenodoInformation.url) {
51
           this.zenodoInformation.url = this.properties.zenodo;
52
         }
53
         if(!this.zenodoInformation.name) {
54
           this.zenodoInformation.name = "Zenodo";
55
         }
56
      });
57
  }
58
}
modules/uoa-services-library/trunk/ng-openaire-library/src/app/deposit/deposit.module.ts
1
/* Common Component of deposit for both research data & ppublications*/
2

  
3
import { NgModule }            from '@angular/core';
4
import { CommonModule }        from '@angular/common';
5
import { FormsModule }         from '@angular/forms';
6
import { RouterModule } from '@angular/router';
7

  
8
import { DepositComponent } from './deposit.component';
9
import { DepositResultComponent } from './depositResult.component';
10
import {EntitiesAutocompleteModule} from '../utils/entitiesAutoComplete/entitiesAutoComplete.module';
11
import {DataProvidersServiceModule} from '../services/dataProvidersService.module';
12
import {OrganizationServiceModule} from '../services/organizationService.module';
13
import {SearchResultsModule } from '../searchPages/searchUtils/searchResults.module';
14
import {PiwikServiceModule} from '../utils/piwik/piwikService.module';
15
import {HelperModule} from '../utils/helper/helper.module';
16
import { DepositBySubjectComponent } from './datasets/depositBySubject.component';
17
import {IFrameModule} from '../utils/iframe.module';
18
import {Schema2jsonldModule} from '../sharedComponents/schema2jsonld/schema2jsonld.module';
19
import { SEOServiceModule } from '../sharedComponents/SEO/SEOService.module';
20
import{SearchPagingModule} from '../searchPages/searchUtils/searchPaging.module';
21
import {ApprovedByCommunityModule} from '../connect/approvedByCommunity/approved.module';
22

  
23

  
24
 @NgModule({
25
  imports: [
26
    CommonModule, FormsModule,
27
    RouterModule,
28
    EntitiesAutocompleteModule,
29
    DataProvidersServiceModule,
30
    OrganizationServiceModule,
31
    SearchResultsModule,
32
    PiwikServiceModule,
33
    HelperModule,
34
    IFrameModule, Schema2jsonldModule, SEOServiceModule,
35
    SearchPagingModule, ApprovedByCommunityModule
36
  ],
37
  declarations: [
38
    DepositComponent,
39
    DepositResultComponent,
40
    DepositBySubjectComponent
41
  ],
42
  exports: [
43
    DepositComponent,
44
    DepositResultComponent
45
  ],
46
  providers:    [
47
  ]
48
})
49
export class DepositModule { }
modules/uoa-services-library/trunk/ng-openaire-library/src/app/app.module.ts
20 20
import {OrganizationModule} from './landingPages/organization/organization.module';
21 21
import {ReloadModule} from './reload/reload.module';
22 22
import {ErrorModule} from './error/error.module';
23
import {DepositDatasetsModule} from './deposit/datasets/depositDatasets.module';
24
import {DepositDatasetsResultsModule} from './deposit/datasets/depositDatasetsResults.module';
25
import {DepositBySubjectResultsModule} from './deposit/datasets/depositBySubjectResults.module';
26
import {DepositPublicationsModule} from './deposit/publications/depositPublications.module';
27
import {DepositPublicationsResultsModule} from './deposit/publications/depositPublicationsResults.module';
28 23

  
29 24
import {SearchResearchResultsModule} from './searchPages/simple/searchResearchResults.module';
30 25
import {SearchDataProvidersModule} from './searchPages/simple/searchDataProviders.module';
......
67 62
    NavigationBarModule,
68 63
    MainSearchModule,
69 64
    ErrorModule,
70
    DepositDatasetsModule,DepositDatasetsResultsModule, DepositBySubjectResultsModule,DepositPublicationsModule , DepositPublicationsResultsModule,
71 65
    SearchResearchResultsModule, SearchDataProvidersModule, SearchProjectsModule, SearchOrganizationsModule,
72 66
    AdvancedSearchResearchResultsModule, AdvancedSearchDataProvidersModule, AdvancedSearchProjectsModule, AdvancedSearchOrganizationsModule,
73 67
    ResultLandingModule, DataProviderModule, OrganizationModule, ProjectModule,
modules/uoa-services-library/trunk/ng-openaire-library/src/app/app-routing.module.ts
15 15
import {OrganizationComponent} from './landingPages/organization/organization.component';
16 16

  
17 17

  
18
import {DepositDatasetsComponent} from './deposit/datasets/depositDatasets.component';
19
import {DepositDatasetsResultComponent} from './deposit/datasets/depositDatasetsResult.component';
20
import {DepositBySubjectResultComponent} from './deposit/datasets/depositBySubjectResult.component';
21
import {DepositPublicationsComponent} from './deposit/publications/depositPublications.component';
22
import {DepositPublicationsResultComponent} from './deposit/publications/depositPublicationsResult.component';
23

  
24 18
import {SearchResearchResultsComponent} from './searchPages/simple/searchResearchResults.component';
25 19
import {SearchDataprovidersComponent} from './searchPages/simple/searchDataproviders.component';
26 20
import {SearchProjectsComponent} from './searchPages/simple/searchProjects.component';
......
58 52
  { path: 'search/project', component: ProjectComponent , resolve: { envSpecific: EnvironmentSpecificResolver  } },
59 53
  { path: 'search/dataprovider', component: DataProviderComponent , resolve: { envSpecific: EnvironmentSpecificResolver  } },
60 54
  { path: 'search/organization', component: OrganizationComponent , resolve: { envSpecific: EnvironmentSpecificResolver  } },
61
  { path: 'participate/deposit-datasets', component: DepositDatasetsComponent , resolve: { envSpecific: EnvironmentSpecificResolver  } },
62
  { path: 'participate/deposit-datasets-result', component: DepositDatasetsResultComponent, resolve: { envSpecific: EnvironmentSpecificResolver  } },
63
  { path: 'participate/deposit-subject-result', component: DepositBySubjectResultComponent , resolve: { envSpecific: EnvironmentSpecificResolver  } },
64
  { path: 'participate/deposit-publications', component: DepositPublicationsComponent , resolve: { envSpecific: EnvironmentSpecificResolver  } },
65
  { path: 'participate/deposit-publications-result', component: DepositPublicationsResultComponent, resolve: { envSpecific: EnvironmentSpecificResolver  } },
66 55
  { path: 'search/find', component:  SearchComponent, resolve: { envSpecific: EnvironmentSpecificResolver  } },
67 56
  { path: 'search/find/publications', component: SearchResearchResultsComponent , resolve: { envSpecific: EnvironmentSpecificResolver  }, canActivate: [ ] },
68 57
  { path: 'search/find/datasets', component:SearchResearchResultsComponent, resolve: { envSpecific: EnvironmentSpecificResolver  } },

Also available in: Unified diff