@adaptabletools/adaptable
Version:
Powerful AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements
54 lines (53 loc) • 3.77 kB
JavaScript
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
import * as React from 'react';
import { useDispatch, useSelector } from 'react-redux';
import * as ExportRedux from '../../Redux/ActionsReducers/ExportRedux';
import { formatScheduledReportSummary } from '../../Strategy/Utilities/Export/formatScheduledReportSummary';
import { useAdaptable } from '../AdaptableContext';
import { AdaptableObjectListItemView } from '../Components/AdaptableObjectList/AdaptableObjectList';
import { objectListActionButtonClassName } from '../Components/AdaptableObjectList/objectListActionButtonStyles';
import { ButtonEdit } from '../Components/Buttons/ButtonEdit';
import EmptyContent from '../../components/EmptyContent';
import { ScheduledReportWizard } from './Wizard/ScheduledReportWizard';
import * as ModuleConstants from '../../Utilities/Constants/ModuleConstants';
export const ExportSchedulesTab = () => {
const { api } = useAdaptable();
const dispatch = useDispatch();
useSelector((state) => state.Export?.Revision);
const accessLevel = api.entitlementApi.getEntitlementAccessLevelForModule(ModuleConstants.ExportModuleId);
const [editingSchedule, setEditingSchedule] = React.useState(null);
const schedules = api.exportApi.getScheduledReports();
const exportModule = api.internalApi
.getModuleService()
.getModuleById(ModuleConstants.ExportModuleId);
const moduleInfo = exportModule?.moduleInfo;
if (!exportModule) {
return null;
}
if (!schedules.length) {
return (_jsx(EmptyContent, { children: "No report schedules configured. Schedule a report from the Export toolbar or create one when editing a report." }));
}
return (_jsxs(_Fragment, { children: [_jsx("ul", { className: "ab-Adaptable-Object-List twa:list-none twa:p-0 twa:m-0 twa:flex twa:flex-col twa:gap-3", children: schedules.map((reportSchedule) => (_jsx(ExportScheduleListItem, { module: exportModule, reportSchedule: reportSchedule, accessLevel: accessLevel, onEdit: () => setEditingSchedule(reportSchedule), onSuspend: () => dispatch(ExportRedux.ScheduledReportSuspend(reportSchedule)), onUnSuspend: () => dispatch(ExportRedux.ScheduledReportUnSuspend(reportSchedule)) }, reportSchedule.Uuid))) }), editingSchedule && moduleInfo && (_jsx(ScheduledReportWizard, { moduleInfo: moduleInfo, data: editingSchedule, popupParams: {
action: 'Edit',
source: 'Other',
value: {
reportName: editingSchedule.ReportName,
schedule: editingSchedule,
},
}, configEntities: null, onCloseWizard: () => setEditingSchedule(null), onFinishWizard: () => setEditingSchedule(null) }))] }));
};
const ExportScheduleListItem = (props) => {
const { reportSchedule, accessLevel } = props;
return (_jsx(AdaptableObjectListItemView, { module: props.module, abObject: reportSchedule, accessLevel: accessLevel, entityType: "Schedule", showActions: true, showEditButton: false, items: [
{
name: 'Report',
values: [reportSchedule.ReportName],
},
{
name: 'Schedule',
values: [formatScheduledReportSummary(reportSchedule)],
},
], actions: [
_jsx(ButtonEdit, { accessLevel: accessLevel, onClick: props.onEdit, tooltip: "Edit Schedule", className: objectListActionButtonClassName('edit') }, "edit"),
], deleteAction: ExportRedux.ScheduledReportDelete(reportSchedule), deleteConfirmationMsg: "Are you sure you want to delete this schedule?", suspendedEnabled: true, onSuspend: props.onSuspend, onUnSuspend: props.onUnSuspend }));
};