websetup/ts/websetup.classes.tag.jsonldtag.ts

76 lines
2.3 KiB
TypeScript
Raw Permalink Normal View History

2020-11-04 18:01:04 +00:00
import * as plugins from './websetup.plugins';
import * as interfaces from './interfaces';
2020-11-04 18:09:07 +00:00
import { Tag } from './websetup.classes.tag';
2020-11-04 18:01:04 +00:00
export class JsonLdTag extends Tag {
public static createCompanyLd(companyDataArg: plugins.tsclass.business.ICompany) {
// lets care about linked data
const companyLd = {
'@context': 'https://schema.org',
'@type': 'Corporation',
name: companyDataArg.name,
alternateName: companyDataArg.name.replace(' GmbH', ''),
url: companyDataArg.contact.website,
logo: companyDataArg.contact.logoUrl,
contactPoint: {
'@type': 'ContactPoint',
telephone: companyDataArg.contact.phone,
contactType: 'customer service',
areaServed: 'DE',
availableLanguage: ['en', 'German'],
},
sameAs: [],
};
2020-11-04 18:09:07 +00:00
2020-11-04 18:01:04 +00:00
if (companyDataArg.contact.facebookUrl) {
companyLd.sameAs.push(companyDataArg.contact.facebookUrl);
}
2020-11-04 18:09:07 +00:00
2020-11-04 18:01:04 +00:00
if (companyDataArg.contact.twitterUrl) {
companyLd.sameAs.push(companyDataArg.contact.twitterUrl);
}
const ldTag = new JsonLdTag(companyLd);
return ldTag;
}
2020-11-04 18:31:25 +00:00
public static createNewsArticleLd (newsArticleArg: plugins.tsclass.content.IArticle) {
const newsArticleLd = {
"@context": "https://schema.org",
"@type": "NewsArticle",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": window.location.href
},
"headline": "Article headline",
"image": [
newsArticleArg.featuredImageUrl
],
"datePublished": new Date(newsArticleArg.timestamp).toISOString(),
"dateModified": new Date(newsArticleArg.timestamp).toISOString(),
"author": {
"@type": "Person",
"name": `${newsArticleArg.author.firstName} ${newsArticleArg.author.surName}`
},
"publisher": {
"@type": "Organization",
"name": newsArticleArg.author.surName, // TODO
"logo": {
"@type": "ImageObject",
"url": newsArticleArg.author.surName // TODO
}
},
"description": newsArticleArg.author.firstName
};
}
2020-11-04 18:01:04 +00:00
constructor(ldObjectArg: any) {
super();
const jsonLdElement = document.createElement('script');
jsonLdElement.type = 'application/ld+json';
jsonLdElement.text = JSON.stringify(JSON.stringify(ldObjectArg));
this.elementRef = jsonLdElement;
}
2020-11-04 18:09:07 +00:00
}