attempting to move filters from instance table to own component
This commit is contained in:
parent
fe8c86e288
commit
1768618f27
|
@ -0,0 +1,995 @@
|
||||||
|
// // @ts-ignore
|
||||||
|
// import { Filter } from '@carbon/icons-react';
|
||||||
|
// import {
|
||||||
|
// Button,
|
||||||
|
// Grid,
|
||||||
|
// Column,
|
||||||
|
// // @ts-ignore
|
||||||
|
// } from '@carbon/react';
|
||||||
|
// import useAPIError from '../hooks/UseApiError';
|
||||||
|
//
|
||||||
|
// type OwnProps = {
|
||||||
|
// showFilterOptions: boolean;
|
||||||
|
// setShowFilterOptions: Function;
|
||||||
|
// filtersEnabled?: boolean;
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// export default function Filters({
|
||||||
|
// showFilterOptions,
|
||||||
|
// setShowFilterOptions,
|
||||||
|
// filtersEnabled = true,
|
||||||
|
// }: OwnProps) {
|
||||||
|
// const { addError, removeError } = useAPIError();
|
||||||
|
//
|
||||||
|
// const toggleShowFilterOptions = () => {
|
||||||
|
// setShowFilterOptions(!showFilterOptions);
|
||||||
|
// };
|
||||||
|
// const reportFilterBy = () => {
|
||||||
|
// return (reportMetadata as any).filter_by;
|
||||||
|
// };
|
||||||
|
// const reportColumns = () => {
|
||||||
|
// return (reportMetadata as any).columns;
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// const navigateToNewReport = (queryParamString: string) => {
|
||||||
|
// removeError();
|
||||||
|
// setProcessInstanceReportJustSaved(null);
|
||||||
|
// setProcessInstanceFilters({});
|
||||||
|
// navigate(`${processInstanceListPathPrefix}?${queryParamString}`);
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// const applyFilter = (event: any) => {
|
||||||
|
// event.preventDefault();
|
||||||
|
// setProcessInitiatorNotFoundErrorText('');
|
||||||
|
//
|
||||||
|
// const { page, perPage } = getPageInfoFromSearchParams(
|
||||||
|
// searchParams,
|
||||||
|
// undefined,
|
||||||
|
// undefined,
|
||||||
|
// paginationQueryParamPrefix
|
||||||
|
// );
|
||||||
|
// let queryParamString = `per_page=${perPage}&page=${page}&user_filter=true`;
|
||||||
|
// const {
|
||||||
|
// valid,
|
||||||
|
// startFromSeconds,
|
||||||
|
// startToSeconds,
|
||||||
|
// endFromSeconds,
|
||||||
|
// endToSeconds,
|
||||||
|
// } = calculateStartAndEndSeconds();
|
||||||
|
//
|
||||||
|
// if (!valid) {
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// if (startFromSeconds) {
|
||||||
|
// queryParamString += `&start_from=${startFromSeconds}`;
|
||||||
|
// }
|
||||||
|
// if (startToSeconds) {
|
||||||
|
// queryParamString += `&start_to=${startToSeconds}`;
|
||||||
|
// }
|
||||||
|
// if (endFromSeconds) {
|
||||||
|
// queryParamString += `&end_from=${endFromSeconds}`;
|
||||||
|
// }
|
||||||
|
// if (endToSeconds) {
|
||||||
|
// queryParamString += `&end_to=${endToSeconds}`;
|
||||||
|
// }
|
||||||
|
// if (processStatusSelection.length > 0) {
|
||||||
|
// queryParamString += `&process_status=${processStatusSelection}`;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// if (processModelSelection) {
|
||||||
|
// queryParamString += `&process_model_identifier=${processModelSelection.id}`;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// if (processInstanceReportSelection) {
|
||||||
|
// queryParamString += `&report_id=${processInstanceReportSelection.id}`;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// const reportColumnsBase64 = encodeBase64(JSON.stringify(reportColumns()));
|
||||||
|
// queryParamString += `&report_columns=${reportColumnsBase64}`;
|
||||||
|
// const reportFilterByBase64 = encodeBase64(JSON.stringify(reportFilterBy()));
|
||||||
|
// queryParamString += `&report_filter_by=${reportFilterByBase64}`;
|
||||||
|
//
|
||||||
|
// if (processInitiatorSelection) {
|
||||||
|
// queryParamString += `&process_initiator_username=${processInitiatorSelection.username}`;
|
||||||
|
// navigateToNewReport(queryParamString);
|
||||||
|
// } else if (processInitiatorText) {
|
||||||
|
// HttpService.makeCallToBackend({
|
||||||
|
// path: targetUris.userExists,
|
||||||
|
// httpMethod: 'POST',
|
||||||
|
// postBody: { username: processInitiatorText },
|
||||||
|
// successCallback: (result: any) => {
|
||||||
|
// if (result.user_found) {
|
||||||
|
// queryParamString += `&process_initiator_username=${processInitiatorText}`;
|
||||||
|
// navigateToNewReport(queryParamString);
|
||||||
|
// } else {
|
||||||
|
// setProcessInitiatorNotFoundErrorText(
|
||||||
|
// `The provided username is invalid. Please type the exact username.`
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
// });
|
||||||
|
// } else {
|
||||||
|
// navigateToNewReport(queryParamString);
|
||||||
|
// }
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// const dateComponent = (
|
||||||
|
// labelString: any,
|
||||||
|
// name: any,
|
||||||
|
// initialDate: any,
|
||||||
|
// initialTime: string,
|
||||||
|
// onChangeDateFunction: any,
|
||||||
|
// onChangeTimeFunction: any,
|
||||||
|
// timeInvalid: boolean,
|
||||||
|
// setTimeInvalid: any
|
||||||
|
// ) => {
|
||||||
|
// return (
|
||||||
|
// <>
|
||||||
|
// <DatePicker dateFormat={DATE_FORMAT_CARBON} datePickerType="single">
|
||||||
|
// <DatePickerInput
|
||||||
|
// id={`date-picker-${name}`}
|
||||||
|
// placeholder={DATE_FORMAT}
|
||||||
|
// labelText={labelString}
|
||||||
|
// type="text"
|
||||||
|
// size="md"
|
||||||
|
// autocomplete="off"
|
||||||
|
// allowInput={false}
|
||||||
|
// onChange={(dateChangeEvent: any) => {
|
||||||
|
// if (!initialDate && !initialTime) {
|
||||||
|
// onChangeTimeFunction(
|
||||||
|
// convertDateObjectToFormattedHoursMinutes(new Date())
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
// onChangeDateFunction(dateChangeEvent.srcElement.value);
|
||||||
|
// }}
|
||||||
|
// value={initialDate}
|
||||||
|
// />
|
||||||
|
// </DatePicker>
|
||||||
|
// <TimePicker
|
||||||
|
// invalid={timeInvalid}
|
||||||
|
// id="time-picker"
|
||||||
|
// labelText="Select a time"
|
||||||
|
// pattern="^([01]\d|2[0-3]):?([0-5]\d)$"
|
||||||
|
// value={initialTime}
|
||||||
|
// onChange={(event: any) => {
|
||||||
|
// if (event.srcElement.validity.valid) {
|
||||||
|
// setTimeInvalid(false);
|
||||||
|
// } else {
|
||||||
|
// setTimeInvalid(true);
|
||||||
|
// }
|
||||||
|
// onChangeTimeFunction(event.srcElement.value);
|
||||||
|
// }}
|
||||||
|
// />
|
||||||
|
// </>
|
||||||
|
// );
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// const processStatusSearch = () => {
|
||||||
|
// return (
|
||||||
|
// <MultiSelect
|
||||||
|
// label="Choose Status"
|
||||||
|
// className="our-class"
|
||||||
|
// id="process-instance-status-select"
|
||||||
|
// titleText="Status"
|
||||||
|
// items={processStatusAllOptions}
|
||||||
|
// onChange={(selection: any) => {
|
||||||
|
// setProcessStatusSelection(selection.selectedItems);
|
||||||
|
// setRequiresRefilter(true);
|
||||||
|
// }}
|
||||||
|
// itemToString={(item: any) => {
|
||||||
|
// return item || '';
|
||||||
|
// }}
|
||||||
|
// selectionFeedback="top-after-reopen"
|
||||||
|
// selectedItems={processStatusSelection}
|
||||||
|
// />
|
||||||
|
// );
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// const clearFilters = () => {
|
||||||
|
// setProcessModelSelection(null);
|
||||||
|
// setProcessStatusSelection([]);
|
||||||
|
// setStartFromDate('');
|
||||||
|
// setStartFromTime('');
|
||||||
|
// setStartToDate('');
|
||||||
|
// setStartToTime('');
|
||||||
|
// setEndFromDate('');
|
||||||
|
// setEndFromTime('');
|
||||||
|
// setEndToDate('');
|
||||||
|
// setEndToTime('');
|
||||||
|
// setProcessInitiatorSelection(null);
|
||||||
|
// setProcessInitiatorText('');
|
||||||
|
// setRequiresRefilter(true);
|
||||||
|
// if (reportMetadata) {
|
||||||
|
// reportMetadata.filter_by = [];
|
||||||
|
// }
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// const processInstanceReportDidChange = (selection: any, mode?: string) => {
|
||||||
|
// clearFilters();
|
||||||
|
// const selectedReport = selection.selectedItem;
|
||||||
|
// setProcessInstanceReportSelection(selectedReport);
|
||||||
|
//
|
||||||
|
// let queryParamString = '';
|
||||||
|
// if (selectedReport) {
|
||||||
|
// queryParamString = `?report_id=${selectedReport.id}`;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// removeError();
|
||||||
|
// setProcessInstanceReportJustSaved(mode || null);
|
||||||
|
// navigate(`${processInstanceListPathPrefix}${queryParamString}`);
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// const reportColumnAccessors = () => {
|
||||||
|
// return reportColumns().map((reportColumn: ReportColumn) => {
|
||||||
|
// return reportColumn.accessor;
|
||||||
|
// });
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// // TODO onSuccess reload/select the new report in the report search
|
||||||
|
// const onSaveReportSuccess = (result: any, mode: string) => {
|
||||||
|
// processInstanceReportDidChange(
|
||||||
|
// {
|
||||||
|
// selectedItem: result,
|
||||||
|
// },
|
||||||
|
// mode
|
||||||
|
// );
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// const saveAsReportComponent = () => {
|
||||||
|
// const {
|
||||||
|
// valid,
|
||||||
|
// startFromSeconds,
|
||||||
|
// startToSeconds,
|
||||||
|
// endFromSeconds,
|
||||||
|
// endToSeconds,
|
||||||
|
// } = calculateStartAndEndSeconds(false);
|
||||||
|
//
|
||||||
|
// if (!valid || !reportMetadata) {
|
||||||
|
// return null;
|
||||||
|
// }
|
||||||
|
// return (
|
||||||
|
// <ProcessInstanceListSaveAsReport
|
||||||
|
// onSuccess={onSaveReportSuccess}
|
||||||
|
// buttonClassName="button-white-background narrow-button"
|
||||||
|
// columnArray={reportColumns()}
|
||||||
|
// orderBy=""
|
||||||
|
// buttonText="Save"
|
||||||
|
// processModelSelection={processModelSelection}
|
||||||
|
// processInitiatorSelection={processInitiatorSelection}
|
||||||
|
// processStatusSelection={processStatusSelection}
|
||||||
|
// processInstanceReportSelection={processInstanceReportSelection}
|
||||||
|
// reportMetadata={reportMetadata}
|
||||||
|
// startFromSeconds={startFromSeconds}
|
||||||
|
// startToSeconds={startToSeconds}
|
||||||
|
// endFromSeconds={endFromSeconds}
|
||||||
|
// endToSeconds={endToSeconds}
|
||||||
|
// />
|
||||||
|
// );
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// const onDeleteReportSuccess = () => {
|
||||||
|
// processInstanceReportDidChange({ selectedItem: null });
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// const deleteReportComponent = () => {
|
||||||
|
// return processInstanceReportSelection ? (
|
||||||
|
// <ProcessInstanceListDeleteReport
|
||||||
|
// onSuccess={onDeleteReportSuccess}
|
||||||
|
// processInstanceReportSelection={processInstanceReportSelection}
|
||||||
|
// />
|
||||||
|
// ) : null;
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// const removeColumn = (reportColumn: ReportColumn) => {
|
||||||
|
// if (reportMetadata) {
|
||||||
|
// const reportMetadataCopy = { ...reportMetadata };
|
||||||
|
// const newColumns = reportColumns().filter(
|
||||||
|
// (rc: ReportColumn) => rc.accessor !== reportColumn.accessor
|
||||||
|
// );
|
||||||
|
// Object.assign(reportMetadataCopy, { columns: newColumns });
|
||||||
|
// setReportMetadata(reportMetadataCopy);
|
||||||
|
// setRequiresRefilter(true);
|
||||||
|
// }
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// const handleColumnFormClose = () => {
|
||||||
|
// setShowReportColumnForm(false);
|
||||||
|
// setReportColumnFormMode('');
|
||||||
|
// setReportColumnToOperateOn(null);
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// const getFilterByFromReportMetadata = (reportColumnAccessor: string) => {
|
||||||
|
// if (reportMetadata) {
|
||||||
|
// return reportMetadata.filter_by.find((reportFilter: ReportFilter) => {
|
||||||
|
// return reportColumnAccessor === reportFilter.field_name;
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
// return null;
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// const getNewFiltersFromReportForEditing = (
|
||||||
|
// reportColumnForEditing: ReportColumnForEditing
|
||||||
|
// ) => {
|
||||||
|
// if (!reportMetadata) {
|
||||||
|
// return null;
|
||||||
|
// }
|
||||||
|
// const reportMetadataCopy = { ...reportMetadata };
|
||||||
|
// let newReportFilters = reportMetadataCopy.filter_by;
|
||||||
|
// if (reportColumnForEditing.filterable) {
|
||||||
|
// const newReportFilter: ReportFilter = {
|
||||||
|
// field_name: reportColumnForEditing.accessor,
|
||||||
|
// field_value: reportColumnForEditing.filter_field_value,
|
||||||
|
// operator: reportColumnForEditing.filter_operator || 'equals',
|
||||||
|
// };
|
||||||
|
// const existingReportFilter = getFilterByFromReportMetadata(
|
||||||
|
// reportColumnForEditing.accessor
|
||||||
|
// );
|
||||||
|
// if (existingReportFilter) {
|
||||||
|
// const existingReportFilterIndex =
|
||||||
|
// reportMetadataCopy.filter_by.indexOf(existingReportFilter);
|
||||||
|
// if (reportColumnForEditing.filter_field_value) {
|
||||||
|
// newReportFilters[existingReportFilterIndex] = newReportFilter;
|
||||||
|
// } else {
|
||||||
|
// newReportFilters.splice(existingReportFilterIndex, 1);
|
||||||
|
// }
|
||||||
|
// } else if (reportColumnForEditing.filter_field_value) {
|
||||||
|
// newReportFilters = newReportFilters.concat([newReportFilter]);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// return newReportFilters;
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// const handleUpdateReportColumn = () => {
|
||||||
|
// if (reportColumnToOperateOn && reportMetadata) {
|
||||||
|
// const reportMetadataCopy = { ...reportMetadata };
|
||||||
|
// let newReportColumns = null;
|
||||||
|
// if (reportColumnFormMode === 'new') {
|
||||||
|
// newReportColumns = reportColumns().concat([reportColumnToOperateOn]);
|
||||||
|
// } else {
|
||||||
|
// newReportColumns = reportColumns().map((rc: ReportColumn) => {
|
||||||
|
// if (rc.accessor === reportColumnToOperateOn.accessor) {
|
||||||
|
// return reportColumnToOperateOn;
|
||||||
|
// }
|
||||||
|
// return rc;
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
// Object.assign(reportMetadataCopy, {
|
||||||
|
// columns: newReportColumns,
|
||||||
|
// filter_by: getNewFiltersFromReportForEditing(reportColumnToOperateOn),
|
||||||
|
// });
|
||||||
|
// setReportMetadata(reportMetadataCopy);
|
||||||
|
// setReportColumnToOperateOn(null);
|
||||||
|
// setShowReportColumnForm(false);
|
||||||
|
// setRequiresRefilter(true);
|
||||||
|
// }
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// const reportColumnToReportColumnForEditing = (reportColumn: ReportColumn) => {
|
||||||
|
// const reportColumnForEditing: ReportColumnForEditing = Object.assign(
|
||||||
|
// reportColumn,
|
||||||
|
// { filter_field_value: '', filter_operator: '' }
|
||||||
|
// );
|
||||||
|
// const reportFilter = getFilterByFromReportMetadata(
|
||||||
|
// reportColumnForEditing.accessor
|
||||||
|
// );
|
||||||
|
// if (reportFilter) {
|
||||||
|
// reportColumnForEditing.filter_field_value = reportFilter.field_value;
|
||||||
|
// reportColumnForEditing.filter_operator =
|
||||||
|
// reportFilter.operator || 'equals';
|
||||||
|
// }
|
||||||
|
// return reportColumnForEditing;
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// const updateReportColumn = (event: any) => {
|
||||||
|
// let reportColumnForEditing = null;
|
||||||
|
// if (event.selectedItem) {
|
||||||
|
// reportColumnForEditing = reportColumnToReportColumnForEditing(
|
||||||
|
// event.selectedItem
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
// setReportColumnToOperateOn(reportColumnForEditing);
|
||||||
|
// setRequiresRefilter(true);
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// // options includes item and inputValue
|
||||||
|
// const shouldFilterReportColumn = (options: any) => {
|
||||||
|
// const reportColumn: ReportColumn = options.item;
|
||||||
|
// const { inputValue } = options;
|
||||||
|
// return (
|
||||||
|
// !reportColumnAccessors().includes(reportColumn.accessor) &&
|
||||||
|
// (reportColumn.accessor || '')
|
||||||
|
// .toLowerCase()
|
||||||
|
// .includes((inputValue || '').toLowerCase())
|
||||||
|
// );
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// const setReportColumnConditionValue = (event: any) => {
|
||||||
|
// if (reportColumnToOperateOn) {
|
||||||
|
// const reportColumnToOperateOnCopy = {
|
||||||
|
// ...reportColumnToOperateOn,
|
||||||
|
// };
|
||||||
|
// reportColumnToOperateOnCopy.filter_field_value = event.target.value;
|
||||||
|
// setReportColumnToOperateOn(reportColumnToOperateOnCopy);
|
||||||
|
// setRequiresRefilter(true);
|
||||||
|
// }
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// const reportColumnForm = () => {
|
||||||
|
// if (reportColumnFormMode === '') {
|
||||||
|
// return null;
|
||||||
|
// }
|
||||||
|
// const formElements = [];
|
||||||
|
// if (reportColumnFormMode === 'new') {
|
||||||
|
// formElements.push(
|
||||||
|
// <ComboBox
|
||||||
|
// onChange={updateReportColumn}
|
||||||
|
// id="report-column-selection"
|
||||||
|
// data-qa="report-column-selection"
|
||||||
|
// data-modal-primary-focus
|
||||||
|
// items={availableReportColumns}
|
||||||
|
// itemToString={(reportColumn: ReportColumn) => {
|
||||||
|
// if (reportColumn) {
|
||||||
|
// return reportColumn.accessor;
|
||||||
|
// }
|
||||||
|
// return null;
|
||||||
|
// }}
|
||||||
|
// shouldFilterItem={shouldFilterReportColumn}
|
||||||
|
// placeholder="Choose a column to show"
|
||||||
|
// titleText="Column"
|
||||||
|
// selectedItem={reportColumnToOperateOn}
|
||||||
|
// />
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
// formElements.push([
|
||||||
|
// <TextInput
|
||||||
|
// id="report-column-display-name"
|
||||||
|
// name="report-column-display-name"
|
||||||
|
// labelText="Display Name"
|
||||||
|
// disabled={!reportColumnToOperateOn}
|
||||||
|
// value={reportColumnToOperateOn ? reportColumnToOperateOn.Header : ''}
|
||||||
|
// onChange={(event: any) => {
|
||||||
|
// if (reportColumnToOperateOn) {
|
||||||
|
// setRequiresRefilter(true);
|
||||||
|
// const reportColumnToOperateOnCopy = {
|
||||||
|
// ...reportColumnToOperateOn,
|
||||||
|
// };
|
||||||
|
// reportColumnToOperateOnCopy.Header = event.target.value;
|
||||||
|
// setReportColumnToOperateOn(reportColumnToOperateOnCopy);
|
||||||
|
// }
|
||||||
|
// }}
|
||||||
|
// />,
|
||||||
|
// ]);
|
||||||
|
// if (reportColumnToOperateOn && reportColumnToOperateOn.filterable) {
|
||||||
|
// formElements.push(
|
||||||
|
// <TextInput
|
||||||
|
// id="report-column-condition-value"
|
||||||
|
// name="report-column-condition-value"
|
||||||
|
// labelText="Condition Value"
|
||||||
|
// value={
|
||||||
|
// reportColumnToOperateOn
|
||||||
|
// ? reportColumnToOperateOn.filter_field_value
|
||||||
|
// : ''
|
||||||
|
// }
|
||||||
|
// onChange={setReportColumnConditionValue}
|
||||||
|
// />
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
// formElements.push(
|
||||||
|
// <div className="vertical-spacer-to-allow-combo-box-to-expand-in-modal" />
|
||||||
|
// );
|
||||||
|
// const modalHeading =
|
||||||
|
// reportColumnFormMode === 'new'
|
||||||
|
// ? 'Add Column'
|
||||||
|
// : `Edit ${
|
||||||
|
// reportColumnToOperateOn ? reportColumnToOperateOn.accessor : ''
|
||||||
|
// } column`;
|
||||||
|
// return (
|
||||||
|
// <Modal
|
||||||
|
// open={showReportColumnForm}
|
||||||
|
// modalHeading={modalHeading}
|
||||||
|
// primaryButtonText="Save"
|
||||||
|
// primaryButtonDisabled={!reportColumnToOperateOn}
|
||||||
|
// onRequestSubmit={handleUpdateReportColumn}
|
||||||
|
// onRequestClose={handleColumnFormClose}
|
||||||
|
// hasScrollingContent
|
||||||
|
// >
|
||||||
|
// {formElements}
|
||||||
|
// </Modal>
|
||||||
|
// );
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// const columnSelections = () => {
|
||||||
|
// if (reportColumns()) {
|
||||||
|
// const tags: any = [];
|
||||||
|
//
|
||||||
|
// (reportColumns() as any).forEach((reportColumn: ReportColumn) => {
|
||||||
|
// const reportColumnForEditing =
|
||||||
|
// reportColumnToReportColumnForEditing(reportColumn);
|
||||||
|
//
|
||||||
|
// let tagType = 'cool-gray';
|
||||||
|
// let tagTypeClass = '';
|
||||||
|
// if (reportColumnForEditing.filterable) {
|
||||||
|
// tagType = 'green';
|
||||||
|
// tagTypeClass = 'tag-type-green';
|
||||||
|
// }
|
||||||
|
// let reportColumnLabel = reportColumnForEditing.Header;
|
||||||
|
// if (reportColumnForEditing.filter_field_value) {
|
||||||
|
// reportColumnLabel = `${reportColumnLabel}=${reportColumnForEditing.filter_field_value}`;
|
||||||
|
// }
|
||||||
|
// tags.push(
|
||||||
|
// <Tag type={tagType} size="sm">
|
||||||
|
// <Button
|
||||||
|
// kind="ghost"
|
||||||
|
// size="sm"
|
||||||
|
// className={`button-tag-icon ${tagTypeClass}`}
|
||||||
|
// title={`Edit ${reportColumnForEditing.accessor} column`}
|
||||||
|
// onClick={() => {
|
||||||
|
// setReportColumnToOperateOn(reportColumnForEditing);
|
||||||
|
// setShowReportColumnForm(true);
|
||||||
|
// setReportColumnFormMode('edit');
|
||||||
|
// }}
|
||||||
|
// >
|
||||||
|
// {reportColumnLabel}
|
||||||
|
// </Button>
|
||||||
|
// <Button
|
||||||
|
// data-qa="remove-report-column"
|
||||||
|
// renderIcon={Close}
|
||||||
|
// iconDescription="Remove Column"
|
||||||
|
// className={`button-tag-icon ${tagTypeClass}`}
|
||||||
|
// hasIconOnly
|
||||||
|
// size="sm"
|
||||||
|
// kind="ghost"
|
||||||
|
// onClick={() => removeColumn(reportColumnForEditing)}
|
||||||
|
// />
|
||||||
|
// </Tag>
|
||||||
|
// );
|
||||||
|
// });
|
||||||
|
// return (
|
||||||
|
// <Stack orientation="horizontal">
|
||||||
|
// {tags}
|
||||||
|
// <Button
|
||||||
|
// data-qa="add-column-button"
|
||||||
|
// renderIcon={AddAlt}
|
||||||
|
// iconDescription="Column options"
|
||||||
|
// className="with-tiny-top-margin"
|
||||||
|
// kind="ghost"
|
||||||
|
// hasIconOnly
|
||||||
|
// size="sm"
|
||||||
|
// onClick={() => {
|
||||||
|
// setShowReportColumnForm(true);
|
||||||
|
// setReportColumnFormMode('new');
|
||||||
|
// }}
|
||||||
|
// />
|
||||||
|
// </Stack>
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
// return null;
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// const filterOptions = () => {
|
||||||
|
// if (!showFilterOptions) {
|
||||||
|
// return null;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// let queryParamString = '';
|
||||||
|
// if (processModelSelection) {
|
||||||
|
// queryParamString += `?process_model_identifier=${processModelSelection.id}`;
|
||||||
|
// }
|
||||||
|
// // get the columns anytime we display the filter options if they are empty.
|
||||||
|
// // and if the columns are not empty, check if the columns are stale
|
||||||
|
// // because we selected a different process model in the filter options.
|
||||||
|
// const columnFilterIsStale = lastColumnFilter !== queryParamString;
|
||||||
|
// if (availableReportColumns.length < 1 || columnFilterIsStale) {
|
||||||
|
// setLastColumnFilter(queryParamString);
|
||||||
|
// HttpService.makeCallToBackend({
|
||||||
|
// path: `/process-instances/reports/columns${queryParamString}`,
|
||||||
|
// successCallback: setAvailableReportColumns,
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// return (
|
||||||
|
// <>
|
||||||
|
// <Grid fullWidth className="with-bottom-margin">
|
||||||
|
// <Column md={8} lg={16} sm={4}>
|
||||||
|
// <FormLabel>Columns</FormLabel>
|
||||||
|
// <br />
|
||||||
|
// {columnSelections()}
|
||||||
|
// </Column>
|
||||||
|
// </Grid>
|
||||||
|
// <Grid fullWidth className="with-bottom-margin">
|
||||||
|
// <Column md={8}>
|
||||||
|
// <ProcessModelSearch
|
||||||
|
// onChange={(selection: any) => {
|
||||||
|
// setProcessModelSelection(selection.selectedItem);
|
||||||
|
// setRequiresRefilter(true);
|
||||||
|
// }}
|
||||||
|
// processModels={processModelAvailableItems}
|
||||||
|
// selectedItem={processModelSelection}
|
||||||
|
// />
|
||||||
|
// </Column>
|
||||||
|
// <Column md={4}>
|
||||||
|
// <Can
|
||||||
|
// I="GET"
|
||||||
|
// a={targetUris.userSearch}
|
||||||
|
// ability={ability}
|
||||||
|
// passThrough
|
||||||
|
// >
|
||||||
|
// {(hasAccess: boolean) => {
|
||||||
|
// if (hasAccess) {
|
||||||
|
// return (
|
||||||
|
// <ComboBox
|
||||||
|
// onInputChange={searchForProcessInitiator}
|
||||||
|
// onChange={(event: any) => {
|
||||||
|
// setProcessInitiatorSelection(event.selectedItem);
|
||||||
|
// setRequiresRefilter(true);
|
||||||
|
// }}
|
||||||
|
// id="process-instance-initiator-search"
|
||||||
|
// data-qa="process-instance-initiator-search"
|
||||||
|
// items={processInstanceInitiatorOptions}
|
||||||
|
// itemToString={(processInstanceInitatorOption: User) => {
|
||||||
|
// if (processInstanceInitatorOption) {
|
||||||
|
// return processInstanceInitatorOption.username;
|
||||||
|
// }
|
||||||
|
// return null;
|
||||||
|
// }}
|
||||||
|
// placeholder="Start typing username"
|
||||||
|
// titleText="Process Initiator"
|
||||||
|
// selectedItem={processInitiatorSelection}
|
||||||
|
// />
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
// return (
|
||||||
|
// <TextInput
|
||||||
|
// id="process-instance-initiator-search"
|
||||||
|
// placeholder="Enter username"
|
||||||
|
// labelText="Process Initiator"
|
||||||
|
// invalid={processInitiatorNotFoundErrorText !== ''}
|
||||||
|
// invalidText={processInitiatorNotFoundErrorText}
|
||||||
|
// onChange={(event: any) => {
|
||||||
|
// setProcessInitiatorText(event.target.value);
|
||||||
|
// setRequiresRefilter(true);
|
||||||
|
// }}
|
||||||
|
// />
|
||||||
|
// );
|
||||||
|
// }}
|
||||||
|
// </Can>
|
||||||
|
// </Column>
|
||||||
|
// <Column md={4}>{processStatusSearch()}</Column>
|
||||||
|
// </Grid>
|
||||||
|
// <Grid fullWidth className="with-bottom-margin">
|
||||||
|
// <Column md={4}>
|
||||||
|
// {dateComponent(
|
||||||
|
// 'Start date from',
|
||||||
|
// 'start-from',
|
||||||
|
// startFromDate,
|
||||||
|
// startFromTime,
|
||||||
|
// (val: string) => {
|
||||||
|
// setStartFromDate(val);
|
||||||
|
// setRequiresRefilter(true);
|
||||||
|
// },
|
||||||
|
// (val: string) => {
|
||||||
|
// setStartFromTime(val);
|
||||||
|
// setRequiresRefilter(true);
|
||||||
|
// },
|
||||||
|
// startFromTimeInvalid,
|
||||||
|
// setStartFromTimeInvalid
|
||||||
|
// )}
|
||||||
|
// </Column>
|
||||||
|
// <Column md={4}>
|
||||||
|
// {dateComponent(
|
||||||
|
// 'Start date to',
|
||||||
|
// 'start-to',
|
||||||
|
// startToDate,
|
||||||
|
// startToTime,
|
||||||
|
// (val: string) => {
|
||||||
|
// setStartToDate(val);
|
||||||
|
// setRequiresRefilter(true);
|
||||||
|
// },
|
||||||
|
// (val: string) => {
|
||||||
|
// setStartToTime(val);
|
||||||
|
// setRequiresRefilter(true);
|
||||||
|
// },
|
||||||
|
// startToTimeInvalid,
|
||||||
|
// setStartToTimeInvalid
|
||||||
|
// )}
|
||||||
|
// </Column>
|
||||||
|
// <Column md={4}>
|
||||||
|
// {dateComponent(
|
||||||
|
// 'End date from',
|
||||||
|
// 'end-from',
|
||||||
|
// endFromDate,
|
||||||
|
// endFromTime,
|
||||||
|
// (val: string) => {
|
||||||
|
// setEndFromDate(val);
|
||||||
|
// setRequiresRefilter(true);
|
||||||
|
// },
|
||||||
|
// (val: string) => {
|
||||||
|
// setEndFromTime(val);
|
||||||
|
// setRequiresRefilter(true);
|
||||||
|
// },
|
||||||
|
// endFromTimeInvalid,
|
||||||
|
// setEndFromTimeInvalid
|
||||||
|
// )}
|
||||||
|
// </Column>
|
||||||
|
// <Column md={4}>
|
||||||
|
// {dateComponent(
|
||||||
|
// 'End date to',
|
||||||
|
// 'end-to',
|
||||||
|
// endToDate,
|
||||||
|
// endToTime,
|
||||||
|
// (val: string) => {
|
||||||
|
// setEndToDate(val);
|
||||||
|
// setRequiresRefilter(true);
|
||||||
|
// },
|
||||||
|
// (val: string) => {
|
||||||
|
// setEndToTime(val);
|
||||||
|
// setRequiresRefilter(true);
|
||||||
|
// },
|
||||||
|
// endToTimeInvalid,
|
||||||
|
// setEndToTimeInvalid
|
||||||
|
// )}
|
||||||
|
// </Column>
|
||||||
|
// </Grid>
|
||||||
|
// <Grid fullWidth className="with-bottom-margin">
|
||||||
|
// <Column sm={4} md={4} lg={8}>
|
||||||
|
// <ButtonSet>
|
||||||
|
// <Button
|
||||||
|
// kind=""
|
||||||
|
// className="button-white-background narrow-button"
|
||||||
|
// onClick={clearFilters}
|
||||||
|
// >
|
||||||
|
// Clear
|
||||||
|
// </Button>
|
||||||
|
// <Button
|
||||||
|
// kind="secondary"
|
||||||
|
// disabled={!requiresRefilter}
|
||||||
|
// onClick={applyFilter}
|
||||||
|
// data-qa="filter-button"
|
||||||
|
// className="narrow-button"
|
||||||
|
// >
|
||||||
|
// Apply
|
||||||
|
// </Button>
|
||||||
|
// </ButtonSet>
|
||||||
|
// </Column>
|
||||||
|
// <Column sm={4} md={4} lg={8}>
|
||||||
|
// {saveAsReportComponent()}
|
||||||
|
// {deleteReportComponent()}
|
||||||
|
// </Column>
|
||||||
|
// </Grid>
|
||||||
|
// </>
|
||||||
|
// );
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// const getWaitingForTableCellComponent = (processInstanceTask: any) => {
|
||||||
|
// let fullUsernameString = '';
|
||||||
|
// let shortUsernameString = '';
|
||||||
|
// if (processInstanceTask.potential_owner_usernames) {
|
||||||
|
// fullUsernameString = processInstanceTask.potential_owner_usernames;
|
||||||
|
// const usernames =
|
||||||
|
// processInstanceTask.potential_owner_usernames.split(',');
|
||||||
|
// const firstTwoUsernames = usernames.slice(0, 2);
|
||||||
|
// if (usernames.length > 2) {
|
||||||
|
// firstTwoUsernames.push('...');
|
||||||
|
// }
|
||||||
|
// shortUsernameString = firstTwoUsernames.join(',');
|
||||||
|
// }
|
||||||
|
// if (processInstanceTask.assigned_user_group_identifier) {
|
||||||
|
// fullUsernameString = processInstanceTask.assigned_user_group_identifier;
|
||||||
|
// shortUsernameString = processInstanceTask.assigned_user_group_identifier;
|
||||||
|
// }
|
||||||
|
// return <span title={fullUsernameString}>{shortUsernameString}</span>;
|
||||||
|
// };
|
||||||
|
// const formatProcessInstanceId = (row: ProcessInstance, id: number) => {
|
||||||
|
// return <span data-qa="paginated-entity-id">{id}</span>;
|
||||||
|
// };
|
||||||
|
// const formatProcessModelIdentifier = (_row: any, identifier: any) => {
|
||||||
|
// return <span>{identifier}</span>;
|
||||||
|
// };
|
||||||
|
// const formatProcessModelDisplayName = (_row: any, identifier: any) => {
|
||||||
|
// return <span>{identifier}</span>;
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// const formatSecondsForDisplay = (_row: any, seconds: any) => {
|
||||||
|
// return convertSecondsToFormattedDateTime(seconds) || '-';
|
||||||
|
// };
|
||||||
|
// const defaultFormatter = (_row: any, value: any) => {
|
||||||
|
// return value;
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// const formattedColumn = (row: any, column: any) => {
|
||||||
|
// const reportColumnFormatters: Record<string, any> = {
|
||||||
|
// id: formatProcessInstanceId,
|
||||||
|
// process_model_identifier: formatProcessModelIdentifier,
|
||||||
|
// process_model_display_name: formatProcessModelDisplayName,
|
||||||
|
// start_in_seconds: formatSecondsForDisplay,
|
||||||
|
// end_in_seconds: formatSecondsForDisplay,
|
||||||
|
// updated_at_in_seconds: formatSecondsForDisplay,
|
||||||
|
// };
|
||||||
|
// const formatter =
|
||||||
|
// reportColumnFormatters[column.accessor] ?? defaultFormatter;
|
||||||
|
// const value = row[column.accessor];
|
||||||
|
// const modifiedModelId = modifyProcessIdentifierForPathParam(
|
||||||
|
// row.process_model_identifier
|
||||||
|
// );
|
||||||
|
// const navigateToProcessInstance = () => {
|
||||||
|
// navigate(`${processInstanceShowPathPrefix}/${modifiedModelId}/${row.id}`);
|
||||||
|
// };
|
||||||
|
// const navigateToProcessModel = () => {
|
||||||
|
// navigate(`/admin/process-models/${modifiedModelId}`);
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// if (column.accessor === 'status') {
|
||||||
|
// return (
|
||||||
|
// // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions
|
||||||
|
// <td
|
||||||
|
// onClick={navigateToProcessInstance}
|
||||||
|
// onKeyDown={navigateToProcessInstance}
|
||||||
|
// data-qa={`process-instance-status-${value}`}
|
||||||
|
// >
|
||||||
|
// {formatter(row, value)}
|
||||||
|
// </td>
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
// if (column.accessor === 'process_model_display_name') {
|
||||||
|
// const pmStyle = { background: 'rgba(0, 0, 0, .02)' };
|
||||||
|
// return (
|
||||||
|
// // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions
|
||||||
|
// <td
|
||||||
|
// style={pmStyle}
|
||||||
|
// onClick={navigateToProcessModel}
|
||||||
|
// onKeyDown={navigateToProcessModel}
|
||||||
|
// >
|
||||||
|
// {formatter(row, value)}
|
||||||
|
// </td>
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
// if (column.accessor === 'waiting_for') {
|
||||||
|
// return <td>{getWaitingForTableCellComponent(row)}</td>;
|
||||||
|
// }
|
||||||
|
// if (column.accessor === 'updated_at_in_seconds') {
|
||||||
|
// return (
|
||||||
|
// <TableCellWithTimeAgoInWords
|
||||||
|
// timeInSeconds={row.updated_at_in_seconds}
|
||||||
|
// />
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
// return (
|
||||||
|
// // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions
|
||||||
|
// <td
|
||||||
|
// data-qa={`process-instance-show-link-${column.accessor}`}
|
||||||
|
// onKeyDown={navigateToProcessModel}
|
||||||
|
// onClick={navigateToProcessInstance}
|
||||||
|
// >
|
||||||
|
// {formatter(row, value)}
|
||||||
|
// </td>
|
||||||
|
// );
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// const buildTable = () => {
|
||||||
|
// const headerLabels: Record<string, string> = {
|
||||||
|
// id: 'Id',
|
||||||
|
// process_model_identifier: 'Process',
|
||||||
|
// process_model_display_name: 'Process',
|
||||||
|
// start_in_seconds: 'Start Time',
|
||||||
|
// end_in_seconds: 'End Time',
|
||||||
|
// status: 'Status',
|
||||||
|
// process_initiator_username: 'Started By',
|
||||||
|
// };
|
||||||
|
// const getHeaderLabel = (header: string) => {
|
||||||
|
// return headerLabels[header] ?? header;
|
||||||
|
// };
|
||||||
|
// const headers = reportColumns().map((column: any) => {
|
||||||
|
// return getHeaderLabel((column as any).Header);
|
||||||
|
// });
|
||||||
|
// if (showActionsColumn) {
|
||||||
|
// headers.push('Actions');
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// const rows = processInstances.map((row: any) => {
|
||||||
|
// const currentRow = reportColumns().map((column: any) => {
|
||||||
|
// return formattedColumn(row, column);
|
||||||
|
// });
|
||||||
|
// if (showActionsColumn) {
|
||||||
|
// let buttonElement = null;
|
||||||
|
// if (row.task_id) {
|
||||||
|
// const taskUrl = `/tasks/${row.id}/${row.task_id}`;
|
||||||
|
// const regex = new RegExp(`\\b(${preferredUsername}|${userEmail})\\b`);
|
||||||
|
// let hasAccessToCompleteTask = false;
|
||||||
|
// if (
|
||||||
|
// canCompleteAllTasks ||
|
||||||
|
// (row.potential_owner_usernames || '').match(regex)
|
||||||
|
// ) {
|
||||||
|
// hasAccessToCompleteTask = true;
|
||||||
|
// }
|
||||||
|
// buttonElement = (
|
||||||
|
// <Button
|
||||||
|
// variant="primary"
|
||||||
|
// href={taskUrl}
|
||||||
|
// hidden={row.status === 'suspended'}
|
||||||
|
// disabled={!hasAccessToCompleteTask}
|
||||||
|
// >
|
||||||
|
// Go
|
||||||
|
// </Button>
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// currentRow.push(<td>{buttonElement}</td>);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// const rowStyle = { cursor: 'pointer' };
|
||||||
|
//
|
||||||
|
// return (
|
||||||
|
// <tr style={rowStyle} key={row.id}>
|
||||||
|
// {currentRow}
|
||||||
|
// </tr>
|
||||||
|
// );
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// return (
|
||||||
|
// <Table size="lg">
|
||||||
|
// <TableHead>
|
||||||
|
// <TableRow>
|
||||||
|
// {headers.map((header: any) => (
|
||||||
|
// <TableHeader
|
||||||
|
// key={header}
|
||||||
|
// title={header === 'Id' ? 'Process Instance Id' : null}
|
||||||
|
// >
|
||||||
|
// {header}
|
||||||
|
// </TableHeader>
|
||||||
|
// ))}
|
||||||
|
// </TableRow>
|
||||||
|
// </TableHead>
|
||||||
|
// <tbody>{rows}</tbody>
|
||||||
|
// </Table>
|
||||||
|
// );
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// const reportSearchComponent = () => {
|
||||||
|
// if (showReports) {
|
||||||
|
// const columns = [
|
||||||
|
// <Column sm={2} md={4} lg={7}>
|
||||||
|
// <ProcessInstanceReportSearch
|
||||||
|
// onChange={processInstanceReportDidChange}
|
||||||
|
// selectedItem={processInstanceReportSelection}
|
||||||
|
// />
|
||||||
|
// </Column>,
|
||||||
|
// ];
|
||||||
|
// return (
|
||||||
|
// <Grid className="with-tiny-bottom-margin" fullWidth>
|
||||||
|
// {columns}
|
||||||
|
// </Grid>
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
// return null;
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// if (filtersEnabled) {
|
||||||
|
// return (
|
||||||
|
// <>
|
||||||
|
// <Grid fullWidth>
|
||||||
|
// <Column sm={2} md={4} lg={7}>
|
||||||
|
// {reportSearchComponent()}
|
||||||
|
// </Column>
|
||||||
|
// <Column
|
||||||
|
// className="filterIcon"
|
||||||
|
// sm={{ span: 1, offset: 3 }}
|
||||||
|
// md={{ span: 1, offset: 7 }}
|
||||||
|
// lg={{ span: 1, offset: 15 }}
|
||||||
|
// >
|
||||||
|
// <Button
|
||||||
|
// data-qa="filter-section-expand-toggle"
|
||||||
|
// renderIcon={Filter}
|
||||||
|
// iconDescription="Filter Options"
|
||||||
|
// hasIconOnly
|
||||||
|
// size="lg"
|
||||||
|
// onClick={toggleShowFilterOptions}
|
||||||
|
// />
|
||||||
|
// </Column>
|
||||||
|
// </Grid>
|
||||||
|
// {filterOptions()}
|
||||||
|
// </>
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
// return null;
|
||||||
|
// }
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue