Skip to content

Commit

Permalink
#850 | Added filters and a new tab to the canned reports dashboard
Browse files Browse the repository at this point in the history
  • Loading branch information
ombhardwajj committed Feb 13, 2025
1 parent 0b1cab8 commit d864d6b
Show file tree
Hide file tree
Showing 5 changed files with 84 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -381,19 +381,18 @@ private void createCustomQuestions() {

public void updateGlobalDashboardWithCustomQuestions() {
List<Dashcard> dashcards = new ArrayList<>();
dashcards.add(new Dashcard(-1, getCardIdByQuestionName(QuestionName.NonVoidedIndividual.getQuestionName()), null, 0, FIRST_CARD_COL_IDX, 12, 8,Collections.emptyMap(), createDashcardParameterMappingForFirstDashcard()));
dashcards.add(new Dashcard(-2, getCardIdByQuestionName(QuestionName.NonExitedNonVoidedProgram.getQuestionName()), null, 0, SECOND_CARD_COL_IDX, 12, 8, Collections.emptyMap(), createDashcardParameterMappingForSecondDashcard()));
dashcards.add(new Dashcard(-1, getCardIdByQuestionName(QuestionName.NonVoidedIndividual.getQuestionName()), -1, 0, FIRST_CARD_COL_IDX, 12, 8,Collections.emptyMap(), createDashcardParameterMappingForFirstDashcard()));
dashcards.add(new Dashcard(-2, getCardIdByQuestionName(QuestionName.NonExitedNonVoidedProgram.getQuestionName()), -1, 0, SECOND_CARD_COL_IDX, 12, 8, Collections.emptyMap(), createDashcardParameterMappingForSecondDashcard()));

metabaseDashboardRepository.updateDashboard(getGlobalDashboard().getId(), new DashboardUpdateRequest(dashcards,createParametersForDashboard()));
}
dashcards.add(new Dashcard(-3, getCardIdByQuestionName(INDIVIDUAL_TYPE_GENDER_ADDRESS_TABLE), -2, 0, FIRST_CARD_COL_IDX, 12, 8, Collections.emptyMap(), createDashcardParameterMappingForThirdDashcard()));
dashcards.add(new Dashcard(-4, getCardIdByQuestionName(ENROLMENT_TYPE_INDIVIDUAL_ADDRESS_TABLE), -2, 0, SECOND_CARD_COL_IDX, 12, 8, Collections.emptyMap(), createDashcardParameterMappingForFourthDashcard()));

List<Tabs> tabs = new ArrayList<>();
tabs.add(new Tabs(-1,"Activity"));
tabs.add(new Tabs(-2,"Data"));
metabaseDashboardRepository.updateDashboard(getGlobalDashboard().getId(), new DashboardUpdateRequest(dashcards,createParametersForDashboard(),tabs));

//todo add this to new tab in cannedReports dashboard
//public void updateGlobalDashboardWithCustomQuestions() {
// List<Dashcard> dashcards = new ArrayList<>();
// dashcards.add(new Dashcard(-1, getCardIdByQuestionName(INDIVIDUAL_TYPE_GENDER_ADDRESS_TABLE), null, 0, FIRST_CARD_COL_IDX, 12, 8, Collections.emptyMap(), createDashcardParameterMappingForFirstDashcard()));
// dashcards.add(new Dashcard(-2, getCardIdByQuestionName(ENROLMENT_TYPE_INDIVIDUAL_ADDRESS_TABLE), null, 0, SECOND_CARD_COL_IDX, 12, 8, Collections.emptyMap(), createDashcardParameterMappingForSecondDashcard()));
// metabaseDashboardRepository.updateDashboard(getGlobalDashboard().getId(), new DashboardUpdateRequest(dashcards, createParametersForDashboard()));
//}
}

private List<ParameterMapping> createDashcardParameterMappingForFirstDashcard(){
List<ParameterMapping> firstDashcardParameterMapping = new ArrayList<>();
Expand All @@ -407,9 +406,33 @@ private List<ParameterMapping> createDashcardParameterMappingForSecondDashcard()
return secondDashcardParameterMapping;
}

private List<Parameters> createParametersForDashboard(){
private List<ParameterMapping> createDashcardParameterMappingForThirdDashcard(){
List<ParameterMapping> thirdDashcardParameterMapping = new ArrayList<>();
thirdDashcardParameterMapping.add(new ParameterMapping("dateTimeId", getCardIdByQuestionName(INDIVIDUAL_TYPE_GENDER_ADDRESS_TABLE), new Target(MetabaseTargetType.DIMENSION, new FieldTarget(getFieldId(new TableDetails(TableName.INDIVIDUAL.getName()), new FieldDetails(FieldName.REGISTRATION_DATE.getName())), FieldType.DATE.getTypeName()))));
List<String> addressLevelTypeNames = addressLevelTypeRepository.getAllNames();
for (String addressLevelTypeName : addressLevelTypeNames) {
thirdDashcardParameterMapping.add(new ParameterMapping(addressLevelTypeName, getCardIdByQuestionName(INDIVIDUAL_TYPE_GENDER_ADDRESS_TABLE), new Target(MetabaseTargetType.DIMENSION, new FieldTarget(getFieldId(new TableDetails(ADDRESS_TABLE,getGlobalDatabase().getName()), new FieldDetails(addressLevelTypeName)), FieldType.TEXT.getTypeName(),ADDRESS_TABLE))));
}
return thirdDashcardParameterMapping;
}

private List<ParameterMapping> createDashcardParameterMappingForFourthDashcard(){
List<ParameterMapping> fourthDashcardParameterMapping = new ArrayList<>();
fourthDashcardParameterMapping.add(new ParameterMapping("dateTimeId", getCardIdByQuestionName(ENROLMENT_TYPE_INDIVIDUAL_ADDRESS_TABLE), new Target(MetabaseTargetType.DIMENSION, new FieldTarget(getFieldId(new TableDetails(TableName.PROGRAM_ENROLMENT.getName()), new FieldDetails(FieldName.ENROLMENT_DATE_TIME.getName())), FieldType.DATE_TIME_WITH_LOCAL_TZ.getTypeName()))));
List<String> addressLevelTypeNames = addressLevelTypeRepository.getAllNames();
for (String addressLevelTypeName : addressLevelTypeNames) {
fourthDashcardParameterMapping.add(new ParameterMapping(addressLevelTypeName, getCardIdByQuestionName(ENROLMENT_TYPE_INDIVIDUAL_ADDRESS_TABLE), new Target(MetabaseTargetType.DIMENSION, new FieldTarget(getFieldId(new TableDetails(ADDRESS_TABLE,getGlobalDatabase().getName()), new FieldDetails(addressLevelTypeName)), FieldType.TEXT.getTypeName(),ADDRESS_TABLE))));
}
return fourthDashcardParameterMapping;
}

private List<Parameters> createParametersForDashboard() {
List<Parameters> parameters = new ArrayList<>();
parameters.add(new Parameters("Date Range","all_options","dateTimeId","date/all-options","date"));
parameters.add(new Parameters("Date Range", "all_options", "dateTimeId", "date/all-options", "date"));
List<String> addressLevelTypeNames = addressLevelTypeRepository.getAllNames();
for (String addressLevelTypeName : addressLevelTypeNames) {
parameters.add(new Parameters(addressLevelTypeName, addressLevelTypeName, addressLevelTypeName, "string/starts-with", "string", "search"));
}
return parameters;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,16 @@
public class DashboardUpdateRequest {
private final List<Dashcard> dashcards;
private List<Parameters> parameters;
private List<Tabs> tabs;

public DashboardUpdateRequest(List<Dashcard> dashcards) {
this.dashcards = dashcards;
}

public DashboardUpdateRequest(List<Dashcard> dashcards, List<Parameters> parameters) {
public DashboardUpdateRequest(List<Dashcard> dashcards, List<Parameters> parameters, List<Tabs> tabs) {
this.dashcards = dashcards;
this.parameters = parameters;
this.tabs = tabs;
}

public List<Dashcard> getDashcards() {
Expand All @@ -23,6 +25,10 @@ public List<Parameters> getParameters() {
return parameters;
}

public List<Tabs> getTabs() {
return tabs;
}

@Override
public String toString() {
return "{" +
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,29 @@
public class FieldTarget {
private final int fieldId;
private final String baseType;
private String joinAlias;

public FieldTarget(int fieldId, String baseType) {
this.fieldId = fieldId;
this.baseType = baseType;
}

public FieldTarget(int fieldId, String baseType, String joinAlias) {
this.fieldId = fieldId;
this.baseType = baseType;
this.joinAlias = joinAlias;
}

public ArrayNode toJson() {
ArrayNode fieldArray = getObjectMapper().createArrayNode();
fieldArray.add(FieldAttribute.FIELD.getAttributeName());
fieldArray.add(fieldId);

ObjectNode fieldDetails = getObjectMapper().createObjectNode();
fieldDetails.put(FieldAttribute.BASE_TYPE.getAttributeName(), baseType);
if (joinAlias != null) {
fieldDetails.put(FieldAttribute.JOIN_ALIAS.getAttributeName(), joinAlias);
}

fieldArray.add(fieldDetails);
return fieldArray;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ public class Parameters {
private final String type;
@JsonProperty("sectionId")
private final String sectionId;
@JsonProperty("values_query_type")
private String valueQueryType;

public Parameters(String name, String slug, String id, String type, String sectionId) {
this.name = name;
Expand All @@ -22,6 +24,15 @@ public Parameters(String name, String slug, String id, String type, String secti
this.sectionId = sectionId;
}

public Parameters(String name, String slug, String id, String type, String sectionId, String valueQueryType) {
this.name = name;
this.slug = slug;
this.id = id;
this.type = type;
this.sectionId = sectionId;
this.valueQueryType = valueQueryType;
}

public String getName() {
return name;
}
Expand All @@ -41,4 +52,8 @@ public String getType() {
public String getSectionId() {
return sectionId;
}

public String getValueQueryType() {return valueQueryType;}

public void setValueQueryType(String valueQueryType) {this.valueQueryType = valueQueryType;}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package org.avni.server.domain.metabase;

import com.fasterxml.jackson.annotation.JsonProperty;

public class Tabs {
@JsonProperty("id")
private int id;

@JsonProperty("name")
private String name;

public Tabs(int id, String name) {
this.id = id;
this.name = name;
}
}

0 comments on commit d864d6b

Please sign in to comment.