Skip to content

Commit 6179c62

Browse files
committed
completed habit filtering
1 parent c90167d commit 6179c62

3 files changed

Lines changed: 79 additions & 27 deletions

File tree

app/src/main/java/com/cmput301f17t11/cupofjava/Models/Habit.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,16 @@ public Habit(String title, String reason, Calendar date, ArrayList<Integer> days
9090
*/
9191
public Habit(){}
9292

93+
/**
94+
* for creating dummy habit for spinner
95+
* @param title
96+
* @param reason
97+
*/
98+
public Habit(String title, String reason){
99+
this.habitTitle = title;
100+
this.habitReason = reason;
101+
}
102+
93103
/**
94104
* Gets the habit title.
95105
*
@@ -249,7 +259,7 @@ public int getHabitStatus(){
249259

250260
@Override
251261
public String toString(){ //this gets called by array adapter
252-
return ("What: " + this.habitTitle + "\n"
253-
+ "Why: " + this.habitReason);
262+
return (this.habitTitle + "\n"
263+
+ this.habitReason);
254264
}
255265
}

app/src/main/java/com/cmput301f17t11/cupofjava/Views/HabitEventTimeLineActivity.java

Lines changed: 60 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -29,16 +29,20 @@
2929
import android.widget.EditText;
3030
import android.widget.LinearLayout;
3131
import android.widget.ListView;
32+
import android.widget.Spinner;
3233
import android.widget.TextView;
3334
import android.widget.Toast;
3435

3536
import com.cmput301f17t11.cupofjava.Controllers.ElasticsearchController;
3637
import com.cmput301f17t11.cupofjava.Controllers.EventFilteringHelper;
3738

39+
import com.cmput301f17t11.cupofjava.Models.Habit;
40+
import com.cmput301f17t11.cupofjava.Models.HabitAdapter;
3841
import com.cmput301f17t11.cupofjava.Models.HabitEvent;
3942
import com.cmput301f17t11.cupofjava.R;
4043

4144
import java.util.ArrayList;
45+
import java.util.Calendar;
4246
import java.util.Collections;
4347
import java.util.Comparator;
4448

@@ -176,6 +180,62 @@ public void onClick(DialogInterface dialog, int which) {
176180
dialog.show();
177181
}
178182
});
183+
ArrayList<Habit> habits;
184+
ElasticsearchController.GetHabitsTask getHabitsTask = new ElasticsearchController.GetHabitsTask();
185+
getHabitsTask.execute(userName);
186+
try {
187+
habits = getHabitsTask.get();
188+
} catch (Exception e) {
189+
Log.i("Error Getting Habits ", e.toString());
190+
habits = new ArrayList<>();
191+
}
192+
final Spinner spinner = (Spinner) view.findViewById(R.id.filter_by_habit);
193+
ArrayAdapter<Habit> arrayAdapter = new ArrayAdapter<Habit>(getActivity(),
194+
R.layout.string_only_list_item);
195+
196+
final Habit emptyHabit = new Habit("Select", "to filter by habit");
197+
arrayAdapter.add(emptyHabit);
198+
arrayAdapter.addAll(habits);
199+
spinner.setAdapter(arrayAdapter);
200+
201+
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
202+
@Override
203+
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
204+
Habit selectedHabit = (Habit) spinner.getSelectedItem();
205+
if (selectedHabit.getHabitTitle().equals(emptyHabit.getHabitTitle())){
206+
return;
207+
}
208+
String habitTitle = selectedHabit.getHabitTitle();
209+
events = new ArrayList<>();
210+
ElasticsearchController.GetEventsTask getEventsTask = new ElasticsearchController.GetEventsTask();
211+
getEventsTask.execute(userName);
212+
try {
213+
ArrayList<HabitEvent> foundHabitEvents = getEventsTask.get();
214+
if (!foundHabitEvents.isEmpty()) {
215+
216+
events.addAll(foundHabitEvents);
217+
Log.i("HabitEventTimeline: found events :", events.toString());
218+
} else {
219+
Log.i("HabitEventTimeline", "Did Not find habit events" + events.toString());
220+
221+
}
222+
} catch (Exception e) {
223+
Log.i("HabitEventTimeline", "Failed to get the Habit Events from the async object");
224+
225+
}
226+
227+
events = EventFilteringHelper.filterByType(events, habitTitle);
228+
events = EventFilteringHelper.reverseChronological(events);
229+
updateTextView(events.size());
230+
updateListView(events);
231+
232+
}
233+
234+
@Override
235+
public void onNothingSelected(AdapterView<?> parent) {
236+
237+
}
238+
});
179239

180240

181241
return view;
@@ -279,8 +339,6 @@ public void onItemClick(AdapterView<?> parent, View view, int position, long id)
279339
}
280340
bundle.putBoolean("hasImage", myEvent.hasImage());
281341
bundle.putString("eventId", myEvent.getId());
282-
//bundle.putSerializable("eventClicked", events); //sending habitEventlist
283-
//bundle.putInt("eventIndex", position);
284342

285343
intent5.putExtras(bundle);
286344
startActivity(intent5);
@@ -326,7 +384,6 @@ public void onDetach() {
326384

327385

328386
public void mapsAll(int type ){
329-
// Log.i("List of event Loc", events.get(0).getLocation().toString());
330387
Intent intent = new Intent(getActivity(), MapsActivity.class);
331388
Bundle bundle = new Bundle();
332389

@@ -373,13 +430,4 @@ public interface OnFragmentInteractionListener {
373430
// TODO: Update argument type and name
374431
void onFragmentInteraction(Uri uri);
375432
}
376-
377-
public ArrayList<HabitEvent> filterByTime(ArrayList<HabitEvent> events) {
378-
Collections.sort(events, new Comparator<HabitEvent>() {
379-
public int compare(HabitEvent o1, HabitEvent o2) {
380-
return o1.getHabitEventTime().compareTo(o2.getHabitEventTime());
381-
}
382-
});
383-
return events;
384-
}
385433
}

app/src/main/res/layout/activity_habit_time_line.xml

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -77,22 +77,16 @@
7777
android:orientation="horizontal">
7878

7979
<android.support.v7.widget.AppCompatSpinner
80-
android:id="@+id/Filter_by_habit"
80+
android:id="@+id/filter_by_habit"
8181
style="@android:style/Widget.Holo.Light.Spinner"
82-
android:layout_width="251dp"
83-
android:layout_height="48dp"
84-
android:layout_gravity="center_horizontal"
85-
android:layout_marginBottom="8dp"
82+
android:layout_width="253dp"
83+
android:layout_height="wrap_content"
8684
android:layout_marginLeft="16dp"
8785
android:layout_marginRight="16dp"
88-
android:layout_weight="1"
86+
android:layout_marginTop="32dp"
8987
android:backgroundTint="@color/colorAccentL"
90-
android:contentDescription="Select Habit"
91-
android:paddingLeft="8dp"
92-
android:paddingRight="8dp"
93-
android:popupBackground="@drawable/common_google_signin_btn_icon_light"
94-
android:prompt="@id/Filter_by_habit"
95-
android:text="BY HABIT"/>
88+
android:spinnerMode="dropdown">
89+
</android.support.v7.widget.AppCompatSpinner>
9690

9791
<Button
9892
android:id="@+id/viewMapButton"
@@ -104,7 +98,7 @@
10498
android:layout_marginBottom="4dp"
10599
android:layout_marginRight="4dp"
106100
android:layout_marginTop="8dp"
107-
android:text="MAP" />
101+
android:text="MAP"/>
108102
</LinearLayout>
109103

110104
<ListView

0 commit comments

Comments
 (0)