Advertisement
AnatolyZadvernyak

Untitled

Sep 27th, 2021
32
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.66 KB | None | 0 0
  1. private const val KEY_SELECTED_PERIOD = "KEY_SELECTED_PERIOD"
  2.  
  3. class SensorFragment : Fragment() {
  4.  
  5. private var binding: SensorFragmentBinding? = null
  6.  
  7. private val viewModel by sharedViewModel<MainViewModel>()
  8.  
  9. private var strDateBegin =
  10. DateFormat.format("yyyy-MM-dd", Date(Date().time - (1000 * 60 * 60 * 24))).toString()
  11. private var strDateEnd: String = DateFormat.format("yyyy-MM-dd", Date()).toString()
  12.  
  13. private lateinit var pickerRange: MaterialDatePicker<Pair<Long, Long>>
  14.  
  15. override fun onCreateView(
  16. inflater: LayoutInflater,
  17. container: ViewGroup?,
  18. savedInstanceState: Bundle?
  19. ): View? {
  20. setHasOptionsMenu(true)
  21. binding = SensorFragmentBinding.inflate(inflater, container, false)
  22. return binding?.root
  23. }
  24. override fun onDestroyView() {
  25. super.onDestroyView()
  26. binding = null
  27. }
  28.  
  29. override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
  30. super.onViewCreated(view, savedInstanceState)
  31.  
  32. @Suppress("UNCHECKED_CAST")
  33. pickerRange =
  34. parentFragmentManager.findFragmentByTag("Picker") as? MaterialDatePicker<Pair<Long, Long>>
  35. ?: MaterialDatePicker.Builder.dateRangePicker().build()
  36.  
  37. (activity as? AppCompatActivity)?.setSupportActionBar(binding?.toolbar)
  38. (activity as AppCompatActivity).supportActionBar?.apply {
  39. setDisplayHomeAsUpEnabled(true)
  40. setDisplayShowHomeEnabled(true)
  41. }
  42. binding?.toolbar?.setNavigationOnClickListener {
  43. activity?.onBackPressed()
  44. }
  45. savedInstanceState?.let { bundle ->
  46. bundle.getStringArray(KEY_SELECTED_PERIOD)?.let { saveDate ->
  47. strDateBegin = saveDate[0]
  48. strDateEnd = saveDate[1]
  49. }
  50. }
  51. arguments?.getString("ARG_ID_SENSOR")?.let {
  52. viewModel.setIdSensorForSearch(it)
  53. }
  54. viewModel.sensorInformationLiveData.observe(viewLifecycleOwner) { sensor ->
  55.  
  56. val sensorFullId = "${sensor?.unitId}${sensor?.unitSensorId}"
  57.  
  58. (activity as AppCompatActivity).title = getString(R.string.title_history)
  59.  
  60. viewModel.setQuestionSensorsData(Triple(sensorFullId, strDateBegin, strDateEnd))
  61.  
  62. pickerRange.addOnPositiveButtonClickListener { dateSelected ->
  63. dateSelected.first?.let {
  64. strDateBegin = DateFormat.format("yyyy-MM-dd", it).toString()
  65. }
  66. dateSelected.second?.let {
  67. strDateEnd = DateFormat.format("yyyy-MM-dd", it).toString()
  68. }
  69. binding?.apiProgressBar?.visibility = View.VISIBLE
  70. viewModel.setQuestionSensorsData(Triple(sensorFullId, strDateBegin, strDateEnd))
  71. }
  72. }
  73. viewModel.resultSensorDataApi.observe(viewLifecycleOwner) { resultSensorData ->
  74. when (resultSensorData) {
  75. is ResultSensorDataApi.Success -> {
  76. binding?.apiProgressBar?.visibility = View.INVISIBLE
  77.  
  78. }
  79. is ResultSensorDataApi.OtherError -> {
  80. binding?.apiProgressBar?.visibility = View.INVISIBLE
  81. Log.d("blablabla", "Other Error" + resultSensorData.tError)
  82. }
  83. is ResultSensorDataApi.EmptyResponse -> {
  84. binding?.apiProgressBar?.visibility = View.INVISIBLE
  85. Snackbar.make(
  86. view,
  87. getString(R.string.noDataMessage, strDateBegin, strDateEnd),
  88. Snackbar.LENGTH_LONG
  89. ).show()
  90. }
  91. }
  92. }
  93. binding?.pager?.adapter = object : FragmentStateAdapter(this) {
  94.  
  95. override fun getItemCount(): Int = 3
  96.  
  97. override fun createFragment(position: Int): Fragment {
  98. return when (position) {
  99. 0 -> SensorAmountFragment()
  100. 1 -> SensorDetailedFragment()
  101. else -> SensorGraphFragment()
  102. }
  103. }
  104. }
  105. binding?.let {
  106. view.context.let { context ->
  107. TabLayoutMediator(it.tabLayout, it.pager) { tab, position ->
  108. tab.icon = when (position) {
  109. 0 -> AppCompatResources.getDrawable(context, R.drawable.ic_info)
  110. 1 -> AppCompatResources.getDrawable(context, R.drawable.ic_list)
  111. else -> AppCompatResources.getDrawable(context, R.drawable.ic_bar_chart)
  112. }
  113. }.attach()
  114. }
  115. }
  116. binding?.apiProgressBar?.visibility = View.VISIBLE
  117.  
  118. }
  119.  
  120. override fun onSaveInstanceState(outState: Bundle) {
  121. outState.putStringArray(KEY_SELECTED_PERIOD, arrayOf(strDateBegin, strDateEnd))
  122. super.onSaveInstanceState(outState)
  123. }
  124.  
  125. override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
  126. inflater.inflate(R.menu.date_period, menu)
  127. super.onCreateOptionsMenu(menu, inflater)
  128. }
  129.  
  130. override fun onOptionsItemSelected(item: MenuItem): Boolean {
  131. if (item.itemId == R.id.datePeriod) {
  132. parentFragmentManager.let { pickerRange.show(it, "Picker") }
  133. }
  134.  
  135. return super.onOptionsItemSelected(item)
  136. }
  137.  
  138. companion object {
  139. private const val ARG_ID_SENSOR = "ARG_ID_SENSOR"
  140. fun createInstance(message: String) = SensorFragment().apply {
  141. arguments = Bundle().apply {
  142. putString(ARG_ID_SENSOR, message)
  143. }
  144. }
  145. }
  146. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement