Minggu, 24 April 2016

Weekly Report 25/4/2016 - Reyhan Razaby

Kami sudah menentukan MVP kami, yaitu fitur-fitur yang ada pada aplikasi Evaluasi Ibadah yang lama (buatan Badr asli) beserta tambahan dari kami. Detailnya ada di bawah ini:
Fitur lama:
1. Amalan dapat dicheck / diisi jika terlaksana
2. Pada halaman utama bisa pindah-pindah hari ke kanan (later) dan ke kiri (earlier)
3. Amalan dapat diedit, dihapus dan ditambah baru
4. Setiap amalan memiliki atribut berupa nama, jenis (check / isian) dan target
5. Dapat dilihat statistik tiap amalan berdasarkan target yang sudah ditentukan
6. Ada fitur pengingat (notifikasi) yang dapat diatur jam nya. Namun hanya bisa 1 pengingat, itupun secara keseluruhan, bukan tiap amalan.
(aplikasi dapat diunduh di sini)

Fitur tambahan dari kami:
1. Pengguna dapat daftar melalui akun Evaluasi Ibadah atau akun Google
2. Data disimpan ke server juga
3. Setiap amalan memiliki kategori
4. Ada atribut baru pada amalan, yaitu pengulangan (hari, minggu, bulan) dan deskripsi amalan tersebut
5. Setiap amalan memiliki lebih dari satu notifikasi yang bisa diatur jamnya

Selain itu banyak refactoring yg saya lakukan agar memenuhi best practice dalam pemrograman android.
Di antaranya adalah mengubah penamaan table dan atribut pada SQLite (pada class Localstorage) yang dibuat luthfi. Awalnya dia menamakan table dan atribut langsung menuliskan nama table atau atributnya (seperti yg terlihat pada gambar 1) yang kemudian masing2 nama table dan atribut saya buat variabelnya (seperti gambar 2). Jadi untuk selanjutnya, untuk pemanggilan nama table dan atribut dapat dilakukan seperti di gambar 3.
Gambar 1
Gambar 2
Gambar 3


Refactoring selanjutnya pada program kami melakukan pembuatan class LocalStorage baru di setiap Activity, sehingga lebih memakan memory. Untuk itu, saya buatkan class EvaluasiIbadah yang mengextends class Application sehingga class ini hanya perlu dipanggil sekali selama aplikasi menyala. Class EvaluasiIbadah ini menyimpan class LocalStorage yang akan digunakan pada Activity lain sehingga tidak perlu membuat class LocalStorage lagi di setiap Activity tersebut. Karena di class EvaluasiIbadah ini, saya membuat aksesor dengan method public dan static. Tidak hanya class LocalStorage yang disimpan di class EvaluasiIbadah ini, tetapi juga class penolong lainnya yang dibutuh kan oleh beberapa atau semua Activity. Bentuk class kurang terlihat pada gambar 4 di bawah ini.

Gambar 4


Pada pembuatan amalan dan kategori built-in dilakukan di class AmalanManager. Pembuatan object-object ini hanya dilakukan pada pengguna baru yang belum memilih amalan-amalan yang ingin dievaluasi (pada halaman Welcome). Bagi yang sudah pernah memilih amalan, jika dia menutup aplikasi dan membuka lagi, tidak perlu memilih amalan lagi dan tidak perlu mengambil dari database server, cukup database local. Jika dia melakukan logout dan login lagi, tidak perlu memilih amalan lagi, namun perlu ambil data yang di database server. Di bawah ini potongan kodingan yang melakukan hal di atas.
Gambar 5

Gambar 6
Gambar 7

Semua yang berkaitan dengan kodingan di atas sebenarnya saya lakukan sejak 2 minggu lalu, jadi sudah terpush ke GIT pada minggu lalu

Weekly Report 24/4/2016 - Muhammad Farhan Dzikri

Minggu ini saya menyelesaikan mock up "tambah amalan" baru di corel draw. Halaman ini saya buat dengan mengikuti design google calendar dan mengikuti guideline material design.



Jika amalan baru sudah selesai dibuat maka akan menuju halaman berikut.


Halaman ini juga masih berupa mock up yang saya buat di corel draw. Designnya mengikuti dari halaman material design dengan mini floating button. Selain itu halaman juga dapat dituju jika amalan di klik dari halaman utama.

Kemudian saya mengimplementasikan halaman "tambah amalan" di android studio. Hasilnya seperti berikut:


Tinggi masing-masing baris adalah 56dp, sebagaimana aturan dari material design. Namun kolom "Nama Amalan" di paling atas adalah 64dp karena harus membuat padding top 8dp.
Jarak tulisan dari kiri adalah 72dp, jarak icon adalah 16dp, dan sizenya 24dp.

Iconnya sendiri harus dibuat dan dicocokan dengan style material design.
Berikut adalah beberapa hal yang saya pelajari

1. Icon harus ditampilkan dari depan. Bukan dari atas, atau menyamping, sehingga icon berbentuk flat dan tidak 3d.

2. Icon disimplifikasi, jangan terlalu mendetail dan rumit.

3. Ujung dari icon rounded dan tidak memakai stroke thin line.


4. Posisi icon diletakkan di atas pixel, bukan di tengah2 antara dua pixel, meskipun dari jarak jauh hasilnya akan sama. 

5. Garis icon memiliki lebar konsisten sebesar 2 pixel





Halaman ini sudah bisa menentukan kategori, tipe amalan, pengulangan setiap hari/minggu/bulan serta menambahkan deskripsi. Namun target dan notifikasi belum berfungsi.








Weekly Report 24/4/2016 - Muhamad Hardi Ramli

Pada minggu ini beberapa hal yang saya lakukan adalah memperbaiki kodingan yang ada pada server supaya server bisa digunakan. Hal ini sudah berhasil diperbaiki dengan cara memperbaiki konfigurasi database dan konfigurasi environment (pada .env) sesuai dengan konfigurasi server.

Selain itu saya juga mulai mengupdate ServerAuthentication supaya dapat digunakan di client dan menambahkan kelas bantuan JsonServerRequest untuk melakukan pemanggilan database, namun saya masih mendapat error code 400 (Client side error). Hal ini akan saya tanyakan saat pertemuan Badr selanjutnya. Jika masih tidak bisa menggunakan volley, mungkin akan diganti dengan menggunakan HttpParser dari kelas yang disediakan oleh Android.


Untuk kode selengkapnya sudah dimasukkan ke git berikut. Untuk minggu selanjutnya, saya akan mencoba memperbaiki error 400 tersebut, dan setup melakukan POST dan GET untuk fitur lain, terutama pemanggilan amalan dan kategori tiap user.

Minggu, 17 April 2016

Weekly Report 17/4/2016 - Muhamad Iqbal

Pada minggu ini beberapa hal yang saya lakukan adalah mengubah library rest client yang sebelumnya saya menggunakan volley library menjadi retrofit library.

Setelah banyaknya masalah yang saya dapatkan minggu-minggu sebelumnya saat menggunakan volley akhirnya saya memutuskan untuk menggantinya dengan retrofit apalagi menurut beberapa artikel yang saya baca retrofit lebih cepat dalam menjalankan request dibandingkan yang lain sehingga memantapkan untuk mengganti rest api tersebut.

Rest (representational state transfer) adalah suatu arsitektur metode komunikasi yang dijalankan via HTTP melibatkan proses pembacaan halaman web tertentu yang memuat sebuah file XML atau JSON.

Secara garis besar kodingan retrofit saya seperti berikut

variabel retrofit dibuar dengan base url yaitu url rest api lalu kita mengunakan converter gson karena api yang kita akses bertipe json.

RestApi digunakan untuk mengambil file json dari root_url menjadi bentuk objek oriented yang class nya sudah dibuat bernama kategori yang berada di class model.




call digunakan untuk mendapatkan hasil parsing dan diolah data tersebut sesuai kemauan kita.

Selama beberapa hari saya mempelajari retrofit dan mengimplementasi ke aplikasi Evaluasi Ibadah namun masih terjadi error. Lalu saya coba untuk membuat aplikasi sederhana yang berfungsi hanya untuk menampilkan database namun masih error. Setelah saya teliti ternyata program tidak dapat masuk ke method onResponse sehingga aplikasi tidak dapat mengambil data.

Lalu saya mencoba untuk mencoba mengganti ROOT_URL dengan API yang saya dapatkan dan ternyata bisa dan data dapat ditampilkan di aplikasi sehingga saya berkesimpulan bahwa masalah yang terjadi sebelumnya karena url database yang tidak dapat diakses padahal kemarin saya akses melalui browser bisa.

Weekly Report 18/4/2016 - Reyhan Razaby

Seminggu belakangan ini saya melakukan merancang sprint backlog untuk sprint 2. Dan di sprint 2 ini rencana kami adalah melanjutkan halaman Welcome (biasa disebut Luthfi halaman default) yang tidak sempat dikerjakan pada sprint 1 lalu. Kemudian di sprint 2 ini rencananya adalah menyelesaikan masalah login dan register menggunakan server yang diberikan dari Badr. Kemudian juga menyelesaikan halaman Editmode yang tugasnya adalah mengedit amalan & kategori, menambah amalan & kategori, dan menghapus amalan & kategori.

Untuk hasil lebih detailnya bisa dilihat di Trello

Atau bisa dilihat di screenshot di bawah ini



Kemudian saya sudah berhasil membuat halaman (tampilan masih akan diperbaiki) Editmode dan secara fungsional sudah berhasil. Tampilan sementara bisa dilihat di bawah ini.



Saya tambahkan tombol tiga titik untuk memunculkan popup dan tombol silang untuk menghapus amalan atau kategori. Jika kategori dihapus, amalan-amalan yang ada di dalamnya sudah berhasil ikut dihapus. Selain itu pada menu popup baru bekerja pada pilihan "Edit", dan amalan yang diklik pada menu "Edit" tersebut sudah berhasil dibawa ke halaman Edit untuk mengedit amalan tersebut.

Selain itu saya juga sudah membuat halaman Welcome yang bertujuan untuk memilih amalan-amalan yang akan dievaluasi. Tampilan halaman sementara bisa dilihat di bawah ini


Code sudah saya push ke GIT

Selain itu saya melakukan perubahan pada userstory yaitu saya tambahkan fitur Settings yang tugasnya mampu mengubah bahasa, warna tampilan dan profil (seperti nama lengkap dan password).

Weekly Report 17/4/2016 - Muhamad Farhan Dzikri

Dalam 2 minggu ini yang saya kerjakan adalah menentukan primary color, secondary color dan accent color. Pilihan warna yang saya ambil dari primary color yaitu warna hitam di halaman login, secondary color yaitu warna kotak untuk mengisi nama saat registrasi, dan biru muda accent color sebagai headernya.


Kemudian saya jugamendesign halaman yang telah dibuat Luthfi agar sesuai dengan uiux aplikasi yang telah saya rancang sebelumnya. Design awal yang Luthfi buat adalah seperti berikut ini

Karena uiux saya gabungkan dengan gaya material design, maka saya berniat akan mengubah designnya menjadi seperti gambar dibawah ini. Ini adalah mock up yang saya buat di Corel Draw. Inspirasinya adalah dari aplikasi WhatsApp bagian settings.




Kemudian design ini saya implementasikan di Android studio sehingga hasilnya seperti gambar dibawah ini. Ukuran font, jarak hingga warna saya ikuti dari guideline material design. Ukuran font besar adalah 16sp, ukuran font kecil adalah 14sp dengan warna #88888, tinggi list adalah 72dp, dan padding kanan kiri adalah 16dp.



Setelah itu saya memasukkan fungsi dialog pada masing2 list. Jika di klik list akan menampilkan kotak dialog seperti ini.




Untuk menampilkan kotak dialog seperti ini kode yang dibuat cukup simple. Saya mempelajari kode ini dan berikut adalah penjelasannya.

Kode terdiri dari menampilkan Alert Dialog, Set View, Postive button, Negative button, Single Choice button, dan OnClickListener.
Alert dialog adalah fungsi untuk menampilkan kotak putih seperti gambar diatas.
Set view adalah fungsi untuk mengisi kotak alert dialog.
Positive button adalah fungsi untuk menyetujui pilihan alert dialog.
Negative button adalah fungsi untuk membatalkan pilihan alert dialog.
Single choice adalah isi dari alert dialog untuk membuat pilihan yang hanya dapat dipilih satu.
On click listener adalah fungsi untuk membuat respon dari fungsi2 yang diimplementasikan.
Di kode bagian awah ada fungsi SetText, tugasnya adalah untuk mengubah tulisan di halaman depan agar sesuai dengan pilihan user.

Selain itu saya juga mengimplementasikan Toast dimana fungsi tersebut akan menampilkan tulisan di dekat home button. Tujuannya adalah agar user mendapatkan feedback dari hasil pilihannya. Hasilnya dapat dilihat di gambar bawah berikut.



Namun setelah saya buat, saya mendapatkan inspirasi lain untuk mendesign uiux halaman ini. Saya terinspirasi dari Google Calendar seperti dibawah ini.




Saya merasa tampilan diatas lebih cokok untuk dijadikan tampilan membuat amalan baru. Karena halaman whatsapp diatas bukanlah halaman membuat, tapi mengubah settings. Jadi sebelum saya mengimplementasikannya di Android Studio saya mencoba membuat mockupnya di Corel Draw untuk saya tanyakan kepada teman2. Sejauh ini hasilnya adalah seperti berikut.


Weekly Report 17/4/2016 - Muhamad Hardi Ramli

Pada minggu-minggu lalu saya sudah mulai mencoba melakukan deploy server walaupun terjadi beberapa kesulitan karena secara pribadi saya belum pernah menggunakan laravel untuk dideploy ke server. Saya sempat kesulitan pada hal-hal seperti instalasi program tambahan yang dibutuhkan seperti php-mcrypt untuk menjalankan composer, update laravel pada server dan lainnya. Sebelum mengetahui hal tersebut yang saya lakukan adalah mengupdate kode tersebut secara lokal lalu menguploadnya melalui winSCP. Hal ini tentu menghambat laju development, apalagi jika internet yang bisa digunakan hanya dari modem/HP karena servernya tidak dapat diakses melalui akses internet UI.

Beberapa hal yang bisa saya share adalah cara menjalankan composer pada server, dan instalasi mcryptnya. Hal yang pertama kali harus diperhatikan adalah mengecek versi php yang ada pada server dengan 

php -v.
Setelah itu install mcrypt pada server sesuai dengan versi php yang ada pada server contoh jika yang digunakan adalah php 5 maka bisa menggunakan
sudo apt-get php5-mcrypt atau sudo yum php5-mcrypt. 

Upload file composer.phar ke server lalu jalankan 

php [posisi direktori composer]/composer.phar update.

Tunggu lalu lanjutkan artisan dan lainnya seperti biasa.

Untuk deployment, supaya dapat diakses dilakukan dengan

php artisan serve --host=[ip server]

(harap diperhatikan supaya port yang digunakan tidak digunakan oleh program lain dan dibuka firewall, bisa minta melalui admin server/yang memiliki akun privilege root)

Saya juga telah mengupdate database untuk user dan autentikasi supaya siap digunakan.

Pada minggu ini saya masih mengalami masalah seperti dibawah ini

ketika mengambil user dari database, hal ini masih saya tanyakan dan cari solusinya. 

Untuk minggu selanjutnya, hal yang akan saya lakukan adalah memperbaiki kode supaya bisa dijalankan pada server yang telah diberikan, seperti konfigurasi php.ini untuk mengetahui alamat untuk php mail() yang bisa digunakan untuk mengirim email (http://www.html-form-guide.com/email-form/php-script-not-sending-email.html) dan DB lebih lanjut untuk penyimpanan amalan. Karena saya akan lebih banyak mengutak-atik pada server, mungkin saya hanya akan mengupdate git saya jika sempat dan koneksi modem sedang lancar. Link Git

Weekly Report 17/4/2016 - Luthfi Kurnia Putra

    Sebenarnya untuk minggu ini, tidak begitu banyak yang saya lakukan untuk pekerjaan PPL ini. Jika bisa dibagi kedalam dua bagian, saya membagi tugas saya dalam minggu ini untuk membuat halaman Edit Amalan dan mempelajari Unit Testing.
    Untuk bagian Edit Amalan, sejauh ini progress sudah baik. Tampilan view dari Activity sudah diselesaikan dengan baik oleh Reyhan. Tetapi untuk fitur editnya masih belum terimplementasi ke-form yang sudah kami buat. Tapi sejauh ini, pada halaman Edit Amalan aplikasi kami sudah dapat menghapus amalan, menghapus kategori, menambah amalan, dan menambah kategori.
    Untuk fitur editnya sendiri, menu dropdown yang akan muncul saat menekan tombol edit sudah diimplementasikan (walaupun tempat munculnya masih random). Akan tetapi, fungsi backendnya belum saya kerjakan (karena terakhir kali saya cek belum jadi) sehingga tidak mungkin terkejar minggu ini.
    Untuk minggu depan, sepertinya saya sudah dapat membuat halaman Statistik Amalan disebabkan fungsi pada Local Database sudah mau rampung (kalo edit udah selesai semua operasi local storage dah rampung) sehingga bisa langsung dihitung dan diambil statistik datanya dari yang sudah ada. Kemudian, ada juga rencana untuk mulai mengimplementasikan notifikasi dengan service.
    Selanjutnya, mengenai Unit Testing, saya sendiri sudah mencari library yang memungkinkan untuk melakukan unit testing di Android, akan tetapi beberapa yang saya temukan API-nya sudah deprecated. Untuk yang belum tahu apa itu deprecated, Deprecated adalah istilah yang digunakan dalam dunia pemrograman untuk menyatkan bahwa sebuah fungsi sudah 'usang' atau tidak dapat dipakai lagi. Biasanya, fungsi yang sudah deprecated akan digantikan oleh fungsi lain yang lebih baik. Tetapi tidak jarang juga fungsi tersebut jadi 'hilang' sama sekali karena tidak ada pihak yang mau mengembangkan.
    Kembali ke cerita Unit Testing saya, saya juga sudah mencari API-API indie yang berusaha mengimplementasikan unit testing yang mampu bekerja diatas Android Studio, akan tetapi kebanyakan juga mengalami masalah yang sama. Yaitu fungsi yang mereka pakai sudah deprecated atau usang.
    Untuk minggu depan sepertinya saya pribadi akan fokus dulu ke pengembangan Edit Amalan dan pembuatan halaman baru mengenai Statistik Amalan.

Minggu, 10 April 2016

Weekly Report 11/4/2016 - Muhamad Iqbal

Selama 2 minggu masa uts sebagian waktu saya lebih banyak berkutat pada uts sehingga saya mulai untuk mengerjakan ppl pada hari minggu malam. Pada Weekly Report kemarin aplikasi masih belum bisa menampilkan data dari database. Kita menggunakan Volley library untuk melakukan networking namun masih error. Kemarin saya melakukan beberapa perubahan dari sebelum uts yaitu menambahkan inisiasi cache dan set network HttpUrlConnection namun masih terdapat error pada Json object request dan saya masih belum dapat menemukan masalahnya.

Membuat Request Queue awal

Request Queue baru yang masih terdapat error
json object request

Weekly Report 11/4/2016 - Reyhan Razaby

Untuk minggu ini saya hanya mengerjakan progress dalam satu hari, yaitu pada hari Minggu kemarin. Dan yang saya kerjakan adalah memperbaiki buatan Luthfi sebelumnya.

Pada sebelumnya Luthfi telah membuat halaman Tambah Amalan dan Tambah Kategori namun pilihan menu untuk keduanya tersebut masih berada di Mainpage, sedangkan yang kami rencanakan sebelumnya adalah di halaman Edit Mode. Dan yang sudah saya lakukan adalah membuat halaman Edit Mode tersebut tetapi belum ada konten apa-apa, baru toolbar yang berisi icon tambah (+) yang fungsinya untuk menampilkan menu Tambah Amalan dan Tambah Kategori yang sebelumnya berada di Mainpage.

Selain itu pada halaman Tambah Kategori, Luthfi masih membuatnya dalam activity baru, sedangkan yang kami rencanakan hanyalah sebuah dialog box. Karena hanya memerlukan input dari nama kategori yang diinginkan.

Proyek sementara di atas sudah saya push ke GIT

Minggu, 03 April 2016

Weekly Report 03/4/2016 - Luthfi Kurnia Putra

    Untuk minggu UTS ini sepertinya tidak banyak yang saya lakukan. Tapi setidaknya ada beberapa hal yang harus saya sampaikan. Untuk bocorannya, mengenai Sprint Review dan mengenai penambahan fitur baru.
    Untuk Sprint Review, kami sudah melakukannya saat di Badr kemarin sebelum minggu UTS dimulai. Beberapa task sudah kami selesaikan dengan baik. Akan tetapi, banyak sekali task-task yang belum kelar karena kendala teknis. Sehingga kami, mau tidak mau, harus mencari waktu lagi untuk menyelesaikan task-task yang keteteran tersebut. But anyway, yang terjadi terjadilah. Mudah-mudahan tidak terulang di sprint selanjutnya :)) .
    Untuk detail mengenai task-task apa yang sudah dikerjakan pada Sprint 1 dapat dilihat pada Spreadsheet di Google Docs kelompok kami. Mudah-mudahan membantu penilaian kami ya :) .
    Kemudian untuk fitur tambahan yang saya buat kali ini adalah fitu mengenai 'Tambah Amalan' dan 'Tambah Kategori'. Untuk lebih detail mengenai fitur 'Tambah Amalan', fitur ini memfasilitasi pengguna untuk menambahkan amalan baru ke aplikasi. User dapat mengatur sendiri nama amalan yang ingin dibuat, ingin dikategorikan ke kategori apa, ingin dikeluarkan berkala secara harian/mingguan/bulanan, menentukan tipe dari amalan (checklist/fill form) dan masih banyak lagi. Fitur kategori hanya berfungsi menambahkan kategori baru. Kategori ini nantinya akan muncul di dropdown spinner pilihan saat user membuat amalan yang baru.
    Sejauh ini fitur ini masih works dengan baik dan juga telah menyimpan data dengan benar. Saya pribadi sedang mencari testcase-testcase lain lagi untuk menguji fitur ini. Sebab kemarin saya menemukan bug dimana fitur tidak berhasil untuk hari-hari tertentu. Akan tetapi, masalah tersebut sudah berhasil terpecahkan.
    Nah, sekilas mengenai dropdown spinner, apa itu dropdown spinner? Dropdown spinner adalah menu dropdown built-in android yang berguna untuk menampilkan menu secara dropdown (Tau kan dropdown? Yang kalo di klik ke bawah baru muncul konten dari menunya itu ...). Spinner ini diisi dengan cara memasukkan sebuah ArrayAdapter berisi sebuah tipe data List yang sudah diisi sebelumnya dengan konten menu yang ingin ditampilkan.
    Kemudian, untuk ArrayAdapter, apa lagi tuh ArrayAdapter? Wah saya juga kurang tau sih itu apa. Tapi kalo saya deskripsiin sih itu lebih kayak sebuah 'objek' yang tugasnya untuk masukkin sebuah value berisi array ke dalam sebuah view-view tertentu dari view built-in Android. Contoh view-view tersebut adalah Spinner, ListView, etc.
   Nah udah dulu ya, sekian dari saya untuk minggu ini dan semoga bermanfaat. Selamat Malam!