CE-1115 - Adding widgets for editing query, columns, and pivot table; udpate labels, required fields

This commit is contained in:
2024-04-08 20:09:30 -05:00
parent 5b6260dd1e
commit d7b2efdfb2
3 changed files with 34 additions and 11 deletions

View File

@ -50,7 +50,9 @@ public enum WidgetType
USA_MAP("usaMap"), USA_MAP("usaMap"),
COMPOSITE("composite"), COMPOSITE("composite"),
DATA_BAG_VIEWER("dataBagViewer"), DATA_BAG_VIEWER("dataBagViewer"),
SCRIPT_VIEWER("scriptViewer"); SCRIPT_VIEWER("scriptViewer"),
REPORT_SETUP("reportSetup"),
PIVOT_TABLE_SETUP("pivotTableSetup");
private final String type; private final String type;

View File

@ -48,10 +48,10 @@ public class SavedReport extends QRecordEntity
@QField(isEditable = false) @QField(isEditable = false)
private Instant modifyDate; private Instant modifyDate;
@QField(isRequired = true, maxLength = 250, valueTooLongBehavior = ValueTooLongBehavior.TRUNCATE_ELLIPSIS) @QField(isRequired = true, maxLength = 250, valueTooLongBehavior = ValueTooLongBehavior.TRUNCATE_ELLIPSIS, label = "Report Name")
private String label; private String label;
@QField(possibleValueSourceName = TablesPossibleValueSourceMetaDataProvider.NAME, maxLength = 250, valueTooLongBehavior = ValueTooLongBehavior.ERROR) @QField(possibleValueSourceName = TablesPossibleValueSourceMetaDataProvider.NAME, maxLength = 250, valueTooLongBehavior = ValueTooLongBehavior.ERROR, label = "Table", isRequired = true)
private String tableName; private String tableName;
@QField(maxLength = 250, valueTooLongBehavior = ValueTooLongBehavior.ERROR, dynamicDefaultValueBehavior = DynamicDefaultValueBehavior.USER_ID) @QField(maxLength = 250, valueTooLongBehavior = ValueTooLongBehavior.ERROR, dynamicDefaultValueBehavior = DynamicDefaultValueBehavior.USER_ID)

View File

@ -24,9 +24,14 @@ package com.kingsrook.qqq.backend.core.model.savedreports;
import java.util.List; import java.util.List;
import java.util.function.Consumer; import java.util.function.Consumer;
import com.kingsrook.qqq.backend.core.actions.dashboard.widgets.DefaultWidgetRenderer;
import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.exceptions.QException;
import com.kingsrook.qqq.backend.core.model.actions.reporting.ReportFormatPossibleValueEnum; import com.kingsrook.qqq.backend.core.model.actions.reporting.ReportFormatPossibleValueEnum;
import com.kingsrook.qqq.backend.core.model.dashboard.widgets.WidgetType;
import com.kingsrook.qqq.backend.core.model.metadata.QInstance; import com.kingsrook.qqq.backend.core.model.metadata.QInstance;
import com.kingsrook.qqq.backend.core.model.metadata.code.QCodeReference;
import com.kingsrook.qqq.backend.core.model.metadata.dashboard.QWidgetMetaData;
import com.kingsrook.qqq.backend.core.model.metadata.dashboard.QWidgetMetaDataInterface;
import com.kingsrook.qqq.backend.core.model.metadata.fields.AdornmentType; import com.kingsrook.qqq.backend.core.model.metadata.fields.AdornmentType;
import com.kingsrook.qqq.backend.core.model.metadata.fields.FieldAdornment; import com.kingsrook.qqq.backend.core.model.metadata.fields.FieldAdornment;
import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData; import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData;
@ -70,7 +75,8 @@ public class SavedReportsMetaDataProvider
.findFirst() .findFirst()
.ifPresent(f -> f.setDefaultValue(REPORT_STORAGE_TABLE_NAME)); .ifPresent(f -> f.setDefaultValue(REPORT_STORAGE_TABLE_NAME));
// todo - when we build the UI instance.addWidget(defineReportSetupWidget()); instance.addWidget(defineReportSetupWidget());
instance.addWidget(definePivotTableSetupWidget());
} }
@ -95,20 +101,35 @@ public class SavedReportsMetaDataProvider
return (table); return (table);
} }
/******************************************************************************* /*******************************************************************************
** **
*******************************************************************************/ *******************************************************************************/
/* todo - when we build the UI
private QWidgetMetaDataInterface defineReportSetupWidget() private QWidgetMetaDataInterface defineReportSetupWidget()
{ {
return new QWidgetMetaData() return new QWidgetMetaData()
.withName("reportSetupWidget") .withName("reportSetupWidget")
.withLabel("Report Setup") .withLabel("Filters and Columns")
.withIsCard(true) .withIsCard(true)
.withType(WidgetType.REPORT_SETUP.getType()) .withType(WidgetType.REPORT_SETUP.getType())
.withCodeReference(new QCodeReference(DefaultWidgetRenderer.class)); .withCodeReference(new QCodeReference(DefaultWidgetRenderer.class));
} }
*/
/*******************************************************************************
**
*******************************************************************************/
private QWidgetMetaDataInterface definePivotTableSetupWidget()
{
return new QWidgetMetaData()
.withName("pivotTableSetupWidget")
.withLabel("Pivot Table")
.withIsCard(true)
.withType(WidgetType.PIVOT_TABLE_SETUP.getType())
.withCodeReference(new QCodeReference(DefaultWidgetRenderer.class));
}
@ -125,10 +146,10 @@ public class SavedReportsMetaDataProvider
.withBackendName(backendName) .withBackendName(backendName)
.withPrimaryKeyField("id") .withPrimaryKeyField("id")
.withFieldsFromEntity(SavedReport.class) .withFieldsFromEntity(SavedReport.class)
.withSection(new QFieldSection("identity", new QIcon().withName("badge"), Tier.T1, List.of("id", "label"))) .withSection(new QFieldSection("identity", new QIcon().withName("badge"), Tier.T1, List.of("id", "label", "tableName")))
.withSection(new QFieldSection("settings", new QIcon().withName("settings"), Tier.T2, List.of("tableName"))) .withSection(new QFieldSection("filtersAndColumns", new QIcon().withName("table_chart"), Tier.T2).withLabel("Filters and Columns").withWidgetName("reportSetupWidget"))
// todo - turn on when building UI .withSection(new QFieldSection("reportSetup", new QIcon().withName("table_chart"), Tier.T2).withWidgetName("reportSetupWidget")) .withSection(new QFieldSection("pivotTable", new QIcon().withName("pivot_table_chart"), Tier.T2).withLabel("Pivot Table").withWidgetName("pivotTableSetupWidget"))
.withSection(new QFieldSection("data", new QIcon().withName("text_snippet"), Tier.T2, List.of("queryFilterJson", "columnsJson", "pivotTableJson"))) .withSection(new QFieldSection("data", new QIcon().withName("text_snippet"), Tier.T2, List.of("queryFilterJson", "columnsJson", "pivotTableJson")).withIsHidden(true))
.withSection(new QFieldSection("hidden", new QIcon().withName("text_snippet"), Tier.T2, List.of("inputFieldsJson", "userId")).withIsHidden(true)) .withSection(new QFieldSection("hidden", new QIcon().withName("text_snippet"), Tier.T2, List.of("inputFieldsJson", "userId")).withIsHidden(true))
.withSection(new QFieldSection("dates", new QIcon().withName("calendar_month"), Tier.T3, List.of("createDate", "modifyDate"))); .withSection(new QFieldSection("dates", new QIcon().withName("calendar_month"), Tier.T3, List.of("createDate", "modifyDate")));