Fix field updating issue

This commit is contained in:
Michael Mikovsky
2025-04-07 21:41:34 -06:00
parent eaa14adbd9
commit 72921a7c11
8 changed files with 49 additions and 52 deletions
@@ -28,15 +28,15 @@ public class ScoutingDataWriter {
switch (data[i].getValueType()){
case NUM:
bb.addInt((int) data[i].forceGetValue());
System.out.println("Saved INT: " + data[i].getName() + ", ("+ data[i].get() +")");
System.out.println("Saved INT: " + data[i].getUUID() + ", ("+ data[i].get() +")");
break;
case STRING:
bb.addString((String) data[i].forceGetValue());
System.out.println("Saved STR: " + data[i].getName() + ", ("+ data[i].get() +")");
System.out.println("Saved STR: " + data[i].getUUID() + ", ("+ data[i].get() +")");
break;
case NUMARR:
bb.addIntArray((int[]) data[i].forceGetValue());
System.out.println("Saved INT Array: " + data[i].getName() + ", ("+ Arrays.toString((int[]) data[i].get()) +")");
System.out.println("Saved INT Array: " + data[i].getUUID() + ", ("+ Arrays.toString((int[]) data[i].get()) +")");
}
}
byte[] bytes = bb.build();
@@ -69,19 +69,19 @@ 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].name);
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 + ", ("+ dataTypes[i].get() +")");
System.out.println("Loaded INT: " + values[version][i].name + " (" + values[version][i].UUID + ") " + ", ("+ dataTypes[i].get() +")");
break;
case 2: // String
dataTypes[i] = StringType.newNull(values[version][i].name);
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 + ", ("+ dataTypes[i].get() +")");
System.out.println("Loaded STR: " + values[version][i].name + " (" + values[version][i].UUID + ") " + ", ("+ dataTypes[i].get() +")");
break;
case 3: // Int array
dataTypes[i] = IntArrType.newNull(values[version][i].name);
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 + ", ("+ Arrays.toString((int[])dataTypes[i].get()) +")");
System.out.println("Loaded intARR: " + values[version][i].name + " (" + values[version][i].UUID + ") " + ", ("+ Arrays.toString((int[])dataTypes[i].get()) +")");
break;
}
}
@@ -2,7 +2,7 @@ package com.ridgebotics.ridgescout.scoutingData.transfer;
public class CreateTransferType extends TransferType {
public transferValue getType() {return transferValue.CREATE;}
public CreateTransferType(String name){
super(name);
public CreateTransferType(String UUID){
super(UUID);
}
}
@@ -2,7 +2,7 @@ package com.ridgebotics.ridgescout.scoutingData.transfer;
public class DirectTransferType extends TransferType {
public transferValue getType() {return transferValue.DIRECT;}
public DirectTransferType(String name){
super(name);
public DirectTransferType(String UUID){
super(UUID);
}
}
@@ -7,15 +7,15 @@ public abstract class TransferType {
DIRECT,
CREATE
}
public String name;
public String UUID;
public abstract transferValue getType();
public TransferType(String name){
this.name = name;
public TransferType(String UUID){
this.UUID = UUID;
}
private static FieldType get_input_type_by_name(FieldType[] values, String name){
private static FieldType get_input_type_by_UUID(FieldType[] values, String UUID){
for(FieldType it : values){
if(it.name.equals(name)){
if(it.UUID.equals(UUID)){
return it;
}
}
@@ -25,13 +25,15 @@ public abstract class TransferType {
public static TransferType[][] get_transfer_values(FieldType[][] values) {
TransferType[][] output = new TransferType[values.length][];
for(int a = 1; a < values.length; a++){
TransferType[] v = new TransferType[values[a].length];
for(int b = 0; b < values[a].length; b++){
String name = values[a][b].name;
if(get_input_type_by_name(values[a-1], name) != null){
v[b] = new DirectTransferType(name);
String UUID = values[a][b].UUID;
if(get_input_type_by_UUID(values[a-1], UUID) != null){
v[b] = new DirectTransferType(UUID);
}else{
v[b] = new CreateTransferType(name);
v[b] = new CreateTransferType(UUID);
}
}
output[a-1] = v;
@@ -36,9 +36,6 @@ public class ScoutingArray {
case DIRECT:
new_values[i] = direct_transfer((DirectTransferType) tv);
continue;
// case RENAME:
// new_values[i] = rename_transfer((renameTransferType) tv);
// continue;
case CREATE:
new_values[i] = create_transfer((CreateTransferType) tv);
continue;
@@ -50,18 +47,18 @@ public class ScoutingArray {
}
}
private FieldType get_input_type_by_name(int version, String name){
private FieldType get_input_type_by_UUID(int version, String UUID){
for(FieldType it : values[version]){
if(it.name.equals(name)){
if(it.UUID.equals(UUID)){
return it;
}
}
return null;
}
private DataType get_data_type_by_name(String name){
private DataType get_data_type_by_UUID(String UUID){
for(DataType dt : array){
if(dt.getName().equals(name)){
if(dt.getUUID().equals(UUID)){
return dt;
}
}
@@ -69,7 +66,7 @@ public class ScoutingArray {
}
private DataType direct_transfer(DirectTransferType tv){
return get_data_type_by_name(tv.name);
return get_data_type_by_UUID(tv.UUID);
}
// private dataType rename_transfer(renameTransferType tv){
@@ -79,12 +76,12 @@ public class ScoutingArray {
// }
private DataType create_transfer(CreateTransferType tv){
FieldType it = get_input_type_by_name(version+1, tv.name);
FieldType it = get_input_type_by_UUID(version+1, tv.UUID);
switch (it.getValueType()){
case NUM:
return IntType.newNull(it.name);
return IntType.newNull(it.UUID);
case STRING:
return StringType.newNull(it.name);
return StringType.newNull(it.UUID);
}
return null;
}
@@ -8,7 +8,7 @@ public abstract class DataType {
}
private Object value;
private final String name;
private final String UUID;
public abstract valueTypes getValueType();
@@ -24,9 +24,9 @@ public abstract class DataType {
public abstract boolean isNull();
// public abstract boolean isUnselected();
public String getName() {return name;}
public String getUUID() {return UUID;}
public DataType(String name){
this.name = name;
public DataType(String UUID){
this.UUID = UUID;
}
}
@@ -146,7 +146,7 @@ public class TeamsFragment extends Fragment {
ViewGroup.LayoutParams.WRAP_CONTENT
));
tv.setGravity(Gravity.CENTER_HORIZONTAL);
tv.setText(psda.data.array[a].getName());
tv.setText(pit_latest_values[a].name);
tv.setTextSize(25);
if(psda.data.array[a].isNull()){
@@ -251,7 +251,7 @@ public class TeamsFragment extends Fragment {
ViewGroup.LayoutParams.WRAP_CONTENT
));
tv.setGravity(Gravity.CENTER_HORIZONTAL);
tv.setText(psda.data.array[i].getName());
tv.setText(match_latest_values[i].name);
tv.setTextSize(25);
if (psda.data.array[i].isNull()) {
@@ -1,16 +1,12 @@
package com.ridgebotics.ridgescout.ui.settings;
import static com.ridgebotics.ridgescout.utility.DataManager.match_values;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TableLayout;
import android.widget.TextView;
@@ -151,6 +147,7 @@ public class FieldsFragment extends Fragment {
binding.fieldsArea.addView(fd);
}
private void updateRowOrder(){
enableSaving();
binding.fieldsArea.removeAllViews();
for(int i = 0; i < views.size(); i++){
binding.fieldsArea.addView(views.get(i));
@@ -158,7 +155,6 @@ public class FieldsFragment extends Fragment {
binding.upButton.setEnabled(index != -1 && index > 0);
binding.downButton.setEnabled(index != -1 && index < views.size()-1);
enableEditing();
}
private void setFocus(FieldDisplay fd, boolean scroll){
@@ -201,7 +197,7 @@ public class FieldsFragment extends Fragment {
alert.setPositiveButton("Save", (dialogInterface, i) -> {
f.save();
fd.setInputType(field);
enableEditing();
enableSaving();
});
AlertDialog dialog = alert.create();
@@ -226,7 +222,7 @@ public class FieldsFragment extends Fragment {
table.addView(deleteButton);
}
private void enableEditing(){
private void enableSaving(){
edited = true;
binding.saveButton.setEnabled(true);
}
@@ -237,6 +233,7 @@ public class FieldsFragment extends Fragment {
values.add(field);
createFieldDisplay(field);
setFocus(views.get(views.size()-1), true);
enableSaving();
}
private void removeField(FieldType field){
@@ -257,15 +254,16 @@ public class FieldsFragment extends Fragment {
alert.setPositiveButton("OK", (dialog, which) -> {
FieldType[][] currentValues = Fields.load(filename);
assert currentValues != null;
FieldType[][] newValues = new FieldType[currentValues.length][];
newValues[newValues.length-1] = new FieldType[values.size()];
FieldType[][] newValues = new FieldType[currentValues.length+1][];
for(int i = 0; i < currentValues.length; i++) {
newValues[i] = currentValues[i];
}
System.arraycopy(currentValues, 0, newValues, 0, currentValues.length);
System.out.println("Length: " + values.size());
newValues[currentValues.length] = new FieldType[values.size()];
for(int i = 0; i < values.size(); i++) {
newValues[newValues.length - 1][i] = values.get(i);
FieldType value = values.get(i);
newValues[currentValues.length][i] = value;
}
if(Fields.save(filename, newValues))