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/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 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 index 9efb51c..35fbe5a 100644 --- a/app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java +++ b/app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java @@ -32,7 +32,8 @@ protected void onCreate(Bundle savedInstanceState) { setContentView(R.layout.activity_sample_fordm); recyclerView = findViewById(R.id.recyclerView2); - submitButton = findViewById(R.id.submitButton); + // submitButton = findViewById(R.id.submitButton); + setupForm(); } 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 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..72d7601 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/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 @@ + + + + + + + + + + + + + + + + + + +