import {Component, Inject, Input, Optional} from '@angular/core';
import {Location} from '@angular/common';
import {ActivatedRoute} from '@angular/router';
import {Title, Meta} from '@angular/platform-browser';
import {SEOService} from "../sharedComponents/SEO/SEO.service";
import {properties} from "../../../environments/environment";
import {RESPONSE} from '../utils/tokens';
import {Response} from 'express';
import {OpenaireEntities} from "../utils/properties/searchFields";
@Component({
selector: 'error',
template: `
Bad karma: we can't find that page!
Not valid or missing {{page_type_name}} id.
Search another {{page_type_name}}?
You asked for {{page}}, but despite our computers looking very hard, we could not find it. What happened ?
- the link you clicked to arrive here has a typo in it
- or somehow we removed that page, or gave it another name
- or, quite unlikely for sure, maybe you typed it yourself and there was a little mistake ?
`
})
export class ErrorPageComponent {
@Input() public page: string;
public page_type: string;
public searchPage: string;
public searchPagePrams: {};
public page_type_name: string;
constructor (private _location: Location, private _meta: Meta,
private _title: Title, private route: ActivatedRoute,
@Optional() @Inject(RESPONSE) private response: Response,
private seoService: SEOService) {}
ngOnInit() {
this.seoService.createLinkForCanonicalURL(properties.domain + properties.baseLink + "/error");
this.route.queryParams.subscribe(data => {
this.page = this.page?this.page:data['page'];
if (!this.page) {
this.page = this._location.path(true);
}
if(this.page != "-1") {
let title = "OpenAIRE | Error page";
this._meta.updateTag({content:title},"property='og:title'");
this._title.setTitle(title);
if(this.response) {
this.response.statusCode = 404;
this.response.statusMessage = '404 - Page not found';
}
} else{
let title = "OpenAIRE | Private data";
this._meta.updateTag({content:title},"property='og:title'");
this._title.setTitle(title);
if(this.response) {
this.response.statusCode = 403;
this.response.statusMessage = '403 - Private data';
}
}
this.page_type = data['page_type'];
if(this.page_type) {
if (this.page_type == "publication") {
this.searchPage = properties.searchLinkToResults;
this.searchPagePrams = {type: 'publications'}
this.page_type_name = OpenaireEntities.PUBLICATION.toLowerCase();
} else if (this.page_type == "software") {
this.searchPage = properties.searchLinkToResults;
this.searchPagePrams = {type: 'software'}
this.page_type_name = OpenaireEntities.SOFTWARE_SINGULAR.toLowerCase();
} else if (this.page_type == "dataset") {
this.searchPagePrams = {type: 'datasets'}
this.searchPage = properties.searchLinkToResults;
this.page_type_name = OpenaireEntities.DATASET.toLowerCase();
} else if (this.page_type == "orp") {
this.searchPagePrams = {type: 'orps'}
this.searchPage = properties.searchLinkToResults;
this.page_type_name = OpenaireEntities.OTHER_SINGULAR.toLowerCase();
} else if (this.page_type == "organization") {
this.searchPage = properties.searchLinkToOrganizations;
this.page_type_name = OpenaireEntities.ORGANIZATION.toLowerCase();
} else if (this.page_type == "project") {
this.searchPage = properties.searchLinkToProjects;
this.page_type_name = OpenaireEntities.PROJECT.toLowerCase();
} else if (this.page_type == "dataprovider") {
this.searchPage = properties.searchLinkToDataProviders;
this.page_type_name = OpenaireEntities.DATASOURCE.toLowerCase();
} else if (this.page_type == "service") {
this.searchPage = properties.searchLinkToServices;
this.page_type_name = OpenaireEntities.SERVICE.toLowerCase();
} else {
this.searchPage = properties.searchLinkToResults;
this.page_type_name = OpenaireEntities.RESULT.toLowerCase();
}
}
});
}
}