Skip to content
36 changes: 33 additions & 3 deletions src/common/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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);
}

Expand Down
27 changes: 20 additions & 7 deletions src/controls/report-designer/server-integration/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,34 +13,47 @@ 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;
var token = JSON.parse(dataValue);

$("#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"
});
}
});
});

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'
});
}