[]
ReportDesigner.ResourceProvider
Represents external resources provider.
↳ ResourceProvider
▸ fork(reportName): ResourceLocator
Creates new ResourceLocator instance based on current one base path.
| Name | Type | Description |
|---|---|---|
reportName |
string |
Relative path for new report. |
— Provide tools for accessing external resources by URIs.
ResourceLocator.fork
▸ getImagesList(): Promise<ImageResourceInfo[]>
Retrieves a list of images that will be available to the end-user within the designer component.
example
import Cat from './resource/images/Cat.png';
import Dog from './resource/images/Dog.jpg';
const images = { Cat, Dog };
const getImagesList = async (): Promise<ImageResourceInfo[]> =>
Object.keys(images).map((image) => ({
id: `image://${image}`,
displayName: image,
mimeType: '',
thumbnail: '',
}));
const designer = new MESCIUS.ActiveReportsJS.ReportDesigner.Designer(
'#designer-host'
);
designer.setResourceProvider({ getImagesList });
Promise<ImageResourceInfo[]>
— A promise that resolves to an array of images that users can insert into reports in the designer.
▸ getMasterReportList(): Promise<ReportResourceInfo[]>
Retrieves a list of master reports that will be available to the end-user within the designer component.
example
import Master1 from './resource/masterReports/Master1.rdlx-json-master';
import Master2 from './resource/masterReports/Master2.rdlx-json-master';
const masterReports: Record<string, ReportResourceInfo> = { Master1, Master2 };
const getMasterReportList = async (): Promise<ReportResourceInfo[]> =>
Object.keys(masterReports).map((masterReport) => ({
id: `report://${masterReport}`,
displayName: masterReport,
}));
const designer = new MESCIUS.ActiveReportsJS.ReportDesigner.Designer(
'#designer-host'
);
designer.setResourceProvider({ getMasterReportList });
Promise<ReportResourceInfo[]>
— A promise that resolves to an array of master reports that users can select in the designer.
▸ getReportsList(): Promise<ReportResourceInfo[]>
Retrieves a list of reports that will be available to the end-user within the designer component.
example
import MSL from './resource/reports/MSL.rdlx-json';
import FPL from './resource/reports/FPL.rdlx-json';
const reports: Record<string, ReportResourceInfo> = { MSL, FPL };
const getReportsList = async (): Promise<ReportResourceInfo[]> =>
Object.keys(reports).map((report) => ({
id: `report://${report}`,
displayName: report,
}));
const designer = new MESCIUS.ActiveReportsJS.ReportDesigner.Designer(
'#designer-host'
);
designer.setResourceProvider({ getReportsList });
Promise<ReportResourceInfo[]>
— A promise that resolves to an array of reports that users can open in the designer.
▸ getResource<T>(uri): Promise<null | T>
Fetches and returns the content for the resource identified by the given URI. Resolves to null when the provider confirms the resource is missing and rejects if the lookup fails (for example, due to HTTP errors).
example
const getResource = (id: string) =>
fetch(getResourceUri(id)).then((response) => response.json());
| Name |
|---|
T |
| Name | Type | Description |
|---|---|---|
uri |
string |
— URI of the resource to fetch. |
Promise<null | T>
— A promise that resolves to the resource content parsed as type T, or null if the resource is not found.
ResourceLocator.getResource
▸ getResourceUri(resourceID): string
Returns an absolute URI for the resource identified by resourceID, using the provider's base path and ID scheme.
example
const getResourceUri = (resourceID: string) => {
const mappings = [
{ prefix: 'report://', offset: 9, replacement: '/reports/' },
{
prefix: 'masterReport://',
offset: 15,
replacement: '/masterReports/',
},
{ prefix: 'theme://', offset: 8, replacement: '/themes/' },
{ prefix: 'stylesheet://', offset: 13, replacement: '/stylesheets/' },
{ prefix: 'library://', offset: 10, replacement: '/libraries/' },
];
const mapping = mappings.find((m) => resourceID.startsWith(m.prefix));
return mapping
? `${mapping.replacement}${resourceID.substring(mapping.offset)}`
: resourceID;
};
| Name | Type | Description |
|---|---|---|
resourceID |
string |
— Identifier of the resource to locate. |
string
— Absolute URI that can be used to fetch the resource.
ResourceLocator.getResourceUri
▸ getStylesheetList(): Promise<StylesheetResourceInfo[]>
Retrieves a list of stylesheets that will be available to the end-user within the designer component.
example
import Light from './resource/stylesheets/Stylesheet-Light.rdlx-json-style';
import Dark from './resource/stylesheets/Stylesheet-Dark.rdlx-json-style';
const stylesheets = { Light, Dark };
const getStylesheetList = async (): Promise<StylesheetResourceInfo[]> =>
Object.entries(stylesheets).map(([name, stylesheet]) => ({
id: `stylesheet://${name}`,
content: stylesheet,
}));
const designer = new MESCIUS.ActiveReportsJS.ReportDesigner.Designer(
'#designer-host'
);
designer.setResourceProvider({ getStylesheetList });
Promise<StylesheetResourceInfo[]>
— A promise that resolves to an array of stylesheet definitions. These stylesheets can be applied by users while editing reports in the designer.
▸ getThemesList(): Promise<ThemeResourceInfo[]>
Retrieves a list of themes that will be available to the end-user within the designer component.
example
import Default from './resource/themes/Default.json';
import BlueForPrint from './resource/themes/BlueForPrint.json';
const themes: Record<string, ThemeResourceInfo> = { Default, BlueForPrint };
const getThemesList = async (): Promise<ThemeResourceInfo[]> =>
Object.keys(themes).map((name) => ({
id: `theme://${name}`,
displayName: name,
info: { ...themes[name].Theme.Colors },
}));
const designer = new MESCIUS.ActiveReportsJS.ReportDesigner.Designer(
'#designer-host'
);
designer.setResourceProvider({ getThemesList });
Promise<ThemeResourceInfo[]>
— A promise that resolves to an array of themes that users can apply while editing reports.