mirror of
https://github.com/Kingsrook/qqq-frontend-material-dashboard.git
synced 2025-07-18 05:10:45 +00:00
Pass other values from process into possible values (for filter)
This commit is contained in:
@ -6,7 +6,7 @@
|
|||||||
"@auth0/auth0-react": "1.10.2",
|
"@auth0/auth0-react": "1.10.2",
|
||||||
"@emotion/react": "11.7.1",
|
"@emotion/react": "11.7.1",
|
||||||
"@emotion/styled": "11.6.0",
|
"@emotion/styled": "11.6.0",
|
||||||
"@kingsrook/qqq-frontend-core": "1.0.54",
|
"@kingsrook/qqq-frontend-core": "1.0.55",
|
||||||
"@mui/icons-material": "5.4.1",
|
"@mui/icons-material": "5.4.1",
|
||||||
"@mui/material": "5.11.1",
|
"@mui/material": "5.11.1",
|
||||||
"@mui/styles": "5.11.1",
|
"@mui/styles": "5.11.1",
|
||||||
|
@ -48,6 +48,7 @@ interface Props
|
|||||||
isMultiple?: boolean;
|
isMultiple?: boolean;
|
||||||
bulkEditMode?: boolean;
|
bulkEditMode?: boolean;
|
||||||
bulkEditSwitchChangeHandler?: any;
|
bulkEditSwitchChangeHandler?: any;
|
||||||
|
otherValues?: Map<string, any>;
|
||||||
}
|
}
|
||||||
|
|
||||||
DynamicSelect.defaultProps = {
|
DynamicSelect.defaultProps = {
|
||||||
@ -61,6 +62,7 @@ DynamicSelect.defaultProps = {
|
|||||||
isEditable: true,
|
isEditable: true,
|
||||||
isMultiple: false,
|
isMultiple: false,
|
||||||
bulkEditMode: false,
|
bulkEditMode: false,
|
||||||
|
otherValues: new Map<string, any>(),
|
||||||
bulkEditSwitchChangeHandler: () =>
|
bulkEditSwitchChangeHandler: () =>
|
||||||
{
|
{
|
||||||
},
|
},
|
||||||
@ -68,7 +70,7 @@ DynamicSelect.defaultProps = {
|
|||||||
|
|
||||||
const qController = Client.getInstance();
|
const qController = Client.getInstance();
|
||||||
|
|
||||||
function DynamicSelect({tableName, processName, fieldName, fieldLabel, inForm, initialValue, initialDisplayValue, initialValues, onChange, isEditable, isMultiple, bulkEditMode, bulkEditSwitchChangeHandler}: Props)
|
function DynamicSelect({tableName, processName, fieldName, fieldLabel, inForm, initialValue, initialDisplayValue, initialValues, onChange, isEditable, isMultiple, bulkEditMode, bulkEditSwitchChangeHandler, otherValues}: Props)
|
||||||
{
|
{
|
||||||
const [ open, setOpen ] = useState(false);
|
const [ open, setOpen ] = useState(false);
|
||||||
const [ options, setOptions ] = useState<readonly QPossibleValue[]>([]);
|
const [ options, setOptions ] = useState<readonly QPossibleValue[]>([]);
|
||||||
@ -112,7 +114,7 @@ function DynamicSelect({tableName, processName, fieldName, fieldLabel, inForm, i
|
|||||||
(async () =>
|
(async () =>
|
||||||
{
|
{
|
||||||
// console.log(`doing a search with ${searchTerm}`);
|
// console.log(`doing a search with ${searchTerm}`);
|
||||||
const results: QPossibleValue[] = await qController.possibleValues(tableName, processName, fieldName, searchTerm ?? "");
|
const results: QPossibleValue[] = await qController.possibleValues(tableName, processName, fieldName, searchTerm ?? "", null, otherValues);
|
||||||
|
|
||||||
if(tableMetaData == null && tableName)
|
if(tableMetaData == null && tableName)
|
||||||
{
|
{
|
||||||
@ -237,8 +239,6 @@ function DynamicSelect({tableName, processName, fieldName, fieldLabel, inForm, i
|
|||||||
bulkEditSwitchChangeHandler(fieldName, newSwitchValue);
|
bulkEditSwitchChangeHandler(fieldName, newSwitchValue);
|
||||||
};
|
};
|
||||||
|
|
||||||
console.log("multiple? " + isMultiple);
|
|
||||||
|
|
||||||
const autocomplete = (
|
const autocomplete = (
|
||||||
<Autocomplete
|
<Autocomplete
|
||||||
id={fieldName}
|
id={fieldName}
|
||||||
|
@ -366,14 +366,24 @@ function ProcessRun({process, table, defaultProcessValues, isModal, isWidget, is
|
|||||||
// initial value to display should be. //
|
// initial value to display should be. //
|
||||||
// this **needs to be** the actual PVS LABEL - not the raw value (e.g, PVS ID) //
|
// this **needs to be** the actual PVS LABEL - not the raw value (e.g, PVS ID) //
|
||||||
// but our first use case, they're the same, so... this needs fixed. //
|
// but our first use case, they're the same, so... this needs fixed. //
|
||||||
|
// they also need to know the 'otherValues' in this process - e.g., for filtering //
|
||||||
////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////
|
||||||
if(formFields && processValues)
|
if(formFields && processValues)
|
||||||
{
|
{
|
||||||
Object.keys(formFields).forEach((key) =>
|
Object.keys(formFields).forEach((key) =>
|
||||||
{
|
{
|
||||||
if(formFields[key].possibleValueProps && processValues[key])
|
if(formFields[key].possibleValueProps)
|
||||||
{
|
{
|
||||||
formFields[key].possibleValueProps.initialDisplayValue = processValues[key]
|
if(processValues[key])
|
||||||
|
{
|
||||||
|
formFields[key].possibleValueProps.initialDisplayValue = processValues[key]
|
||||||
|
}
|
||||||
|
|
||||||
|
formFields[key].possibleValueProps.otherValues = formFields[key].possibleValueProps.otherValues ?? new Map<string, any>();
|
||||||
|
Object.keys(formFields).forEach((otherKey) =>
|
||||||
|
{
|
||||||
|
formFields[key].possibleValueProps.otherValues.set(otherKey, processValues[otherKey]);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -721,6 +731,35 @@ function ProcessRun({process, table, defaultProcessValues, isModal, isWidget, is
|
|||||||
let formValidations: any = {};
|
let formValidations: any = {};
|
||||||
let initialValues: any = {};
|
let initialValues: any = {};
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// define an inner function here, for adding more fields to the form, if any components have form fields built into them //
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
const addField = (fieldName: string, dynamicFormValue: any, initialValue: any, validation: any) =>
|
||||||
|
{
|
||||||
|
dynamicFormFields[fieldName] = dynamicFormValue;
|
||||||
|
initialValues[fieldName] = initialValue;
|
||||||
|
formValidations[fieldName] = validation;
|
||||||
|
};
|
||||||
|
|
||||||
|
if(tableMetaData)
|
||||||
|
{
|
||||||
|
console.log("Adding table name field... ?", tableMetaData.name);
|
||||||
|
addField("tableName", {type: "hidden", omitFromQDynamicForm: true}, tableMetaData.name, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (doesStepHaveComponent(activeStep, QComponentType.VALIDATION_REVIEW_SCREEN))
|
||||||
|
{
|
||||||
|
addField("doFullValidation", {type: "radio"}, "true", null);
|
||||||
|
setOverrideOnLastStep(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (doesStepHaveComponent(activeStep, QComponentType.GOOGLE_DRIVE_SELECT_FOLDER))
|
||||||
|
{
|
||||||
|
addField("googleDriveAccessToken", {type: "hidden", omitFromQDynamicForm: true}, "", null);
|
||||||
|
addField("googleDriveFolderId", {type: "hidden", omitFromQDynamicForm: true}, "", null);
|
||||||
|
addField("googleDriveFolderName", {type: "hidden", omitFromQDynamicForm: true}, "", null);
|
||||||
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////
|
///////////////////////////////////////////////////
|
||||||
// if this step has form fields, set up the form //
|
// if this step has form fields, set up the form //
|
||||||
///////////////////////////////////////////////////
|
///////////////////////////////////////////////////
|
||||||
@ -750,6 +789,21 @@ function ProcessRun({process, table, defaultProcessValues, isModal, isWidget, is
|
|||||||
initialValues[field.name] = processValues[field.name];
|
initialValues[field.name] = processValues[field.name];
|
||||||
});
|
});
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// set initial values in the possible value fields as otherValues (for filtering) //
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
Object.keys(dynamicFormFields).forEach((key: any) =>
|
||||||
|
{
|
||||||
|
if(dynamicFormFields[key].possibleValueProps)
|
||||||
|
{
|
||||||
|
dynamicFormFields[key].possibleValueProps.otherValues = dynamicFormFields[key].possibleValueProps.otherValues ?? new Map<string, any>();
|
||||||
|
Object.keys(initialValues).forEach((ivKey: any) =>
|
||||||
|
{
|
||||||
|
dynamicFormFields[key].possibleValueProps.otherValues.set(ivKey, initialValues[ivKey]);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
////////////////////////////////////////////////////
|
////////////////////////////////////////////////////
|
||||||
// disable all fields if this is a bulk edit form //
|
// disable all fields if this is a bulk edit form //
|
||||||
////////////////////////////////////////////////////
|
////////////////////////////////////////////////////
|
||||||
@ -766,35 +820,6 @@ function ProcessRun({process, table, defaultProcessValues, isModal, isWidget, is
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// define an inner function here, for adding more fields to the form, if any components have form fields built into them //
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
const addField = (fieldName: string, dynamicFormValue: any, initialValue: any, validation: any) =>
|
|
||||||
{
|
|
||||||
dynamicFormFields[fieldName] = dynamicFormValue;
|
|
||||||
initialValues[fieldName] = initialValue;
|
|
||||||
formValidations[fieldName] = validation;
|
|
||||||
};
|
|
||||||
|
|
||||||
if(tableMetaData)
|
|
||||||
{
|
|
||||||
console.log("Adding table name field... ?", tableMetaData.name);
|
|
||||||
addField("tableName", {type: "hidden", omitFromQDynamicForm: true}, tableMetaData.name, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (doesStepHaveComponent(activeStep, QComponentType.VALIDATION_REVIEW_SCREEN))
|
|
||||||
{
|
|
||||||
addField("doFullValidation", {type: "radio"}, "true", null);
|
|
||||||
setOverrideOnLastStep(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (doesStepHaveComponent(activeStep, QComponentType.GOOGLE_DRIVE_SELECT_FOLDER))
|
|
||||||
{
|
|
||||||
addField("googleDriveAccessToken", {type: "hidden", omitFromQDynamicForm: true}, "", null);
|
|
||||||
addField("googleDriveFolderId", {type: "hidden", omitFromQDynamicForm: true}, "", null);
|
|
||||||
addField("googleDriveFolderName", {type: "hidden", omitFromQDynamicForm: true}, "", null);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Object.keys(dynamicFormFields).length > 0)
|
if (Object.keys(dynamicFormFields).length > 0)
|
||||||
{
|
{
|
||||||
///////////////////////////////////////////
|
///////////////////////////////////////////
|
||||||
|
@ -1135,11 +1135,8 @@ function RecordQuery({table, launchProcess}: Props): JSX.Element
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
const runRecordScriptProcess = metaData?.processes.get("runRecordScript");
|
|
||||||
|
|
||||||
const pushDividerIfNeeded = (menuItems: JSX.Element[]) =>
|
const pushDividerIfNeeded = (menuItems: JSX.Element[]) =>
|
||||||
{
|
{
|
||||||
console.log("Type: " + menuItems[menuItems.length - 1]);
|
|
||||||
if(menuItems.length > 0)
|
if(menuItems.length > 0)
|
||||||
{
|
{
|
||||||
menuItems.push(<Divider />);
|
menuItems.push(<Divider />);
|
||||||
|
@ -357,3 +357,13 @@ input[type="search"]::-webkit-search-results-decoration { display: none; }
|
|||||||
color: rgb(123, 128, 154);
|
color: rgb(123, 128, 154);
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.fullScreenWidget
|
||||||
|
{
|
||||||
|
position: fixed !important;
|
||||||
|
left: 30px !important;
|
||||||
|
width: calc(100vw - 60px) !important;
|
||||||
|
top: 30px !important;
|
||||||
|
height: calc(100vh - 60px) !important;
|
||||||
|
z-index: 1300 !important;
|
||||||
|
}
|
Reference in New Issue
Block a user