Rev 1 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
package com.cesams.twogetskills.fragment;import android.graphics.Color;import android.graphics.Typeface;import android.os.Bundle;import androidx.annotation.NonNull;import androidx.annotation.Nullable;import androidx.fragment.app.Fragment;import androidx.lifecycle.Observer;import androidx.lifecycle.ViewModelProvider;import android.text.TextUtils;import android.util.Log;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import com.cesams.twogetskills.R;import com.cesams.twogetskills.dao.CapsuleDao;import com.cesams.twogetskills.dao.ProgressDao;import com.cesams.twogetskills.dao.TopicDao;import com.cesams.twogetskills.entity.Capsule;import com.cesams.twogetskills.entity.Company;import com.cesams.twogetskills.entity.Progress;import com.cesams.twogetskills.entity.Topic;import com.cesams.twogetskills.room.ResultCount;import com.cesams.twogetskills.room.ResultTotalInt;import com.cesams.twogetskills.skeleton.ITwoGetSkills;import com.cesams.twogetskills.viewdata.ProgressViewData;import com.cesams.twogetskills.viewmodel.ProgressViewModel;import com.github.mikephil.charting.charts.PieChart;import com.github.mikephil.charting.data.PieData;import com.github.mikephil.charting.data.PieDataSet;import com.github.mikephil.charting.data.PieEntry;import java.util.ArrayList;import java.util.List;public class ProgressFragment extends Fragment {private static final String TAG = "C2GS - ProgressFragment";private ITwoGetSkills iTwoGetSkills;private PieChart mChartProgress;private PieChart mChartReturning;private TextView mTextViewTotal;private TextView mTextViewStarted;private TextView mTextViewForStart;private TextView mTextViewCompleted;private ProgressViewModel mProgressViewModel;@Overridepublic void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setHasOptionsMenu(true);}@Overridepublic void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {super.onCreateOptionsMenu(menu, inflater);menu.clear();}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// Inflate the layout for this fragmentreturn inflater.inflate(R.layout.fragment_progress, container, false);}@Overridepublic void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {super.onViewCreated(view, savedInstanceState);mProgressViewModel = new ViewModelProvider(requireActivity()).get(ProgressViewModel.class);iTwoGetSkills = (ITwoGetSkills) requireActivity();iTwoGetSkills.setTitleActionBar(requireActivity().getString(R.string.menu_progress));mChartProgress = (PieChart) requireActivity().findViewById(R.id.fragment_progress_chart_progress);mChartProgress.animateY(1000);mChartProgress.setEntryLabelColor(Color.BLACK);mChartProgress.getLegend().setEnabled(false);mChartProgress.getDescription().setEnabled(false);mChartProgress.setDrawEntryLabels(false);mChartProgress.setUsePercentValues(true);mChartProgress.setEntryLabelTextSize(16f);mChartProgress.setEntryLabelTypeface(Typeface.SANS_SERIF);mChartProgress.setTransparentCircleRadius(30f);mChartProgress.setCenterTextColor(R.color.appBar);mChartProgress.setCenterTextSize(20);mChartReturning = (PieChart) requireActivity().findViewById(R.id.fragment_progress_chart_returning);mChartReturning.animateY(1000);mChartReturning.setEntryLabelColor(Color.BLACK);mChartReturning.getLegend().setEnabled(false);mChartReturning.getDescription().setEnabled(false);mChartReturning.setDrawEntryLabels(false);mChartReturning.setUsePercentValues(true);mChartReturning.setEntryLabelTextSize(16f);mChartReturning.setEntryLabelTypeface(Typeface.SANS_SERIF);mChartReturning.setTransparentCircleRadius(30f);mChartReturning.setCenterTextColor(R.color.appBar);mChartReturning.setCenterTextSize(20);mTextViewTotal = (TextView) requireActivity().findViewById(R.id.fragment_progress_textview_status_total);mTextViewStarted = (TextView) requireActivity().findViewById(R.id.fragment_progress_textview_status_total_started);mTextViewForStart = (TextView) requireActivity().findViewById(R.id.fragment_progress_textview_status_total_for_start);mTextViewCompleted = (TextView) requireActivity().findViewById(R.id.fragment_progress_textview_status_total_completed);Log.d(TAG, "Declarando el Observador");Observer<ProgressViewData> progressUpdateObserver = new Observer<ProgressViewData>() {@Overridepublic void onChanged(ProgressViewData progressViewData) {Log.d(TAG, "Observador - Actualizar el progreso");mChartProgress.invalidate();mChartReturning.invalidate();mTextViewTotal.setText(String.valueOf(progressViewData.getCapsuleTotal()));mTextViewStarted.setText(String.valueOf(progressViewData.getCapsuleStarted()));mTextViewForStart.setText(String.valueOf(progressViewData.getCapsuleForStart()));mTextViewCompleted.setText(String.valueOf(progressViewData.getCapsuleCompleted()));ArrayList<Integer> colors = new ArrayList<>();colors.add(Color.rgb(70,155,200));colors.add(Color.rgb(130,208, 212));ArrayList<PieEntry> dataEntryProgress = new ArrayList<PieEntry>();dataEntryProgress.add(new PieEntry(progressViewData.getPercentCompleted(), requireActivity().getString(R.string.chart_completed)));dataEntryProgress.add(new PieEntry(progressViewData.getPercentIncompleted(), requireActivity().getString(R.string.chart_incompleted)));PieDataSet pieDataSetProgress = new PieDataSet(dataEntryProgress, "Progress");pieDataSetProgress.setColors(colors);pieDataSetProgress.setDrawValues(false);pieDataSetProgress.setSliceSpace(5f);PieData pieDataProgress = new PieData(pieDataSetProgress);pieDataProgress.setValueTextSize(18f);pieDataProgress.setValueTextColor(R.color.colorTextColor);pieDataProgress.setValueTypeface(Typeface.DEFAULT_BOLD);mChartProgress.setData(pieDataProgress);Log.d(TAG, "ChartProgress - CenterText : " + progressViewData.getPercentCompleted() + " %");mChartProgress.setCenterText(progressViewData.getPercentCompleted() + " %");mChartProgress.notifyDataSetChanged();ArrayList<PieEntry> dataEntryReturning = new ArrayList<PieEntry>();dataEntryReturning.add(new PieEntry( progressViewData.getCapsuleWithReturning(), requireActivity().getString(R.string.chart_returning)));dataEntryReturning.add(new PieEntry( progressViewData.getCapsuleWithoutReturning(), requireActivity().getString(R.string.chart_new)));PieDataSet pieDataSetReturning = new PieDataSet(dataEntryReturning, "Returning");pieDataSetReturning.setColors(colors);pieDataSetReturning.setDrawValues(false);pieDataSetReturning.setSliceSpace(5f);PieData pieDataReturning = new PieData(pieDataSetReturning);pieDataReturning.setValueTextSize(18f);pieDataReturning.setValueTextColor(R.color.colorTextColor);pieDataReturning.setValueTypeface(Typeface.DEFAULT_BOLD);Log.d(TAG, "CharReturning - CenterText : " + progressViewData.getCapsuleWithReturning());mChartReturning.setData(pieDataReturning);mChartReturning.setCenterText(String.valueOf(progressViewData.getCapsuleWithReturning()));mChartReturning.notifyDataSetChanged();}};mProgressViewModel.getProgressMutableLiveData().observe(requireActivity(),progressUpdateObserver);loadData();}@Overridepublic void onResume() {super.onResume();Log.d(TAG, "onResume");loadData();}@Overridepublic void onHiddenChanged(boolean hidden) {super.onHiddenChanged(hidden);Log.d(TAG, "onHiddenChanged : " + (hidden ? "true" : "false"));if(!hidden) {loadData();}}private void loadData(){String companyUuid = iTwoGetSkills.getCompanyUuidActive();if(TextUtils.isEmpty(companyUuid)) {List<Company> companies = iTwoGetSkills.getDatabase().getCompanyDao().selectAll();if(companies.size() > 0) {companyUuid = companies.get(0).getUuid();iTwoGetSkills.getPreference().setCompanyUuidActive(companyUuid);iTwoGetSkills.getPreference().save();}}TopicDao topicDao = iTwoGetSkills.getDatabase().getTopicDao();List<Topic> topics = topicDao.selectAllByCompanyUuid(companyUuid);mProgressViewModel.getProgress().setCapsuleTotal(0);mProgressViewModel.getProgress().setCapsuleStarted(0);mProgressViewModel.getProgress().setCapsuleForStart(0);mProgressViewModel.getProgress().setCapsuleCompleted (0);mProgressViewModel.getProgress().setCapsuleWithReturning( 0);mProgressViewModel.getProgress().setCapsuleWithoutReturning( 0);ProgressDao progressDao = iTwoGetSkills.getDatabase().getProgressDao();CapsuleDao capsuleDao = iTwoGetSkills.getDatabase().getCapsuleDao();List<Capsule> capsules = new ArrayList<>();Progress progress;ResultCount resultCount;ResultTotalInt resultTotalInt;int capsuleTotal = 0;int capsuleTotalCompleted = 0;int capsuleTotalWithReturning = 0;int capsuleTotalWithoutReturning = 0;int totalCapsuleStarted = 0;for(Topic topic : topics ){resultCount = capsuleDao.getCountByTopicUuid(topic.getUuid());capsuleTotal = capsuleTotal + resultCount.getCount();resultCount = progressDao.getCountCapsulesCompletedByTopicUuid(topic.getUuid());capsuleTotalCompleted = capsuleTotalCompleted + resultCount.getCount();resultTotalInt = progressDao.getCountCapsulesCompletedWithReturningByTopicUuid(topic.getUuid());capsuleTotalWithReturning = capsuleTotalWithReturning + resultTotalInt.getTotal();resultCount = progressDao.getCountCapsulesCompletedWithoutReturningByTopicUuid(topic.getUuid());capsuleTotalWithoutReturning = capsuleTotalWithoutReturning + resultCount.getCount();mProgressViewModel.getProgress().setCapsuleWithoutReturning(mProgressViewModel.getProgress().getCapsuleWithoutReturning() +resultCount.getCount());//totalSlides += slideDao.getCountByTopicUuid(topic.uuid);//totalSlidesCompleted += progressDao.getCountSlidesCompletedByTopicUuid(topic.uuid);capsules = capsuleDao.selectAllByTopicUuid(topic.getUuid());for(Capsule capsule : capsules) {progress = progressDao.selectByCapsuleUuid(capsule.getUuid());if (progress != null) {if (progress.getCompleted() == 0) {totalCapsuleStarted++;}}}}Log.d(TAG, "capsuleTotal : " + capsuleTotal);Log.d(TAG, "capsuleTotalCompleted : " + capsuleTotalCompleted);Log.d(TAG, "capsuleTotalWithReturning : " + capsuleTotalWithReturning);Log.d(TAG, "capsuleTotalWithoutReturning : " + capsuleTotalWithoutReturning);Log.d(TAG, "totalCapsuleStarted : " + totalCapsuleStarted);mProgressViewModel.getProgress().setCapsuleTotal(capsuleTotal);mProgressViewModel.getProgress().setCapsuleCompleted(capsuleTotalCompleted);mProgressViewModel.getProgress().setCapsuleWithReturning(capsuleTotalWithReturning);mProgressViewModel.getProgress().setCapsuleWithoutReturning(capsuleTotalWithoutReturning);mProgressViewModel.getProgress().setCapsuleStarted(totalCapsuleStarted);mProgressViewModel.getProgress().setCapsuleForStart(mProgressViewModel.getProgress().getCapsuleTotal() - mProgressViewModel.getProgress().getCapsuleCompleted());mProgressViewModel.getProgress().setPercentCompleted(0);mProgressViewModel.getProgress().setPercentIncompleted(100);if( mProgressViewModel.getProgress().getCapsuleTotal() > 0) {mProgressViewModel.getProgress().setPercentCompleted((mProgressViewModel.getProgress().getCapsuleCompleted() * 100) / mProgressViewModel.getProgress().getCapsuleTotal());mProgressViewModel.getProgress().setPercentIncompleted(100 - mProgressViewModel.getProgress().getPercentCompleted());}mProgressViewModel.getProgressMutableLiveData().setValue(mProgressViewModel.getProgress());}}