Added ChartJS compatible all-time average observation score endpoint.
This commit is contained in:
parent
583e07877d
commit
5fc9495b43
@ -0,0 +1,57 @@
|
|||||||
|
package uk.co.neviyn.Observations.api;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.NonNull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AverageStats in a format easily readable by Chart.js
|
||||||
|
*/
|
||||||
|
public class AverageStatsChartJs {
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
@JsonProperty
|
||||||
|
private List<String> labels = new ArrayList<String>();
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
@JsonProperty
|
||||||
|
List<Dataset> datasets = new ArrayList<Dataset>();
|
||||||
|
|
||||||
|
public AverageStatsChartJs(List<AverageStats> inputData){
|
||||||
|
List<Float> monitoring = new ArrayList<Float>(),
|
||||||
|
control = new ArrayList<Float>(),
|
||||||
|
conservatism = new ArrayList<Float>(),
|
||||||
|
teamwork = new ArrayList<Float>(),
|
||||||
|
knowledge = new ArrayList<Float>();
|
||||||
|
for(AverageStats averageStats: inputData){
|
||||||
|
labels.add(averageStats.getDate().toString());
|
||||||
|
monitoring.add(averageStats.getMonitoring());
|
||||||
|
control.add(averageStats.getControl());
|
||||||
|
conservatism.add(averageStats.getConservatism());
|
||||||
|
teamwork.add(averageStats.getTeamwork());
|
||||||
|
knowledge.add(averageStats.getKnowledge());
|
||||||
|
}
|
||||||
|
datasets.add(new Dataset("Monitoring", "", monitoring));
|
||||||
|
datasets.add(new Dataset("Control", "", control));
|
||||||
|
datasets.add(new Dataset("Conservatism", "", conservatism));
|
||||||
|
datasets.add(new Dataset("Teamwork", "", teamwork));
|
||||||
|
datasets.add(new Dataset("Knowledge", "", knowledge));
|
||||||
|
}
|
||||||
|
|
||||||
|
@AllArgsConstructor
|
||||||
|
class Dataset {
|
||||||
|
@NonNull
|
||||||
|
@JsonProperty
|
||||||
|
private final String label;
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
@JsonProperty
|
||||||
|
private final String borderColor;
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
@JsonProperty
|
||||||
|
private final List<Float> data;
|
||||||
|
}
|
||||||
|
}
|
@ -47,7 +47,7 @@ public interface ObservationDao {
|
|||||||
@Bind("endDate")DateTime endDate);
|
@Bind("endDate")DateTime endDate);
|
||||||
|
|
||||||
@SqlQuery("SELECT AVG(monitoring) as monitoring, AVG(control) as control, AVG(conservatism) as conservatism, " +
|
@SqlQuery("SELECT AVG(monitoring) as monitoring, AVG(control) as control, AVG(conservatism) as conservatism, " +
|
||||||
"AVG(teamwork) as teamwork, AVG(knowledge) as knowledge, date FROM observations GROUP BY date")
|
"AVG(teamwork) as teamwork, AVG(knowledge) as knowledge, date FROM observations GROUP BY date ORDER BY date")
|
||||||
@RegisterRowMapper(AverageStats.Mapper.class)
|
@RegisterRowMapper(AverageStats.Mapper.class)
|
||||||
List<AverageStats> averageObservationScoresByDay();
|
List<AverageStats> averageObservationScoresByDay();
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.joda.time.DateTime;
|
import org.joda.time.DateTime;
|
||||||
import org.joda.time.LocalDate;
|
import org.joda.time.LocalDate;
|
||||||
import uk.co.neviyn.Observations.api.AverageStats;
|
import uk.co.neviyn.Observations.api.AverageStats;
|
||||||
|
import uk.co.neviyn.Observations.api.AverageStatsChartJs;
|
||||||
import uk.co.neviyn.Observations.api.NewObservation;
|
import uk.co.neviyn.Observations.api.NewObservation;
|
||||||
import uk.co.neviyn.Observations.core.Observation;
|
import uk.co.neviyn.Observations.core.Observation;
|
||||||
import uk.co.neviyn.Observations.dao.ObservationDao;
|
import uk.co.neviyn.Observations.dao.ObservationDao;
|
||||||
@ -49,4 +50,10 @@ public class ObservationResource {
|
|||||||
public List<AverageStats> averageObservationScores(){
|
public List<AverageStats> averageObservationScores(){
|
||||||
return dao.averageObservationScoresByDay();
|
return dao.averageObservationScoresByDay();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Path("/average/all/chartjs")
|
||||||
|
@GET
|
||||||
|
public AverageStatsChartJs averageStatsChartJs(){
|
||||||
|
return new AverageStatsChartJs(dao.averageObservationScoresByDay());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user