use of com.cpjd.roblu.models.metrics.RMetric in project Roblu by wdavies973.
the class Lookup method generateSheet.
@Override
public void generateSheet(XSSFSheet sheet, REvent event, RForm form, RTeam[] teams, ArrayList<RCheckout> checkouts) {
Row one = createRow(sheet);
one.createCell(0).setCellValue("Match Number");
Row two = createRow(sheet);
two.createCell(0).setCellValue(1);
int maxListLength = checkouts.size();
// Team's row
two.createCell(4).setCellFormula("VLOOKUP($A$2,MatchList!$A$2:$G$" + maxListLength + ",2,FALSE)");
two.createCell(5).setCellFormula("VLOOKUP($A$2,MatchList!$A$2:$G$" + maxListLength + ",3,FALSE)");
two.createCell(6).setCellFormula("VLOOKUP($A$2,MatchList!$A$2:$G$" + maxListLength + ",4,FALSE)");
two.createCell(7).setCellFormula("VLOOKUP($A$2,MatchList!$A$2:$G$" + maxListLength + ",5,FALSE)");
two.createCell(8).setCellFormula("VLOOKUP($A$2,MatchList!$A$2:$G$" + maxListLength + ",6,FALSE)");
two.createCell(9).setCellFormula("VLOOKUP($A$2,MatchList!$A$2:$G$" + maxListLength + ",7,FALSE)");
int maxWidth = form.getMatch().size() + 2;
String columnLetter = CellReference.convertNumToColString(maxWidth);
// Load metrics
int index = 0;
for (RMetric metric : form.getMatch()) {
Row row = createRow(sheet);
createCell(row, 3, metric.getTitle());
row.createCell(4).setCellFormula("VLOOKUP(E$2,'MatchData'!$A$2:$" + columnLetter + "$" + maxListLength + "," + (index + 3) + ",FALSE)");
row.createCell(5).setCellFormula("VLOOKUP(F$2,'MatchData'!$A$2:$" + columnLetter + "$" + maxListLength + "," + (index + 3) + ",FALSE)");
row.createCell(6).setCellFormula("VLOOKUP(G$2,'MatchData'!$A$2:$" + columnLetter + "$" + maxListLength + "," + (index + 3) + ",FALSE)");
row.createCell(7).setCellFormula("VLOOKUP(H$2,'MatchData'!$A$2:$" + columnLetter + "$" + maxListLength + "," + (index + 3) + ",FALSE)");
row.createCell(8).setCellFormula("VLOOKUP(I$2,'MatchData'!$A$2:$" + columnLetter + "$" + maxListLength + "," + (index + 3) + ",FALSE)");
row.createCell(9).setCellFormula("VLOOKUP(J$2,'MatchData'!$A$2:$" + columnLetter + "$" + maxListLength + "," + (index + 3) + ",FALSE)");
index++;
}
}
use of com.cpjd.roblu.models.metrics.RMetric in project Roblu by wdavies973.
the class PitData method generateSheet.
@Override
public void generateSheet(XSSFSheet sheet, REvent event, RForm form, RTeam[] teams, ArrayList<RCheckout> checkouts) {
/*
* Create some styles
*/
XSSFCellStyle[] styles = { setCellStyle(BorderStyle.THIN, IndexedColors.CORAL, IndexedColors.BLACK, false), setCellStyle(BorderStyle.THIN, IndexedColors.LIGHT_GREEN, IndexedColors.BLACK, false), setCellStyle(BorderStyle.THIN, IndexedColors.GREY_50_PERCENT, IndexedColors.BLACK, false), setCellStyle(BorderStyle.THIN, IndexedColors.CORNFLOWER_BLUE, IndexedColors.BLACK, false) };
/*
* Create row 1 (predictions metric names)
*/
Row metricNames = createRow(sheet, 60);
setCellStyle(BorderStyle.THIN, IndexedColors.BLACK, IndexedColors.WHITE, true);
createCell(metricNames, 0, "Team#");
int styleCounter = 0;
for (int i = 0; i < form.getMatch().size(); i++) {
// decide the which style to use
if (styleCounter == 4)
styleCounter = 0;
setStyle(styles[styleCounter]);
styleCounter++;
createCell(metricNames, i + 1, form.getMatch().get(i).getTitle() + getPossibleValuesForMetric(form.getMatch().get(i)));
}
/*
* Add divider
*/
setCellStyle(BorderStyle.THIN, IndexedColors.BLACK, IndexedColors.WHITE, true);
createCell(metricNames, form.getMatch().size() + 1, "<--PREDICTIONS\nPIT-->");
/*
* Add pit metric names
*/
styleCounter = 0;
for (int i = 0; i < form.getPit().size(); i++) {
// decide the which style to use
if (styleCounter == 4)
styleCounter = 0;
setStyle(styles[styleCounter]);
styleCounter++;
createCell(metricNames, i + form.getMatch().size() + 2, form.getPit().get(i).getTitle() + getPossibleValuesForMetric(form.getPit().get(i)));
}
/*
* Start adding scouting data
*/
for (RTeam team : teams) {
Row row = createRow(sheet);
// Team number column
setCellStyle(BorderStyle.THIN, IndexedColors.BLACK, IndexedColors.WHITE, true);
getStyle().setAlignment(HorizontalAlignment.RIGHT);
createCell(row, 0, String.valueOf(team.getNumber()));
// Loop through the form metrics array
for (int i = 0; i < form.getMatch().size(); i++) {
// Set style
setStyle(styles[i % styles.length]);
// If the team contains the match and the metric is modified, add it to the excel sheet
// We found the match, let's quickly find the metric
RMetric teamMetric = null;
for (RMetric metric : team.getTabs().get(1).getMetrics()) {
if (metric.getID() == form.getMatch().get(i).getID()) {
teamMetric = metric;
break;
}
}
if (shouldWriteMetric(team, teamMetric)) {
if (teamMetric instanceof RStopwatch)
createCell(row, 1 + i, ((RStopwatch) teamMetric).getLapsString());
else
createCell(row, 1 + i, teamMetric.toString());
} else
createCell(row, 1 + i, "");
}
// Add divider column
setCellStyle(BorderStyle.THIN, IndexedColors.BLACK, IndexedColors.WHITE, true);
getStyle().setAlignment(HorizontalAlignment.RIGHT);
createCell(row, 1 + form.getMatch().size(), "");
// Loop through the pit metrics array
for (int i = 0; i < form.getPit().size(); i++) {
// Set style
setStyle(styles[i % styles.length]);
RMetric teamMetric = null;
for (RMetric metric : team.getTabs().get(0).getMetrics()) {
if (metric.getID() == form.getPit().get(i).getID()) {
teamMetric = metric;
break;
}
}
// always add the team name and number fields, even if they aren't modified
if (teamMetric.getID() == 0) {
createCell(row, 2 + form.getMatch().size() + i, team.getName());
continue;
}
if (teamMetric.getID() == 1) {
createCell(row, 2 + form.getMatch().size() + i, String.valueOf(team.getNumber()));
continue;
}
if (shouldWriteMetric(team, teamMetric)) {
if (teamMetric instanceof RStopwatch)
createCell(row, 2 + i + form.getMatch().size(), ((RStopwatch) teamMetric).getLapsString());
else
createCell(row, 2 + i + form.getMatch().size(), teamMetric.toString());
} else
createCell(row, 2 + i + form.getMatch().size(), "");
}
}
}
use of com.cpjd.roblu.models.metrics.RMetric in project Roblu by wdavies973.
the class PredefinedFormSelector method processForm.
/**
* Converst the form into an RForm reference
* @param name the file name
* @return an RForm instance
*/
private RForm processForm(int index, String name) {
RForm form = new RForm(null, null);
ArrayList<RMetric> metrics = new ArrayList<>();
try {
AssetManager am = getAssets();
InputStream is = am.open("predefinedForms" + File.separator + name);
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line;
int ID = 0;
while ((line = br.readLine()) != null) {
if (line.startsWith("Title")) {
items[index] = line.split(":")[1];
continue;
} else if (line.startsWith("Description")) {
sub_items[index] = line.split(":")[1];
continue;
}
switch(line) {
case "PIT":
continue;
case "MATCH":
form.setPit(new ArrayList<>(metrics));
metrics.clear();
continue;
case "DEFAULTS":
metrics.add(new RTextfield(0, "Team name", false, true, ""));
metrics.add(new RTextfield(1, "Team number", true, true, ""));
ID = 2;
break;
}
/*
* Process file
*/
String regex = "(?<!\\\\)" + Pattern.quote(",");
String[] tokens = line.split(regex);
for (int i = 0; i < tokens.length; i++) {
tokens[i] = tokens[i].replaceAll("\\\\,", ",");
}
switch(tokens[0]) {
case "counter":
metrics.add(new RCounter(ID, tokens[1], Integer.parseInt(tokens[2]), Integer.parseInt(tokens[3])));
ID++;
break;
case "divider":
metrics.add(new RDivider(ID, tokens[1]));
ID++;
break;
case "chooser":
metrics.add(new RChooser(ID, tokens[1], tokens[2].split(":"), Integer.parseInt(tokens[3])));
ID++;
break;
case "slider":
metrics.add(new RSlider(ID, tokens[1], Integer.parseInt(tokens[2]), Integer.parseInt(tokens[3]), Integer.parseInt(tokens[4])));
ID++;
break;
case "checkbox":
LinkedHashMap<String, Boolean> temp = new LinkedHashMap<>();
for (String s : tokens[2].split(":")) temp.put(s, false);
metrics.add(new RCheckbox(ID, tokens[1], temp));
ID++;
break;
case "textfield":
metrics.add(new RTextfield(ID, tokens[1], ""));
ID++;
break;
case "stopwatch":
metrics.add(new RStopwatch(ID, tokens[1], Double.parseDouble(tokens[2])));
ID++;
break;
case "boolean":
metrics.add(new RBoolean(ID, tokens[1], Boolean.parseBoolean(tokens[2])));
ID++;
break;
case "gallery":
metrics.add(new RGallery(ID, tokens[1]));
ID++;
break;
}
}
form.setMatch(metrics);
Log.d("RBS", "Form created successfully with " + form.getPit().size() + " pit metrics and " + form.getMatch().size() + " match metrics");
return form;
} catch (IOException e) {
Log.d("RBS", "Failed to process form: " + e.getMessage());
return null;
}
}
use of com.cpjd.roblu.models.metrics.RMetric in project Roblu by wdavies973.
the class MetricSortFragment method metricSelected.
/**
* This method is called when the user taps on a metric
*
* @param v the View that the user tapped on (used for inferring the RMetric object)
*/
@Override
public void metricSelected(View v) {
final int position = rv.getChildLayoutPosition(v);
if (metrics.get(position) instanceof RFieldData) {
final Dialog d = new Dialog(getActivity());
d.setTitle("Select sub metric");
d.setContentView(R.layout.submetric_import);
final Spinner spinner = d.findViewById(R.id.type);
// Attempt to load a team to get a list of values
int id = 0;
IO io = new IO(getActivity());
RTeam team;
do {
team = io.loadTeam(eventID, id);
id++;
} while (team == null && id < 100);
RFieldData fieldData = null;
try {
mainLoop: for (RTab tab : team.getTabs()) {
if (tab.getTitle().equalsIgnoreCase("PIT") || tab.getTitle().equalsIgnoreCase("PREDICTIONS"))
continue;
for (RMetric metric2 : tab.getMetrics()) {
if (metric2 instanceof RFieldData && metrics.get(position).getID() == metric2.getID() && ((RFieldData) metric2).getData() != null && ((RFieldData) metric2).getData().size() >= 1) {
fieldData = (RFieldData) metric2;
break mainLoop;
}
}
}
} catch (Exception e) {
// }
}
if (fieldData == null)
return;
final String[] values = Utils.depackFieldData(fieldData);
if (values == null) {
Toast.makeText(getActivity(), "Error occurred while loading metrics.", Toast.LENGTH_LONG).show();
return;
}
ArrayAdapter<String> adp = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, values);
adp.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adp);
Button button = d.findViewById(R.id.button7);
button.setText(R.string.select);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent result = new Intent();
result.putExtra("sortToken", TeamMetricProcessor.PROCESS_METHOD.MATCHES + ":" + metrics.get(position).getID() + ":" + values[spinner.getSelectedItemPosition()]);
getActivity().setResult(Constants.CUSTOM_SORT_CONFIRMED, result);
getActivity().finish();
d.dismiss();
}
});
if (d.getWindow() != null)
d.getWindow().getAttributes().windowAnimations = new IO(getActivity()).loadSettings().getRui().getAnimation();
d.show();
return;
} else // User selected the "In Match" option, now we have to display a list of all the matches within the event
if (processMethod == TeamMetricProcessor.PROCESS_METHOD.OTHER && metrics.get(position).getID() == TeamMetricProcessor.PROCESS_METHOD.OTHER_METHOD.IN_MATCH) {
final Dialog d = new Dialog(getActivity());
d.setTitle("Select match");
d.setContentView(R.layout.event_import_dialog);
final Spinner spinner = d.findViewById(R.id.type);
TextView t = d.findViewById(R.id.spinner_tip);
t.setText(R.string.match);
final String[] values = Utils.getMatchTitlesWithinEvent(getContext(), eventID);
if (values == null) {
Toast.makeText(getActivity(), "Error occurred while loading matches. Do any matches exist?", Toast.LENGTH_LONG).show();
return;
}
ArrayAdapter<String> adp = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, values);
adp.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adp);
Button button = d.findViewById(R.id.button7);
button.setText(R.string.select);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent result = new Intent();
result.putExtra("sortToken", TeamMetricProcessor.PROCESS_METHOD.OTHER + ":" + TeamMetricProcessor.PROCESS_METHOD.OTHER_METHOD.IN_MATCH + ":" + values[spinner.getSelectedItemPosition()]);
getActivity().setResult(Constants.CUSTOM_SORT_CONFIRMED, result);
getActivity().finish();
d.dismiss();
}
});
if (d.getWindow() != null)
d.getWindow().getAttributes().windowAnimations = new IO(getActivity()).loadSettings().getRui().getAnimation();
d.show();
return;
}
String sortToken = processMethod + ":" + metrics.get(position).getID();
Intent result = new Intent();
result.putExtra("sortToken", sortToken);
if (getActivity() != null) {
getActivity().setResult(Constants.CUSTOM_SORT_CONFIRMED, result);
getActivity().finish();
}
}
use of com.cpjd.roblu.models.metrics.RMetric in project Roblu by wdavies973.
the class TeamMetricProcessor method process.
/**
* Processes an RTeam object and sets its filterTag and relevance variables.
* -filterTag is a string representing a certain metric as defined by param method and param ID
* -relevance is used for sorting (relevance is assigned differently for the type of RMetric, but for example,
* counters with the highest value with cause that team to be sorted at the top)
*
* @param team the team to process
* @param method an int from PROCESS_METHOD that defines how an team should be processed
* @param ID the id of the metric to process, this value will be ignored if method is PIT, PREDICTIONS, or MATCHES
*/
public void process(RTeam team, int method, int ID) {
team.setCustomRelevance(0);
/*
* Helper variables
*/
StringBuilder rawData = new StringBuilder();
int occurrences = 0;
double relevance = 0;
double average = 0.0, min = 0.0, max = 0.0;
/*
* If the request method is PIT or PREDICTIONS, use the following code to
* sort the team. Note, each team will only have one value that needs to be
* analyzed, so statistics are essentially invalid
*/
if (method == PROCESS_METHOD.PIT || method == PROCESS_METHOD.PREDICTIONS) {
for (RMetric metric : team.getTabs().get(method).getMetrics()) {
if (metric.getID() != ID)
continue;
if (metric instanceof RBoolean) {
rawData.append("Boolean: ").append(metric.getTitle()).append(" is ").append(friendlyBoolean((RBoolean) metric));
if (metric.isModified() && ((RBoolean) metric).isValue())
relevance++;
} else if (metric instanceof RCounter) {
rawData.append("Counter: ").append(metric.getTitle()).append(" is ").append(friendlyCounter((RCounter) metric));
relevance += ((RCounter) metric).getValue();
} else if (metric instanceof RSlider) {
rawData.append("Slider: ").append(metric.getTitle()).append(" is ").append(friendlySlider((RSlider) metric));
relevance += ((RSlider) metric).getValue();
} else if (metric instanceof RStopwatch) {
rawData.append("Stopwatch: ").append(metric.getTitle()).append(" is ").append(friendlyStopwatch((RStopwatch) metric));
relevance += ((RStopwatch) metric).getTime();
} else if (metric instanceof RTextfield) {
rawData.append("Textfield: ").append(metric.getTitle()).append(" has ").append(((RTextfield) metric).getText().length()).append(" characters");
relevance += ((RTextfield) metric).getText().length();
} else if (metric instanceof RGallery) {
rawData.append("Gallery: ").append(metric.getTitle()).append(" contains ").append(((RGallery) metric).getImages().size()).append(" images");
relevance += ((RGallery) metric).getImages().size();
} else if (metric instanceof RCheckbox) {
rawData.append("Checkbox: ").append(metric.getTitle()).append(" values: ").append(friendlyCheckbox((RCheckbox) metric));
relevance += getCheckedAmount((RCheckbox) metric);
} else if (metric instanceof RChooser) {
rawData.append("Chooser: ").append(metric.getTitle()).append(" has value ").append(((RChooser) metric).getValues()[((RChooser) metric).getSelectedIndex()]);
}
rawData.append(" in ").append(friendlyMode(method));
team.setFilterTag("\n" + rawData.toString());
team.setCustomRelevance(relevance);
break;
}
} else /*
* If the request method is MATCHES, then the following code has to be used
* to look at each particular RTab object within the team object
*/
if (method == PROCESS_METHOD.MATCHES) {
if (team.getTabs() == null || team.getTabs().size() == 0) {
team.setFilterTag("\nThis team does not contain any matches that can be sorted.");
return;
}
/*
* This nested for loop will go through every team tab and every metric within each team tab.
* This loop should only process the RAW DATA for each metric, the overview stuff will be added at the end.
* Use StringBuilder rawData to store raw data
*/
rawData.append("\nRaw data: ");
for (int i = 2; i < team.getTabs().size(); i++) {
for (RMetric metric : team.getTabs().get(i).getMetrics()) {
// Make sure that the metric that is being processed is equal to the inputted value
if (metric.getID() != ID)
continue;
// RBoolean type
if (metric instanceof RBoolean) {
RBoolean rBoolean = (RBoolean) metric;
// if the value is modified and true, add some relevance info
if (rBoolean.isModified() && rBoolean.isValue()) {
occurrences++;
relevance++;
}
// add raw data
rawData.append(friendlyBoolean((RBoolean) metric)).append(ending(i, team.getTabs()));
} else // RCounter type
if (metric instanceof RCounter) {
double value = ((RCounter) metric).getValue();
if (i == 2)
min = value;
// Overview stats will only consider modified items
if (metric.isModified()) {
/*
* Progressively calculate the min, max, and average values
*/
if (value < min)
min = value;
if (value > max)
max = value;
average += value / (double) numModified(team.getTabs(), ID);
relevance = average;
}
// add raw data
rawData.append(friendlyCounter((RCounter) metric)).append(ending(i, team.getTabs()));
} else if (metric instanceof RCalculation) {
try {
double value = Double.parseDouble(((RCalculation) metric).getValue(team.getTabs().get(i).getMetrics()));
if (i == 2)
min = value;
// Overview stats will only consider modified items
if (metric.isModified()) {
/*
* Progressively calculate the min, max, and average values
*/
if (value < min)
min = value;
if (value > max)
max = value;
average += value / (double) numModified(team.getTabs(), ID);
relevance = average;
}
// add raw data
rawData.append(friendlyCounter((RCounter) metric)).append(ending(i, team.getTabs()));
} catch (Exception e) {
// eat it
}
} else // RSlider type
if (metric instanceof RSlider) {
int value = ((RSlider) metric).getValue();
if (i == 2)
min = value;
// Overview stats will only consider modified sliders
if (metric.isModified()) {
if (value < min)
min = value;
if (value > max)
max = value;
average += (double) value / (double) numModified(team.getTabs(), ID);
relevance = average;
}
// add raw data
rawData.append(friendlySlider((RSlider) metric)).append(ending(i, team.getTabs()));
} else // RStopwatch type
if (metric instanceof RStopwatch) {
double value = ((RStopwatch) metric).getTime();
if (i == 2)
min = value;
// Overview stats will only consider modified stopwatches
if (metric.isModified()) {
/*
* Progressively calculate the min, max, and average values
*/
if (value < min)
min = value;
if (value > max)
max = value;
average += value / (double) numModified(team.getTabs(), ID);
relevance = average;
}
// add raw data
rawData.append(friendlyStopwatch((RStopwatch) metric)).append(ending(i, team.getTabs()));
} else // RTextfield type
if (metric instanceof RTextfield) {
int value = ((RTextfield) metric).getText().length();
// Overview stats will only consider modified textfields
if (metric.isModified()) {
/*
* Progressively calculate the min, max, and average values
*/
if (value < min)
min = value;
if (value > max)
max = value;
average += (double) value / (double) numModified(team.getTabs(), ID);
relevance = average;
}
// add raw data
rawData.append(value).append(" chars").append(ending(i, team.getTabs()));
} else // RGallery type
if (metric instanceof RGallery) {
int value = ((RGallery) metric).getImages().size();
// Overview stats will only consider modified textfields
if (metric.isModified()) {
/*
* Progressively calculate the min, max, and average values
*/
if (value < min)
min = value;
if (value > max)
max = value;
average += (double) value / (double) numModified(team.getTabs(), ID);
relevance = average;
}
// add raw data
rawData.append(value).append(" images ").append(ending(i, team.getTabs()));
} else // RCheckbox type
if (metric instanceof RCheckbox) {
// add raw data
rawData.append(friendlyCheckbox((RCheckbox) metric)).append(ending(i, team.getTabs()));
relevance += getCheckedAmount((RCheckbox) metric);
} else // RChooser type
if (metric instanceof RChooser) {
if (metric.isModified())
relevance++;
// add raw data
rawData.append(((RChooser) metric).getValues()[((RChooser) metric).getSelectedIndex()]).append(ending(i, team.getTabs()));
} else // Field data
if (metric instanceof RFieldData) {
// Find the sub metric
if (((RFieldData) metric).getData() != null && ((RFieldData) metric).getData().get(inMatchTitle) != null)
rawData.append(((RFieldData) metric).getData().get(inMatchTitle).get(team.getTabs().get(i).isRedAlliance() ? 0 : 1).toString()).append(ending(i, team.getTabs()));
// Overview stats will only consider modified textfields
if (metric.isModified()) {
/*
* Progressively calculate the min, max, and average values
*/
try {
double value = Double.parseDouble(((RFieldData) metric).getData().get(inMatchTitle).get(team.getTabs().get(i).isRedAlliance() ? 0 : 1).toString());
if (i == 2)
min = value;
if (value < min)
min = value;
if (value > max)
max = value;
average += value / (double) numModified(team.getTabs(), ID);
relevance = average;
} catch (Exception e) {
// eat it
}
}
}
/*
* Now, add the overview statistics to the team if the metric has overview statistics
* available
*/
max = Utils.round(max, 2);
min = Utils.round(min, 2);
average = Utils.round(average, 2);
StringBuilder overview = new StringBuilder();
if (metric instanceof RBoolean)
overview.append("Boolean: ").append(metric.getTitle()).append(" is true in ").append(occurrences).append(" / ").append(team.getTabs().size() - 2).append(" matches");
else if (metric instanceof RCounter)
overview.append("Counter: ").append(metric.getTitle()).append(" Average: ").append(Utils.round(average, 2)).append(" Min: ").append(min).append(" Max: ").append(max);
else if (metric instanceof RCalculation)
overview.append("Calculation: ").append(metric.getTitle()).append(" Average: ").append(Utils.round(average, 2)).append(" Min: ").append(min).append(" Max: ").append(max);
else if (metric instanceof RSlider)
overview.append("Slider: ").append(metric.getTitle()).append(" Average: ").append(Utils.round(average, 2)).append(" Min: ").append(min).append(" Max: ").append(max);
else if (metric instanceof RStopwatch)
overview.append("Stopwatch: ").append(metric.getTitle()).append(" Average: ").append(Utils.round(average, 2)).append(" Min: ").append(min).append(" Max: ").append(max);
else if (metric instanceof RTextfield)
overview.append("Textfield: ").append(metric.getTitle()).append(" Average chars: ").append(Utils.round(average, 2)).append(" Min: ").append(min).append(" Max: ").append(max);
else if (metric instanceof RGallery)
overview.append("Gallery: ").append(metric.getTitle()).append(" Average images: ").append(Utils.round(average, 2)).append(" Min: ").append(min).append(" Max: ").append(max);
else if (metric instanceof RChooser)
overview.append("Chooser: ").append(metric.getTitle());
else if (metric instanceof RCheckbox)
overview.append("Checkbox: ").append(metric.getTitle());
else if (metric instanceof RFieldData) {
overview.append("Field data: ").append(inMatchTitle);
try {
// this will fail if the value isn't a number
if (average != 0 || min != 0 || max != 0)
overview.append("\nAverage: ").append(Utils.round(average, 2)).append(" Min: ").append(min).append(" Max: ").append(max);
} catch (Exception e) {
// eat it
}
}
/*
* Now append the raw data as processed above
*/
team.setFilterTag("\n" + overview.append(rawData).toString());
team.setCustomRelevance(relevance);
// exit the loop, the metric has been fully processed
break;
}
}
} else /*
* The user requested MATCH_WINS
*/
if (method == PROCESS_METHOD.OTHER && ID == PROCESS_METHOD.OTHER_METHOD.MATCH_WINS) {
for (int i = 2; i < team.getTabs().size(); i++) {
if (team.getTabs().get(i).isWon()) {
occurrences++;
relevance++;
rawData.append("W");
} else
rawData.append("L");
rawData.append(ending(i, team.getTabs()));
}
/*
* Setup overview rawData and add raw data
*/
team.setCustomRelevance(relevance);
team.setFilterTag("\n" + String.valueOf(occurrences) + " match wins\n" + rawData.toString());
} else /*
* The user requested IN_MATCH
*/
if (method == PROCESS_METHOD.OTHER && ID == PROCESS_METHOD.OTHER_METHOD.IN_MATCH) {
team.setFilter(TeamsView.SORT_TYPE.NUMERICAL);
for (int i = 2; i < team.getTabs().size(); i++) {
if (team.getTabs().get(i).getTitle().equalsIgnoreCase(inMatchTitle)) {
team.setFilterTag("\n" + rawData.append("In ").append(inMatchTitle).toString());
team.setCustomRelevance(1);
}
}
} else /*
* The user request a reset
*/
if (method == PROCESS_METHOD.OTHER && ID == PROCESS_METHOD.OTHER_METHOD.RESET) {
team.setFilterTag("");
team.setCustomRelevance(0);
}
}
Aggregations