UNPKG

@adaptabletools/adaptable

Version:

Powerful data-agnostic HTML5 AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements

53 lines (52 loc) 4.58 kB
import * as React from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { Flex } from 'rebass'; import join from '../../components/utils/join'; import * as ExportRedux from '../../Redux/ActionsReducers/ExportRedux'; import * as PopupRedux from '../../Redux/ActionsReducers/PopupRedux'; import * as GeneralConstants from '../../Utilities/Constants/GeneralConstants'; import * as ModuleConstants from '../../Utilities/Constants/ModuleConstants'; import AdaptableHelper from '../../Utilities/Helpers/AdaptableHelper'; import ObjectFactory from '../../Utilities/ObjectFactory'; import { ButtonDelete } from '../Components/Buttons/ButtonDelete'; import { ButtonEdit } from '../Components/Buttons/ButtonEdit'; import { ButtonNew } from '../Components/Buttons/ButtonNew'; import { ButtonSchedule } from '../Components/Buttons/ButtonSchedule'; import { ReportNameSelector } from './ReportNameSelector'; import { ReportFormatSelector } from './ReportFormatSelector'; import { ExportDestinationPicker } from './ExportDestinationPicker'; export const ExportViewPanel = (props) => { const dispatch = useDispatch(); const exportApi = props.api.exportApi; const userReports = useSelector((state) => state.Export.Reports); const currentReportName = useSelector((state) => state.Export.CurrentReport); const currentFormat = useSelector((state) => state.Export.CurrentFormat); const currentReport = exportApi.getReportByName(currentReportName); const accessLevel = AdaptableHelper.getAccessLevelForObject(currentReport, props.accessLevel); const deleteMessage = currentReport ? `Are you sure you want to delete '${currentReport.Name}'?` : 'Are you sure you want to delete this report?'; const elementType = props.viewType === 'Toolbar' ? 'DashboardToolbar' : 'ToolPanel'; return (React.createElement(Flex, { style: { gap: 5 }, flexDirection: "row", className: `ab-${elementType}__Export__panel`, flexWrap: props.viewType === 'ToolPanel' ? 'wrap' : 'nowrap' }, React.createElement(ReportNameSelector, { viewType: props.viewType, reportName: currentReportName, userReports: userReports, onReportNameSelected: (reportName) => exportApi.selectReport(reportName) }), React.createElement(ReportFormatSelector, { viewType: props.viewType, reportName: currentReportName, reportFormat: currentFormat, onReportFormatSelected: (reportFormat) => exportApi.selectFormat(reportFormat) }), React.createElement(Flex, { className: join(accessLevel == 'ReadOnly' ? GeneralConstants.READ_ONLY_STYLE : '', `ab-${elementType}__Export__controls`), style: { width: '100%' } }, React.createElement(ExportDestinationPicker, { viewType: props.viewType, reportName: currentReportName, reportFormat: currentFormat }), React.createElement(ButtonEdit, { onClick: () => dispatch(PopupRedux.PopupShowScreen(ModuleConstants.ExportModuleId, props.moduleInfo.Popup, { action: 'Edit', source: 'Toolbar', })), tooltip: "Edit Report", className: `ab-${elementType}__Export__edit`, disabled: currentReport == null, accessLevel: accessLevel }), React.createElement(ButtonNew, { variant: "text", className: `ab-${elementType}__Export__new`, tone: "neutral", children: null, onClick: () => dispatch(PopupRedux.PopupShowScreen(ModuleConstants.ExportModuleId, props.moduleInfo.Popup, { action: 'New', source: 'Toolbar', })), tooltip: "Create New Report", accessLevel: props.accessLevel }), React.createElement(ButtonDelete, { tooltip: "Delete Report", className: `ab-${elementType}__Export__delete`, disabled: currentReport == null, ConfirmAction: ExportRedux.ReportDelete(currentReport), ConfirmationMsg: deleteMessage, ConfirmationTitle: 'Delete Report', accessLevel: accessLevel }), props.api.entitlementApi.isModuleFullEntitlement('Schedule') && (React.createElement(ButtonSchedule, { marginLeft: 1, className: `ab-${elementType}__Export__schedule`, onClick: () => { const reportSchedule = ObjectFactory.CreateReportSchedule(currentReportName, currentFormat); dispatch(PopupRedux.PopupShowScreen(ModuleConstants.ScheduleModuleId, 'SchedulePopup', { action: 'New', source: 'Toolbar', value: reportSchedule, })); }, tooltip: "Schedule", disabled: currentReport == null, accessLevel: props.accessLevel }))))); };