Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update Posyandu, JadwalPosyandu, and Pemeriksaan #5

Merged
merged 1 commit into from
Dec 19, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .idea/deploymentTargetDropDown.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions app/src/androidTest/res/drawable/close.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="#FF000000"
android:pathData="m256,760 l-56,-56 224,-224 -224,-224 56,-56 224,224 224,-224 56,56 -224,224 224,224 -56,56 -224,-224 -224,224Z"/>
</vector>
2 changes: 1 addition & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Base.Theme.Posyandu"
android:theme="@style/AppTheme"
tools:targetApi="31">
<activity
android:name=".SandiBaruActivity"
Expand Down

This file was deleted.

168 changes: 100 additions & 68 deletions app/src/main/java/com/example/posyandu/JadwalPosyanduFragment.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.example.posyandu

import android.annotation.SuppressLint
itsLeonB marked this conversation as resolved.
Show resolved Hide resolved
import android.os.Build
import android.os.Bundle
import android.view.LayoutInflater
Expand All @@ -8,11 +9,13 @@ import android.view.ViewGroup
import android.widget.Button
import androidx.annotation.RequiresApi
import androidx.fragment.app.Fragment
import com.google.android.material.bottomnavigation.BottomNavigationView
import com.google.android.material.card.MaterialCardView
import com.google.android.material.datepicker.CalendarConstraints
import com.google.android.material.datepicker.MaterialDatePicker
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
import com.google.android.material.floatingactionbutton.FloatingActionButton
import com.google.android.material.snackbar.Snackbar
import com.google.android.material.textfield.TextInputEditText
import com.google.android.material.timepicker.MaterialTimePicker
import com.google.android.material.timepicker.TimeFormat
Expand All @@ -33,11 +36,11 @@ class JadwalPosyanduFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

val btnTambah: ExtendedFloatingActionButton = view.findViewById(R.id.btn_tambah)
val btnTambah: FloatingActionButton = view.findViewById(R.id.btn_tambah)
val cardJadwal: MaterialCardView = view.findViewById(R.id.card_jadwal_1)

btnTambah.setOnClickListener {
showAlertDialog()
showCreateDialog()
}

cardJadwal.setOnClickListener {
Expand All @@ -48,9 +51,9 @@ class JadwalPosyanduFragment : Fragment() {
@RequiresApi(Build.VERSION_CODES.O)
private fun showViewDialog() {
val customView =
LayoutInflater.from(requireContext()).inflate(R.layout.fragment_ubah_jadwal, null)
LayoutInflater.from(requireContext()).inflate(R.layout.fragment_jadwal_posyandu_view, null)

MaterialAlertDialogBuilder(requireContext())
val viewDialog = MaterialAlertDialogBuilder(requireContext())
.setView(customView)
.show()

Expand All @@ -59,96 +62,139 @@ class JadwalPosyanduFragment : Fragment() {
val editJadwal: TextInputEditText = customView.findViewById(R.id.jam_2_edit)

editJadwal.setOnClickListener {
viewDialog.cancel()
showEditDialog()
}

btnTambah.setOnClickListener {
showAlertDialog()
viewDialog.cancel()
showCreateDialog()
}
}

@RequiresApi(Build.VERSION_CODES.O)
private fun showEditDialog() {
val customView =
LayoutInflater.from(requireContext()).inflate(R.layout.fragment_edit_jadwal, null)
LayoutInflater.from(requireContext()).inflate(R.layout.fragment_jadwal_posyandu_edit, null)
val tanggalEdit: TextInputEditText = customView.findViewById(R.id.tanggal_edit)
val jamMulaiEdit: TextInputEditText = customView.findViewById(R.id.jam_mulai_edit)
val jamSelesaiEdit: TextInputEditText = customView.findViewById(R.id.jam_selesai_edit)

val btnTambah: Button = customView.findViewById(R.id.btn_tambah)
val btnDel: Button = customView.findViewById(R.id.btn_del)
itsLeonB marked this conversation as resolved.
Show resolved Hide resolved

val today = MaterialDatePicker.todayInUtcMilliseconds()

val constraintsBuilder =
CalendarConstraints.Builder()
.setStart(today)

val datePicker =
MaterialDatePicker.Builder.datePicker()
.setCalendarConstraints(constraintsBuilder.build())
.setSelection(today)
.setTitleText("Pilih tanggal")
.build()

datePicker.addOnPositiveButtonClickListener {
val dateTime = LocalDateTime.ofInstant(
datePicker.selection?.let { it1 -> Instant.ofEpochMilli(it1) },
TimeZone.getDefault().toZoneId()
)
val formatter = DateTimeFormatter.ofPattern("dd MMM YY")
val formattedDate = dateTime.format(formatter)
tanggalEdit.setText(formattedDate)
}

var selectedEditText: TextInputEditText? = null

val timePicker =
MaterialTimePicker.Builder()
.setTimeFormat(TimeFormat.CLOCK_12H)
.setHour(12)
.setMinute(10)
.setTitleText("Pilih jam mulai")
.build()

timePicker.addOnPositiveButtonClickListener {
// Handle the selected time
val selectedTime = String.format("%02d:%02d", timePicker.hour, timePicker.minute)

// Set the selected time to the appropriate EditText
selectedEditText?.setText(selectedTime)
}

tanggalEdit.setOnClickListener {
val datePicker = createDatePicker(tanggalEdit, constraintsBuilder, today)
datePicker.show(parentFragmentManager, datePicker.toString())
}

jamMulaiEdit.setOnClickListener {
selectedEditText = jamMulaiEdit
val timePicker = createTimePicker(jamMulaiEdit)
timePicker.show(parentFragmentManager, timePicker.toString())
}

jamSelesaiEdit.setOnClickListener {
selectedEditText = jamSelesaiEdit
val timePicker = createTimePicker(jamSelesaiEdit)
timePicker.show(parentFragmentManager, timePicker.toString())
}

MaterialAlertDialogBuilder(requireContext())
val editDialog = MaterialAlertDialogBuilder(requireContext())
.setView(customView)
.show()

btnTambah.setOnClickListener {
val btmBar = activity?.findViewById<BottomNavigationView>(R.id.bottom_navigation)

editDialog.cancel()

requireActivity().supportFragmentManager
.beginTransaction()
.replace(R.id.fragment_container, JadwalPosyanduFragment())
.commit()

Snackbar.make(btmBar!!, "Jadwal berhasil diperbarui", Snackbar.LENGTH_SHORT)
.setAnchorView(btmBar)
.show()
}

btnDel.setOnClickListener {
val btmBar = activity?.findViewById<BottomNavigationView>(R.id.bottom_navigation)

editDialog.cancel()

requireActivity().supportFragmentManager
.beginTransaction()
.replace(R.id.fragment_container, JadwalPosyanduFragment())
.commit()

Snackbar.make(btmBar!!, "Jadwal berhasil dihapus", Snackbar.LENGTH_SHORT)
.setAnchorView(btmBar)
.show()
}
}

@RequiresApi(Build.VERSION_CODES.O)
private fun showAlertDialog() {
private fun showCreateDialog() {
val customView =
LayoutInflater.from(requireContext()).inflate(R.layout.fragment_tambah_jadwal, null)
LayoutInflater.from(requireContext()).inflate(R.layout.fragment_jadwal_posyandu_create, null)
val tanggalEdit: TextInputEditText = customView.findViewById(R.id.tanggal_edit)
val jamMulaiEdit: TextInputEditText = customView.findViewById(R.id.jam_mulai_edit)
val jamSelesaiEdit: TextInputEditText = customView.findViewById(R.id.jam_selesai_edit)
val btnTambah: Button = customView.findViewById(R.id.btn_tambah)

val today = MaterialDatePicker.todayInUtcMilliseconds()

val constraintsBuilder =
CalendarConstraints.Builder()
.setStart(today)

tanggalEdit.setOnClickListener {
val datePicker = createDatePicker(tanggalEdit, constraintsBuilder, today)
datePicker.show(parentFragmentManager, datePicker.toString())
}

jamMulaiEdit.setOnClickListener {
val timePicker = createTimePicker(jamMulaiEdit)
timePicker.show(parentFragmentManager, timePicker.toString())
}

jamSelesaiEdit.setOnClickListener {
val timePicker = createTimePicker(jamSelesaiEdit)
timePicker.show(parentFragmentManager, timePicker.toString())
}

val createDialog = MaterialAlertDialogBuilder(requireContext())
.setView(customView)
.show()

btnTambah.setOnClickListener {
val btmBar = activity?.findViewById<BottomNavigationView>(R.id.bottom_navigation)

createDialog.cancel()

requireActivity().supportFragmentManager
.beginTransaction()
.replace(R.id.fragment_container, JadwalPosyanduFragment())
.commit()

Snackbar.make(btmBar!!, "Jadwal berhasil ditambahkan", Snackbar.LENGTH_SHORT)
.setAnchorView(btmBar)
.show()
}
}

@SuppressLint("NewApi")
private fun createDatePicker(
editText: TextInputEditText,
constraintsBuilder: CalendarConstraints.Builder,
today: Long,
): MaterialDatePicker<Long> {
val datePicker =
MaterialDatePicker.Builder.datePicker()
.setCalendarConstraints(constraintsBuilder.build())
Expand All @@ -163,43 +209,29 @@ class JadwalPosyanduFragment : Fragment() {
)
val formatter = DateTimeFormatter.ofPattern("dd MMM YY")
val formattedDate = dateTime.format(formatter)
tanggalEdit.setText(formattedDate)
editText.setText(formattedDate)
}

var selectedEditText: TextInputEditText? = null
return datePicker
}

private fun createTimePicker(editText: TextInputEditText): MaterialTimePicker {
val timePicker =
MaterialTimePicker.Builder()
.setTimeFormat(TimeFormat.CLOCK_12H)
.setHour(12)
.setMinute(10)
.setTitleText("Pilih jam mulai")
.setTitleText("Pilih jam")
.build()

timePicker.addOnPositiveButtonClickListener {
// Handle the selected time
val selectedTime = String.format("%02d:%02d", timePicker.hour, timePicker.minute)

// Set the selected time to the appropriate EditText
selectedEditText?.setText(selectedTime)
}

tanggalEdit.setOnClickListener {
datePicker.show(parentFragmentManager, datePicker.toString())
editText.setText(selectedTime)
}

jamMulaiEdit.setOnClickListener {
selectedEditText = jamMulaiEdit
timePicker.show(parentFragmentManager, timePicker.toString())
}

jamSelesaiEdit.setOnClickListener {
selectedEditText = jamSelesaiEdit
timePicker.show(parentFragmentManager, timePicker.toString())
}

MaterialAlertDialogBuilder(requireContext())
.setView(customView)
.show()
return timePicker
}
}
10 changes: 8 additions & 2 deletions app/src/main/java/com/example/posyandu/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ package com.example.posyandu
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentTransaction
import com.google.android.material.bottomnavigation.BottomNavigationView
import com.google.android.material.navigation.NavigationBarView

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
val userRole = "bidan"

Expand Down Expand Up @@ -47,7 +47,13 @@ class MainActivity : AppCompatActivity() {
}
// It will help to replace the
// one fragment to other.
supportFragmentManager.beginTransaction().replace(R.id.fragment_container, selectedFragment)
// supportFragmentManager.beginTransaction().replace(R.id.fragment_container, selectedFragment)
// .commit()
supportFragmentManager
.beginTransaction()
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.replace(R.id.fragment_container, selectedFragment)
.addToBackStack(null)
.commit()
true
}
Expand Down
Loading