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 19093dd..e22b778 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 {
@@ -39,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/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/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0947cea..cf30795 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -12,22 +12,25 @@
-
-
-
-
+ >
-
+
+
+
+
+
+
+
+
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/Construction/ConstructionFormFragment.java b/app/src/main/java/com/sf/stormwaterutilityandroid/Construction/ConstructionFormFragment.java
index bb325fa..95b3678 100644
--- a/app/src/main/java/com/sf/stormwaterutilityandroid/Construction/ConstructionFormFragment.java
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/Construction/ConstructionFormFragment.java
@@ -4,22 +4,49 @@
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.Button;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
+import androidx.recyclerview.widget.RecyclerView;
+import com.google.firebase.Timestamp;
+import com.google.type.DateTime;
import com.sf.stormwaterutilityandroid.R;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+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 ConstructionFormFragment extends Fragment {
+ private FormBuilder formBuilder;
+ private RecyclerView recyclerView;
+ private Button submitButton;
+ public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
- public View onCreateView(@NonNull LayoutInflater inflater,
- ViewGroup container, Bundle savedInstanceState) {
+ View root = inflater.inflate(R.layout.activity_sample_fordm, container, false);
- View root = inflater.inflate(R.layout.fragment_home, container, false);
+ recyclerView = root.findViewById(R.id.recyclerView2);
- return root;
+ recyclerView.addView(submitButton);
+ return root;
}
+
+
}
\ 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 8ff412f..45b04c0 100644
--- a/app/src/main/java/com/sf/stormwaterutilityandroid/DryWeatherScreening.java
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/DryWeatherScreening.java
@@ -96,7 +96,7 @@ private void setupForm() {
formBuilder.addFormElements(formItems);
}
-
+
public boolean getFlow() {
return flowPres;
}
@@ -133,3 +133,4 @@ public boolean convertToBoolean(String s) {
}
}
}
+
diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/HEI.java b/app/src/main/java/com/sf/stormwaterutilityandroid/HEI.java
index 1051afa..85ff781 100644
--- a/app/src/main/java/com/sf/stormwaterutilityandroid/HEI.java
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/HEI.java
@@ -28,7 +28,10 @@ public class HEI {
//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) {
@@ -79,4 +82,6 @@ public static double get_HEI(double QHEI_substrate_size, double QHEI_smothering,
QHEI_velocity + QHEI_rifflerun_depth + QHEI_rifflerun_substrate;
}
+
}
+
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..1263147
--- /dev/null
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java
@@ -0,0 +1,236 @@
+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/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..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,15 +13,40 @@
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_main_menu);
- launchWWF = findViewById(R.id.wwf);
- launchCF = findViewById(R.id.cf);
- launchSettings = findViewById(R.id.settings);
- launchSettings.setOnClickListener(new View.OnClickListener() {
+ 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);
+ // launchSettings.setOnClickListener(new View.OnClickListener() {
+ /* @Override
public void onClick(View v) {
Intent intent = new Intent(MainMenu.this, Settings.class);
startActivity(intent);
@@ -44,5 +70,6 @@ public void onClick(View v) {
}
});
+ */
}
}
\ No newline at end of file
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/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/PTI.java b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/PTI.java
index 9a4c346..3b5dc89 100644
--- a/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/PTI.java
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/PTI.java
@@ -36,4 +36,5 @@ public double calculatePTI() {
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;
}
+
}
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 529fae8..30c36f5 100644
--- a/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WQI.java
+++ b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WQI.java
@@ -28,4 +28,8 @@ public double calculateWQI() {
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;
}
+
}
+
+
+
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..8ceee50 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,59 +20,127 @@ 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;
+
+ //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 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());
+
+
+ }
+ 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
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..a31a832 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,298 @@
import androidx.annotation.NonNull;
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;
+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;
+import me.riddhimanadib.formmaster.model.FormElementTextSingleLine;
+import me.riddhimanadib.formmaster.model.FormHeader;
+public class WaterWayFormFragment extends Fragment {
+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;
- Button b1,b2,b3,b4,b5;
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);
+ //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) {
+
+ }
+ });
+ 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();
+
+ }
+ });
+ bm.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.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 setupFormGen() {
+ boolgen = true;
+
+
+ }
+ 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");
+ 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");
+
+ 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/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayNav.java b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayNav.java
index fbfc264..c3a8b6b 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,7 +51,6 @@ public boolean onNavigationItemSelected(@NonNull MenuItem item) {
return false;
}
};
-
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -165,3 +162,8 @@ public boolean onOptionsItemSelected(MenuItem 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/drawable/construction.png b/app/src/main/res/drawable/construction.png
new file mode 100644
index 0000000..62c9edb
Binary files /dev/null and b/app/src/main/res/drawable/construction.png differ
diff --git a/app/src/main/res/drawable/construction2.png b/app/src/main/res/drawable/construction2.png
new file mode 100644
index 0000000..6f9402b
Binary files /dev/null and b/app/src/main/res/drawable/construction2.png differ
diff --git a/app/src/main/res/drawable/settings.png b/app/src/main/res/drawable/settings.png
new file mode 100644
index 0000000..e9500e0
Binary files /dev/null and b/app/src/main/res/drawable/settings.png differ
diff --git a/app/src/main/res/drawable/settings2.png b/app/src/main/res/drawable/settings2.png
new file mode 100644
index 0000000..5b99d80
Binary files /dev/null and b/app/src/main/res/drawable/settings2.png differ
diff --git a/app/src/main/res/drawable/settings3.png b/app/src/main/res/drawable/settings3.png
new file mode 100644
index 0000000..ddb40d4
Binary files /dev/null and b/app/src/main/res/drawable/settings3.png differ
diff --git a/app/src/main/res/drawable/water.png b/app/src/main/res/drawable/water.png
new file mode 100644
index 0000000..9280884
Binary files /dev/null and b/app/src/main/res/drawable/water.png differ
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_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_menu2.xml b/app/src/main/res/layout/activity_menu2.xml
new file mode 100644
index 0000000..b034775
--- /dev/null
+++ b/app/src/main/res/layout/activity_menu2.xml
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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/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_sample_fordm.xml b/app/src/main/res/layout/activity_sample_fordm.xml
index bab35dc..7b0f1ef 100644
--- a/app/src/main/res/layout/activity_sample_fordm.xml
+++ b/app/src/main/res/layout/activity_sample_fordm.xml
@@ -5,9 +5,27 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".SampleFordm">
+
+ android:id="@+id/recyclerView2"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:layout_marginBottom="10dp"
+ app:layout_constraintBottom_toTopOf="@+id/submitButton"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintHorizontal_bias="1.0"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent" />
+
+
\ No newline at end of file
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" />
+
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/layout/fragment_wwform.xml b/app/src/main/res/layout/fragment_wwform.xml
index f3062b4..0df8324 100644
--- a/app/src/main/res/layout/fragment_wwform.xml
+++ b/app/src/main/res/layout/fragment_wwform.xml
@@ -1,14 +1,163 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ app:layout_constraintBottom_toTopOf="@+id/submitForm"
+ 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
new file mode 100644
index 0000000..97a3a2d
--- /dev/null
+++ b/app/src/main/res/menu/waterway_menu.xml
@@ -0,0 +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/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 5a2d2b9..f113322 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -48,4 +48,6 @@
WaterWay
+
+
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 46397e1..481fbb3 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,12 +1,25 @@
// 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.2"
+ classpath 'com.google.gms:google-services:4.3.4'
+
+
+
+
+ classpath 'com.google.gms:google-services:4.3.5'
+
classpath 'com.android.tools.build:gradle:4.1.2'
+
+
+
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
@@ -14,6 +27,7 @@ buildscript {
allprojects {
repositories {
+ maven { url "https://jitpack.io" }
google()
jcenter()
}