package com.eugene.fithealthmaingit.UI.NavFragments;
import android.app.AlertDialog;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.echo.holographlibrary.Bar;
import com.echo.holographlibrary.BarGraph;
import com.echo.holographlibrary.PieGraph;
import com.echo.holographlibrary.PieSlice;
import com.eugene.fithealthmaingit.Databases_Adapters_ListViews.LogFood.LogAdapterAll;
import com.eugene.fithealthmaingit.Databases_Adapters_ListViews.LogFood.LogMeal;
import com.eugene.fithealthmaingit.R;
import com.eugene.fithealthmaingit.Utilities.Globals;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Date;
public class FragmentNutritionHolder extends Fragment {
public static FragmentNutritionHolder newInstance(Date date) {
Bundle args = new Bundle();
args.putSerializable("DATE", date);
FragmentNutritionHolder fragment = new FragmentNutritionHolder();
fragment.setArguments(args);
return fragment;
}
private View v;
Date d;
private DecimalFormat df = new DecimalFormat("0");
private DecimalFormat dfT = new DecimalFormat("0.0");
private SharedPreferences sharedPreferences;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
v = inflater.inflate(R.layout.testing_nutrition_holder, container, false);
d = (Date) getArguments().getSerializable("DATE");
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
return v;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
handleTextViews(d);
}
private void handleTextViews(Date d) {
LogAdapterAll logMealArrayAdapter = new LogAdapterAll(getActivity(), 0, LogMeal.logsByDate(d));
int breakfastCalorieCount = 0;
int breakFatCount = 0;
int breakfastSaturatedFatCount = 0;
int breakCholesterolCount = 0;
int breakSodiumCount = 0;
int breakCarbsCount = 0;
int breakFiberCount = 0;
int breakSugarCount = 0;
int breakProteinCount = 0;
int breakVitACount = 0;
int breakVitCCount = 0;
int breakCalciumCount = 0;
int breakIronCount = 0;
for (LogMeal log : logMealArrayAdapter.getLogs()) {
breakfastCalorieCount += log.getCalorieCount();
breakFatCount += log.getFatCount();
breakfastSaturatedFatCount += log.getSaturatedFat();
breakCholesterolCount += log.getCholesterol();
breakSodiumCount += log.getSodium();
breakCarbsCount += log.getCarbCount();
breakFiberCount += log.getFiber();
breakSugarCount += log.getSugars();
breakProteinCount += log.getProteinCount();
breakVitACount += log.getVitA();
breakVitCCount += log.getVitC();
breakCalciumCount += log.getCalcium();
breakIronCount += log.getIron();
}
// All TextViews. Formatted like this because they are extremely local and are not changed after the OnCreate
// ((TextView) v.findViewById(R.id.servingCOnsumed)).setText(df.format(mLogMeal.getServingSize()));
((TextView) v.findViewById(R.id.caloriesNutrition)).setText(df.format(breakfastCalorieCount));
((TextView) v.findViewById(R.id.fatNutrition)).setText(df.format(breakFatCount) + " g");
((TextView) v.findViewById(R.id.saturatedFat)).setText(df.format(breakfastSaturatedFatCount) + " g");
((TextView) v.findViewById(R.id.cholesterol)).setText(df.format(breakCholesterolCount) + " mg");
((TextView) v.findViewById(R.id.sodium)).setText(df.format(breakSodiumCount) + " mg");
((TextView) v.findViewById(R.id.carbohydratesNutrition)).setText(df.format(breakCarbsCount) + " g");
((TextView) v.findViewById(R.id.fiber)).setText(df.format(breakFiberCount) + " g");
((TextView) v.findViewById(R.id.sugars)).setText(df.format(breakSugarCount) + " g");
((TextView) v.findViewById(R.id.proteinNutrition)).setText(df.format(breakProteinCount) + " g");
((TextView) v.findViewById(R.id.vitiminA)).setText(df.format(breakVitACount) + "%");
((TextView) v.findViewById(R.id.vitiminC)).setText(df.format(breakVitCCount) + "%");
((TextView) v.findViewById(R.id.calcium)).setText(df.format(breakCalciumCount) + "%");
((TextView) v.findViewById(R.id.iron)).setText(df.format(breakIronCount) + "%");
/*
Fat: 1 gram = 9 calories
Protein: 1 gram = 4 calories
Carbohydrates: 1 gram = 4 calories
Alcohol: 1 gram = 7 calories
*/
TextView fat = (TextView) v.findViewById(R.id.fat);
TextView carb = (TextView) v.findViewById(R.id.carb);
TextView pro = (TextView) v.findViewById(R.id.pro);
PieGraph pg = (PieGraph) v.findViewById(R.id.graph);
pg.removeSlices();
// Fat
int fatCount = breakFatCount * 9;
PieSlice slice = new PieSlice();
slice.setColor(Color.parseColor("#4DB6AC"));
if (fatCount == 0) {
slice.setValue(1);
} else {
slice.setValue(fatCount);
}
pg.addSlice(slice);
// Carbs
int carbCount = breakCarbsCount * 4;
slice = new PieSlice();
slice.setColor(Color.parseColor("#FFC107"));
if (carbCount == 0) {
slice.setValue(1);
} else {
slice.setValue(carbCount);
}
pg.addSlice(slice);
// Pro
int proCount = breakProteinCount * 4;
slice = new PieSlice();
slice.setColor(Color.parseColor("#9C27B0"));
if (proCount == 0) {
slice.setValue(1);
} else {
slice.setValue(proCount);
}
pg.addSlice(slice);
double percentage = fatCount + carbCount + proCount;
double fatPer = (fatCount / percentage) * 100;
double carbPer = (carbCount / percentage) * 100;
double proPer = (proCount / percentage) * 100;
boolean fatNaN = fatPer != fatPer;
boolean carbNaN = carbPer != carbPer;
boolean proNaN = proPer != proPer;
if (fatNaN) {
fatPer = 0;
}
if (carbNaN) {
carbPer = 0;
}
if (proNaN) {
proPer = 0;
}
fat.setText(dfT.format(fatPer) + "%");
carb.setText(dfT.format(carbPer) + "%");
pro.setText(dfT.format(proPer) + "%");
// Bar Graph
double FatGoal = Double.valueOf(sharedPreferences.getString(Globals.USER_DAILY_FAT, ""));
double CarbGoal = Double.valueOf(sharedPreferences.getString(Globals.USER_DAILY_CARBOHYDRATES, ""));
double ProteinGoal = Double.valueOf(sharedPreferences.getString(Globals.USER_DAILY_PROTEIN, ""));
ArrayList<Bar> points = new ArrayList<>();
// Fat
Bar dd = new Bar();
dd.setColor(getActivity().getResources().getColor(R.color.green));
dd.setValue(breakFatCount);
Bar d2 = new Bar();
d2.setColor(Color.parseColor("#FFBB33"));
d2.setValue(Integer.valueOf(df.format(FatGoal)));
// Carbs
Bar dd1 = new Bar();
dd1.setColor(getActivity().getResources().getColor(R.color.green));
dd1.setValue(breakCarbsCount / 2);
Bar d21 = new Bar();
d21.setColor(Color.parseColor("#FFBB33"));
d21.setValue(Integer.valueOf(df.format(CarbGoal)) / 2);
// Pro
Bar dd11 = new Bar();
dd11.setColor(getActivity().getResources().getColor(R.color.green));
dd11.setValue(breakProteinCount);
Bar d211 = new Bar();
d211.setColor(Color.parseColor("#FFBB33"));
d211.setValue(Integer.valueOf(df.format(ProteinGoal)));
points.add(dd);
points.add(d2);
points.add(dd1);
points.add(d21);
points.add(dd11);
points.add(d211);
BarGraph g = (BarGraph) v.findViewById(R.id.graphBar);
g.setShowPopup(false);
g.setShowBarText(false);
g.setShowAxis(false);
g.setBars(points);
TextView barFat = (TextView) v.findViewById(R.id.barFat);
TextView barCarb = (TextView) v.findViewById(R.id.barCarb);
TextView barPro = (TextView) v.findViewById(R.id.barPro);
barFat.setText(df.format(breakFatCount) + "g : " + df.format(FatGoal) + "g");
barCarb.setText(df.format(breakCarbsCount) + "g : " + df.format(CarbGoal) + "g");
barPro.setText(df.format(breakProteinCount) + "g : " + df.format(ProteinGoal) + "g");
RelativeLayout macrosInfo = (RelativeLayout) v.findViewById(R.id.macrosInfo);
macrosInfo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Macros Info")
.setPositiveButton("Done", null);
LayoutInflater inflater = getActivity().getLayoutInflater();
FrameLayout f1 = new FrameLayout(getActivity());
f1.addView(inflater.inflate(R.layout.dialog_macros_info, f1, false));
builder.setView(f1);
AlertDialog alert = builder.create();
alert.show();
}
});
}
}