Update to POST (as multipart form) instead of query-string - so yuge filters work.

This commit is contained in:
2024-02-27 18:17:51 -06:00
parent 88a4c17bbc
commit aed1c9d4d0

View File

@ -1089,19 +1089,17 @@ function ProcessRun({process, table, defaultProcessValues, isModal, isWidget, is
(async () => (async () =>
{ {
const formData = new FormData();
const urlSearchParams = new URLSearchParams(location.search); const urlSearchParams = new URLSearchParams(location.search);
let queryStringPairsForInit = [];
if (urlSearchParams.get("recordIds")) if (urlSearchParams.get("recordIds"))
{ {
const recordIdsFromQueryString = urlSearchParams.get("recordIds").split(","); formData.append("recordsParam", "recordIds")
const encodedRecordIds = recordIdsFromQueryString.map(r => encodeURIComponent(r)).join(","); formData.append("recordIds", urlSearchParams.get("recordIds"))
queryStringPairsForInit.push("recordsParam=recordIds");
queryStringPairsForInit.push(`recordIds=${encodedRecordIds}`);
} }
else if (urlSearchParams.get("filterJSON")) else if (urlSearchParams.get("filterJSON"))
{ {
queryStringPairsForInit.push("recordsParam=filterJSON"); formData.append("recordsParam", "filterJSON")
queryStringPairsForInit.push(`filterJSON=${encodeURIComponent(urlSearchParams.get("filterJSON"))}`); formData.append("filterJSON", urlSearchParams.get("filterJSON"));
} }
// todo once saved filters exist // todo once saved filters exist
//else if(urlSearchParams.get("filterId")) { //else if(urlSearchParams.get("filterId")) {
@ -1110,23 +1108,23 @@ function ProcessRun({process, table, defaultProcessValues, isModal, isWidget, is
// } // }
else if (recordIds) else if (recordIds)
{ {
if (recordIds instanceof QQueryFilter) // @ts-ignore - we're checking to see if recordIds is a QQueryFilter-looking object here.
if (recordIds instanceof QQueryFilter || (typeof recordIds === "object" && recordIds.criteria))
{ {
queryStringPairsForInit.push("recordsParam=filterJSON"); formData.append("recordsParam", "filterJSON")
queryStringPairsForInit.push(`filterJSON=${encodeURIComponent(JSON.stringify(recordIds))}`); formData.append("filterJSON", JSON.stringify(recordIds));
} }
else if (typeof recordIds === "object" && recordIds.length) else if (typeof recordIds === "object" && recordIds.length)
{ {
const encodedRecordIds = recordIds.map(r => encodeURIComponent(r)).join(","); formData.append("recordsParam", "recordIds")
queryStringPairsForInit.push("recordsParam=recordIds"); formData.append("recordIds", recordIds.join(","))
queryStringPairsForInit.push(`recordIds=${encodedRecordIds}`);
} }
} }
if (tableVariantLocalStorageKey && localStorage.getItem(tableVariantLocalStorageKey)) if (tableVariantLocalStorageKey && localStorage.getItem(tableVariantLocalStorageKey))
{ {
let tableVariant = JSON.parse(localStorage.getItem(tableVariantLocalStorageKey)); let tableVariant = JSON.parse(localStorage.getItem(tableVariantLocalStorageKey));
queryStringPairsForInit.push(`tableVariant=${encodeURIComponent(JSON.stringify(tableVariant))}`); formData.append("tableVariant", JSON.stringify(tableVariant));
} }
try try
@ -1170,18 +1168,18 @@ function ProcessRun({process, table, defaultProcessValues, isModal, isWidget, is
{ {
for (let key in defaultProcessValues) for (let key in defaultProcessValues)
{ {
queryStringPairsForInit.push(`${key}=${encodeURIComponent(defaultProcessValues[key])}`); formData.append(key, defaultProcessValues[key]);
} }
} }
if (tableMetaData) if (tableMetaData)
{ {
queryStringPairsForInit.push(`tableName=${encodeURIComponent(tableMetaData.name)}`); formData.append("tableName", tableMetaData.name);
} }
try try
{ {
const processResponse = await Client.getInstance().processInit(processName, queryStringPairsForInit.join("&")); const processResponse = await Client.getInstance().processInit(processName, formData);
setProcessUUID(processResponse.processUUID); setProcessUUID(processResponse.processUUID);
setLastProcessResponse(processResponse); setLastProcessResponse(processResponse);
} }