package com.mechinn.android.ouralliance.fragment.frc2015; import android.os.Bundle; import com.activeandroid.query.Select; import com.github.mikephil.charting.data.BarEntry; import com.github.mikephil.charting.data.Entry; import com.mechinn.android.ouralliance.data.EventTeam; import com.mechinn.android.ouralliance.data.GraphDataSet; import com.mechinn.android.ouralliance.data.frc2015.MatchScouting2015; import com.mechinn.android.ouralliance.data.frc2015.TeamScouting2015; import com.mechinn.android.ouralliance.fragment.AnalysisFragment; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.TreeMap; import de.greenrobot.event.EventBus; import timber.log.Timber; /** * Created by mechinn on 3/15/15. */ public class AnalysisFragment2015 extends AnalysisFragment { public static final String TAG = "TeamAnalysisFragment2015"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addTeamGraph(TeamScouting2015.WIDTH, android.R.color.holo_blue_dark, new GraphGetter<TeamScouting2015>() { @Override public Object getter(TeamScouting2015 scouting) { return scouting.getWidth(); } }); addTeamGraph(TeamScouting2015.LENGTH, android.R.color.holo_green_dark, new GraphGetter<TeamScouting2015>() { @Override public Object getter(TeamScouting2015 scouting) { return scouting.getLength(); } }); addTeamGraph(TeamScouting2015.HEIGHT, android.R.color.holo_orange_dark, new GraphGetter<TeamScouting2015>() { @Override public Object getter(TeamScouting2015 scouting) { return scouting.getHeight(); } }); addTeamGraph(TeamScouting2015.COOP, android.R.color.holo_purple, new GraphGetter<TeamScouting2015>() { @Override public Object getter(TeamScouting2015 scouting) { return scouting.getCoop(); } }); addTeamGraph(TeamScouting2015.DRIVER_EXPERIENCE, android.R.color.holo_red_dark, new GraphGetter<TeamScouting2015>() { @Override public Object getter(TeamScouting2015 scouting) { return scouting.getDriverExperience(); } }); addTeamGraph(TeamScouting2015.MAX_TOTE_STACK, android.R.color.holo_blue_bright, new GraphGetter<TeamScouting2015>() { @Override public Object getter(TeamScouting2015 scouting) { return scouting.getMaxToteStack(); } }); addTeamGraph(TeamScouting2015.MAX_CONTAINER_STACK, android.R.color.holo_green_light, new GraphGetter<TeamScouting2015>() { @Override public Object getter(TeamScouting2015 scouting) { return scouting.getMaxTotesStackContainer(); } }); addTeamGraph(TeamScouting2015.MAX_TOTES_AND_CONTAINER_LITTER, android.R.color.holo_orange_light, new GraphGetter<TeamScouting2015>() { @Override public Object getter(TeamScouting2015 scouting) { return scouting.getMaxTotesAndContainerLitter(); } }); addTeamGraph(TeamScouting2015.HUMAN_PLAYER, android.R.color.holo_red_light, new GraphGetter<TeamScouting2015>() { @Override public Object getter(TeamScouting2015 scouting) { return scouting.getHumanPlayer(); } }); addTeamGraph(TeamScouting2015.NO_AUTO, android.R.color.holo_blue_light, new GraphGetter<TeamScouting2015>() { @Override public Object getter(TeamScouting2015 scouting) { return scouting.getNoAuto(); } }); addTeamGraph(TeamScouting2015.DRIVE_AUTO, android.R.color.black, new GraphGetter<TeamScouting2015>() { @Override public Object getter(TeamScouting2015 scouting) { return scouting.getDriveAuto(); } }); addTeamGraph(TeamScouting2015.TOTE_AUTO, android.R.color.holo_blue_dark, new GraphGetter<TeamScouting2015>() { @Override public Object getter(TeamScouting2015 scouting) { return scouting.getToteAuto(); } }); addTeamGraph(TeamScouting2015.CONTAINER_AUTO, android.R.color.holo_green_dark, new GraphGetter<TeamScouting2015>() { @Override public Object getter(TeamScouting2015 scouting) { return scouting.getContainerAuto(); } }); addTeamGraph(TeamScouting2015.STACKED_AUTO, android.R.color.holo_orange_dark, new GraphGetter<TeamScouting2015>() { @Override public Object getter(TeamScouting2015 scouting) { return scouting.getStackedAuto(); } }); addTeamGraph(TeamScouting2015.LANDFILL_AUTO, android.R.color.holo_purple, new GraphGetter<TeamScouting2015>() { @Override public Object getter(TeamScouting2015 scouting) { return scouting.getLandfillAuto(); } }); addMatchGraph(MatchScouting2015.AUTO_STACKED, android.R.color.holo_red_dark, new GraphGetter<MatchScouting2015>() { @Override public Object getter(MatchScouting2015 scouting) { return scouting.getAutoStacked(); } }); addMatchGraph(MatchScouting2015.AUTO_TOTES, android.R.color.holo_blue_bright, new GraphGetter<MatchScouting2015>() { @Override public Object getter(MatchScouting2015 scouting) { return scouting.getAutoTotes(); } }); addMatchGraph(MatchScouting2015.AUTO_CONTAINERS, android.R.color.holo_green_light, new GraphGetter<MatchScouting2015>() { @Override public Object getter(MatchScouting2015 scouting) { return scouting.getAutoContainers(); } }); addMatchGraph(MatchScouting2015.AUTO_LANDFILL, android.R.color.holo_orange_light, new GraphGetter<MatchScouting2015>() { @Override public Object getter(MatchScouting2015 scouting) { return scouting.getAutoLandfill(); } }); addMatchGraph(MatchScouting2015.AUTO_MOVE, android.R.color.holo_red_light, new GraphGetter<MatchScouting2015>() { @Override public Object getter(MatchScouting2015 scouting) { return scouting.getAutoMove(); } }); addMatchGraph(MatchScouting2015.COOP, android.R.color.holo_blue_light, new GraphGetter<MatchScouting2015>() { @Override public Object getter(MatchScouting2015 scouting) { return scouting.getCoop(); } }); addMatchGraph(MatchScouting2015.TOTES, android.R.color.black, new GraphGetter<MatchScouting2015>() { @Override public Object getter(MatchScouting2015 scouting) { return scouting.getTotes(); } }); addMatchGraph(MatchScouting2015.CONTAINERS, android.R.color.holo_blue_dark, new GraphGetter<MatchScouting2015>() { @Override public Object getter(MatchScouting2015 scouting) { return scouting.getContainers(); } }); addMatchGraph(MatchScouting2015.LITTER, android.R.color.holo_green_dark, new GraphGetter<MatchScouting2015>() { @Override public Object getter(MatchScouting2015 scouting) { return scouting.getLitter(); } }); addMatchGraph(MatchScouting2015.FOULS, android.R.color.holo_orange_dark, new GraphGetter<MatchScouting2015>() { @Override public Object getter(MatchScouting2015 scouting) { return scouting.getFouls(); } }); addMatchGraph(MatchScouting2015.HUMAN_ATTEMPT, android.R.color.holo_purple, new GraphGetter<MatchScouting2015>() { @Override public Object getter(MatchScouting2015 scouting) { return scouting.getHumanAttempt(); } }); addMatchGraph(MatchScouting2015.HUMAN_SUCCESS, android.R.color.holo_red_dark, new GraphGetter<MatchScouting2015>() { @Override public Object getter(MatchScouting2015 scouting) { return scouting.getHumanSuccess(); } }); } public void loadTeam() { List<TeamScouting2015> scouting = new Select().from(TeamScouting2015.class).join(EventTeam.class).on(EventTeam.TAG + "." + EventTeam.TEAM + "=" + TeamScouting2015.TAG + "." + TeamScouting2015.TEAM).where(EventTeam.TAG + "." + EventTeam.EVENT + "=?", getPrefs().getComp()).execute(); EventBus.getDefault().postSticky(new LoadTeams(scouting)); } public void loadMatch() { List<MatchScouting2015> scouting = new Select().from(MatchScouting2015.class).join(EventTeam.class).on(EventTeam.TAG + "." + EventTeam.TEAM + "=" + MatchScouting2015.TAG + "." + MatchScouting2015.TEAM).where(EventTeam.TAG + "." + EventTeam.EVENT + "=?", getPrefs().getComp()).execute(); EventBus.getDefault().postSticky(new LoadMatches(scouting)); } public void onEventMainThread(LoadTeams loadTeams) { setTeamData(loadTeams); } public void setTeamData(LoadTeams loadTeams) { List<TeamScouting2015> scoutingList = (List<TeamScouting2015>) loadTeams.getScouting(); Collections.sort(scoutingList); for (Graph teamGraph : getTeamGraphs()) { ArrayList<Entry> entries = new ArrayList<>(); for (int count = 0; count < scoutingList.size(); count++) { TeamScouting2015 team = scoutingList.get(count); entries.add(teamGraph.getGetter().barEntry(team, count)); } GraphDataSet graphDataSet = new GraphDataSet(entries, teamGraph.getLabel(), getPrefs().getYear(), GraphDataSet.Type.TEAM, true); graphDataSet.getDataSet().setColor(teamGraph.getColor()); addTeamDataSet(graphDataSet); } loadedChartData(); } public void onEventMainThread(LoadMatches loadMatches) { setMatchData(loadMatches); } public void setMatchData(LoadMatches loadMatches) { List<MatchScouting2015> scoutingList = (List<MatchScouting2015>) loadMatches.getScouting(); Collections.sort(scoutingList); TreeMap<Integer,Float> teams = new TreeMap<>(); for (Graph matchGraph : getMatchGraphs()) { ArrayList<Entry> entries = new ArrayList<>(); for (int count = 0; count < scoutingList.size(); count++) { MatchScouting2015 scouting = scoutingList.get(count); int teamNumber = scouting.getTeamScouting().getTeam().getTeamNumber(); Float average = teams.get(teamNumber); float scoutingValue = matchGraph.getGetter().getValue(scouting); if(null==average) { teams.put(teamNumber, scoutingValue); } else { teams.put(teamNumber, (average+scoutingValue)/2); } } int count=0; for (Map.Entry<Integer, Float> team : teams.entrySet()) { Integer key = team.getKey(); Timber.d("key:" + key); Float value = team.getValue(); entries.add(new BarEntry(value, count++)); } GraphDataSet graphDataSet = new GraphDataSet(entries, matchGraph.getLabel(), getPrefs().getYear(), GraphDataSet.Type.MATCH, true); graphDataSet.getDataSet().setColor(matchGraph.getColor()); addMatchDataSet(graphDataSet); } loadedChartData(); } }