2929import android .widget .EditText ;
3030import android .widget .LinearLayout ;
3131import android .widget .ListView ;
32+ import android .widget .Spinner ;
3233import android .widget .TextView ;
3334import android .widget .Toast ;
3435
3536import com .cmput301f17t11 .cupofjava .Controllers .ElasticsearchController ;
3637import com .cmput301f17t11 .cupofjava .Controllers .EventFilteringHelper ;
3738
39+ import com .cmput301f17t11 .cupofjava .Models .Habit ;
40+ import com .cmput301f17t11 .cupofjava .Models .HabitAdapter ;
3841import com .cmput301f17t11 .cupofjava .Models .HabitEvent ;
3942import com .cmput301f17t11 .cupofjava .R ;
4043
4144import java .util .ArrayList ;
45+ import java .util .Calendar ;
4246import java .util .Collections ;
4347import 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}
0 commit comments