From 72921a7c117e8fba87834cef981553a3168eca28 Mon Sep 17 00:00:00 2001 From: Michael Mikovsky <77305074+Astatin3@users.noreply.github.com> Date: Mon, 7 Apr 2025 21:41:34 -0600 Subject: [PATCH] Fix field updating issue --- .../scoutingData/ScoutingDataWriter.java | 18 +++++++------- .../transfer/CreateTransferType.java | 4 ++-- .../transfer/DirectTransferType.java | 4 ++-- .../scoutingData/transfer/TransferType.java | 20 +++++++++------- .../ridgescout/types/ScoutingArray.java | 19 +++++++-------- .../ridgescout/types/data/DataType.java | 8 +++---- .../ridgescout/ui/data/TeamsFragment.java | 4 ++-- .../ui/settings/FieldsFragment.java | 24 +++++++++---------- 8 files changed, 49 insertions(+), 52 deletions(-) diff --git a/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/ScoutingDataWriter.java b/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/ScoutingDataWriter.java index d059292..7fc0758 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/ScoutingDataWriter.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/ScoutingDataWriter.java @@ -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; } } diff --git a/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/transfer/CreateTransferType.java b/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/transfer/CreateTransferType.java index 977811b..a42cb21 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/transfer/CreateTransferType.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/transfer/CreateTransferType.java @@ -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); } } \ No newline at end of file diff --git a/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/transfer/DirectTransferType.java b/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/transfer/DirectTransferType.java index 2c15787..ca1c319 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/transfer/DirectTransferType.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/transfer/DirectTransferType.java @@ -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); } } diff --git a/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/transfer/TransferType.java b/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/transfer/TransferType.java index 8a5e33f..b279474 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/transfer/TransferType.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/transfer/TransferType.java @@ -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; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/types/ScoutingArray.java b/app/src/main/java/com/ridgebotics/ridgescout/types/ScoutingArray.java index 148c4a1..d9d2bfa 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/types/ScoutingArray.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/types/ScoutingArray.java @@ -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; } diff --git a/app/src/main/java/com/ridgebotics/ridgescout/types/data/DataType.java b/app/src/main/java/com/ridgebotics/ridgescout/types/data/DataType.java index 1c530ac..886776e 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/types/data/DataType.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/types/data/DataType.java @@ -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; } } \ No newline at end of file diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/data/TeamsFragment.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/data/TeamsFragment.java index 786b5c0..4f61bf6 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/data/TeamsFragment.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/data/TeamsFragment.java @@ -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()) { diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/settings/FieldsFragment.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/settings/FieldsFragment.java index a50e93b..8c2393e 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/settings/FieldsFragment.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/settings/FieldsFragment.java @@ -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))