-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpage.tsx
More file actions
75 lines (66 loc) · 2.7 KB
/
page.tsx
File metadata and controls
75 lines (66 loc) · 2.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
'use client';
import React from 'react';
import ReportViewer, { Callbacks, RequestOptions, TemplateEngine } from 'devexpress-reporting-react/dx-report-viewer';
import TreeList from 'devextreme-react/tree-list';
import { IEditorViewModel } from '@devexpress/analytics-core/analytics-widgets-native';
import 'devextreme/dist/css/dx.light.css';
import '@devexpress/analytics-core/dist/css/dx-analytics.common.css';
import '@devexpress/analytics-core/dist/css/dx-analytics.light.css';
import 'devexpress-reporting/dist/css/dx-webdocumentviewer.css';
const BACKEND_URL = 'http://localhost:5000';
let parametersModel: any = undefined;
const CustomParameterEditor = ({data}: {data: IEditorViewModel}) => {
const dataSource = `${BACKEND_URL}/Home/ListEmployees`;
const columns = [{ dataField: "name", caption: "Name" }, { dataField: "title", caption: "Title" }];
const onSelectionChanged = (e: any) => {
if (e.selectedRowsData.length > 0) {
var selectedEmployeeID = e.selectedRowsData[0].id;
parametersModel.p_employeeID = selectedEmployeeID;
}
}
return (
<TreeList
dataSource={dataSource}
columns={columns}
showBorders={true}
selection={{ mode: 'single' }}
selectedRowKeys={data.value}
onSelectionChanged={onSelectionChanged}
/>
);
};
export default function Home() {
const templateEngine = new TemplateEngine();
templateEngine.setTemplate('employeeID-custom-editor', CustomParameterEditor);
const onBeforeRender = ({sender}: {sender: any}) => {
var previewModel = sender.GetPreviewModel();
previewModel.tabPanel.width = 500;
parametersModel = previewModel.parametersModel;
};
const onCustomizeParameterEditors = React.useCallback(({ args }: { args: any }): void => {
if (args.parameter.type === 'System.DateTime') {
args.info.editor = {...args.info.editor};
args.info.editor.extendedOptions = {
...args.info.editor.extendedOptions,
type: 'date',
displayFormat: 'dd-MMM-yyyy'
};
args.info.validationRules = [{
type: "range",
min: new Date(1990, 0, 1),
message: "No data available prior to the year 1990."
}];
};
if (args.parameter.name == "p_employeeID") {
args.info.editor = { header: 'employeeID-custom-editor' };
};
}, []);
return (
<ReportViewer reportUrl="CustomParameterReport" templateEngine={templateEngine}>
<RequestOptions invokeAction="/DXXRDV" host="http://localhost:5000/" />
<Callbacks
CustomizeParameterEditors={onCustomizeParameterEditors}
BeforeRender={onBeforeRender} />
</ReportViewer>
);
}