From 0dfddb7f89c1393aa3024b6a318776778c555402 Mon Sep 17 00:00:00 2001 From: Astatin3 <77305074+Astatin3@users.noreply.github.com> Date: Sat, 6 Jul 2024 22:35:00 -0600 Subject: [PATCH] Start work on fields editor --- README.md | 4 +- .../scoutingapp2025/ui/data/dataFragment.java | 25 ++++- .../scoutingapp2025/ui/data/fieldsView.java | 89 ++++++++++++++++++ app/src/main/res/layout/fragment_data.xml | 94 ++++++++++++++++++- 4 files changed, 207 insertions(+), 5 deletions(-) create mode 100644 app/src/main/java/com/astatin3/scoutingapp2025/ui/data/fieldsView.java diff --git a/README.md b/README.md index 621e29b..b3490a1 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ TODO: - Make a word cloud for the compiled mode of notes input type - Make pit and match data field builder UIs. I don't want to have to keep editing a variable - Add "history" view type to the teams view menu. +- Add CSV exporting - 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 @@ -17,4 +18,5 @@ TODO: - Make practice mode - AI overview of scouting data for a team??? - Bluetooth data sync -- Test the scouting app \ No newline at end of file +- Statbotics intigration +- Test the scouting app 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 f757366..23d3740 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 @@ -37,7 +37,14 @@ public class dataFragment extends Fragment { if(evcode.equals("unset")){ binding.noEventError.setVisibility(View.VISIBLE); - binding.buttons.setVisibility(View.GONE); + + binding.buttons.setVisibility(View.VISIBLE); + binding.statusButton.setVisibility(View.GONE); + binding.teamsButton.setVisibility(View.GONE); + binding.compileButton.setVisibility(View.GONE); + binding.fieldsButton.setVisibility(View.VISIBLE); + + binding.matchTable.setVisibility(View.GONE); return root; } @@ -58,6 +65,22 @@ public class dataFragment extends Fragment { submenu = true; }); + + + binding.compileButton.setOnClickListener(v -> { +// binding.buttons.setVisibility(View.GONE); +// binding.teamsView.setVisibility(View.VISIBLE); +// binding.teamsView.init(binding, event); +// submenu = true; + }); + + binding.fieldsButton.setOnClickListener(v -> { + binding.buttons.setVisibility(View.GONE); + binding.fieldsView.setVisibility(View.VISIBLE); + binding.fieldsView.init(binding); + submenu = true; + }); + show_ui(); return root; diff --git a/app/src/main/java/com/astatin3/scoutingapp2025/ui/data/fieldsView.java b/app/src/main/java/com/astatin3/scoutingapp2025/ui/data/fieldsView.java new file mode 100644 index 0000000..4423b59 --- /dev/null +++ b/app/src/main/java/com/astatin3/scoutingapp2025/ui/data/fieldsView.java @@ -0,0 +1,89 @@ +package com.astatin3.scoutingapp2025.ui.data; + +import android.content.Context; +import android.util.AttributeSet; +import android.widget.FrameLayout; +import android.widget.ScrollView; +import android.widget.TableLayout; +import android.widget.TableRow; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.constraintlayout.widget.ConstraintLayout; + +import com.astatin3.scoutingapp2025.SettingsVersionStack.latestSettings; +import com.astatin3.scoutingapp2025.databinding.FragmentDataBinding; +import com.astatin3.scoutingapp2025.scoutingData.fields; +import com.astatin3.scoutingapp2025.scoutingData.transfer.transferType; +import com.astatin3.scoutingapp2025.types.frcEvent; +import com.astatin3.scoutingapp2025.types.frcTeam; +import com.astatin3.scoutingapp2025.types.input.inputType; + +public class fieldsView extends ConstraintLayout { + public fieldsView(@NonNull Context context) { + super(context); + } + public fieldsView(Context context, AttributeSet attributeSet){ + super(context, attributeSet); + } + FragmentDataBinding binding; + String filename; + + inputType[][] values; + + public void init(FragmentDataBinding binding) { + this.binding = binding; + + binding.fieldsSelectButtons.setVisibility(VISIBLE); + binding.fieldsSelectButtons.bringToFront(); + + binding.fieldsArea.setStretchAllColumns(true); + + binding.matchScoutingButton.setOnClickListener(v -> { + binding.fieldsSelectButtons.setVisibility(GONE); + filename = fields.matchFieldsFilename; + load_fields(); + }); + + binding.pitScoutingButton.setOnClickListener(v -> { + binding.fieldsSelectButtons.setVisibility(GONE); + filename = fields.pitsFieldsFilename; + load_fields(); + }); + } + + private void load_fields() { + values = fields.load(filename); + + for(int i = 0; i < values.length; i++){ + + TableRow tr = new TableRow(getContext()); + TableLayout.LayoutParams rowParams = new TableLayout.LayoutParams( + FrameLayout.LayoutParams.WRAP_CONTENT, + FrameLayout.LayoutParams.WRAP_CONTENT + ); + + rowParams.setMargins(20,20,20,20); + tr.setLayoutParams(rowParams); + tr.setPadding(20,20,20,20); + binding.fieldsArea.addView(tr); + + tr.setBackgroundColor(0x1000ff00); + + TextView tv = new TextView(getContext()); + tv.setText("v" + i); + tv.setTextSize(20); + tr.addView(tv); + + tv = new TextView(getContext()); + tv.setText(values[i].length + " Fields"); + tv.setTextSize(16); + tr.addView(tv); + +// frcTeam finalTeam = team; + tr.setOnClickListener(v -> { +// loadTeam(finalTeam, latestSettings.settings.get_compiled_mode()); + }); + } + } +} diff --git a/app/src/main/res/layout/fragment_data.xml b/app/src/main/res/layout/fragment_data.xml index 88383b7..d2db874 100644 --- a/app/src/main/res/layout/fragment_data.xml +++ b/app/src/main/res/layout/fragment_data.xml @@ -34,10 +34,10 @@ android:layout_height="wrap_content" android:text="teams" android:textSize="34sp" - app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintTop_toBottomOf="@id/status_button" + app:layout_constraintBottom_toTopOf="@id/compileButton" />