Skip to content
Snippets Groups Projects
Commit e149df5d authored by ArktikHunter's avatar ArktikHunter
Browse files

WeeklyView working, just need real data

parent 94ac2da8
No related branches found
No related tags found
1 merge request!4View schedule
package com.example.schedulerapp; package com.example.schedulerapp;
import javafx.geometry.HPos; import javafx.geometry.HPos;
import javafx.geometry.Pos;
import javafx.scene.control.Button; import javafx.scene.control.Button;
import javafx.scene.control.Label; import javafx.scene.control.Label;
import javafx.scene.layout.GridPane; import javafx.scene.layout.GridPane;
...@@ -15,7 +14,7 @@ public class DailyView extends GridPane implements ModelSubscriber{ ...@@ -15,7 +14,7 @@ public class DailyView extends GridPane implements ModelSubscriber{
public DailyView() { public DailyView() {
//list of time labels //list of time labels
times = new ArrayList<Label>(); times = new ArrayList<>();
for (int i = 8; i < 24; i++){ for (int i = 8; i < 24; i++){
String j = i + "00"; String j = i + "00";
String k = i + "30"; String k = i + "30";
...@@ -24,20 +23,15 @@ public class DailyView extends GridPane implements ModelSubscriber{ ...@@ -24,20 +23,15 @@ public class DailyView extends GridPane implements ModelSubscriber{
k = "0" + k; k = "0" + k;
} }
Label jLabel = new Label(j); Label jLabel = new Label(j);
jLabel.setPrefHeight(20);
//jLabel.setStyle(" -fx-border-color: black");
Label kLabel = new Label(k); Label kLabel = new Label(k);
kLabel.setPrefHeight(20);
//kLabel.setStyle(" -fx-border-color: black");
times.add(jLabel); times.add(jLabel);
times.add(kLabel); times.add(kLabel);
} }
// add to gridpane - time axis never changes for (Label label : times){
int i = 1; label.setPrefHeight(20);
for (Label time : times){ //label.setStyle(" -fx-border-color: black");
this.add(time, 0, i);
i++;
} }
} }
public void setiModel(iModel imodel) { public void setiModel(iModel imodel) {
...@@ -61,7 +55,6 @@ public class DailyView extends GridPane implements ModelSubscriber{ ...@@ -61,7 +55,6 @@ public class DailyView extends GridPane implements ModelSubscriber{
i++; i++;
} }
int col = 1; //start on the second column int col = 1; //start on the second column
int row; //depends on start time int row; //depends on start time
int length; //depends on end time - start time int length; //depends on end time - start time
......
...@@ -26,7 +26,15 @@ public class Model { ...@@ -26,7 +26,15 @@ public class Model {
public ArrayList<Shift> getWeeklySchedule(){ public ArrayList<Shift> getWeeklySchedule(){
//doesn't need to be sorted //doesn't need to be sorted
return new ArrayList<>(); //return new ArrayList<>();
ArrayList<Shift> test = new ArrayList<>();
test.add(new Shift(123, LocalDateTime.of(2022, 3, 9, 8, 0),
LocalDateTime.of(2022, 3, 9, 14, 0)));
test.add(new Shift(123, LocalDateTime.of(2022, 3, 6, 8, 30),
LocalDateTime.of(2022, 3, 9, 16, 30)));
test.add(new Shift(123, LocalDateTime.of(2022, 3, 10, 14, 0),
LocalDateTime.of(2022, 3, 9, 22, 0)));
return test;
} }
} }
package com.example.schedulerapp; package com.example.schedulerapp;
import javafx.geometry.HPos;
import javafx.geometry.Pos;
import javafx.scene.control.Button;
import javafx.scene.control.Label; import javafx.scene.control.Label;
import javafx.scene.layout.GridPane;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
public class WeeklyView { public class WeeklyView extends GridPane implements ModelSubscriber{
Model model;
ArrayList<Label> times;
ArrayList<Label> days;
public WeeklyView(){
//list of time labels
times = new ArrayList<>();
for (int i = 8; i < 24; i++){
String j = i + "00";
String k = i + "30";
if (i < 10) {
j = "0" + j;
k = "0" + k;
}
Label jLabel = new Label(j);
Label kLabel = new Label(k);
times.add(jLabel);
times.add(kLabel);
}
for (Label label : times){
label.setPrefHeight(20);
//label.setStyle(" -fx-border-color: black");
}
//list of day labels
days = new ArrayList<>();
days.addAll(Arrays.asList(new Label("Sunday"), new Label("Monday"), new Label("Tuesday"),
new Label("Wednesday"), new Label("Thursday"), new Label("Friday"), new Label("Saturday")));
for (Label label : days){
GridPane.setHalignment(label, HPos.CENTER);
label.setAlignment(Pos.CENTER);
label.setPrefWidth(80);
//label.setStyle(" -fx-border-color: black");
}
}
public void setModel(Model newModel) {
this.model = newModel;
//now can draw for first time
draw();
}
//list of day labels @Override
/* public void modelChanged() {
ArrayList<Label> days = new ArrayList<Label>(); draw();
days.addAll(Arrays.asList(new Label("Sunday"), new Label("Monday"), new Label("Tuesday"), }
new Label("Wednesday"), new Label("Thursday"), new Label("Friday"), new Label("Saturday")));
*/ public void draw(){
//clear
this.getChildren().clear();
//add to gridpane - time axis never changes
int i = 1;
for (Label time : times){
this.add(time, 0, i);
i++;
}
//add to gridpane - day axis never changes
i = 1;
for (Label time : days){
this.add(time, i, 0);
i++;
}
int col; //depends on day of week
int row; //depends on start time
int length; //depends on end time - start time
//get updated schedule
ArrayList<Shift> schedule = model.getWeeklySchedule();
for (Shift shift : schedule){
col = (shift.getStart().getDayOfWeek().getValue() % 7) + 1; //need Sunday=7 to be 1
//convert from start time to offset, granularity in 30 min increments
row = (shift.getStart().getHour() - 8 ) * 2 + 1;
if (shift.getStart().getMinute() == 30) row++;
//calculate length
length = (shift.getEnd().getHour() - shift.getStart().getHour()) * 2;
if (shift.getStart().getMinute() == 30) length--;
if (shift.getEnd().getMinute() == 30) length++;
//text formatting
String text;
if (shift.getStart().getHour() < 10) text = "0" + shift.getStart().getHour();
else text = String.valueOf(shift.getStart().getHour());
if (shift.getStart().getMinute() == 0) text += "00";
else text += "30"; //only two options for minutes
text += "\n - \n";
if (shift.getEnd().getHour() < 10) text += "0" + shift.getEnd().getHour();
else text += String.valueOf(shift.getEnd().getHour());
if (shift.getEnd().getMinute() == 0) text += "00";
else text += "30"; //only two options for minutes
Button shiftRep = new Button(text);
shiftRep.setMaxHeight(700); //so it always fills its region
shiftRep.setMaxWidth(100);
GridPane.setFillHeight(shiftRep, true);
GridPane.setFillWidth(shiftRep, true);
//css styling
//todo: different colour for current day
shiftRep.setStyle("-fx-background-color: skyblue");
this.add(shiftRep, col, row, 1, length);
}
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment