114
DAFTAR PUSTAKA
Bimantoro, Dimas. 2018. Pengertian Dan Cara Kerja Web Application. https://www.mastekno.com/id/pengertian-cara-kerja-web-application/.
Diakses pada tanggal 15 Agustus 2019.
Buana, I Komang Setia. 2014. Jago Pemrograman PHP. Jakarta Timur.
Elmansy, Rafiq. 2016. Cara Membuat Prototipe UI Menggunakan Adobe XD. https://webdesign.tutsplus.com/id/tutorials/how-to-create-a-ui-prototype-using-adobe-xd--cms-26585. Diakses pada tanggal 15 Agustus 2019.
Febian, Arya. 2014. Pengertian JSON. https://www.dumetschool.com/blog/Pengertian-JSON. Diakses pada tanggal 15 Agustus 2019.
Harahap, Nazruddin Safaat. 2011. Pemrograman Aplikasi Mobile Smartphone Dan Tablet PC Berbasis Android.
Haviluddin. 2011. Memahami Penggunaan UML (Unified Modelling Language). Jurnal Informatika Mulawarman.
Herdi, Hafizh. 2014. Belajar Membuat Aplikasi Android Menggunakan Android Studio. https://www.twoh.co/2014/09/28/belajar-membuat-aplikasi-android-menggunakan-android-studio/. Diakses pada tanggal 15 Agustus 2019. Naista, David. 2017. Codeigniter vs Laravel.
Nugroho, Adi. 2010. Rekayasa Perangkat Lunak Berorientasi Objek Dengan Metode USDP (Unified Software Development Process). Yogyakarta.
Pooley, Rob, and Pauline Wilcox. 2003. Applying UML.
Pressman. 2012. Rekayasa Perangkat Lunak (Pendekatan Praktisi) Edisi 7 : Buku 1.
Sandi, Anugrah. 2017. Mengenal Apa Itu Web API. https://www.codepolitan.com/mengenal-apa-itu-web-api-5a0c2855799c8. Diakses pada tanggal 15 Agustus 2019.
Simarmata, Janner, and Iman Paryudi. 2006. Basis Data. Yogyakarta. Tata, Sutabri. 2005. Kamus Komputer. Yogyakarta.
Wahyono, Rian Yulianto. 2019. Ekstensi Dan Tema Visual Studio Code Yang Saya Gunakan. https://medium.com/kode-dan-kodean/ekstensi-dan-tema-visual-studio-code-yang-saya-gunakan-6c3555762816. Diakses pada tanggal 15 Agustus 2019.
Wasisto, Andika. 2018. Belajar Menggunakan Firebase Cloud Messaging. https://medium.com/@pplA2EDC/belajar-menggunakan-firebase-cloud-messaging-7f6bf3b42da7. Diakses pada tanggal 15 Agustus 2019.
Whittern, Jeffrey L., Lonnie D. Bentley, and Kevin C. Dittman. 2004. Metode Desain & Analysis System (Terjemahan). Yogyakarta: Andi Offset.
Wicaksono, Soetam Rizky. 2011. Konsep Dasar Rekayasa Perangkat Lunak. Jakarta: Prestasi Pustaka.
Widodo, Prabowo Pudjo. 2011. Menggunakan UML. Bandung.
Yuliani, Febri. 2015. Pelaksanaan Tugas Rukun Tetangga Dan Rukun Warga (RT/RW) Kelurahan Delima Pekanbaru.
LAMPIRAN 1 KODE PROGRAM
Kode Program Lapor Kejadian
package id.ac.polindra.smartrw.activity; import android.content.Intent; import android.os.Bundle; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.EditorInfo; import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.DefaultItemAnimator; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout ; import com.facebook.shimmer.ShimmerFrameLayout; import com.google.android.material.chip.Chip; import com.google.android.material.chip.ChipGroup; import com.leinardi.android.speeddial.SpeedDialView; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.Unbinder; import id.ac.polindra.smartrw.R; import id.ac.polindra.smartrw.adapter.LaporRWAdapter; import id.ac.polindra.smartrw.helper.SharedPrefManager; import id.ac.polindra.smartrw.model.LaporRW; import id.ac.polindra.smartrw.model.LaporWarga;
import id.ac.polindra.smartrw.model.ListLaporRW; import id.ac.polindra.smartrw.model.ResponseLapor; import id.ac.polindra.smartrw.utils.BaseApiService; import id.ac.polindra.smartrw.utils.UtilsApi; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response;
class LaporFragment extends Fragment implements SwipeRefreshLayout.OnRefreshListener { @BindView(R.id.toolbar) Toolbar toolbar; @BindView(R.id.etSearch) EditText etSearch; @BindView(R.id.recyclerView) RecyclerView recyclerView; @BindView(R.id.ivNone) ImageView ivNone; @BindView(R.id.tvNone) TextView tvNone; @BindView(R.id.shimmer) ShimmerFrameLayout shimmer; @BindView(R.id.swipe_refresh) SwipeRefreshLayout swipeRefresh; @BindView(R.id.chipSemua) Chip chipSemua; @BindView(R.id.chipDiterima) Chip chipDiterima; @BindView(R.id.chipDiproses) Chip chipDiproses; @BindView(R.id.chipSelesai) Chip chipSelesai; @BindView(R.id.chipGroup) ChipGroup chipGroup;
private Unbinder unbinder;
private List<LaporRW> semuaLaporList = new ArrayList<>();
private LaporRWAdapter laporRWAdapter; private BaseApiService mApiService;
private SharedPrefManager sharedPrefManager; @Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view =
inflater.inflate(R.layout.fragment_lapor, container, false);
unbinder = ButterKnife.bind(this, view); sharedPrefManager = new SharedPrefManager(getActivity()); mApiService = UtilsApi.getAPIService(); ((AppCompatActivity) getActivity()).setSupportActionBar(toolbar); RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getActivity()); recyclerView.setItemAnimator(new DefaultItemAnimator()); recyclerView.setLayoutManager(layoutManager); swipeRefresh.setOnRefreshListener(this); swipeRefresh.setColorSchemeResources(R.color.colorPri mary); chipSemua.setChecked(true); chipSemua.setClickable(false); chipGroup.setOnCheckedChangeListener(new ChipGroup.OnCheckedChangeListener() { @Override
public void onCheckedChanged(ChipGroup chipGroup, int checkedId) {
Chip chip = chipGroup.findViewById(checkedId); if (chip != null) { for (int i = 0; i < chipGroup.getChildCount(); ++i) { chipGroup.getChildAt(i).setClickable(true); } chip.setClickable(false); String strChip = chip.getText().toString(); if (strChip.equals("Semua")) { getResultLapor(); } else if (strChip.equals("Diterima")){ getStatusLapor("DITERIMA"); } else if (strChip.equals("Diproses")){ getStatusLapor("DIPROSES"); } else { getStatusLapor("SELESAI");
} } } }); etSearch.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
Intent intent = new Intent(getActivity(),SearchActivity.class); intent.putExtra("query",v.getText().toString().trim() ); intent.putExtra("filter","lapor"); startActivity(intent); etSearch.setText(""); etSearch.clearFocus(); return true; } return false; } }); getResultLapor(); return view; }
private void getResultLapor() {
ivNone.setVisibility(View.GONE); tvNone.setVisibility(View.GONE); recyclerView.setVisibility(View.GONE); shimmer.setVisibility(View.VISIBLE); mApiService.getSemuaLaporRW().enqueue(new Callback<ListLaporRW>() { @Override
public void onResponse(Call<ListLaporRW> call, Response<ListLaporRW> response) {
semuaLaporList = response.body().getSemuaLapor();
if (semuaLaporList != null) {
shimmer.setVisibility(View.GONE); tvNone.setVisibility(TextView.GONE); ivNone.setVisibility(View.GONE); laporRWAdapter = new LaporRWAdapter(getActivity(), semuaLaporList); recyclerView.setAdapter(laporRWAdapter); } else { recyclerView.setVisibility(RecyclerView.GONE); shimmer.setVisibility(View.GONE); ivNone.setImageDrawable(getResources().getDrawable(R. drawable.no_data)); ivNone.setVisibility(View.VISIBLE); tvNone.setVisibility(TextView.VISIBLE); tvNone.setText("Tidak ada Lapor"); } swipeRefresh.setRefreshing(false); } @Override
public void onFailure(Call<ListLaporRW> call, Throwable t) { recyclerView.setVisibility(View.GONE); shimmer.setVisibility(View.GONE); ivNone.setImageDrawable(getResources().getDrawable(R. drawable.not_found)); ivNone.setVisibility(View.VISIBLE); tvNone.setVisibility(TextView.VISIBLE); tvNone.setText("Server tidak merespon"); swipeRefresh.setRefreshing(false); } }); }
private void getStatusLapor(String status) { ivNone.setVisibility(View.GONE);
tvNone.setVisibility(View.GONE);
recyclerView.setVisibility(View.GONE); shimmer.setVisibility(View.VISIBLE);
mApiService.getStatusLaporRW(status).enqueue(new Callback<ListLaporRW>() {
@Override
public void onResponse(Call<ListLaporRW> call, Response<ListLaporRW> response) {
semuaLaporList = response.body().getSemuaLapor(); if (semuaLaporList != null) { recyclerView.setVisibility(RecyclerView.VISIBLE); shimmer.setVisibility(View.GONE); tvNone.setVisibility(TextView.GONE); ivNone.setVisibility(View.GONE); laporRWAdapter = new LaporRWAdapter(getActivity(), semuaLaporList); recyclerView.setAdapter(laporRWAdapter); } else { recyclerView.setVisibility(RecyclerView.GONE); shimmer.setVisibility(View.GONE); ivNone.setImageDrawable(getResources().getDrawable(R. drawable.no_data)); ivNone.setVisibility(View.VISIBLE); tvNone.setVisibility(TextView.VISIBLE); tvNone.setText("Tidak ada Lapor"); } swipeRefresh.setRefreshing(false); } @Override
public void onFailure(Call<ListLaporRW> call, Throwable t) { recyclerView.setVisibility(View.GONE); shimmer.setVisibility(View.GONE); ivNone.setImageDrawable(getResources().getDrawable(R. drawable.not_found)); ivNone.setVisibility(View.VISIBLE); tvNone.setVisibility(TextView.VISIBLE);
tvNone.setText("Server tidak merespon"); swipeRefresh.setRefreshing(false); } }); } @Override
public void onRefresh() {
if (chipSemua.isChecked()) { getResultLapor(); } else if (chipDiterima.isChecked()){ getStatusLapor("DITERIMA"); } else if (chipDiproses.isChecked()){ getStatusLapor("DIPROSES"); } else { getStatusLapor("SELESAI"); } } @Override
public void onDestroyView() { super.onDestroyView(); unbinder.unbind(); }
LAMPIRAN 3 BIODATA PENULIS
BIODATA PENULIS TUGAS AKHIR Nama : Firmansyah
Nomor Induk Mahasiswa : 1603097 Jenis Kelamin : Laki-laki
Tempat, Tanggal Lahir : Indramayu, 04 Agustus 1998
Agama : Islam
Riwayat Sekolah :
Ijazah Nama Sekolah Kota Sekolah Tahun Lulus SD SDN Terusan 1 Indramayu 2010
SMP SMPN 1 Sindang Indramayu 2013 SMK SMKN 1 Indramayu Indramayu 2016 Program Studio/Jurusan : Teknik Informatika
Alamat : Jl. Raya Terusan RT.03 RW.01 Desa Terusan Kec. Sindang Kab. Indramayu
Email : firmanvsly@gmail.com Nama Orang Tua : Alm. Tasiman – Mutiati
Judul Tugas Akhir : Rancang Bangun Aplikasi Smart RT/RW Berbasis Android
Pembimbing : 1. Munengsih Sari Bunga, S.Kom., M.Eng 2. Fachrul Pralienka B.M., S.ST., M.Kom
Penulis,
Firmansyah NIM. 1603097