diff --git a/portal-2/package.json b/portal-2/package.json index 272fe575..655adfb8 100644 --- a/portal-2/package.json +++ b/portal-2/package.json @@ -58,6 +58,7 @@ "angular2-universal": "~2.1.0-rc.1", "angular2-universal-polyfills": "~2.1.0-rc.1", "body-parser": "^1.15.2", + "citation-js": "^0.3.0-2", "clipboard": "^1.5.16", "compression": "^1.6.2", "express": "^4.14.0", diff --git a/portal-2/src/app/claims/claim-utils/claimProject.component.ts b/portal-2/src/app/claims/claim-utils/claimProject.component.ts index 583b69b8..fe79c86e 100644 --- a/portal-2/src/app/claims/claim-utils/claimProject.component.ts +++ b/portal-2/src/app/claims/claim-utils/claimProject.component.ts @@ -18,7 +18,7 @@ declare var UIkit:any; - + diff --git a/portal-2/src/app/deposit/deposit.component.ts b/portal-2/src/app/deposit/deposit.component.ts index ff085191..0eec5bc4 100644 --- a/portal-2/src/app/deposit/deposit.component.ts +++ b/portal-2/src/app/deposit/deposit.component.ts @@ -33,7 +33,7 @@ import {OpenaireProperties, ErrorCodes} from '../utils/properties/openaireProper

Locate data provider via your institution

- diff --git a/portal-2/src/app/landingPages/dataset/dataset.component.html b/portal-2/src/app/landingPages/dataset/dataset.component.html index 5fed37ca..84b7580e 100644 --- a/portal-2/src/app/landingPages/dataset/dataset.component.html +++ b/portal-2/src/app/landingPages/dataset/dataset.component.html @@ -194,6 +194,7 @@ +
  • Collected from
    diff --git a/portal-2/src/app/landingPages/dataset/dataset.module.ts b/portal-2/src/app/landingPages/dataset/dataset.module.ts index 80d34b16..3b2f20ca 100644 --- a/portal-2/src/app/landingPages/dataset/dataset.module.ts +++ b/portal-2/src/app/landingPages/dataset/dataset.module.ts @@ -11,6 +11,7 @@ import { DatasetRoutingModule } from './dataset-routing.module'; import {MetricsModule} from '../metrics.module'; import {IFrameModule} from '../../utils/iframe.module'; import {AltMetricsModule} from '../../utils/altmetrics.module'; +import {CiteThisModule} from '../landing-utils/citeThis/citeThis.module'; import { ResultLandingModule } from '../resultLanding.module'; import { LandingModule } from '../landing.module'; @@ -18,7 +19,7 @@ import { LandingModule } from '../landing.module'; @NgModule({ imports: [ //MaterialModule.forRoot(), - CommonModule, FormsModule,SharedModule, RouterModule, LandingModule, + CommonModule, FormsModule,SharedModule, RouterModule, LandingModule, CiteThisModule, ResultLandingModule, DatasetRoutingModule, MetricsModule, IFrameModule, AltMetricsModule ], declarations: [ diff --git a/portal-2/src/app/landingPages/dataset/dataset.service.ts b/portal-2/src/app/landingPages/dataset/dataset.service.ts index fb21a8e2..62eefe82 100644 --- a/portal-2/src/app/landingPages/dataset/dataset.service.ts +++ b/portal-2/src/app/landingPages/dataset/dataset.service.ts @@ -56,6 +56,7 @@ export class DatasetService { if(data[0] != null) { this.datasetInfo.date = data[0].dateofacceptance.substring(0,4); + this.datasetInfo.dateofacceptance = data[0].dateofacceptance; this.datasetInfo.publisher = data[0].publisher; if(!Array.isArray(data[0].description)) { this.datasetInfo.description = data[0].description; diff --git a/portal-2/src/app/landingPages/landing-utils/citeThis/citation.class.ts b/portal-2/src/app/landingPages/landing-utils/citeThis/citation.class.ts new file mode 100644 index 00000000..3a8f42d8 --- /dev/null +++ b/portal-2/src/app/landingPages/landing-utils/citeThis/citation.class.ts @@ -0,0 +1,110 @@ +export class Citation{ + public templates:string[]=["bibtex","chicago","ieee","science","apa","cell","harvard","mla","nature","acm"]; + + bibtex:string =` `; + ieee_csl:string =` `; + chicago_csl:string =` `; + science_csl:string =' '; + cell_csl:string =' '; + mla_csl:string =' '; + nature_csl:string =' '; +//nature_csl:string =' '; + acm_csl:string =' '; + + public getOptionsBy(template:string):any{ + if(template == "bibtex"){ + var options:any ={ // Subsequent calls + format: 'string', + type: 'string', + style: 'bibtex' + } + return options; + }else if(template == "apa"){ + var options:any ={ // Subsequent calls + format: 'string', + type: 'string', + style: 'citation-apa' + } + return options; + }else if(template == "harvard"){ + var options:any ={ // Subsequent calls + format: 'string', + type: 'string', + style: 'citation-harvard1' + } + return options; + }else if(template == "chicago"){ + var options:any ={ // Subsequent calls + format: 'string', + type: 'string', + style: 'citation-chicago', + template:this.chicago_csl + } + return options; + }else if(template == "ieee"){ + var options:any ={ // Subsequent calls + format: 'string', + type: 'string', + style: 'citation-ieee', + template:this.ieee_csl + } + return options; + }else if(template == "science"){ + var options:any ={ // Subsequent calls + format: 'string', + type: 'string', + style: 'citation-science', + template:this.science_csl + } + return options; + }else if(template == "cell"){ + var options:any ={ // Subsequent calls + format: 'string', + type: 'string', + style: 'citation-cell', + template:this.cell_csl + } + return options; + }else if(template == "mla"){ + var options:any ={ // Subsequent calls + format: 'string', + type: 'string', + style: 'citation-mla', + template:this.mla_csl + } + return options; + }else if(template == "nature"){ + var options:any ={ // Subsequent calls + format: 'string', + type: 'string', + style: 'citation-nature', + template:this.nature_csl + } + return options; + }else if(template == "acm"){ + var options:any ={ // Subsequent calls + format: 'string', + type: 'string', + style: 'citation-acm', + template:this.acm_csl + } + return options; + } + + + } + +} +export class CitationData{ + public id:string; + public type:string; + public title:string; + public DOI:string; + public "container-title":string; + public publisher:string; + public author:{given:string, family:string, 'parse-names':boolean}[] =[]; + public issued:any[] =[];//{"date-parts":string[]}[] =[]; + public date:string; + public authors:string[] =[]; + +} diff --git a/portal-2/src/app/landingPages/landing-utils/citeThis/citeThis.component.ts b/portal-2/src/app/landingPages/landing-utils/citeThis/citeThis.component.ts new file mode 100644 index 00000000..48223ec0 --- /dev/null +++ b/portal-2/src/app/landingPages/landing-utils/citeThis/citeThis.component.ts @@ -0,0 +1,113 @@ +import {Component, ElementRef, Input} from '@angular/core'; +import {ActivatedRoute} from '@angular/router'; +import {Citation, CitationData} from './citation.class'; + +// +@Component({ + selector: 'citeThis', + template: ` + +
    +
    +
    Cite this article
    +
    + +
    {{citationText}}
    +
    +
    +
    + ` +}) +export class CiteThisComponent { + private sub:any; + public selectedStyle:string; + public citationText:string; + public citation:Citation = new Citation(); + public cite: any; + @Input() result: any; + @Input() id: string; + + public data;//= '[ { "id": "Q23571040", "type": "apple", "title": "Correlation of the Base Strengths of Amines 1", "DOI": "10.1021/ja01577a030", "author": [ { "given": "H. K.", "family": "Hall" } ], "issued": [ { "date-parts": [ "1957", "1", "1" ] } ], "container-title": "Journal of the American Chemical Society", "volume": "79", "issue": "20", "page": "5441-5444" } ]'; + + + constructor(private route: ActivatedRoute) { + this.selectedStyle = this.citation.templates[0]; + } + + ngOnInit() { + // this.Cite + // this.sub = this.route.queryParams.subscribe(data => { + this.parseData(); + var Cite = require('citation-js'); + this.cite = new Cite(this.data); + // this.cite.setData(this.data); + this.citationText = this.cite.get(this.citation.getOptionsBy(this.selectedStyle)); + // }); + } + parseData(){ + var citationData:CitationData = new CitationData(); + // try{ + + citationData.id = this.id; + if(this.result.types != undefined && this.result.types.length > 0 && this.result.types[0]){ + citationData.type = this.result.types[0].toLowerCase(); + }else if(this.result.type != undefined ){ + citationData.type = this.result.type.toLowerCase(); + } + if(this.result.title && this.result.title.name){ + citationData.title = this.result.title.name; + } + if(this.result.journal && this.result.journal.journal){ + citationData["container-title"] = this.result.journal.journal; + } + if(this.result.publisher){ + citationData.publisher = this.result.publisher; + } + citationData.author = []; + for (var i =0 ;i < this.result.authors.length; i++){ + if(this.result.authors[i].name && this.result.authors[i].name.indexOf(", ") !== -1){ + citationData.author.push({given:this.result.authors[i].name.split(", ")[0], family:this.result.authors[i].name.split(", ")[1], 'parse-names':true}); + }else{ + citationData.author.push({given:"", family:this.result.authors[i].name, 'parse-names':true}); + } + citationData.authors.push(this.result.authors[i].name); + } + if(this.result.dateofacceptance != undefined){ + citationData.issued = []; + //[this.result.dateofacceptance.substring(0,4),this.result.dateofacceptance.substring(5,7),this.result.dateofacceptance.substring(8,10)] + citationData.issued.push({"date-parts":["2011","1","1"]}); + // + // // citationData.issued[0]["date-parts"].push(this.result.dateofacceptance.substring(0,4)); + // // citationData.issued[0]["date-parts"].push(this.result.dateofacceptance.substring(5,7)); + // if(this.result.dateofacceptance.substring(5,6)=="0"){ + // citationData.issued[0]["date-parts"][1] =(this.result.dateofacceptance.substring(6,7)); + // + // } + // // citationData.issued[0]["date-parts"].push(this.result.dateofacceptance.substring(8,10)); + // if(this.result.dateofacceptance.substring(8,9)=="0"){ + // citationData.issued[0]["date-parts"][2]=(this.result.dateofacceptance.substring(9,10)); + // + // } + citationData.date = this.result.dateofacceptance ; + console.log(citationData.issued[0]["date-parts"][0]+" "+citationData.issued[0]["date-parts"][1]+" "+citationData.issued[0]["date-parts"][2] + "--->"+ citationData.date) + } + + + // }catch (e) { + // console.log("Error parsing data for citeThis component"); + // console.log(e); + // + // citationData = new CitationData(); + // } + this.data = JSON.stringify([citationData]); + console.log(this.data); + + } + styleChanged(){ + this.citationText = this.cite.get(this.citation.getOptionsBy(this.selectedStyle)); + + } + +} diff --git a/portal-2/src/app/landingPages/landing-utils/citeThis/citeThis.module.ts b/portal-2/src/app/landingPages/landing-utils/citeThis/citeThis.module.ts new file mode 100644 index 00000000..4a14a36a --- /dev/null +++ b/portal-2/src/app/landingPages/landing-utils/citeThis/citeThis.module.ts @@ -0,0 +1,23 @@ +import { NgModule} from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; + + import {CiteThisComponent} from './citeThis.component'; + +@NgModule({ + imports: [ + + CommonModule, FormsModule + ], + declarations: [ + CiteThisComponent + ], + providers:[ + + ], + exports: [ + + CiteThisComponent + ] +}) +export class CiteThisModule { } diff --git a/portal-2/src/app/landingPages/publication/publication.component.html b/portal-2/src/app/landingPages/publication/publication.component.html index 767df58b..12c298dc 100644 --- a/portal-2/src/app/landingPages/publication/publication.component.html +++ b/portal-2/src/app/landingPages/publication/publication.component.html @@ -404,7 +404,7 @@
  • - +
  • Collected from
    diff --git a/portal-2/src/app/landingPages/publication/publication.module.ts b/portal-2/src/app/landingPages/publication/publication.module.ts index 0a6322c1..909d2719 100644 --- a/portal-2/src/app/landingPages/publication/publication.module.ts +++ b/portal-2/src/app/landingPages/publication/publication.module.ts @@ -11,6 +11,7 @@ import { PublicationRoutingModule } from './publication-routing.module'; import {MetricsModule} from '../metrics.module'; import {IFrameModule} from '../../utils/iframe.module'; import {AltMetricsModule} from '../../utils/altmetrics.module'; +import {CiteThisModule} from '../landing-utils/citeThis/citeThis.module'; import { ResultLandingModule } from '../resultLanding.module'; @@ -18,7 +19,7 @@ import { LandingModule } from '../landing.module'; @NgModule({ imports: [ - CommonModule, FormsModule, LandingModule,SharedModule, RouterModule, + CommonModule, FormsModule, LandingModule,SharedModule, RouterModule, CiteThisModule, ResultLandingModule, PublicationRoutingModule, IFrameModule, MetricsModule, AltMetricsModule ], declarations: [ diff --git a/portal-2/src/app/landingPages/publication/publication.service.ts b/portal-2/src/app/landingPages/publication/publication.service.ts index 33f3fede..931acddb 100644 --- a/portal-2/src/app/landingPages/publication/publication.service.ts +++ b/portal-2/src/app/landingPages/publication/publication.service.ts @@ -55,6 +55,7 @@ export class PublicationService { if(data[0] != null) { this.publicationInfo.date = data[0].dateofacceptance.substring(0,4); + this.publicationInfo.dateofacceptance = data[0].dateofacceptance; this.publicationInfo.publisher = data[0].publisher; if(!Array.isArray(data[0].description)) { this.publicationInfo.description = data[0].description; diff --git a/portal-2/src/app/searchPages/dataProviders/compatibleDataProviders.component.ts b/portal-2/src/app/searchPages/dataProviders/compatibleDataProviders.component.ts index 3d51fbe9..447da76e 100644 --- a/portal-2/src/app/searchPages/dataProviders/compatibleDataProviders.component.ts +++ b/portal-2/src/app/searchPages/dataProviders/compatibleDataProviders.component.ts @@ -54,7 +54,7 @@ export class SearchCompatibleDataprovidersComponent { constructor (private route: ActivatedRoute, private _searchDataprovidersService: SearchDataprovidersService ) { var errorCodes:ErrorCodes = new ErrorCodes(); this.searchUtils.status =errorCodes.LOADING; - this.baseUrl = OpenaireProperties.searchLinkToCompatibleDataProviders; + this.baseUrl = OpenaireProperties.getLinkToSearchCompatibleDataProviders(); for(var i = 0; i < this._prefixQueryFields.length; i++ ){ for(var j =0; j < this._prefixQueryFields[i].values.length; j++){ this._prefixQuery+="&" + this._prefixQueryFields[i].field + "=" diff --git a/portal-2/src/app/searchPages/dataProviders/entityRegistries.component.ts b/portal-2/src/app/searchPages/dataProviders/entityRegistries.component.ts index 167f5741..3ba48242 100644 --- a/portal-2/src/app/searchPages/dataProviders/entityRegistries.component.ts +++ b/portal-2/src/app/searchPages/dataProviders/entityRegistries.component.ts @@ -54,7 +54,7 @@ export class SearchEntityRegistriesComponent { constructor (private route: ActivatedRoute, private _searchDataprovidersService: SearchDataprovidersService ) { var errorCodes:ErrorCodes = new ErrorCodes(); this.searchUtils.status =errorCodes.LOADING; - this.baseUrl = OpenaireProperties.searchLinkToEntityRegistriesDataProviders; + this.baseUrl = OpenaireProperties.getLinkToSearchEntityRegistries(); for(var i = 0; i < this._prefixQueryFields.length; i++ ){ for(var j =0; j < this._prefixQueryFields[i].values.length; j++){ this._prefixQuery+="&" + this._prefixQueryFields[i].field + "=" diff --git a/portal-2/src/app/searchPages/find/search.component.ts b/portal-2/src/app/searchPages/find/search.component.ts index 7279bf92..f3023689 100644 --- a/portal-2/src/app/searchPages/find/search.component.ts +++ b/portal-2/src/app/searchPages/find/search.component.ts @@ -336,7 +336,7 @@ public subPub;public subData;public subProjects;public subOrg;public subPeople; this.subPub = this._searchPublicationsService.numOfSearchPublications(this.keyword).subscribe( data => { console.log("Count results: "+data); - // this.fetchPublications.searchUtils.totalResults = data; + this.fetchPublications.searchUtils.totalResults = data; this.fetchPublications.searchUtils.status = this.errorCodes.DONE; }, err => { @@ -374,7 +374,7 @@ public subPub;public subData;public subProjects;public subOrg;public subPeople; if(this.activeTab != "dataproviders"){ this.fetchDataproviders.getNumForSearch(this.keyword); } - if(this.activeTab != "dataproviders"){ + if(this.activeTab != "organizations"){ this.fetchOrganizations.searchUtils.status = this.errorCodes.LOADING; this.subOrg = this._searchOrganizationsService.numOfSearchOrganizations(this.keyword).subscribe( data => { diff --git a/portal-2/src/app/searchPages/searchUtils/advancedSearchForm.component.ts b/portal-2/src/app/searchPages/searchUtils/advancedSearchForm.component.ts index 91fce6c2..01b4091c 100644 --- a/portal-2/src/app/searchPages/searchUtils/advancedSearchForm.component.ts +++ b/portal-2/src/app/searchPages/searchUtils/advancedSearchForm.component.ts @@ -17,26 +17,23 @@ import {Dates} from '../../utils/string-utils.class'; - + - - - - + - - - + + @@ -125,15 +122,16 @@ export class AdvancedSearchFormComponent { this.selectedFields[index].valid = Dates.isValidYear(value); } - fieldIdsChanged(index: number) { - console.log("Field index::"+index + this.selectedFields[index].id ); + fieldIdsChanged(index: number, fieldId:string ) { + console.log("Field index::"+index + " " + this.selectedFields[index].id + " function id:" +fieldId); + var id= this.fieldIds[0]; this.selectedFields[index].name = this.fieldIdsMap[id].name; this.selectedFields[index].type = this.fieldIdsMap[id].type; this.selectedFields[index].value = ""; this.selectedFields[index].param = this.fieldIdsMap[id].param; - var id =this.selectedFields[index].id; + var id =fieldId;//this.selectedFields[index].id; this.selectedFields[index].name = this.fieldIdsMap[id].name; this.selectedFields[index].type = this.fieldIdsMap[id].type; this.selectedFields[index].value = ""; diff --git a/portal-2/src/app/searchPages/searchUtils/browseStatistic.component.ts b/portal-2/src/app/searchPages/searchUtils/browseStatistic.component.ts index 602ec111..3d5e57c1 100644 --- a/portal-2/src/app/searchPages/searchUtils/browseStatistic.component.ts +++ b/portal-2/src/app/searchPages/searchUtils/browseStatistic.component.ts @@ -17,17 +17,19 @@ import {RouterHelper} from '../../utils/routerHelper.class';

    {{filter.title}}

    -
      + -
        +
        • - {{_formatName(value)}} ({{value.number}}) + +
          {{_formatName(value)}}
          ({{value.number}})
        • View less @@ -58,7 +60,7 @@ export class BrowseStatisticComponent { } private _formatName(value){ - return (((value.name+" ("+value.number+")").length >this._maxCharacters)?(value.name.substring(0,(this._maxCharacters - (" ("+value.number+")").length - ('...').length))+"..."):value.name) + return value.name+" ";//(((value.name+" ("+value.number+")").length >this._maxCharacters)?(value.name.substring(0,(this._maxCharacters - (" ("+value.number+")").length - ('...').length))+"..."):value.name) } } diff --git a/portal-2/src/app/searchPages/searchUtils/searchFilter.component.ts b/portal-2/src/app/searchPages/searchUtils/searchFilter.component.ts index 1451ada1..9ad4012e 100644 --- a/portal-2/src/app/searchPages/searchUtils/searchFilter.component.ts +++ b/portal-2/src/app/searchPages/searchUtils/searchFilter.component.ts @@ -12,37 +12,24 @@ import { Filter, Value} from './searchHelperClasses.class';