-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add fitness (currently replaces PCA) with bar chart for room usage.
- Loading branch information
Showing
20 changed files
with
1,049 additions
and
163 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
71 changes: 71 additions & 0 deletions
71
PennMobile/src/main/java/com/pennapps/labs/pennmobile/FitnessHolderFragment.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
package com.pennapps.labs.pennmobile | ||
|
||
import android.os.Bundle | ||
import android.view.LayoutInflater | ||
import android.view.View | ||
import android.view.ViewGroup | ||
import android.widget.TextView | ||
import androidx.appcompat.widget.Toolbar | ||
import androidx.coordinatorlayout.widget.CoordinatorLayout | ||
import androidx.fragment.app.Fragment | ||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout | ||
import com.google.android.material.appbar.AppBarLayout | ||
import com.google.android.material.tabs.TabLayoutMediator | ||
import com.pennapps.labs.pennmobile.adapters.FitnessPagerAdapter | ||
import com.pennapps.labs.pennmobile.components.collapsingtoolbar.ToolbarBehavior | ||
import com.pennapps.labs.pennmobile.utils.Utils | ||
|
||
import kotlinx.android.synthetic.main.fragment_fitness_holder.pager | ||
import kotlinx.android.synthetic.main.fragment_fitness_holder.tabLayout | ||
|
||
class FitnessHolderFragment: Fragment() { | ||
private lateinit var mActivity : MainActivity | ||
private lateinit var mView : View | ||
private lateinit var pagerAdapter : FitnessPagerAdapter | ||
|
||
override fun onCreate(savedInstanceState: Bundle?) { | ||
super.onCreate(savedInstanceState) | ||
mActivity = activity as MainActivity | ||
} | ||
|
||
override fun onCreateView( | ||
inflater: LayoutInflater, | ||
container: ViewGroup?, | ||
savedInstanceState: Bundle? | ||
): View? { | ||
super.onCreateView(inflater, container, savedInstanceState) | ||
return inflater.inflate(R.layout.fragment_fitness_holder, container, false) | ||
} | ||
|
||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { | ||
super.onViewCreated(view, savedInstanceState) | ||
mView = view | ||
// initialize app bar and swipe refresh | ||
initAppBar() | ||
|
||
pagerAdapter = FitnessPagerAdapter(this) | ||
pager?.adapter = pagerAdapter | ||
pager.isUserInputEnabled = false | ||
TabLayoutMediator(tabLayout, pager) { tab, position -> | ||
if (position == 0) { | ||
tab.text = "Pottruck" | ||
} else { | ||
tab.text = "Other Facilities" | ||
} | ||
}.attach() | ||
} | ||
|
||
/** | ||
* Initialize the app bar of the fragment and | ||
* fills in the textViews for the title/date | ||
*/ | ||
private fun initAppBar() { | ||
val appBarLayout : AppBarLayout = mView.findViewById(R.id.appbar_home_holder); | ||
val titleView : TextView = mView.findViewById(R.id.title_view) | ||
val dateView : TextView = mView.findViewById(R.id.date_view) | ||
|
||
(appBarLayout.layoutParams as CoordinatorLayout.LayoutParams).behavior = ToolbarBehavior() | ||
titleView.text = getString(R.string.fitness) | ||
dateView.text = Utils.getCurrentSystemTime() | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
100 changes: 100 additions & 0 deletions
100
PennMobile/src/main/java/com/pennapps/labs/pennmobile/PottruckFragment.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,100 @@ | ||
package com.pennapps.labs.pennmobile | ||
|
||
import android.os.Bundle | ||
import android.util.Log | ||
import android.view.LayoutInflater | ||
import android.view.View | ||
import android.view.ViewGroup | ||
import android.widget.TextView | ||
import androidx.appcompat.widget.Toolbar | ||
import androidx.core.content.ContextCompat | ||
import androidx.fragment.app.Fragment | ||
import androidx.recyclerview.widget.LinearLayoutManager | ||
import androidx.recyclerview.widget.RecyclerView | ||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout | ||
import com.pennapps.labs.pennmobile.adapters.FitnessAdapter | ||
import com.pennapps.labs.pennmobile.api.StudentLife | ||
|
||
class PottruckFragment : Fragment() { | ||
private lateinit var mActivity : MainActivity | ||
private lateinit var mStudentLife : StudentLife | ||
|
||
private lateinit var mView: View | ||
private lateinit var swipeRefresh : SwipeRefreshLayout | ||
private lateinit var recyclerView : RecyclerView | ||
private lateinit var loadingPanel : View | ||
|
||
override fun onCreate(savedInstanceState: Bundle?) { | ||
super.onCreate(savedInstanceState) | ||
mStudentLife = MainActivity.studentLifeInstance | ||
mActivity = activity as MainActivity | ||
} | ||
|
||
override fun onCreateView( | ||
inflater: LayoutInflater, | ||
container: ViewGroup?, | ||
savedInstanceState: Bundle? | ||
): View? { | ||
return inflater.inflate(R.layout.fragment_pottruck, container, false) | ||
} | ||
|
||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { | ||
super.onViewCreated(view, savedInstanceState) | ||
mView = view | ||
|
||
swipeRefresh = view.findViewById(R.id.swiperefresh_fitness) | ||
recyclerView = view.findViewById(R.id.recycler_view_fitness_rooms) | ||
loadingPanel = view.findViewById(R.id.loadingPanel) | ||
|
||
swipeRefresh.setColorSchemeResources(R.color.color_accent, R.color.color_primary) | ||
recyclerView.layoutManager = LinearLayoutManager(mActivity, LinearLayoutManager.VERTICAL, false) | ||
swipeRefresh.setOnRefreshListener { getFitnessRooms() } | ||
|
||
getFitnessRooms() | ||
} | ||
|
||
private fun getFitnessRooms() { | ||
//displays banner if not connected | ||
if (!getConnected()) return | ||
|
||
mStudentLife.getFitnessRooms() | ||
.subscribe({ fitnessRooms -> | ||
for (room in fitnessRooms) { | ||
Log.i("Fitness Room${room.roomId}", "${room.roomName}") | ||
} | ||
mActivity.runOnUiThread { | ||
val adapter = FitnessAdapter(fitnessRooms) | ||
recyclerView.adapter = adapter | ||
loadingPanel.visibility = View.GONE | ||
swipeRefresh.isRefreshing = false | ||
} | ||
}, { | ||
Log.e("PottruckFragment", "Error getting fitness rooms", it) | ||
mActivity.runOnUiThread { | ||
Log.e("Fitness", "Could not load Pottruck page", it) | ||
loadingPanel.visibility = View.GONE | ||
swipeRefresh.isRefreshing = false | ||
} | ||
}) | ||
} | ||
|
||
/** | ||
* Checks if app is connected to internet. If not, it displays a banner | ||
* @return true if connected to internet and false otherwise | ||
*/ | ||
private fun getConnected(): Boolean { | ||
//displays banner if not connected | ||
val connectionToolbar : Toolbar = mView.findViewById(R.id.toolbar_fitness_connection) | ||
val connectionMessage : TextView = mView.findViewById(R.id.text_fitness_connection_message) | ||
|
||
if (!isOnline(context)) { | ||
connectionToolbar.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.darkRedBackground)) | ||
connectionMessage.text = getString(R.string.internet_error) | ||
connectionToolbar.visibility = View.VISIBLE | ||
loadingPanel.visibility = View.GONE | ||
return false | ||
} | ||
connectionToolbar.visibility = View.GONE | ||
return true | ||
} | ||
} |
Oops, something went wrong.