From 1d7777076ec7fed52db5b8e165e5105f94d5ffda Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Sat, 3 May 2025 19:50:33 -0500 Subject: [PATCH] Allow orderBy to come from widgetMetaData defaultValues --- .../widgets/ChildRecordListRenderer.java | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/dashboard/widgets/ChildRecordListRenderer.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/dashboard/widgets/ChildRecordListRenderer.java index a73fcb09..adabbd3a 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/dashboard/widgets/ChildRecordListRenderer.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/dashboard/widgets/ChildRecordListRenderer.java @@ -45,6 +45,7 @@ import com.kingsrook.qqq.backend.core.model.actions.tables.get.GetInput; import com.kingsrook.qqq.backend.core.model.actions.tables.get.GetOutput; import com.kingsrook.qqq.backend.core.model.actions.tables.query.QCriteriaOperator; import com.kingsrook.qqq.backend.core.model.actions.tables.query.QFilterCriteria; +import com.kingsrook.qqq.backend.core.model.actions.tables.query.QFilterOrderBy; import com.kingsrook.qqq.backend.core.model.actions.tables.query.QQueryFilter; import com.kingsrook.qqq.backend.core.model.actions.tables.query.QueryInput; import com.kingsrook.qqq.backend.core.model.actions.tables.query.QueryOutput; @@ -195,14 +196,16 @@ public class ChildRecordListRenderer extends AbstractWidgetRenderer QTableMetaData leftTable = QContext.getQInstance().getTable(join.getLeftTable()); QTableMetaData rightTable = QContext.getQInstance().getTable(join.getRightTable()); + Map widgetMetaDataDefaultValues = input.getWidgetMetaData().getDefaultValues(); + Integer maxRows = null; if(StringUtils.hasContent(input.getQueryParams().get("maxRows"))) { maxRows = ValueUtils.getValueAsInteger(input.getQueryParams().get("maxRows")); } - else if(input.getWidgetMetaData().getDefaultValues().containsKey("maxRows")) + else if(widgetMetaDataDefaultValues.containsKey("maxRows")) { - maxRows = ValueUtils.getValueAsInteger(input.getWidgetMetaData().getDefaultValues().get("maxRows")); + maxRows = ValueUtils.getValueAsInteger(widgetMetaDataDefaultValues.get("maxRows")); } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -235,7 +238,17 @@ public class ChildRecordListRenderer extends AbstractWidgetRenderer { filter.addCriteria(new QFilterCriteria(joinOn.getRightField(), QCriteriaOperator.EQUALS, List.of(primaryRecord.getValue(joinOn.getLeftField())))); } - filter.setOrderBys(join.getOrderBys()); + + Serializable orderBy = widgetMetaDataDefaultValues.get("orderBy"); + if(orderBy instanceof List orderByList && !orderByList.isEmpty() && orderByList.get(0) instanceof QFilterOrderBy) + { + filter.setOrderBys(orderByList); + } + else + { + filter.setOrderBys(join.getOrderBys()); + } + filter.setLimit(maxRows); QueryInput queryInput = new QueryInput(); @@ -284,11 +297,10 @@ public class ChildRecordListRenderer extends AbstractWidgetRenderer widgetData.setDefaultValuesForNewChildRecords(defaultValuesForNewChildRecords); - Map widgetValues = input.getWidgetMetaData().getDefaultValues(); - if(widgetValues.containsKey("disabledFieldsForNewChildRecords")) + if(widgetMetaDataDefaultValues.containsKey("disabledFieldsForNewChildRecords")) { @SuppressWarnings("unchecked") - Set disabledFieldsForNewChildRecords = (Set) widgetValues.get("disabledFieldsForNewChildRecords"); + Set disabledFieldsForNewChildRecords = (Set) widgetMetaDataDefaultValues.get("disabledFieldsForNewChildRecords"); widgetData.setDisabledFieldsForNewChildRecords(disabledFieldsForNewChildRecords); } else @@ -308,10 +320,10 @@ public class ChildRecordListRenderer extends AbstractWidgetRenderer } } - if(widgetValues.containsKey("defaultValuesForNewChildRecordsFromParentFields")) + if(widgetMetaDataDefaultValues.containsKey("defaultValuesForNewChildRecordsFromParentFields")) { @SuppressWarnings("unchecked") - Map defaultValuesForNewChildRecordsFromParentFields = (Map) widgetValues.get("defaultValuesForNewChildRecordsFromParentFields"); + Map defaultValuesForNewChildRecordsFromParentFields = (Map) widgetMetaDataDefaultValues.get("defaultValuesForNewChildRecordsFromParentFields"); widgetData.setDefaultValuesForNewChildRecordsFromParentFields(defaultValuesForNewChildRecordsFromParentFields); } }