From 365613be700e4edc181c2af70f08dcd5f1021d72 Mon Sep 17 00:00:00 2001
From: IbrahimSaeedPurdue
<54752803+IbrahimSaeedPurdue@users.noreply.github.com>
Date: Thu, 11 Feb 2021 00:51:01 -0500
Subject: [PATCH 01/15] feature/Basic inspection form UI
---
.idea/.name | 1 +
.idea/vcs.xml | 6 +
app/src/main/AndroidManifest.xml | 1 +
.../InspectionForm.java | 128 ++++++++++++++++++
.../home/HomeFragment.java | 10 ++
app/src/main/res/values/strings.xml | 2 +
6 files changed, 148 insertions(+)
create mode 100644 .idea/.name
create mode 100644 .idea/vcs.xml
create mode 100644 app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java
diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 0000000..c6e7f40
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+StormWaterUtilityAndroid
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 5d437cc..1f7f4e7 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -20,6 +20,7 @@
+
diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java b/app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java
new file mode 100644
index 0000000..d39429e
--- /dev/null
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java
@@ -0,0 +1,128 @@
+package com.sf.stormwaterutilityandroid;
+
+import android.os.Bundle;
+import android.widget.Button;
+
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.recyclerview.widget.RecyclerView;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import me.riddhimanadib.formmaster.FormBuilder;
+import me.riddhimanadib.formmaster.model.BaseFormElement;
+import me.riddhimanadib.formmaster.model.FormElementPickerDate;
+import me.riddhimanadib.formmaster.model.FormElementPickerMulti;
+import me.riddhimanadib.formmaster.model.FormElementPickerSingle;
+import me.riddhimanadib.formmaster.model.FormElementSwitch;
+import me.riddhimanadib.formmaster.model.FormElementTextEmail;
+import me.riddhimanadib.formmaster.model.FormElementTextMultiLine;
+import me.riddhimanadib.formmaster.model.FormElementTextPhone;
+import me.riddhimanadib.formmaster.model.FormElementTextSingleLine;
+import me.riddhimanadib.formmaster.model.FormHeader;
+
+public class InspectionForm extends AppCompatActivity {
+ private FormBuilder formBuilder;
+ private RecyclerView recyclerView;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_sample_fordm);
+ recyclerView = findViewById(R.id.recyclerView2);
+ setupForm();
+ }
+
+
+ private void setupForm() {
+ formBuilder = new FormBuilder(this, recyclerView);
+
+
+
+ FormElementTextSingleLine projectTextField = FormElementTextSingleLine.createInstance().setTitle("Project/Contact:").setHint("Enter text here");
+ FormElementTextSingleLine addressTextField = FormElementTextSingleLine.createInstance().setTitle("Address/Lot#(s):").setHint("Enter text here");
+ FormElementTextSingleLine inspectorTextField = FormElementTextSingleLine.createInstance().setTitle("Inspector:").setHint("Enter name here");
+ FormElementPickerDate dataInspectedDatePicker = FormElementPickerDate.createInstance().setTitle("Date Inspected:").setDateFormat("MMM dd, yyyy");
+
+
+ List typeOptions = new ArrayList<>(Arrays.asList(
+ "Routine Evaluation",
+ "Re-Inspection",
+ "Complaint Investigation",
+ "Entire Development",
+ "Individual Building Lot(s)"
+ ));
+ FormElementPickerSingle inspectionTypePickerSingle = FormElementPickerSingle.createInstance().setTitle("Inspection type:").setOptions(typeOptions).setPickerTitle("Pick inspection type");
+
+ FormElementSwitch projectRepPresentSwitch = FormElementSwitch.createInstance().setTitle("Project Representative Present?").setSwitchTexts("Yes", "No");
+
+ FormHeader stakeholdersHeader = FormHeader.createInstance("THE FOLLOWING INDIVIDUALS BECAME AWARE OF ANY ISSUES THOUGH DISCUSSION AND REVIEW OF FINDINGS ON THE DAY OF INSPECTION:");
+ FormElementTextSingleLine projectManagerTextField = FormElementTextSingleLine.createInstance().setTitle("Project Manager:").setHint("Enter name here");
+ FormElementTextSingleLine siteManagerTextField = FormElementTextSingleLine.createInstance().setTitle("Site Manager:").setHint("Enter name here");
+ FormElementTextSingleLine projectOwnerTextField = FormElementTextSingleLine.createInstance().setTitle("Project Owner").setHint("Enter name here");
+
+
+ FormHeader correctiveActionsHeader = FormHeader.createInstance("CORRECTIVE ACTIONS REQUIRED\n***REDER TO APPROVED STORM WATER POLLUTION PREVENTION PLAN (SWP3) FOR SPECIFICATIONS AND DETAILS ON ITEMS BELOW***");
+ List correctiveActionsOptions= new ArrayList<>(Arrays.asList(
+ "Post a laminated copy of completed 327IAC15-5 \"Rule 5\" NOI with permit number at a location visible to the public",
+ "Remove accumulated sediment from streets sidewalks and gutters (do not flush with water)",
+ "Install/maintain stable temporary construction entrances(s)", "Entire Development",
+ "Individual Building Lot(s)",
+ "Address silt fence issues which includes one or more of the following: Repair, install properly, Replace, Add (areas prone to sheet-flow erosion)",
+ "Install erosions and sediment control for individual building lot(s) as specified in the approved SWP3",
+ "Install check dam(s) according to specifications",
+ "Utilize appropriate construction sequence as specified in the approved SWP3",
+ "Remove sediment from one or more of the following: sediment traps, behind check dams, around storm drain inlets or/and other",
+ "Inform Contractors, subcontractors, material vendors, and others or erosion and sediment control requirements",
+ "Provide copy and self-monitoring inspection records to MS Coordinator within 48 hours",
+ "Acquire copy of Storm Water Pollution Prevention Plan and retain on project site for reference"
+ ));
+ FormElementPickerMulti correctiveActionsPickerMulti = FormElementPickerMulti.createInstance().setTitle("Corrective Actions").setOptions(correctiveActionsOptions).setPickerTitle("Pick corrective action");
+
+ FormElementTextMultiLine otherCorrectiveAction1TextField = FormElementTextMultiLine.createInstance().setTitle("Other 1:").setHint("Enter text here");
+ FormElementTextMultiLine otherCorrectiveAction2TextField = FormElementTextMultiLine.createInstance().setTitle("Other 2:").setHint("Enter text here");
+ FormElementTextMultiLine otherCorrectiveAction3TextField = FormElementTextMultiLine.createInstance().setTitle("Other 3:").setHint("Enter text here");
+
+
+ FormHeader enforcementActionHeader = FormHeader.createInstance("ENFORCEMENT ACTIONS");
+ List enforcementActionOptions = new ArrayList<>(Arrays.asList(
+ "Notice of Violation Issued",
+ "Stop Work Order Issued",
+ "Fine(s) Issued",
+ "Other"
+ ));
+ FormElementPickerSingle enforcementActionPickerSingle = FormElementPickerSingle.createInstance().setTitle("Inspection type:").setOptions(enforcementActionOptions).setPickerTitle("Pick inspection type");
+
+ FormElementTextMultiLine evidenceTextField = FormElementTextMultiLine.createInstance().setTitle("Evidence of off-site sediment/pollutants.\nHere is a description of type and location:").setHint("Enter text here");
+
+ List formItems = new ArrayList<>();
+
+ formItems.add(projectTextField);
+ formItems.add(addressTextField);
+ formItems.add(inspectorTextField);
+ formItems.add(dataInspectedDatePicker);
+
+ formItems.add(inspectionTypePickerSingle);
+ formItems.add(projectRepPresentSwitch);
+
+ formItems.add(stakeholdersHeader);
+ formItems.add(projectManagerTextField);
+ formItems.add(siteManagerTextField);
+ formItems.add(projectOwnerTextField);
+
+ formItems.add(correctiveActionsHeader);
+ formItems.add(correctiveActionsPickerMulti);
+ formItems.add(otherCorrectiveAction1TextField);
+ formItems.add(otherCorrectiveAction2TextField);
+ formItems.add(otherCorrectiveAction3TextField);
+
+ formItems.add(enforcementActionHeader);
+ formItems.add(enforcementActionPickerSingle);
+
+ formItems.add(evidenceTextField);
+
+ formBuilder.addFormElements(formItems);
+
+ }
+}
diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/home/HomeFragment.java b/app/src/main/java/com/sf/stormwaterutilityandroid/home/HomeFragment.java
index 7809a22..75b11d9 100644
--- a/app/src/main/java/com/sf/stormwaterutilityandroid/home/HomeFragment.java
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/home/HomeFragment.java
@@ -10,6 +10,7 @@
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
+import com.sf.stormwaterutilityandroid.InspectionForm;
import com.sf.stormwaterutilityandroid.R;
import com.sf.stormwaterutilityandroid.SampleFordm;
@@ -31,6 +32,15 @@ public void onClick(View view) {
}
});
+ b1 = root.findViewById(R.id.button2);
+ b1.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ startActivity(new Intent(getContext(), InspectionForm.class));
+ }
+ });
+
+
//CHeck To5a.03 project for dealing saved instance state
/*
if (savedInstanceState != null) {
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 85a4fdb..381a669 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -46,4 +46,6 @@
Registered Successfully! An email has been sent to verify your email; this must be done before logging in.
Sign in
+
+
\ No newline at end of file
From 4172104d7214222225be38b84eb11abfcb5feca7 Mon Sep 17 00:00:00 2001
From: IbrahimSaeedPurdue
<54752803+IbrahimSaeedPurdue@users.noreply.github.com>
Date: Thu, 11 Feb 2021 16:24:02 -0500
Subject: [PATCH 02/15] feature/added submit button listener
---
.../stormwaterutilityandroid/InspectionForm.java | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java b/app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java
index d39429e..0098a52 100644
--- a/app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java
@@ -1,6 +1,7 @@
package com.sf.stormwaterutilityandroid;
import android.os.Bundle;
+import android.view.View;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
@@ -31,6 +32,7 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sample_fordm);
recyclerView = findViewById(R.id.recyclerView2);
+
setupForm();
}
@@ -38,8 +40,6 @@ protected void onCreate(Bundle savedInstanceState) {
private void setupForm() {
formBuilder = new FormBuilder(this, recyclerView);
-
-
FormElementTextSingleLine projectTextField = FormElementTextSingleLine.createInstance().setTitle("Project/Contact:").setHint("Enter text here");
FormElementTextSingleLine addressTextField = FormElementTextSingleLine.createInstance().setTitle("Address/Lot#(s):").setHint("Enter text here");
FormElementTextSingleLine inspectorTextField = FormElementTextSingleLine.createInstance().setTitle("Inspector:").setHint("Enter name here");
@@ -96,6 +96,15 @@ private void setupForm() {
FormElementTextMultiLine evidenceTextField = FormElementTextMultiLine.createInstance().setTitle("Evidence of off-site sediment/pollutants.\nHere is a description of type and location:").setHint("Enter text here");
+ Button submitButton = new Button(getApplicationContext());
+ submitButton.setText("Submit");
+ submitButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+
+ }
+ });
+
List formItems = new ArrayList<>();
formItems.add(projectTextField);
@@ -122,7 +131,8 @@ private void setupForm() {
formItems.add(evidenceTextField);
- formBuilder.addFormElements(formItems);
+ formBuilder.addFormElements(formItems);
+ recyclerView.addView(submitButton);
}
}
From 042f8d49b2b873f8a2dad67a0930a996d8f2057c Mon Sep 17 00:00:00 2001
From: IbrahimSaeedPurdue
<54752803+IbrahimSaeedPurdue@users.noreply.github.com>
Date: Wed, 3 Mar 2021 15:59:14 -0500
Subject: [PATCH 03/15] feature/created constructionFormData class and
populated it in actionListener
---
.../InspectionForm.java | 160 +++++++++++++-----
1 file changed, 113 insertions(+), 47 deletions(-)
diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java b/app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java
index d4b0d62..975ca71 100644
--- a/app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java
@@ -9,6 +9,7 @@
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Date;
import java.util.List;
import me.riddhimanadib.formmaster.FormBuilder;
@@ -17,9 +18,7 @@
import me.riddhimanadib.formmaster.model.FormElementPickerMulti;
import me.riddhimanadib.formmaster.model.FormElementPickerSingle;
import me.riddhimanadib.formmaster.model.FormElementSwitch;
-import me.riddhimanadib.formmaster.model.FormElementTextEmail;
import me.riddhimanadib.formmaster.model.FormElementTextMultiLine;
-import me.riddhimanadib.formmaster.model.FormElementTextPhone;
import me.riddhimanadib.formmaster.model.FormElementTextSingleLine;
import me.riddhimanadib.formmaster.model.FormHeader;
@@ -105,49 +104,6 @@ private void setupForm() {
FormElementTextMultiLine evidenceTextField = FormElementTextMultiLine.createInstance().setTitle("Evidence of off-site sediment/pollutants.\nHere is a description of type and location:").setHint("Enter text here");
- submitButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- System.out.println("HELLO");
- String projectContact = projectTextField.getValue();
- String address = addressTextField.getValue();
- String inspector = inspectorTextField.getValue();
- String dateInspected = dateInspectedDatePicker.getValue();
-
- boolean projectRepPresent = getSwitchBool(projectRepPresentSwitch.getValue());
-
- String projectManager = projectManagerTextField.getValue();
- String siteManager = siteManagerTextField.getValue();
- String projectOwner = projectOwnerTextField.getValue();
-
- boolean correctiveAction1 = getSwitchBool(correctiveAction1Switch.getValue());
- boolean correctiveAction2 = getSwitchBool(correctiveAction2Switch.getValue());
- boolean correctiveAction3 = getSwitchBool(correctiveAction3Switch.getValue());
- boolean correctiveAction4 = getSwitchBool(correctiveAction4Switch.getValue());
-
- List correctiveAction5 = correctiveAction5Multi.getOptionsSelected();
-
- boolean correctiveAction6 = getSwitchBool(correctiveAction6Switch.getValue());
- boolean correctiveAction7 = getSwitchBool(correctiveAction6Switch.getValue());
- boolean correctiveAction8 = getSwitchBool(correctiveAction8Switch.getValue());
- boolean correctiveAction9 = getSwitchBool(correctiveAction9Switch.getValue());
-
- String correctiveAction10 = correctiveAction10Multi.getValue();
-
- String otherCorrectiveAction1 = otherCorrectiveAction1TextField.getValue();
- String otherCorrectiveAction2 = otherCorrectiveAction2TextField.getValue();
- String otherCorrectiveAction3 = otherCorrectiveAction3TextField.getValue();
-
- List enforcementAction = enforcementActionPickerSingle.getOptionsSelected();
-
- String evidence = evidenceTextField.getValue();
-
-
- }
- });
-
-
-
List formItems = new ArrayList<>();
formItems.add(projectTextField);
@@ -192,13 +148,123 @@ public void onClick(View view) {
formItems.add(evidenceTextField);
-
+ // populate formBuilder with items
formBuilder.addFormElements(formItems);
+ // onSubmit
+ submitButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ String contact = projectTextField.getValue();
+ String location = addressTextField.getValue();
+ String inspector = inspectorTextField.getValue();
+ String date = dateInspectedDatePicker.getValue();
+
+ ArrayList answersList = new ArrayList<>(20);
+
+ boolean projectRepPresent = getSwitchBool(projectRepPresentSwitch.getValue());
+ answersList.add(projectRepPresent + "");
+
+ String projectManager = projectManagerTextField.getValue();
+ String siteManager = siteManagerTextField.getValue();
+ String projectOwner = projectOwnerTextField.getValue();
+ answersList.add(projectManager);
+ answersList.add(siteManager);
+ answersList.add(projectOwner);
+
+ boolean correctiveAction1 = getSwitchBool(correctiveAction1Switch.getValue());
+ boolean correctiveAction2 = getSwitchBool(correctiveAction2Switch.getValue());
+ boolean correctiveAction3 = getSwitchBool(correctiveAction3Switch.getValue());
+ boolean correctiveAction4 = getSwitchBool(correctiveAction4Switch.getValue());
+ answersList.add(correctiveAction1 + "");
+ answersList.add(correctiveAction2 + "");
+ answersList.add(correctiveAction3 + "");
+ answersList.add(correctiveAction4 + "");
+
+ List correctiveAction5 = correctiveAction5Multi.getOptionsSelected();
+ answersList.addAll(correctiveAction5);
+
+ boolean correctiveAction6 = getSwitchBool(correctiveAction6Switch.getValue());
+ boolean correctiveAction7 = getSwitchBool(correctiveAction6Switch.getValue());
+ boolean correctiveAction8 = getSwitchBool(correctiveAction8Switch.getValue());
+ boolean correctiveAction9 = getSwitchBool(correctiveAction9Switch.getValue());
+ answersList.add(correctiveAction6 + "");
+ answersList.add(correctiveAction7 + "");
+ answersList.add(correctiveAction8 + "");
+ answersList.add(correctiveAction9 + "");
+
+ String correctiveAction10 = correctiveAction10Multi.getValue();
+ answersList.add(correctiveAction10);
+
+ String otherCorrectiveAction1 = otherCorrectiveAction1TextField.getValue();
+ String otherCorrectiveAction2 = otherCorrectiveAction2TextField.getValue();
+ String otherCorrectiveAction3 = otherCorrectiveAction3TextField.getValue();
+ answersList.add(otherCorrectiveAction1);
+ answersList.add(otherCorrectiveAction2);
+ answersList.add(otherCorrectiveAction3);
+
+
+ List enforcementAction = enforcementActionPickerSingle.getOptionsSelected();
+ answersList.addAll(enforcementAction);
+
+ String[] imgLink = new String[]{evidenceTextField.getValue()};
+
+
+ String[] answers = answersList.toArray(new String[0]);
+ // System.out.println(Arrays.toString(answers));
+ ConstructionFormData constructionFormData = new ConstructionFormData(contact, date, inspector, location, answers, imgLink);
+ System.out.println(constructionFormData);
+ }
+ });
+
+
+
+
}
- public boolean getSwitchBool(String value) {
+ private boolean getSwitchBool(String value) {
if (value.equals("yes")) return true;
return false;
}
+
+ private class ConstructionFormData {
+ String contact = "";
+ String date = "";
+ String inspector = "";
+ String location = "";
+ String[] answers;
+
+ // SortTimeStamp set in constructor
+ Date SortTimeStamp;
+
+ String[] imgLink;
+
+ public ConstructionFormData(String contact, String date, String inspector,
+ String location, String[] answers, String[] imgLink) {
+ this.contact = contact;
+ this.date = date;
+ this.inspector = inspector;
+ this.location = location;
+ this.answers = answers;
+
+ this.SortTimeStamp = new Date(System.currentTimeMillis());
+
+ this.answers = answers;
+ }
+
+
+
+ @Override
+ public String toString() {
+ return "ConstructionFormData{" +
+ "contact=" + contact + '\n' +
+ ", date=" + date + '\n' +
+ ", inspector=" + inspector + '\n' +
+ ", location=" + location + '\n' +
+ ", answers=" + Arrays.toString(answers) + "\n" +
+ ", SortTimeStamp=" + SortTimeStamp + "\n" +
+ ", imgLink=" + Arrays.toString(imgLink) + "\n" +
+ '}';
+ }
+ }
}
From 9c2ca342bfad444cc7e10593ae4d1b96f08be75d Mon Sep 17 00:00:00 2001
From: IbrahimSaeedPurdue
<54752803+IbrahimSaeedPurdue@users.noreply.github.com>
Date: Thu, 4 Mar 2021 14:44:24 -0500
Subject: [PATCH 04/15] feature/added FireStore functionality feature/update
form to take in title/Strings of switches rather booleans (as strings)
---
app/build.gradle | 1 +
app/google-services.json | 39 +++++
.../InspectionForm.java | 150 +++++++++++-------
build.gradle | 1 +
4 files changed, 132 insertions(+), 59 deletions(-)
create mode 100644 app/google-services.json
diff --git a/app/build.gradle b/app/build.gradle
index 19093dd..eea8c58 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,5 +1,6 @@
plugins {
id 'com.android.application'
+ id 'com.google.gms.google-services'
}
android {
diff --git a/app/google-services.json b/app/google-services.json
new file mode 100644
index 0000000..50b3497
--- /dev/null
+++ b/app/google-services.json
@@ -0,0 +1,39 @@
+{
+ "project_info": {
+ "project_number": "715047227500",
+ "project_id": "auth-test-978bd",
+ "storage_bucket": "auth-test-978bd.appspot.com"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:715047227500:android:6d404969351cf9a715c849",
+ "android_client_info": {
+ "package_name": "com.sf.stormwaterutilityandroid"
+ }
+ },
+ "oauth_client": [
+ {
+ "client_id": "715047227500-l993hj8oukroedqgtmuecookfmhjp1co.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ],
+ "api_key": [
+ {
+ "current_key": "AIzaSyDdVIxvfzkh1W0PCJ985hizZLthG6MrjJc"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": [
+ {
+ "client_id": "715047227500-l993hj8oukroedqgtmuecookfmhjp1co.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java b/app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java
index 975ca71..a9f8580 100644
--- a/app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java
@@ -4,13 +4,20 @@
import android.view.View;
import android.widget.Button;
+import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.RecyclerView;
+import com.google.android.gms.tasks.OnFailureListener;
+import com.google.android.gms.tasks.OnSuccessListener;
+import com.google.firebase.firestore.DocumentReference;
+import com.google.firebase.firestore.FirebaseFirestore;
+
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Date;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import me.riddhimanadib.formmaster.FormBuilder;
import me.riddhimanadib.formmaster.model.BaseFormElement;
@@ -162,8 +169,8 @@ public void onClick(View view) {
ArrayList answersList = new ArrayList<>(20);
- boolean projectRepPresent = getSwitchBool(projectRepPresentSwitch.getValue());
- answersList.add(projectRepPresent + "");
+ String projectRepPresent = getSwitchString(projectRepPresentSwitch);
+ answersList.add(projectRepPresent);
String projectManager = projectManagerTextField.getValue();
String siteManager = siteManagerTextField.getValue();
@@ -172,26 +179,26 @@ public void onClick(View view) {
answersList.add(siteManager);
answersList.add(projectOwner);
- boolean correctiveAction1 = getSwitchBool(correctiveAction1Switch.getValue());
- boolean correctiveAction2 = getSwitchBool(correctiveAction2Switch.getValue());
- boolean correctiveAction3 = getSwitchBool(correctiveAction3Switch.getValue());
- boolean correctiveAction4 = getSwitchBool(correctiveAction4Switch.getValue());
- answersList.add(correctiveAction1 + "");
- answersList.add(correctiveAction2 + "");
- answersList.add(correctiveAction3 + "");
- answersList.add(correctiveAction4 + "");
+ String correctiveAction1 = getSwitchString(correctiveAction1Switch);
+ String correctiveAction2 = getSwitchString(correctiveAction2Switch);
+ String correctiveAction3 = getSwitchString(correctiveAction3Switch);
+ String correctiveAction4 = getSwitchString(correctiveAction4Switch);
+ answersList.add(correctiveAction1);
+ answersList.add(correctiveAction2);
+ answersList.add(correctiveAction3);
+ answersList.add(correctiveAction4);
List correctiveAction5 = correctiveAction5Multi.getOptionsSelected();
answersList.addAll(correctiveAction5);
- boolean correctiveAction6 = getSwitchBool(correctiveAction6Switch.getValue());
- boolean correctiveAction7 = getSwitchBool(correctiveAction6Switch.getValue());
- boolean correctiveAction8 = getSwitchBool(correctiveAction8Switch.getValue());
- boolean correctiveAction9 = getSwitchBool(correctiveAction9Switch.getValue());
- answersList.add(correctiveAction6 + "");
- answersList.add(correctiveAction7 + "");
- answersList.add(correctiveAction8 + "");
- answersList.add(correctiveAction9 + "");
+ String correctiveAction6 = getSwitchString(correctiveAction6Switch);
+ String correctiveAction7 = getSwitchString(correctiveAction6Switch);
+ String correctiveAction8 = getSwitchString(correctiveAction8Switch);
+ String correctiveAction9 = getSwitchString(correctiveAction9Switch);
+ answersList.add(correctiveAction6);
+ answersList.add(correctiveAction7);
+ answersList.add(correctiveAction8);
+ answersList.add(correctiveAction9);
String correctiveAction10 = correctiveAction10Multi.getValue();
answersList.add(correctiveAction10);
@@ -207,64 +214,89 @@ public void onClick(View view) {
List enforcementAction = enforcementActionPickerSingle.getOptionsSelected();
answersList.addAll(enforcementAction);
- String[] imgLink = new String[]{evidenceTextField.getValue()};
+ String imgLink = new String(evidenceTextField.getValue());
String[] answers = answersList.toArray(new String[0]);
- // System.out.println(Arrays.toString(answers));
- ConstructionFormData constructionFormData = new ConstructionFormData(contact, date, inspector, location, answers, imgLink);
- System.out.println(constructionFormData);
+ ConstructionFormData constructionFormData = new ConstructionFormData(contact, date, inspector, location, answersList, imgLink);
+
+ FirebaseFirestore db = FirebaseFirestore.getInstance();
+ db.collection("ConstructionSiteForm")
+ .add(constructionFormData.getMap())
+ .addOnSuccessListener(new OnSuccessListener() {
+ @Override
+ public void onSuccess(DocumentReference documentReference) {
+ System.out.println("ibra SUCCESSFUL - FIRESTORE");
+ }
+ })
+ .addOnFailureListener(new OnFailureListener() {
+ @Override
+ public void onFailure(@NonNull Exception e) {
+ System.out.println("ibra SUCCESSFUL - ERROR/FAILED: " + e);
+ }
+ });
+
+ // System.out.println(constructionFormData);
}
});
-
-
}
- private boolean getSwitchBool(String value) {
- if (value.equals("yes")) return true;
- return false;
+ private String getSwitchString(FormElementSwitch switchElement) {
+ System.out.println(switchElement.getValue());
+ if (switchElement.getValue().equals("Yes")) return switchElement.getTitle();
+ return "";
}
private class ConstructionFormData {
- String contact = "";
- String date = "";
- String inspector = "";
- String location = "";
- String[] answers;
-
+// String contact = "";
+// String date = "";
+// String inspector = "";
+// String location = "";
+// String[] answers;
// SortTimeStamp set in constructor
- Date SortTimeStamp;
+// Date SortTimeStamp;
+//
+// String[] imgLink;
- String[] imgLink;
+ Map data = new HashMap<>();
public ConstructionFormData(String contact, String date, String inspector,
- String location, String[] answers, String[] imgLink) {
- this.contact = contact;
- this.date = date;
- this.inspector = inspector;
- this.location = location;
- this.answers = answers;
-
- this.SortTimeStamp = new Date(System.currentTimeMillis());
-
- this.answers = answers;
+ String location, List answers, String imgLink) {
+ data.put("contact", contact);
+ data.put("date", date);
+ data.put("inspector", inspector);
+ data.put("location", location);
+ data.put("answers", answers);
+ data.put("imgLink", imgLink);
+
+// this.contact = contact;
+// this.date = date;
+// this.inspector = inspector;
+// this.location = location;
+// this.answers = answers;
+//
+// this.SortTimeStamp = new Date(System.currentTimeMillis());
+//
+// this.answers = answers;
}
-
-
- @Override
- public String toString() {
- return "ConstructionFormData{" +
- "contact=" + contact + '\n' +
- ", date=" + date + '\n' +
- ", inspector=" + inspector + '\n' +
- ", location=" + location + '\n' +
- ", answers=" + Arrays.toString(answers) + "\n" +
- ", SortTimeStamp=" + SortTimeStamp + "\n" +
- ", imgLink=" + Arrays.toString(imgLink) + "\n" +
- '}';
+ public Map getMap() {
+ return data;
}
+
+// @Override
+// public String toString() {
+// return "ConstructionFormData{" +
+// "contact=" + contact + '\n' +
+// ", date=" + date + '\n' +
+// ", inspector=" + inspector + '\n' +
+// ", location=" + location + '\n' +
+// ", answers=" + Arrays.toString(answers) + "\n" +
+// ", SortTimeStamp=" + SortTimeStamp + "\n" +
+// ", imgLink=" + Arrays.toString(imgLink) + "\n" +
+// '}';
+// }
}
}
diff --git a/build.gradle b/build.gradle
index 4d24be2..6a4ea19 100644
--- a/build.gradle
+++ b/build.gradle
@@ -6,6 +6,7 @@ buildscript {
}
dependencies {
classpath "com.android.tools.build:gradle:4.1.1"
+ classpath 'com.google.gms:google-services:4.3.5'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
From 5af5a1cbb00127166a16ed9a21b07b34b21f7335 Mon Sep 17 00:00:00 2001
From: IbrahimSaeedPurdue
<54752803+IbrahimSaeedPurdue@users.noreply.github.com>
Date: Thu, 4 Mar 2021 16:43:06 -0500
Subject: [PATCH 05/15] refactor/made ConstructionFormData.java into a public
class refactor/answer switches (in List answers) give "true"/"false"
in firebase refactor/clean up all comments and unused code
---
.../ConstructionFormData.java | 40 ++++++
.../InspectionForm.java | 120 ++++++------------
2 files changed, 76 insertions(+), 84 deletions(-)
create mode 100644 app/src/main/java/com/sf/stormwaterutilityandroid/ConstructionFormData.java
diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/ConstructionFormData.java b/app/src/main/java/com/sf/stormwaterutilityandroid/ConstructionFormData.java
new file mode 100644
index 0000000..a66ec46
--- /dev/null
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/ConstructionFormData.java
@@ -0,0 +1,40 @@
+package com.sf.stormwaterutilityandroid;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class ConstructionFormData {
+ private Map data;
+ // String contact
+ // String date
+ // String inspector
+ // String location
+
+ // (they are lists because firebase doesn't serialize arrays)
+ // List answers
+ // List imgLink
+
+ public ConstructionFormData(String contact, String date, String inspector,
+ String location, List answers, List imgLink) {
+ data = new HashMap<>();
+ data.put("contact", contact);
+ data.put("date", date);
+ data.put("inspector", inspector);
+ data.put("location", location);
+ data.put("answers", answers);
+ data.put("imgLink", imgLink);
+ }
+
+ public Map getMap() {
+ return data;
+ }
+
+ @Override
+ public String toString() {
+ return "ConstructionFormData{" +
+ "data=" + data +
+ '}';
+ }
+
+}
diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java b/app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java
index a9f8580..f8a16f1 100644
--- a/app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java
@@ -15,9 +15,7 @@
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
import me.riddhimanadib.formmaster.FormBuilder;
import me.riddhimanadib.formmaster.model.BaseFormElement;
@@ -45,6 +43,23 @@ protected void onCreate(Bundle savedInstanceState) {
setupForm();
}
+ private void uploadToFirestore(ConstructionFormData constructionFormData) {
+ FirebaseFirestore db = FirebaseFirestore.getInstance();
+ db.collection("ConstructionSiteForm")
+ .add(constructionFormData.getMap())
+ .addOnSuccessListener(new OnSuccessListener() {
+ @Override
+ public void onSuccess(DocumentReference documentReference) {
+ System.out.println("SUCCESSFUL - FIRESTORE");
+ }
+ })
+ .addOnFailureListener(new OnFailureListener() {
+ @Override
+ public void onFailure(@NonNull Exception e) {
+ System.out.println("FAILED - FIRESTORE: " + e);
+ }
+ });
+ }
private void setupForm() {
formBuilder = new FormBuilder(this, recyclerView);
@@ -162,6 +177,8 @@ private void setupForm() {
submitButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
+
+ // data retrieval from forms
String contact = projectTextField.getValue();
String location = addressTextField.getValue();
String inspector = inspectorTextField.getValue();
@@ -169,7 +186,7 @@ public void onClick(View view) {
ArrayList answersList = new ArrayList<>(20);
- String projectRepPresent = getSwitchString(projectRepPresentSwitch);
+ String projectRepPresent = getSwitchBool(projectRepPresentSwitch);
answersList.add(projectRepPresent);
String projectManager = projectManagerTextField.getValue();
@@ -179,10 +196,10 @@ public void onClick(View view) {
answersList.add(siteManager);
answersList.add(projectOwner);
- String correctiveAction1 = getSwitchString(correctiveAction1Switch);
- String correctiveAction2 = getSwitchString(correctiveAction2Switch);
- String correctiveAction3 = getSwitchString(correctiveAction3Switch);
- String correctiveAction4 = getSwitchString(correctiveAction4Switch);
+ String correctiveAction1 = getSwitchBool(correctiveAction1Switch);
+ String correctiveAction2 = getSwitchBool(correctiveAction2Switch);
+ String correctiveAction3 = getSwitchBool(correctiveAction3Switch);
+ String correctiveAction4 = getSwitchBool(correctiveAction4Switch);
answersList.add(correctiveAction1);
answersList.add(correctiveAction2);
answersList.add(correctiveAction3);
@@ -191,10 +208,10 @@ public void onClick(View view) {
List correctiveAction5 = correctiveAction5Multi.getOptionsSelected();
answersList.addAll(correctiveAction5);
- String correctiveAction6 = getSwitchString(correctiveAction6Switch);
- String correctiveAction7 = getSwitchString(correctiveAction6Switch);
- String correctiveAction8 = getSwitchString(correctiveAction8Switch);
- String correctiveAction9 = getSwitchString(correctiveAction9Switch);
+ String correctiveAction6 = getSwitchBool(correctiveAction6Switch);
+ String correctiveAction7 = getSwitchBool(correctiveAction6Switch);
+ String correctiveAction8 = getSwitchBool(correctiveAction8Switch);
+ String correctiveAction9 = getSwitchBool(correctiveAction9Switch);
answersList.add(correctiveAction6);
answersList.add(correctiveAction7);
answersList.add(correctiveAction8);
@@ -214,89 +231,24 @@ public void onClick(View view) {
List enforcementAction = enforcementActionPickerSingle.getOptionsSelected();
answersList.addAll(enforcementAction);
- String imgLink = new String(evidenceTextField.getValue());
-
+ List imgLink = new ArrayList<>();
+ imgLink.add(evidenceTextField.getValue());
String[] answers = answersList.toArray(new String[0]);
ConstructionFormData constructionFormData = new ConstructionFormData(contact, date, inspector, location, answersList, imgLink);
- FirebaseFirestore db = FirebaseFirestore.getInstance();
- db.collection("ConstructionSiteForm")
- .add(constructionFormData.getMap())
- .addOnSuccessListener(new OnSuccessListener() {
- @Override
- public void onSuccess(DocumentReference documentReference) {
- System.out.println("ibra SUCCESSFUL - FIRESTORE");
- }
- })
- .addOnFailureListener(new OnFailureListener() {
- @Override
- public void onFailure(@NonNull Exception e) {
- System.out.println("ibra SUCCESSFUL - ERROR/FAILED: " + e);
- }
- });
-
- // System.out.println(constructionFormData);
+
+ // submit data to firestore
+ uploadToFirestore(constructionFormData);
}
});
}
- private String getSwitchString(FormElementSwitch switchElement) {
- System.out.println(switchElement.getValue());
- if (switchElement.getValue().equals("Yes")) return switchElement.getTitle();
- return "";
+ private String getSwitchBool(FormElementSwitch switchElement) {
+ if (switchElement.getValue().equals("Yes")) return "true";
+ return "false";
}
- private class ConstructionFormData {
-// String contact = "";
-// String date = "";
-// String inspector = "";
-// String location = "";
-// String[] answers;
- // SortTimeStamp set in constructor
-// Date SortTimeStamp;
-//
-// String[] imgLink;
-
- Map data = new HashMap<>();
-
- public ConstructionFormData(String contact, String date, String inspector,
- String location, List answers, String imgLink) {
- data.put("contact", contact);
- data.put("date", date);
- data.put("inspector", inspector);
- data.put("location", location);
- data.put("answers", answers);
- data.put("imgLink", imgLink);
-
-// this.contact = contact;
-// this.date = date;
-// this.inspector = inspector;
-// this.location = location;
-// this.answers = answers;
-//
-// this.SortTimeStamp = new Date(System.currentTimeMillis());
-//
-// this.answers = answers;
- }
-
- public Map getMap() {
- return data;
- }
-
-// @Override
-// public String toString() {
-// return "ConstructionFormData{" +
-// "contact=" + contact + '\n' +
-// ", date=" + date + '\n' +
-// ", inspector=" + inspector + '\n' +
-// ", location=" + location + '\n' +
-// ", answers=" + Arrays.toString(answers) + "\n" +
-// ", SortTimeStamp=" + SortTimeStamp + "\n" +
-// ", imgLink=" + Arrays.toString(imgLink) + "\n" +
-// '}';
-// }
- }
}
From 31317320c2405cf01ad3d887fb50d3da66d2e706 Mon Sep 17 00:00:00 2001
From: IbrahimSaeedPurdue
<54752803+IbrahimSaeedPurdue@users.noreply.github.com>
Date: Thu, 4 Mar 2021 16:45:43 -0500
Subject: [PATCH 06/15] refactor/made ConstructionFormData.java into a public
class refactor/answer switches (in List answers) give "true"/"false"
in firebase refactor/clean up all comments and unused code
---
.../InspectionForm.java | 152 ++++++++----------
1 file changed, 66 insertions(+), 86 deletions(-)
diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java b/app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java
index f8a16f1..9efb51c 100644
--- a/app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java
@@ -1,16 +1,11 @@
package com.sf.stormwaterutilityandroid;
import android.os.Bundle;
-import android.view.View;
import android.widget.Button;
-import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.RecyclerView;
-import com.google.android.gms.tasks.OnFailureListener;
-import com.google.android.gms.tasks.OnSuccessListener;
-import com.google.firebase.firestore.DocumentReference;
import com.google.firebase.firestore.FirebaseFirestore;
import java.util.ArrayList;
@@ -28,7 +23,6 @@
import me.riddhimanadib.formmaster.model.FormHeader;
public class InspectionForm extends AppCompatActivity {
- private FormBuilder formBuilder;
private RecyclerView recyclerView;
private Button submitButton;
@@ -47,22 +41,12 @@ private void uploadToFirestore(ConstructionFormData constructionFormData) {
FirebaseFirestore db = FirebaseFirestore.getInstance();
db.collection("ConstructionSiteForm")
.add(constructionFormData.getMap())
- .addOnSuccessListener(new OnSuccessListener() {
- @Override
- public void onSuccess(DocumentReference documentReference) {
- System.out.println("SUCCESSFUL - FIRESTORE");
- }
- })
- .addOnFailureListener(new OnFailureListener() {
- @Override
- public void onFailure(@NonNull Exception e) {
- System.out.println("FAILED - FIRESTORE: " + e);
- }
- });
+ .addOnSuccessListener(documentReference -> System.out.println("SUCCESSFUL - FIRESTORE"))
+ .addOnFailureListener(e -> System.out.println("FAILED - FIRESTORE: " + e));
}
private void setupForm() {
- formBuilder = new FormBuilder(this, recyclerView);
+ FormBuilder formBuilder = new FormBuilder(this, recyclerView);
FormElementTextSingleLine projectTextField = FormElementTextSingleLine.createInstance().setTitle("Project/Contact:").setHint("Enter text here");
FormElementTextSingleLine addressTextField = FormElementTextSingleLine.createInstance().setTitle("Address/Lot#(s):").setHint("Enter text here");
@@ -174,73 +158,69 @@ private void setupForm() {
formBuilder.addFormElements(formItems);
// onSubmit
- submitButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
-
- // data retrieval from forms
- String contact = projectTextField.getValue();
- String location = addressTextField.getValue();
- String inspector = inspectorTextField.getValue();
- String date = dateInspectedDatePicker.getValue();
-
- ArrayList answersList = new ArrayList<>(20);
-
- String projectRepPresent = getSwitchBool(projectRepPresentSwitch);
- answersList.add(projectRepPresent);
-
- String projectManager = projectManagerTextField.getValue();
- String siteManager = siteManagerTextField.getValue();
- String projectOwner = projectOwnerTextField.getValue();
- answersList.add(projectManager);
- answersList.add(siteManager);
- answersList.add(projectOwner);
-
- String correctiveAction1 = getSwitchBool(correctiveAction1Switch);
- String correctiveAction2 = getSwitchBool(correctiveAction2Switch);
- String correctiveAction3 = getSwitchBool(correctiveAction3Switch);
- String correctiveAction4 = getSwitchBool(correctiveAction4Switch);
- answersList.add(correctiveAction1);
- answersList.add(correctiveAction2);
- answersList.add(correctiveAction3);
- answersList.add(correctiveAction4);
-
- List correctiveAction5 = correctiveAction5Multi.getOptionsSelected();
- answersList.addAll(correctiveAction5);
-
- String correctiveAction6 = getSwitchBool(correctiveAction6Switch);
- String correctiveAction7 = getSwitchBool(correctiveAction6Switch);
- String correctiveAction8 = getSwitchBool(correctiveAction8Switch);
- String correctiveAction9 = getSwitchBool(correctiveAction9Switch);
- answersList.add(correctiveAction6);
- answersList.add(correctiveAction7);
- answersList.add(correctiveAction8);
- answersList.add(correctiveAction9);
-
- String correctiveAction10 = correctiveAction10Multi.getValue();
- answersList.add(correctiveAction10);
-
- String otherCorrectiveAction1 = otherCorrectiveAction1TextField.getValue();
- String otherCorrectiveAction2 = otherCorrectiveAction2TextField.getValue();
- String otherCorrectiveAction3 = otherCorrectiveAction3TextField.getValue();
- answersList.add(otherCorrectiveAction1);
- answersList.add(otherCorrectiveAction2);
- answersList.add(otherCorrectiveAction3);
-
-
- List enforcementAction = enforcementActionPickerSingle.getOptionsSelected();
- answersList.addAll(enforcementAction);
-
- List imgLink = new ArrayList<>();
- imgLink.add(evidenceTextField.getValue());
-
- String[] answers = answersList.toArray(new String[0]);
- ConstructionFormData constructionFormData = new ConstructionFormData(contact, date, inspector, location, answersList, imgLink);
-
-
- // submit data to firestore
- uploadToFirestore(constructionFormData);
- }
+ submitButton.setOnClickListener(view -> {
+
+ // data retrieval from forms
+ String contact = projectTextField.getValue();
+ String location = addressTextField.getValue();
+ String inspector = inspectorTextField.getValue();
+ String date = dateInspectedDatePicker.getValue();
+
+ ArrayList answersList = new ArrayList<>(20);
+
+ String projectRepPresent = getSwitchBool(projectRepPresentSwitch);
+ answersList.add(projectRepPresent);
+
+ String projectManager = projectManagerTextField.getValue();
+ String siteManager = siteManagerTextField.getValue();
+ String projectOwner = projectOwnerTextField.getValue();
+ answersList.add(projectManager);
+ answersList.add(siteManager);
+ answersList.add(projectOwner);
+
+ String correctiveAction1 = getSwitchBool(correctiveAction1Switch);
+ String correctiveAction2 = getSwitchBool(correctiveAction2Switch);
+ String correctiveAction3 = getSwitchBool(correctiveAction3Switch);
+ String correctiveAction4 = getSwitchBool(correctiveAction4Switch);
+ answersList.add(correctiveAction1);
+ answersList.add(correctiveAction2);
+ answersList.add(correctiveAction3);
+ answersList.add(correctiveAction4);
+
+ List correctiveAction5 = correctiveAction5Multi.getOptionsSelected();
+ answersList.addAll(correctiveAction5);
+
+ String correctiveAction6 = getSwitchBool(correctiveAction6Switch);
+ String correctiveAction7 = getSwitchBool(correctiveAction6Switch);
+ String correctiveAction8 = getSwitchBool(correctiveAction8Switch);
+ String correctiveAction9 = getSwitchBool(correctiveAction9Switch);
+ answersList.add(correctiveAction6);
+ answersList.add(correctiveAction7);
+ answersList.add(correctiveAction8);
+ answersList.add(correctiveAction9);
+
+ String correctiveAction10 = correctiveAction10Multi.getValue();
+ answersList.add(correctiveAction10);
+
+ String otherCorrectiveAction1 = otherCorrectiveAction1TextField.getValue();
+ String otherCorrectiveAction2 = otherCorrectiveAction2TextField.getValue();
+ String otherCorrectiveAction3 = otherCorrectiveAction3TextField.getValue();
+ answersList.add(otherCorrectiveAction1);
+ answersList.add(otherCorrectiveAction2);
+ answersList.add(otherCorrectiveAction3);
+
+
+ List enforcementAction = enforcementActionPickerSingle.getOptionsSelected();
+ answersList.addAll(enforcementAction);
+
+ List imgLink = new ArrayList<>();
+ imgLink.add(evidenceTextField.getValue());
+
+ ConstructionFormData constructionFormData = new ConstructionFormData(contact, date, inspector, location, answersList, imgLink);
+
+
+ // submit data to firestore
+ uploadToFirestore(constructionFormData);
});
From 31a995bd4c9e3b0b6c2a7b5bdaf5ab2668ae3dc8 Mon Sep 17 00:00:00 2001
From: IbrahimSaeedPurdue
<54752803+IbrahimSaeedPurdue@users.noreply.github.com>
Date: Thu, 4 Mar 2021 16:54:20 -0500
Subject: [PATCH 07/15] refactor/removed google-services.json (my own firebase
testing database)
---
app/google-services.json | 39 ---------------------------------------
1 file changed, 39 deletions(-)
delete mode 100644 app/google-services.json
diff --git a/app/google-services.json b/app/google-services.json
deleted file mode 100644
index 50b3497..0000000
--- a/app/google-services.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "project_info": {
- "project_number": "715047227500",
- "project_id": "auth-test-978bd",
- "storage_bucket": "auth-test-978bd.appspot.com"
- },
- "client": [
- {
- "client_info": {
- "mobilesdk_app_id": "1:715047227500:android:6d404969351cf9a715c849",
- "android_client_info": {
- "package_name": "com.sf.stormwaterutilityandroid"
- }
- },
- "oauth_client": [
- {
- "client_id": "715047227500-l993hj8oukroedqgtmuecookfmhjp1co.apps.googleusercontent.com",
- "client_type": 3
- }
- ],
- "api_key": [
- {
- "current_key": "AIzaSyDdVIxvfzkh1W0PCJ985hizZLthG6MrjJc"
- }
- ],
- "services": {
- "appinvite_service": {
- "other_platform_oauth_client": [
- {
- "client_id": "715047227500-l993hj8oukroedqgtmuecookfmhjp1co.apps.googleusercontent.com",
- "client_type": 3
- }
- ]
- }
- }
- }
- ],
- "configuration_version": "1"
-}
\ No newline at end of file
From b4b66bdcc22b0d80476e99254e99907a84f75978 Mon Sep 17 00:00:00 2001
From: Samuelford24
Date: Tue, 16 Mar 2021 19:47:59 -0400
Subject: [PATCH 08/15] fixed bugs
---
app/build.gradle | 1 +
app/google-services.json | 47 ++++
.../ConstructionReportsFragment.java | 97 +++++++-
.../ConstructionFormData.java | 40 +++
.../ConstructionReportAdapter.java | 61 +++++
.../DryWeatherScreening.java | 3 +-
.../com/sf/stormwaterutilityandroid/HEI.java | 82 ++++++
.../InspectionForm.java | 234 ++++++++++++++++++
.../ReportAdapter.java | 61 +++++
.../WaterWay/PTI.java | 39 +++
.../WaterWay/WQI.java | 31 +++
.../WaterWay/WaterWayNav.java | 115 +--------
.../WaterWay/WaterWayReportFragment.java | 108 +++++++-
app/src/main/res/layout/activity_main.xml | 2 +-
app/src/main/res/layout/activity_reports.xml | 96 +++++++
app/src/main/res/layout/cardview_reports.xml | 69 ++++++
app/src/main/res/menu/waterway_menu.xml | 4 +
build.gradle | 3 +-
18 files changed, 965 insertions(+), 128 deletions(-)
create mode 100644 app/google-services.json
create mode 100644 app/src/main/java/com/sf/stormwaterutilityandroid/ConstructionFormData.java
create mode 100644 app/src/main/java/com/sf/stormwaterutilityandroid/ConstructionReportAdapter.java
create mode 100644 app/src/main/java/com/sf/stormwaterutilityandroid/HEI.java
create mode 100644 app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java
create mode 100644 app/src/main/java/com/sf/stormwaterutilityandroid/ReportAdapter.java
create mode 100644 app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/PTI.java
create mode 100644 app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WQI.java
create mode 100644 app/src/main/res/layout/activity_reports.xml
create mode 100644 app/src/main/res/layout/cardview_reports.xml
create mode 100644 app/src/main/res/menu/waterway_menu.xml
diff --git a/app/build.gradle b/app/build.gradle
index 19093dd..eea8c58 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,5 +1,6 @@
plugins {
id 'com.android.application'
+ id 'com.google.gms.google-services'
}
android {
diff --git a/app/google-services.json b/app/google-services.json
new file mode 100644
index 0000000..2545b5d
--- /dev/null
+++ b/app/google-services.json
@@ -0,0 +1,47 @@
+{
+ "project_info": {
+ "project_number": "667793859590",
+ "firebase_url": "https://aquasource-f5e44.firebaseio.com",
+ "project_id": "aquasource-f5e44",
+ "storage_bucket": "aquasource-f5e44.appspot.com"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:667793859590:android:8b4d04aebf855291eb8f87",
+ "android_client_info": {
+ "package_name": "com.sf.stormwaterutilityandroid"
+ }
+ },
+ "oauth_client": [
+ {
+ "client_id": "667793859590-o1vcunhlqe559bvuuetrkj6hels7bisl.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ],
+ "api_key": [
+ {
+ "current_key": "AIzaSyDbkcA22JD0-r8h4Xu6dcMGMwHpSKyvFc8"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": [
+ {
+ "client_id": "667793859590-o1vcunhlqe559bvuuetrkj6hels7bisl.apps.googleusercontent.com",
+ "client_type": 3
+ },
+ {
+ "client_id": "667793859590-kstclkrr6eial9patuhafmclk7p34re2.apps.googleusercontent.com",
+ "client_type": 2,
+ "ios_info": {
+ "bundle_id": "EPICS.StormWaterUtility"
+ }
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/Construction/ConstructionReportsFragment.java b/app/src/main/java/com/sf/stormwaterutilityandroid/Construction/ConstructionReportsFragment.java
index c24b425..a41edd4 100644
--- a/app/src/main/java/com/sf/stormwaterutilityandroid/Construction/ConstructionReportsFragment.java
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/Construction/ConstructionReportsFragment.java
@@ -1,25 +1,112 @@
package com.sf.stormwaterutilityandroid.Construction;
import android.os.Bundle;
+import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.EditText;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
+import androidx.recyclerview.widget.DefaultItemAnimator;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+import com.google.firebase.firestore.DocumentSnapshot;
+import com.google.firebase.firestore.EventListener;
+import com.google.firebase.firestore.FirebaseFirestore;
+import com.google.firebase.firestore.FirebaseFirestoreException;
+import com.google.firebase.firestore.Query;
+import com.google.firebase.firestore.QuerySnapshot;
+
+import com.sf.stormwaterutilityandroid.ConstructionFormData;
+import com.sf.stormwaterutilityandroid.ConstructionReportAdapter;
import com.sf.stormwaterutilityandroid.R;
+
+import java.util.ArrayList;
+import java.util.List;
+
public class ConstructionReportsFragment extends Fragment {
+ private EditText searchBar;
+ private RecyclerView recyclerView;
+ private Button btnSiteName, btnDate, btnInspectorName;
+ //TODO: Need vars for formdata
+
+ //TODO: Need a var for tvReports: UITableView!
+ List reportList = new ArrayList<>();
+ //TODO: LayoutInflator inflater, ViewGroup container,Might not be needed
+ //This was a public void
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+
+ View view = inflater.inflate(R.layout.activity_reports, container, false);
+ recyclerView = view.findViewById(R.id.recyclerView);
+
+
+
+ btnSiteName = view.findViewById(R.id.btn_site_name);
+ btnDate = view.findViewById(R.id.btn_date);
+ btnInspectorName = view.findViewById(R.id.btn_inspector_name);
+ searchBar = view.findViewById(R.id.searchView);
+ recyclerView = view.findViewById(R.id.recyclerView);
+
+ fetchData();
+ btnSiteName.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ //startActivity(new Intent(Reports.this, Site_name.class));
- public View onCreateView(@NonNull LayoutInflater inflater,
- ViewGroup container, Bundle savedInstanceState) {
- View root = inflater.inflate(R.layout.fragment_dashboard, container, false);
- final TextView textView = root.findViewById(R.id.text_dashboard);
- return root;
+ }
+ });
+
+ btnDate.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ //startActivity(new Intent(Reports.this, Date.class));
+ }
+ });
+
+ btnInspectorName.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ //startActivity(new Intent(Reports.this, Inspector_name.class));
+ }
+ });
+
+ return view;
+
+
+
+ }
+ public void fetchData() {
+ final ConstructionReportAdapter reporter = new ConstructionReportAdapter(reportList);
+ FirebaseFirestore.getInstance().collection("ConstructionForms").orderBy("SortTimeStamp", Query.Direction.DESCENDING).addSnapshotListener(new EventListener() {
+ @Override
+ public void onEvent(@javax.annotation.Nullable QuerySnapshot queryDocumentSnapshots, @javax.annotation.Nullable FirebaseFirestoreException e) {
+ if (e != null) {
+ Log.i("Error", "No data");
+ }
+ reportList.clear();
+ for (DocumentSnapshot d:queryDocumentSnapshots){
+ //needs to be changed to waterway data type
+ reportList.add( d.toObject(ConstructionFormData.class));
+ }
+
+ reporter.notifyDataSetChanged();
+ }
+ });
+ RecyclerView.LayoutManager layoutmanager = new LinearLayoutManager(getContext());
+ recyclerView.setLayoutManager(layoutmanager);
+ recyclerView.setItemAnimator(new DefaultItemAnimator());
+ recyclerView.setAdapter(reporter);
}
+
}
\ No newline at end of file
diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/ConstructionFormData.java b/app/src/main/java/com/sf/stormwaterutilityandroid/ConstructionFormData.java
new file mode 100644
index 0000000..a66ec46
--- /dev/null
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/ConstructionFormData.java
@@ -0,0 +1,40 @@
+package com.sf.stormwaterutilityandroid;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class ConstructionFormData {
+ private Map data;
+ // String contact
+ // String date
+ // String inspector
+ // String location
+
+ // (they are lists because firebase doesn't serialize arrays)
+ // List answers
+ // List imgLink
+
+ public ConstructionFormData(String contact, String date, String inspector,
+ String location, List answers, List imgLink) {
+ data = new HashMap<>();
+ data.put("contact", contact);
+ data.put("date", date);
+ data.put("inspector", inspector);
+ data.put("location", location);
+ data.put("answers", answers);
+ data.put("imgLink", imgLink);
+ }
+
+ public Map getMap() {
+ return data;
+ }
+
+ @Override
+ public String toString() {
+ return "ConstructionFormData{" +
+ "data=" + data +
+ '}';
+ }
+
+}
diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/ConstructionReportAdapter.java b/app/src/main/java/com/sf/stormwaterutilityandroid/ConstructionReportAdapter.java
new file mode 100644
index 0000000..ceab9b7
--- /dev/null
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/ConstructionReportAdapter.java
@@ -0,0 +1,61 @@
+package com.sf.stormwaterutilityandroid;
+
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import androidx.recyclerview.widget.RecyclerView;
+
+import java.util.List;
+
+public class ConstructionReportAdapter extends RecyclerView.Adapter{
+ //needs changed to waterway
+ List listdata;
+
+ public ConstructionReportAdapter(List listdata) {
+ this.listdata = listdata;
+ }
+
+ @Override
+ public ConstructionReportAdapter.MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+
+ View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview_reports,parent,false);
+
+ ConstructionReportAdapter.MyHolder myHolder = new ConstructionReportAdapter.MyHolder(view);
+ return myHolder;
+ }
+
+
+ public void onBindViewHolder(ConstructionReportAdapter.MyHolder holder, final int position) {
+
+ final ConstructionFormData data = listdata.get(position);
+ //holder.inspectorName.setText(data.getInspectorName());
+ // holder.site.setText(data.getSite());
+ // holder.date.setText((CharSequence) data.getDate());
+
+
+ }
+
+ @Override
+ public int getItemCount() {
+ return listdata.size();
+ }
+
+
+ class MyHolder extends RecyclerView.ViewHolder{
+ TextView inspectorName,site,date;
+
+ public MyHolder(View itemView) {
+ super(itemView);
+ inspectorName = (TextView) itemView.findViewById(R.id.inspectorName);
+ site = (TextView) itemView.findViewById(R.id.siteName);
+ date = (TextView) itemView.findViewById(R.id.date);
+ }
+ }
+
+
+}
+
+
+
diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/DryWeatherScreening.java b/app/src/main/java/com/sf/stormwaterutilityandroid/DryWeatherScreening.java
index 8220c5a..6bec762 100644
--- a/app/src/main/java/com/sf/stormwaterutilityandroid/DryWeatherScreening.java
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/DryWeatherScreening.java
@@ -23,6 +23,7 @@
import me.riddhimanadib.formmaster.model.FormElementTextSingleLine;
import me.riddhimanadib.formmaster.model.FormHeader;
+
public class DryWeatherScreening extends AppCompatActivity{
private FormBuilder formBuilder;
@@ -80,4 +81,4 @@ private void setupForm() {
formBuilder.addFormElements(formItems);
}
-}
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/HEI.java b/app/src/main/java/com/sf/stormwaterutilityandroid/HEI.java
new file mode 100644
index 0000000..a803dee
--- /dev/null
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/HEI.java
@@ -0,0 +1,82 @@
+package com.sf.stormwaterutilityandroid;
+
+public class HEI {
+ //by default, all values are set to be 0
+ private double QHEI_substrate_size = 0;
+ private double QHEI_smothering = 0;
+ private double QHEI_silting = 0;
+ private double QHEI_rootwads = 0;
+ private double QHEI_overhanging_veg = 0;
+ private double QHEI_oxbowsblack_waters = 0;
+ private double QHEI_downed_treeslogs = 0;
+ private double QHEI_shallows = 0;
+ private double QHEI_water_plants = 0;
+ private double QHEI_deep_pools = 0;
+ private double QHEI_logswoody_debris = 0;
+ private double QHEI_boulders = 0;
+ private double QHEI_undercut_banks = 0;
+ private double QHEI_sinuosity = 0;
+ private double QHEI_natural = 0;
+ private double QHEI_riparian_width = 0;
+ private double QHEI_land_use = 0;
+ private double QHEI_bank_erosion = 0;
+ private double QHEI_stream_shading = 0;
+ private double QHEI_deepest_pool = 0;
+ private double QHEI_velocity = 0;
+ private double QHEI_rifflerun_depth = 0;
+ private double QHEI_rifflerun_substrate = 0;
+
+ //constructor
+ HEI(double QHEI_substrate_size, double QHEI_smothering, double QHEI_silting, double QHEI_rootwads, double QHEI_overhanging_veg,
+ double QHEI_oxbowsblack_waters, double QHEI_downed_treeslogs, double QHEI_shallows, double QHEI_water_plants, double QHEI_logswoody_debris,
+ double QHEI_boulders, double QHEI_undercut_banks, double QHEI_sinuosity, double QHEI_natural, double QHEI_riparian_width,
+ double QHEI_land_use, double QHEI_bank_erosion, double QHEI_stream_shading, double QHEI_deepest_pool, double QHEI_velocity,
+ double QHEI_rifflerun_depth, double QHEI_rifflerun_substrate, double QHEI_deep_pools) {
+
+ this.QHEI_substrate_size = QHEI_substrate_size;
+ this.QHEI_smothering = QHEI_smothering;
+ this.QHEI_silting = QHEI_silting;
+ this.QHEI_rootwads = QHEI_rootwads;
+ this.QHEI_overhanging_veg = QHEI_overhanging_veg;
+ this.QHEI_oxbowsblack_waters = QHEI_oxbowsblack_waters;
+ this.QHEI_downed_treeslogs = QHEI_downed_treeslogs;
+ this.QHEI_shallows = QHEI_shallows;
+ this.QHEI_water_plants = QHEI_water_plants;
+ this.QHEI_logswoody_debris = QHEI_logswoody_debris;
+ this.QHEI_boulders = QHEI_boulders;
+ this.QHEI_undercut_banks = QHEI_undercut_banks;
+ this.QHEI_sinuosity = QHEI_sinuosity;
+ this.QHEI_natural = QHEI_natural;
+ this.QHEI_riparian_width = QHEI_riparian_width;
+ this.QHEI_land_use = QHEI_land_use;
+ this.QHEI_bank_erosion = QHEI_bank_erosion;
+ this.QHEI_stream_shading = QHEI_stream_shading;
+ this.QHEI_deepest_pool = QHEI_deepest_pool;
+ this.QHEI_velocity = QHEI_velocity;
+ this.QHEI_rifflerun_depth = QHEI_rifflerun_depth;
+ this.QHEI_rifflerun_substrate = QHEI_rifflerun_substrate;
+ this.QHEI_deep_pools = QHEI_deep_pools;
+ }
+
+ public double calculate_HEI() {
+ return QHEI_substrate_size + QHEI_smothering + QHEI_silting + QHEI_rootwads + QHEI_overhanging_veg +
+ QHEI_oxbowsblack_waters + QHEI_downed_treeslogs + QHEI_shallows + QHEI_water_plants + QHEI_deep_pools +
+ QHEI_logswoody_debris + QHEI_boulders + QHEI_undercut_banks + 2 * (QHEI_sinuosity + QHEI_natural) +
+ QHEI_riparian_width + QHEI_land_use + QHEI_bank_erosion + QHEI_stream_shading + QHEI_deepest_pool +
+ QHEI_velocity + QHEI_rifflerun_depth + QHEI_rifflerun_substrate;
+ }
+
+ public static double get_HEI(double QHEI_substrate_size, double QHEI_smothering, double QHEI_silting, double QHEI_rootwads, double QHEI_overhanging_veg,
+ double QHEI_oxbowsblack_waters, double QHEI_downed_treeslogs, double QHEI_shallows, double QHEI_water_plants, double QHEI_logswoody_debris,
+ double QHEI_boulders, double QHEI_undercut_banks, double QHEI_sinuosity, double QHEI_natural, double QHEI_riparian_width,
+ double QHEI_land_use, double QHEI_bank_erosion, double QHEI_stream_shading, double QHEI_deepest_pool, double QHEI_velocity,
+ double QHEI_rifflerun_depth, double QHEI_rifflerun_substrate, double QHEI_deep_pools)
+ {
+ return QHEI_substrate_size + QHEI_smothering + QHEI_silting + QHEI_rootwads + QHEI_overhanging_veg +
+ QHEI_oxbowsblack_waters + QHEI_downed_treeslogs + QHEI_shallows + QHEI_water_plants + QHEI_deep_pools +
+ QHEI_logswoody_debris + QHEI_boulders + QHEI_undercut_banks + 2 * (QHEI_sinuosity + QHEI_natural) +
+ QHEI_riparian_width + QHEI_land_use + QHEI_bank_erosion + QHEI_stream_shading + QHEI_deepest_pool +
+ QHEI_velocity + QHEI_rifflerun_depth + QHEI_rifflerun_substrate;
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java b/app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java
new file mode 100644
index 0000000..9e8a740
--- /dev/null
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java
@@ -0,0 +1,234 @@
+package com.sf.stormwaterutilityandroid;
+
+import android.os.Bundle;
+import android.widget.Button;
+
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.google.firebase.firestore.FirebaseFirestore;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import me.riddhimanadib.formmaster.FormBuilder;
+import me.riddhimanadib.formmaster.model.BaseFormElement;
+import me.riddhimanadib.formmaster.model.FormElementPickerDate;
+import me.riddhimanadib.formmaster.model.FormElementPickerMulti;
+import me.riddhimanadib.formmaster.model.FormElementPickerSingle;
+import me.riddhimanadib.formmaster.model.FormElementSwitch;
+import me.riddhimanadib.formmaster.model.FormElementTextMultiLine;
+import me.riddhimanadib.formmaster.model.FormElementTextSingleLine;
+import me.riddhimanadib.formmaster.model.FormHeader;
+
+public class InspectionForm extends AppCompatActivity {
+ private RecyclerView recyclerView;
+ private Button submitButton;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_sample_fordm);
+ recyclerView = findViewById(R.id.recyclerView2);
+
+ // submitButton = findViewById(R.id.submitButton);
+
+ setupForm();
+ }
+
+ private void uploadToFirestore(ConstructionFormData constructionFormData) {
+ FirebaseFirestore db = FirebaseFirestore.getInstance();
+ db.collection("ConstructionSiteForm")
+ .add(constructionFormData.getMap())
+ .addOnSuccessListener(documentReference -> System.out.println("SUCCESSFUL - FIRESTORE"))
+ .addOnFailureListener(e -> System.out.println("FAILED - FIRESTORE: " + e));
+ }
+
+ private void setupForm() {
+ FormBuilder formBuilder = new FormBuilder(this, recyclerView);
+
+ FormElementTextSingleLine projectTextField = FormElementTextSingleLine.createInstance().setTitle("Project/Contact:").setHint("Enter text here");
+ FormElementTextSingleLine addressTextField = FormElementTextSingleLine.createInstance().setTitle("Address/Lot#(s):").setHint("Enter text here");
+ FormElementTextSingleLine inspectorTextField = FormElementTextSingleLine.createInstance().setTitle("Inspector:").setHint("Enter name here");
+ FormElementPickerDate dateInspectedDatePicker = FormElementPickerDate.createInstance().setTitle("Date Inspected:").setDateFormat("MMM dd, yyyy");
+
+
+ List typeOptions = new ArrayList<>(Arrays.asList(
+ "Routine Evaluation",
+ "Re-Inspection",
+ "Complaint Investigation",
+ "Entire Development",
+ "Individual Building Lot(s)"
+ ));
+ FormElementPickerSingle inspectionTypePickerSingle = FormElementPickerSingle.createInstance().setTitle("Inspection type:").setOptions(typeOptions).setPickerTitle("Pick inspection type");
+
+ FormElementSwitch projectRepPresentSwitch = FormElementSwitch.createInstance().setTitle("Project Representative Present?").setSwitchTexts("Yes", "No");
+
+ FormHeader stakeholdersHeader = FormHeader.createInstance("THE FOLLOWING INDIVIDUALS BECAME AWARE OF ANY ISSUES THOUGH DISCUSSION AND REVIEW OF FINDINGS ON THE DAY OF INSPECTION:");
+ FormElementTextSingleLine projectManagerTextField = FormElementTextSingleLine.createInstance().setTitle("Project Manager:").setHint("Enter name here");
+ FormElementTextSingleLine siteManagerTextField = FormElementTextSingleLine.createInstance().setTitle("Site Manager:").setHint("Enter name here");
+ FormElementTextSingleLine projectOwnerTextField = FormElementTextSingleLine.createInstance().setTitle("Project Owner").setHint("Enter name here");
+
+
+ FormHeader correctiveActionsHeader = FormHeader.createInstance("CORRECTIVE ACTIONS REQUIRED\n***REDER TO APPROVED STORM WATER POLLUTION PREVENTION PLAN (SWP3) FOR SPECIFICATIONS AND DETAILS ON ITEMS BELOW***");
+
+
+ FormElementSwitch correctiveAction1Switch = FormElementSwitch.createInstance().setTitle("Post a laminated copy of completed 327IAC15-5 \"Rule 5\" NOI with permit number at a location visible to the public").setSwitchTexts("Yes", "No");
+ FormElementSwitch correctiveAction2Switch = FormElementSwitch.createInstance().setTitle("Remove accumulated sediment from streets sidewalks and gutters (do not flush with water)").setSwitchTexts("Yes", "No");
+ FormElementSwitch correctiveAction3Switch = FormElementSwitch.createInstance().setTitle("Install/maintain stable temporary construction entrances(s)\", \"Entire Development").setSwitchTexts("Yes", "No");
+ FormElementSwitch correctiveAction4Switch = FormElementSwitch.createInstance().setTitle("Individual Building Lot(s)").setSwitchTexts("Yes", "No");
+
+ FormHeader correctiveAction5Header = FormHeader.createInstance("");
+ List correctiveAction5Options= new ArrayList<>(Arrays.asList("Repair", "Install properly"," Replace", "Add (areas prone to sheet-flow erosion)"));
+ FormElementPickerMulti correctiveAction5Multi = FormElementPickerMulti.createInstance().setTitle("Address silt fence issues which includes one or more of the following: Repair, install properly, Replace, Add (areas prone to sheet-flow erosion)").setOptions(correctiveAction5Options).setPickerTitle("Address silt fence issues which includes one or more of the following:");
+
+ FormElementSwitch correctiveAction6Switch = FormElementSwitch.createInstance().setTitle("Install erosions and sediment control for individual building lot(s) as specified in the approved SWP3").setSwitchTexts("Yes", "No");
+ FormElementSwitch correctiveAction7Switch = FormElementSwitch.createInstance().setTitle("Install check dam(s) according to specifications").setSwitchTexts("Yes", "No");
+ FormElementSwitch correctiveAction8Switch = FormElementSwitch.createInstance().setTitle("Utilize appropriate construction sequence as specified in the approved SWP3").setSwitchTexts("Yes", "No");
+ FormElementSwitch correctiveAction9Switch = FormElementSwitch.createInstance().setTitle("Individual Building Lot(s)").setSwitchTexts("Yes", "No");
+
+ FormHeader correctiveAction10Header = FormHeader.createInstance("");
+ List correctiveAction10Options= new ArrayList<>(Arrays.asList("sediment traps", "behind check dams", "around storm drain inlets or/and other"));
+ FormElementPickerMulti correctiveAction10Multi = FormElementPickerMulti.createInstance().setTitle("Remove sediment from one or more of the following: sediment traps, behind check dams, around storm drain inlets or/and other").setOptions(correctiveAction10Options).setPickerTitle("Pick corrective action");
+
+
+ FormElementTextMultiLine otherCorrectiveAction1TextField = FormElementTextMultiLine.createInstance().setTitle("Other 1:").setHint("Enter text here");
+ FormElementTextMultiLine otherCorrectiveAction2TextField = FormElementTextMultiLine.createInstance().setTitle("Other 2:").setHint("Enter text here");
+ FormElementTextMultiLine otherCorrectiveAction3TextField = FormElementTextMultiLine.createInstance().setTitle("Other 3:").setHint("Enter text here");
+
+
+ FormHeader enforcementActionHeader = FormHeader.createInstance("ENFORCEMENT ACTIONS");
+ List enforcementActionOptions = new ArrayList<>(Arrays.asList(
+ "Notice of Violation Issued",
+ "Stop Work Order Issued",
+ "Fine(s) Issued",
+ "Other"
+ ));
+ FormElementPickerSingle enforcementActionPickerSingle = FormElementPickerSingle.createInstance().setTitle("Inspection type:").setOptions(enforcementActionOptions).setPickerTitle("Pick inspection type");
+
+ FormElementTextMultiLine evidenceTextField = FormElementTextMultiLine.createInstance().setTitle("Evidence of off-site sediment/pollutants.\nHere is a description of type and location:").setHint("Enter text here");
+
+
+ List formItems = new ArrayList<>();
+
+ formItems.add(projectTextField);
+ formItems.add(addressTextField);
+ formItems.add(inspectorTextField);
+ formItems.add(dateInspectedDatePicker);
+
+ formItems.add(inspectionTypePickerSingle);
+ formItems.add(projectRepPresentSwitch);
+
+ formItems.add(stakeholdersHeader);
+ formItems.add(projectManagerTextField);
+ formItems.add(siteManagerTextField);
+ formItems.add(projectOwnerTextField);
+
+ formItems.add(correctiveActionsHeader);
+
+ formItems.add(correctiveAction1Switch);
+ formItems.add(correctiveAction2Switch);
+ formItems.add(correctiveAction3Switch);
+ formItems.add(correctiveAction4Switch);
+
+ formItems.add(correctiveAction5Header);
+ formItems.add(correctiveAction5Multi);
+ formItems.add(correctiveAction5Header);
+
+ formItems.add(correctiveAction7Switch);
+ formItems.add(correctiveAction8Switch);
+ formItems.add(correctiveAction9Switch);
+
+ formItems.add(correctiveAction10Header);
+ formItems.add(correctiveAction10Multi);
+ formItems.add(correctiveAction10Header);
+
+
+ formItems.add(otherCorrectiveAction1TextField);
+ formItems.add(otherCorrectiveAction2TextField);
+ formItems.add(otherCorrectiveAction3TextField);
+
+ formItems.add(enforcementActionHeader);
+ formItems.add(enforcementActionPickerSingle);
+
+ formItems.add(evidenceTextField);
+
+ // populate formBuilder with items
+ formBuilder.addFormElements(formItems);
+
+ // onSubmit
+ submitButton.setOnClickListener(view -> {
+
+ // data retrieval from forms
+ String contact = projectTextField.getValue();
+ String location = addressTextField.getValue();
+ String inspector = inspectorTextField.getValue();
+ String date = dateInspectedDatePicker.getValue();
+
+ ArrayList answersList = new ArrayList<>(20);
+
+ String projectRepPresent = getSwitchBool(projectRepPresentSwitch);
+ answersList.add(projectRepPresent);
+
+ String projectManager = projectManagerTextField.getValue();
+ String siteManager = siteManagerTextField.getValue();
+ String projectOwner = projectOwnerTextField.getValue();
+ answersList.add(projectManager);
+ answersList.add(siteManager);
+ answersList.add(projectOwner);
+
+ String correctiveAction1 = getSwitchBool(correctiveAction1Switch);
+ String correctiveAction2 = getSwitchBool(correctiveAction2Switch);
+ String correctiveAction3 = getSwitchBool(correctiveAction3Switch);
+ String correctiveAction4 = getSwitchBool(correctiveAction4Switch);
+ answersList.add(correctiveAction1);
+ answersList.add(correctiveAction2);
+ answersList.add(correctiveAction3);
+ answersList.add(correctiveAction4);
+
+ List correctiveAction5 = correctiveAction5Multi.getOptionsSelected();
+ answersList.addAll(correctiveAction5);
+
+ String correctiveAction6 = getSwitchBool(correctiveAction6Switch);
+ String correctiveAction7 = getSwitchBool(correctiveAction6Switch);
+ String correctiveAction8 = getSwitchBool(correctiveAction8Switch);
+ String correctiveAction9 = getSwitchBool(correctiveAction9Switch);
+ answersList.add(correctiveAction6);
+ answersList.add(correctiveAction7);
+ answersList.add(correctiveAction8);
+ answersList.add(correctiveAction9);
+
+ String correctiveAction10 = correctiveAction10Multi.getValue();
+ answersList.add(correctiveAction10);
+
+ String otherCorrectiveAction1 = otherCorrectiveAction1TextField.getValue();
+ String otherCorrectiveAction2 = otherCorrectiveAction2TextField.getValue();
+ String otherCorrectiveAction3 = otherCorrectiveAction3TextField.getValue();
+ answersList.add(otherCorrectiveAction1);
+ answersList.add(otherCorrectiveAction2);
+ answersList.add(otherCorrectiveAction3);
+
+
+ List enforcementAction = enforcementActionPickerSingle.getOptionsSelected();
+ answersList.addAll(enforcementAction);
+
+ List imgLink = new ArrayList<>();
+ imgLink.add(evidenceTextField.getValue());
+
+ ConstructionFormData constructionFormData = new ConstructionFormData(contact, date, inspector, location, answersList, imgLink);
+
+
+ // submit data to firestore
+ uploadToFirestore(constructionFormData);
+ });
+
+
+ }
+
+ private String getSwitchBool(FormElementSwitch switchElement) {
+ if (switchElement.getValue().equals("Yes")) return "true";
+ return "false";
+ }
+
+}
diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/ReportAdapter.java b/app/src/main/java/com/sf/stormwaterutilityandroid/ReportAdapter.java
new file mode 100644
index 0000000..3e765dd
--- /dev/null
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/ReportAdapter.java
@@ -0,0 +1,61 @@
+package com.sf.stormwaterutilityandroid;
+
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import androidx.recyclerview.widget.RecyclerView;
+
+ public class ReportAdapter extends RecyclerView.Adapter{
+
+ // List listdata;
+
+ // public ReportAdapter(List listdata) {
+ // this.listdata = listdata;
+ // }
+
+ @Override
+ public ReportAdapter.MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+
+ View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview_reports,parent,false);
+
+ ReportAdapter.MyHolder myHolder = new ReportAdapter.MyHolder(view);
+ return myHolder;
+ }
+
+
+ public void onBindViewHolder(ReportAdapter.MyHolder holder, final int position) {
+
+ // final Report data = listdata.get(position);
+ // holder.inspectorName.setText(data.getInspectorName());
+ // holder.site.setText(data.getSite());
+ // holder.date.setText((CharSequence) data.getDate());
+
+
+ }
+
+ @Override
+ public int getItemCount() {
+ return 0;
+ }
+
+ // @Override
+ // public int getItemCount() {
+ // return listdata.size();
+ //}
+
+
+ class MyHolder extends RecyclerView.ViewHolder{
+ TextView inspectorName,site,date;
+
+ public MyHolder(View itemView) {
+ super(itemView);
+ inspectorName = (TextView) itemView.findViewById(R.id.inspectorName);
+ site = (TextView) itemView.findViewById(R.id.siteName);
+ date = (TextView) itemView.findViewById(R.id.date);
+ }
+ }
+
+
+}
diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/PTI.java b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/PTI.java
new file mode 100644
index 0000000..c46ef0b
--- /dev/null
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/PTI.java
@@ -0,0 +1,39 @@
+package com.sf.stormwaterutilityandroid.WaterWay;
+
+public class PTI {
+ private double BM_intolerant = 0;
+ private double BM_moderately_tolerant = 0;
+ private double BM_fairly_tolerant = 0;
+ private double BM_very_tolerant = 0;
+
+ PTI(double BM_intolerant, double BM_moderately_tolerant, double BM_fairly_tolerant, double BM_very_tolerant) {
+ this.BM_intolerant = BM_intolerant;
+ this.BM_moderately_tolerant = BM_moderately_tolerant;
+ this.BM_fairly_tolerant = BM_fairly_tolerant;
+ this.BM_very_tolerant = BM_very_tolerant;
+ }
+
+ public void setBM_intolerant(double value) {
+ BM_intolerant = value;
+ }
+
+ public void setBM_moderately_tolerant(double value) {
+ BM_moderately_tolerant = value;
+ }
+
+ public void setBM_fairly_tolerant(double value) {
+ BM_fairly_tolerant = value;
+ }
+
+ public void setBM_very_tolerant(double value) {
+ BM_very_tolerant = value;
+ }
+
+ public double calculatePTI() {
+ return 4.0 * BM_intolerant + 3.0 * BM_moderately_tolerant + 2.0 * BM_fairly_tolerant + 1.0 * BM_very_tolerant;
+ }
+
+ public static double getPTI(double intolerant, double moderate, double fairly, double very) {
+ return 4.0 * intolerant + 3.0 * moderate + 2.0 * fairly + 1.0 * very;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WQI.java b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WQI.java
new file mode 100644
index 0000000..0426992
--- /dev/null
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WQI.java
@@ -0,0 +1,31 @@
+package com.sf.stormwaterutilityandroid.WaterWay;
+
+public class WQI {
+ private double CT_temperature_change = 0;
+ private double CT_turbidity = 0;
+ private double CT_pH = 0;
+ private double CT_nitrate = 0;
+ private double CT_total_phosphate = 0;
+ private double CT_dissolved_oxygen = 0;
+
+ WQI(double CT_temperature_change, double CT_turbidity, double CT_pH, double CT_nitrate, double CT_total_phosphate,
+ double CT_dissolved_oxygen) {
+ this.CT_temperature_change = CT_temperature_change;
+ this.CT_turbidity = CT_turbidity;
+ this.CT_pH = CT_pH;
+ this.CT_nitrate = CT_nitrate;
+ this.CT_total_phosphate = CT_total_phosphate;
+ this.CT_dissolved_oxygen = CT_dissolved_oxygen;
+ }
+
+ public double calculateWQI() {
+ double WQIScore = CT_temperature_change * 0.11 + CT_turbidity * 0.09 + CT_pH * 0.12 + CT_nitrate * 0.1 +
+ CT_total_phosphate * 0.11 + CT_dissolved_oxygen * 0.18;
+
+ return WQIScore;
+ }
+
+ public static double getWQI(double tempChange, double turbidity, double pH, double nitrate, double phosphate, double oxygen) {
+ return tempChange * 0.11 + turbidity * 0.09 + pH * 0.12 + nitrate * 0.1 + phosphate * 0.11 + oxygen * 0.18;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayNav.java b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayNav.java
index fbfc264..b851df5 100644
--- a/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayNav.java
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayNav.java
@@ -13,8 +13,6 @@
import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.google.firebase.auth.FirebaseAuth;
import com.sf.stormwaterutilityandroid.R;
-import com.sf.stormwaterutilityandroid.WaterWay.WaterWayReportFragment;
-import com.sf.stormwaterutilityandroid.WaterWay.WaterWayFormFragment;
public class WaterWayNav extends AppCompatActivity {
@@ -53,115 +51,4 @@ public boolean onNavigationItemSelected(@NonNull MenuItem item) {
return false;
}
};
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
- // Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
- //setSupportActionBar(toolbar);
-
-
- BottomNavigationView navigation = findViewById(R.id.navigation);
- navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
- // fm.beginTransaction().add(R.id.main_container, fragment5, "5").hide(fragment5).commit();
- // fm.beginTransaction().add(R.id.main_container, fragment4, "4").hide(fragment4).commit();
-
- fm.beginTransaction().add(R.id.main_container, fragment2, "2").hide(fragment2).commit();
- fm.beginTransaction().add(R.id.main_container, fragment1, "1").commit();
-
- }
-
- /* @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- signout2 = (Button) findViewById(R.id.sign_out);
-
- signout2.setOnClickListener(new View.OnClickListener() {
- public void onClick(View v) {
- FirebaseAuth.getInstance().signOut();
- startActivity(new Intent(com.samuelford48gmail.thsconnect.teacher.MainActivity.this, LoginActivity.class));
- finish();
- }
- });
-
-
- mTextMessage = (TextView) findViewById(R.id.message);
- BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
- navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
-
- }
-
- FirebaseAuth.AuthStateListener authListener = new FirebaseAuth.AuthStateListener() {
- @SuppressLint("SetTextI18n")
- @Override
- public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
- FirebaseUser user = firebaseAuth.getCurrentUser();
- if (user == null) {
- // user auth state is changed - user is null
- // launch login activity
- startActivity(new Intent(com.samuelford48gmail.thsconnect.teacher.MainActivity.this, LoginActivity.class));
- finish();
- }
- }
-
-
- };
- // public void signout (View v){
- // signOut();
- //}
-/*
- public void signOut() {
- auth.signOut();
-
-
-// this listener will be called when there is change in firebase user session
- FirebaseAuth.AuthStateListener authListener = new FirebaseAuth.AuthStateListener() {
- @Override
- public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
- FirebaseUser user = firebaseAuth.getCurrentUser();
- if (user == null) {
- // user auth state is changed - user is null
- // launch login activity
- startActivity(new Intent(com.samuelford48gmail.thsconnect.teacher.MainActivity.this, LoginActivity.class));
- finish();
- }
- }
- };
-
- }
-
-
- @Override
- public void onStart() {
- super.onStart();
- auth.addAuthStateListener(authListener);
- }
-
- @Override
- public void onStop() {
- super.onStop();
- if (authListener != null) {
- auth.removeAuthStateListener(authListener);
- }
- */
- /*@Override
- public boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu., menu);
- return super.onCreateOptionsMenu(menu);
- }
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- int id = item.getItemId();
-
- if (id == R.id.action_settings) {
- startActivity(new Intent(com.samuelford48gmail.thsconnect.teacher.MainActivity.this, SettingsActivity.class));
- return true;
- }
-
- return super.onOptionsItemSelected(item);
- }
-*/
-}
+};
diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayReportFragment.java b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayReportFragment.java
index 150a98d..e944fe1 100644
--- a/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayReportFragment.java
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayReportFragment.java
@@ -1,28 +1,124 @@
package com.sf.stormwaterutilityandroid.WaterWay;
import android.os.Bundle;
+import android.util.Log;
import android.view.LayoutInflater;
+import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.SearchView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProviders;
+import androidx.recyclerview.widget.DefaultItemAnimator;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+import com.google.android.material.bottomnavigation.BottomNavigationView;
+import com.google.firebase.auth.FirebaseAuth;
+import com.google.firebase.firestore.DocumentSnapshot;
+import com.google.firebase.firestore.EventListener;
+import com.google.firebase.firestore.FirebaseFirestore;
+import com.google.firebase.firestore.FirebaseFirestoreException;
+import com.google.firebase.firestore.Query;
+import com.google.firebase.firestore.QuerySnapshot;
+import com.sf.stormwaterutilityandroid.ConstructionReportAdapter;
import com.sf.stormwaterutilityandroid.R;
+import com.sf.stormwaterutilityandroid.ReportAdapter;
+
+import java.util.ArrayList;
+import java.util.List;
+
public class WaterWayReportFragment extends Fragment {
- public View onCreateView(@NonNull LayoutInflater inflater,
- ViewGroup container, Bundle savedInstanceState) {
+ private SearchView searchBar;//TODO: Make a search bar later?
+ private RecyclerView recyclerView;
+ private Button btnSiteName, btnDate, btnInspectorName;
+ //TODO: Need vars for formdata
+
+ //TODO: Need a var for tvReports: UITableView!
+ // List reportList = new ArrayList<>();
+ //TODO: LayoutInflator inflater, ViewGroup container,Might not be needed
+ //This was a public void
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+
+ View view = inflater.inflate(R.layout.activity_reports, container, false);
+ recyclerView = view.findViewById(R.id.recyclerView);
+
+
+
+ btnSiteName = view.findViewById(R.id.btn_site_name);
+ btnDate = view.findViewById(R.id.btn_date);
+ btnInspectorName = view.findViewById(R.id.btn_inspector_name);
+ searchBar = view.findViewById(R.id.searchView);
+ recyclerView = view.findViewById(R.id.recyclerView);
+
+ fetchData();
+
+ btnSiteName.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ //startActivity(new Intent(Reports.this, Site_name.class));
+
+ }
+ });
+
+ btnDate.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ //startActivity(new Intent(Reports.this, Date.class));
+ }
+ });
- View root = inflater.inflate(R.layout.fragment_dashboard, container, false);
- final TextView textView = root.findViewById(R.id.text_dashboard);
+ btnInspectorName.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ //startActivity(new Intent(Reports.this, Inspector_name.class));
+ }
+ });
- return root;
+ return view;
+
+
+
+ }
+ public void fetchData() {
+ /* final ReportAdapter reporter = new ReportAdapter(reportList);
+ FirebaseFirestore.getInstance().collection("AquaSourceForms").orderBy("SortTimeStamp", Query.Direction.DESCENDING).addSnapshotListener(new EventListener() {
+ @Override
+ public void onEvent(@javax.annotation.Nullable QuerySnapshot queryDocumentSnapshots, @javax.annotation.Nullable FirebaseFirestoreException e) {
+ if (e != null) {
+ Log.i("Error", "No data");
+ }
+ reportList.clear();
+
+ for (DocumentSnapshot d:queryDocumentSnapshots){
+ //needs to be changed to waterway data type
+ reportList.add( d.toObject(Report.class));
+ }
+
+ reporter.notifyDataSetChanged();
+ }
+ });
+ RecyclerView.LayoutManager layoutmanager = new LinearLayoutManager(getContext());
+ recyclerView.setLayoutManager(layoutmanager);
+ recyclerView.setItemAnimator(new DefaultItemAnimator());
+ recyclerView.setAdapter(reporter);*/
}
-}
\ No newline at end of file
+
+}
+
+
+
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 7c509bc..6a8db70 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -43,6 +43,6 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
- app:menu="@menu/bottom_nav_menu" />
+ app:menu="@menu/waterway_menu" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_reports.xml b/app/src/main/res/layout/activity_reports.xml
new file mode 100644
index 0000000..ea37db6
--- /dev/null
+++ b/app/src/main/res/layout/activity_reports.xml
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/cardview_reports.xml b/app/src/main/res/layout/cardview_reports.xml
new file mode 100644
index 0000000..edda339
--- /dev/null
+++ b/app/src/main/res/layout/cardview_reports.xml
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/menu/waterway_menu.xml b/app/src/main/res/menu/waterway_menu.xml
new file mode 100644
index 0000000..fe187c0
--- /dev/null
+++ b/app/src/main/res/menu/waterway_menu.xml
@@ -0,0 +1,4 @@
+
+
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 46397e1..f1d7897 100644
--- a/build.gradle
+++ b/build.gradle
@@ -5,7 +5,8 @@ buildscript {
jcenter()
}
dependencies {
- classpath 'com.android.tools.build:gradle:4.1.2'
+ classpath "com.android.tools.build:gradle:4.1.1"
+ classpath 'com.google.gms:google-services:4.3.4'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
From be253d628d2643ba8ed7a797230028896f70873f Mon Sep 17 00:00:00 2001
From: John Parrell
Date: Fri, 19 Mar 2021 12:25:44 -0400
Subject: [PATCH 09/15] Renamed waterwayForm elements for easier mapping
---
.../WaterWay/WaterWayForm.java | 73 ++++++++++---------
1 file changed, 37 insertions(+), 36 deletions(-)
diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayForm.java b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayForm.java
index a797f99..b289859 100644
--- a/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayForm.java
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayForm.java
@@ -31,45 +31,46 @@ private void setupForm() {
formBuilder = new FormBuilder(this, recyclerView);
- FormElementTextNumber element2 = FormElementTextNumber.createInstance().setTitle("Substrate Size").setValue("0");
- FormElementTextNumber element3 = FormElementTextNumber.createInstance().setTitle("Smothering").setValue("0");
- FormElementTextNumber element4 = FormElementTextNumber.createInstance().setTitle("Silting").setValue("0");
- FormElementTextNumber element5 = FormElementTextNumber.createInstance().setTitle("Rootwads").setValue("0");
- FormElementTextNumber element6 = FormElementTextNumber.createInstance().setTitle("Overhanging Veg.").setValue("0");
- FormElementTextNumber element7 = FormElementTextNumber.createInstance().setTitle("Oxbows/Black Waters").setValue("0");
- FormElementTextNumber element8 = FormElementTextNumber.createInstance().setTitle("Downed Trees/Logs").setValue("0");
- FormElementTextNumber element9 = FormElementTextNumber.createInstance().setTitle("Shallows (slow water)").setValue("0");
- FormElementTextNumber element10 = FormElementTextNumber.createInstance().setTitle("Water Plants").setValue("0");
- FormElementTextNumber element11 = FormElementTextNumber.createInstance().setTitle("Deep Pools").setValue("0");
- FormElementTextNumber element12 = FormElementTextNumber.createInstance().setTitle("Logs/Woody Debris").setValue("0");
- FormElementTextNumber element13 = FormElementTextNumber.createInstance().setTitle("Boulders").setValue("0");
- FormElementTextNumber element14 = FormElementTextNumber.createInstance().setTitle("Undercut Banks").setValue("0");
- FormElementTextNumber element15 = FormElementTextNumber.createInstance().setTitle("Sinuosity").setValue("0");
- FormElementTextNumber element16 = FormElementTextNumber.createInstance().setTitle("Natural").setValue("0");
- FormElementTextNumber element17 = FormElementTextNumber.createInstance().setTitle("Riparian Width").setValue("0");
- FormElementTextNumber element18 = FormElementTextNumber.createInstance().setTitle("Land Use").setValue("0");
- FormElementTextNumber element19 = FormElementTextNumber.createInstance().setTitle("Bank Erosion").setValue("0");
+ FormElementTextNumber SubstrateSize = FormElementTextNumber.createInstance().setTitle("Substrate Size").setValue("0");
+ FormElementTextNumber Smothering = FormElementTextNumber.createInstance().setTitle("Smothering").setValue("0");
+ FormElementTextNumber Silting = FormElementTextNumber.createInstance().setTitle("Silting").setValue("0");
+ FormElementTextNumber Rootwads = FormElementTextNumber.createInstance().setTitle("Rootwads").setValue("0");
+ FormElementTextNumber OverhangingVeg = FormElementTextNumber.createInstance().setTitle("Overhanging Veg.").setValue("0");
+ FormElementTextNumber Oxbows = FormElementTextNumber.createInstance().setTitle("Oxbows/Black Waters").setValue("0");
+ FormElementTextNumber DownedTrees = FormElementTextNumber.createInstance().setTitle("Downed Trees/Logs").setValue("0");
+ FormElementTextNumber Shallows = FormElementTextNumber.createInstance().setTitle("Shallows (slow water)").setValue("0");
+ FormElementTextNumber WaterPlants = FormElementTextNumber.createInstance().setTitle("Water Plants").setValue("0");
+ FormElementTextNumber DeepPools = FormElementTextNumber.createInstance().setTitle("Deep Pools").setValue("0");
+ FormElementTextNumber Logs = FormElementTextNumber.createInstance().setTitle("Logs/Woody Debris").setValue("0");
+ FormElementTextNumber Boulders = FormElementTextNumber.createInstance().setTitle("Boulders").setValue("0");
+ FormElementTextNumber Undercut = FormElementTextNumber.createInstance().setTitle("Undercut Banks").setValue("0");
+ FormElementTextNumber Sinuosity = FormElementTextNumber.createInstance().setTitle("Sinuosity").setValue("0");
+ FormElementTextNumber Natural = FormElementTextNumber.createInstance().setTitle("Natural").setValue("0");
+ FormElementTextNumber Riparian = FormElementTextNumber.createInstance().setTitle("Riparian Width").setValue("0");
+ FormElementTextNumber Land = FormElementTextNumber.createInstance().setTitle("Land Use").setValue("0");
+ FormElementTextNumber BankErosion = FormElementTextNumber.createInstance().setTitle("Bank Erosion").setValue("0");
List formItems = new ArrayList<>();
- formItems.add(element2);
- formItems.add(element3);
- formItems.add(element4);
- formItems.add(element5);
- formItems.add(element6);
- formItems.add(element7);
- formItems.add(element8);
- formItems.add(element9);
- formItems.add(element10);
- formItems.add(element11);
- formItems.add(element12);
- formItems.add(element13);
- formItems.add(element14);
- formItems.add(element15);
- formItems.add(element16);
- formItems.add(element17);
- formItems.add(element18);
- formItems.add(element19);
+ formItems.add(SubstrateSize);
+ formItems.add(Smothering);
+ formItems.add(Silting);
+ formItems.add(Rootwads);
+ formItems.add(OverhangingVeg);
+ formItems.add(Oxbows);
+ formItems.add(DownedTrees);
+ formItems.add(Shallows);
+ formItems.add(WaterPlants);
+ formItems.add(DeepPools);
+ formItems.add(Logs);
+ formItems.add(Boulders);
+ formItems.add(Undercut);
+ formItems.add(Sinuosity);
+ formItems.add(Natural);
+ formItems.add(Riparian);
+ formItems.add(Land);
+ formItems.add(BankErosion);
+
formBuilder.addFormElements(formItems);
}
From fcf07769c41daa33a25fa71ccc9fa2843181028a Mon Sep 17 00:00:00 2001
From: Samuelford24
Date: Sat, 20 Mar 2021 22:01:26 -0400
Subject: [PATCH 10/15] added segmented control to waterway form,fixed
navigation, updated gradle
---
.idea/jarRepositories.xml | 5 +
app/build.gradle | 1 +
.../InspectionForm.java | 1 +
.../WaterWay/WaterWayForm.java | 5 +-
.../WaterWay/WaterWayFormFragment.java | 115 ++++-
.../WaterWay/WaterWayNav.java | 117 ++++-
app/src/main/res/layout/fragment_wwform.xml | 115 ++++-
app/src/main/res/menu/waterway_menu.xml | 8 +
app/src/main/res/values/colors.xml | 481 ++++++++++++++++++
build.gradle | 4 +-
10 files changed, 821 insertions(+), 31 deletions(-)
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index a5f05cd..2370474 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -21,5 +21,10 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index eea8c58..e22b778 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -40,6 +40,7 @@ dependencies {
implementation 'me.riddhimanadib.form-master:form-master:1.1.0'
implementation 'androidx.annotation:annotation:1.1.0'
implementation 'com.google.firebase:firebase-auth:19.4.0'
+ implementation 'com.github.addisonelliott:SegmentedButton:3.1.9'
implementation 'com.google.firebase:firebase-firestore:21.6.0'
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java b/app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java
index 9e8a740..b1d39b2 100644
--- a/app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java
@@ -174,6 +174,7 @@ private void setupForm() {
String projectManager = projectManagerTextField.getValue();
String siteManager = siteManagerTextField.getValue();
String projectOwner = projectOwnerTextField.getValue();
+
answersList.add(projectManager);
answersList.add(siteManager);
answersList.add(projectOwner);
diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayForm.java b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayForm.java
index a797f99..0d5fc0a 100644
--- a/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayForm.java
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayForm.java
@@ -22,8 +22,8 @@ public class WaterWayForm extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_sample_fordm);
- recyclerView = findViewById(R.id.recyclerView2);
+ setContentView(R.layout.fragment_wwform);
+ recyclerView = findViewById(R.id.rvWWF);
setupForm();
}
@@ -72,5 +72,6 @@ private void setupForm() {
formItems.add(element19);
formBuilder.addFormElements(formItems);
+
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayFormFragment.java b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayFormFragment.java
index 6663fd4..2947c7e 100644
--- a/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayFormFragment.java
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayFormFragment.java
@@ -9,41 +9,114 @@
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
+import androidx.recyclerview.widget.RecyclerView;
import com.sf.stormwaterutilityandroid.R;
import com.sf.stormwaterutilityandroid.SampleFordm;
+import java.util.ArrayList;
+import java.util.List;
-public class WaterWayFormFragment extends Fragment {
-
+import me.riddhimanadib.formmaster.FormBuilder;
+import me.riddhimanadib.formmaster.model.BaseFormElement;
+import me.riddhimanadib.formmaster.model.FormElementTextNumber;
- Button b1,b2,b3,b4,b5;
+public class WaterWayFormFragment extends Fragment {
+RecyclerView recyclerView;
+ FormBuilder formBuilder;
+ Button gen,dws,ct,bm,hq;
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
- View root = inflater.inflate(R.layout.fragment_home, container, false);
- b1 = root.findViewById(R.id.button);
- b1.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- startActivity(new Intent(getContext(), SampleFordm.class));
- }
- });
-
- //CHeck To5a.03 project for dealing saved instance state
- /*
- if (savedInstanceState != null) {
- String allPreviousLifecycleCallbacks = savedInstanceState
- .getString("Email");
- System.out.println("SavedInstanceState: "+allPreviousLifecycleCallbacks);
- element11.setValue(allPreviousLifecycleCallbacks);
- }
-*/
+ View root = inflater.inflate(R.layout.fragment_wwform, container, false);
+ recyclerView = root.findViewById(R.id.rvWWF);
+ setupForm();
+ gen = root.findViewById(R.id.gen);
+ dws = root.findViewById(R.id.dws);
+ ct = root.findViewById(R.id.ct);
+ bm = root.findViewById(R.id.bm);
+ hq = root.findViewById(R.id.hq);
+ gen.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+
+ }
+ });
+ dws.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+
+ }
+ });
+ ct.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+
+
+ }
+ });
+ bm.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+
+ }
+ });
+ hq.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+
+ }
+ });
return root;
}
+ private void setupForm() {
+
+
+ formBuilder = new FormBuilder(getContext(), recyclerView);
+ FormElementTextNumber element2 = FormElementTextNumber.createInstance().setTitle("Substrate Size").setValue("0");
+ FormElementTextNumber element3 = FormElementTextNumber.createInstance().setTitle("Smothering").setValue("0");
+ FormElementTextNumber element4 = FormElementTextNumber.createInstance().setTitle("Silting").setValue("0");
+ FormElementTextNumber element5 = FormElementTextNumber.createInstance().setTitle("Rootwads").setValue("0");
+ FormElementTextNumber element6 = FormElementTextNumber.createInstance().setTitle("Overhanging Veg.").setValue("0");
+ FormElementTextNumber element7 = FormElementTextNumber.createInstance().setTitle("Oxbows/Black Waters").setValue("0");
+ FormElementTextNumber element8 = FormElementTextNumber.createInstance().setTitle("Downed Trees/Logs").setValue("0");
+ FormElementTextNumber element9 = FormElementTextNumber.createInstance().setTitle("Shallows (slow water)").setValue("0");
+ FormElementTextNumber element10 = FormElementTextNumber.createInstance().setTitle("Water Plants").setValue("0");
+ FormElementTextNumber element11 = FormElementTextNumber.createInstance().setTitle("Deep Pools").setValue("0");
+ FormElementTextNumber element12 = FormElementTextNumber.createInstance().setTitle("Logs/Woody Debris").setValue("0");
+ FormElementTextNumber element13 = FormElementTextNumber.createInstance().setTitle("Boulders").setValue("0");
+ FormElementTextNumber element14 = FormElementTextNumber.createInstance().setTitle("Undercut Banks").setValue("0");
+ FormElementTextNumber element15 = FormElementTextNumber.createInstance().setTitle("Sinuosity").setValue("0");
+ FormElementTextNumber element16 = FormElementTextNumber.createInstance().setTitle("Natural").setValue("0");
+ FormElementTextNumber element17 = FormElementTextNumber.createInstance().setTitle("Riparian Width").setValue("0");
+ FormElementTextNumber element18 = FormElementTextNumber.createInstance().setTitle("Land Use").setValue("0");
+ FormElementTextNumber element19 = FormElementTextNumber.createInstance().setTitle("Bank Erosion").setValue("0");
+ List formItems = new ArrayList<>();
+ formItems.add(element2);
+ formItems.add(element3);
+ formItems.add(element4);
+ formItems.add(element5);
+ formItems.add(element6);
+ formItems.add(element7);
+ formItems.add(element8);
+ formItems.add(element9);
+ formItems.add(element10);
+ formItems.add(element11);
+ formItems.add(element12);
+ formItems.add(element13);
+ formItems.add(element14);
+ formItems.add(element15);
+ formItems.add(element16);
+ formItems.add(element17);
+ formItems.add(element18);
+ formItems.add(element19);
+ formBuilder.addFormElements(formItems);
+
+
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayNav.java b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayNav.java
index b851df5..c3a8b6b 100644
--- a/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayNav.java
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayNav.java
@@ -51,4 +51,119 @@ public boolean onNavigationItemSelected(@NonNull MenuItem item) {
return false;
}
};
-};
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+
+ // Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
+ //setSupportActionBar(toolbar);
+
+
+ BottomNavigationView navigation = findViewById(R.id.navigation);
+ navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
+ // fm.beginTransaction().add(R.id.main_container, fragment5, "5").hide(fragment5).commit();
+ // fm.beginTransaction().add(R.id.main_container, fragment4, "4").hide(fragment4).commit();
+
+ fm.beginTransaction().add(R.id.main_container, fragment2, "2").hide(fragment2).commit();
+ fm.beginTransaction().add(R.id.main_container, fragment1, "1").commit();
+
+ }
+
+ /* @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+ signout2 = (Button) findViewById(R.id.sign_out);
+
+ signout2.setOnClickListener(new View.OnClickListener() {
+ public void onClick(View v) {
+ FirebaseAuth.getInstance().signOut();
+ startActivity(new Intent(com.samuelford48gmail.thsconnect.teacher.MainActivity.this, LoginActivity.class));
+ finish();
+ }
+ });
+
+
+ mTextMessage = (TextView) findViewById(R.id.message);
+ BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
+ navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
+
+ }
+
+ FirebaseAuth.AuthStateListener authListener = new FirebaseAuth.AuthStateListener() {
+ @SuppressLint("SetTextI18n")
+ @Override
+ public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
+ FirebaseUser user = firebaseAuth.getCurrentUser();
+ if (user == null) {
+ // user auth state is changed - user is null
+ // launch login activity
+ startActivity(new Intent(com.samuelford48gmail.thsconnect.teacher.MainActivity.this, LoginActivity.class));
+ finish();
+ }
+ }
+
+
+ };
+ // public void signout (View v){
+ // signOut();
+ //}
+/*
+ public void signOut() {
+ auth.signOut();
+
+
+// this listener will be called when there is change in firebase user session
+ FirebaseAuth.AuthStateListener authListener = new FirebaseAuth.AuthStateListener() {
+ @Override
+ public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
+ FirebaseUser user = firebaseAuth.getCurrentUser();
+ if (user == null) {
+ // user auth state is changed - user is null
+ // launch login activity
+ startActivity(new Intent(com.samuelford48gmail.thsconnect.teacher.MainActivity.this, LoginActivity.class));
+ finish();
+ }
+ }
+ };
+
+ }
+
+
+ @Override
+ public void onStart() {
+ super.onStart();
+ auth.addAuthStateListener(authListener);
+ }
+
+ @Override
+ public void onStop() {
+ super.onStop();
+ if (authListener != null) {
+ auth.removeAuthStateListener(authListener);
+ }
+ */
+ /*@Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu., menu);
+ return super.onCreateOptionsMenu(menu);
+ }
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ int id = item.getItemId();
+
+ if (id == R.id.action_settings) {
+ startActivity(new Intent(com.samuelford48gmail.thsconnect.teacher.MainActivity.this, SettingsActivity.class));
+ return true;
+ }
+
+ return super.onOptionsItemSelected(item);
+ }
+*/
+}
+
+
+
+
+
diff --git a/app/src/main/res/layout/fragment_wwform.xml b/app/src/main/res/layout/fragment_wwform.xml
index f3062b4..27bbcca 100644
--- a/app/src/main/res/layout/fragment_wwform.xml
+++ b/app/src/main/res/layout/fragment_wwform.xml
@@ -1,14 +1,117 @@
-
+
+
+
+
+
+
+
+
+
+
+
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:layout_marginBottom="14dp"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/buttonGroup_vectorDrawable" />
\ No newline at end of file
diff --git a/app/src/main/res/menu/waterway_menu.xml b/app/src/main/res/menu/waterway_menu.xml
index fe187c0..97a3a2d 100644
--- a/app/src/main/res/menu/waterway_menu.xml
+++ b/app/src/main/res/menu/waterway_menu.xml
@@ -1,4 +1,12 @@
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 6fde8eb..46c9cf6 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -10,4 +10,485 @@
#6200EE
#3700B3
#03DAC5
+
+
+
+
+ -- http://www.google.com/design/spec/style/color.html#color-color-palette -->
+
+
+ #FFEBEE
+ #FFCDD2
+ #EF9A9A
+ #E57373
+ #EF5350
+ #F44336
+ #E53935
+ #D32F2F
+ #C62828
+ #B71C1C
+ #FF8A80
+ #FF5252
+ #FF1744
+ #D50000
+
+
+
+
+ #FCE4EC
+ #F8BBD0
+ #F48FB1
+ #F06292
+ #EC407A
+ #E91E63
+ #D81B60
+ #C2185B
+ #AD1457
+ #880E4F
+ #FF80AB
+ #FF4081
+ #F50057
+ #C51162
+
+
+
+ #F3E5F5
+ #E1BEE7
+
+ #BA68C8
+ #AB47BC
+
+ #8E24AA
+
+ #6A1B9A
+ #4A148C
+ #EA80FC
+ #E040FB
+ #D500F9
+ #AA00FF
+
+
+
+ #EDE7F6
+ #D1C4E9
+ #B39DDB
+ #9575CD
+ #7E57C2
+ #673AB7
+ #5E35B1
+ #512DA8
+ #4527A0
+ #311B92
+ #B388FF
+ #7C4DFF
+ #651FFF
+ #6200EA
+
+
+
+ #E8EAF6
+ #C5CAE9
+ #9FA8DA
+ #7986CB
+ #5C6BC0
+ #3F51B5
+ #3949AB
+ #303F9F
+ #283593
+ #1A237E
+ #8C9EFF
+ #536DFE
+ #3D5AFE
+ #304FFE
+
+
+
+ #E3F2FD
+ #BBDEFB
+ #90CAF9
+ #64B5F6
+ #42A5F5
+ #2196F3
+ #1E88E5
+ #1976D2
+ #1565C0
+ #0D47A1
+ #82B1FF
+ #448AFF
+ #2979FF
+ #2962FF
+
+
+
+ #E1F5FE
+ #B3E5FC
+ #81D4FA
+ #4FC3F7
+ #29B6F6
+ #03A9F4
+ #039BE5
+ #0288D1
+ #0277BD
+ #01579B
+ #80D8FF
+ #40C4FF
+ #00B0FF
+ #0091EA
+
+
+
+ #E0F7FA
+ #B2EBF2
+ #80DEEA
+ #4DD0E1
+ #26C6DA
+ #00BCD4
+ #00ACC1
+ #0097A7
+ #00838F
+ #006064
+ #84FFFF
+ #18FFFF
+ #00E5FF
+ #00B8D4
+
+
+
+ #aab2dfdb
+
+ #E0F2F1
+ #B2DFDB
+
+ #4DB6AC
+ #26A69A
+ #009688
+ #00897B
+
+ #00695C
+ #004D40
+ #A7FFEB
+ #64FFDA
+ #1DE9B6
+ #00BFA5
+
+
+
+ #E8F5E9
+ #C8E6C9
+ #A5D6A7
+ #81C784
+ #66BB6A
+ #4CAF50
+ #43A047
+ #388E3C
+ #2E7D32
+ #1B5E20
+ #B9F6CA
+ #69F0AE
+ #00E676
+ #00C853
+
+
+
+ #F1F8E9
+ #DCEDC8
+ #C5E1A5
+ #AED581
+ #9CCC65
+ #8BC34A
+ #7CB342
+ #689F38
+ #558B2F
+ #33691E
+ #CCFF90
+ #B2FF59
+ #76FF03
+ #64DD17
+
+
+
+ #F9FBE7
+ #F0F4C3
+ #E6EE9C
+ #DCE775
+ #D4E157
+ #CDDC39
+ #C0CA33
+ #AFB42B
+ #9E9D24
+ #827717
+ #F4FF81
+ #EEFF41
+ #C6FF00
+ #AEEA00
+
+
+
+ #FFFDE7
+ #FFF9C4
+ #FFF59D
+ #FFF176
+ #FFEE58
+ #FFEB3B
+ #FDD835
+ #FBC02D
+ #F9A825
+ #F57F17
+ #FFFF8D
+ #FFFF00
+ #FFEA00
+ #FFD600
+
+
+
+ #FFF8E1
+ #FFECB3
+ #FFE082
+ #FFD54F
+ #FFCA28
+ #FFC107
+ #FFB300
+ #FFA000
+ #FF8F00
+ #FF6F00
+ #FFE57F
+ #FFD740
+ #FFC400
+ #FFAB00
+
+
+
+ #FFF3E0
+ #FFE0B2
+ #FFCC80
+ #FFB74D
+ #FFA726
+ #FF9800
+ #FB8C00
+ #F57C00
+ #EF6C00
+ #E65100
+ #FFD180
+ #FFAB40
+ #FF9100
+ #FF6D00
+
+
+
+ #FBE9E7
+ #FFCCBC
+ #FFAB91
+ #FF8A65
+ #FF7043
+ #FF5722
+ #F4511E
+ #E64A19
+ #D84315
+ #BF360C
+ #FF9E80
+ #FF6E40
+ #FF3D00
+ #DD2C00
+
+
+
+ #EFEBE9
+ #D7CCC8
+ #BCAAA4
+ #A1887F
+ #8D6E63
+ #795548
+ #6D4C41
+ #5D4037
+ #4E342E
+ #3E2723
+
+
+
+ #FAFAFA
+ #F5F5F5
+ #EEEEEE
+ #E0E0E0
+ #BDBDBD
+ #9E9E9E
+ #757575
+ #616161
+ #424242
+ #212121
+
+ #aa9e9e9e
+
+
+
+
+ #ECEFF1
+ #CFD8DC
+ #B0BEC5
+ #90A4AE
+ #78909C
+ #607D8B
+ #546E7A
+ #455A64
+ #37474F
+ #263238
+
+
+
+
+ #FFFF00
+ #FF00FF
+ #FF0000
+ #C0C0C0
+ #808080
+ #808000
+ #800080
+ #800000
+ #00FFFF
+ #00FF00
+ #008080
+ #008000
+ #0000FF
+ #000080
+ #FFFFFF
+ #FFFFF0
+ #FFFFE0
+ #FFFF00
+ #FFFAFA
+ #FFFAF0
+ #FFFACD
+ #FFF8DC
+ #FFF5EE
+ #FFF0F5
+ #FFEFD5
+ #FFEBCD
+ #FFE4E1
+ #FFE4C4
+ #FFE4B5
+ #FFDEAD
+ #FFDAB9
+ #FFD700
+ #FFC0CB
+ #FFB6C1
+ #FFA500
+ #FFA07A
+ #FF8C00
+ #FF7F50
+ #FF69B4
+ #FF6347
+ #FF4500
+ #FF1493
+ #FF00FF
+ #FF00FF
+ #FF0000
+ #FDF5E6
+ #FAFAD2
+ #FAF0E6
+ #FAEBD7
+ #FA8072
+ #F8F8FF
+ #F5FFFA
+ #F5F5F5
+ #F5F5DC
+ #F5DEB3
+ #F4A460
+ #F0FFFF
+ #F0FFF0
+ #F0F8FF
+ #F0E68C
+ #F08080
+ #EEE8AA
+ #EE82EE
+ #E9967A
+ #E6E6FA
+ #E0FFFF
+ #DEB887
+ #DDA0DD
+ #DCDCDC
+ #DC143C
+ #DB7093
+ #DAA520
+ #DA70D6
+ #D8BFD8
+ #D3D3D3
+ #D2B48C
+ #D2691E
+ #CD853F
+ #CD5C5C
+ #C71585
+ #C0C0C0
+ #BDB76B
+ #BC8F8F
+ #BA55D3
+ #B8860B
+ #B22222
+ #B0E0E6
+ #B0C4DE
+ #AFEEEE
+ #ADFF2F
+ #ADD8E6
+ #A9A9A9
+ #A52A2A
+ #A0522D
+ #9ACD32
+ #9932CC
+ #98FB98
+ #9400D3
+ #9370DB
+ #90EE90
+ #8FBC8F
+ #8B4513
+ #8B008B
+ #8B0000
+ #8A2BE2
+ #87CEFA
+ #87CEEB
+ #808080
+ #808000
+ #800080
+ #800000
+ #7FFFD4
+ #7FFF00
+ #7CFC00
+ #7B68EE
+ #4B0082
+ #778899
+ #708090
+ #6B8E23
+ #6A5ACD
+ #696969
+ #66CDAA
+ #6495ED
+ #5F9EA0
+ #556B2F
+ #48D1CC
+ #483D8B
+ #4682B4
+ #4169E1
+ #40E0D0
+ #3CB371
+ #32CD32
+ #2F4F4F
+ #2E8B57
+ #228B22
+ #20B2AA
+ #1E90FF
+ #191970
+ #00FFFF
+ #00FFFF
+ #00FF7F
+ #00FF00
+ #00FA9A
+ #00CED1
+ #00BFFF
+ #008B8B
+ #008080
+ #008000
+ #006400
+ #0000FF
+ #0000CD
+ #00008B
+ #000080
+ #000000
+ #0000A0
+
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index f1d7897..5346ccf 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,11 +1,12 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
+
google()
jcenter()
}
dependencies {
- classpath "com.android.tools.build:gradle:4.1.1"
+ classpath "com.android.tools.build:gradle:4.1.2"
classpath 'com.google.gms:google-services:4.3.4'
// NOTE: Do not place your application dependencies here; they belong
@@ -15,6 +16,7 @@ buildscript {
allprojects {
repositories {
+ maven { url "https://jitpack.io" }
google()
jcenter()
}
From b63383e88c4237bff5aa3a964ac78dd1dbe95936 Mon Sep 17 00:00:00 2001
From: John Parrell
Date: Mon, 22 Mar 2021 20:42:36 -0400
Subject: [PATCH 11/15] Renamed waterwayForm elements for easier mapping, added
retrieval of waterwayForm values
---
.../WaterWay/WaterWayForm.java | 112 ++++++++++++------
1 file changed, 76 insertions(+), 36 deletions(-)
diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayForm.java b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayForm.java
index 11b3bf1..2596dfa 100644
--- a/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayForm.java
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayForm.java
@@ -8,7 +8,9 @@
import com.sf.stormwaterutilityandroid.R;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import me.riddhimanadib.formmaster.FormBuilder;
import me.riddhimanadib.formmaster.model.BaseFormElement;
@@ -18,6 +20,24 @@ public class WaterWayForm extends AppCompatActivity {
//HQ form
private FormBuilder formBuilder;
private RecyclerView recyclerView;
+ double subVal = 0.0;
+ double smothVal = 0.0;
+ double siltVal = 0.0;
+ double rootVal = 0.0;
+ double overVegVal = 0.0;
+ double oxVal = 0.0;
+ double downVal = 0.0;
+ double shallowVal = 0.0;
+ double watVal = 0.0;
+ double deepVal = 0.0;
+ double logVal = 0.0;
+ double bouldVal = 0.0;
+ double underVal = 0.0;
+ double sinVal = 0.0;
+ double natVal = 0.0;
+ double ripVal = 0.0;
+ double landVal = 0.0;
+ double bankVal = 0.0;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -30,47 +50,67 @@ protected void onCreate(Bundle savedInstanceState) {
private void setupForm() {
formBuilder = new FormBuilder(this, recyclerView);
- FormElementTextNumber element2 = FormElementTextNumber.createInstance().setTitle("Substrate Size").setValue("0");
- FormElementTextNumber element3 = FormElementTextNumber.createInstance().setTitle("Smothering").setValue("0");
- FormElementTextNumber element4 = FormElementTextNumber.createInstance().setTitle("Silting").setValue("0");
- FormElementTextNumber element5 = FormElementTextNumber.createInstance().setTitle("Rootwads").setValue("0");
- FormElementTextNumber element6 = FormElementTextNumber.createInstance().setTitle("Overhanging Veg.").setValue("0");
- FormElementTextNumber element7 = FormElementTextNumber.createInstance().setTitle("Oxbows/Black Waters").setValue("0");
- FormElementTextNumber element8 = FormElementTextNumber.createInstance().setTitle("Downed Trees/Logs").setValue("0");
- FormElementTextNumber element9 = FormElementTextNumber.createInstance().setTitle("Shallows (slow water)").setValue("0");
- FormElementTextNumber element10 = FormElementTextNumber.createInstance().setTitle("Water Plants").setValue("0");
- FormElementTextNumber element11 = FormElementTextNumber.createInstance().setTitle("Deep Pools").setValue("0");
- FormElementTextNumber element12 = FormElementTextNumber.createInstance().setTitle("Logs/Woody Debris").setValue("0");
- FormElementTextNumber element13 = FormElementTextNumber.createInstance().setTitle("Boulders").setValue("0");
- FormElementTextNumber element14 = FormElementTextNumber.createInstance().setTitle("Undercut Banks").setValue("0");
- FormElementTextNumber element15 = FormElementTextNumber.createInstance().setTitle("Sinuosity").setValue("0");
- FormElementTextNumber element16 = FormElementTextNumber.createInstance().setTitle("Natural").setValue("0");
- FormElementTextNumber element17 = FormElementTextNumber.createInstance().setTitle("Riparian Width").setValue("0");
- FormElementTextNumber element18 = FormElementTextNumber.createInstance().setTitle("Land Use").setValue("0");
- FormElementTextNumber element19 = FormElementTextNumber.createInstance().setTitle("Bank Erosion").setValue("0");
+ FormElementTextNumber subSize = FormElementTextNumber.createInstance().setTitle("Substrate Size").setValue("0");
+ FormElementTextNumber smothering = FormElementTextNumber.createInstance().setTitle("Smothering").setValue("0");
+ FormElementTextNumber silting = FormElementTextNumber.createInstance().setTitle("Silting").setValue("0");
+ FormElementTextNumber rootwads = FormElementTextNumber.createInstance().setTitle("Rootwads").setValue("0");
+ FormElementTextNumber overhangingVeg = FormElementTextNumber.createInstance().setTitle("Overhanging Veg.").setValue("0");
+ FormElementTextNumber oxbows = FormElementTextNumber.createInstance().setTitle("Oxbows/Black Waters").setValue("0");
+ FormElementTextNumber downed = FormElementTextNumber.createInstance().setTitle("Downed Trees/Logs").setValue("0");
+ FormElementTextNumber shallows = FormElementTextNumber.createInstance().setTitle("Shallows (slow water)").setValue("0");
+ FormElementTextNumber waterPlants = FormElementTextNumber.createInstance().setTitle("Water Plants").setValue("0");
+ FormElementTextNumber deepPools = FormElementTextNumber.createInstance().setTitle("Deep Pools").setValue("0");
+ FormElementTextNumber logs = FormElementTextNumber.createInstance().setTitle("Logs/Woody Debris").setValue("0");
+ FormElementTextNumber boulders = FormElementTextNumber.createInstance().setTitle("Boulders").setValue("0");
+ FormElementTextNumber undercutBanks = FormElementTextNumber.createInstance().setTitle("Undercut Banks").setValue("0");
+ FormElementTextNumber sinuosity = FormElementTextNumber.createInstance().setTitle("Sinuosity").setValue("0");
+ FormElementTextNumber natural = FormElementTextNumber.createInstance().setTitle("Natural").setValue("0");
+ FormElementTextNumber riparianWidth = FormElementTextNumber.createInstance().setTitle("Riparian Width").setValue("0");
+ FormElementTextNumber landUse = FormElementTextNumber.createInstance().setTitle("Land Use").setValue("0");
+ FormElementTextNumber bankErosion = FormElementTextNumber.createInstance().setTitle("Bank Erosion").setValue("0");
List formItems = new ArrayList<>();
- formItems.add(element2);
- formItems.add(element3);
- formItems.add(element4);
- formItems.add(element5);
- formItems.add(element6);
- formItems.add(element7);
- formItems.add(element8);
- formItems.add(element9);
- formItems.add(element10);
- formItems.add(element11);
- formItems.add(element12);
- formItems.add(element13);
- formItems.add(element14);
- formItems.add(element15);
- formItems.add(element16);
- formItems.add(element17);
- formItems.add(element18);
- formItems.add(element19);
+ formItems.add(subSize);
+ formItems.add(smothering);
+ formItems.add(silting);
+ formItems.add(rootwads);
+ formItems.add(overhangingVeg);
+ formItems.add(oxbows);
+ formItems.add(downed);
+ formItems.add(shallows);
+ formItems.add(waterPlants);
+ formItems.add(deepPools);
+ formItems.add(logs);
+ formItems.add(boulders);
+ formItems.add(undercutBanks);
+ formItems.add(sinuosity);
+ formItems.add(natural);
+ formItems.add(riparianWidth);
+ formItems.add(landUse);
+ formItems.add(bankErosion);
formBuilder.addFormElements(formItems);
+ subVal = Double.parseDouble(subSize.getValue());
+ smothVal = Double.parseDouble(smothering.getValue());
+ siltVal = Double.parseDouble(silting.getValue());
+ rootVal = Double.parseDouble(rootwads.getValue());
+ overVegVal = Double.parseDouble(overhangingVeg.getValue());
+ oxVal = Double.parseDouble(oxbows.getValue());
+ downVal = Double.parseDouble(downed.getValue());
+ shallowVal = Double.parseDouble(shallows.getValue());
+ watVal = Double.parseDouble(waterPlants.getValue());
+ deepVal = Double.parseDouble(deepPools.getValue());
+ logVal = Double.parseDouble(logs.getValue());
+ bouldVal = Double.parseDouble(boulders.getValue());
+ underVal = Double.parseDouble(undercutBanks.getValue());
+ sinVal = Double.parseDouble(sinuosity.getValue());
+ natVal = Double.parseDouble(natural.getValue());
+ ripVal = Double.parseDouble(riparianWidth.getValue());
+ landVal = Double.parseDouble(landUse.getValue());
+ bankVal = Double.parseDouble(bankErosion.getValue());
+
+
}
}
\ No newline at end of file
From 39ba0fe6b2c2a441156a3e9e8a1643fe6e2d4886 Mon Sep 17 00:00:00 2001
From: John Parrell
Date: Mon, 22 Mar 2021 20:48:40 -0400
Subject: [PATCH 12/15] Added tolerant form with retrieval
---
.../WaterWay/WaterWayForm.java | 31 +++++++++++++++++--
1 file changed, 29 insertions(+), 2 deletions(-)
diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayForm.java b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayForm.java
index 2596dfa..2d934ac 100644
--- a/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayForm.java
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayForm.java
@@ -39,15 +39,21 @@ public class WaterWayForm extends AppCompatActivity {
double landVal = 0.0;
double bankVal = 0.0;
+ //Tolerant Form
+ double intolerantVal = 0.0;
+ double modTolerantVal = 0.0;
+ double fairTolerantVal = 0.0;
+ double veryTolerantVal = 0.0;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sample_fordm);
recyclerView = findViewById(R.id.recyclerView2);
- setupForm();
+ setupHQForm();
}
- private void setupForm() {
+ private void setupHQForm() {
formBuilder = new FormBuilder(this, recyclerView);
FormElementTextNumber subSize = FormElementTextNumber.createInstance().setTitle("Substrate Size").setValue("0");
@@ -112,5 +118,26 @@ private void setupForm() {
bankVal = Double.parseDouble(bankErosion.getValue());
+ }
+ private void setupTolerantForm(){
+ formBuilder = new FormBuilder(this, recyclerView);
+ FormElementTextNumber intolerant = FormElementTextNumber.createInstance().setTitle("Intolerant").setValue("0");
+ FormElementTextNumber moderatelyTolerant = FormElementTextNumber.createInstance().setTitle("Moderately Tolerant").setValue("0");
+ FormElementTextNumber fairlyTolerant = FormElementTextNumber.createInstance().setTitle("Fairly Tolerant").setValue("0");
+ FormElementTextNumber veryTolerant = FormElementTextNumber.createInstance().setTitle("Very Tolerant").setValue("0");
+
+ List formItems = new ArrayList<>();
+ formItems.add(intolerant);
+ formItems.add(moderatelyTolerant);
+ formItems.add(fairlyTolerant);
+ formItems.add(veryTolerant);
+
+ intolerantVal = Double.parseDouble(intolerant.getValue());
+ modTolerantVal = Double.parseDouble(moderatelyTolerant.getValue());
+ fairTolerantVal = Double.parseDouble(fairlyTolerant.getValue());
+ veryTolerantVal = Double.parseDouble(veryTolerant.getValue());
+
+
+
}
}
\ No newline at end of file
From 0bdce9b1579d09a844bfb6e54607f613192e6dde Mon Sep 17 00:00:00 2001
From: Samuelford24
Date: Mon, 22 Mar 2021 21:36:19 -0400
Subject: [PATCH 13/15] restructured waterway form, completed navigation
---
.../WaterWay/WaterWayFormFragment.java | 238 +++++++++++++++---
app/src/main/res/layout/fragment_wwform.xml | 50 +++-
2 files changed, 257 insertions(+), 31 deletions(-)
diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayFormFragment.java b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayFormFragment.java
index 2947c7e..e6487c2 100644
--- a/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayFormFragment.java
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayFormFragment.java
@@ -11,6 +11,7 @@
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.RecyclerView;
+import com.addisonelliott.segmentedbutton.SegmentedButton;
import com.sf.stormwaterutilityandroid.R;
import com.sf.stormwaterutilityandroid.SampleFordm;
@@ -20,24 +21,62 @@
import me.riddhimanadib.formmaster.FormBuilder;
import me.riddhimanadib.formmaster.model.BaseFormElement;
import me.riddhimanadib.formmaster.model.FormElementTextNumber;
+import me.riddhimanadib.formmaster.model.FormElementTextSingleLine;
+import me.riddhimanadib.formmaster.model.FormHeader;
public class WaterWayFormFragment extends Fragment {
-RecyclerView recyclerView;
- FormBuilder formBuilder;
- Button gen,dws,ct,bm,hq;
+RecyclerView rvGen, rvDWS, rvHQ, rvBM,rvCT;
+ FormBuilder fbGEn,fbDWS,fbBM,fbHQ,fbCT;
+SegmentedButton gen,dws,ct,bm,hq;
+Button submit;
+Boolean boolgen,booldws,boolct,boolbm,boolhq;
+ List formItemsHQ, formItemsGen, formItemsBM, formItemsCT, formItemsDWS;
+
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_wwform, container, false);
- recyclerView = root.findViewById(R.id.rvWWF);
- setupForm();
+ //recylerViews for each piece of the form
+ submit = root.findViewById(R.id.submitForm);
+ rvGen = root.findViewById(R.id.rvWWF);
+ rvDWS = root.findViewById(R.id.rvDWS);
+ rvHQ = root.findViewById(R.id.rvHQ);
+ rvBM = root.findViewById(R.id.rvBM);
+ rvCT = root.findViewById(R.id.rvCT);
+
+ //making recyclerViews invisible
+ rvDWS.setVisibility(View.INVISIBLE);
+ rvHQ.setVisibility(View.INVISIBLE);
+ rvBM.setVisibility(View.INVISIBLE);
+ rvCT.setVisibility(View.INVISIBLE);
+ setupFormGen();
+ //Segemented Control Bar buttons
gen = root.findViewById(R.id.gen);
dws = root.findViewById(R.id.dws);
ct = root.findViewById(R.id.ct);
bm = root.findViewById(R.id.bm);
hq = root.findViewById(R.id.hq);
+//setting booleans to false. If they are true, then an instance of the form section has been created.
+ boolbm = false;
+ boolct = false;
+ booldws = false;
+ boolhq = false;
+ boolgen = false;
gen.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ rvGen.setVisibility(View.VISIBLE);
+ rvDWS.setVisibility(View.INVISIBLE);
+ rvHQ.setVisibility(View.INVISIBLE);
+ rvBM.setVisibility(View.INVISIBLE);
+ rvCT.setVisibility(View.INVISIBLE);
+ if (!boolgen)
+ setupFormGen();
+
+ }
+ });
+ submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -46,13 +85,26 @@ public void onClick(View v) {
dws.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
+ rvGen.setVisibility(View.INVISIBLE);
+ rvDWS.setVisibility(View.VISIBLE);
+ rvHQ.setVisibility(View.INVISIBLE);
+ rvBM.setVisibility(View.INVISIBLE);
+ rvCT.setVisibility(View.INVISIBLE);
+ if (!booldws)
+ setupFormDWS();
}
});
ct.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
-
+ rvGen.setVisibility(View.INVISIBLE);
+ rvDWS.setVisibility(View.INVISIBLE);
+ rvHQ.setVisibility(View.INVISIBLE);
+ rvBM.setVisibility(View.INVISIBLE);
+ rvCT.setVisibility(View.VISIBLE);
+ if (!boolct)
+ setupFormCT();
}
});
@@ -60,21 +112,39 @@ public void onClick(View v) {
@Override
public void onClick(View v) {
+ rvGen.setVisibility(View.INVISIBLE);
+ rvDWS.setVisibility(View.INVISIBLE);
+ rvHQ.setVisibility(View.INVISIBLE);
+ rvBM.setVisibility(View.VISIBLE);
+ rvCT.setVisibility(View.INVISIBLE);
+ if (!boolbm)
+ setupFormBM();
}
});
hq.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
-
+
+ rvGen.setVisibility(View.INVISIBLE);
+ rvDWS.setVisibility(View.INVISIBLE);
+ rvHQ.setVisibility(View.VISIBLE);
+ rvBM.setVisibility(View.INVISIBLE);
+ rvCT.setVisibility(View.INVISIBLE);
+ if (!boolhq)
+ setupFormHQ();
}
});
return root;
}
- private void setupForm() {
+ private void setupFormGen() {
+ boolgen = true;
- formBuilder = new FormBuilder(getContext(), recyclerView);
+ }
+ private void setupFormHQ() {
+ boolhq = true;
+ fbHQ = new FormBuilder(getContext(),rvHQ);
FormElementTextNumber element2 = FormElementTextNumber.createInstance().setTitle("Substrate Size").setValue("0");
FormElementTextNumber element3 = FormElementTextNumber.createInstance().setTitle("Smothering").setValue("0");
FormElementTextNumber element4 = FormElementTextNumber.createInstance().setTitle("Silting").setValue("0");
@@ -94,29 +164,139 @@ private void setupForm() {
FormElementTextNumber element18 = FormElementTextNumber.createInstance().setTitle("Land Use").setValue("0");
FormElementTextNumber element19 = FormElementTextNumber.createInstance().setTitle("Bank Erosion").setValue("0");
- List formItems = new ArrayList<>();
- formItems.add(element2);
- formItems.add(element3);
- formItems.add(element4);
- formItems.add(element5);
- formItems.add(element6);
- formItems.add(element7);
- formItems.add(element8);
- formItems.add(element9);
- formItems.add(element10);
- formItems.add(element11);
- formItems.add(element12);
- formItems.add(element13);
- formItems.add(element14);
- formItems.add(element15);
- formItems.add(element16);
- formItems.add(element17);
- formItems.add(element18);
- formItems.add(element19);
- formBuilder.addFormElements(formItems);
+ formItemsHQ = new ArrayList<>();
+ formItemsHQ.add(element2);
+ formItemsHQ.add(element3);
+ formItemsHQ.add(element4);
+ formItemsHQ.add(element5);
+ formItemsHQ.add(element6);
+ formItemsHQ.add(element7);
+ formItemsHQ.add(element8);
+ formItemsHQ.add(element9);
+ formItemsHQ.add(element10);
+ formItemsHQ.add(element11);
+ formItemsHQ.add(element12);
+ formItemsHQ.add(element13);
+ formItemsHQ.add(element14);
+ formItemsHQ.add(element15);
+ formItemsHQ.add(element16);
+ formItemsHQ.add(element17);
+ formItemsHQ.add(element18);
+ formItemsHQ.add(element19);
+ fbHQ.addFormElements(formItemsHQ);
}
+ private void setupFormDWS() {
+ booldws = true;
+ fbDWS = new FormBuilder(getContext(), rvDWS);
+ FormHeader title = (FormHeader) new FormHeader().setTitle("Dry Weather Screening");
+ //Outfall --> Question: How do you do a subheading?
+ FormElementTextSingleLine flow = new FormElementTextSingleLine().setTitle("Presence of Flow");
+ FormElementTextNumber flowData = FormElementTextNumber.createInstance(); //what data type is this?
+ FormElementTextSingleLine odor = new FormElementTextSingleLine().setTitle("Unusual Odor");
+ FormElementTextNumber odorData = FormElementTextNumber.createInstance();
+
+ FormElementTextSingleLine color = new FormElementTextSingleLine().setTitle("Unusual Color");
+ FormElementTextNumber colorData = FormElementTextNumber.createInstance();
+
+ FormElementTextSingleLine polutants = new FormElementTextSingleLine().setTitle("Polutants Nearby");
+ FormElementTextNumber polutantsData = FormElementTextNumber.createInstance();
+ polutantsData.setTitle("Polutants Data");
+
+ FormElementTextSingleLine obstruction = new FormElementTextSingleLine().setTitle("Obstruction");
+ FormElementTextNumber obstructionData = FormElementTextNumber.createInstance();
+
+ FormElementTextSingleLine maintenance = new FormElementTextSingleLine().setTitle("Needs Maintenance");
+ FormElementTextNumber maintenanceData = FormElementTextNumber.createInstance();
+
+ FormElementTextSingleLine screen = new FormElementTextSingleLine().setTitle("Screen OK");
+ FormElementTextNumber screenData = FormElementTextNumber.createInstance();
+
+ formItemsDWS = new ArrayList<>();
+
+ formItemsDWS.add(flow);
+ formItemsDWS.add(flowData);
+ formItemsDWS.add(odor);
+ formItemsDWS.add(odorData);
+ formItemsDWS.add(color);
+ formItemsDWS.add(colorData);
+ formItemsDWS.add(polutants);
+ formItemsDWS.add(polutantsData);
+ formItemsDWS.add(obstruction);
+ formItemsDWS.add(obstructionData);
+ formItemsDWS.add(maintenance);
+ formItemsDWS.add(maintenanceData);
+ formItemsDWS.add(screen);
+ formItemsDWS.add(screenData);
+
+ fbDWS.addFormElements(formItemsDWS);
+ }
+ private void setupFormCT() {
+ boolct = true;
+ fbCT = new FormBuilder(getContext(), rvCT);
+
+ FormHeader title = (FormHeader) new FormHeader().setTitle("Chemical Testing");
+
+ //Outfall --> Question: How do you do a subheading?
+
+ FormElementTextSingleLine temperature = new FormElementTextSingleLine().setTitle("Temperature (C) Change");
+ //FormHeader temp = FormHeader.createInstance("Temperature (C) Change");
+ FormElementTextNumber tempData = FormElementTextNumber.createInstance(); //what data type is this?
+
+ FormElementTextSingleLine tubidity = new FormElementTextSingleLine().setTitle("Tubidity (NTU)");
+ FormElementTextNumber tubidityData = FormElementTextNumber.createInstance();
+
+ FormElementTextSingleLine pH = new FormElementTextSingleLine().setTitle("pH");
+ FormElementTextNumber pHData = FormElementTextNumber.createInstance();
+
+ FormElementTextSingleLine nitrate = new FormElementTextSingleLine().setTitle("Nitrate (mg/L)");
+ FormElementTextNumber nitrateData = FormElementTextNumber.createInstance();
+
+ FormElementTextSingleLine phosphate = new FormElementTextSingleLine().setTitle("Total Phosphate (mg/L)");
+ FormElementTextNumber phosphateData = FormElementTextNumber.createInstance();
+
+ FormElementTextSingleLine oxygen = new FormElementTextSingleLine().setTitle("Dissolved Oxygen (mg/L)");
+ FormElementTextNumber oxygenData = FormElementTextNumber.createInstance();
+
+ FormElementTextSingleLine coli = new FormElementTextSingleLine().setTitle("E Coli (col/100mL)");
+ FormElementTextNumber coliData = FormElementTextNumber.createInstance();
+
+ FormElementTextSingleLine other1 = new FormElementTextSingleLine().setTitle("Other 1");
+ FormElementTextNumber other1Data = FormElementTextNumber.createInstance();
+
+ FormElementTextSingleLine other2 = new FormElementTextSingleLine().setTitle("Other 2");
+ FormElementTextNumber other2Data = FormElementTextNumber.createInstance();
+
+ formItemsCT = new ArrayList<>();
+
+ formItemsCT.add(title);
+ formItemsCT.add(temperature);
+ formItemsCT.add(tempData);
+ formItemsCT.add(tubidity);
+ formItemsCT.add(tubidityData);
+ formItemsCT.add(pH);
+ formItemsCT.add(pHData);
+ formItemsCT.add(nitrate);
+ formItemsCT.add(nitrateData);
+ formItemsCT.add(phosphate);
+ formItemsCT.add(phosphateData);
+ formItemsCT.add(oxygen);
+ formItemsCT.add(oxygenData);
+ formItemsCT.add(coli);
+ formItemsCT.add(coliData);
+ formItemsCT.add(other1);
+ formItemsCT.add(other1Data);
+ formItemsCT.add(other2);
+ formItemsCT.add(other2Data);
+
+ fbCT.addFormElements(formItemsCT);
+
+ }
+ private void setupFormBM() {
+ boolbm = true;
+
+ }
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_wwform.xml b/app/src/main/res/layout/fragment_wwform.xml
index 27bbcca..0df8324 100644
--- a/app/src/main/res/layout/fragment_wwform.xml
+++ b/app/src/main/res/layout/fragment_wwform.xml
@@ -41,6 +41,7 @@
app:text="Gen"
app:textColor="@color/indigo_800"
app:textSize="18sp" />
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
From 9adc89a9c5f26d538d3bddd35fd8e51f715b0425 Mon Sep 17 00:00:00 2001
From: Samuelford24
Date: Tue, 23 Mar 2021 23:04:25 -0400
Subject: [PATCH 14/15] connected login and signup. Added agency identifier and
reconfigured firebase. Finished UI of new menu.
---
.idea/.name | 1 -
app/src/main/AndroidManifest.xml | 12 +-
.../sf/stormwaterutilityandroid/AgencyID.java | 13 ++
.../sf/stormwaterutilityandroid/Login.java | 19 ++-
.../sf/stormwaterutilityandroid/MainMenu.java | 13 +-
.../sf/stormwaterutilityandroid/SignUp.java | 69 ++++++----
.../com/sf/stormwaterutilityandroid/User.java | 13 +-
.../WaterWay/WQI.java | 2 +-
app/src/main/res/drawable/construction.png | Bin 0 -> 1544 bytes
app/src/main/res/drawable/construction2.png | Bin 0 -> 3039 bytes
app/src/main/res/drawable/settings.png | Bin 0 -> 720 bytes
app/src/main/res/drawable/settings2.png | Bin 0 -> 1634 bytes
app/src/main/res/drawable/settings3.png | Bin 0 -> 4836 bytes
app/src/main/res/drawable/water.png | Bin 0 -> 3954 bytes
app/src/main/res/layout/activity_login.xml | 32 ++---
app/src/main/res/layout/activity_menu2.xml | 124 ++++++++++++++++++
.../res/layout/activity_reset_password.xml | 4 +-
app/src/main/res/layout/activity_sign_up.xml | 68 +++-------
18 files changed, 256 insertions(+), 114 deletions(-)
delete mode 100644 .idea/.name
create mode 100644 app/src/main/java/com/sf/stormwaterutilityandroid/AgencyID.java
create mode 100644 app/src/main/res/drawable/construction.png
create mode 100644 app/src/main/res/drawable/construction2.png
create mode 100644 app/src/main/res/drawable/settings.png
create mode 100644 app/src/main/res/drawable/settings2.png
create mode 100644 app/src/main/res/drawable/settings3.png
create mode 100644 app/src/main/res/drawable/water.png
create mode 100644 app/src/main/res/layout/activity_menu2.xml
diff --git a/.idea/.name b/.idea/.name
deleted file mode 100644
index c6e7f40..0000000
--- a/.idea/.name
+++ /dev/null
@@ -1 +0,0 @@
-StormWaterUtilityAndroid
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6b5108f..cf30795 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -12,11 +12,7 @@
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/AgencyID.java b/app/src/main/java/com/sf/stormwaterutilityandroid/AgencyID.java
new file mode 100644
index 0000000..c904463
--- /dev/null
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/AgencyID.java
@@ -0,0 +1,13 @@
+package com.sf.stormwaterutilityandroid;
+
+public class AgencyID {
+ private String agencyID;
+
+ public AgencyID(String agencyID) {
+ this.agencyID = agencyID;
+ }
+
+ public String getAgencyID() {
+ return agencyID;
+ }
+}
diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/Login.java b/app/src/main/java/com/sf/stormwaterutilityandroid/Login.java
index e2fc838..3461202 100644
--- a/app/src/main/java/com/sf/stormwaterutilityandroid/Login.java
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/Login.java
@@ -18,6 +18,8 @@
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
+import com.google.firebase.firestore.DocumentSnapshot;
+import com.google.firebase.firestore.FirebaseFirestore;
import com.sf.stormwaterutilityandroid.WaterWay.WaterWayNav;
public class Login extends AppCompatActivity {
@@ -55,7 +57,7 @@ public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
setContentView(R.layout.activity_login);
inputEmail = findViewById(R.id.email);
inputPassword = findViewById(R.id.password);
- progressBar = findViewById(R.id.progressBar);
+ progressBar = findViewById(R.id.progressBar3);
btnSignup = findViewById(R.id.btn_signup);
btnLogin = findViewById(R.id.btn_login);
btnReset = findViewById(R.id.btn_reset_password);
@@ -80,6 +82,7 @@ public void onClick(View v) {
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
+
String email = inputEmail.getText().toString();
final String password = inputPassword.getText().toString();
@@ -113,11 +116,23 @@ public void onComplete(@NonNull Task task) {
}
} else {
if (auth.getCurrentUser().isEmailVerified()) {
- Intent intent = new Intent(Login.this, WaterWayNav.class);
+ FirebaseFirestore.getInstance().collection("Users").document(auth.getUid()).get().addOnCompleteListener(new OnCompleteListener() {
+ @Override
+ public void onComplete(@NonNull Task task) {
+ if (task.isSuccessful()) {
+ if (task.getResult().exists()) {
+ String agencyID = task.getResult().get("agencyID").toString();
+ AgencyID id = new AgencyID(agencyID);
+ }
+ }
+ }
+ });
+ Intent intent = new Intent(Login.this, MainMenu.class);
startActivity(intent);
progressBar.setVisibility(View.INVISIBLE);
finish();
} else {
+ progressBar.setVisibility(View.INVISIBLE);
AlertDialog.Builder builder;
builder = new AlertDialog.Builder(Login.this);
//builder.setIcon(R.drawable.open_browser);
diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/MainMenu.java b/app/src/main/java/com/sf/stormwaterutilityandroid/MainMenu.java
index 6dd4920..6424c81 100644
--- a/app/src/main/java/com/sf/stormwaterutilityandroid/MainMenu.java
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/MainMenu.java
@@ -15,12 +15,12 @@ public class MainMenu extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main_menu);
- launchWWF = findViewById(R.id.wwf);
- launchCF = findViewById(R.id.cf);
- launchSettings = findViewById(R.id.settings);
- launchSettings.setOnClickListener(new View.OnClickListener() {
- @Override
+ setContentView(R.layout.activity_menu2);
+ // launchWWF = findViewById(R.id.wwf);
+ // launchCF = findViewById(R.id.cf);
+ // launchSettings = findViewById(R.id.settings);
+ // launchSettings.setOnClickListener(new View.OnClickListener() {
+ /* @Override
public void onClick(View v) {
Intent intent = new Intent(MainMenu.this, Settings.class);
startActivity(intent);
@@ -44,5 +44,6 @@ public void onClick(View v) {
}
});
+ */
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/SignUp.java b/app/src/main/java/com/sf/stormwaterutilityandroid/SignUp.java
index e0eaa03..48b04ae 100644
--- a/app/src/main/java/com/sf/stormwaterutilityandroid/SignUp.java
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/SignUp.java
@@ -1,5 +1,7 @@
package com.sf.stormwaterutilityandroid;
+import android.content.DialogInterface;
+import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
@@ -9,6 +11,7 @@
import android.widget.Toast;
import androidx.annotation.NonNull;
+import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.gms.tasks.OnCompleteListener;
@@ -34,16 +37,14 @@ protected void onCreate(Bundle savedInstanceState) {
//Get Firebase auth instance
auth = FirebaseAuth.getInstance();
- btnSignIn = findViewById(R.id.sign_in_button);
- btnSignUp = findViewById(R.id.sign_up_button);
+ btnSignUp = findViewById(R.id.signUp);
+
inputEmail = findViewById(R.id.email);
inputPassword = findViewById(R.id.password);
progressBar = findViewById(R.id.progressBar);
btnResetPassword = findViewById(R.id.btn_reset_password);
- inputGrade = findViewById(R.id.grade);
inputName = findViewById(R.id.name);
- inputID = findViewById(R.id.studentID);
- inputHR = findViewById(R.id.homeroom);
+ progressBar = findViewById(R.id.progressBar2);
/* btnResetPassword.setOnClickListener(new View.OnClickListener() {
@Override
@@ -52,12 +53,6 @@ public void onClick(View v) {
}
});
*/
- btnSignIn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- finish();
- }
- });
btnSignUp.setOnClickListener(new View.OnClickListener() {
@Override
@@ -66,14 +61,13 @@ public void onClick(View v) {
final String email = inputEmail.getText().toString().trim();
final String password = inputPassword.getText().toString().trim();
final String name = inputName.getText().toString().trim();
- final String grade = inputGrade.getText().toString().trim();
- final String studentID = inputID.getText().toString().trim();
- final String homeroom = inputHR.getText().toString().trim();
+
if (TextUtils.isEmpty(email)) {
Toast.makeText(getApplicationContext(), "Enter a email address!", Toast.LENGTH_SHORT).show();
return;
}
-
+ int index = email.indexOf("@");
+ String agencyID = email.substring(index + 1);
if (TextUtils.isEmpty(password)) {
Toast.makeText(getApplicationContext(), "Enter a password!", Toast.LENGTH_SHORT).show();
return;
@@ -83,12 +77,21 @@ public void onClick(View v) {
Toast.makeText(getApplicationContext(), "Password too short, enter minimum 6 characters!", Toast.LENGTH_SHORT).show();
return;
}
- if (TextUtils.isEmpty(homeroom)) {
- Toast.makeText(getApplicationContext(), "Enter a homeroom!", Toast.LENGTH_SHORT).show();
- return;
- }
- if (TextUtils.isEmpty(studentID)) {
- Toast.makeText(getApplicationContext(), "Enter a StudentID!", Toast.LENGTH_SHORT).show();
+
+ if (!email.contains("in.gov") && !email.contains("purdue.edu")) {
+ //invalid email
+ AlertDialog.Builder builder;
+ builder = new AlertDialog.Builder(SignUp.this);
+ builder.setTitle("Incorrect Email");
+ builder.setMessage("You are not allowed to create an email with your current domain");
+ builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int id) {
+ dialog.dismiss();
+ }
+ });
+
+ builder.setCancelable(true);
+ builder.show();
return;
}
@@ -109,8 +112,10 @@ public void onComplete(@NonNull Task task) {
} else {
final String create_uid = FirebaseAuth.getInstance().getUid();
final FirebaseUser user2 = auth.getCurrentUser();
- user2.sendEmailVerification();
- User user = new User(name,email,create_uid);
+ // user2.sendEmailVerification();
+
+ System.out.println(agencyID);
+ User user = new User(name, email, create_uid, agencyID);
FirebaseFirestore.getInstance().collection("Users")
.document(create_uid)
@@ -122,10 +127,23 @@ public void onSuccess(Void aVoid) {
user2.sendEmailVerification();
-
// progressBar.setVisibility(View.GONE);
// Toast.makeText(SignupActivity.this, getString(R.string.registration_success), Toast.LENGTH_LONG).show();
- // startActivity(new Intent(SignupActivity.this, LoginActivity.class));
+ AlertDialog.Builder builder;
+ builder = new AlertDialog.Builder(SignUp.this);
+ builder.setTitle("Account created");
+ builder.setMessage("Your account has successfully been created. An email has been sent, so you can verify your email. You must verify your email before logging in.");
+ builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int id) {
+ startActivity(new Intent(SignUp.this, Login.class));
+ dialog.dismiss();
+ }
+ });
+
+ builder.setCancelable(true);
+ builder.show();
+
+
// finish();
}
@@ -149,7 +167,6 @@ public void onFailure(@NonNull Exception e) {
}
-
@Override
protected void onResume() {
super.onResume();
diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/User.java b/app/src/main/java/com/sf/stormwaterutilityandroid/User.java
index 5671a58..efeb955 100644
--- a/app/src/main/java/com/sf/stormwaterutilityandroid/User.java
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/User.java
@@ -1,12 +1,13 @@
package com.sf.stormwaterutilityandroid;
class User {
- String name, email, uid;
+ String name, email, uid,agencyID;
- public User(String name, String email, String uid) {
+ public User(String name, String email, String uid, String agencyID) {
this.name = name;
this.email = email;
this.uid = uid;
+ this.agencyID = agencyID;
}
public String getName() {
@@ -32,4 +33,12 @@ public String getUid() {
public void setUid(String uid) {
this.uid = uid;
}
+
+ public String getAgencyID() {
+ return agencyID;
+ }
+
+ public void setAgencyID(String agencyID) {
+ this.agencyID = agencyID;
+ }
}
diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WQI.java b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WQI.java
index 72d7601..30c36f5 100644
--- a/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WQI.java
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WQI.java
@@ -31,5 +31,5 @@ public static double getWQI(double tempChange, double turbidity, double pH, doub
}
-}
+
diff --git a/app/src/main/res/drawable/construction.png b/app/src/main/res/drawable/construction.png
new file mode 100644
index 0000000000000000000000000000000000000000..62c9edb5c27ba092dbcbd50934ba5a0644ae5fa9
GIT binary patch
literal 1544
zcmV+j2KV`iP)002t}1^@s6I8J)%00006VoOIv0RI60
z0RN!9r;`8x1-(f`K~#90?VDe06jc<)zcahr77DZ_2C*%TkrXt<_&|w*Rlz7G8iIzj
z7$XpcVu-Y9$!@pAq)r+VmZg+h2oU+Bg1!_J&?TBkLqL>7C^0?|Oi-JEO(fCMR<^X=
z-Fti}tJ`*Fckb-8u;%`fKFq!MobUGQ+}U$)X90ymp-?Ck3WeexLlcp-w;C@9MukzI
zMmV0o2OSfkJJD!PC+w}pa={1@u+iv8Fhaf6SniabuIovEhgAJCxSdKAhZ&m)$T90D
zAcq;70DO~
zQC4DmN2Ief7vZF_VdR$9*O&S4UPhzQXnRXb%MGjATX%gpk7IlqKnYkolVbQ(1{&vf
z_dlWQ?UlM-Ic!yDEVj(5udn|=2vGw7%si^^qI;p06brx{h+nu|uJ^oN@4DvZ=1{6Y
z@6P?R*rk09phRlYgq4GN{f7Xom5NJ1dOiF7{&Hrnu`6go0TF%S^?C!kuABb>naQ2y
zIRfAjTPlP#TU!rT*_@-iS3)i2UJjxWni3%{Cg)(0b$zFkVSVgu%PKJNM7B
z6Km&_BG-lD}-xArl``N5fFlfG``A9yW
z9kc$n5tBYd1xC$G{G#6W=?tSjf6GUY1DI!+jxkeq3U=zO^8gqVw69FUO_TPQ2gTsk
zhTRAEX_|I{iEfIhm`FA7R5kPG5HuIK9&f0(=CVNDhC}JT8Hi7Xl
zfX}H+|IUhxC9}9wF9(aW05pJs-k!w(UbhlE84%GNqkTOS8{Kh0U(Ye%-~X6b^QER|
zX;I_%sdTI^!^%-(39I;8o7s+j@-Z=mn8rQJ?#?@LU#fw`YAZ5U%^JJYcjI=?6pOJF
z4zuAi3qs?fag8JM9=oC}on&PG1D=@(C^YIKcD8)Tc(Z)_K7J79hkVA*ESqG!StbQ(
z9Cc?UVp5RCakMbac(Y6j(m0M5ruJRWeYBjrLbt~@51iiH&jWpzlZDdMyngQ5ywtXK
z0-yYFtN6yPsHxub^QJA^(G~jdb*4yo8v1{>rDfkNPj(12z7U+c{9P;23jwzM>Q5r;
zp2|-(%#uKvC4n+a0{f-I?d}WEDC*!`CI`W80MakA
z0qK}E^rtPsOhzq33GCllTGnL{r}g!YdjgXSV%X9*8^&Vatb)fDf?TP`-EVLV`0FQI
zp=udQpv;m$nI(ZTO9Ew<1j;N4ES3)R6~H4e?YpLwK+7rt(^-HsZ@a_fh9_?+#PD^*
u?pz;fq@>5-3WY+UP$(1%g+ifF#Q6svaI!SK=mZD=0000002t}1^@s6I8J)%00006VoOIv0RI60
z0RN!9r;`8x3zSJjK~#90?VNjXROR`{Kkqrao6Q9h0x=0838aPwgmAxzKl}y6j*P8U
zZdELy(u>tvv`+11sK05a^*5c~rrrvziUJmEP->^`v=$JotsUhepmvaGBngH9Np^GJ
z&F(o*|JWoZY_fY!b{Ck=er7V6+4p&$=iP7K`z4ShNs=TOU_kg7~TFAh*=40382N`
z&IDdTv0YDLx5}&Rw35lYH~;qvZVq#%X*0(x{peV<{0SFJs-GQgy5ueq`4*6!fDmmW
zvf1GX{6rOgsU?zO>)yP(K|MaGeDG0bOLmD`^KMVHKnW8|WWU2aRez5tegKS4RGa~{
zD#ib4MefIyS~FyaEmi2P*?GTFs0|PjN;B2xMt`c|pH>1SM68|yHm-)A`qN`8`@nZdUe3@2a^3tox2L!P*^_h-_xSh;s?>DW$%n7q5Fb
zo=)Q?mPnOu)OK$HWoa0`C@8k*MecisYnA|>id7XDOgDQ{wvBz`w{4N!#WEuGBOgBP
zHfsI5E-Rq`gs&R4zUQU-k(8m5Jr%c36q7xoctmsie;&4tLb0J$YrUkPHR
z;mE8K+3$#CBqkEgQA7t;=xutdV)YXZZ)+F-ez%@8jb2Q{#N~2OR#rf1Xyup8wrFLD+GjN{UOiQ5JcMv4`|rCR8klCB+IF{G
zFmH)Bb+t`A^~~QncC?1E1x2J~=b<@V1iISsG}K`B_}IGjPSVrd(VZ#2;wY|sVx(n>
zF4ncHb}I-qF_9VBuf2F2z+eCDblouD08&R9JQ^>&@CMKQ?sbahETM45BAo7z2UuT6
zD@R`Z6`!h@%pG_9uT_^mQ;e%!lkPY=lJZ3DvlQxZ=r?CINvVfWKjkoFI|&r(i6{57
z`;YH1f9*FYS+Fb~LIJpS^zG65ui=O)R;cNza%H-vWc_2O2f#e#+bGD)kp#5D-hFSg
z@4$P^S#>vQS>pz!#UK;_qL^;h)!h}{G926UEUAAo+b~=olAt9_M~9CMU;GWzKC^)_
z<0lSE>l5nwipgvkflz3@GYHe~)y0^kCf(t+mECTdd1g`b|_VO{Z3QEF+3i!JE
zYg8nm&NOMn#8|_p!uGZzVXqk~RcXuK
zCY@b=P-@V~*GKM@c|5=C4Njg6-_RT+)V!snjvhmMyFbh>3?=LAl+UtQQoS_?sIcSQ
zE((R1L$7(q6ii}r#R@h(ST#tn3xxs@5duLAXAr_NsejUPOR+rP=-o4q%ffp&($iCL
zI2`yoT5)G&hNb71%?1>k9<1X2`<9cImcmbe_NRWKL8}4AKq5RRQd_
zVr+eK7CKx=D7vmu`pF42*Hu$6b?%Th`DL?kxZG@h>d%-#gTndC8GlvpfFLHW)C}4i
zs<~?UB&%VU5_hper!Wbnxw)NlXT9X)M&7*4DVah}$&^8#i3lfO`wK-g7tvH#!!_3|
zw;FbqRYN(9ZJL|gdEnd6kvVB5S^33uc`cuG0bm*dCX_Ga{nuXN#v5mokzrwB
z9iq&tp(U}TVdpp!IA!P)YIN}o@}@2TO(QjP_-VpGj6e_7|NJZM=Nmcy!P^*ZXSsdt
zHFm;hTkYhnHA9~Xs
z`uOXdKXH(s{^T}NQ(ZPok&+EWJVpbHH7nqdQ8uGnVxUmDlV@@E{df4pf@NVs`8(Ta
zKi_~zXfsocAOI6)T+OI)<2m|=C(t}6dGwJ=3JUBufPi6b`DUqRDO4)acU^69p-^W|
z9A)zVgm=nat<4EAmkaf;~NW&z@mIVGbK^pUcvv(<0W!NGK(iPNFP{
zC1P}`-b$#PS*WaXF#MR_x4?{gkQ>IpKI)2rLS67>`-EC~^K90vSxEiqX6kCsBPO_0
zU6hnuL3VbA?fBu}Pjy+bvm}<&&^rt*RI{|4Yrz?sFlq>9%bT_e=J9s&?e9KMM&Y!G
zLiyS}y!GN{ZoX+IYt}3Tpm4%i3MW|W`0e1-iFgFohqZ3otv7$1W5B7BZh3eHLP9<8
zt>;K9m`YyR+=xOQe&KOG`{{CSyLFMR7$d_UwQ~oHV)b6{X#p@j2f^?m0Wabm_Jll)
z%U38`qFpHI!_Ex88dxBmr!YEC*(%LtEEK>AtA;jaPoaYgy9^X6f66=>PadQ6@(~J<
zBUUXf)hz#^+sg3%qf|6ExW=JUio(9^Pz)5Rbn#92J6gGN(G6ik{G}5LfLE*0A@kTS%!%Ow`d(3RtWRpY45P*>asgC}j`KRs}J
zHjK8mZoc`=oun5|?-yz)x>}n#RP`t;Z=QK6gaX*3if{K=HI6ElK<>~9!;7``=~r=P
z6>#M>H{$DPrKht!%%*R`xoX91R3WhaKbSVhMY~bGbnue&+o8>+exCZy6np
zr^qosVpP`$bTpmrPwyA%mN}PFs3zUj{gRywQN?oB1b?kyYyStz*`_jP0UE)M@ix&VJy`{mH|06e7DdAMoR!{h6z7xSesup9G+#{(b)a@^4wS;*vH!
z02JJ#Ppq_kRcb_HiB#!kt?!^j*uQ@D)pz;T=6#r=P?|!FAYb|NQm((ge7GzZ1qDa6
zV)y(=_e>+?9U1<*?bCFVH;HiVC>S)TsX2#;P*ReM)2WX%T)gm^rdsGKSr_#+#Zbg_
zTiN(<+nu7+mRNjTT;z+6iR-sUw;P(6uXYD(w{J%HYOH<|k36O~{%uphWv*9n+&TNX
zSM7R;`4~bks`(nQD^@=V<|Vy2^*+O4{6YzjAncVRYm4nViCHYAzHjOQ?>gYcSbZgk
zU3$QK>qt8E3yI4Cmnz-p*NfesLvfk)U-Fn`kffO`dK>kzpPh-Er&0DC|^tGl{>Z+G`#q{Kz6mTOmU0{M}GvjZO&3`g%>
z`U;RGpym*IeIM!cv>A90I1I91SB?XTu0=x;^Q$lbLFOnzyQ-r6g@pdKz_9e5)9q%!
zjXP=BIS#|f3YbP_|NnK+^j4JVQ4`iT5AW^b5ht0x$iEP)%O+ZpOyz`yn_0
z^xJa{SfMkqzy?(
zIw9$-q-MgtBWcJv_p?eCt|Z=U6R0ORXMk4`&PZutb5x6@{SNTOo<|F~eZY-?JCE&&
zZo*T*8n7BT7`OFHHvR@2@8T;Aq7AH5RH9@x9O6B2*n7LY{O)%NpbvN(@i$vUYOq_&
zIfet9VVmCpPIn37eBkRDiE8jkV;*4@I25sYV(V{6Y)G?n?ERd{y^|9L*?Yo0NZ2)j
z?`E?FTn3IMevdtWEnqMu?i=Q~nXs*!aIcuoefjC7Fg^Q=o#?EkcF~LUVS(L`9zMY$
zc5@~HjCzC)@lE*D)~jy9v2NlGvg_8zxxl7M8D0o{%}`W^#1Enm>^+EaunYRe6-0v=|mAPC)da>5FdAeulC&SG8zxK002t}1^@s6I8J)%00006VoOIv0RI60
z0RN!9r;`8x1{X<0K~#90?VMYvlvNmppKou^XDCxDwX}#V&zcAlQIw_RIWd9=g1U)<
zZX^i`in<62BO>dvD59dwEFmw1gb0yc9@9J~n5mgrp0>K*F4k|3qci_nYu3y^=6+yb
z?9KWP>)mT+{_k6B4Rq2;Cs#6(S|u%)bXL_lE$OYI^DPuf6LUl=r9;xyMdsU5WN_g2
zfUy=hJ~>5;b!*`GQFY0}lcL2M892UEtN;oXt7aq(moy>5uBXSRU^#zFvWQp{B;6Ql
zmlR2JC7sG9@{y$e0k-1;g*wOZfEfL=yd>$Qq*-w@t&vQq_OglWk#wi0{UecL&Ghs?
zS10+jdE_Ynyo>6@)s+SxHMIb<6Sba->*`bNseST2v*!#t9~APL)JT`Cih9GTUyF
zW=i@{(m#=69g*~&q`M`xl=&Yf={pY}r&RBkq^hr|OL0`v6OwvMdPdUT09zk+W`27}
znkVUSfNk&!^ZsO!Gza(?=o%_Aa17`jVdu*sAf^;*2NsywGM~X-Vo4ed>;ig3B-HGj
z0B$g|19<~|A4*$*E;XgpymSRxeFl1oWoG+;S8K_riFw7$e)Aa^@}AWNSOZLs&8i7m
z2TU=u(>{ZPN(V_d0c}8^h{T$W#u(SqDSe8|ODKSAfrny^W8brS0(*dgv4P9@5%>gH1?=T~tv3X?
z7dOE%iDIocvsAwFk+dLD*I=tWTP1R>p>2uc-cfIjN)!JgLBiiCpbeeH?JH?ng4l1w
z%-gr?&0{m=dC-aOh5KFG}
zI3Bn2JCgI_3@aa71KWT}W_C2zLAD~-0VDFpdeVVwL2b@{wg4M}HZ$v}lthXpo=1{)
zu3Xo)-h5sfvwUTp!Lzp$Nt>CCPvJ}n(3r{twLYi9rT@yegG>b*n#X(~rqUH4fk
ze-&t{_)7y=mDu06iTzcj(PHgM?C;ma{;JYwvHnc#?@(fYRcW+XS0(nBs@(FT(P9m0
za(`86v{?5g_BSoDzp9jrb*9eo=B09!J!j2L<*x!4?D~|8^)3+9mkwmC+%bR@%mYRz
z@^vW$EG_-RMfIMffmsrxvY*ko`mk4`B!0owhJVF6kTd{S8+spX%i$QVs9uk&2{+>U
zUI$AD`F0&zv&6>WitOirs^_nA_!^j5L)YOe;Qkuo9|D%(MA-oBs#q}BiqiD6R%RI6ko3X?2}|x6<6Pw&s+DAt=1baxvR`cA0yzSVGqc^HhQTXK?oitYT%JM!3;^DjdtM77=4JRIFeSpS
znV1SZA8HhO@^31zn)+^PG>Q)39y43*YY=j#bO7#5!m#kXnwGu5STj59GdSdB_%{D9
zp};i{m*$Sj@GYb#0&8P4x(t|TX6y0>`L3+Pz^U5uXaBfm%G
zE}vHtD%C!K9~A^!E9n+b`^O^1@|vim8zrqNT&R+S=14jr_r*FdN%Fq9DQQxqST_g6
z=$hqqI?J;rp=v(OCutDSnq9LCvFn5Tlnlw?IM6qAb3xK|z!@|9J;bi5khD8+RsB$8
zzD0k%%BH~a>+6z*Cq;|3IdJ@jx@6%=(PD+JtSefqjR9jt!D1DPq!zgy=Dcq^YM1n8
g(fM}LNhgK#FEG!1jy4mUrvLx|07*qoM6N<$g3h)Wod5s;
literal 0
HcmV?d00001
diff --git a/app/src/main/res/drawable/settings3.png b/app/src/main/res/drawable/settings3.png
new file mode 100644
index 0000000000000000000000000000000000000000..ddb40d4c850f4ebdbc1c65b84a6be76d50b5607d
GIT binary patch
literal 4836
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
KMNUMnLSTZvl5B+l
literal 0
HcmV?d00001
diff --git a/app/src/main/res/drawable/water.png b/app/src/main/res/drawable/water.png
new file mode 100644
index 0000000000000000000000000000000000000000..92808843d9d3e751a01962463740389840eec3e4
GIT binary patch
literal 3954
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
literal 0
HcmV?d00001
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index 61b3328..904aa6e 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -16,8 +16,10 @@
android:padding="@dimen/activity_horizontal_margin"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="parent">
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintVertical_bias="1.0">
+ android:textColor="@android:color/white" />
+ android:textColor="@android:color/white"
+ />
@@ -86,18 +90,14 @@
android:textColor="@android:color/white"
android:textSize="15dp"
tools:ignore="SpUsage" />
-
-
+
+
diff --git a/app/src/main/res/layout/activity_menu2.xml b/app/src/main/res/layout/activity_menu2.xml
new file mode 100644
index 0000000..e73e5df
--- /dev/null
+++ b/app/src/main/res/layout/activity_menu2.xml
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_reset_password.xml b/app/src/main/res/layout/activity_reset_password.xml
index 211baa5..2f05b67 100644
--- a/app/src/main/res/layout/activity_reset_password.xml
+++ b/app/src/main/res/layout/activity_reset_password.xml
@@ -69,7 +69,7 @@
android:layout_marginTop="20dip"
android:background="@color/colorAccent"
android:text="@string/btn_reset_password"
- android:textColor="@android:color/black" />
+ android:textColor="@color/White" />
+ android:textColor="@color/White" />
diff --git a/app/src/main/res/layout/activity_sign_up.xml b/app/src/main/res/layout/activity_sign_up.xml
index ff22e10..8524baa 100644
--- a/app/src/main/res/layout/activity_sign_up.xml
+++ b/app/src/main/res/layout/activity_sign_up.xml
@@ -26,8 +26,7 @@
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="30dp"
- android:src="@drawable/ic_launcher_background"
- />
+ android:src="@drawable/ic_launcher_background" />
-
-
-
-
+ android:textColor="@android:color/white"
-
+ android:textColorHint="@color/white" />
+ android:textColor="@android:color/white"
+ android:textColorHint="@color/white" />
-
+ android:textColor="@android:color/white"
+ android:textColorHint="@color/white" />
-
-
-
-
+ android:id="@+id/progressBar2"
+ style="?android:attr/progressBarStyle"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center" />
+
From 26481673206cfa556b6c49e7becb6581bd21e474 Mon Sep 17 00:00:00 2001
From: Samuelford24
Date: Wed, 24 Mar 2021 11:31:24 -0400
Subject: [PATCH 15/15] main menu is complete
---
.../sf/stormwaterutilityandroid/MainMenu.java | 26 +++++++++++++++++++
app/src/main/res/layout/activity_menu2.xml | 13 ++++++----
2 files changed, 34 insertions(+), 5 deletions(-)
diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/MainMenu.java b/app/src/main/java/com/sf/stormwaterutilityandroid/MainMenu.java
index 6424c81..75475d3 100644
--- a/app/src/main/java/com/sf/stormwaterutilityandroid/MainMenu.java
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/MainMenu.java
@@ -1,6 +1,7 @@
package com.sf.stormwaterutilityandroid;
import androidx.appcompat.app.AppCompatActivity;
+import androidx.cardview.widget.CardView;
import android.content.Intent;
import android.os.Bundle;
@@ -12,10 +13,35 @@
public class MainMenu extends AppCompatActivity {
Button launchWWF,launchCF, launchSettings;
+CardView cvWaterWay, cvConstruction, cvSettings;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu2);
+ cvWaterWay = findViewById(R.id.cvWaterWay);
+ cvConstruction = findViewById(R.id.cvConstructionForm);
+ cvSettings = findViewById(R.id.cvSettings);
+ cvWaterWay.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent intent = new Intent(MainMenu.this, WaterWayNav.class);
+ startActivity(intent);
+ }
+ });
+ cvConstruction.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent intent = new Intent(MainMenu.this, ConstructionNav.class);
+ startActivity(intent);
+ }
+ });
+ cvSettings.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent intent = new Intent(MainMenu.this, Settings.class);
+ startActivity(intent);
+ }
+ });
// launchWWF = findViewById(R.id.wwf);
// launchCF = findViewById(R.id.cf);
// launchSettings = findViewById(R.id.settings);
diff --git a/app/src/main/res/layout/activity_menu2.xml b/app/src/main/res/layout/activity_menu2.xml
index e73e5df..b034775 100644
--- a/app/src/main/res/layout/activity_menu2.xml
+++ b/app/src/main/res/layout/activity_menu2.xml
@@ -8,13 +8,14 @@
xmlns:app="http://schemas.android.com/apk/res-auto">