Added new features related to the pause

This commit is contained in:
Robert Vokac 2024-05-18 17:08:39 +02:00
parent 05f727861c
commit 50229d95f2
No known key found for this signature in database
GPG Key ID: C459E1E4B4A986BB
8 changed files with 100 additions and 20 deletions

View File

@ -36,6 +36,8 @@ public class WorkingDay {
private int arrivalMinute;
private int overtimeHour;
private int overtimeMinute;
private int pauseStartHour;
private int pauseStartMinute;
private int workingTimeInMinutes;
private int pauseTimeInMinutes;

View File

@ -22,6 +22,8 @@ public class WorkingDayForStats extends WorkingDay {
private int departureHour;
private int departureMinute;
private int pauseEndHour;
private int pauseEndMinute;
private int dayOfWeek;
private int remainingOvertimeHours;
private int remainingOvertimeMinutes;
@ -207,6 +209,8 @@ public class WorkingDayForStats extends WorkingDay {
wd.getArrivalMinute(),
wd.getOvertimeHour(),
wd.getOvertimeMinute(),
wd.getPauseStartHour(),
wd.getPauseStartMinute(),
wd.getWorkingTimeInMinutes(),
wd.getPauseTimeInMinutes(),
wd.getNote(),
@ -216,10 +220,11 @@ public class WorkingDayForStats extends WorkingDay {
public WorkingDayForStats(String id, int year, int month, int day,
int arrivalHour, int arrivalMinute, int overtimeHour,
int overtimeMinute, int workingTimeInMinutes,
int overtimeMinute, int pauseStartHour, int pauseStartMinute,
int workingTimeInMinutes,
int pauseTimeInMinutes, String note, boolean timeOff, int forgetOvertime) {
super(id, year, month, day, arrivalHour, arrivalMinute, overtimeHour,
overtimeMinute, workingTimeInMinutes, pauseTimeInMinutes, note,
overtimeMinute, pauseStartHour, pauseStartMinute, workingTimeInMinutes, pauseTimeInMinutes, note,
timeOff, forgetOvertime);
this.arrival = this.isThisDayTimeOff() ? null :
new TTime(arrivalHour, arrivalMinute);
@ -234,6 +239,15 @@ public class WorkingDayForStats extends WorkingDay {
this.departureHour = this.isThisDayTimeOff() ? -1 : departure.getHour();
this.departureMinute =
this.isThisDayTimeOff() ? -1 : departure.getMinute();
TTime pauseStart = new TTime(this.getPauseStartHour(), this.getPauseStartMinute());
TTime pauseEnd = null;
if(pause == null) {
pauseEnd = pauseStart.cloneInstance();
} else {
pauseEnd = pauseStart.add(pause);
}
this.pauseEndHour = pauseEnd.getHour();
this.pauseEndMinute = pauseEnd.getMinute();
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month - 1);

View File

@ -36,7 +36,7 @@ public class WorkingDayRepositorySQLiteImpl implements WorkingDayRepositoryApi {
sb
.append("INSERT INTO ")
.append(WorkingDayTable.TABLE_NAME)
.append(" VALUES (?,?,?,?, ?,?,?,?, ?,?,?,?,?)");
.append(" VALUES (?,?,?,?, ?,?,?,?, ?,?,?,?,?, ?,?)");
String sql = sb.toString();
@ -53,6 +53,8 @@ public class WorkingDayRepositorySQLiteImpl implements WorkingDayRepositoryApi {
stmt.setInt(++i, workingDay.getArrivalMinute());
stmt.setInt(++i, workingDay.getOvertimeHour());
stmt.setInt(++i, workingDay.getOvertimeMinute());
stmt.setInt(++i, workingDay.getPauseStartHour());
stmt.setInt(++i, workingDay.getPauseStartMinute());
//
stmt.setInt(++i, workingDay.getWorkingTimeInMinutes());
stmt.setInt(++i, workingDay.getPauseTimeInMinutes());
@ -153,6 +155,8 @@ public class WorkingDayRepositorySQLiteImpl implements WorkingDayRepositoryApi {
.append(WorkingDayTable.ARRIVAL_MINUTE).append("=?, ")
.append(WorkingDayTable.OVERTIME_HOUR).append("=?, ")
.append(WorkingDayTable.OVERTIME_MINUTE).append("=?, ")
.append(WorkingDayTable.PAUSE_START_HOUR).append("=?, ")
.append(WorkingDayTable.PAUSE_START_MINUTE).append("=?, ")
.append(WorkingDayTable.WORKING_TIME_IN_MINUTES).append("=?, ")
.append(WorkingDayTable.PAUSE_TIME_IN_MINUTES).append("=?, ")
.append(WorkingDayTable.NOTE).append("=?, ")
@ -170,6 +174,9 @@ public class WorkingDayRepositorySQLiteImpl implements WorkingDayRepositoryApi {
stmt.setInt(++i, workingDay.getArrivalMinute());
stmt.setInt(++i, workingDay.getOvertimeHour());
stmt.setInt(++i, workingDay.getOvertimeMinute());
stmt.setInt(++i, workingDay.getPauseStartHour());
stmt.setInt(++i, workingDay.getPauseStartMinute());
//
stmt.setInt(++i, workingDay.getWorkingTimeInMinutes());
stmt.setInt(++i, workingDay.getPauseTimeInMinutes());
stmt.setString(++i, workingDay.getNote());
@ -205,6 +212,8 @@ public class WorkingDayRepositorySQLiteImpl implements WorkingDayRepositoryApi {
rs.getInt(WorkingDayTable.ARRIVAL_MINUTE),
rs.getInt(WorkingDayTable.OVERTIME_HOUR),
rs.getInt(WorkingDayTable.OVERTIME_MINUTE),
rs.getInt(WorkingDayTable.PAUSE_START_HOUR),
rs.getInt(WorkingDayTable.PAUSE_START_MINUTE),
rs.getInt(WorkingDayTable.WORKING_TIME_IN_MINUTES),
rs.getInt(WorkingDayTable.PAUSE_TIME_IN_MINUTES),
rs.getString(WorkingDayTable.NOTE),

View File

@ -35,6 +35,8 @@ public class WorkingDayTable {
public static final String ARRIVAL_MINUTE = "ARRIVAL_MINUTE";
public static final String OVERTIME_HOUR = "OVERTIME_HOUR";
public static final String OVERTIME_MINUTE = "OVERTIME_MINUTE";
public static final String PAUSE_START_HOUR = "PAUSE_START_HOUR";
public static final String PAUSE_START_MINUTE = "PAUSE_START_MINUTE";
public static final String WORKING_TIME_IN_MINUTES = "WORKING_TIME_IN_MINUTES";
public static final String PAUSE_TIME_IN_MINUTES = "PAUSE_TIME_IN_MINUTES";
public static final String NOTE = "NOTE";

View File

@ -256,10 +256,10 @@ public class TimeCalcKeyAdapter extends KeyAdapter {
break;
}
if (increase) {
mainWindow.increasePause(changeTTime);
mainWindow.increasePauseLength(changeTTime);
}
if (decrease) {
mainWindow.decreasePause(changeTTime);
mainWindow.decreasePauseLength(changeTTime);
}
break;
}

View File

@ -115,6 +115,7 @@ public class MainWindow extends TWindow {
private final TTextField overtimeTextField;
private final TTextField workingTimeTextField;
private final TTextField pauseTimeTextField;
private final TTextField pauseStartTextField;
private final TTextField noteTextField;
private final TCheckBox timeOffCheckBox = new TCheckBox("Time off");
private final TTextField departureTextField;
@ -155,6 +156,7 @@ public class MainWindow extends TWindow {
this.overtimeTextField = new TTextField(Constants.DEFAULT_OVERTIME, 50, true, valueMustBeTime);
this.workingTimeTextField = new TTextField("08:00", 50, true, valueMustBeTime);
this.pauseTimeTextField = new TTextField("00:30", 50, true, valueMustBeTime);
this.pauseStartTextField = new TTextField("11:00", 50, true, valueMustBeTime);
this.noteTextField = new TTextField("", 60);
this.departureTextField = new TTextField();
@ -569,21 +571,42 @@ public class MainWindow extends TWindow {
workingDecreaseButton.setBounds(workingTimeTextField.getX() + workingTimeTextField.getWidth(), workingTimeTextField.getY() + 15, 15, 15);
//
TLabel pauseTimeInMinutesFieldLabel = new TLabel("Pause:", 40);
pauseTimeInMinutesFieldLabel.setBoundsFromLeft(workingTimeTextField, 15);
TLabel pauseLenghtTimeInMinutesFieldLabel = new TLabel("Pause length:", 80);
pauseLenghtTimeInMinutesFieldLabel.setBoundsFromLeft(workingTimeTextField, 15);
pauseTimeTextField.setBoundsFromLeft(pauseTimeInMinutesFieldLabel);
pauseTimeTextField.setBoundsFromLeft(pauseLenghtTimeInMinutesFieldLabel);
TButton pauseIncreaseButton = new SmallTButton('+');
TButton pauseDecreaseButton = new SmallTButton('-');
pauseIncreaseButton.setBounds(pauseTimeTextField.getX() + pauseTimeTextField.getWidth(), pauseTimeTextField.getY(), 15, 15);
pauseDecreaseButton.setBounds(pauseTimeTextField.getX() + pauseTimeTextField.getWidth(), pauseTimeTextField.getY() + 15, 15, 15);
//
TLabel noteTextFieldLabel = new TLabel("Note:", 40);
noteTextFieldLabel.setBoundsFromLeft(pauseTimeTextField, 10);
TLabel pauseStartTimeLabel = new TLabel("Pause start:", 60);
pauseStartTimeLabel.setBoundsFromLeft(pauseIncreaseButton, 15);
pauseStartTextField.setBoundsFromLeft(pauseStartTimeLabel);
TButton pauseStartIncreaseButton = new SmallTButton('+');
TButton pauseStartDecreaseButton = new SmallTButton('-');
pauseStartIncreaseButton.setBounds(pauseStartTextField.getX() + pauseStartTextField.getWidth(), pauseStartTextField.getY(), 15, 15);
pauseStartDecreaseButton.setBounds(pauseStartTextField.getX() + pauseStartTextField.getWidth(), pauseStartTextField.getY() + 15, 15, 15);
//
TLabel noteTextFieldLabel = new TLabel("Note:", 80);
noteTextFieldLabel.setBoundsFromTop(arrivalTextFieldLabel);
noteTextField.setBoundsFromLeft(noteTextFieldLabel);
timeOffCheckBox.setBoundsFromLeft(noteTextField);
this.saveButton = new TButton("Save", 180);
saveButton.setBounds(
pauseDecreaseButton.getX() - SwingUtils.MARGIN,
timeOffCheckBox.getY(),
noteTextField.getWidth() * 3,
noteTextField.getHeight()
);
//
if(!allowOnlyBasicFeaturesProperty.getValue()) add(arrivalTextFieldLabel);
@ -602,10 +625,14 @@ public class MainWindow extends TWindow {
add(workingDecreaseButton);
if(!allowOnlyBasicFeaturesProperty.getValue()) {
add(pauseTimeInMinutesFieldLabel);
add(pauseLenghtTimeInMinutesFieldLabel);
add(pauseTimeTextField);
add(pauseIncreaseButton);
add(pauseDecreaseButton);
add(pauseStartTimeLabel);
add(pauseStartTextField);
add(pauseStartIncreaseButton);
add(pauseStartDecreaseButton);
}
arrivalIncreaseButton.addActionListener(e -> increaseArrival(TTime.T_TIME_ONE_MINUTE));
@ -614,15 +641,17 @@ public class MainWindow extends TWindow {
overtimeDecreaseButton.addActionListener(e -> decreaseOvertime(TTime.T_TIME_ONE_MINUTE));
workingIncreaseButton.addActionListener(e -> increaseWork(TTime.T_TIME_ONE_MINUTE));
workingDecreaseButton.addActionListener(e -> decreaseWork(TTime.T_TIME_ONE_MINUTE));
pauseIncreaseButton.addActionListener(e -> increasePause(TTime.T_TIME_ONE_MINUTE));
pauseDecreaseButton.addActionListener(e -> decreasePause(TTime.T_TIME_ONE_MINUTE));
pauseIncreaseButton.addActionListener(e -> increasePauseLength(TTime.T_TIME_ONE_MINUTE));
pauseDecreaseButton.addActionListener(e -> decreasePauseLength(TTime.T_TIME_ONE_MINUTE));
pauseStartIncreaseButton.addActionListener(e -> increasePauseStart(TTime.T_TIME_ONE_MINUTE));
pauseStartDecreaseButton.addActionListener(e -> decreasePauseStart(TTime.T_TIME_ONE_MINUTE));
if(!allowOnlyBasicFeaturesProperty.getValue()) add(noteTextFieldLabel);
add(noteTextField);
add(timeOffCheckBox);
//
TLabel departureTextFieldLabel = new TLabel("Departure:", 70);
departureTextFieldLabel.setBoundsFromTop(arrivalTextFieldLabel);
departureTextFieldLabel.setBoundsFromTop(noteTextFieldLabel);
departureTextField.setBoundsFromLeft(departureTextFieldLabel);
departureTextField.setEditable(false);
@ -638,8 +667,6 @@ public class MainWindow extends TWindow {
remainingTextField.setBoundsFromLeft(remainingTextFieldLabel);
remainingTextField.setEditable(false);
this.saveButton = new TButton("Save", 180);
saveButton.setBoundsFromLeft(remainingTextField);
//
if(!allowOnlyBasicFeaturesProperty.getValue()) add(departureTextFieldLabel);
@ -901,6 +928,7 @@ public class MainWindow extends TWindow {
TTime overtime_ = new TTime(overtimeTextField.getText());
TTime work_ = new TTime(workingTimeTextField.getText());
TTime pause_ = new TTime(pauseTimeTextField.getText());
TTime pauseStart = new TTime(pauseStartTextField.getText());
Calendar cal = time.asCalendar();
int year = cal.get(Calendar.YEAR);
@ -922,6 +950,8 @@ public class MainWindow extends TWindow {
workingDay.setOvertimeMinute(overtime_.getMinute() * (overtime_.isNegative() ? (-1) : 1));
workingDay.setWorkingTimeInMinutes(work_.toTotalMilliseconds() / 1000 / 60);
workingDay.setPauseTimeInMinutes(pause_.toTotalMilliseconds() / 1000 / 60);
workingDay.setPauseStartHour(pauseStart.getHour());
workingDay.setPauseStartMinute(pauseStart.getMinute());
workingDay.setNote(noteTextField.getText());
workingDay.setTimeOff(timeOffCheckBox.isSelected());
workingDay.setForgetOvertime(forgetOvertimeProperty.getValue());
@ -941,6 +971,7 @@ public class MainWindow extends TWindow {
//
workingTimeTextField.valueProperty.setValue(TTime.ofMilliseconds(wd.getWorkingTimeInMinutes() * 60 * 1000).toString().substring(0, 5));
pauseTimeTextField.valueProperty.setValue(TTime.ofMilliseconds(wd.getPauseTimeInMinutes() * 60 * 1000).toString().substring(0, 5));
pauseStartTextField.valueProperty.setValue(new TTime(wd.getPauseStartHour(), wd.getPauseStartMinute()).toString().substring(0,5));
noteTextField.valueProperty.setValue(wd.getNote());
timeOffCheckBox.setSelected(wd.isTimeOff());
forgetOvertimeProperty.setValue(wd.getForgetOvertime());
@ -1630,16 +1661,27 @@ public class MainWindow extends TWindow {
workingTimeTextField.valueProperty.setValue(new TTime(this.workingTimeTextField.valueProperty.getValue()).remove(tTime).toString().substring(0, 5));
}
public void increasePause(TTime tTime) {
public void increasePauseLength(TTime tTime) {
pauseTimeTextField.valueProperty.setValue(new TTime(this.pauseTimeTextField.valueProperty.getValue()).add(tTime).toString().substring(0, 5));
}
public void decreasePause(TTime tTime) {
public void decreasePauseLength(TTime tTime) {
pauseTimeTextField.valueProperty.setValue(
new TTime(this.pauseTimeTextField.valueProperty.getValue())
.remove(tTime).toString().substring(0, 5));
}
public void increasePauseStart(TTime tTime) {
pauseStartTextField.valueProperty.setValue(new TTime(this.pauseStartTextField.valueProperty.getValue()).add(tTime).toString().substring(0, 5));
}
public void decreasePauseStart(TTime tTime) {
pauseStartTextField.valueProperty.setValue(
new TTime(this.pauseStartTextField.valueProperty.getValue())
.remove(tTime).toString().substring(0, 5));
}
public void doSaveButtonClick() {
this.saveButton.doClick();
}

View File

@ -341,7 +341,7 @@ public class WorkingDaysWindow extends TWindow {
WorkingDay wd = workingDayRepository.read(year, month, day);
if (wd == null) {
wd = new WorkingDay(WorkingDay.createId(year, month, day),
year, month, day, -1, -1, -1, -1, -1, -1,
year, month, day, -1, -1, -1, -1, -1, -1, -1, -1,
"Fictive day", true,0);
}
workingDaysList.add(wd);
@ -383,6 +383,8 @@ public class WorkingDaysWindow extends TWindow {
list2.add(THREE_DASHES);
list2.add(THREE_DASHES);
list2.add(THREE_DASHES);
list2.add(THREE_DASHES);
list2.add(THREE_DASHES);
} else {
TTime overtime = new TTime(wdfs.getOvertimeHour(),
wdfs.getOvertimeMinute());
@ -401,6 +403,13 @@ public class WorkingDaysWindow extends TWindow {
list2.add(
TTime.ofMinutes(wdfs.getPauseTimeInMinutes()).toString()
.substring(0, 5));
list2.add(
new TTime(wdfs.getPauseStartHour(), wdfs.getPauseStartMinute()).toString()
.substring(0, 5));
list2.add(
new TTime(wdfs.getPauseEndHour(), wdfs.getPauseEndMinute()).toString()
.substring(0, 5));
}
list2.add(wdfs.getNote());
list2.add(wdfs.isTimeOff() ? YES : NO);
@ -430,7 +439,7 @@ public class WorkingDaysWindow extends TWindow {
}
String[] columns =
new String[] {"Day of Week", "Weekend", "Date", "Arrival",
"Departure", "Overtime", "Working time", "Pause time",
"Departure", "Overtime", "Working length", "Pause length", "Pause start", "Pause end",
"Note", "Time off", "Forget overtime", "Total overtime", "Arrival MA7",
"Arrival MA14", "Arrival MA28", "Arrival MA56"};

View File

@ -0,0 +1,2 @@
ALTER TABLE "WORKING_DAY" ADD COLUMN "PAUSE_START_HOUR" NUMBER DEFAULT 11;
ALTER TABLE "WORKING_DAY" ADD COLUMN "PAUSE_START_MINUTE" NUMBER DEFAULT 0;