Compare commits

..

13 Commits

Author SHA1 Message Date
07ee10929a updated branch 2021-11-29 07:52:04 +01:00
1a8bbbfce7 Added delete event functionality 2021-11-28 18:22:36 +01:00
e8c7fb8a08 Send a POST request to create an event in DB 2021-11-28 17:29:34 +01:00
0043e7f1bd Added Post request;
Get events from DB;
Insert events into ui;
2021-11-28 15:12:43 +01:00
6d9e7c5929 Created controller for CreateEventView 2021-11-28 08:13:18 +01:00
ccaf6dbe62 Fixed JavaFX version waring again ;D 2021-11-27 22:40:05 +01:00
5a4a1e70e8 merged 0300 and 0120 2021-11-26 13:30:51 +01:00
dc1b1643d8 Merge branch '0300-Kalender' into merge
# Conflicts:
#	hellofx/app/build/resources/main/client/style.css
#	hellofx/app/src/main/resources/client/style.css
2021-11-26 13:25:05 +01:00
6a40ebfcfc improved the main view and the main-view.css 2021-11-26 13:01:08 +01:00
842a83af3b changed the main view and the style.css 2021-11-25 14:47:25 +01:00
18d5b528af added class vbox-main and main- pannel in the css 2021-11-22 13:37:46 +01:00
af3ffe807c removed buildfile 2021-11-17 21:32:04 +01:00
7b12642a66 Updated .gitignore
ignore all ".gradle" and "build" folder
2021-11-17 21:27:01 +01:00
14 changed files with 579 additions and 203 deletions

6
.gitignore vendored
View File

@ -70,7 +70,5 @@ crashlytics-build.properties
# by github https://github.com/github/gitignore/blob/master/Java.gitignore # by github https://github.com/github/gitignore/blob/master/Java.gitignore
hellofx/.gradle/ .gradle/
hellofx/app/build/ build/
hellofx/data/build/
hellofx/.gradle/buildOutputCleanup/

View File

@ -1,18 +0,0 @@
GridPane{
-fx-background-color: #282C34;
-fx-margin: 10px;
}
Label{
-fx-text-fill: white;
}
.main-btn{
-fx-background-color: #ffffff;
-fx-text-fill: white;
-fx-background-radius: 5em;
-fx-min-width: 40px;
-fx-min-height: 40px;
-fx-max-width: 40px;
-fx-max-height: 40px;
}

View File

@ -0,0 +1,68 @@
package client;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.Node;
import javafx.scene.control.CheckBox;
import javafx.scene.control.ComboBox;
import javafx.scene.control.DatePicker;
import javafx.scene.control.TextField;
import javafx.stage.Stage;
import res.DataController;
import res.Event;
public class CreateEventController {
@FXML
public DatePicker datePickerDate;
@FXML
public TextField textName;
@FXML
public TextField textStart;
@FXML
public TextField textEnd;
@FXML
public ComboBox<String> ComboBoxTyp;
@FXML
public ComboBox<String> ComboBoxPriotity;
@FXML
public CheckBox checkBoxIsFullDay;
@FXML
public CheckBox checkBoxIsPrivate;
public CreateEventController(){}
@FXML
public void initialize(){}
@FXML
protected void createBtnClick(ActionEvent actionEvent){
Event event = new Event(
textName.getText(),
ComboBoxPriotity.getSelectionModel().getSelectedIndex(),
checkBoxIsFullDay.isSelected(),
checkBoxIsPrivate.isSelected(),
textStart.getText(),
textEnd.getText(),
datePickerDate.getValue().atStartOfDay(),
1
);
System.out.println(event.getAsUrlParam());
DataController dataController = new DataController();
dataController.createEvent(event);
Stage stage = (Stage) ((Node) actionEvent.getSource()).getScene().getWindow();
stage.close();
}
@FXML
protected void abortBtnClick(ActionEvent event){
Stage stage = (Stage) ((Node) event.getSource()).getScene().getWindow();
stage.close();
}
}

View File

@ -2,6 +2,7 @@ package client;
import javafx.application.Application; import javafx.application.Application;
import javafx.fxml.FXMLLoader; import javafx.fxml.FXMLLoader;
import javafx.scene.Node;
import javafx.scene.Scene; import javafx.scene.Scene;
import javafx.stage.Stage; import javafx.stage.Stage;
@ -12,8 +13,9 @@ public class MainApplication extends Application {
@Override @Override
public void start(Stage stage) throws IOException { public void start(Stage stage) throws IOException {
FXMLLoader fxmlLoader = new FXMLLoader(MainApplication.class.getResource("main-view.fxml")); FXMLLoader fxmlLoader = new FXMLLoader(MainApplication.class.getResource("main-view.fxml"));
Scene scene = new Scene(fxmlLoader.load(), 1200, 700); Scene scene = new Scene(fxmlLoader.load(), 1200, 700);
scene.getStylesheets().add(Objects.requireNonNull(MainApplication.class.getResource("style.css")).toExternalForm()); scene.getStylesheets().add(Objects.requireNonNull(MainApplication.class.getResource("main-view.css")).toExternalForm());
stage.setTitle("Hello!"); stage.setTitle("Hello!");
stage.setScene(scene); stage.setScene(scene);
stage.show(); stage.show();

View File

@ -1,42 +1,69 @@
package client; package client;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader; import javafx.fxml.FXMLLoader;
import javafx.scene.Node; import javafx.geometry.Pos;
import javafx.scene.Scene; import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label; import javafx.scene.control.Label;
import javafx.scene.control.ScrollPane;
import javafx.scene.layout.GridPane; import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox; import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.stage.Modality; import javafx.stage.Modality;
import javafx.stage.Stage; import javafx.stage.Stage;
import javafx.stage.StageStyle;
import res.Event;
import res.DataController; import res.DataController;
import res.Event;
import javafx.event.ActionEvent;
import java.io.IOException; import java.io.IOException;
import java.time.Duration;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Objects; import java.util.Objects;
public class MainController { public class MainController {
@FXML @FXML
private GridPane calendarGrid; private GridPane calendarGrid;
@FXML @FXML
private VBox vBoxMon; private Label LabelMonth;
@FXML
private VBox vBoxTue;
@FXML
private VBox vBoxWen;
@FXML
private VBox vBoxThu;
@FXML
private VBox vBoxFri;
@FXML
private VBox vBoxSat;
@FXML
private VBox vBoxSun;
private final String[] dayNames = {"Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag"};
private final Label[] dayLabel = new Label[7];
private final VBox[] dayVBoxes = new VBox[7];
private int weekOffset;
private LocalDateTime weekStartDateTime;
public MainController() {
weekOffset = 0;
}
@FXML
public void initialize(){
createWeek();
setDates();
updateEvents();
}
private void updateEvents() {
for(VBox vBox : dayVBoxes){
vBox.getChildren().clear();
}
DataController dataController = new DataController();
ArrayList<Event> eventList = dataController.getAllVisibleEvents();
for(Event event : eventList){
addEvent(event);
}
}
@FXML @FXML
protected void onAddBtnClick(){ protected void onAddBtnClick(){
@ -49,34 +76,110 @@ public class MainController {
stage.setScene(scene); stage.setScene(scene);
stage.initModality(Modality.APPLICATION_MODAL); stage.initModality(Modality.APPLICATION_MODAL);
stage.setResizable(false); stage.setResizable(false);
stage.initStyle(StageStyle.UNDECORATED); //stage.initStyle(StageStyle.UNDECORATED);
stage.showAndWait(); stage.showAndWait();
} }
catch (IOException e){ catch (IOException e){
e.printStackTrace(); e.printStackTrace();
} }
updateEvents();
}
private void createWeek(){
DataController dataController = new DataController(); for (int i = 0; i < 7; i++) {
Event[] eventList = dataController.getAllEvents();
for(Event event : eventList){
Label label = new Label(); Label label = new Label();
label.setText(event.toString()); label.setText(dayNames[i]);
label.setTextFill(Color.WHITE); label.setMaxHeight(Double.MAX_VALUE);
vBoxWen.getChildren().add(label); label.setMaxWidth(Double.MAX_VALUE);
label.getStyleClass().add("labelDays");
dayLabel[i] = label;
calendarGrid.add(label, i, 0);
ScrollPane scrollPane = new ScrollPane();
VBox vBox = new VBox();
vBox.getStyleClass().add("vBoxDays");
vBox.setSpacing(10);
dayVBoxes[i] = vBox;
scrollPane.setContent(vBox);
scrollPane.setFitToWidth(true);
scrollPane.setFitToHeight(true);
scrollPane.setHbarPolicy(ScrollPane.ScrollBarPolicy.AS_NEEDED);
scrollPane.getStyleClass().add("scrollDays");
calendarGrid.add(scrollPane, i, 1);
} }
} }
@FXML private void addEvent(Event event){
protected void createBtnClick(ActionEvent event){ VBox vBox = new VBox();
Stage stage = (Stage) ((Node) event.getSource()).getScene().getWindow(); vBox.getStyleClass().add("event");
stage.close(); vBox.setSpacing(5);
HBox btnHBox = new HBox();
btnHBox.setAlignment(Pos.BOTTOM_RIGHT);
Button deleteBtn = new Button();
deleteBtn.setText(" X ");
deleteBtn.setOnAction(e -> {
DataController dataController = new DataController();
dataController.deleteEvent(event.getId());
updateEvents();
});
Button editBtn = new Button();
editBtn.setText("edit");
btnHBox.getChildren().add(editBtn);
btnHBox.getChildren().add(deleteBtn);
vBox.getChildren().add(btnHBox);
Label nameLabel = new Label(event.getName());
vBox.getChildren().add(nameLabel);
Label timeLabel = new Label(event.getStart() + "-" + event.getEnd());
vBox.getChildren().add(timeLabel);
Label typeLabel = new Label("Wer: " + event.getOwnerName());
vBox.getChildren().add(typeLabel);
/*
Ä, ä \u00c4, \u00e4
Ö, ö \u00d6, \u00f6
Ü, ü \u00dc, \u00fc
ß \u00df
*/
Label prioLabel = new Label("Priorit\u00e4t: " + event.getPriority());
vBox.getChildren().add(prioLabel);
if(event.isFullDay()){
Label fullDayLabel = new Label("Dieser Termin bockiert den ganzen Tag!");
vBox.getChildren().add(fullDayLabel);
} }
@FXML
protected void abortBtnClick(ActionEvent event){ LocalDateTime eventDate = event.getDate();
Stage stage = (Stage) ((Node) event.getSource()).getScene().getWindow();
stage.close(); int day = (int)Duration.between(weekStartDateTime.toLocalDate().atStartOfDay(), eventDate.toLocalDate().atStartOfDay()).toDays();
if(day >= 0 && day < 7){
dayVBoxes[day].getChildren().add(vBox);
}
}
private void setDates(){
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("LLLL yyyy");
DateTimeFormatter dayFormatter = DateTimeFormatter.ofPattern("E dd.MM");
DateTimeFormatter dayOfWeekFormatter = DateTimeFormatter.ofPattern("e");
LocalDateTime now = LocalDateTime.now();
int dayOfWeek = Integer.parseInt(dayOfWeekFormatter.format(now));
weekStartDateTime = now.minusDays(weekOffset * 7L + dayOfWeek - 1);
for (int i = 0; i < 7; i++) {
dayLabel[i].setText(dayFormatter.format(weekStartDateTime.plusDays(i)));
}
LabelMonth.setText(dateFormatter.format(weekStartDateTime));
} }
} }

View File

@ -5,7 +5,7 @@ GridPane{
-fx-font-family: Segoe UI; -fx-font-family: Segoe UI;
-fx-border-insets: 1; -fx-border-insets: 1;
-fx-border-color: white; -fx-border-color: #B0B0B0;
-fx-border-style: solid; -fx-border-style: solid;
-fx-border-width: 2; -fx-border-width: 2;
-fx-effect: dropshadow(three-pass-box, rgba(100, 100, 100, 1), 24, 0.5, 0, 0); -fx-effect: dropshadow(three-pass-box, rgba(100, 100, 100, 1), 24, 0.5, 0, 0);

View File

@ -3,8 +3,9 @@
<?import javafx.scene.control.*?> <?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?> <?import javafx.scene.layout.*?>
<?import com.sun.javafx.scene.control.DatePickerContent?> <?import javafx.collections.FXCollections?>
<GridPane xmlns="http://javafx.com/javafx/11.0.2" xmlns:fx="http://javafx.com/fxml/1" fx:controller="client.MainController"> <?import java.lang.String?>
<GridPane xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml/1" fx:controller="client.CreateEventController">
<columnConstraints> <columnConstraints>
<ColumnConstraints/> <ColumnConstraints/>
@ -20,25 +21,38 @@
<RowConstraints vgrow="ALWAYS" /> <RowConstraints vgrow="ALWAYS" />
<RowConstraints vgrow="ALWAYS" /> <RowConstraints vgrow="ALWAYS" />
<RowConstraints vgrow="ALWAYS" /> <RowConstraints vgrow="ALWAYS" />
<RowConstraints vgrow="ALWAYS" />
</rowConstraints> </rowConstraints>
<Label styleClass="mainLabel">Termin anlegen</Label> <Label styleClass="mainLabel">Termin anlegen</Label>
<Label styleClass="inputLabel" GridPane.rowIndex="1">Datum:</Label> <Label styleClass="inputLabel" GridPane.rowIndex="1">Datum:</Label>
<Label styleClass="inputLabel" GridPane.rowIndex="2">Titel:</Label> <Label styleClass="inputLabel" GridPane.rowIndex="2">Titel:</Label>
<Label styleClass="inputLabel" GridPane.rowIndex="3">Zeit:</Label> <Label styleClass="inputLabel" GridPane.rowIndex="3">Von:</Label>
<Label styleClass="inputLabel" GridPane.rowIndex="4">Typ:</Label> <Label styleClass="inputLabel" GridPane.rowIndex="4">Bis:</Label>
<Label styleClass="inputLabel" GridPane.rowIndex="5">Priorität:</Label> <Label styleClass="inputLabel" GridPane.rowIndex="5">Typ:</Label>
<Label styleClass="inputLabel" GridPane.rowIndex="6">Ganztägig:</Label> <Label styleClass="inputLabel" GridPane.rowIndex="6">Priorität:</Label>
<Label styleClass="inputLabel" GridPane.rowIndex="7">Ganztägig:</Label>
<Label styleClass="inputLabel" GridPane.rowIndex="8">Privat:</Label>
<DatePicker GridPane.columnIndex="1" GridPane.rowIndex="1" maxWidth="400" minWidth="400"/> <DatePicker fx:id="datePickerDate" GridPane.columnIndex="1" GridPane.rowIndex="1" maxWidth="400" minWidth="400"/>
<TextField GridPane.columnIndex="1" GridPane.rowIndex="2" maxWidth="400" minWidth="400"/> <TextField fx:id="textName" GridPane.columnIndex="1" GridPane.rowIndex="2" maxWidth="400" minWidth="400"/>
<DatePicker GridPane.columnIndex="1" GridPane.rowIndex="3" maxWidth="400" minWidth="400"/> <TextField fx:id="textStart" GridPane.columnIndex="1" GridPane.rowIndex="3" maxWidth="400" minWidth="400"/>
<ComboBox GridPane.columnIndex="1" GridPane.rowIndex="4" maxWidth="400" minWidth="400"/> <TextField fx:id="textEnd" GridPane.columnIndex="1" GridPane.rowIndex="4" maxWidth="400" minWidth="400"/>
<ComboBox GridPane.columnIndex="1" GridPane.rowIndex="5" maxWidth="200" minWidth="200"/> <ComboBox fx:id="ComboBoxTyp" GridPane.columnIndex="1" GridPane.rowIndex="5" maxWidth="400" minWidth="400"/>
<CheckBox GridPane.columnIndex="1" GridPane.rowIndex="6"/> <ComboBox fx:id="ComboBoxPriotity" GridPane.columnIndex="1" GridPane.rowIndex="6" maxWidth="200" minWidth="200">
<items>
<FXCollections fx:factory="observableArrayList">
<String fx:value="gering" />
<String fx:value="mittel" />
<String fx:value="hoch" />
</FXCollections>
</items>
</ComboBox>
<CheckBox fx:id="checkBoxIsFullDay" GridPane.columnIndex="1" GridPane.rowIndex="7"/>
<CheckBox fx:id="checkBoxIsPrivate" GridPane.columnIndex="1" GridPane.rowIndex="8"/>
<HBox GridPane.columnIndex="1" GridPane.rowIndex="7" GridPane.columnSpan="2" alignment="CENTER_RIGHT"> <HBox GridPane.columnIndex="1" GridPane.rowIndex="9" GridPane.columnSpan="2" alignment="CENTER_RIGHT">
<Button onAction="#abortBtnClick" maxWidth="150" minWidth="150" >Abbrechen</Button> <Button onAction="#abortBtnClick" maxWidth="150" minWidth="150" >Abbrechen</Button>
<Button styleClass="mainButton" onAction="#createBtnClick" maxWidth="150" minWidth="150">Anlegen</Button> <Button styleClass="mainButton" onAction="#createBtnClick" maxWidth="150" minWidth="150">Anlegen</Button>
</HBox> </HBox>

View File

@ -0,0 +1,74 @@
* {
-fx-base-background-color: #2B2D42;
-fx-base1-background-color: #525E74;
-fx-main-border-color: #B0B0B0;
-fx-main-text-color: #ffffff;
}
GridPane{
-fx-background-color: -fx-base-background-color;
}
.main-panel{
-fx-background-color: #282C34;
}
.vbox-main{
-fx-background-color: #333333;
-fx-alignment: top-center;
}
.gridCalendar Line{
-fx-stroke: -fx-main-border-color;
}
.gridCalender{
-fx-background-color: -fx-base-background-color;
-fx-min-height: 80px;
-fx-max-height: 80px;
}
.labelMonth{
-fx-padding: 0 0 0 20;
-fx-background-color: #77859E;
-fx-font-size: 35px;
-fx-font-weight: bold;
}
.scrollDays{
-fx-background-color: -fx-base-background-color;
-fx-border-color: -fx-main-border-color;
}
.vBoxDays{
-fx-background-color: -fx-base-background-color;
}
.labelDays{
-fx-alignment: center;
-fx-background-color: -fx-base1-background-color;
-fx-font-size: 25px;
-fx-border-color: -fx-main-border-color;
}
Label{
-fx-text-fill: -fx-main-text-color;
}
.event{
-fx-background-color: -fx-base1-background-color;
}
.main-btn{
-fx-background-color: #ffffff;
-fx-text-fill: -fx-main-text-color;
-fx-background-radius: 5em;
-fx-min-width: 40px;
-fx-min-height: 40px;
-fx-max-width: 40px;
-fx-max-height: 40px;
}

View File

@ -5,7 +5,7 @@
<?import javafx.scene.image.*?> <?import javafx.scene.image.*?>
<?import javafx.scene.layout.*?> <?import javafx.scene.layout.*?>
<GridPane gridLinesVisible="true" style="-fx-background-color: #424242;" xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml/1" fx:controller="client.MainController"> <GridPane style="-fx-background-color: #424242;" xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml/1" fx:controller="client.MainController">
<columnConstraints> <columnConstraints>
<ColumnConstraints hgrow="NEVER" maxWidth="60.0" minWidth="60.0" /> <ColumnConstraints hgrow="NEVER" maxWidth="60.0" minWidth="60.0" />
<ColumnConstraints hgrow="ALWAYS" /> <ColumnConstraints hgrow="ALWAYS" />
@ -13,7 +13,7 @@
<rowConstraints> <rowConstraints>
<RowConstraints vgrow="SOMETIMES" /> <RowConstraints vgrow="SOMETIMES" />
</rowConstraints> </rowConstraints>
<VBox alignment="TOP_CENTER" prefHeight="200.0" prefWidth="100.0" spacing="5.0" style="-fx-background-color: #333333;"> <VBox alignment="TOP_CENTER" prefHeight="200.0" prefWidth="100.0" spacing="5.0" style="-fx-background-color: #525E74;">
<ImageView fitHeight="50.0" fitWidth="50.0" pickOnBounds="true" preserveRatio="true"> <ImageView fitHeight="50.0" fitWidth="50.0" pickOnBounds="true" preserveRatio="true">
</ImageView> </ImageView>
@ -27,9 +27,25 @@
ADD ADD
</Button> </Button>
</VBox> </VBox>
<GridPane fx:id="calendarGrid" gridLinesVisible="true" GridPane.columnIndex="1"> <GridPane prefHeight="200.0" prefWidth="222.0" GridPane.columnIndex="1" GridPane.rowIndex="0">
<columnConstraints> <columnConstraints>
<ColumnConstraints hgrow="ALWAYS" percentWidth="14.2857142857" /> <ColumnConstraints hgrow="ALWAYS" />
<ColumnConstraints />
</columnConstraints>
<rowConstraints>
<RowConstraints />
<RowConstraints vgrow="ALWAYS" />
</rowConstraints>
<Label fx:id="LabelMonth" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" styleClass="labelMonth" textFill="WHITE" GridPane.columnIndex="0" GridPane.rowIndex="0">
Monat
<padding>
<Insets left="5" />
</padding>
</Label>
<GridPane fx:id="calendarGrid" gridLinesVisible="true" styleClass="gridCalendar" GridPane.columnIndex="0" GridPane.rowIndex="1">
<columnConstraints>
<ColumnConstraints hgrow="ALWAYS" maxWidth="14.2857142857" minWidth="14.2857142857" percentWidth="14.2857142857" />
<ColumnConstraints hgrow="ALWAYS" percentWidth="14.2857142857" /> <ColumnConstraints hgrow="ALWAYS" percentWidth="14.2857142857" />
<ColumnConstraints hgrow="ALWAYS" percentWidth="14.2857142857" /> <ColumnConstraints hgrow="ALWAYS" percentWidth="14.2857142857" />
<ColumnConstraints hgrow="ALWAYS" percentWidth="14.2857142857" /> <ColumnConstraints hgrow="ALWAYS" percentWidth="14.2857142857" />
@ -38,80 +54,10 @@
<ColumnConstraints hgrow="ALWAYS" percentWidth="14.2857142857" /> <ColumnConstraints hgrow="ALWAYS" percentWidth="14.2857142857" />
</columnConstraints> </columnConstraints>
<rowConstraints> <rowConstraints>
<RowConstraints maxHeight="25.0" minHeight="25.0" vgrow="NEVER" /> <RowConstraints maxHeight="55.0" minHeight="25.0" vgrow="NEVER" />
<RowConstraints maxHeight="25.0" minHeight="25.0" vgrow="NEVER" /> <RowConstraints percentHeight="-Infinity" vgrow="ALWAYS" />
<RowConstraints vgrow="ALWAYS" />
</rowConstraints> </rowConstraints>
<Label textFill="WHITE">
Monat
<padding>
<Insets left="5" />
</padding>
</Label>
<Label textFill="WHITE" GridPane.columnIndex="0" GridPane.rowIndex="1"> </GridPane>
Mo
<padding>
<Insets left="5" />
</padding>
</Label>
<Label textFill="WHITE" GridPane.columnIndex="1" GridPane.rowIndex="1">
Di
<padding>
<Insets left="5" />
</padding>
</Label>
<Label textFill="WHITE" GridPane.columnIndex="2" GridPane.rowIndex="1">
Mi
<padding>
<Insets left="5" />
</padding>
</Label>
<Label textFill="WHITE" GridPane.columnIndex="3" GridPane.rowIndex="1">
Do
<padding>
<Insets left="5" />
</padding>
</Label>
<Label textFill="WHITE" GridPane.columnIndex="4" GridPane.rowIndex="1">
Fr
<padding>
<Insets left="5" />
</padding>
</Label>
<Label textFill="WHITE" GridPane.columnIndex="5" GridPane.rowIndex="1">
Sa
<padding>
<Insets left="5" />
</padding>
</Label>
<Label textFill="WHITE" GridPane.columnIndex="6" GridPane.rowIndex="1">
So
<padding>
<Insets left="5" />
</padding>
</Label>
<VBox fx:id="vBoxMon" spacing="5.0" GridPane.columnIndex="0" GridPane.rowIndex="2">
</VBox>
<VBox fx:id="vBoxTue" spacing="5.0" GridPane.columnIndex="1" GridPane.rowIndex="2">
</VBox>
<VBox fx:id="vBoxWen" spacing="5.0" GridPane.columnIndex="2" GridPane.rowIndex="2">
</VBox>
<VBox fx:id="vBoxThu" spacing="5.0" GridPane.columnIndex="3" GridPane.rowIndex="2">
</VBox>
<VBox fx:id="vBoxFri" spacing="5.0" GridPane.columnIndex="4" GridPane.rowIndex="2">
</VBox>
<VBox fx:id="vBoxSat" spacing="5.0" GridPane.columnIndex="5" GridPane.rowIndex="2">
</VBox>
<VBox fx:id="vBoxSun" spacing="5.0" GridPane.columnIndex="6" GridPane.rowIndex="2">
</VBox>
</GridPane> </GridPane>
</GridPane> </GridPane>

View File

@ -1,18 +0,0 @@
GridPane{
-fx-background-color: #282C34;
-fx-margin: 10px;
}
Label{
-fx-text-fill: white;
}
.main-btn{
-fx-background-color: #ffffff;
-fx-text-fill: white;
-fx-background-radius: 5em;
-fx-min-width: 40px;
-fx-min-height: 40px;
-fx-max-width: 40px;
-fx-max-height: 40px;
}

View File

@ -1,8 +0,0 @@
package kaka;
public class Dings {
public static int a() {
return 5;
}
}

View File

@ -4,46 +4,79 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
import java.net.URL; import java.net.URL;
import java.util.ArrayList; import java.nio.charset.StandardCharsets;
import java.util.*;
public class DataController { public class DataController {
private static final String ALL_EVENTS_ENDPOINT = "http://localhost:8080/vpr/all-events"; private static final String ALL_EVENTS_ENDPOINT = "http://localhost:8080/vpr/all-events";
private static final String ALL_USERS_ENDPOINT = "http://localhost:8080/vpr/all-users"; private static final String ALL_USERS_ENDPOINT = "http://localhost:8080/vpr/all-users";
private static final String ADD_EVENT_ENDPOINT = "http://localhost:8080/vpr/add-event";
private static final String DELETE_EVENT_ENDPOINT = "http://localhost:8080/vpr/del-event";
private final HttpRequest httpRequest;
public DataController(){
httpRequest = new HttpRequest();
}
public void createEvent(Event event){
try {
System.out.println(httpRequest.sendPostRequest(ADD_EVENT_ENDPOINT, event.getAsUrlParam()));
} catch (Exception e) {
e.printStackTrace();
}
}
public void deleteEvent(int eventId){
try {
System.out.println(httpRequest.sendPostRequest(DELETE_EVENT_ENDPOINT, "eventId=" + eventId));
} catch (Exception e) {
e.printStackTrace();
}
}
public ArrayList<Event> getAllVisibleEvents() {
ArrayList<Event> eventList = new ArrayList<>();
try {
String jsonResponse = httpRequest.sendPostRequest(ALL_EVENTS_ENDPOINT, "userId=1");
System.out.println(jsonResponse);
ObjectMapper objectMapper = new ObjectMapper();
//String json = "{ \"color\" : \"Black\", \"type\" : \"BMW\" }";
for (Object obj : objectMapper.readValue(jsonResponse, Object[].class)){
ArrayList<Object> list = new ArrayList<>();
if (obj.getClass().isArray()) {
list = (ArrayList<Object>) Arrays.asList((Object[])obj);
} else if (obj instanceof Collection) {
list = new ArrayList<>((Collection<?>) obj);
}
eventList.add(new Event(list));
}
} catch (Exception e) {
e.printStackTrace();
}
return eventList;
}
public Event[] getAllEvents() { public Event[] getAllEvents() {
Event[] eventList = null; Event[] eventList = null;
try { try {
URL url = new URL(ALL_EVENTS_ENDPOINT); String jsonResponse = httpRequest.sendGetRequest("http://localhost:8080/vpr/all-events-test");
HttpURLConnection con = (HttpURLConnection) url.openConnection(); eventList = parseJsonToEventList(jsonResponse);
con.setRequestMethod("GET");
con.setConnectTimeout(5000);
con.setReadTimeout(5000);
int status = con.getResponseCode();
if(status == 200){
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuilder content = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
content.append(inputLine);
}
in.close();
eventList = parseJsonToEventList(content.toString());
for (Event e : eventList) { for (Event e : eventList) {
System.out.println(e); System.out.println(e);
} }
}else{
System.out.println("Status: " + status);
}
con.disconnect();
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }

View File

@ -1,14 +1,77 @@
package res; package res;
import com.sun.jdi.event.StepEvent;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
public class Event { public class Event {
private int id; private int id;
private String name; private String name;
private int priority; private int priority;
private boolean isFullDay; private boolean isFullDay;
private boolean isPrivate;
private String start; private String start;
private String end; private String end;
private LocalDateTime date;
private int ownerId;
private String ownerName;
/*
Constructor for SELECT:
e.id AS eid,
e.name AS ename,
e.start,
e.end,
e.priority,
e.is_full_day,
ue.date,
u.id AS uid,
u.forename,
u.name AS uname
*/
public Event(ArrayList<Object> arr) {
id = (int) arr.get(0);
name = (String) arr.get(1);
start = (String) arr.get(2);
end = (String) arr.get(3);
priority = (int) arr.get(4);
isFullDay = (Boolean) arr.get(5); //((String)arr.get(5)).equals("true");
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
date = LocalDateTime.parse(arr.get(6) + " 00:00", formatter);
ownerId = (int) arr.get(7);
ownerName = arr.get(8) + " " + arr.get(9);
}
public Event(String name,
int priority,
boolean isFullDay,
boolean isPrivate,
String start,
String end,
LocalDateTime date,
int ownerId
) {
this.name = name;
this.priority = priority;
this.isFullDay = isFullDay;
this.isPrivate = isPrivate;
this.start = start;
this.end = end;
this.date = date;
this.ownerId = ownerId;
}
public int getId() { public int getId() {
return id; return id;
} }
@ -41,6 +104,14 @@ public class Event {
isFullDay = fullDay; isFullDay = fullDay;
} }
public boolean isPrivate() {
return isPrivate;
}
public void setPrivate(boolean aPrivate) {
isPrivate = aPrivate;
}
public String getStart() { public String getStart() {
return start; return start;
} }
@ -57,12 +128,47 @@ public class Event {
this.end = end; this.end = end;
} }
public LocalDateTime getDate() {
return date;
}
public void setDate(LocalDateTime date) {
this.date = date;
}
public int getOwnerId() {
return ownerId;
}
public void setOwnerId(int ownerId) {
this.ownerId = ownerId;
}
public String getOwnerName() {
return ownerName;
}
public void setOwnerName(String ownerName) {
this.ownerName = ownerName;
}
@Override @Override
public String toString() { public String toString() {
return name + return name +
"\nVon: " + start + "\nVon: " + start +
"\nBis: " + start + "\nBis: " + start +
"\nisFullDay = " + isFullDay; (isFullDay ? "\nDen ganzen Tag lang" : "");
} }
public String getAsUrlParam() {
return "userId=" + getOwnerId() +
"&date=" + getDate().toLocalDate() +
"&name=" + getName() +
"&start=" + getStart() +
"&end=" + getEnd() +
"&prority=" + getPriority() +
"&isFullDay=" + isFullDay() +
"&isPrivate=" + isPrivate();
}
} }

View File

@ -0,0 +1,76 @@
package res;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
public class HttpRequest {
public String sendPostRequest(String urlString, String urlParameters) throws Exception{
byte[] postData = urlParameters.getBytes(StandardCharsets.UTF_8);
int postDataLength = postData.length;
URL url = new URL(urlString);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setDoOutput(true);
con.setInstanceFollowRedirects(false);
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
con.setRequestProperty("charset", "utf-8");
con.setRequestProperty("Content-Length", Integer.toString(postDataLength));
con.setUseCaches(false);
try (DataOutputStream wr = new DataOutputStream(con.getOutputStream())) {
wr.write(postData);
}
int status = con.getResponseCode();
if (status == 200) {
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuilder content = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
content.append(inputLine);
}
in.close();
con.disconnect();
return content.toString();
} else {
con.disconnect();
throw new Exception("Status: " + status);
}
}
public String sendGetRequest(String urlString) throws Exception{
URL url = new URL(urlString);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setConnectTimeout(5000);
con.setReadTimeout(5000);
int status = con.getResponseCode();
if (status == 200) {
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuilder content = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
content.append(inputLine);
}
in.close();
con.disconnect();
return content.toString();
} else {
con.disconnect();
throw new Exception("Status: " + status);
}
}
}