From fcf1c412c8d72eb42a5736d12ba33fa191548325 Mon Sep 17 00:00:00 2001 From: niushuai233 Date: Mon, 22 Apr 2024 10:21:58 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20:dog2:=20=E5=88=97=E8=A1=A8=E8=A7=86?= =?UTF-8?q?=E5=9B=BE=E6=90=9E=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../niushuai/dididone/biz/dao/RecordDao.java | 2 + .../ui/statistic/StatisticFragment.java | 137 ++++++++---------- .../ui/statistic/charts/ListFragment.java | 17 ++- .../main/res/layout/fragment_stat_list.xml | 1 + .../main/res/layout/fragment_statistic.xml | 22 +-- app/src/main/res/values/strings.xml | 4 + 6 files changed, 91 insertions(+), 92 deletions(-) diff --git a/app/src/main/java/cc/niushuai/dididone/biz/dao/RecordDao.java b/app/src/main/java/cc/niushuai/dididone/biz/dao/RecordDao.java index 77052b9..fa5fb75 100644 --- a/app/src/main/java/cc/niushuai/dididone/biz/dao/RecordDao.java +++ b/app/src/main/java/cc/niushuai/dididone/biz/dao/RecordDao.java @@ -45,6 +45,8 @@ public interface RecordDao { @Query("select check_date from t_record where deleted = 0 and check_date >= :startTime and check_date <= :endTime order by check_date asc") Flowable> queryPointByDate(long startTime, long endTime); + @Query("select * from t_record where deleted = 0 and check_date >= :startDate and check_date <= :endDate order by check_date desc") + Flowable> queryByCheckDate(long startDate, long endDate); @Query("select * from t_record where deleted = 0 and project_id = :projectId and check_date >= :startDate and check_date <= :endDate order by check_date desc") Flowable> queryByProjectAndDate(Long projectId, long startDate, long endDate); } diff --git a/app/src/main/java/cc/niushuai/dididone/ui/statistic/StatisticFragment.java b/app/src/main/java/cc/niushuai/dididone/ui/statistic/StatisticFragment.java index 237f7d1..d25fb1a 100644 --- a/app/src/main/java/cc/niushuai/dididone/ui/statistic/StatisticFragment.java +++ b/app/src/main/java/cc/niushuai/dididone/ui/statistic/StatisticFragment.java @@ -12,17 +12,20 @@ import androidx.lifecycle.ViewModelProvider; import cc.niushuai.dididone.R; import cc.niushuai.dididone.databinding.FragmentStatisticBinding; import cc.niushuai.dididone.ui.base.BaseFragment; +import cc.niushuai.dididone.ui.statistic.charts.ListFragment; +import cc.niushuai.dididone.ui.statistic.charts.MonthFragment; +import cc.niushuai.dididone.ui.statistic.charts.OtherFragment; +import cc.niushuai.dididone.ui.statistic.charts.WeekFragment; import cc.niushuai.dididone.util.XLog; public class StatisticFragment extends BaseFragment implements View.OnClickListener { private FragmentStatisticBinding binding; - //三个fragment - private MyFragment f1; - private MyFragment f2; - private MyFragment f3; - private MyFragment f4; + private ListFragment listFragment; + private WeekFragment weekFragment; + private MonthFragment monthFragment; + private OtherFragment otherFragment; public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -38,15 +41,15 @@ public class StatisticFragment extends BaseFragment implements View.OnClickListe @Override public void init() { - initFragment1(); + initListFragment(); } @Override public void setListeners() { - binding.btn1.setOnClickListener(this); - binding.btn2.setOnClickListener(this); - binding.btn3.setOnClickListener(this); - binding.btn4.setOnClickListener(this); + binding.statButtonList.setOnClickListener(this); + binding.statButtonWeek.setOnClickListener(this); + binding.statButtonMonth.setOnClickListener(this); + binding.statButtonOther.setOnClickListener(this); } @Override @@ -55,114 +58,96 @@ public class StatisticFragment extends BaseFragment implements View.OnClickListe binding = null; } - //显示第一个fragment - private void initFragment1() { - //开启事务,fragment的控制是由事务来实现的 + /** + * list维度 + */ + private void initListFragment() { FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction(); - //第一种方式(add),初始化fragment并添加到事务中,如果为null就new一个 - if (f1 == null) { - f1 = new MyFragment("消息"); - transaction.add(R.id.main_frame_layout, f1); + if (listFragment == null) { + listFragment = new ListFragment(); + transaction.add(R.id.stat_main_frame_layout, listFragment); } - //隐藏所有fragment hideFragment(transaction); - //显示需要显示的fragment - transaction.show(f1); + transaction.show(listFragment); - //第二种方式(replace),初始化fragment -// if(f1 == null){ -// f1 = new MyFragment("消息"); -// } -// transaction.replace(R.id.main_frame_layout, f1); - - //提交事务 transaction.commit(); } - //显示第二个fragment - private void initFragment2() { + /** + * 周维度 + */ + private void initWeekFragment() { FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction(); - if (f2 == null) { - f2 = new MyFragment("联系人"); - transaction.add(R.id.main_frame_layout, f2); + if (weekFragment == null) { + weekFragment = new WeekFragment(); + transaction.add(R.id.stat_main_frame_layout, weekFragment); } hideFragment(transaction); - transaction.show(f2); - -// if(f2 == null) { -// f2 = new MyFragment("联系人"); -// } -// transaction.replace(R.id.main_frame_layout, f2); + transaction.show(weekFragment); transaction.commit(); } - //显示第三个fragment - private void initFragment3() { + /** + * 月维度视图 + */ + private void initMonthFragment() { FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction(); - if (f3 == null) { - f3 = new MyFragment("动态"); - transaction.add(R.id.main_frame_layout, f3); + if (monthFragment == null) { + monthFragment = new MonthFragment(); + transaction.add(R.id.stat_main_frame_layout, monthFragment); } hideFragment(transaction); - transaction.show(f3); - -// if(f3 == null) { -// f3 = new MyFragment("动态"); -// } -// transaction.replace(R.id.main_frame_layout, f3); + transaction.show(monthFragment); transaction.commit(); } - //显示第三个fragment - private void initFragment4() { + /** + * 其他 + */ + private void initOtherFragment() { FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction(); - if (f4 == null) { - f4 = new MyFragment("其他"); - transaction.add(R.id.main_frame_layout, f4); + if (otherFragment == null) { + otherFragment = new OtherFragment(); + transaction.add(R.id.stat_main_frame_layout, otherFragment); } hideFragment(transaction); - transaction.show(f4); - -// if(f3 == null) { -// f3 = new MyFragment("动态"); -// } -// transaction.replace(R.id.main_frame_layout, f3); + transaction.show(otherFragment); transaction.commit(); } //隐藏所有的fragment private void hideFragment(FragmentTransaction transaction) { - if (f1 != null) { - transaction.hide(f1); + if (listFragment != null) { + transaction.hide(listFragment); } - if (f2 != null) { - transaction.hide(f2); + if (weekFragment != null) { + transaction.hide(weekFragment); } - if (f3 != null) { - transaction.hide(f3); + if (monthFragment != null) { + transaction.hide(monthFragment); } - if (f4 != null) { - transaction.hide(f4); + if (otherFragment != null) { + transaction.hide(otherFragment); } } @Override public void onClick(View v) { - if (v == binding.btn1) { - initFragment1(); - } else if (v == binding.btn2) { - initFragment2(); - } else if (v == binding.btn3) { - initFragment3(); - } else if (v == binding.btn4) { - initFragment4(); + if (v == binding.statButtonList) { + initListFragment(); + } else if (v == binding.statButtonWeek) { + initWeekFragment(); + } else if (v == binding.statButtonMonth) { + initMonthFragment(); + } else if (v == binding.statButtonOther) { + initOtherFragment(); } } } \ No newline at end of file diff --git a/app/src/main/java/cc/niushuai/dididone/ui/statistic/charts/ListFragment.java b/app/src/main/java/cc/niushuai/dididone/ui/statistic/charts/ListFragment.java index e70e16e..212bd26 100644 --- a/app/src/main/java/cc/niushuai/dididone/ui/statistic/charts/ListFragment.java +++ b/app/src/main/java/cc/niushuai/dididone/ui/statistic/charts/ListFragment.java @@ -66,6 +66,7 @@ public class ListFragment extends BaseChartFragment { private void initSpinner(Spinner spinner) { List items = BizGlobal.getAvailableProjectList().stream().map(item -> item.getName()).collect(Collectors.toList()); + items.add(0, "选择打卡项"); spinner.setAdapter(new ArrayAdapter<>(getContext(), androidx.appcompat.R.layout.support_simple_spinner_dropdown_item, items)); spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @@ -83,11 +84,17 @@ public class ListFragment extends BaseChartFragment { } private void onConditionChange(int position, CharSequence startDate, CharSequence endDate) { - Flowable> listFlowable = DBManager.INSTANCE.recordDao().queryByProjectAndDate( - BizGlobal.getAvailableProjectList().get(position).getId(), - dateStr2mills(startDate.toString()), - dateStr2mills(endDate.toString())); - + position--; + Flowable> listFlowable; + if (position < 0) { + // position小于0 表示选中第一个 即未选择打卡项 查询所有打卡项 + listFlowable = DBManager.INSTANCE.recordDao().queryByCheckDate(dateStr2mills(startDate.toString()), dateStr2mills(endDate.toString())); + } else { + listFlowable = DBManager.INSTANCE.recordDao().queryByProjectAndDate( + BizGlobal.getAvailableProjectList().get(position).getId(), + dateStr2mills(startDate.toString()), + dateStr2mills(endDate.toString())); + } listFlowable.subscribeOn(Schedulers.io()).subscribe(recordList -> { diff --git a/app/src/main/res/layout/fragment_stat_list.xml b/app/src/main/res/layout/fragment_stat_list.xml index ca96a1f..18af5f2 100644 --- a/app/src/main/res/layout/fragment_stat_list.xml +++ b/app/src/main/res/layout/fragment_stat_list.xml @@ -14,6 +14,7 @@ android:layout_width="0dp" android:layout_height="match_parent" android:layout_marginLeft="20dp" + android:autofillHints="name" android:layout_weight="0.3" /> + android:layout_height="50dp">