Work on stuff

This commit is contained in:
Astatin3
2024-08-25 10:16:01 -06:00
parent 3c9021c70b
commit 79c10d1feb
9 changed files with 138 additions and 74 deletions
@@ -61,7 +61,7 @@ public class ScoutingArray {
private dataType get_data_type_by_name(String name){ private dataType get_data_type_by_name(String name){
for(dataType dt : array){ for(dataType dt : array){
if(dt.name.equals(name)){ if(dt.getName().equals(name)){
return dt; return dt;
} }
} }
@@ -5,18 +5,27 @@ public abstract class dataType {
NUM, NUM,
STRING STRING
} }
public String name;
public Object value;
private Object value;
private final String name;
public abstract valueTypes getValueType();
public Object forceGetValue(){return value;}
public void forceSetValue(Object value){this.value = value;}
public abstract Object get();
public abstract void set(Object value);
// public abstract Object getNullValue();
// public abstract Object getUnselectedValue();
public abstract boolean isNull(); public abstract boolean isNull();
public abstract Object getNullValue(); public abstract boolean isUnselected();
public abstract valueTypes getValueType();
public Object get(){ public String getName() {return name;}
return value;
}
public void set(Object value){
this.value = value;
}
public dataType(String name){ public dataType(String name){
this.name = name; this.name = name;
} }
@@ -1,24 +1,56 @@
package com.astatin3.scoutingapp2025.types.data; package com.astatin3.scoutingapp2025.types.data;
public class intType extends dataType { public class intType extends dataType {
public static final int nulval = 255; public static final int nullval = 0;
public static final int unselectedval = 1;
public valueTypes getValueType() { public valueTypes getValueType() {
return valueTypes.NUM; return valueTypes.NUM;
} }
public intType(String name, int value) { // public Object getNullValue(){
super(name); // return nullval;
this.value = value; // }
// public Object getUnselectedValue(){
// return unselectedval;
// }
public Object get(){
return (int) forceGetValue()+2;
} }
public void set(Object value){
forceSetValue((int) value - 2);
}
public intType(String name, int value) {
super(name);
forceSetValue(value+2);
}
public static intType newNull(String name){
final intType a = new intType(name, 0);
a.forceSetValue(nullval);
return a;
}
public static intType newUnselected(String name){
final intType a = new intType(name, 0);
a.forceSetValue(unselectedval);
return a;
}
public static boolean isNull(int obj){
return obj == nullval;
}
public boolean isNull() { public boolean isNull() {
return ((int) value) == nulval; return isNull((int) forceGetValue());
} }
public Object getNullValue(){
return nulval; public static boolean isUnselected(int obj){
return obj == unselectedval;
} }
public static intType nullify(String name){ public boolean isUnselected() {
return new intType(name, nulval); return isUnselected((int) forceGetValue());
} }
} }
@@ -1,20 +1,57 @@
package com.astatin3.scoutingapp2025.types.data; package com.astatin3.scoutingapp2025.types.data;
public class stringType extends dataType{ public class stringType extends dataType{
public static final String nulval = "Joe"; public static final String nullval = "ƒ";
public static final String unselectedval = "";
public valueTypes getValueType() {return valueTypes.STRING;} public valueTypes getValueType() {
public stringType(String name, String value){ return valueTypes.STRING;
}
// public Object getNullValue(){
// return nullval;
// }
// public Object getUnselectedValue(){
// return unselectedval;
// }
public Object get(){
return forceGetValue();
}
public void set(Object value){
forceSetValue(value);
}
public stringType(String name, String value) {
super(name); super(name);
this.value = value; forceSetValue(value+2);
} }
public boolean isNull(){
return value.equals(nulval); public static stringType newNull(String name){
final stringType a = new stringType(name, "");
a.forceSetValue(nullval);
return a;
} }
public Object getNullValue(){
return nulval; public static stringType newUnselected(String name){
final stringType a = new stringType(name, "");
a.forceSetValue(unselectedval);
return a;
} }
public static stringType nullify(String name){
return new stringType(name, nulval); public static boolean isNull(String obj){
return obj.equals(nullval);
}
public boolean isNull() {
return isNull((String) forceGetValue());
}
public static boolean isUnselected(String obj){
return obj.equals(unselectedval);
}
public boolean isUnselected() {
return isUnselected((String) forceGetValue());
} }
} }
@@ -118,7 +118,7 @@ public class dropdownType extends inputType {
}; };
public void setViewValue(Object value) { public void setViewValue(Object value) {
if(dropdown == null) return; if(dropdown == null) return;
if(value.equals(intType.nulval)){ if(intType.isNull((int) value)){
nullify(); nullify();
return; return;
} }
@@ -134,7 +134,7 @@ public class dropdownType extends inputType {
} }
public dataType getViewValue(){ public dataType getViewValue(){
if(dropdown == null) return null; if(dropdown == null) return null;
if(dropdown.getVisibility() == View.GONE) return new intType(name, intType.nulval); if(dropdown.getVisibility() == View.GONE) return new intType(name, intType.nullval);
return new intType(name, dropdown.getSelectedIndex()); return new intType(name, dropdown.getSelectedIndex());
} }
@@ -83,7 +83,7 @@ public class sliderType extends inputType {
} }
public void setViewValue(Object value) { public void setViewValue(Object value) {
if(slider == null) return; if(slider == null) return;
if(value.equals(intType.nulval)){ if(intType.isNull((int) value)){
nullify(); nullify();
return; return;
} }
@@ -96,7 +96,7 @@ public class sliderType extends inputType {
} }
public dataType getViewValue(){ public dataType getViewValue(){
if(slider == null) return null; if(slider == null) return null;
if(slider.getVisibility() == View.GONE) return new intType(name, intType.nulval); if(slider.getVisibility() == View.GONE) return intType.newNull(name);
return new intType(name, min + (int) (slider.getValue() * (max-min))); return new intType(name, min + (int) (slider.getValue() * (max-min)));
} }
public void nullify(){ public void nullify(){
@@ -170,7 +170,7 @@ public class sliderType extends inputType {
int[] values = new int[max-min+1]; int[] values = new int[max-min+1];
for (int i = 0; i < data.length; i++) for (int i = 0; i < data.length; i++)
if((int) data[i].get() != intType.nulval) if(intType.isNull((int) data[i].get()))
values[(int) data[i].get()-min]++; values[(int) data[i].get()-min]++;
@@ -9,28 +9,16 @@ import android.widget.FrameLayout;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.Nullable;
import com.astatin3.scoutingapp2025.types.data.dataType; import com.astatin3.scoutingapp2025.types.data.dataType;
import com.astatin3.scoutingapp2025.types.data.intType; import com.astatin3.scoutingapp2025.types.data.intType;
import com.astatin3.scoutingapp2025.ui.scouting.TallyCounterView; import com.astatin3.scoutingapp2025.ui.scouting.TallyCounterView;
import com.astatin3.scoutingapp2025.utility.BuiltByteParser; import com.astatin3.scoutingapp2025.utility.BuiltByteParser;
import com.astatin3.scoutingapp2025.utility.ByteBuilder; import com.astatin3.scoutingapp2025.utility.ByteBuilder;
import com.github.mikephil.charting.charts.LineChart; import com.github.mikephil.charting.charts.LineChart;
import com.github.mikephil.charting.charts.PieChart;
import com.github.mikephil.charting.components.Legend; import com.github.mikephil.charting.components.Legend;
import com.github.mikephil.charting.data.Entry; import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.LineData; import com.github.mikephil.charting.data.LineData;
import com.github.mikephil.charting.data.LineDataSet; 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.google.android.material.slider.Slider;
import com.skydoves.powerspinner.IconSpinnerAdapter;
import com.skydoves.powerspinner.IconSpinnerItem;
import com.skydoves.powerspinner.OnSpinnerItemSelectedListener;
import com.skydoves.powerspinner.PowerSpinnerView;
import com.skydoves.powerspinner.SpinnerGravity;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -41,11 +29,11 @@ public class tallyType extends inputType {
public inputTypes getInputType(){return inputTypes.TALLY;} public inputTypes getInputType(){return inputTypes.TALLY;}
public dataType.valueTypes getValueType(){return dataType.valueTypes.NUM;} public dataType.valueTypes getValueType(){return dataType.valueTypes.NUM;}
public Object get_fallback_value(){return 0;} public Object get_fallback_value(){return 0;}
public tallyType(){}; public tallyType(){}
public String get_type_name(){return "Dropdown";} public String get_type_name(){return "Dropdown";}
public tallyType(String name, int default_value){ public tallyType(String name, int default_value){
super(name); super(name);
this.default_value = default_value+1; this.default_value = default_value;
} }
@@ -74,15 +62,14 @@ public class tallyType extends inputType {
public View createView(Context context, Function<dataType, Integer> onUpdate){ public View createView(Context context, Function<dataType, Integer> onUpdate){
tally = new TallyCounterView(context); tally = new TallyCounterView(context);
tally.setOnCountChangedListener(n -> { tally.setOnCountChangedListener(n -> onUpdate.apply(getViewValue()));
onUpdate.apply(getViewValue());
});
setViewValue(default_value); setViewValue(default_value);
return tally; return tally;
}; }
public void setViewValue(Object value) { public void setViewValue(Object value) {
if(tally == null) return; if(tally == null) return;
System.out.println(value); System.out.println(value);
@@ -93,7 +80,7 @@ public class tallyType extends inputType {
isBlank = false; isBlank = false;
tally.setVisibility(View.VISIBLE); tally.setVisibility(View.VISIBLE);
tally.setValue((int)value-1); tally.setValue((int)value);
} }
public void nullify(){ public void nullify(){
isBlank = true; isBlank = true;
@@ -102,7 +89,7 @@ public class tallyType extends inputType {
public dataType getViewValue(){ public dataType getViewValue(){
if(tally == null) return null; if(tally == null) return null;
if(tally.getVisibility() == View.GONE) return new intType(name, 0); if(tally.getVisibility() == View.GONE) return new intType(name, 0);
return new intType(name, tally.getValue()+1); return new intType(name, tally.getValue());
} }
@@ -119,7 +106,7 @@ public class tallyType extends inputType {
ViewGroup.LayoutParams.WRAP_CONTENT ViewGroup.LayoutParams.WRAP_CONTENT
)); ));
tv.setGravity(Gravity.CENTER_HORIZONTAL); tv.setGravity(Gravity.CENTER_HORIZONTAL);
tv.setText(String.valueOf((int) data.get()-1)); tv.setText(String.valueOf((int) data.get()));
tv.setTextSize(24); tv.setTextSize(24);
parent.addView(tv); parent.addView(tv);
} }
@@ -142,7 +129,7 @@ public class tallyType extends inputType {
private static float calculateStandardDeviation(int[] data, float mean) { private static float calculateStandardDeviation(int[] data, float mean) {
float sum = 0; float sum = 0;
for (int value : data) { for (int value : data) {
sum += Math.pow((float) value - mean, 2); sum += (float) Math.pow((float) value - mean, 2);
} }
return (float) Math.sqrt(sum / (data.length - 1)); return (float) Math.sqrt(sum / (data.length - 1));
} }
@@ -150,27 +137,26 @@ public class tallyType extends inputType {
private static List<Entry> generateNormalDistribution(float mean, float stdDev, int count, int scale) { private static List<Entry> generateNormalDistribution(float mean, float stdDev, int count, int scale) {
List<Entry> entries = new ArrayList<>(); List<Entry> entries = new ArrayList<>();
for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) {
float x = i;
float y = (float) ((1 / (stdDev * Math.sqrt(2 * Math.PI))) float y = (float) ((1 / (stdDev * Math.sqrt(2 * Math.PI)))
* Math.exp(-0.5 * Math.pow((x - mean) / stdDev, 2))); * Math.exp(-0.5 * Math.pow(((float) i - mean) / stdDev, 2)));
entries.add(new Entry(x, y*scale)); // Scale y for visibility entries.add(new Entry((float) i, y*scale)); // Scale y for visibility
} }
return entries; return entries;
} }
private static int findMin(dataType[] data){ private static int findMin(dataType[] data){
int min = (int)data[0].get()-1; int min = (int)data[0].get();
for(int i = 1; i < data.length; i++) for(int i = 1; i < data.length; i++)
if((int)data[i].get()-1 < min) if((int)data[i].get() < min)
min = (int)data[i].get()-1; min = (int)data[i].get();
return min; return min;
} }
private static int findMax(dataType[] data){ private static int findMax(dataType[] data){
int max = (int)data[0].get()-1; int max = (int)data[0].get();
for(int i = 1; i < data.length; i++) for(int i = 1; i < data.length; i++)
if((int)data[i].get()-1 > max) if((int)data[i].get() > max)
max = (int)data[i].get()-1; max = (int)data[i].get();
return max; return max;
} }
@@ -190,14 +176,14 @@ public class tallyType extends inputType {
int[] values = new int[max-min+1]; int[] values = new int[max-min+1];
for (int i = 0; i < data.length; i++) for (int i = 0; i < data.length; i++)
if((int) data[i].get() != intType.nulval) if(intType.isNull((int) data[i].get()))
values[(int) data[i].get()-min-1]++; values[(int) data[i].get()-min]++;
ArrayList<Integer> mean_temp = new ArrayList<>(); ArrayList<Integer> mean_temp = new ArrayList<>();
for (int i = 0; i < data.length; i++) for (int i = 0; i < data.length; i++)
if((int)data[i].get() != 0) if((int)data[i].get() != 0)
mean_temp.add((int) data[i].get()-1); mean_temp.add((int) data[i].get());
int[] mean_vals = mean_temp.stream().mapToInt(Integer::intValue).toArray(); int[] mean_vals = mean_temp.stream().mapToInt(Integer::intValue).toArray();
@@ -270,7 +256,7 @@ public class tallyType extends inputType {
for (int i = 0; i < data.length; i++){ for (int i = 0; i < data.length; i++){
if(data[i] == null) continue; if(data[i] == null) continue;
entries.add(new Entry(i, (float)(int) data[i].get()-1)); entries.add(new Entry(i, (float)(int) data[i].get()));
} }
@@ -89,7 +89,7 @@ public class textType extends inputType {
}; };
public void setViewValue(Object value) { public void setViewValue(Object value) {
if(text == null) return; if(text == null) return;
if(value.equals(stringType.nulval)){ if(stringType.isNull((String) value)){
nullify(); nullify();
return; return;
} }
@@ -103,7 +103,7 @@ public class textType extends inputType {
} }
public dataType getViewValue(){ public dataType getViewValue(){
if(text == null) return null; if(text == null) return null;
if(text.getVisibility() == View.GONE) return new stringType(name, stringType.nulval); if(text.getVisibility() == View.GONE) return new stringType(name, stringType.nullval);
return new stringType(name, text.getText().toString()); return new stringType(name, text.getText().toString());
} }
@@ -212,7 +212,7 @@ public class TeamsFragment extends Fragment {
ViewGroup.LayoutParams.WRAP_CONTENT ViewGroup.LayoutParams.WRAP_CONTENT
)); ));
tv.setGravity(Gravity.CENTER_HORIZONTAL); tv.setGravity(Gravity.CENTER_HORIZONTAL);
tv.setText(psda.data.array[a].name); tv.setText(psda.data.array[a].getName());
tv.setTextSize(25); tv.setTextSize(25);
if(psda.data.array[a].isNull()){ if(psda.data.array[a].isNull()){
@@ -305,7 +305,7 @@ public class TeamsFragment extends Fragment {
ViewGroup.LayoutParams.WRAP_CONTENT ViewGroup.LayoutParams.WRAP_CONTENT
)); ));
tv.setGravity(Gravity.CENTER_HORIZONTAL); tv.setGravity(Gravity.CENTER_HORIZONTAL);
tv.setText(psda.data.array[a].name); tv.setText(psda.data.array[a].getName());
tv.setTextSize(25); tv.setTextSize(25);
if (psda.data.array[a].isNull()) { if (psda.data.array[a].isNull()) {