Added life progress
This commit is contained in:
parent
b6a4e4a5e0
commit
ef5cae98ee
@ -13,7 +13,7 @@ import java.util.Date;
|
||||
* @since 21.03.2024
|
||||
*/
|
||||
public class Progress {
|
||||
private final double[] array = new double[6];
|
||||
private final double[] array = new double[7];
|
||||
@Getter
|
||||
@Setter
|
||||
private int workDaysInMonth;
|
||||
@ -30,7 +30,7 @@ public class Progress {
|
||||
if (type == WidgetType.PRESENTATION) {
|
||||
|
||||
long currentTime = new Date().getTime() / 1000l;
|
||||
long l = currentTime % 30;
|
||||
long l = currentTime % 35;
|
||||
if (l >= 0 && l < 5) {
|
||||
type = WidgetType.MINUTE;
|
||||
}
|
||||
@ -49,6 +49,9 @@ public class Progress {
|
||||
if (l >= 25 && l < 30) {
|
||||
type = WidgetType.YEAR;
|
||||
}
|
||||
if (l >= 30 && l < 35) {
|
||||
type = WidgetType.LIFE;
|
||||
}
|
||||
|
||||
}
|
||||
return type;
|
||||
@ -141,6 +144,36 @@ public class Progress {
|
||||
}
|
||||
}
|
||||
|
||||
public static final int STARTED_WORKING_AGE = 26;
|
||||
public static final int RETIREMENT_AGE = 65;
|
||||
public static double getLifeProgress(Date birthDate, Date currentDate) {
|
||||
if(birthDate == null) {
|
||||
Calendar calTmp = Calendar.getInstance();
|
||||
calTmp.set(Calendar.YEAR, 2000);
|
||||
calTmp.set(Calendar.MONTH, 0);
|
||||
calTmp.set(Calendar.DAY_OF_MONTH, 1);
|
||||
}
|
||||
Calendar birthDateCal = Calendar.getInstance();
|
||||
Calendar currentDateCal = Calendar.getInstance();
|
||||
Calendar birthDateStartedWorkingCal = Calendar.getInstance();
|
||||
birthDateCal.setTime(birthDate);
|
||||
currentDateCal.setTime(currentDate);
|
||||
birthDateStartedWorkingCal.setTime(birthDate);
|
||||
birthDateStartedWorkingCal.add(Calendar.YEAR, STARTED_WORKING_AGE);
|
||||
|
||||
Date birthDateStartedWorking = birthDateStartedWorkingCal.getTime();
|
||||
if(currentDate.compareTo(birthDateStartedWorking) < 0) {
|
||||
return 0d;
|
||||
}
|
||||
Calendar retirementDateCal = Calendar.getInstance();
|
||||
retirementDateCal.setTime(birthDate);
|
||||
retirementDateCal.add(Calendar.YEAR, RETIREMENT_AGE);
|
||||
Date retirementDate = retirementDateCal.getTime();
|
||||
long secondsForWork = retirementDate.getTime() - birthDateStartedWorking.getTime();
|
||||
long alreadyWorked = currentDate.getTime() - birthDateStartedWorking.getTime();
|
||||
return (double)alreadyWorked / (double)secondsForWork;
|
||||
}
|
||||
|
||||
// public static double getYearProgress(Integer year, Integer month,
|
||||
// Integer day, Integer hour, Integer minute, Integer second,
|
||||
// Integer millisecond) {
|
||||
|
@ -7,7 +7,7 @@ import org.nanoboot.utils.timecalc.app.TimeCalcException;
|
||||
* @since 21.03.2024
|
||||
*/
|
||||
public enum WidgetType {
|
||||
MINUTE, HOUR, DAY, WEEK, MONTH, YEAR, PRESENTATION;
|
||||
MINUTE, HOUR, DAY, WEEK, MONTH, YEAR, LIFE, PRESENTATION;
|
||||
public int getIndex() {
|
||||
int i = 0;
|
||||
for(WidgetType wt:WidgetType.values()) {
|
||||
|
@ -240,7 +240,7 @@ public class Widget extends JPanel implements
|
||||
}
|
||||
if(typeProperty.getValue().equals(WidgetType.PRESENTATION.name())) {
|
||||
long currentTime = new Date().getTime() / 1000l;
|
||||
long l = currentTime % 30;
|
||||
long l = currentTime % 35;
|
||||
if (l >= 0 && l < 5) {
|
||||
return getDonePercentForWidgetType(WidgetType.MINUTE);
|
||||
}
|
||||
@ -259,6 +259,9 @@ public class Widget extends JPanel implements
|
||||
if (l >= 25 && l < 30) {
|
||||
return getDonePercentForWidgetType(WidgetType.YEAR);
|
||||
}
|
||||
if (l >= 30 && l < 35) {
|
||||
return getDonePercentForWidgetType(WidgetType.LIFE);
|
||||
}
|
||||
return getDonePercentForWidgetType(WidgetType.DAY);
|
||||
}
|
||||
return getDonePercentForWidgetType(WidgetType.valueOf(typeProperty.getValue().toUpperCase(
|
||||
|
@ -24,6 +24,7 @@ public class WidgetMenu extends JPopupMenu {
|
||||
private final JMenuItem typeWeekMenuItem;
|
||||
private final JMenuItem typeMonthMenuItem;
|
||||
private final JMenuItem typeYearMenuItem;
|
||||
private final JMenuItem typeLifeMenuItem;
|
||||
private final JMenuItem typePresentationMenuItem;
|
||||
private final Widget widget;
|
||||
private WidgetType selectedType;
|
||||
@ -48,6 +49,7 @@ public class WidgetMenu extends JPopupMenu {
|
||||
this.typeWeekMenuItem = new JMenuItem(WidgetType.WEEK.name());
|
||||
this.typeMonthMenuItem = new JMenuItem(WidgetType.MONTH.name());
|
||||
this.typeYearMenuItem = new JMenuItem(WidgetType.YEAR.name());
|
||||
this.typeLifeMenuItem = new JMenuItem(WidgetType.LIFE.name());
|
||||
this.typePresentationMenuItem = new JMenuItem(WidgetType.PRESENTATION.name());
|
||||
typeMenuItem.add(typeMinuteMenuItem);
|
||||
typeMenuItem.add(typeHourMenuItem);
|
||||
@ -55,6 +57,7 @@ public class WidgetMenu extends JPopupMenu {
|
||||
typeMenuItem.add(typeWeekMenuItem);
|
||||
typeMenuItem.add(typeMonthMenuItem);
|
||||
typeMenuItem.add(typeYearMenuItem);
|
||||
typeMenuItem.add(typeLifeMenuItem);
|
||||
typeMenuItem.add(typePresentationMenuItem);
|
||||
|
||||
BiConsumer<JMenuItem, WidgetType> typeActionCreator = (m,w) -> {
|
||||
@ -73,6 +76,7 @@ public class WidgetMenu extends JPopupMenu {
|
||||
typeActionCreator.accept(typeWeekMenuItem, WidgetType.WEEK);
|
||||
typeActionCreator.accept(typeMonthMenuItem, WidgetType.MONTH);
|
||||
typeActionCreator.accept(typeYearMenuItem, WidgetType.YEAR);
|
||||
typeActionCreator.accept(typeLifeMenuItem, WidgetType.LIFE);
|
||||
typeActionCreator.accept(typePresentationMenuItem, WidgetType.PRESENTATION);
|
||||
|
||||
//if(!aClass.getSimpleName().contains("Battery")) {
|
||||
@ -92,6 +96,7 @@ public class WidgetMenu extends JPopupMenu {
|
||||
this.typeWeekMenuItem.setText(WidgetType.WEEK.name());
|
||||
this.typeMonthMenuItem.setText(WidgetType.MONTH.name());
|
||||
this.typeYearMenuItem.setText(WidgetType.YEAR.name());
|
||||
this.typeLifeMenuItem.setText(WidgetType.LIFE.name());
|
||||
this.typePresentationMenuItem.setText(WidgetType.PRESENTATION.name());
|
||||
switch (widgetType) {
|
||||
case MINUTE: typeMinuteMenuItem.setText(typeMinuteMenuItem.getText() + " (*)");break;
|
||||
@ -100,6 +105,7 @@ public class WidgetMenu extends JPopupMenu {
|
||||
case WEEK: typeWeekMenuItem.setText(typeWeekMenuItem.getText() + " (*)");break;
|
||||
case MONTH: typeMonthMenuItem.setText(typeMonthMenuItem.getText() + " (*)");break;
|
||||
case YEAR: typeYearMenuItem.setText(typeYearMenuItem.getText() + " (*)");break;
|
||||
case LIFE: typeLifeMenuItem.setText(typeLifeMenuItem.getText() + " (*)");break;
|
||||
case PRESENTATION: typePresentationMenuItem.setText(typePresentationMenuItem.getText() + " (*)");break;
|
||||
default: throw new TimeCalcException("Unsupported WidgetType: " + widgetType);
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package org.nanoboot.utils.timecalc.swing.progress;
|
||||
|
||||
import org.nanoboot.utils.timecalc.app.GetProperty;
|
||||
import org.nanoboot.utils.timecalc.entity.Progress;
|
||||
import org.nanoboot.utils.timecalc.entity.Visibility;
|
||||
import org.nanoboot.utils.timecalc.entity.WidgetType;
|
||||
import org.nanoboot.utils.timecalc.swing.common.SwingUtils;
|
||||
@ -76,6 +77,7 @@ public class ProgressMoney extends Widget implements GetProperty {
|
||||
case WEEK: value = perDay * 5d * progress.getDonePercent(WidgetType.WEEK);break;
|
||||
case MONTH: value = perMonth * progress.getDonePercent(WidgetType.MONTH);break;
|
||||
case YEAR: value = perMonth * 12 * progress.getDonePercent(WidgetType.YEAR);break;
|
||||
case LIFE: value = perMonth * 12 * (Progress.RETIREMENT_AGE - Progress.STARTED_WORKING_AGE) * progress.getDonePercent(WidgetType.LIFE);break;
|
||||
}
|
||||
|
||||
Visibility visibility
|
||||
|
@ -1334,10 +1334,32 @@ public class MainWindow extends TWindow {
|
||||
double minuteProgress
|
||||
= Progress.getMinuteProgress(secondNow, millisecondNow);
|
||||
double yearProgress = Progress.getYearProgress(clock, monthProgress);
|
||||
String birthDate = timeCalcConfiguration.lifeBirthDateProperty.getValue();
|
||||
Calendar birthDateCal = Calendar.getInstance();
|
||||
if(birthDate != null&& !birthDate.isEmpty()) {
|
||||
String[] array = birthDate.split("-");
|
||||
if(array.length == 3) {
|
||||
try {
|
||||
int year = Integer.valueOf(array[0]);
|
||||
int month = Integer.valueOf(array[1]);
|
||||
int day = Integer.valueOf(array[2]);
|
||||
birthDateCal.set(Calendar.YEAR, year);
|
||||
birthDateCal.set(Calendar.MONTH, month - 1);
|
||||
birthDateCal.set(Calendar.DAY_OF_MONTH, day);
|
||||
} catch (Exception e) {
|
||||
System.err.println("Parsing birth date failed: " + birthDate + " : " + birthDate);
|
||||
birthDateCal = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
double lifeProgress = Progress.getLifeProgress(
|
||||
birthDateCal == null ? null : birthDateCal.getTime(),
|
||||
time.asCalendar().getTime());
|
||||
progress.set(WidgetType.HOUR, hourProgress);
|
||||
progress.set(WidgetType.WEEK, weekProgress);
|
||||
progress.set(WidgetType.MINUTE, minuteProgress);
|
||||
progress.set(WidgetType.YEAR, yearProgress);
|
||||
progress.set(WidgetType.LIFE, lifeProgress);
|
||||
progressSquare.setProgress(progress);
|
||||
progressCircle.setProgress(progress);
|
||||
progressSwing.setProgress(progress);
|
||||
|
Loading…
x
Reference in New Issue
Block a user