package com.basic.security.fragment;
|
|
import android.os.SystemClock;
|
import android.widget.TextView;
|
|
import com.basic.security.count.R;
|
import com.basic.security.activity.MainActivity;
|
import com.basic.security.base.BaseApplication;
|
import com.basic.security.base.BaseFragment;
|
import com.basic.security.manager.ClearBeginManager;
|
import com.basic.security.manager.HomeManager;
|
import com.basic.security.manager.RealTimeMetricsManager;
|
|
import org.androidannotations.annotations.AfterInject;
|
import org.androidannotations.annotations.AfterViews;
|
import org.androidannotations.annotations.Background;
|
import org.androidannotations.annotations.Click;
|
import org.androidannotations.annotations.EFragment;
|
import org.androidannotations.annotations.UiThread;
|
import org.androidannotations.annotations.ViewById;
|
|
import java.text.SimpleDateFormat;
|
import java.util.Date;
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Random;
|
import java.util.concurrent.locks.Lock;
|
import java.util.concurrent.locks.ReentrantLock;
|
|
import com.basic.security.manager.TodayBeginManager;
|
import com.basic.security.widget.SuitLines;
|
import com.basic.security.utils.Unit;
|
|
@EFragment(R.layout.fragment_home)
|
public class HomeFragment extends BaseFragment {
|
|
@ViewById
|
public TextView todayEnters;
|
@ViewById
|
public TextView todayExits;
|
@ViewById
|
public TextView todayRemaining;
|
@ViewById
|
public TextView entersSinceLastClear;
|
@ViewById
|
public TextView exitsSinceLastClear;
|
@ViewById
|
public SuitLines suitLines;
|
|
int peopleCount = 1;
|
int peopleCountAdd = 100;
|
|
@Override
|
public void show() {
|
refresh();
|
}
|
|
@AfterViews
|
public void afterViews() {
|
initDataForLines();
|
}
|
|
|
@Background
|
public void initDataForLinesInterval() {
|
while (true) {
|
if (System.currentTimeMillis() - initDataForLinesLockUpdateTime > 60*1000) {
|
ClearBeginManager.initClearBegin();
|
ClearBeginManager.reset();
|
TodayBeginManager.initTodayBegin();
|
|
((MainActivity) BaseApplication.getApplication().activity).fragment_home.refresh();
|
}
|
SystemClock.sleep(20*1000);
|
}
|
}
|
|
Lock initDataForLinesLock = new ReentrantLock();
|
long initDataForLinesLockUpdateTime = System.currentTimeMillis();
|
|
@Background
|
public void initDataForLines() {
|
initDataForLinesLock.lock();
|
initDataForLinesLockUpdateTime = System.currentTimeMillis();
|
List<Unit> lines = new ArrayList<>();
|
int currentHour = new Date().getHours();
|
Date dateStartHour7 = new Date();
|
dateStartHour7.setHours(7);
|
dateStartHour7.setMinutes(0);
|
dateStartHour7.setSeconds(0);
|
boolean lastAdd = false;
|
for (int i = 7; i <= 19; i++) {
|
dateStartHour7.setHours(i);
|
dateStartHour7.setMinutes(0);
|
for (int j = 0; j <= 60; j=j+5) {
|
if (j == 60) {
|
break;
|
}
|
dateStartHour7.setHours(i);
|
dateStartHour7.setMinutes(j);
|
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
|
String hourStr = sdf.format(dateStartHour7);
|
if (System.currentTimeMillis() < dateStartHour7.getTime()) {
|
if (!lastAdd) {
|
lastAdd = true;
|
peopleCount = peopleCount + peopleCountAdd;
|
Date currentDate = new Date();
|
int remaining = Integer.parseInt(HomeManager.getTodayRemaining(currentDate));
|
lines.add(new Unit(remaining, sdf.format(currentDate)));
|
}
|
lines.add(new Unit(0, hourStr, false));
|
} else {
|
peopleCount = peopleCount + peopleCountAdd;
|
int remaining = Integer.parseInt(HomeManager.getTodayRemaining(dateStartHour7));
|
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
|
lines.add(new Unit(remaining, hourStr));
|
}
|
}
|
}
|
refreshLines(lines);
|
initDataForLinesLock.unlock();
|
}
|
|
@UiThread
|
public void refreshLines(List<Unit> lines) {
|
suitLines.feedWithAnim(lines);
|
}
|
|
@UiThread
|
public void refresh() {
|
initDataForLines();
|
peopleCount = 1;
|
Random rand = new Random();
|
|
peopleCountAdd = rand.nextInt(50);
|
if (peopleCountAdd == 0) {
|
peopleCountAdd = 10;
|
}
|
|
todayEnters.setText(HomeManager.getTodayEnters());
|
todayExits.setText(HomeManager.getTodayExits());
|
todayRemaining.setText(HomeManager.getTodayRemaining());
|
entersSinceLastClear.setText(HomeManager.getEntersSinceLastClear());
|
exitsSinceLastClear.setText(HomeManager.getExitsSinceLastClear());
|
}
|
|
@Click
|
@Background
|
public void clearBegin() {
|
initDataForLines();
|
ClearBeginManager.saveClearBegin(RealTimeMetricsManager.getLastRealTimeMetrics());
|
refresh();
|
}
|
|
}
|