Project

General

Profile

1
import {Author, Organization, Project, SearchResult} from "../entities/searchResult";
2
import {HostedByCollectedFrom, RelationResult, ResultLandingInfo} from "../entities/resultLandingInfo";
3
import {OrganizationInfo} from "../entities/organizationInfo";
4

    
5
export class ResultPreview {
6
  id: string;
7
  title: string;
8
  accessMode: string;
9
  sc39: string;
10
  countries: string[];
11
  
12
  //publications & datasets & orp & software & organizations:
13
  projects: Project[];
14
  
15
  //datasets & orp & publications & software
16
  description: string;
17
  year: string;
18
  embargoEndDate: Date | string;
19
  authors: Author[];
20
  languages: string[];
21
  identifiers: Map<string, string[]>;     //key is the classname
22
  hostedBy_collectedFrom: HostedByCollectedFrom[];
23
  
24
  //datasets & orp & software:
25
  publisher: string;
26
  
27
  //software
28
  programmingLanguages: string[];
29
  
30
  //dataproviders & projects:
31
  organizations: Organization[];
32
  
33
  //projects:
34
  acronym: string;
35
  code: string;
36
  funderShortname: string;
37
  budget: string;
38
  contribution: string;
39
  currency: string;
40
  startYear: number;
41
  endYear: number;
42
  openAccessMandatePublications: boolean;
43
  openAccessMandateDatasets: boolean;
44
  
45
  //organizations:
46
  country: string;
47
  
48
  //dataproviders:
49
  englishname: string;
50
  websiteURL: string;
51
  OAIPMHURL: string;
52
  compatibility: string;
53
  compatibilityUNKNOWN: boolean;
54
  subjects: string[];
55
  
56
  resultType: string;
57
  types: string[];
58
  
59
  // Relation result
60
  relation: string;
61
  percentage: number;
62
  provenanceAction: string;
63
  
64
  public static searchResultConvert(result: SearchResult, type: string): ResultPreview {
65
    let resultPreview: ResultPreview = new ResultPreview();
66
    resultPreview.id = result.id;
67
    resultPreview.title = result.title.name;
68
    resultPreview.accessMode = result.title.accessMode;
69
    resultPreview.sc39 = result.title.sc39;
70
    if(result.countriesForResults) {
71
      resultPreview.countries = result.countries;
72
    } else if(result.country) {
73
      resultPreview.countries = [result.country];
74
    } else {
75
      resultPreview.countries = result.countries;
76
    }
77
    resultPreview.projects = result.projects;
78
    resultPreview.description = result.description;
79
    resultPreview.year = result.year;
80
    resultPreview.embargoEndDate = result.embargoEndDate;
81
    resultPreview.authors = result.authors;
82
    resultPreview.languages = result.languages;
83
    resultPreview.publisher = result.publisher;
84
    resultPreview.programmingLanguages = result.programmingLanguages;
85
    resultPreview.organizations = result.organizations;
86
    resultPreview.acronym = result.acronym;
87
    resultPreview.code = result.code;
88
    resultPreview.funderShortname = result.funderShortname;
89
    resultPreview.budget = result.budget;
90
    resultPreview.contribution = result.contribution;
91
    resultPreview.currency = result.currency;
92
    resultPreview.startYear = result.startYear;
93
    resultPreview.endYear = result.endYear;
94
    resultPreview.openAccessMandatePublications = result.openAccessMandatePublications;
95
    resultPreview.openAccessMandateDatasets = result.openAccessMandateDatasets;
96
    resultPreview.englishname = result.englishname;
97
    if(result.type) {
98
      resultPreview.types = [result.type];
99
    } else {
100
      resultPreview.types = result.types;
101
    }
102
    resultPreview.websiteURL = result.websiteURL;
103
    resultPreview.OAIPMHURL = result.OAIPMHURL;
104
    resultPreview.compatibility = result.compatibility;
105
    resultPreview.compatibilityUNKNOWN = result.compatibilityUNKNOWN;
106
    resultPreview.subjects = result.subjects;
107
    resultPreview.resultType = type;
108
    return resultPreview;
109
  }
110
  
111
  public static resultLandingInfoConvert(result: ResultLandingInfo, type: string): ResultPreview  {
112
    let resultPreview: ResultPreview = new ResultPreview();
113
    resultPreview.title = result.title;
114
    resultPreview.accessMode = result.accessMode;
115
    resultPreview.countries = result.countries;
116
    resultPreview.projects = result.fundedByProjects;
117
    resultPreview.description = result.description;
118
    if(result.dateofacceptance) {
119
      resultPreview.year = new Date(result.dateofacceptance).getFullYear().toString();
120
    }
121
    resultPreview.embargoEndDate = result.embargoEndDate;
122
    resultPreview.authors = result.authors;
123
    resultPreview.languages = result.languages;
124
    resultPreview.publisher = result.publisher;
125
    resultPreview.programmingLanguages = result.programmingLanguages;
126
    resultPreview.organizations = result.organizations;
127
    resultPreview.types = result.types;
128
    resultPreview.subjects = result.subjects;
129
    resultPreview.resultType = type;
130
    resultPreview.identifiers = result.identifiers;
131
    resultPreview.hostedBy_collectedFrom = result.hostedBy_collectedFrom;
132
    return resultPreview;
133
  }
134
  
135
  public static relationResultConvert(result: RelationResult, relation: string = 'trust'): ResultPreview {
136
    let resultPreview: ResultPreview = new ResultPreview();
137
    resultPreview.id = result.id;
138
    resultPreview.title = result.name;
139
    resultPreview.resultType = result.class;
140
    if(result.date) {
141
      resultPreview.year = result.date.toString();
142
    }
143
    resultPreview.relation = relation;
144
    resultPreview.percentage = result.percentage;
145
    resultPreview.provenanceAction = result.provenanceAction;
146
    return resultPreview;
147
  }
148
  
149
  public static organizationConvert(result: Organization, relation: string = 'trust'): ResultPreview {
150
    let resultPreview: ResultPreview = new ResultPreview();
151
    resultPreview.id = result.id;
152
    if(result.name) {
153
      resultPreview.title = result.name;
154
      if(result.shortname) {
155
        resultPreview.title += ' (' + result.shortname + ')';
156
      }
157
    } else if(result.shortname) {
158
      resultPreview.title = result.shortname;
159
    }
160
    if(result.country) {
161
      resultPreview.countries = [result.country];
162
    }
163
    resultPreview.relation = relation;
164
    resultPreview.percentage = result.trust;
165
    resultPreview.websiteURL = result.websiteUrl;
166
    resultPreview.resultType = 'organization';
167
    return resultPreview;
168
  }
169
  
170
  public static organizationInfoConvert(result: OrganizationInfo): ResultPreview {
171
    let resultPreview: ResultPreview = new ResultPreview();
172
    if(result.title && result.title.name) {
173
      resultPreview.title = result.title.name;
174
      if(result.name) {
175
        resultPreview.title += ' (' + result.name + ')';
176
      }
177
    } else if(result.name) {
178
      resultPreview.title = result.name;
179
    }
180
    if(result.country) {
181
      resultPreview.countries = [result.country];
182
    }
183
    if(result.title && result.title.url) {
184
      resultPreview.websiteURL = result.title.url;
185
    }
186
    resultPreview.resultType = 'organization';
187
    return resultPreview;
188
  }
189
  
190
 }
(4-4/4)