function isEmpty(value) { return (value == null || (typeof value === "string" && value.trim().length === 0)); } function getArticleUrl() { const queryParams = new URLSearchParams(window.location.search); var id = queryParams.get('id'); //console.log("id:" + id + ":" + window.location.search); if (isEmpty(id)) id = "utvendig-oppussing-sett-fra-innsiden"; //var baseUri = 'https://localhost:7050/'; var baseUri = 'https://context-iq-api-staging.azurewebsites.net/'; return baseUri + 'api/norsktakst/GetArticleData?id=' + id; } function addLinks(links) { for (var i = 0; i < links.length; i++) { var link = links[i] console.log("#" + link + "#") var linkElement = document.createElement('link'); linkElement.rel = 'stylesheet'; linkElement.type = 'text/css'; linkElement.href = link; document.head.appendChild(linkElement); } } function addCss(cssCode) { var styleElement = document.createElement("style"); styleElement.type = "text/css"; if (styleElement.styleSheet) { styleElement.styleSheet.cssText = cssCode; } else { styleElement.appendChild(document.createTextNode(cssCode)); } document.getElementsByTagName("head")[0].appendChild(styleElement); } function updateOgTags(parsedData) { var link = parsedData.canonical; var title = parsedData.title; var ingress = parsedData.ingress; const metas = Array.from(document.getElementsByTagName('meta')) const metaTitle = metas.find((m) => m.attributes[0].nodeValue === 'og:title') metaTitle.attributes[1].nodeValue = title const metaUrl = metas.find((m) => m.attributes[0].nodeValue === 'og:url') metaUrl.attributes[1].nodeValue = link //const metaImage = metas.find((m) => m.attributes[0].nodeValue === 'og:image') //metaImage.attributes[1].nodeValue = 'a image' //const metaDescription = metas.find((m) => m.attributes[0].nodeValue === 'og:description') //metaDescription.attributes[1].nodeValue = ingress } function setHeaderElements(parsedData) { var link = parsedData.canonical; var title = parsedData.title; var ingress = parsedData.ingress; //console.log(link, title, ingress); if (document.title != title) document.title = title; var linkEl = !!document.querySelector("link[rel='canonical']") ? document.querySelector("link[rel='canonical']") : document.createElement('link'); //var linkEl = document.createElement('link'); linkEl.setAttribute('rel', 'canonical'); linkEl.setAttribute('href', link); document.head.appendChild(linkEl); var metaEl = !!document.querySelector("meta[name='description']") ? document.querySelector("meta[name='description']") : document.createElement('meta'); metaEl.setAttribute('content', ingress); linkEl.setAttribute('name', 'description'); document.head.appendChild(linkEl); } function embedData(embEl, data) { var jsonString = JSON.stringify(data) //console.log(jsonString); const parsedData = JSON.parse(jsonString); var parsedCSS = parsedData.css //console.log(parsedCSS); addCss(parsedCSS) var cssLink = parsedData.link addLinks(cssLink) var innerHtml = ""; for (var idx in parsedData.sections) { var section = parsedData.sections[idx]; var context = section.context; //console.log(context); innerHtml += context; } //updateOgTags(parsedData) //setHeaderElements(parsedData) embEl.innerHTML = innerHtml; } function fetchData(embEl) { var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function () { if (xhr.readyState === XMLHttpRequest.DONE) { if (xhr.status === 200) { var data = JSON.parse(xhr.responseText); // Process the received data here embedData(embEl, data); } else { console.error('Error: ' + xhr.status); } } }; // This url will become dynamic later var url = getArticleUrl(); console.log(url); xhr.open('GET', url, true); xhr.send(); } window.onload = function () { var embeddingElement = document.getElementById('context-IQ-embedding'); if (embeddingElement) { console.log('Context.Embedding V0.01'); fetchData(embeddingElement); console.log('Embedding complete'); } };