aboutsummaryrefslogtreecommitdiff
path: root/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsInsightsTodayFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'WordPress/src/main/java/org/wordpress/android/ui/stats/StatsInsightsTodayFragment.java')
-rw-r--r--WordPress/src/main/java/org/wordpress/android/ui/stats/StatsInsightsTodayFragment.java200
1 files changed, 200 insertions, 0 deletions
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsInsightsTodayFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsInsightsTodayFragment.java
new file mode 100644
index 000000000..0f1ae466b
--- /dev/null
+++ b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsInsightsTodayFragment.java
@@ -0,0 +1,200 @@
+package org.wordpress.android.ui.stats;
+
+import android.app.Activity;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import org.wordpress.android.R;
+import org.wordpress.android.ui.stats.models.VisitModel;
+import org.wordpress.android.ui.stats.models.VisitsModel;
+import org.wordpress.android.ui.stats.service.StatsService;
+import org.wordpress.android.util.FormatUtils;
+
+import java.util.List;
+
+
+public class StatsInsightsTodayFragment extends StatsAbstractInsightsFragment {
+ public static final String TAG = StatsInsightsTodayFragment.class.getSimpleName();
+
+ // Container Activity must implement this interface
+ public interface OnInsightsTodayClickListener {
+ void onInsightsTodayClicked(StatsVisitorsAndViewsFragment.OverviewLabel item);
+ }
+
+ private OnInsightsTodayClickListener mListener;
+
+ @Override
+ public void onAttach(Activity activity) {
+ super.onAttach(activity);
+ try {
+ mListener = (OnInsightsTodayClickListener) activity;
+ } catch (ClassCastException e) {
+ throw new ClassCastException(activity.toString() + " must implement OnInsightsTodayClickListener");
+ }
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ View view = super.onCreateView(inflater, container, savedInstanceState);
+ TextView moduleTitle = (TextView) view.findViewById(R.id.stats_module_title);
+ moduleTitle.setTag(StatsVisitorsAndViewsFragment.OverviewLabel.VIEWS);
+ moduleTitle.setOnClickListener(ButtonsOnClickListener);
+ moduleTitle.setTextColor(getResources().getColor(R.color.stats_link_text_color));
+ return view;
+ }
+
+
+ private VisitsModel mVisitsModel;
+
+ @Override
+ protected boolean hasDataAvailable() {
+ return mVisitsModel != null;
+ }
+ @Override
+ protected void saveStatsData(Bundle outState) {
+ if (hasDataAvailable()) {
+ outState.putSerializable(ARG_REST_RESPONSE, mVisitsModel);
+ }
+ }
+ @Override
+ protected void restoreStatsData(Bundle savedInstanceState) {
+ if (savedInstanceState.containsKey(ARG_REST_RESPONSE)) {
+ mVisitsModel = (VisitsModel) savedInstanceState.getSerializable(ARG_REST_RESPONSE);
+ }
+ }
+
+ @SuppressWarnings("unused")
+ public void onEventMainThread(StatsEvents.VisitorsAndViewsUpdated event) {
+ if (!shouldUpdateFragmentOnUpdateEvent(event)) {
+ return;
+ }
+
+ mVisitsModel = event.mVisitsAndViews;
+ updateUI();
+ }
+
+ @SuppressWarnings("unused")
+ public void onEventMainThread(StatsEvents.SectionUpdateError event) {
+ if (!shouldUpdateFragmentOnErrorEvent(event)) {
+ return;
+ }
+
+ mVisitsModel = null;
+ showErrorUI(event.mError);
+ }
+
+ protected void updateUI() {
+ super.updateUI();
+
+ if (!isAdded() || !hasDataAvailable()) {
+ return;
+ }
+
+ if (mVisitsModel.getVisits() == null || mVisitsModel.getVisits().size() == 0) {
+ showErrorUI();
+ return;
+ }
+
+ List<VisitModel> visits = mVisitsModel.getVisits();
+ VisitModel data = visits.get(visits.size() - 1);
+
+ LinearLayout ll = (LinearLayout) getActivity().getLayoutInflater()
+ .inflate(R.layout.stats_insights_today_item, (ViewGroup) mResultContainer.getRootView(), false);
+
+ LinearLayout tabs = (LinearLayout) ll.findViewById(R.id.stats_post_tabs);
+
+ for (int i = 0; i < tabs.getChildCount(); i++) {
+ LinearLayout currentTab = (LinearLayout) tabs.getChildAt(i);
+ switch (i) {
+ case 0:
+ setupTab(currentTab, FormatUtils.formatDecimal(data.getViews()), StatsVisitorsAndViewsFragment.OverviewLabel.VIEWS);
+ break;
+ case 1:
+ setupTab(currentTab, FormatUtils.formatDecimal(data.getVisitors()), StatsVisitorsAndViewsFragment.OverviewLabel.VISITORS );
+ break;
+ case 2:
+ setupTab(currentTab, FormatUtils.formatDecimal(data.getLikes()), StatsVisitorsAndViewsFragment.OverviewLabel.LIKES );
+ break;
+ case 3:
+ setupTab(currentTab, FormatUtils.formatDecimal(data.getComments()), StatsVisitorsAndViewsFragment.OverviewLabel.COMMENTS );
+ break;
+ }
+ }
+
+ mResultContainer.addView(ll);
+ }
+
+ private void setupTab(LinearLayout currentTab, String total, final StatsVisitorsAndViewsFragment.OverviewLabel itemType) {
+ final TextView label;
+ final TextView value;
+ final ImageView icon;
+
+ currentTab.setTag(itemType);
+ currentTab.setOnClickListener(ButtonsOnClickListener);
+
+ label = (TextView) currentTab.findViewById(R.id.stats_visitors_and_views_tab_label);
+ label.setText(itemType.getLabel());
+ value = (TextView) currentTab.findViewById(R.id.stats_visitors_and_views_tab_value);
+ value.setText(total);
+ if (total.equals("0")) {
+ value.setTextColor(getResources().getColor(R.color.grey));
+ } else {
+ value.setTextColor(getResources().getColor(R.color.blue_wordpress));
+ }
+ icon = (ImageView) currentTab.findViewById(R.id.stats_visitors_and_views_tab_icon);
+ icon.setImageDrawable(getTabIcon(itemType));
+
+ if (itemType == StatsVisitorsAndViewsFragment.OverviewLabel.COMMENTS) {
+ currentTab.setBackgroundResource(R.drawable.stats_visitors_and_views_button_latest_white);
+ } else {
+ currentTab.setBackgroundResource(R.drawable.stats_visitors_and_views_button_white);
+ }
+ }
+
+ private final View.OnClickListener ButtonsOnClickListener = new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (!isAdded()) {
+ return;
+ }
+ if (mListener == null) {
+ return;
+ }
+ StatsVisitorsAndViewsFragment.OverviewLabel tag = (StatsVisitorsAndViewsFragment.OverviewLabel) v.getTag();
+ mListener.onInsightsTodayClicked(tag);
+ }
+ };
+
+ private Drawable getTabIcon(final StatsVisitorsAndViewsFragment.OverviewLabel labelItem) {
+ switch (labelItem) {
+ case VISITORS:
+ return getResources().getDrawable(R.drawable.stats_icon_visitors);
+ case COMMENTS:
+ return getResources().getDrawable(R.drawable.stats_icon_comments);
+ case LIKES:
+ return getResources().getDrawable(R.drawable.stats_icon_likes);
+ default:
+ // Views and when no prev match
+ return getResources().getDrawable(R.drawable.stats_icon_views);
+ }
+ }
+
+ @Override
+ protected StatsService.StatsEndpointsEnum[] sectionsToUpdate() {
+ return new StatsService.StatsEndpointsEnum[]{
+ StatsService.StatsEndpointsEnum.VISITS
+ };
+ }
+
+ @Override
+ public String getTitle() {
+ return getString(R.string.stats_insights_today);
+ }
+
+}