diff --git a/src/common/index.js b/src/common/index.js index d82f4f0..e6ca6fe 100644 --- a/src/common/index.js +++ b/src/common/index.js @@ -30,6 +30,7 @@ import { let header,sidebar; let reportViewer = 'report-viewer'; let reportDesigner = 'report-designer'; +let loadedScriptSrcs = new Set(); document.addEventListener('DOMContentLoaded', onDOMContentLoaded, false); @@ -73,12 +74,41 @@ export function updateData(sampleData, isReportViewer) { updateMetaData(sampleData); setReportsHeight(); } + export async function updataSample(sampleData, isReportViewer) { let dirName = isReportViewer ? reportViewer : reportDesigner; let demo = document.getElementsByTagName("ej-sample")[0]; - let html = await fetchFile(`src/controls/${dirName}/${sampleData.routerPath}/index.html`); - let js = await fetchFile(`src/controls/${dirName}/${sampleData.routerPath}/index.js`); - demo.innerHTML = html; + let [html, js] = await Promise.all([ + fetchFile(`src/controls/${dirName}/${sampleData.routerPath}/index.html`), + fetchFile(`src/controls/${dirName}/${sampleData.routerPath}/index.js`) + ]); + demo.replaceChildren(); + let doc = document.implementation.createHTMLDocument(''); + let wrapper = doc.createElement('div'); + wrapper.innerHTML = html; + let nodes = Array.from(wrapper.childNodes); + nodes.forEach(node => { + if (node.nodeType === Node.ELEMENT_NODE && node.tagName === 'SCRIPT') return; + demo.appendChild(document.importNode(node, true)); + }); + let scripts = wrapper.querySelectorAll('script'); + for (let oldScript of scripts) { + let newScript = document.createElement('script'); + for (let attr of oldScript.attributes) newScript.setAttribute(attr.name, attr.value); + + if (oldScript.src && !loadedScriptSrcs.has(oldScript.src)) { + loadedScriptSrcs.add(oldScript.src); + await new Promise((resolve, reject) => { + newScript.addEventListener('load', resolve, { once: true }); + newScript.addEventListener('error', reject, { once: true }); + demo.appendChild(newScript); + }); + } else { + if (!newScript.hasAttribute('type')) newScript.type = 'text/javascript'; + newScript.text = oldScript.textContent || ''; + demo.appendChild(newScript); + } + } eval(js); } diff --git a/src/controls/report-designer/server-integration/index.js b/src/controls/report-designer/server-integration/index.js index 6092fe4..12709ab 100644 --- a/src/controls/report-designer/server-integration/index.js +++ b/src/controls/report-designer/server-integration/index.js @@ -13,17 +13,15 @@ function windowUnload(args) { } $(function () { + renderMessage(); $(document.body).bind('submit', $.proxy(formSubmit, this)); $(window).bind('beforeunload', $.proxy(windowUnload, this)); var dataValue = ""; - var apiRequest = new Object({ - password: "demo", - userid: "guest@boldreports.com" - }); + var apiRequest = new Object({ password: "", userid: "" }); $.ajax({ type: "POST", - url: "https://on-premise-demo.boldreports.com/reporting/api/site/site1/get-user-key", + url: "https://{your-report-server-domain}/reporting/api/site/site1/get-user-key", data: apiRequest, success: function (data) { dataValue = data.Token; @@ -31,7 +29,8 @@ $(function () { $("#designer").boldReportDesigner( { - serviceUrl: "https://on-premise-demo.boldreports.com/reporting/reportservice/api/Designer", + serviceUrl: "https://{your-report-server-domain}/reporting/reportservice/api/Designer", + reportServerUrl: "https://{your-report-server-domain}/reporting/api/site/site1", serviceAuthorizationToken: token.token_type + " " + token.access_token, ajaxBeforeLoad: "onAjaxRequest" }); @@ -39,8 +38,22 @@ $(function () { }); }); +function renderMessage() { + let demo = document.getElementsByTagName("ej-sample")[0]; + let container = document.createElement('div'); + container.style.height = '100%'; + container.style.display = 'flex'; + container.style.alignItems = 'center'; + container.style.justifyContent = 'center'; + + let textNode = document.createElement('span'); + textNode.textContent = 'To run this sample, configure your on-premises server URL and valid user credentials.'; + container.append(textNode); + demo.append(container); +} + function onAjaxRequest(args) { args.headers.push({ - Key: 'serverurl', Value: 'https://on-premise-demo.boldreports.com/reporting/api/site/site1' + Key: 'serverurl', Value: 'https://{your-report-server-domain}/reporting/api/site/site1' }); } \ No newline at end of file