CE-1068 - Handle join fields; no message when running for process

This commit is contained in:
2024-05-01 16:54:01 -05:00
parent e0bb0ef2de
commit 4e0ccaa147
2 changed files with 12 additions and 5 deletions

View File

@ -28,6 +28,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.kingsrook.qqq.backend.core.actions.dashboard.widgets.AbstractWidgetRenderer;
import com.kingsrook.qqq.backend.core.actions.reporting.GenerateReportAction;
import com.kingsrook.qqq.backend.core.actions.tables.GetAction;
import com.kingsrook.qqq.backend.core.actions.values.QPossibleValueTranslator;
import com.kingsrook.qqq.backend.core.context.QContext;
@ -126,10 +127,8 @@ public class ReportValuesDynamicFormWidgetRenderer extends AbstractWidgetRendere
{
if(criteriaValue instanceof FilterVariableExpression filterVariableExpression)
{
//////////////////////////
// todo - join fields!! //
//////////////////////////
QFieldMetaData fieldMetaData = table.getField(criteria.getFieldName()).clone();
GenerateReportAction.FieldAndJoinTable fieldAndJoinTable = GenerateReportAction.getFieldAndJoinTable(table, criteria.getFieldName());
QFieldMetaData fieldMetaData = fieldAndJoinTable.field().clone();
/////////////////////////////////
// make name & label for field //
@ -184,9 +183,15 @@ public class ReportValuesDynamicFormWidgetRenderer extends AbstractWidgetRendere
widgetData.setMergedDynamicFormValuesIntoFieldName("inputValues");
if(CollectionUtils.nullSafeIsEmpty(fieldList))
{
///////////////////////////////////////////////
// actually don't show this for process mode //
///////////////////////////////////////////////
if(!input.getQueryParams().containsKey("processName"))
{
widgetData.setNoFieldsMessage("This Report does not use any Variable Values");
}
}
return new RenderWidgetOutput(widgetData);
}

View File

@ -74,9 +74,11 @@ public class RenderSavedReportPreStep implements BackendStep
///////////////////////////////////////////////////////////////////////////////////////
// put the savedReportId in values - this'll get passed into the widget, so it knows //
// what report we're working with, and thus what inputs to prompt for //
// also put a value in just to help it know we're running the process //
///////////////////////////////////////////////////////////////////////////////////////
SavedReport savedReport = new SavedReport(records.get(0));
runBackendStepOutput.addValue("savedReportId", savedReport.getId());
runBackendStepOutput.addValue("processName", runBackendStepInput.getProcessName());
}
}