21
21
import net .coding .program .common .ListModify ;
22
22
import net .coding .program .common .PinyinComparator ;
23
23
import net .coding .program .common .event .EventRefreshTask ;
24
+ import net .coding .program .common .event .EventRequestTaskCount ;
25
+ import net .coding .program .common .event .EventUpdateTaskCount ;
24
26
import net .coding .program .common .model .AccountInfo ;
25
27
import net .coding .program .common .model .ProjectObject ;
26
28
import net .coding .program .common .model .ProjectTaskCountModel ;
43
45
import org .androidannotations .annotations .OptionsMenu ;
44
46
import org .androidannotations .annotations .ViewById ;
45
47
import org .greenrobot .eventbus .EventBus ;
48
+ import org .greenrobot .eventbus .Subscribe ;
49
+ import org .greenrobot .eventbus .ThreadMode ;
46
50
import org .json .JSONArray ;
47
51
import org .json .JSONException ;
48
52
import org .json .JSONObject ;
@@ -56,6 +60,12 @@ public class ProjectTaskFragment extends TaskFilterFragment {
56
60
57
61
final String HOST_MEMBERS = Global .HOST_API + "/project/%d/members?pageSize=1000" ;
58
62
63
+ private static final String TAG_PROJECT_TASK_COUNT = "TAG_PROJECT_TASK_COUNT" ;
64
+ private static final String TAG_ALL_COUNT = "TAG_ALL_COUNT" ;
65
+ private static final String TAG_WATCH_COUNT = "TAG_WATCH_COUNT" ;
66
+ private static final String TAG_SOME_COUNT = "TAG_SOME_COUNT" ;
67
+ private static final String TAG_SOME_LABEL = "TAG_SOME_LABEL" ;
68
+
59
69
@ FragmentArg
60
70
ProjectObject mProjectObject ;
61
71
@@ -112,6 +122,7 @@ protected void initFilterViews() {
112
122
if (toolBarTitle != null ) {
113
123
toolBarTitle .setOnClickListener (v -> {
114
124
meActionFilter ();
125
+ loadDataCount ();
115
126
});
116
127
toolBarTitle .setBackgroundResource (0 );
117
128
Drawable drawable = getResources ().getDrawable (R .drawable .arrow_drop_down_green );
@@ -121,7 +132,6 @@ protected void initFilterViews() {
121
132
toolBarTitle .setText ("全部任务" );
122
133
}
123
134
124
-
125
135
loadData (0 );
126
136
}
127
137
@@ -151,6 +161,31 @@ private void loadData(int index) {
151
161
}
152
162
}
153
163
164
+ @ Subscribe (threadMode = ThreadMode .MAIN )
165
+ public void onEventRequestTaskCount (EventRequestTaskCount event ) {
166
+ if (getActivity () == null ) return ;
167
+
168
+ loadDataCount ();
169
+ }
170
+
171
+ private void loadDataCount () {
172
+ mTaskProjectCountModel = new TaskProjectCountModel ();
173
+ int index = pager .getCurrentItem ();
174
+ if (index == 0 ) {
175
+ //全部成员
176
+ //「全部任务」数量 - 进行中,已完成的 「我创建的」数量 = create
177
+ getNetwork (String .format (urlProjectTaskCount , mProjectObject .getId ()), TAG_PROJECT_TASK_COUNT );
178
+ getNetwork (String .format (urlALL_Count , mProjectObject .getId ()), TAG_ALL_COUNT );
179
+ getNetwork (String .format (urlALL_WATCH_Count , mProjectObject .getId (), account .id ), TAG_WATCH_COUNT );
180
+
181
+ } else {
182
+ Member members = mMembersAll .get (index );
183
+
184
+ //某个成员
185
+ getNetwork (String .format (urlSome_Count , mProjectObject .getId (), members .user_id ), TAG_SOME_COUNT );
186
+ }
187
+ }
188
+
154
189
private void loadAllLabels () {
155
190
// int cur = tabs.getCurrentPosition();
156
191
int cur = pager .getCurrentItem ();
@@ -296,11 +331,64 @@ public void parseJson(int code, JSONObject respanse, String tag, int pos, Object
296
331
} else {
297
332
showErrorMsg (code , respanse );
298
333
}
334
+ } else if (tag .equals (TAG_PROJECT_TASK_COUNT )) {
335
+ if (code == 0 ) {
336
+ TaskProjectCountModel projectTaskCountModel = JSONUtils .getData (respanse .getString ("data" ), TaskProjectCountModel .class );
337
+ mTaskProjectCountModel .creatorDone = projectTaskCountModel .creatorDone ;
338
+ mTaskProjectCountModel .creatorProcessing = projectTaskCountModel .creatorProcessing ;
339
+ mTaskProjectCountModel .watcherDone = projectTaskCountModel .watcherDone ;
340
+ mTaskProjectCountModel .watcherProcessing = projectTaskCountModel .watcherProcessing ;
341
+ } else {
342
+ showErrorMsg (code , respanse );
343
+ }
344
+ } else if (tag .equals (TAG_ALL_COUNT )) {
345
+ if (code == 0 ) {
346
+ ProjectTaskCountModel projectTaskCountModel = JSONUtils .getData (respanse .getString ("data" ), ProjectTaskCountModel .class );
347
+ mTaskProjectCountModel .owner = projectTaskCountModel .done + projectTaskCountModel .processing ;
348
+ mTaskProjectCountModel .ownerDone = projectTaskCountModel .done ;
349
+ mTaskProjectCountModel .ownerProcessing = projectTaskCountModel .processing ;
350
+ mTaskProjectCountModel .creator = projectTaskCountModel .create ;
351
+ postEventUpdateCount ();
352
+ } else {
353
+ showErrorMsg (code , respanse );
354
+ }
355
+ } else if (tag .equals (TAG_WATCH_COUNT )) {
356
+ if (code == 0 ) {
357
+ mTaskProjectCountModel .watcher = JSONUtils .getJSONLong ("totalRow" , respanse .getString ("data" ));
358
+ postEventUpdateCount ();
359
+ } else {
360
+ showErrorMsg (code , respanse );
361
+ }
362
+ } else if (tag .equals (TAG_SOME_COUNT )) {
363
+ if (code == 0 ) {
364
+ ProjectTaskUserCountModel item = JSONUtils .getData (respanse .getString ("data" ), ProjectTaskUserCountModel .class );
365
+
366
+ mTaskProjectCountModel .owner = item .memberDone + item .memberProcessing ;
367
+ mTaskProjectCountModel .ownerDone = item .memberDone ;
368
+ mTaskProjectCountModel .ownerProcessing = item .memberProcessing ;
369
+
370
+ mTaskProjectCountModel .creatorDone = item .creatorDone ;
371
+ mTaskProjectCountModel .creator = item .creatorDone + item .creatorProcessing ;
372
+ mTaskProjectCountModel .creatorProcessing = item .creatorProcessing ;
373
+
374
+ mTaskProjectCountModel .watcher = item .watcherDone + item .watcherProcessing ;
375
+ mTaskProjectCountModel .watcherDone = item .watcherDone ;
376
+ mTaskProjectCountModel .watcherProcessing = item .watcherProcessing ;
377
+
378
+ postEventUpdateCount ();
379
+ } else {
380
+ showErrorMsg (code , respanse );
381
+ }
299
382
}
383
+
300
384
//设置DrawerLayout的数据
301
385
setDrawerData ();
302
386
}
303
387
388
+ private void postEventUpdateCount () {
389
+ EventBus .getDefault ().post (new EventUpdateTaskCount ());
390
+ }
391
+
304
392
@ OnActivityResult (ListModify .RESULT_EDIT_LIST )
305
393
void onResultEditList (int resultCode , Intent data ) {
306
394
if (resultCode == Activity .RESULT_OK ) {
0 commit comments