mirror of
https://github.com/Team4388/RidgeScout.git
synced 2026-06-09 08:38:03 -06:00
Add comments to classes and update TODO
This commit is contained in:
@@ -24,6 +24,9 @@ import com.ridgebotics.ridgescout.utility.SettingsManager;
|
||||
import java.util.Objects;
|
||||
import java.util.TimeZone;
|
||||
|
||||
// Entrypoint for the scouting app.
|
||||
// Configures stuff like the nav menu
|
||||
// Also has some extra functions like a better back stack or a way to suppress the back button.
|
||||
public class MainActivity extends AppCompatActivity {
|
||||
|
||||
|
||||
@@ -37,19 +40,21 @@ public class MainActivity extends AppCompatActivity {
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
|
||||
|
||||
// Load shared prefrences
|
||||
SettingsManager.prefs = this.getSharedPreferences(
|
||||
"com.ridgebotics.ridgescout", Context.MODE_PRIVATE);
|
||||
|
||||
// Load default match fields
|
||||
if(!FileEditor.fileExist(Fields.matchFieldsFilename)){
|
||||
Fields.save(Fields.matchFieldsFilename, Fields.default_match_fields);
|
||||
}
|
||||
|
||||
// Load default pit fields
|
||||
if(!FileEditor.fileExist(Fields.pitsFieldsFilename)){
|
||||
Fields.save(Fields.pitsFieldsFilename, Fields.default_pit_fields);
|
||||
}
|
||||
|
||||
|
||||
// get time zone for FTP file transfer
|
||||
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
|
||||
|
||||
AlertManager.init(this);
|
||||
|
||||
@@ -16,6 +16,8 @@ import com.ridgebotics.ridgescout.utility.ByteBuilder;
|
||||
import java.util.ArrayList;
|
||||
import java.util.UUID;
|
||||
|
||||
|
||||
// The mechanism to load, save, and create the fields based off of the raw types from ScoutingDataWriter.java
|
||||
public class Fields {
|
||||
// public static ScoutingVersion sv = new ScoutingVersion();
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ package com.ridgebotics.ridgescout.scoutingData;
|
||||
|
||||
import com.ridgebotics.ridgescout.scoutingData.transfer.TransferType;
|
||||
import com.ridgebotics.ridgescout.types.ScoutingArray;
|
||||
import com.ridgebotics.ridgescout.types.data.DataType;
|
||||
import com.ridgebotics.ridgescout.types.data.RawDataType;
|
||||
import com.ridgebotics.ridgescout.types.data.IntArrType;
|
||||
import com.ridgebotics.ridgescout.types.data.StringType;
|
||||
import com.ridgebotics.ridgescout.types.input.FieldType;
|
||||
@@ -12,17 +12,17 @@ import com.ridgebotics.ridgescout.utility.FileEditor;
|
||||
import com.ridgebotics.ridgescout.utility.BuiltByteParser;
|
||||
import com.ridgebotics.ridgescout.utility.ByteBuilder;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
// Mostly an extension of Fields.java. Saves the raw data from each Field Type.
|
||||
public class ScoutingDataWriter {
|
||||
// private static final int int_type_id = 255;
|
||||
// private static final int string_type_id = 254;
|
||||
|
||||
public static boolean save(int version, String username, String filename, DataType[] data){
|
||||
public static boolean save(int version, String username, String filename, RawDataType[] data){
|
||||
ByteBuilder bb = new ByteBuilder();
|
||||
try {
|
||||
bb.addInt(version);
|
||||
@@ -64,7 +64,7 @@ public class ScoutingDataWriter {
|
||||
|
||||
try {
|
||||
ArrayList<BuiltByteParser.parsedObject> objects = bbp.parse();
|
||||
DataType[] dataTypes = new DataType[objects.size()-2];
|
||||
RawDataType[] rawDataTypes = new RawDataType[objects.size()-2];
|
||||
|
||||
int version = ((int)objects.get(0).get());
|
||||
|
||||
@@ -80,24 +80,24 @@ public class ScoutingDataWriter {
|
||||
for(int i = 0; i < values[version].length; i++){
|
||||
switch (objects.get(i+2).getType()){
|
||||
case 1: // Int
|
||||
dataTypes[i] = IntType.newNull(values[version][i].UUID);
|
||||
dataTypes[i].forceSetValue(objects.get(i+2).get());
|
||||
System.out.println("Loaded INT: " + values[version][i].name + " (" + values[version][i].UUID + ") " + ", ("+ dataTypes[i].get() +")");
|
||||
rawDataTypes[i] = IntType.newNull(values[version][i].UUID);
|
||||
rawDataTypes[i].forceSetValue(objects.get(i+2).get());
|
||||
System.out.println("Loaded INT: " + values[version][i].name + " (" + values[version][i].UUID + ") " + ", ("+ rawDataTypes[i].get() +")");
|
||||
break;
|
||||
case 2: // String
|
||||
dataTypes[i] = StringType.newNull(values[version][i].UUID);
|
||||
dataTypes[i].forceSetValue(objects.get(i+2).get());
|
||||
System.out.println("Loaded STR: " + values[version][i].name + " (" + values[version][i].UUID + ") " + ", ("+ dataTypes[i].get() +")");
|
||||
rawDataTypes[i] = StringType.newNull(values[version][i].UUID);
|
||||
rawDataTypes[i].forceSetValue(objects.get(i+2).get());
|
||||
System.out.println("Loaded STR: " + values[version][i].name + " (" + values[version][i].UUID + ") " + ", ("+ rawDataTypes[i].get() +")");
|
||||
break;
|
||||
case 3: // Int array
|
||||
dataTypes[i] = IntArrType.newNull(values[version][i].UUID);
|
||||
dataTypes[i].forceSetValue(objects.get(i+2).get());
|
||||
System.out.println("Loaded intARR: " + values[version][i].name + " (" + values[version][i].UUID + ") " + ", ("+ Arrays.toString((int[])dataTypes[i].get()) +")");
|
||||
rawDataTypes[i] = IntArrType.newNull(values[version][i].UUID);
|
||||
rawDataTypes[i].forceSetValue(objects.get(i+2).get());
|
||||
System.out.println("Loaded intARR: " + values[version][i].name + " (" + values[version][i].UUID + ") " + ", ("+ Arrays.toString((int[]) rawDataTypes[i].get()) +")");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ScoutingArray msa = new ScoutingArray(version, dataTypes, values, transferValues);
|
||||
ScoutingArray msa = new ScoutingArray(version, rawDataTypes, values, transferValues);
|
||||
msa.update();
|
||||
|
||||
ParsedScoutingDataResult psda = new ParsedScoutingDataResult();
|
||||
|
||||
+1
@@ -1,5 +1,6 @@
|
||||
package com.ridgebotics.ridgescout.scoutingData.transfer;
|
||||
|
||||
// Transfer type if a field was created
|
||||
public class CreateTransferType extends TransferType {
|
||||
public transferValue getType() {return transferValue.CREATE;}
|
||||
public CreateTransferType(String UUID){
|
||||
|
||||
+1
@@ -1,5 +1,6 @@
|
||||
package com.ridgebotics.ridgescout.scoutingData.transfer;
|
||||
|
||||
// Transfer type if a field directly transfers
|
||||
public class DirectTransferType extends TransferType {
|
||||
public transferValue getType() {return transferValue.DIRECT;}
|
||||
public DirectTransferType(String UUID){
|
||||
|
||||
@@ -2,6 +2,10 @@ package com.ridgebotics.ridgescout.scoutingData.transfer;
|
||||
|
||||
import com.ridgebotics.ridgescout.types.input.FieldType;
|
||||
|
||||
|
||||
// The "Transfer Types" system, a component in the loading of scouting data.
|
||||
// Dictates how the
|
||||
// For example, a field can be created in one version, and how the app updates it is by obtaining it's transfer value, in this case being "create".
|
||||
public abstract class TransferType {
|
||||
public enum transferValue {
|
||||
DIRECT,
|
||||
@@ -22,6 +26,7 @@ public abstract class TransferType {
|
||||
return null;
|
||||
}
|
||||
|
||||
//Inputs:
|
||||
public static TransferType[][] get_transfer_values(FieldType[][] values) {
|
||||
TransferType[][] output = new TransferType[values.length][];
|
||||
for(int a = 1; a < values.length; a++){
|
||||
|
||||
@@ -3,19 +3,20 @@ package com.ridgebotics.ridgescout.types;
|
||||
import com.ridgebotics.ridgescout.scoutingData.transfer.CreateTransferType;
|
||||
import com.ridgebotics.ridgescout.scoutingData.transfer.DirectTransferType;
|
||||
import com.ridgebotics.ridgescout.scoutingData.transfer.TransferType;
|
||||
import com.ridgebotics.ridgescout.types.data.DataType;
|
||||
import com.ridgebotics.ridgescout.types.data.RawDataType;
|
||||
import com.ridgebotics.ridgescout.types.data.IntType;
|
||||
import com.ridgebotics.ridgescout.types.data.StringType;
|
||||
import com.ridgebotics.ridgescout.types.input.FieldType;
|
||||
|
||||
// A wrapper class for the stuff going on in Fields.java and ScoutingDataWriter.java.
|
||||
public class ScoutingArray {
|
||||
public int version;
|
||||
public DataType[] array;
|
||||
public RawDataType[] array;
|
||||
public FieldType[][] values;
|
||||
public int latest_version_num;
|
||||
public TransferType[][] transfer_values;
|
||||
|
||||
public ScoutingArray(int version, DataType[] array, FieldType[][] values, TransferType[][] transfer_values){
|
||||
public ScoutingArray(int version, RawDataType[] array, FieldType[][] values, TransferType[][] transfer_values){
|
||||
this.version = version;
|
||||
this.array = array;
|
||||
this.values = values;
|
||||
@@ -23,13 +24,13 @@ public class ScoutingArray {
|
||||
this.transfer_values = transfer_values;
|
||||
}
|
||||
|
||||
public ScoutingArray(int version, DataType[] array, FieldType[][] values){
|
||||
public ScoutingArray(int version, RawDataType[] array, FieldType[][] values){
|
||||
this(version, array, values, TransferType.get_transfer_values(values));
|
||||
}
|
||||
|
||||
public void update(){
|
||||
while(version<latest_version_num){
|
||||
DataType[] new_values = new DataType[transfer_values[version].length];
|
||||
RawDataType[] new_values = new RawDataType[transfer_values[version].length];
|
||||
for(int i = 0; i < transfer_values[version].length; i++){
|
||||
TransferType tv = transfer_values[version][i];
|
||||
switch (tv.getType()){
|
||||
@@ -56,8 +57,8 @@ public class ScoutingArray {
|
||||
return null;
|
||||
}
|
||||
|
||||
private DataType get_data_type_by_UUID(String UUID){
|
||||
for(DataType dt : array){
|
||||
private RawDataType get_data_type_by_UUID(String UUID){
|
||||
for(RawDataType dt : array){
|
||||
if(dt.getUUID().equals(UUID)){
|
||||
return dt;
|
||||
}
|
||||
@@ -65,7 +66,7 @@ public class ScoutingArray {
|
||||
return null;
|
||||
}
|
||||
|
||||
private DataType direct_transfer(DirectTransferType tv){
|
||||
private RawDataType direct_transfer(DirectTransferType tv){
|
||||
return get_data_type_by_UUID(tv.UUID);
|
||||
}
|
||||
|
||||
@@ -75,7 +76,7 @@ public class ScoutingArray {
|
||||
// return dt;
|
||||
// }
|
||||
|
||||
private DataType create_transfer(CreateTransferType tv){
|
||||
private RawDataType create_transfer(CreateTransferType tv){
|
||||
FieldType it = get_input_type_by_UUID(version+1, tv.UUID);
|
||||
switch (it.getValueType()){
|
||||
case NUM:
|
||||
|
||||
@@ -9,6 +9,7 @@ import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Objects;
|
||||
|
||||
// Basically just holds a byte array and a filename, and then us just encoded.
|
||||
public class ScoutingFile {
|
||||
public static final int typecode = 255;
|
||||
public String filename;
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package com.ridgebotics.ridgescout.types.data;
|
||||
|
||||
public class IntArrType extends DataType {
|
||||
|
||||
// Int array raw data type
|
||||
public class IntArrType extends RawDataType {
|
||||
public static final int[] nullval = new int[]{255, 255};
|
||||
// public static final int unselectedval = 1;
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.ridgebotics.ridgescout.types.data;
|
||||
|
||||
public class IntType extends DataType {
|
||||
// Number raw data type
|
||||
public class IntType extends RawDataType {
|
||||
public static final int nullval = 255;
|
||||
// public static final int unselectedval = 1;
|
||||
|
||||
|
||||
+3
-2
@@ -1,6 +1,7 @@
|
||||
package com.ridgebotics.ridgescout.types.data;
|
||||
|
||||
public abstract class DataType {
|
||||
// Abstract class for raw data types for use in fields.
|
||||
public abstract class RawDataType {
|
||||
public enum valueTypes {
|
||||
NUM,
|
||||
NUMARR,
|
||||
@@ -26,7 +27,7 @@ public abstract class DataType {
|
||||
|
||||
public String getUUID() {return UUID;}
|
||||
|
||||
public DataType(String UUID){
|
||||
public RawDataType(String UUID){
|
||||
this.UUID = UUID;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.ridgebotics.ridgescout.types.data;
|
||||
|
||||
public class StringType extends DataType {
|
||||
// String raw data type
|
||||
public class StringType extends RawDataType {
|
||||
public static final String nullval = "null";
|
||||
// public static final String unselectedval = "■";
|
||||
|
||||
|
||||
@@ -12,6 +12,8 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.IntStream;
|
||||
|
||||
// Class to contain data for an entire event.
|
||||
// Easily encoded and decoded to binary format.
|
||||
public class frcEvent {
|
||||
|
||||
public static final int typecode = 254;
|
||||
|
||||
@@ -9,6 +9,8 @@ import com.ridgebotics.ridgescout.utility.ByteBuilder;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
|
||||
// Class to contain data for the six teams numbers in a single match
|
||||
// Easily encoded and decoded to binary format.
|
||||
public class frcMatch {
|
||||
public static final int typecode = 253;
|
||||
public frcMatch(){}
|
||||
|
||||
@@ -16,6 +16,8 @@ import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
// Class to contain data for a team, in an event.
|
||||
// Easily encoded and decoded to binary format.
|
||||
public class frcTeam {
|
||||
public static final int typecode = 252;
|
||||
private static final int[] DEFAULT_COLOR_ARR = new int[]{64,64,64};
|
||||
|
||||
@@ -23,7 +23,7 @@ import com.github.mikephil.charting.data.LineDataSet;
|
||||
import com.github.mikephil.charting.data.PieData;
|
||||
import com.github.mikephil.charting.data.PieDataSet;
|
||||
import com.github.mikephil.charting.data.PieEntry;
|
||||
import com.ridgebotics.ridgescout.types.data.DataType;
|
||||
import com.ridgebotics.ridgescout.types.data.RawDataType;
|
||||
import com.ridgebotics.ridgescout.types.data.IntType;
|
||||
import com.ridgebotics.ridgescout.utility.BuiltByteParser;
|
||||
import com.ridgebotics.ridgescout.utility.ByteBuilder;
|
||||
@@ -36,7 +36,7 @@ import java.util.function.Function;
|
||||
public class CheckboxType extends FieldType {
|
||||
public int get_byte_id() {return checkboxType;}
|
||||
public inputTypes getInputType(){return inputTypes.CHECKBOX;}
|
||||
public DataType.valueTypes getValueType(){return DataType.valueTypes.NUM;}
|
||||
public RawDataType.valueTypes getValueType(){return RawDataType.valueTypes.NUM;}
|
||||
public Object get_fallback_value(){return 0;}
|
||||
public CheckboxType(){};
|
||||
public String get_type_name(){return "Checkbox";}
|
||||
@@ -58,7 +58,7 @@ public class CheckboxType extends FieldType {
|
||||
|
||||
public CheckBox checkBox = null;
|
||||
|
||||
public View createView(Context context, Function<DataType, Integer> onUpdate){
|
||||
public View createView(Context context, Function<RawDataType, Integer> onUpdate){
|
||||
checkBox = new CheckBox(context);
|
||||
checkBox.setTextAppearance(com.google.android.material.R.style.TextAppearance_MaterialComponents_Headline6);
|
||||
checkBox.setText(name);
|
||||
@@ -85,7 +85,7 @@ public class CheckboxType extends FieldType {
|
||||
isBlank = true;
|
||||
checkBox.setVisibility(View.GONE);
|
||||
}
|
||||
public DataType getViewValue(){
|
||||
public RawDataType getViewValue(){
|
||||
if(checkBox == null) return null;
|
||||
if(checkBox.getVisibility() == View.GONE) return new IntType(name, IntType.nullval);
|
||||
return new IntType(name, checkBox.isChecked() ? 1 : 0);
|
||||
@@ -96,7 +96,7 @@ public class CheckboxType extends FieldType {
|
||||
|
||||
|
||||
|
||||
public void add_individual_view(LinearLayout parent, DataType data){
|
||||
public void add_individual_view(LinearLayout parent, RawDataType data){
|
||||
if(data.isNull()) return;
|
||||
CheckBox cb = new CheckBox(parent.getContext());
|
||||
cb.setTextAppearance(com.google.android.material.R.style.TextAppearance_MaterialComponents_Headline6);
|
||||
@@ -107,7 +107,7 @@ public class CheckboxType extends FieldType {
|
||||
}
|
||||
|
||||
|
||||
public void add_compiled_view(LinearLayout parent, DataType[] data){
|
||||
public void add_compiled_view(LinearLayout parent, RawDataType[] data){
|
||||
PieChart chart = new PieChart(parent.getContext());
|
||||
FrameLayout.LayoutParams layout = new FrameLayout.LayoutParams(
|
||||
ViewGroup.LayoutParams.MATCH_PARENT,
|
||||
@@ -147,7 +147,7 @@ public class CheckboxType extends FieldType {
|
||||
|
||||
|
||||
|
||||
public void add_history_view(LinearLayout parent, DataType[] data){
|
||||
public void add_history_view(LinearLayout parent, RawDataType[] data){
|
||||
LineChart chart = new LineChart(parent.getContext());
|
||||
FrameLayout.LayoutParams layout = new FrameLayout.LayoutParams(
|
||||
ViewGroup.LayoutParams.MATCH_PARENT,
|
||||
@@ -207,11 +207,11 @@ public class CheckboxType extends FieldType {
|
||||
parent.addView(chart);
|
||||
}
|
||||
|
||||
public void addDataToTable(TableLayout parent, Map<Integer, List<DataType>> data){
|
||||
public void addDataToTable(TableLayout parent, Map<Integer, List<RawDataType>> data){
|
||||
|
||||
}
|
||||
|
||||
public String toString(DataType data){
|
||||
public String toString(RawDataType data){
|
||||
return (int) data.get() == 1 ? "true" : "false";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,9 +15,9 @@ import android.widget.LinearLayout;
|
||||
import android.widget.TableLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.ridgebotics.ridgescout.types.data.DataType;
|
||||
import com.ridgebotics.ridgescout.types.data.RawDataType;
|
||||
import com.ridgebotics.ridgescout.types.data.IntType;
|
||||
import com.ridgebotics.ridgescout.ui.CustomSpinnerView;
|
||||
import com.ridgebotics.ridgescout.ui.views.CustomSpinnerView;
|
||||
import com.ridgebotics.ridgescout.utility.BuiltByteParser;
|
||||
import com.ridgebotics.ridgescout.utility.ByteBuilder;
|
||||
import com.github.mikephil.charting.charts.LineChart;
|
||||
@@ -40,7 +40,7 @@ public class DropdownType extends FieldType {
|
||||
public String[] text_options;
|
||||
public int get_byte_id() {return dropdownType;}
|
||||
public inputTypes getInputType(){return inputTypes.DROPDOWN;}
|
||||
public DataType.valueTypes getValueType(){return DataType.valueTypes.NUM;}
|
||||
public RawDataType.valueTypes getValueType(){return RawDataType.valueTypes.NUM;}
|
||||
public Object get_fallback_value(){return 0;}
|
||||
public DropdownType(){};
|
||||
public String get_type_name(){return "Dropdown";}
|
||||
@@ -62,7 +62,7 @@ public class DropdownType extends FieldType {
|
||||
|
||||
public CustomSpinnerView dropdown = null;
|
||||
|
||||
public View createView(Context context, Function<DataType, Integer> onUpdate){
|
||||
public View createView(Context context, Function<RawDataType, Integer> onUpdate){
|
||||
dropdown = new CustomSpinnerView(context);
|
||||
|
||||
ArrayList<String> iconSpinnerItems = new ArrayList<>(Arrays.asList(text_options));
|
||||
@@ -92,7 +92,7 @@ public class DropdownType extends FieldType {
|
||||
isBlank = true;
|
||||
dropdown.setVisibility(View.GONE);
|
||||
}
|
||||
public DataType getViewValue(){
|
||||
public RawDataType getViewValue(){
|
||||
if(dropdown == null) return null;
|
||||
if(dropdown.getVisibility() == View.GONE) return new IntType(name, IntType.nullval);
|
||||
return new IntType(name, dropdown.getIndex());
|
||||
@@ -103,7 +103,7 @@ public class DropdownType extends FieldType {
|
||||
|
||||
|
||||
|
||||
public void add_individual_view(LinearLayout parent, DataType data){
|
||||
public void add_individual_view(LinearLayout parent, RawDataType data){
|
||||
if(data.isNull()) return;
|
||||
TextView tv = new TextView(parent.getContext());
|
||||
tv.setLayoutParams(new FrameLayout.LayoutParams(
|
||||
@@ -139,7 +139,7 @@ public class DropdownType extends FieldType {
|
||||
return colors;
|
||||
}
|
||||
|
||||
public void add_compiled_view(LinearLayout parent, DataType[] data){
|
||||
public void add_compiled_view(LinearLayout parent, RawDataType[] data){
|
||||
PieChart chart = new PieChart(parent.getContext());
|
||||
FrameLayout.LayoutParams layout = new FrameLayout.LayoutParams(
|
||||
ViewGroup.LayoutParams.MATCH_PARENT,
|
||||
@@ -173,7 +173,7 @@ public class DropdownType extends FieldType {
|
||||
|
||||
|
||||
|
||||
public void add_history_view(LinearLayout parent, DataType[] data){
|
||||
public void add_history_view(LinearLayout parent, RawDataType[] data){
|
||||
LineChart chart = new LineChart(parent.getContext());
|
||||
FrameLayout.LayoutParams layout = new FrameLayout.LayoutParams(
|
||||
ViewGroup.LayoutParams.MATCH_PARENT,
|
||||
@@ -239,11 +239,11 @@ public class DropdownType extends FieldType {
|
||||
parent.addView(chart);
|
||||
}
|
||||
|
||||
public void addDataToTable(TableLayout parent, Map<Integer, List<DataType>> data){
|
||||
public void addDataToTable(TableLayout parent, Map<Integer, List<RawDataType>> data){
|
||||
|
||||
}
|
||||
|
||||
public String toString(DataType data){
|
||||
public String toString(RawDataType data){
|
||||
return text_options[(int) data.get()];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ import android.view.View;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TableLayout;
|
||||
|
||||
import com.ridgebotics.ridgescout.types.data.DataType;
|
||||
import com.ridgebotics.ridgescout.types.data.RawDataType;
|
||||
import com.ridgebotics.ridgescout.utility.BuiltByteParser;
|
||||
import com.ridgebotics.ridgescout.utility.ByteBuilder;
|
||||
|
||||
@@ -14,7 +14,9 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
|
||||
// Abstract class for fields.
|
||||
public abstract class FieldType {
|
||||
// Define what the IDS are for each type
|
||||
public static final int slider_type_id = 255;
|
||||
public static final int dropdownType = 254;
|
||||
public static final int notesType = 253;
|
||||
@@ -37,7 +39,7 @@ public abstract class FieldType {
|
||||
public String description;
|
||||
public Object default_value;
|
||||
public abstract inputTypes getInputType();
|
||||
public abstract DataType.valueTypes getValueType();
|
||||
public abstract RawDataType.valueTypes getValueType();
|
||||
public abstract Object get_fallback_value();
|
||||
public abstract int get_byte_id();
|
||||
public FieldType(){}
|
||||
@@ -80,24 +82,24 @@ public abstract class FieldType {
|
||||
// public abstract dataType[] getConfig();
|
||||
// public abstract void setConfig(dataType[] config);
|
||||
|
||||
public abstract View createView(Context context, Function<DataType, Integer> onUpdate);
|
||||
public abstract View createView(Context context, Function<RawDataType, Integer> onUpdate);
|
||||
public boolean isBlank = false;
|
||||
public abstract void nullify();
|
||||
public void setViewValue(DataType type){setViewValue(type.get());}
|
||||
public void setViewValue(RawDataType type){setViewValue(type.get());}
|
||||
public abstract void setViewValue(Object value);
|
||||
public abstract DataType getViewValue();
|
||||
public abstract RawDataType getViewValue();
|
||||
|
||||
|
||||
|
||||
public abstract void add_individual_view(LinearLayout parent, DataType data);
|
||||
public abstract void add_compiled_view(LinearLayout parent, DataType[] data);
|
||||
public abstract void add_history_view(LinearLayout parent, DataType[] data);
|
||||
public abstract void add_individual_view(LinearLayout parent, RawDataType data);
|
||||
public abstract void add_compiled_view(LinearLayout parent, RawDataType[] data);
|
||||
public abstract void add_history_view(LinearLayout parent, RawDataType[] data);
|
||||
|
||||
|
||||
public abstract void addDataToTable(TableLayout parent, Map<Integer, List<DataType>> data);
|
||||
public abstract void addDataToTable(TableLayout parent, Map<Integer, List<RawDataType>> data);
|
||||
|
||||
|
||||
public abstract String toString(DataType data);
|
||||
public abstract String toString(RawDataType data);
|
||||
|
||||
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.ridgebotics.ridgescout.types.input;
|
||||
|
||||
import static com.ridgebotics.ridgescout.utility.Colors.background_color;
|
||||
import static com.ridgebotics.ridgescout.utility.Colors.chart_background;
|
||||
import static com.ridgebotics.ridgescout.utility.Colors.chart_text;
|
||||
import static com.ridgebotics.ridgescout.utility.Colors.dropdown_value_text_1;
|
||||
@@ -8,7 +7,6 @@ import static com.ridgebotics.ridgescout.utility.Colors.dropdown_value_text_2;
|
||||
import static com.ridgebotics.ridgescout.utility.Colors.fieldpos_data;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.FrameLayout;
|
||||
@@ -20,10 +18,10 @@ import com.github.mikephil.charting.components.Legend;
|
||||
import com.github.mikephil.charting.data.Entry;
|
||||
import com.github.mikephil.charting.data.LineData;
|
||||
import com.github.mikephil.charting.data.LineDataSet;
|
||||
import com.ridgebotics.ridgescout.types.data.DataType;
|
||||
import com.ridgebotics.ridgescout.types.data.RawDataType;
|
||||
import com.ridgebotics.ridgescout.types.data.IntArrType;
|
||||
import com.ridgebotics.ridgescout.ui.scouting.FieldPosView;
|
||||
import com.ridgebotics.ridgescout.ui.scouting.MultiFieldPosView;
|
||||
import com.ridgebotics.ridgescout.ui.views.FieldPosView;
|
||||
import com.ridgebotics.ridgescout.ui.views.MultiFieldPosView;
|
||||
import com.ridgebotics.ridgescout.utility.BuiltByteParser;
|
||||
import com.ridgebotics.ridgescout.utility.ByteBuilder;
|
||||
|
||||
@@ -35,7 +33,7 @@ import java.util.function.Function;
|
||||
public class FieldposType extends FieldType {
|
||||
public int get_byte_id() {return fieldposType;}
|
||||
public inputTypes getInputType(){return inputTypes.FIELDPOS;}
|
||||
public DataType.valueTypes getValueType(){return DataType.valueTypes.NUM;}
|
||||
public RawDataType.valueTypes getValueType(){return RawDataType.valueTypes.NUM;}
|
||||
public Object get_fallback_value(){return 0;}
|
||||
public FieldposType(){}
|
||||
public String get_type_name(){return "Field Pos";}
|
||||
@@ -62,7 +60,7 @@ public class FieldposType extends FieldType {
|
||||
|
||||
public FieldPosView field = null;
|
||||
|
||||
public View createView(Context context, Function<DataType, Integer> onUpdate){
|
||||
public View createView(Context context, Function<RawDataType, Integer> onUpdate){
|
||||
field = new FieldPosView(context, pos -> {
|
||||
onUpdate.apply(new IntArrType(name, pos));
|
||||
});
|
||||
@@ -90,7 +88,7 @@ public class FieldposType extends FieldType {
|
||||
isBlank = true;
|
||||
field.setVisibility(View.GONE);
|
||||
}
|
||||
public DataType getViewValue(){
|
||||
public RawDataType getViewValue(){
|
||||
if(field == null) return null;
|
||||
if(field.getVisibility() == View.GONE) return IntArrType.newNull(name);
|
||||
return new IntArrType(name, field.getPos());
|
||||
@@ -98,7 +96,7 @@ public class FieldposType extends FieldType {
|
||||
|
||||
|
||||
|
||||
public void add_individual_view(LinearLayout parent, DataType data){
|
||||
public void add_individual_view(LinearLayout parent, RawDataType data){
|
||||
if(data.isNull()) return;
|
||||
|
||||
FieldPosView fp = new FieldPosView(parent.getContext());
|
||||
@@ -141,7 +139,7 @@ public class FieldposType extends FieldType {
|
||||
return entries;
|
||||
}
|
||||
|
||||
private static int findMin(DataType[] data){
|
||||
private static int findMin(RawDataType[] data){
|
||||
int min = (int)data[0].get();
|
||||
for(int i = 1; i < data.length; i++)
|
||||
if((int)data[i].get() < min)
|
||||
@@ -149,7 +147,7 @@ public class FieldposType extends FieldType {
|
||||
return min;
|
||||
}
|
||||
|
||||
private static int findMax(DataType[] data){
|
||||
private static int findMax(RawDataType[] data){
|
||||
int max = (int)data[0].get();
|
||||
for(int i = 1; i < data.length; i++)
|
||||
if((int)data[i].get() > max)
|
||||
@@ -157,7 +155,7 @@ public class FieldposType extends FieldType {
|
||||
return max;
|
||||
}
|
||||
|
||||
public void add_compiled_view(LinearLayout parent, DataType[] data){
|
||||
public void add_compiled_view(LinearLayout parent, RawDataType[] data){
|
||||
MultiFieldPosView mfp = new MultiFieldPosView(parent.getContext());
|
||||
for(int i = 0; i < data.length; i++){
|
||||
if(data[i].isNull()) continue;
|
||||
@@ -166,7 +164,7 @@ public class FieldposType extends FieldType {
|
||||
parent.addView(mfp);
|
||||
}
|
||||
|
||||
public void add_history_view(LinearLayout parent, DataType[] data){
|
||||
public void add_history_view(LinearLayout parent, RawDataType[] data){
|
||||
LineChart chart = new LineChart(parent.getContext());
|
||||
FrameLayout.LayoutParams layout = new FrameLayout.LayoutParams(
|
||||
ViewGroup.LayoutParams.MATCH_PARENT,
|
||||
@@ -223,11 +221,11 @@ public class FieldposType extends FieldType {
|
||||
parent.addView(chart);
|
||||
}
|
||||
|
||||
public void addDataToTable(TableLayout parent, Map<Integer, List<DataType>> data){
|
||||
public void addDataToTable(TableLayout parent, Map<Integer, List<RawDataType>> data){
|
||||
|
||||
}
|
||||
|
||||
public String toString(DataType data){
|
||||
public String toString(RawDataType data){
|
||||
int[] intarr = (int[]) data.get();
|
||||
return "[" + intarr[0] + "," + intarr[1] + "]";
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@ package com.ridgebotics.ridgescout.types.input;
|
||||
|
||||
import static android.text.InputType.TYPE_CLASS_NUMBER;
|
||||
|
||||
import static com.ridgebotics.ridgescout.utility.Colors.background_color;
|
||||
import static com.ridgebotics.ridgescout.utility.Colors.chart_background;
|
||||
import static com.ridgebotics.ridgescout.utility.Colors.chart_text;
|
||||
import static com.ridgebotics.ridgescout.utility.Colors.dropdown_value_text_1;
|
||||
@@ -10,7 +9,6 @@ import static com.ridgebotics.ridgescout.utility.Colors.dropdown_value_text_2;
|
||||
import static com.ridgebotics.ridgescout.utility.Colors.number_data;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.text.Editable;
|
||||
import android.text.TextWatcher;
|
||||
import android.view.Gravity;
|
||||
@@ -27,7 +25,7 @@ import com.github.mikephil.charting.components.Legend;
|
||||
import com.github.mikephil.charting.data.Entry;
|
||||
import com.github.mikephil.charting.data.LineData;
|
||||
import com.github.mikephil.charting.data.LineDataSet;
|
||||
import com.ridgebotics.ridgescout.types.data.DataType;
|
||||
import com.ridgebotics.ridgescout.types.data.RawDataType;
|
||||
import com.ridgebotics.ridgescout.types.data.IntType;
|
||||
import com.ridgebotics.ridgescout.utility.BuiltByteParser;
|
||||
import com.ridgebotics.ridgescout.utility.ByteBuilder;
|
||||
@@ -40,7 +38,7 @@ import java.util.function.Function;
|
||||
public class NumberType extends FieldType {
|
||||
public int get_byte_id() {return numberType;}
|
||||
public inputTypes getInputType(){return inputTypes.NUMBER;}
|
||||
public DataType.valueTypes getValueType(){return DataType.valueTypes.NUM;}
|
||||
public RawDataType.valueTypes getValueType(){return RawDataType.valueTypes.NUM;}
|
||||
public Object get_fallback_value(){return 0;}
|
||||
public NumberType(){}
|
||||
public String get_type_name(){return "Number";}
|
||||
@@ -66,7 +64,7 @@ public class NumberType extends FieldType {
|
||||
|
||||
public EditText num = null;
|
||||
|
||||
public View createView(Context context, Function<DataType, Integer> onUpdate){
|
||||
public View createView(Context context, Function<RawDataType, Integer> onUpdate){
|
||||
num = new EditText(context);
|
||||
num.setInputType(TYPE_CLASS_NUMBER);
|
||||
num.addTextChangedListener(new TextWatcher() {
|
||||
@@ -97,7 +95,7 @@ public class NumberType extends FieldType {
|
||||
isBlank = true;
|
||||
num.setVisibility(View.GONE);
|
||||
}
|
||||
public DataType getViewValue(){
|
||||
public RawDataType getViewValue(){
|
||||
if(num == null) return null;
|
||||
if(num.getVisibility() == View.GONE) return IntType.newNull(name);
|
||||
return new IntType(name, safeToInt(num.getText().toString()));
|
||||
@@ -118,7 +116,7 @@ public class NumberType extends FieldType {
|
||||
|
||||
|
||||
|
||||
public void add_individual_view(LinearLayout parent, DataType data){
|
||||
public void add_individual_view(LinearLayout parent, RawDataType data){
|
||||
if(data.isNull()) return;
|
||||
|
||||
TextView tv = new TextView(parent.getContext());
|
||||
@@ -165,7 +163,7 @@ public class NumberType extends FieldType {
|
||||
return entries;
|
||||
}
|
||||
|
||||
private static int findMin(DataType[] data){
|
||||
private static int findMin(RawDataType[] data){
|
||||
int min = (int)data[0].get();
|
||||
for(int i = 1; i < data.length; i++)
|
||||
if((int)data[i].get() < min)
|
||||
@@ -173,7 +171,7 @@ public class NumberType extends FieldType {
|
||||
return min;
|
||||
}
|
||||
|
||||
private static int findMax(DataType[] data){
|
||||
private static int findMax(RawDataType[] data){
|
||||
int max = (int)data[0].get();
|
||||
for(int i = 1; i < data.length; i++)
|
||||
if((int)data[i].get() > max)
|
||||
@@ -181,7 +179,7 @@ public class NumberType extends FieldType {
|
||||
return max;
|
||||
}
|
||||
|
||||
public void add_compiled_view(LinearLayout parent, DataType[] data){
|
||||
public void add_compiled_view(LinearLayout parent, RawDataType[] data){
|
||||
LineChart chart = new LineChart(parent.getContext());
|
||||
FrameLayout.LayoutParams layout = new FrameLayout.LayoutParams(
|
||||
ViewGroup.LayoutParams.MATCH_PARENT,
|
||||
@@ -260,7 +258,7 @@ public class NumberType extends FieldType {
|
||||
|
||||
|
||||
|
||||
public void add_history_view(LinearLayout parent, DataType[] data){
|
||||
public void add_history_view(LinearLayout parent, RawDataType[] data){
|
||||
LineChart chart = new LineChart(parent.getContext());
|
||||
FrameLayout.LayoutParams layout = new FrameLayout.LayoutParams(
|
||||
ViewGroup.LayoutParams.MATCH_PARENT,
|
||||
@@ -318,11 +316,11 @@ public class NumberType extends FieldType {
|
||||
parent.addView(chart);
|
||||
}
|
||||
|
||||
public void addDataToTable(TableLayout parent, Map<Integer, List<DataType>> data){
|
||||
public void addDataToTable(TableLayout parent, Map<Integer, List<RawDataType>> data){
|
||||
|
||||
}
|
||||
|
||||
public String toString(DataType data){
|
||||
public String toString(RawDataType data){
|
||||
return String.valueOf((int) data.get());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,6 @@ import static com.ridgebotics.ridgescout.utility.Colors.dropdown_value_text_2;
|
||||
import static com.ridgebotics.ridgescout.utility.Colors.slider_data;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.FrameLayout;
|
||||
@@ -16,7 +15,7 @@ import android.widget.TableLayout;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.ridgebotics.ridgescout.types.data.DataType;
|
||||
import com.ridgebotics.ridgescout.types.data.RawDataType;
|
||||
import com.ridgebotics.ridgescout.types.data.IntType;
|
||||
import com.ridgebotics.ridgescout.utility.AlertManager;
|
||||
import com.ridgebotics.ridgescout.utility.BuiltByteParser;
|
||||
@@ -39,7 +38,7 @@ public class SliderType extends FieldType {
|
||||
public int max;
|
||||
public int get_byte_id() {return slider_type_id;}
|
||||
public inputTypes getInputType(){return inputTypes.SLIDER;}
|
||||
public DataType.valueTypes getValueType(){return DataType.valueTypes.NUM;}
|
||||
public RawDataType.valueTypes getValueType(){return RawDataType.valueTypes.NUM;}
|
||||
public Object get_fallback_value(){return 0;}
|
||||
public SliderType(){};
|
||||
public String get_type_name(){return "Slider";}
|
||||
@@ -69,7 +68,7 @@ public class SliderType extends FieldType {
|
||||
|
||||
public Slider slider = null;
|
||||
|
||||
public View createView(Context context, Function<DataType, Integer> onUpdate){
|
||||
public View createView(Context context, Function<RawDataType, Integer> onUpdate){
|
||||
slider = new Slider(context);
|
||||
setViewValue(default_value);
|
||||
slider.setStepSize((float) 1 / (max-min));
|
||||
@@ -104,7 +103,7 @@ public class SliderType extends FieldType {
|
||||
|
||||
slider.setVisibility(View.VISIBLE);
|
||||
}
|
||||
public DataType getViewValue(){
|
||||
public RawDataType getViewValue(){
|
||||
if(slider == null) return null;
|
||||
if(slider.getVisibility() == View.GONE) return IntType.newNull(name);
|
||||
return new IntType(name, min + (int) (slider.getValue() * (max-min)));
|
||||
@@ -119,7 +118,7 @@ public class SliderType extends FieldType {
|
||||
|
||||
|
||||
|
||||
public void add_individual_view(LinearLayout parent, DataType data){
|
||||
public void add_individual_view(LinearLayout parent, RawDataType data){
|
||||
if(data.isNull()) return;
|
||||
Slider slider = new Slider(parent.getContext());
|
||||
|
||||
@@ -173,7 +172,7 @@ public class SliderType extends FieldType {
|
||||
return entries;
|
||||
}
|
||||
|
||||
public void add_compiled_view(LinearLayout parent, DataType[] data){
|
||||
public void add_compiled_view(LinearLayout parent, RawDataType[] data){
|
||||
LineChart chart = new LineChart(parent.getContext());
|
||||
FrameLayout.LayoutParams layout = new FrameLayout.LayoutParams(
|
||||
ViewGroup.LayoutParams.MATCH_PARENT,
|
||||
@@ -249,7 +248,7 @@ public class SliderType extends FieldType {
|
||||
|
||||
|
||||
|
||||
public void add_history_view(LinearLayout parent, DataType[] data){
|
||||
public void add_history_view(LinearLayout parent, RawDataType[] data){
|
||||
LineChart chart = new LineChart(parent.getContext());
|
||||
FrameLayout.LayoutParams layout = new FrameLayout.LayoutParams(
|
||||
ViewGroup.LayoutParams.MATCH_PARENT,
|
||||
@@ -304,11 +303,11 @@ public class SliderType extends FieldType {
|
||||
parent.addView(chart);
|
||||
}
|
||||
|
||||
public void addDataToTable(TableLayout parent, Map<Integer, List<DataType>> data){
|
||||
public void addDataToTable(TableLayout parent, Map<Integer, List<RawDataType>> data){
|
||||
|
||||
}
|
||||
|
||||
public String toString(DataType data){
|
||||
public String toString(RawDataType data){
|
||||
return String.valueOf((int) data.get());
|
||||
}
|
||||
}
|
||||
@@ -7,7 +7,6 @@ import static com.ridgebotics.ridgescout.utility.Colors.dropdown_value_text_2;
|
||||
import static com.ridgebotics.ridgescout.utility.Colors.tally_data;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
@@ -17,12 +16,12 @@ import android.widget.TableLayout;
|
||||
import android.widget.TableRow;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.ridgebotics.ridgescout.types.data.DataType;
|
||||
import com.ridgebotics.ridgescout.types.data.RawDataType;
|
||||
import com.ridgebotics.ridgescout.types.data.IntType;
|
||||
import com.ridgebotics.ridgescout.ui.CandlestickHeader;
|
||||
import com.ridgebotics.ridgescout.ui.CandlestickView;
|
||||
import com.ridgebotics.ridgescout.ui.views.CandlestickHeader;
|
||||
import com.ridgebotics.ridgescout.ui.views.CandlestickView;
|
||||
import com.ridgebotics.ridgescout.ui.data.DataProcessing;
|
||||
import com.ridgebotics.ridgescout.ui.scouting.TallyCounterView;
|
||||
import com.ridgebotics.ridgescout.ui.views.TallyCounterView;
|
||||
import com.ridgebotics.ridgescout.utility.BuiltByteParser;
|
||||
import com.ridgebotics.ridgescout.utility.ByteBuilder;
|
||||
import com.github.mikephil.charting.charts.LineChart;
|
||||
@@ -40,7 +39,7 @@ import java.util.function.Function;
|
||||
public class TallyType extends FieldType {
|
||||
public int get_byte_id() {return tallyType;}
|
||||
public inputTypes getInputType(){return inputTypes.TALLY;}
|
||||
public DataType.valueTypes getValueType(){return DataType.valueTypes.NUM;}
|
||||
public RawDataType.valueTypes getValueType(){return RawDataType.valueTypes.NUM;}
|
||||
public Object get_fallback_value(){return 0;}
|
||||
public TallyType(){}
|
||||
public String get_type_name(){return "Tally";}
|
||||
@@ -66,7 +65,7 @@ public class TallyType extends FieldType {
|
||||
|
||||
public TallyCounterView tally = null;
|
||||
|
||||
public View createView(Context context, Function<DataType, Integer> onUpdate){
|
||||
public View createView(Context context, Function<RawDataType, Integer> onUpdate){
|
||||
tally = new TallyCounterView(context);
|
||||
tally.setOnCountChangedListener(n -> onUpdate.apply(getViewValue()));
|
||||
|
||||
@@ -91,7 +90,7 @@ public class TallyType extends FieldType {
|
||||
isBlank = true;
|
||||
tally.setVisibility(View.GONE);
|
||||
}
|
||||
public DataType getViewValue(){
|
||||
public RawDataType getViewValue(){
|
||||
if(tally == null) return null;
|
||||
if(tally.getVisibility() == View.GONE) return IntType.newNull(name);
|
||||
return new IntType(name, tally.getValue());
|
||||
@@ -102,7 +101,7 @@ public class TallyType extends FieldType {
|
||||
|
||||
|
||||
|
||||
public void add_individual_view(LinearLayout parent, DataType data){
|
||||
public void add_individual_view(LinearLayout parent, RawDataType data){
|
||||
if(data.isNull()) return;
|
||||
|
||||
TextView tv = new TextView(parent.getContext());
|
||||
@@ -149,7 +148,7 @@ public class TallyType extends FieldType {
|
||||
return entries;
|
||||
}
|
||||
|
||||
private static int findMin(DataType[] data){
|
||||
private static int findMin(RawDataType[] data){
|
||||
int min = (int)data[0].get();
|
||||
for(int i = 1; i < data.length; i++)
|
||||
if((int)data[i].get() < min)
|
||||
@@ -157,7 +156,7 @@ public class TallyType extends FieldType {
|
||||
return min;
|
||||
}
|
||||
|
||||
private static int findMax(DataType[] data){
|
||||
private static int findMax(RawDataType[] data){
|
||||
int max = (int)data[0].get();
|
||||
for(int i = 1; i < data.length; i++)
|
||||
if((int)data[i].get() > max)
|
||||
@@ -165,7 +164,7 @@ public class TallyType extends FieldType {
|
||||
return max;
|
||||
}
|
||||
|
||||
public void add_compiled_view(LinearLayout parent, DataType[] data){
|
||||
public void add_compiled_view(LinearLayout parent, RawDataType[] data){
|
||||
LineChart chart = new LineChart(parent.getContext());
|
||||
FrameLayout.LayoutParams layout = new FrameLayout.LayoutParams(
|
||||
ViewGroup.LayoutParams.MATCH_PARENT,
|
||||
@@ -244,7 +243,7 @@ public class TallyType extends FieldType {
|
||||
|
||||
|
||||
|
||||
public void add_history_view(LinearLayout parent, DataType[] data){
|
||||
public void add_history_view(LinearLayout parent, RawDataType[] data){
|
||||
LineChart chart = new LineChart(parent.getContext());
|
||||
FrameLayout.LayoutParams layout = new FrameLayout.LayoutParams(
|
||||
ViewGroup.LayoutParams.MATCH_PARENT,
|
||||
@@ -302,7 +301,7 @@ public class TallyType extends FieldType {
|
||||
parent.addView(chart);
|
||||
}
|
||||
|
||||
public void addDataToTable(TableLayout parent, Map<Integer, List<DataType>> data){
|
||||
public void addDataToTable(TableLayout parent, Map<Integer, List<RawDataType>> data){
|
||||
int[] tmp_abs_bounds = DataProcessing.getNumberBounds(data);
|
||||
int absmin = tmp_abs_bounds[0];
|
||||
int absmax = tmp_abs_bounds[1];
|
||||
@@ -361,7 +360,7 @@ public class TallyType extends FieldType {
|
||||
}
|
||||
}
|
||||
|
||||
public String toString(DataType data){
|
||||
public String toString(RawDataType data){
|
||||
return String.valueOf((int) data.get());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,6 @@ import static com.ridgebotics.ridgescout.utility.Colors.dropdown_value_text_2;
|
||||
import static com.ridgebotics.ridgescout.utility.Colors.text_data;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.text.Editable;
|
||||
import android.text.TextWatcher;
|
||||
import android.view.Gravity;
|
||||
@@ -19,7 +18,7 @@ import android.widget.LinearLayout;
|
||||
import android.widget.TableLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.ridgebotics.ridgescout.types.data.DataType;
|
||||
import com.ridgebotics.ridgescout.types.data.RawDataType;
|
||||
import com.ridgebotics.ridgescout.types.data.StringType;
|
||||
import com.ridgebotics.ridgescout.utility.SentimentAnalysis;
|
||||
import com.ridgebotics.ridgescout.utility.BuiltByteParser;
|
||||
@@ -39,7 +38,7 @@ public class TextType extends FieldType {
|
||||
|
||||
public int get_byte_id() {return notesType;}
|
||||
public inputTypes getInputType(){return inputTypes.NOTES_INPUT;}
|
||||
public DataType.valueTypes getValueType(){return DataType.valueTypes.STRING;}
|
||||
public RawDataType.valueTypes getValueType(){return RawDataType.valueTypes.STRING;}
|
||||
public Object get_fallback_value(){return "<no-notes>";}
|
||||
public TextType(){}
|
||||
public TextType(String UUID, String name, String description, String default_text){
|
||||
@@ -76,7 +75,7 @@ public class TextType extends FieldType {
|
||||
|
||||
public EditText text = null;
|
||||
|
||||
public View createView(Context context, Function<DataType, Integer> onUpdate){
|
||||
public View createView(Context context, Function<RawDataType, Integer> onUpdate){
|
||||
text = new EditText(context);
|
||||
text.setText((String)default_value);
|
||||
text.addTextChangedListener(new TextWatcher() {
|
||||
@@ -102,7 +101,7 @@ public class TextType extends FieldType {
|
||||
isBlank = true;
|
||||
text.setVisibility(View.GONE);
|
||||
}
|
||||
public DataType getViewValue(){
|
||||
public RawDataType getViewValue(){
|
||||
if(text == null) return null;
|
||||
if(text.getVisibility() == View.GONE) return new StringType(name, StringType.nullval);
|
||||
return new StringType(name, text.getText().toString());
|
||||
@@ -111,7 +110,7 @@ public class TextType extends FieldType {
|
||||
|
||||
|
||||
|
||||
public void add_individual_view(LinearLayout parent, DataType data){
|
||||
public void add_individual_view(LinearLayout parent, RawDataType data){
|
||||
if(data.isNull()) return;
|
||||
TextView tv = new TextView(parent.getContext());
|
||||
tv.setLayoutParams(new FrameLayout.LayoutParams(
|
||||
@@ -141,7 +140,7 @@ public class TextType extends FieldType {
|
||||
|
||||
TextView positive_text;
|
||||
|
||||
public void add_compiled_view(LinearLayout parent, DataType[] data) {
|
||||
public void add_compiled_view(LinearLayout parent, RawDataType[] data) {
|
||||
positive_mean = 0;
|
||||
count = 0;
|
||||
|
||||
@@ -170,7 +169,7 @@ public class TextType extends FieldType {
|
||||
}
|
||||
|
||||
|
||||
public void add_history_view(LinearLayout parent, DataType[] data){
|
||||
public void add_history_view(LinearLayout parent, RawDataType[] data){
|
||||
LineChart chart = new LineChart(parent.getContext());
|
||||
FrameLayout.LayoutParams layout = new FrameLayout.LayoutParams(
|
||||
ViewGroup.LayoutParams.MATCH_PARENT,
|
||||
@@ -229,11 +228,11 @@ public class TextType extends FieldType {
|
||||
|
||||
}
|
||||
|
||||
public void addDataToTable(TableLayout parent, Map<Integer, List<DataType>> data){
|
||||
public void addDataToTable(TableLayout parent, Map<Integer, List<RawDataType>> data){
|
||||
|
||||
}
|
||||
|
||||
public String toString(DataType data){
|
||||
public String toString(RawDataType data){
|
||||
return String.valueOf(data.get());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,94 +0,0 @@
|
||||
package com.ridgebotics.ridgescout.ui;
|
||||
|
||||
import static com.ridgebotics.ridgescout.utility.DataManager.evcode;
|
||||
import static com.ridgebotics.ridgescout.utility.DataManager.event;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TableLayout;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.ridgebotics.ridgescout.databinding.FragmentTeamSelectorBinding;
|
||||
import com.ridgebotics.ridgescout.types.frcTeam;
|
||||
import com.ridgebotics.ridgescout.utility.AlertManager;
|
||||
import com.ridgebotics.ridgescout.utility.DataManager;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
public class TeamSelectorFragment extends Fragment {
|
||||
private FragmentTeamSelectorBinding binding;
|
||||
|
||||
private static boolean pits_mode;
|
||||
public static void setPits_mode(boolean mode){
|
||||
pits_mode = mode;
|
||||
}
|
||||
|
||||
private static onTeamSelected onSelect = new onTeamSelected() {@Override public void onSelect(TeamSelectorFragment self, frcTeam team) {}};
|
||||
|
||||
public interface onTeamSelected {
|
||||
void onSelect(TeamSelectorFragment self, frcTeam team);
|
||||
}
|
||||
public static void setOnSelect(onTeamSelected tmponSelect){
|
||||
onSelect = tmponSelect;
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
|
||||
@Nullable Bundle savedInstanceState) {
|
||||
binding = FragmentTeamSelectorBinding.inflate(inflater, container, false);
|
||||
|
||||
// event = fileEditor.g
|
||||
DataManager.reload_event();
|
||||
|
||||
if(evcode == null || evcode.equals("unset")){
|
||||
AlertManager.addSimpleError("You somehow have not loaded an event!");
|
||||
return binding.getRoot();
|
||||
}
|
||||
|
||||
load_teams();
|
||||
|
||||
|
||||
return binding.getRoot();
|
||||
}
|
||||
|
||||
public void load_teams(){
|
||||
int[] teamNums = new int[event.teams.size()];
|
||||
|
||||
for(int i = 0 ; i < event.teams.size(); i++){
|
||||
teamNums[i] = event.teams.get(i).teamNumber;
|
||||
}
|
||||
|
||||
Arrays.sort(teamNums);
|
||||
|
||||
TableLayout table = new TableLayout(getContext());
|
||||
table.setStretchAllColumns(true);
|
||||
binding.teams.addView(table);
|
||||
|
||||
|
||||
for(int i = 0; i < event.teams.size(); i++){
|
||||
frcTeam team = null;
|
||||
for(int a = 0 ; a < event.teams.size(); a++){
|
||||
if(event.teams.get(a).teamNumber == teamNums[i]){
|
||||
team = event.teams.get(a);
|
||||
break;
|
||||
}
|
||||
}
|
||||
assert team != null;
|
||||
|
||||
TeamListOption teamRow = new TeamListOption(getContext());
|
||||
table.addView(teamRow);
|
||||
teamRow.fromTeam(team);
|
||||
|
||||
frcTeam finalTeam = team;
|
||||
teamRow.setOnClickListener(v -> {
|
||||
onSelect.onSelect(this, finalTeam);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -3,7 +3,6 @@ package com.ridgebotics.ridgescout.ui.data;
|
||||
|
||||
import static android.view.View.GONE;
|
||||
import static android.view.View.VISIBLE;
|
||||
import static androidx.navigation.fragment.FragmentKt.findNavController;
|
||||
|
||||
import static com.ridgebotics.ridgescout.utility.Colors.datafragment_option_1;
|
||||
import static com.ridgebotics.ridgescout.utility.Colors.datafragment_option_2;
|
||||
@@ -20,12 +19,10 @@ import android.view.ViewGroup;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentTransaction;
|
||||
|
||||
import com.ridgebotics.ridgescout.R;
|
||||
import com.ridgebotics.ridgescout.types.frcTeam;
|
||||
import com.ridgebotics.ridgescout.ui.FieldBorderedRow;
|
||||
import com.ridgebotics.ridgescout.ui.TeamListOption;
|
||||
import com.ridgebotics.ridgescout.ui.views.FieldBorderedRow;
|
||||
import com.ridgebotics.ridgescout.ui.views.TeamListOption;
|
||||
import com.ridgebotics.ridgescout.utility.DataManager;
|
||||
import com.ridgebotics.ridgescout.utility.SettingsManager;
|
||||
import com.ridgebotics.ridgescout.databinding.FragmentDataBinding;
|
||||
@@ -33,6 +30,9 @@ import com.ridgebotics.ridgescout.databinding.FragmentDataBinding;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
// Fragment for the menu of the data tab.
|
||||
// Shows either by field type or by team.
|
||||
// This is held in a sub-fragment under DataParentFragment
|
||||
public class DataFragment extends Fragment {
|
||||
|
||||
private FragmentDataBinding binding;
|
||||
|
||||
@@ -4,17 +4,11 @@ package com.ridgebotics.ridgescout.ui.data;
|
||||
import static android.content.Context.CLIPBOARD_SERVICE;
|
||||
import static android.view.View.GONE;
|
||||
import static android.view.View.VISIBLE;
|
||||
import static androidx.core.content.ContextCompat.getSystemService;
|
||||
import static androidx.navigation.fragment.FragmentKt.findNavController;
|
||||
import static com.ridgebotics.ridgescout.utility.Colors.datafragment_option_1;
|
||||
import static com.ridgebotics.ridgescout.utility.Colors.datafragment_option_2;
|
||||
import static com.ridgebotics.ridgescout.utility.DataManager.evcode;
|
||||
import static com.ridgebotics.ridgescout.utility.DataManager.event;
|
||||
import static com.ridgebotics.ridgescout.utility.DataManager.match_latest_values;
|
||||
|
||||
import android.content.ClipData;
|
||||
import android.content.ClipboardManager;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.text.Editable;
|
||||
import android.text.TextWatcher;
|
||||
@@ -31,17 +25,15 @@ import com.ridgebotics.ridgescout.R;
|
||||
import com.ridgebotics.ridgescout.databinding.FragmentDataParentBinding;
|
||||
import com.ridgebotics.ridgescout.types.frcMatch;
|
||||
import com.ridgebotics.ridgescout.types.frcTeam;
|
||||
import com.ridgebotics.ridgescout.ui.FieldBorderedRow;
|
||||
import com.ridgebotics.ridgescout.ui.TeamListOption;
|
||||
import com.ridgebotics.ridgescout.utility.AlertManager;
|
||||
import com.ridgebotics.ridgescout.utility.AutoSaveManager;
|
||||
import com.ridgebotics.ridgescout.utility.DataManager;
|
||||
import com.ridgebotics.ridgescout.utility.SettingsManager;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
// Holds the scouting data editor aswell as the sub-fragment for the scouting data browser
|
||||
public class DataParentFragment extends Fragment {
|
||||
|
||||
private FragmentDataParentBinding binding;
|
||||
|
||||
@@ -1,20 +1,21 @@
|
||||
package com.ridgebotics.ridgescout.ui.data;
|
||||
|
||||
import com.ridgebotics.ridgescout.types.data.DataType;
|
||||
import com.ridgebotics.ridgescout.types.data.RawDataType;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
// Helper class for scouting data by fields.
|
||||
public class DataProcessing {
|
||||
public static int[] getNumberBounds(Map<Integer, List<DataType>> data){
|
||||
public static int[] getNumberBounds(Map<Integer, List<RawDataType>> data){
|
||||
int min = Integer.MAX_VALUE;
|
||||
int max = Integer.MIN_VALUE;
|
||||
|
||||
|
||||
|
||||
for(Integer teamNum : data.keySet()){
|
||||
List<DataType> teamData = data.get(teamNum);
|
||||
List<RawDataType> teamData = data.get(teamNum);
|
||||
|
||||
int[] locBounds = getNumberBounds(teamData);
|
||||
|
||||
@@ -26,13 +27,13 @@ public class DataProcessing {
|
||||
return new int[]{min, max};
|
||||
}
|
||||
|
||||
public static int[] getNumberBounds(List<DataType> data){
|
||||
public static int[] getNumberBounds(List<RawDataType> data){
|
||||
int min = Integer.MAX_VALUE;
|
||||
int max = Integer.MIN_VALUE;
|
||||
|
||||
if(data == null) return new int[]{min, max};
|
||||
for(int i = 0; i < data.size(); i++){
|
||||
DataType dataPoint = data.get(i);
|
||||
RawDataType dataPoint = data.get(i);
|
||||
// if(dataPoint == null) continue;
|
||||
int num = (int) dataPoint.get();
|
||||
if(num > max) max = num;
|
||||
@@ -44,7 +45,7 @@ public class DataProcessing {
|
||||
|
||||
|
||||
//https://stackoverflow.com/questions/42381759/finding-first-quartile-and-third-quartile-in-integer-array-using-java#63891545
|
||||
public static float[] getQuartiles(List<DataType> data) {
|
||||
public static float[] getQuartiles(List<RawDataType> data) {
|
||||
float ans[] = new float[3];
|
||||
|
||||
float[] val = new float[data.size()];
|
||||
|
||||
@@ -20,7 +20,7 @@ import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.ridgebotics.ridgescout.databinding.FragmentDataFieldDataBinding;
|
||||
import com.ridgebotics.ridgescout.scoutingData.ScoutingDataWriter;
|
||||
import com.ridgebotics.ridgescout.types.data.DataType;
|
||||
import com.ridgebotics.ridgescout.types.data.RawDataType;
|
||||
import com.ridgebotics.ridgescout.utility.AlertManager;
|
||||
import com.ridgebotics.ridgescout.utility.FileEditor;
|
||||
|
||||
@@ -29,6 +29,7 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
// Fragment for viewing the data of a specfic field.
|
||||
public class FieldDataFragment extends Fragment {
|
||||
|
||||
private FragmentDataFieldDataBinding binding;
|
||||
@@ -52,13 +53,13 @@ public class FieldDataFragment extends Fragment {
|
||||
|
||||
Thread t = new Thread(() -> {
|
||||
|
||||
Map<Integer, List<DataType>> data = new HashMap<>();
|
||||
Map<Integer, List<RawDataType>> data = new HashMap<>();
|
||||
for (int teamIndex = 0; teamIndex < event.teams.size(); teamIndex++) {
|
||||
int teamNum = event.teams.get(teamIndex).teamNumber;
|
||||
List<String> filenames = new ArrayList<>(List.of(FileEditor.getMatchesByTeamNum(evcode, event.teams.get(teamIndex).teamNumber)));
|
||||
filenames.removeAll(rescout_list);
|
||||
|
||||
ArrayList<DataType> teamData = new ArrayList<>();
|
||||
ArrayList<RawDataType> teamData = new ArrayList<>();
|
||||
|
||||
for (int i = 0; i < filenames.size(); i++) {
|
||||
try {
|
||||
|
||||
@@ -26,7 +26,7 @@ import com.ridgebotics.ridgescout.utility.AlertManager;
|
||||
import com.ridgebotics.ridgescout.utility.SettingsManager;
|
||||
import com.ridgebotics.ridgescout.databinding.FragmentDataTeamsBinding;
|
||||
import com.ridgebotics.ridgescout.scoutingData.ScoutingDataWriter;
|
||||
import com.ridgebotics.ridgescout.types.data.DataType;
|
||||
import com.ridgebotics.ridgescout.types.data.RawDataType;
|
||||
import com.ridgebotics.ridgescout.types.frcTeam;
|
||||
import com.ridgebotics.ridgescout.utility.DataManager;
|
||||
import com.ridgebotics.ridgescout.utility.FileEditor;
|
||||
@@ -34,6 +34,7 @@ import com.ridgebotics.ridgescout.utility.FileEditor;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
// Fragment for viewing the data of a team.
|
||||
public class TeamsFragment extends Fragment {
|
||||
FragmentDataTeamsBinding binding;
|
||||
|
||||
@@ -279,7 +280,7 @@ public class TeamsFragment extends Fragment {
|
||||
|
||||
|
||||
public void add_compiled_views(String[] files){
|
||||
DataType[][] data = new DataType[match_latest_values.length][files.length];
|
||||
RawDataType[][] data = new RawDataType[match_latest_values.length][files.length];
|
||||
for (int i = 0; i < files.length; i++) {
|
||||
try {
|
||||
ScoutingDataWriter.ParsedScoutingDataResult psda = ScoutingDataWriter.load(files[i], match_values, match_transferValues);
|
||||
@@ -314,7 +315,7 @@ public class TeamsFragment extends Fragment {
|
||||
|
||||
|
||||
public void add_history_views(String[] files){
|
||||
DataType[][] data = new DataType[match_latest_values.length][files.length];
|
||||
RawDataType[][] data = new RawDataType[match_latest_values.length][files.length];
|
||||
for (int i = 0; i < files.length; i++) {
|
||||
try {
|
||||
ScoutingDataWriter.ParsedScoutingDataResult psda = ScoutingDataWriter.load(files[i], match_values, match_transferValues);
|
||||
|
||||
@@ -23,7 +23,7 @@ import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.ridgebotics.ridgescout.databinding.FragmentScoutingEventBinding;
|
||||
import com.ridgebotics.ridgescout.types.frcTeam;
|
||||
import com.ridgebotics.ridgescout.ui.CustomSpinnerView;
|
||||
import com.ridgebotics.ridgescout.ui.views.CustomSpinnerView;
|
||||
import com.ridgebotics.ridgescout.utility.DataManager;
|
||||
import com.ridgebotics.ridgescout.utility.FileEditor;
|
||||
import com.ridgebotics.ridgescout.types.frcEvent;
|
||||
@@ -34,6 +34,7 @@ import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
// Fragment to show the status of scouting, aswell as adding or removing matches and teams manually.
|
||||
public class EventFragment extends Fragment {
|
||||
FragmentScoutingEventBinding binding;
|
||||
|
||||
|
||||
@@ -19,11 +19,11 @@ import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.google.android.material.divider.MaterialDivider;
|
||||
import com.ridgebotics.ridgescout.ui.ToggleTitleView;
|
||||
import com.ridgebotics.ridgescout.ui.views.ToggleTitleView;
|
||||
import com.ridgebotics.ridgescout.utility.SettingsManager;
|
||||
import com.ridgebotics.ridgescout.databinding.FragmentScoutingMatchBinding;
|
||||
import com.ridgebotics.ridgescout.scoutingData.ScoutingDataWriter;
|
||||
import com.ridgebotics.ridgescout.types.data.DataType;
|
||||
import com.ridgebotics.ridgescout.types.data.RawDataType;
|
||||
import com.ridgebotics.ridgescout.types.frcMatch;
|
||||
import com.ridgebotics.ridgescout.types.frcTeam;
|
||||
import com.ridgebotics.ridgescout.types.input.FieldType;
|
||||
@@ -32,6 +32,7 @@ import com.ridgebotics.ridgescout.utility.AutoSaveManager;
|
||||
import com.ridgebotics.ridgescout.utility.DataManager;
|
||||
import com.ridgebotics.ridgescout.utility.FileEditor;
|
||||
|
||||
// Fragment for match scouting data editing.
|
||||
public class MatchScoutingFragment extends Fragment {
|
||||
|
||||
private FragmentScoutingMatchBinding binding;
|
||||
@@ -347,7 +348,7 @@ public class MatchScoutingFragment extends Fragment {
|
||||
public void get_fields(){
|
||||
|
||||
ScoutingDataWriter.ParsedScoutingDataResult psdr = ScoutingDataWriter.load(filename, DataManager.match_values, DataManager.match_transferValues);
|
||||
DataType[] types = psdr.data.array;
|
||||
RawDataType[] types = psdr.data.array;
|
||||
fileUsernames = psdr.username;
|
||||
|
||||
|
||||
@@ -369,7 +370,7 @@ public class MatchScoutingFragment extends Fragment {
|
||||
|
||||
public void save_fields(){
|
||||
|
||||
DataType[] types = new DataType[DataManager.match_latest_values.length];
|
||||
RawDataType[] types = new RawDataType[DataManager.match_latest_values.length];
|
||||
|
||||
for(int i = 0; i < DataManager.match_latest_values.length; i++){
|
||||
types[i] = DataManager.match_latest_values[i].getViewValue();
|
||||
|
||||
@@ -19,12 +19,12 @@ import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.google.android.material.divider.MaterialDivider;
|
||||
import com.ridgebotics.ridgescout.ui.ToggleTitleView;
|
||||
import com.ridgebotics.ridgescout.ui.views.ToggleTitleView;
|
||||
import com.ridgebotics.ridgescout.utility.AlertManager;
|
||||
import com.ridgebotics.ridgescout.utility.SettingsManager;
|
||||
import com.ridgebotics.ridgescout.databinding.FragmentScoutingPitBinding;
|
||||
import com.ridgebotics.ridgescout.scoutingData.ScoutingDataWriter;
|
||||
import com.ridgebotics.ridgescout.types.data.DataType;
|
||||
import com.ridgebotics.ridgescout.types.data.RawDataType;
|
||||
import com.ridgebotics.ridgescout.types.frcTeam;
|
||||
import com.ridgebotics.ridgescout.types.input.FieldType;
|
||||
import com.ridgebotics.ridgescout.utility.AutoSaveManager;
|
||||
@@ -34,6 +34,7 @@ import com.ridgebotics.ridgescout.utility.FileEditor;
|
||||
import java.util.ArrayList;
|
||||
import java.util.function.Function;
|
||||
|
||||
// Fragment for pit scouting data editing
|
||||
public class PitScoutingFragment extends Fragment {
|
||||
|
||||
FragmentScoutingPitBinding binding;
|
||||
@@ -77,13 +78,13 @@ public class PitScoutingFragment extends Fragment {
|
||||
|
||||
AutoSaveManager asm = new AutoSaveManager(this::save, AUTO_SAVE_DELAY);
|
||||
|
||||
ArrayList<DataType> dataTypes;
|
||||
ArrayList<RawDataType> rawDataTypes;
|
||||
|
||||
public void save(){
|
||||
edited = false;
|
||||
enableRescoutButton();
|
||||
|
||||
DataType[] types = new DataType[pit_latest_values.length];
|
||||
RawDataType[] types = new RawDataType[pit_latest_values.length];
|
||||
|
||||
for(int i = 0; i < pit_latest_values.length; i++){
|
||||
types[i] = pit_latest_values[i].getViewValue();
|
||||
@@ -201,9 +202,9 @@ public class PitScoutingFragment extends Fragment {
|
||||
}
|
||||
});
|
||||
|
||||
View v = pit_latest_values[i].createView(getContext(), new Function<DataType, Integer>() {
|
||||
View v = pit_latest_values[i].createView(getContext(), new Function<RawDataType, Integer>() {
|
||||
@Override
|
||||
public Integer apply(DataType dataType) {
|
||||
public Integer apply(RawDataType dataType) {
|
||||
// edited = true;
|
||||
if(asm.isRunning)
|
||||
update_asm();
|
||||
@@ -226,7 +227,7 @@ public class PitScoutingFragment extends Fragment {
|
||||
public void get_fields(){
|
||||
|
||||
ScoutingDataWriter.ParsedScoutingDataResult psdr = ScoutingDataWriter.load(filename, pit_values, pit_transferValues);
|
||||
DataType[] types = psdr.data.array;
|
||||
RawDataType[] types = psdr.data.array;
|
||||
fileUsernames = psdr.username;
|
||||
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@ package com.ridgebotics.ridgescout.ui.scouting;
|
||||
import static com.ridgebotics.ridgescout.utility.Colors.color_found;
|
||||
import static com.ridgebotics.ridgescout.utility.Colors.color_not_found;
|
||||
import static com.ridgebotics.ridgescout.utility.Colors.color_rescout;
|
||||
import static com.ridgebotics.ridgescout.utility.Colors.rescout_color;
|
||||
import static com.ridgebotics.ridgescout.utility.DataManager.evcode;
|
||||
import static com.ridgebotics.ridgescout.utility.DataManager.event;
|
||||
|
||||
@@ -19,21 +18,17 @@ import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.ridgebotics.ridgescout.databinding.FragmentTeamSelectorBinding;
|
||||
import com.ridgebotics.ridgescout.types.frcTeam;
|
||||
import com.ridgebotics.ridgescout.ui.TeamListOption;
|
||||
import com.ridgebotics.ridgescout.ui.views.TeamListOption;
|
||||
import com.ridgebotics.ridgescout.utility.AlertManager;
|
||||
import com.ridgebotics.ridgescout.utility.DataManager;
|
||||
import com.ridgebotics.ridgescout.utility.FileEditor;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
// Fragment for choosing which team to pit scout
|
||||
public class PitSelectorFragment extends Fragment {
|
||||
private FragmentTeamSelectorBinding binding;
|
||||
|
||||
private static boolean pits_mode;
|
||||
public static void setPits_mode(boolean mode){
|
||||
pits_mode = mode;
|
||||
}
|
||||
|
||||
private static onTeamSelected onSelect = new onTeamSelected() {@Override public void onSelect(PitSelectorFragment self, frcTeam team) {}};
|
||||
|
||||
public interface onTeamSelected {
|
||||
|
||||
@@ -30,6 +30,7 @@ import com.ridgebotics.ridgescout.utility.DataManager;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Set;
|
||||
|
||||
// Main dashbord page
|
||||
public class ScoutingFragment extends Fragment {
|
||||
|
||||
private FragmentScoutingBinding binding;
|
||||
|
||||
@@ -23,6 +23,7 @@ import com.ridgebotics.ridgescout.utility.AlertManager;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.UUID;
|
||||
|
||||
// Class to help with fields editor fragment, containing the defaults for each field.
|
||||
public class FieldEditorHelper {
|
||||
private enum parameterTypeEnum {
|
||||
paramNumber,
|
||||
|
||||
@@ -8,7 +8,6 @@ import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
@@ -26,14 +25,15 @@ import com.ridgebotics.ridgescout.R;
|
||||
import com.ridgebotics.ridgescout.databinding.FragmentSettingsFieldsBinding;
|
||||
import com.ridgebotics.ridgescout.scoutingData.Fields;
|
||||
import com.ridgebotics.ridgescout.types.input.FieldType;
|
||||
import com.ridgebotics.ridgescout.ui.CustomSpinnerView;
|
||||
import com.ridgebotics.ridgescout.ui.FieldDisplay;
|
||||
import com.ridgebotics.ridgescout.ui.views.CustomSpinnerView;
|
||||
import com.ridgebotics.ridgescout.ui.views.FieldDisplay;
|
||||
import com.ridgebotics.ridgescout.utility.AlertManager;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
// Fragment that shows the field editor.
|
||||
public class FieldsFragment extends Fragment {
|
||||
FragmentSettingsFieldsBinding binding;
|
||||
|
||||
|
||||
@@ -18,7 +18,6 @@ import static com.ridgebotics.ridgescout.utility.SettingsManager.prefs;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.os.Bundle;
|
||||
import android.text.Editable;
|
||||
import android.text.InputType;
|
||||
@@ -43,8 +42,8 @@ import com.google.android.material.textfield.TextInputLayout;
|
||||
import com.ridgebotics.ridgescout.R;
|
||||
import com.ridgebotics.ridgescout.databinding.FragmentSettingsBinding;
|
||||
import com.ridgebotics.ridgescout.scoutingData.Fields;
|
||||
import com.ridgebotics.ridgescout.ui.CustomSpinnerView;
|
||||
import com.ridgebotics.ridgescout.ui.scouting.TallyCounterView;
|
||||
import com.ridgebotics.ridgescout.ui.views.CustomSpinnerView;
|
||||
import com.ridgebotics.ridgescout.ui.views.TallyCounterView;
|
||||
import com.ridgebotics.ridgescout.utility.DataManager;
|
||||
import com.ridgebotics.ridgescout.utility.FileEditor;
|
||||
|
||||
@@ -53,7 +52,7 @@ import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
// Fragment to edit settings, aswell as redirect to the fields editor.
|
||||
public class SettingsFragment extends Fragment {
|
||||
private FragmentSettingsBinding binding;
|
||||
|
||||
|
||||
@@ -9,13 +9,14 @@ import static com.ridgebotics.ridgescout.utility.SharePrompt.shareContent;
|
||||
import android.content.Context;
|
||||
|
||||
import com.ridgebotics.ridgescout.scoutingData.ScoutingDataWriter;
|
||||
import com.ridgebotics.ridgescout.types.data.DataType;
|
||||
import com.ridgebotics.ridgescout.types.data.RawDataType;
|
||||
import com.ridgebotics.ridgescout.types.frcMatch;
|
||||
import com.ridgebotics.ridgescout.types.frcTeam;
|
||||
import com.ridgebotics.ridgescout.types.input.FieldType;
|
||||
import com.ridgebotics.ridgescout.utility.DataManager;
|
||||
import com.ridgebotics.ridgescout.utility.FileEditor;
|
||||
|
||||
// Static class to export matches to a string.
|
||||
public class CSVExport {
|
||||
private static String[] alliances = {"red", "blue"};
|
||||
|
||||
@@ -62,7 +63,7 @@ public class CSVExport {
|
||||
try {
|
||||
String tempData = "";
|
||||
ScoutingDataWriter.ParsedScoutingDataResult psdr = ScoutingDataWriter.load(filename, DataManager.match_values, DataManager.match_transferValues);
|
||||
DataType[] matchData = psdr.data.array;
|
||||
RawDataType[] matchData = psdr.data.array;
|
||||
FieldType[] types = psdr.data.values[psdr.data.values.length-1];
|
||||
for (int i = 0; i < types.length; i++) {
|
||||
tempData += (safeCSV(types[i].toString(matchData[i])) + ",");
|
||||
@@ -114,7 +115,7 @@ public class CSVExport {
|
||||
try {
|
||||
String tempData = "";
|
||||
ScoutingDataWriter.ParsedScoutingDataResult psdr = ScoutingDataWriter.load(filename, DataManager.pit_values, DataManager.pit_transferValues);
|
||||
DataType[] teamData = psdr.data.array;
|
||||
RawDataType[] teamData = psdr.data.array;
|
||||
FieldType[] types = psdr.data.values[psdr.data.values.length-1];
|
||||
for (int i = 0; i < types.length; i++) {
|
||||
tempData += (safeCSV(types[i].toString(teamData[i])) + ",");
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.ridgebotics.ridgescout.ui.transfer;
|
||||
|
||||
//import static com.ridgebotics.ridgescout.utility.DataManager.evcode;
|
||||
import static com.ridgebotics.ridgescout.utility.DataManager.evcode;
|
||||
import static com.ridgebotics.ridgescout.utility.FileEditor.baseDir;
|
||||
|
||||
@@ -27,6 +26,7 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
// Class to synchronise data over FTP.
|
||||
public class FTPSync extends Thread {
|
||||
public static final String remoteBasePath = "/RidgeScout/";
|
||||
public static final String timestampsFilename = "timestamps";
|
||||
|
||||
@@ -20,28 +20,8 @@ import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
// Class to create the share and receive popups to transfer scouting data.
|
||||
public class FileBundle {
|
||||
private static final Intent FILE_SELECT_CODE = new Intent();
|
||||
|
||||
public static void send(String[] files, Context c){
|
||||
try {
|
||||
ByteBuilder b = new ByteBuilder();
|
||||
|
||||
for(int i = 0; i < files.length; i++){
|
||||
if(!FileEditor.fileExist(files[i])) continue;
|
||||
// byte[] data = fileEditor.readFile(files[i]);
|
||||
ScoutingFile f = new ScoutingFile(files[i]);
|
||||
b.addRaw(ScoutingFile.typecode, f.encode());
|
||||
}
|
||||
|
||||
byte[] data = b.build();
|
||||
send(data, c);
|
||||
|
||||
} catch (ByteBuilder.buildingException e) {
|
||||
AlertManager.error(e);
|
||||
}
|
||||
}
|
||||
|
||||
public static void send(byte[] data, Context c){
|
||||
String filename = DataManager.getevcode() + "-" + System.currentTimeMillis() + ".scoutbundle";
|
||||
SharePrompt.shareContent(c, filename, data, "application/ridgescout");
|
||||
|
||||
@@ -29,6 +29,7 @@ import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
// Class to show a file browseer
|
||||
public class FileSelectorFragment extends Fragment {
|
||||
|
||||
private static on_file_select onSelect = files -> {};
|
||||
|
||||
@@ -41,6 +41,7 @@ import org.json.JSONObject;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
|
||||
// Class to download data from a specific event and encode it.
|
||||
public class TBAEventFragment extends Fragment {
|
||||
|
||||
private TableLayout Table;
|
||||
|
||||
@@ -21,7 +21,7 @@ import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.ridgebotics.ridgescout.R;
|
||||
import com.ridgebotics.ridgescout.databinding.FragmentTransferTbaBinding;
|
||||
import com.ridgebotics.ridgescout.ui.TBAEventOption;
|
||||
import com.ridgebotics.ridgescout.ui.views.TBAEventOption;
|
||||
import com.ridgebotics.ridgescout.utility.AlertManager;
|
||||
import com.ridgebotics.ridgescout.utility.RequestTask;
|
||||
import com.ridgebotics.ridgescout.utility.SettingsManager;
|
||||
@@ -37,6 +37,7 @@ import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
// Class to select an event from TBA and redirect to TBAEventFragment.java.
|
||||
public class TBASelectorFragment extends Fragment {
|
||||
|
||||
private android.widget.TableLayout Table;
|
||||
|
||||
@@ -19,6 +19,7 @@ import com.ridgebotics.ridgescout.databinding.FragmentTransferBinding;
|
||||
import com.ridgebotics.ridgescout.ui.transfer.bluetooth.BluetoothSenderFragment;
|
||||
import com.ridgebotics.ridgescout.ui.transfer.codes.CodeGeneratorView;
|
||||
|
||||
// Class to do transference.
|
||||
public class TransferFragment extends Fragment {
|
||||
private FragmentTransferBinding binding;
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@ import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.ridgebotics.ridgescout.databinding.FragmentTransferSelectorBinding;
|
||||
|
||||
// The transfer method selector
|
||||
public class TransferSelectorFragment extends Fragment {
|
||||
|
||||
// Declaring three blank funcs in one line lol
|
||||
|
||||
+1
-2
@@ -20,11 +20,10 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
// Helper class for bluetooth reciever.
|
||||
public class BluetoothReceiver {
|
||||
private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
|
||||
private static final String NAME = "BluetoothReceiverApp";
|
||||
private static final int REQUEST_ENABLE_BT = 1;
|
||||
private static final int REQUEST_PERMISSIONS = 2;
|
||||
|
||||
private Context context;
|
||||
private BluetoothAdapter bluetoothAdapter;
|
||||
|
||||
+1
@@ -22,6 +22,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.zip.DataFormatException;
|
||||
|
||||
// Class to receive bluetooth transmissions from other devices
|
||||
public class BluetoothReceiverFragment extends Fragment {
|
||||
private BluetoothReceiver bluetoothReceiver;
|
||||
private Button startListeningButton;
|
||||
|
||||
+1
-2
@@ -21,10 +21,9 @@ import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
// Helper class with sending bluetooth scouting data
|
||||
public class BluetoothSender {
|
||||
private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
|
||||
private static final int REQUEST_ENABLE_BT = 1;
|
||||
private static final int REQUEST_PERMISSIONS = 2;
|
||||
|
||||
private Context context;
|
||||
private BluetoothAdapter bluetoothAdapter;
|
||||
|
||||
+1
@@ -23,6 +23,7 @@ import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Set;
|
||||
|
||||
// Class to send scouting data over bluetooth.
|
||||
public class BluetoothSenderFragment extends Fragment {
|
||||
private BluetoothSender bluetoothSender;
|
||||
private ListView deviceListView;
|
||||
|
||||
@@ -30,6 +30,7 @@ import java.util.EnumMap;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
|
||||
// Class to show the code transfer thing.
|
||||
public class CodeGeneratorView extends Fragment {
|
||||
private ImageView qrImage;
|
||||
private SeekBar qrSpeedSlider;
|
||||
|
||||
@@ -17,6 +17,7 @@ import android.view.View;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
// Shows the progress of receiving data over codes.
|
||||
public class CodeOverlayView extends View {
|
||||
|
||||
PointF[] points;
|
||||
|
||||
@@ -20,6 +20,7 @@ import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
|
||||
// Background task for code scanning, to not slow down the scanner.
|
||||
public class CodeScanTask extends AsyncTask<String, String, String>{
|
||||
private Function<String, String> resultFunction = null;
|
||||
private Bitmap image;
|
||||
|
||||
@@ -47,7 +47,7 @@ import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
//public class scannerView extends androidx.appcompat.widget.AppCompatImageView {
|
||||
// Recieves data from the camera, scanning codes.
|
||||
public class CodeScannerView extends Fragment {
|
||||
private CodeOverlayView CodeOverlayView;
|
||||
private Handler uiHandler;
|
||||
|
||||
+2
-6
@@ -1,14 +1,9 @@
|
||||
package com.ridgebotics.ridgescout.ui;
|
||||
package com.ridgebotics.ridgescout.ui.views;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.ColorMatrixColorFilter;
|
||||
import android.graphics.LinearGradient;
|
||||
import android.graphics.Matrix;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.RectF;
|
||||
import android.graphics.Shader;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
import android.view.ViewTreeObserver;
|
||||
@@ -18,6 +13,7 @@ import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
// Unused. AI-generated dynamic wallpaper for 2025 season.
|
||||
public class BackgroundView extends View {
|
||||
private List<Circle> circles;
|
||||
private Paint whitePaint;
|
||||
+2
-2
@@ -1,14 +1,14 @@
|
||||
package com.ridgebotics.ridgescout.ui;
|
||||
package com.ridgebotics.ridgescout.ui.views;
|
||||
|
||||
import static com.ridgebotics.ridgescout.utility.Colors.candlestick_color;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.Paint;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
|
||||
// Shows the scale for a candlestick chart.
|
||||
public class CandlestickHeader extends View {
|
||||
|
||||
private float absoluteMin = 0;
|
||||
+4
-4
@@ -1,20 +1,20 @@
|
||||
package com.ridgebotics.ridgescout.ui;
|
||||
package com.ridgebotics.ridgescout.ui.views;
|
||||
|
||||
import static com.ridgebotics.ridgescout.utility.Colors.candlestick_color;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.RectF;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
|
||||
import com.ridgebotics.ridgescout.types.data.DataType;
|
||||
import com.ridgebotics.ridgescout.types.data.RawDataType;
|
||||
import com.ridgebotics.ridgescout.ui.data.DataProcessing;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
// A single candlestick chart row.
|
||||
public class CandlestickView extends View {
|
||||
|
||||
// Data points
|
||||
@@ -181,7 +181,7 @@ public class CandlestickView extends View {
|
||||
|
||||
public int teamNum;
|
||||
|
||||
public void fromTeamData(List<DataType> teamData, Integer teamNum, float absmin, float absmax){
|
||||
public void fromTeamData(List<RawDataType> teamData, Integer teamNum, float absmin, float absmax){
|
||||
this.teamNum = teamNum;
|
||||
int[] tmp_loc_bounds = DataProcessing.getNumberBounds(teamData);
|
||||
int locmin = tmp_loc_bounds[0];
|
||||
+2
-14
@@ -1,29 +1,17 @@
|
||||
package com.ridgebotics.ridgescout.ui;
|
||||
package com.ridgebotics.ridgescout.ui.views;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TableLayout;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.DialogFragment;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.google.android.material.appbar.MaterialToolbar;
|
||||
import com.google.android.material.divider.MaterialDivider;
|
||||
import com.ridgebotics.ridgescout.R;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
// The notification view of a Custom dropdown notification
|
||||
public class CustomSpinnerPopup extends TableLayout {
|
||||
|
||||
public CustomSpinnerPopup(Context context) {
|
||||
+2
-1
@@ -1,4 +1,4 @@
|
||||
package com.ridgebotics.ridgescout.ui;
|
||||
package com.ridgebotics.ridgescout.ui.views;
|
||||
|
||||
import static android.app.PendingIntent.getActivity;
|
||||
|
||||
@@ -16,6 +16,7 @@ import com.ridgebotics.ridgescout.R;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
// The dropdown element of a custom spinner view.
|
||||
public class CustomSpinnerView extends LinearLayout {
|
||||
|
||||
public interface onClickListener {
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.ridgebotics.ridgescout.ui;
|
||||
package com.ridgebotics.ridgescout.ui.views;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
+2
-7
@@ -1,4 +1,4 @@
|
||||
package com.ridgebotics.ridgescout.ui;
|
||||
package com.ridgebotics.ridgescout.ui.views;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
@@ -9,17 +9,14 @@ import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||
|
||||
import com.ridgebotics.ridgescout.R;
|
||||
import com.ridgebotics.ridgescout.types.data.DataType;
|
||||
import com.ridgebotics.ridgescout.types.input.FieldType;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
// Shows a display of the view in the view editor.
|
||||
public class FieldDisplay extends ConstraintLayout {
|
||||
public FieldDisplay(Context context, @Nullable AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
@@ -36,7 +33,6 @@ public class FieldDisplay extends ConstraintLayout {
|
||||
public Button editButton;
|
||||
|
||||
// private View fieldView;
|
||||
private LinearLayout buttonBox;
|
||||
private ConstraintLayout box;
|
||||
public View coloredBackground;
|
||||
private LinearLayout fieldDisplayBox;
|
||||
@@ -50,7 +46,6 @@ public class FieldDisplay extends ConstraintLayout {
|
||||
|
||||
editButton = findViewById(R.id.button_edit);
|
||||
|
||||
buttonBox = findViewById(R.id.buttons);
|
||||
}
|
||||
|
||||
private ToggleTitleView toggleTitleView;
|
||||
+2
-1
@@ -1,4 +1,4 @@
|
||||
package com.ridgebotics.ridgescout.ui.scouting;
|
||||
package com.ridgebotics.ridgescout.ui.views;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
@@ -15,6 +15,7 @@ import android.widget.ImageView;
|
||||
import com.ridgebotics.ridgescout.R;
|
||||
import com.ridgebotics.ridgescout.utility.SettingsManager;
|
||||
|
||||
// Custom view to display a field position.
|
||||
public class FieldPosView extends FrameLayout {
|
||||
private int x = -1;
|
||||
private int y = -1;
|
||||
+1
-4
@@ -1,14 +1,11 @@
|
||||
package com.ridgebotics.ridgescout.ui.scouting;
|
||||
package com.ridgebotics.ridgescout.ui.views;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.MotionEvent;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.ImageView;
|
||||
|
||||
+2
-4
@@ -1,14 +1,12 @@
|
||||
package com.ridgebotics.ridgescout.ui;
|
||||
package com.ridgebotics.ridgescout.ui.views;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.PorterDuff;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
@@ -16,8 +14,8 @@ import androidx.annotation.Nullable;
|
||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||
|
||||
import com.ridgebotics.ridgescout.R;
|
||||
import com.ridgebotics.ridgescout.types.frcTeam;
|
||||
|
||||
// Class for custom view displaying an event in the TBASelector.java
|
||||
public class TBAEventOption extends LinearLayout {
|
||||
public TBAEventOption(Context context, @Nullable AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
+2
-1
@@ -1,4 +1,4 @@
|
||||
package com.ridgebotics.ridgescout.ui.scouting;
|
||||
package com.ridgebotics.ridgescout.ui.views;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.AttributeSet;
|
||||
@@ -9,6 +9,7 @@ import android.widget.TextView;
|
||||
|
||||
import com.ridgebotics.ridgescout.R;
|
||||
|
||||
// Unused. This would be almost the same as the Fieldpos field, except it would support multiple positions.
|
||||
public class TallyCounterView extends LinearLayout {
|
||||
private int count = 0;
|
||||
private TextView countDisplay;
|
||||
+2
-1
@@ -1,4 +1,4 @@
|
||||
package com.ridgebotics.ridgescout.ui;
|
||||
package com.ridgebotics.ridgescout.ui.views;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Bitmap;
|
||||
@@ -18,6 +18,7 @@ import androidx.constraintlayout.widget.ConstraintLayout;
|
||||
import com.ridgebotics.ridgescout.R;
|
||||
import com.ridgebotics.ridgescout.types.frcTeam;
|
||||
|
||||
// A view for displaying information about a team.
|
||||
public class TeamCard extends LinearLayout {
|
||||
public TeamCard(Context context, @Nullable AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
+2
-1
@@ -1,4 +1,4 @@
|
||||
package com.ridgebotics.ridgescout.ui;
|
||||
package com.ridgebotics.ridgescout.ui.views;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Bitmap;
|
||||
@@ -18,6 +18,7 @@ import androidx.constraintlayout.widget.ConstraintLayout;
|
||||
import com.ridgebotics.ridgescout.R;
|
||||
import com.ridgebotics.ridgescout.types.frcTeam;
|
||||
|
||||
// A view that acts as a row specifically to display a team and their icon in a list formmt.
|
||||
public class TeamListOption extends LinearLayout {
|
||||
public TeamListOption(Context context, @Nullable AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
+2
-2
@@ -1,4 +1,4 @@
|
||||
package com.ridgebotics.ridgescout.ui;
|
||||
package com.ridgebotics.ridgescout.ui.views;
|
||||
|
||||
import static com.ridgebotics.ridgescout.utility.Colors.toggletitle_black_background;
|
||||
import static com.ridgebotics.ridgescout.utility.Colors.toggletitle_no_background;
|
||||
@@ -9,7 +9,6 @@ import android.util.AttributeSet;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.CompoundButton;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
@@ -18,6 +17,7 @@ import androidx.constraintlayout.widget.ConstraintLayout;
|
||||
|
||||
import com.ridgebotics.ridgescout.R;
|
||||
|
||||
// The enable and disable button for match and pit scouting
|
||||
public class ToggleTitleView extends ConstraintLayout {
|
||||
public ToggleTitleView(@NonNull Context context, @Nullable AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.ridgebotics.ridgescout.utility;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
@@ -11,7 +12,9 @@ import java.io.StringWriter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
// Class to cause alerts and popups
|
||||
public class AlertManager {
|
||||
@SuppressLint("StaticFieldLeak")
|
||||
public static Context context;
|
||||
|
||||
public static void init(Context c){
|
||||
|
||||
@@ -3,6 +3,8 @@ package com.ridgebotics.ridgescout.utility;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
|
||||
// Class to run a save function after a timeout of not calling the update function has been reached.
|
||||
// Used for auto-saving in pit and match scouting.
|
||||
public class AutoSaveManager {
|
||||
public static final long AUTO_SAVE_DELAY = 2000; // 2 seconds
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ import static com.ridgebotics.ridgescout.utility.FileEditor.lengthHeaderBytes;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.ArrayList;
|
||||
|
||||
// Class to decode the raw types from any of the scouting files
|
||||
public class BuiltByteParser {
|
||||
public static final Integer boolType = 0;
|
||||
public static final Integer intType = 1;
|
||||
|
||||
@@ -5,6 +5,7 @@ import static com.ridgebotics.ridgescout.utility.FileEditor.lengthHeaderBytes;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.ArrayList;
|
||||
|
||||
// Class to encode the raw types from any of the scouting files
|
||||
public class ByteBuilder {
|
||||
public static final int bool_id = 0;
|
||||
public static final int int_id = 1;
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.ridgebotics.ridgescout.utility;
|
||||
|
||||
import android.graphics.Color;
|
||||
|
||||
// Constants for most of the colors in the entire app.
|
||||
public class Colors {
|
||||
// Lists and stuff
|
||||
public static final int color_found = 0x7f00ff00;
|
||||
@@ -63,7 +64,7 @@ public class Colors {
|
||||
|
||||
// fileselector
|
||||
public static final int fileselector_selected_color = 0x5000ff00;
|
||||
public static final int fileselector_unselected_color = 0x5000ff00;
|
||||
public static final int fileselector_unselected_color = 0x50006600;
|
||||
|
||||
// TBA
|
||||
public static final int tba_previous = 0x30FF0000;
|
||||
|
||||
@@ -9,6 +9,7 @@ import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
// Static class to hold loaded data, for ease of access.
|
||||
public class DataManager {
|
||||
public static String evcode;
|
||||
public static frcEvent event;
|
||||
|
||||
@@ -25,6 +25,7 @@ import java.util.zip.DataFormatException;
|
||||
import java.util.zip.Deflater;
|
||||
import java.util.zip.Inflater;
|
||||
|
||||
// Helper class for binary editing
|
||||
public final class FileEditor {
|
||||
public final static String baseDir = "/data/data/com.ridgebotics.ridgescout/";
|
||||
public static final byte internalDataVersion = 0x01;
|
||||
|
||||
@@ -15,6 +15,8 @@ import java.util.function.Function;
|
||||
|
||||
import javax.net.ssl.HttpsURLConnection;
|
||||
|
||||
// Class to retrieve team icon from TBA
|
||||
|
||||
// https://stackoverflow.com/questions/37510411/download-an-image-into-bitmap-file-in-android
|
||||
public class ImageRequestTask extends AsyncTask<String, Void, Bitmap> {
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
// Literally just sorting json
|
||||
public class JSONUtil {
|
||||
public static JSONArray sort(JSONArray array, Comparator c){
|
||||
List asList = new ArrayList(array.length());
|
||||
|
||||
@@ -12,6 +12,8 @@ import java.util.function.Function;
|
||||
|
||||
import javax.net.ssl.HttpsURLConnection;
|
||||
|
||||
// Class to send an http request
|
||||
// Used for TBA
|
||||
public class RequestTask extends AsyncTask<String, String, String> {
|
||||
|
||||
private Function<String, String> resultFunction = null;
|
||||
|
||||
@@ -7,6 +7,8 @@ import org.tensorflow.lite.task.text.nlclassifier.NLClassifier;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
// Class that runs a sentiment analysis model of a string
|
||||
// This would be very cool if it was useful at all.
|
||||
public class SentimentAnalysis {
|
||||
private static NLClassifier textClassifier;
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
// Helper class for loading settings from android SharedPreferences
|
||||
public class SettingsManager {
|
||||
public static SharedPreferences prefs;
|
||||
public static SharedPreferences.Editor editor;
|
||||
|
||||
@@ -10,6 +10,7 @@ import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
|
||||
// Class to cause the share popup.
|
||||
public class SharePrompt {
|
||||
public static void shareContent(Context context, String fileName, String content, String mimeType) {
|
||||
shareContent(context, fileName, content.getBytes(), mimeType);
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<com.ridgebotics.ridgescout.ui.CustomSpinnerView
|
||||
<com.ridgebotics.ridgescout.ui.views.CustomSpinnerView
|
||||
android:id="@+id/data_type_dropdown"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
|
||||
@@ -19,12 +19,12 @@
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<com.ridgebotics.ridgescout.ui.CustomSpinnerView
|
||||
<com.ridgebotics.ridgescout.ui.views.CustomSpinnerView
|
||||
android:id="@+id/data_type_spinner"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<com.ridgebotics.ridgescout.ui.TeamCard
|
||||
<com.ridgebotics.ridgescout.ui.views.TeamCard
|
||||
android:id="@+id/data_team_card"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<com.ridgebotics.ridgescout.ui.TeamCard
|
||||
<com.ridgebotics.ridgescout.ui.views.TeamCard
|
||||
android:id="@+id/match_team_card"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<com.ridgebotics.ridgescout.ui.TeamCard
|
||||
<com.ridgebotics.ridgescout.ui.views.TeamCard
|
||||
android:id="@+id/pits_team_card"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
|
||||
Reference in New Issue
Block a user