UNPKG

devexpress-reporting-react

Version:

DevExpress Reporting React provides the capability to develop a reporting application to create and customize reports.

67 lines (66 loc) 7.83 kB
import React, { useMemo } from 'react'; import { Button, CheckBox, LoadIndicator, SelectBox, TextArea, Popup } from 'devextreme-react'; import Template from '../../core/Template'; import { Position } from 'devextreme-react/cjs/popup'; import { ViewModelChangedEvent } from '@devexpress/analytics-core/serializer/native/viewModels/viewModelGenerator'; const AIPanel = ({ data }) => { const viewModel = data.model.getViewModel(); React.useEffect(() => { const parentEventManagerHolder = data; return viewModel._viewModelEvents?.on(ViewModelChangedEvent, (args) => parentEventManagerHolder._viewModelEvents.call(ViewModelChangedEvent, args)); }, [viewModel]); const popupAttributes = useMemo(() => { return { class: 'dxrd-preview-ai-panel-warning-popup' }; }, []); return (React.createElement("div", { id: "dxrd-preview-ai-panel-id", className: "dxrd-preview-ai-panel", hidden: !(data.visible && data.active) }, React.createElement("div", { className: "dxrd-right-panel-header dxd-text-primary" }, React.createElement("span", null, " ", viewModel?.aiPanelHeaderLabel, " ")), !!viewModel && (React.createElement("div", null, React.createElement("div", { className: "dxrd-preview-ai-panel-wrapper dx-editors" }, React.createElement("div", { className: "dx-fieldset" }, React.createElement("div", { className: "dx-field dxrd-preview-ai-select-box" }, React.createElement("label", { className: "dxrd-preview-ai-form-label", htmlFor: "dxrv-ai-target-select" }, " ", viewModel.targetContentText), React.createElement(SelectBox, { id: "dxrv-ai-target-select", className: "dxrd-preview-ai-form-input", dataSource: viewModel.targetSelectBoxOptions.dataSource, onValueChanged: viewModel.targetSelectBoxOptions.onValueChanged, value: viewModel.targetSelectBoxOptions.value, displayExpr: viewModel.targetSelectBoxOptions.displayExpr, valueExpr: viewModel.targetSelectBoxOptions.valueExpr, inputAttr: viewModel.targetSelectBoxOptions.inputAttr })), React.createElement("div", { className: "dx-field dxrd-preview-ai-select-box" }, React.createElement("label", { className: "dxrd-preview-ai-form-label", htmlFor: "dxrv-ai-language-select" }, " ", viewModel.targetLanguageText, " "), React.createElement(SelectBox, { id: "dxrv-ai-language-select", className: "dxrd-preview-ai-form-input", dataSource: viewModel.languageSelectBoxOptions.dataSource, onValueChanged: viewModel.languageSelectBoxOptions.onValueChanged, value: viewModel.languageSelectBoxOptions.value, displayExpr: viewModel.languageSelectBoxOptions.displayExpr, valueExpr: viewModel.languageSelectBoxOptions.valueExpr, showClearButton: viewModel.languageSelectBoxOptions.showClearButton, inputAttr: viewModel.languageSelectBoxOptions.inputAttr })), viewModel.pageSelectBoxVisible && (React.createElement("div", { className: "dx-field dxrd-preview-ai-select-box" }, React.createElement("label", { className: "dxrd-preview-ai-form-label", htmlFor: "dxrv-ai-page-select" }, " ", viewModel.pageSelectText), React.createElement(SelectBox, { className: "dxrd-preview-ai-form-input", id: "dxrv-ai-page-select", dataSource: viewModel.pageSelectBoxOptions.dataSource, onValueChanged: viewModel.pageSelectBoxOptions.onValueChanged, value: viewModel.pageSelectBoxOptions.value, displayExpr: viewModel.pageSelectBoxOptions.displayExpr, valueExpr: viewModel.pageSelectBoxOptions.valueExpr, searchExpr: viewModel.pageSelectBoxOptions.searchExpr, searchEnabled: viewModel.pageSelectBoxOptions.searchEnabled, visible: viewModel.pageSelectBoxOptions.visible, inputAttr: viewModel.pageSelectBoxOptions.inputAttr }))), React.createElement("div", { className: "dx-field" }, React.createElement("div", { className: "dxrd-preview-ai-buttons-wrapper" }, React.createElement(LoadIndicator, { className: "dxrd-preview-ai-buttons", visible: data.model.loading, height: 24, width: 24 }), React.createElement(Button, { className: "dxrd-preview-ai-buttons dx-accessibility-focus-border-accented", text: viewModel.buttons.translateTextButton.text, disabled: viewModel.buttons.translateTextButton.disabled, onClick: viewModel.buttons.translateTextButton.onClick, width: viewModel.buttons.translateTextButton.width }), React.createElement(Button, { className: "dxrd-preview-ai-buttons dx-accessibility-focus-border-accented", text: viewModel.buttons.summarizeTextButton.text, disabled: viewModel.buttons.summarizeTextButton.disabled, onClick: viewModel.buttons.summarizeTextButton.onClick, width: viewModel.buttons.summarizeTextButton.width })))), viewModel.resultVisible && (React.createElement("div", { className: "dxrd-right-panel-header dxd-text-primary dxd-border-primary dxrd-ai-result-text" }, React.createElement("span", { className: "dxrd-right-panel-result-text" }, " ", viewModel.textProcessingResultHeaderText, " "), React.createElement("div", { role: "button", className: "dxrd-right-panel-copy-button dx-accessibility-focus-border-accented", tabIndex: 0, onKeyDown: (e) => viewModel.copyText(data, e) }, React.createElement(Template, { template: data.model?.copyButtonTemplate, className: "dxd-icon-highlighted", onClick: (e) => viewModel.buttons.copyResultButton.onClick(e) })))), React.createElement(TextArea, { id: "dxrd-ai-panel-text-area-id", tabIndex: 0, className: "dx-accessibility-focus-border-accented dxrd-preview-ai-panel-textarea dxd-back-primary2", value: viewModel.aiProcessingResultText, onInput: (e) => e.event.preventDefault(), onPaste: (e) => e.event.preventDefault(), onKeyDown: (e) => e.event.key !== 'Tab' && e.event.preventDefault(), hoverStateEnabled: false })), React.createElement(Popup, { width: 350, height: 200, shading: false, focusStateEnabled: false, visible: viewModel.warningTextLimitPopupVisible, container: '#dxrd-preview-ai-panel-id', showCloseButton: false, showTitle: false, wrapperAttr: popupAttributes }, React.createElement(Position, { at: "top", my: "top", of: "#dxrd-preview-ai-panel-id", collision: "fit" }), React.createElement("span", { className: "dxrd-preview-ai-panel-warning-popup-text" }, " ", viewModel.limitExceededWarningMsg, " "), React.createElement(CheckBox, { className: "dxrd-preview-ai-panel-warning-popup-checkbox", text: viewModel.proceedForAllCheckBoxOptions.text, value: viewModel.proceedForAllCheckBoxOptions.value, onValueChanged: viewModel.proceedForAllCheckBoxOptions.onValueChanged }), React.createElement("div", { className: "dxrd-preview-ai-panel-warning-popup-button-group" }, React.createElement(Button, { text: viewModel.proceedNextChunkButtonText, onClick: viewModel.proceedNextButtonClick, className: "dxrd-preview-ai-panel-warning-popup-button dx-button-default" }), React.createElement(Button, { text: viewModel.cancelChunkedOperationButtonText, onClick: viewModel.cancelProcessButtonClick, className: "dxrd-preview-ai-panel-warning-popup-button" }))))))); }; export default AIPanel;