From 96cdda23caed9b6a0b76c12df73c1b5d39dc2933 Mon Sep 17 00:00:00 2001 From: Astatin3 <77305074+Astatin3@users.noreply.github.com> Date: Thu, 1 Aug 2024 11:54:46 -0600 Subject: [PATCH] Some random bugfixes and changes --- README.md | 7 +- .../scoutingapp2025/types/frcEvent.java | 45 +++++++----- .../types/input/dropdownType.java | 9 ++- .../ui/TeamSelectorFragment.java | 13 ++-- ...mpileFragment.java => ReportFragment.java} | 8 +-- .../ui/data/TeamsFragment.java | 4 +- .../scoutingapp2025/ui/data/dataFragment.java | 11 +-- .../ui/scouting/PitScoutingFragment.java | 2 +- .../ui/scouting/ScoutingFragment.java | 5 +- .../ui/{data => scouting}/StatusFragment.java | 8 +-- app/src/main/res/layout/fragment_data.xml | 69 +++++++++---------- ..._compile.xml => fragment_data_compare.xml} | 0 .../main/res/layout/fragment_data_report.xml | 18 +++++ app/src/main/res/layout/fragment_scouting.xml | 15 +++- ...tatus.xml => fragment_scouting_status.xml} | 0 app/src/main/res/layout/fragment_settings.xml | 2 - .../main/res/navigation/mobile_navigation.xml | 15 ++-- 17 files changed, 129 insertions(+), 102 deletions(-) rename app/src/main/java/com/astatin3/scoutingapp2025/ui/data/{CompileFragment.java => ReportFragment.java} (66%) rename app/src/main/java/com/astatin3/scoutingapp2025/ui/{data => scouting}/StatusFragment.java (95%) rename app/src/main/res/layout/{fragment_data_compile.xml => fragment_data_compare.xml} (100%) create mode 100644 app/src/main/res/layout/fragment_data_report.xml rename app/src/main/res/layout/{fragment_data_status.xml => fragment_scouting_status.xml} (100%) diff --git a/README.md b/README.md index 5fa196b..2be6df7 100644 --- a/README.md +++ b/README.md @@ -3,11 +3,11 @@ Ridgebotics 2025 scouting app in Android ## TODO: #### Scouting: -- Make the "Compile" menu -- The compile menu should be a shortcut to view all the team's stats from the upcoming match, from the teams view +- Make the "Compare" menu, cross comparing team's stats. +- Make the "Report" menu, A tool that lets users select data to display from the the teams and compare menus. - Make practice mode #### Data Analysis: -- Add CSV exporting +- Add CSV exporting of match scouting data. - Statbotics intigration - AI overview of scouting data for a team??? #### Functionality: @@ -18,7 +18,6 @@ Ridgebotics 2025 scouting app in Android ## In Progress: #### Scouting: #### Data Analysis: -- Make a word cloud for the compiled mode of text input type #### Functionality: - Make pit and match data field builder UIs. I don't want to have to keep editing a variable - Test the scouting app diff --git a/app/src/main/java/com/astatin3/scoutingapp2025/types/frcEvent.java b/app/src/main/java/com/astatin3/scoutingapp2025/types/frcEvent.java index 8359572..b21608c 100644 --- a/app/src/main/java/com/astatin3/scoutingapp2025/types/frcEvent.java +++ b/app/src/main/java/com/astatin3/scoutingapp2025/types/frcEvent.java @@ -1,44 +1,44 @@ package com.astatin3.scoutingapp2025.types; import androidx.annotation.NonNull; - import com.astatin3.scoutingapp2025.utility.AlertManager; import com.astatin3.scoutingapp2025.utility.BuiltByteParser; import com.astatin3.scoutingapp2025.utility.ByteBuilder; - import java.util.ArrayList; public class frcEvent { + public static final int typecode = 254; public String eventCode; public String name; public ArrayList matches; public ArrayList teams; - public byte[] encode(){ + public byte[] encode() { try { ByteBuilder bb = new ByteBuilder() - .addString(eventCode) - .addString(name); + .addString(eventCode) + .addString(name); - for(frcTeam teams : teams){ + for (frcTeam teams : teams) { bb.addRaw(frcTeam.typecode, teams.encode()); } - for(frcMatch match : matches){ + for (frcMatch match : matches) { bb.addRaw(frcMatch.typecode, match.encode()); } return bb.build(); - } catch (ByteBuilder.buildingException e) { AlertManager.error(e); return null; } } - public static frcEvent decode(byte[] bytes){ - try{ - ArrayList objects = new BuiltByteParser(bytes).parse(); + + public static frcEvent decode(byte[] bytes) { + try { + ArrayList objects = + new BuiltByteParser(bytes).parse(); frcEvent frc = new frcEvent(); @@ -48,23 +48,32 @@ public class frcEvent { frc.matches = new ArrayList<>(); frc.teams = new ArrayList<>(); - for(BuiltByteParser.parsedObject object : objects){ - if(object.getType() == frcTeam.typecode){ + for (BuiltByteParser.parsedObject object : objects) { + if (object.getType() == frcTeam.typecode) { frc.teams.add(frcTeam.decode((byte[]) object.get())); - }else if(object.getType() == frcMatch.typecode){ + } else if (object.getType() == frcMatch.typecode) { frc.matches.add(frcMatch.decode((byte[]) object.get())); } } return frc; - - }catch (BuiltByteParser.byteParsingExeption e){ + } catch (BuiltByteParser.byteParsingExeption e) { AlertManager.error(e); return null; } } + @NonNull - public String toString(){ - return "frcEvent Name: " + name + ", Code: " + eventCode + " numTeams: " + teams.size() + " numMatches: " + matches.size(); + public String toString() { + return ( + "frcEvent Name: " + + name + + ", Code: " + + eventCode + + " numTeams: " + + teams.size() + + " numMatches: " + + matches.size() + ); } } diff --git a/app/src/main/java/com/astatin3/scoutingapp2025/types/input/dropdownType.java b/app/src/main/java/com/astatin3/scoutingapp2025/types/input/dropdownType.java index ff4a32c..bfb1e70 100644 --- a/app/src/main/java/com/astatin3/scoutingapp2025/types/input/dropdownType.java +++ b/app/src/main/java/com/astatin3/scoutingapp2025/types/input/dropdownType.java @@ -82,18 +82,21 @@ public class dropdownType extends inputType { iconSpinnerItems.add(new IconSpinnerItem(text_options[i])); } IconSpinnerAdapter iconSpinnerAdapter = new IconSpinnerAdapter(dropdown); + + dropdown.setGravity(Gravity.CENTER); + dropdown.setSpinnerAdapter(iconSpinnerAdapter); dropdown.setItems(iconSpinnerItems); dropdown.selectItemByIndex((int) default_value); - dropdown.setPadding(10,10,10,10); + dropdown.setPadding(10,20,10,20); dropdown.setBackgroundColor(0xf0000000); dropdown.setTextColor(0xff00ff00); - dropdown.setTextSize(15); + dropdown.setTextSize(14.5f); dropdown.setArrowGravity(SpinnerGravity.END); dropdown.setArrowPadding(8); - dropdown.setSpinnerItemHeight(46); +// dropdown.setSpinnerItemHeight(46); dropdown.setSpinnerPopupElevation(14); diff --git a/app/src/main/java/com/astatin3/scoutingapp2025/ui/TeamSelectorFragment.java b/app/src/main/java/com/astatin3/scoutingapp2025/ui/TeamSelectorFragment.java index ebfad3b..96e7fed 100644 --- a/app/src/main/java/com/astatin3/scoutingapp2025/ui/TeamSelectorFragment.java +++ b/app/src/main/java/com/astatin3/scoutingapp2025/ui/TeamSelectorFragment.java @@ -1,5 +1,8 @@ package com.astatin3.scoutingapp2025.ui; +import static com.astatin3.scoutingapp2025.utility.DataManager.evcode; +import static com.astatin3.scoutingapp2025.utility.DataManager.event; + import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; @@ -18,6 +21,7 @@ import com.astatin3.scoutingapp2025.databinding.FragmentTeamSelectorBinding; import com.astatin3.scoutingapp2025.types.frcEvent; import com.astatin3.scoutingapp2025.types.frcTeam; import com.astatin3.scoutingapp2025.utility.AlertManager; +import com.astatin3.scoutingapp2025.utility.DataManager; import com.astatin3.scoutingapp2025.utility.fileEditor; import java.util.Arrays; @@ -25,13 +29,6 @@ import java.util.Arrays; public class TeamSelectorFragment extends Fragment { private FragmentTeamSelectorBinding binding; - private String evcode; - - private static frcEvent event; - public static void setEvent(frcEvent tmpevent){ - event = tmpevent; - } - private static boolean pits_mode; public static void setPits_mode(boolean mode){ pits_mode = mode; @@ -52,7 +49,7 @@ public class TeamSelectorFragment extends Fragment { binding = FragmentTeamSelectorBinding.inflate(inflater, container, false); // event = fileEditor.g - evcode = latestSettings.settings.get_evcode(); + DataManager.reload_event(); if(evcode == null || evcode.equals("unset")){ AlertManager.error("You somehow have not loaded an event!"); diff --git a/app/src/main/java/com/astatin3/scoutingapp2025/ui/data/CompileFragment.java b/app/src/main/java/com/astatin3/scoutingapp2025/ui/data/ReportFragment.java similarity index 66% rename from app/src/main/java/com/astatin3/scoutingapp2025/ui/data/CompileFragment.java rename to app/src/main/java/com/astatin3/scoutingapp2025/ui/data/ReportFragment.java index 142bd06..db8bc57 100644 --- a/app/src/main/java/com/astatin3/scoutingapp2025/ui/data/CompileFragment.java +++ b/app/src/main/java/com/astatin3/scoutingapp2025/ui/data/ReportFragment.java @@ -9,15 +9,15 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; -import com.astatin3.scoutingapp2025.databinding.FragmentDataCompileBinding; +import com.astatin3.scoutingapp2025.databinding.FragmentDataReportBinding; -public class CompileFragment extends Fragment { - FragmentDataCompileBinding binding; +public class ReportFragment extends Fragment { + FragmentDataReportBinding binding; public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - binding = FragmentDataCompileBinding.inflate(inflater, container, false); + binding = FragmentDataReportBinding.inflate(inflater, container, false); return binding.getRoot(); } diff --git a/app/src/main/java/com/astatin3/scoutingapp2025/ui/data/TeamsFragment.java b/app/src/main/java/com/astatin3/scoutingapp2025/ui/data/TeamsFragment.java index a75d764..38c7f0f 100644 --- a/app/src/main/java/com/astatin3/scoutingapp2025/ui/data/TeamsFragment.java +++ b/app/src/main/java/com/astatin3/scoutingapp2025/ui/data/TeamsFragment.java @@ -96,13 +96,13 @@ public class TeamsFragment extends Fragment { dropdown.selectItemByIndex(0); - dropdown.setPadding(15,15,15,15); + dropdown.setPadding(10,20,10,20); dropdown.setBackgroundColor(0xf0000000); dropdown.setTextColor(0xff00ff00); dropdown.setTextSize(15); dropdown.setArrowGravity(SpinnerGravity.END); dropdown.setArrowPadding(8); - dropdown.setSpinnerItemHeight(46); +// dropdown.setSpinnerItemHeight(46); dropdown.setSpinnerPopupElevation(14); diff --git a/app/src/main/java/com/astatin3/scoutingapp2025/ui/data/dataFragment.java b/app/src/main/java/com/astatin3/scoutingapp2025/ui/data/dataFragment.java index 97ca8a8..1b2f5af 100644 --- a/app/src/main/java/com/astatin3/scoutingapp2025/ui/data/dataFragment.java +++ b/app/src/main/java/com/astatin3/scoutingapp2025/ui/data/dataFragment.java @@ -41,9 +41,9 @@ public class dataFragment extends Fragment { binding.noEventError.setVisibility(View.VISIBLE); binding.buttons.setVisibility(View.VISIBLE); - binding.statusButton.setVisibility(View.GONE); binding.teamsButton.setVisibility(View.GONE); - binding.compileButton.setVisibility(View.GONE); + binding.compareButton.setVisibility(View.GONE); + binding.reportButton.setVisibility(View.GONE); binding.fieldsButton.setVisibility(View.VISIBLE); @@ -52,12 +52,7 @@ public class dataFragment extends Fragment { frcEvent event = frcEvent.decode(fileEditor.readFile(evcode + ".eventdata")); - binding.statusButton.setOnClickListener(v -> { - findNavController(this).navigate(R.id.action_navigation_data_to_navigation_data_status); - }); - binding.teamsButton.setOnClickListener(v -> { - TeamSelectorFragment.setEvent(event); TeamSelectorFragment.setPits_mode(false); TeamSelectorFragment.setOnSelect(new TeamSelectorFragment.onTeamSelected() { @Override @@ -69,7 +64,7 @@ public class dataFragment extends Fragment { findNavController(this).navigate(R.id.action_navigation_data_to_navigation_team_selector); }); - binding.compileButton.setOnClickListener(v -> { + binding.reportButton.setOnClickListener(v -> { findNavController(this).navigate(R.id.action_navigation_data_to_navigation_data_compile); }); diff --git a/app/src/main/java/com/astatin3/scoutingapp2025/ui/scouting/PitScoutingFragment.java b/app/src/main/java/com/astatin3/scoutingapp2025/ui/scouting/PitScoutingFragment.java index 4b7e50e..108227a 100644 --- a/app/src/main/java/com/astatin3/scoutingapp2025/ui/scouting/PitScoutingFragment.java +++ b/app/src/main/java/com/astatin3/scoutingapp2025/ui/scouting/PitScoutingFragment.java @@ -1,5 +1,6 @@ package com.astatin3.scoutingapp2025.ui.scouting; +import static com.astatin3.scoutingapp2025.utility.DataManager.evcode; import static com.astatin3.scoutingapp2025.utility.DataManager.pit_latest_values; import static com.astatin3.scoutingapp2025.utility.DataManager.pit_transferValues; import static com.astatin3.scoutingapp2025.utility.DataManager.pit_values; @@ -54,7 +55,6 @@ public class PitScoutingFragment extends Fragment { boolean edited = false; - String evcode; String filename; String username; diff --git a/app/src/main/java/com/astatin3/scoutingapp2025/ui/scouting/ScoutingFragment.java b/app/src/main/java/com/astatin3/scoutingapp2025/ui/scouting/ScoutingFragment.java index 803ae6e..24e76ad 100644 --- a/app/src/main/java/com/astatin3/scoutingapp2025/ui/scouting/ScoutingFragment.java +++ b/app/src/main/java/com/astatin3/scoutingapp2025/ui/scouting/ScoutingFragment.java @@ -53,7 +53,6 @@ public class ScoutingFragment extends Fragment { }); binding.pitScoutingButton.setOnClickListener(v -> { - TeamSelectorFragment.setEvent(event); TeamSelectorFragment.setPits_mode(true); TeamSelectorFragment.setOnSelect(new TeamSelectorFragment.onTeamSelected() { @Override @@ -65,6 +64,10 @@ public class ScoutingFragment extends Fragment { findNavController(this).navigate(R.id.action_navigation_scouting_to_navigation_team_selector); }); + binding.statusButton.setOnClickListener(v -> { + findNavController(this).navigate(R.id.action_navigation_data_to_navigation_data_status); + }); + return binding.getRoot(); } diff --git a/app/src/main/java/com/astatin3/scoutingapp2025/ui/data/StatusFragment.java b/app/src/main/java/com/astatin3/scoutingapp2025/ui/scouting/StatusFragment.java similarity index 95% rename from app/src/main/java/com/astatin3/scoutingapp2025/ui/data/StatusFragment.java rename to app/src/main/java/com/astatin3/scoutingapp2025/ui/scouting/StatusFragment.java index 581d607..7ea3a75 100644 --- a/app/src/main/java/com/astatin3/scoutingapp2025/ui/data/StatusFragment.java +++ b/app/src/main/java/com/astatin3/scoutingapp2025/ui/scouting/StatusFragment.java @@ -1,4 +1,4 @@ -package com.astatin3.scoutingapp2025.ui.data; +package com.astatin3.scoutingapp2025.ui.scouting; import static com.astatin3.scoutingapp2025.utility.DataManager.event; @@ -14,7 +14,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; -import com.astatin3.scoutingapp2025.databinding.FragmentDataStatusBinding; +import com.astatin3.scoutingapp2025.databinding.FragmentScoutingStatusBinding; import com.astatin3.scoutingapp2025.utility.DataManager; import com.astatin3.scoutingapp2025.utility.fileEditor; import com.astatin3.scoutingapp2025.types.frcEvent; @@ -23,12 +23,12 @@ import com.astatin3.scoutingapp2025.types.frcMatch; import java.util.Arrays; public class StatusFragment extends Fragment { - FragmentDataStatusBinding binding; + FragmentScoutingStatusBinding binding; public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - binding = FragmentDataStatusBinding.inflate(inflater, container, false); + binding = FragmentScoutingStatusBinding.inflate(inflater, container, false); DataManager.reload_event(); binding.matchTable.removeAllViews(); diff --git a/app/src/main/res/layout/fragment_data.xml b/app/src/main/res/layout/fragment_data.xml index 0b34ea1..a594c04 100644 --- a/app/src/main/res/layout/fragment_data.xml +++ b/app/src/main/res/layout/fragment_data.xml @@ -27,50 +27,49 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> -