Skip to content

Commit af2d9f2

Browse files
committed
Show detail monitoring time When mouseover on monitoring prequency UI
1 parent c08d374 commit af2d9f2

File tree

6 files changed

+104
-13
lines changed

6 files changed

+104
-13
lines changed

src/main/java/root/core/usecase/constracts/ReportUsecase.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,7 @@ <T extends MonitoringResult> Map<String, List<T>> getMonitoringReportDataByTime(
1515

1616
<T extends MonitoringResult> Map<Integer, Long> getMonitoringReportCountByTime(Class<T> clazz, String alias,
1717
FileSize unit, int round, String inquiryDate);
18+
19+
<T extends MonitoringResult> Map<Integer, List<String>> getMonitoringReportTimesByTime(Class<T> clazz, String alias,
20+
FileSize unit, int round, String inquiryDate);
1821
}

src/main/java/root/core/usecase/implement/ReportUsecaseImpl.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package root.core.usecase.implement;
22

3+
import java.util.ArrayList;
34
import java.util.List;
45
import java.util.Locale;
56
import java.util.Map;
@@ -73,4 +74,24 @@ public <T extends MonitoringResult> Map<Integer, Long> getMonitoringReportCountB
7374

7475
return result;
7576
}
77+
78+
@Override
79+
public <T extends MonitoringResult> Map<Integer, List<String>> getMonitoringReportTimesByTime(Class<T> clazz,
80+
String alias, FileSize unit, int round, String inquiryDate) {
81+
82+
Map<Integer, List<String>> result = getMonitoringReportDataByTime(clazz, alias, unit, round, inquiryDate)
83+
.keySet()
84+
.stream()
85+
.collect(Collectors.groupingBy(
86+
m -> Integer.parseInt(DateUtils.convertDateFormat("yyyyMMddHHmmss", "HH", m, Locale.KOREA)),
87+
Collectors.mapping(m -> m, Collectors.toList())));
88+
89+
for (int i = 0; i < 24; i++) {
90+
if (!result.containsKey(i)) {
91+
result.put(i, new ArrayList<>());
92+
}
93+
}
94+
95+
return result;
96+
}
7697
}

src/main/java/root/javafx/Controller/MonitoringAPController.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@
4141
import root.core.repository.implement.ReportFileRepo;
4242
import root.core.usecase.constracts.ReportUsecase;
4343
import root.core.usecase.implement.ReportUsecaseImpl;
44-
import root.javafx.CustomView.PrequencyButton;
4544
import root.javafx.CustomView.UsageUI.UsageUI;
4645
import root.javafx.CustomView.UsageUI.UsageUIFactory;
46+
import root.javafx.CustomView.prequencyUI.PrequencyButton;
4747
import root.utils.AlertUtils;
4848
import root.utils.DateUtils;
4949
import root.utils.UnitUtils.FileSize;
@@ -86,10 +86,10 @@ public class MonitoringAPController<T extends MonitoringResult> extends BorderPa
8686
// Map<Alias, Map<MonitoringDateTime, MonitoringResults>>
8787
private Map<String, Map<String, List<T>>> tableDataMap = new HashMap<>();
8888

89-
private static Map<Integer, Long> countByTime = new HashMap<>();
89+
private static Map<Integer, List<String>> countByTime = new HashMap<>();
9090
static {
9191
for (int i = 0; i < 24; i++) {
92-
countByTime.put(i, 0L);
92+
countByTime.put(i, new ArrayList<>());
9393
}
9494
}
9595

@@ -332,15 +332,15 @@ private Map<String, List<T>> inquiryMonitoringHistory() {
332332
inquiryDate);
333333
}
334334

335-
private Map<Integer, Long> inquiryMonitoringHistoryCountByTime() {
335+
private Map<Integer, List<String>> inquiryMonitoringHistoryTimesByTime() {
336336
// Get selected inquiry condition
337337
String inquiryDate = this.inquiryDatePicker.getValue().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
338338
String selected = aliasComboBox.getSelectionModel().getSelectedItem();
339339
FileSize selectedUnit = unitComboBox.getSelectionModel().getSelectedItem();
340340
int selectedRoundUnit = roundComboBox.getSelectionModel().getSelectedItem();
341341

342342
// Acquire data on inquiry date
343-
return reportUsecase.getMonitoringReportCountByTime(this.clazz, selected, selectedUnit, selectedRoundUnit,
343+
return reportUsecase.getMonitoringReportTimesByTime(this.clazz, selected, selectedUnit, selectedRoundUnit,
344344
inquiryDate);
345345
}
346346

@@ -379,7 +379,7 @@ public void prequencyTimeDivToggle(ActionEvent e) {
379379
* @param timeDiv
380380
*/
381381
private void syncPrequency(String timeDiv) {
382-
countByTime.putAll(inquiryMonitoringHistoryCountByTime());
382+
countByTime.putAll(inquiryMonitoringHistoryTimesByTime());
383383

384384
prequencyHBox.getChildren().clear();
385385
List<Integer> keys = new ArrayList<>(countByTime.keySet());

src/main/java/root/javafx/CustomView/PrequencyButton.java renamed to src/main/java/root/javafx/CustomView/prequencyUI/PrequencyButton.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
1-
package root.javafx.CustomView;
1+
package root.javafx.CustomView.prequencyUI;
2+
3+
import java.util.List;
24

35
import javafx.scene.control.Button;
46

57
public class PrequencyButton extends Button {
68

7-
public PrequencyButton(long prequency) {
9+
public PrequencyButton(List<String> monitoringTimeList) {
10+
11+
int prequency = monitoringTimeList.size();
812

9-
String backgroundColor = prequency == 0L ? "white" : "#789bff94";
13+
String backgroundColor = prequency == 0 ? "white" : "#789bff94";
1014
setStyle(String.format(
1115
"-fx-background-color: %s; "
1216
+ "-fx-background-radius:0px; "
@@ -26,6 +30,8 @@ public PrequencyButton(long prequency) {
2630
setMaxHeight(USE_PREF_SIZE);
2731
setPrefHeight(25);
2832

29-
setText(prequency == 0L ? "-" : String.valueOf(prequency));
33+
setText(prequency == 0 ? "-" : String.valueOf(prequency));
34+
35+
setTooltip(new PrequencyTooltip(monitoringTimeList));
3036
}
3137
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package root.javafx.CustomView.prequencyUI;
2+
3+
import java.util.Collections;
4+
import java.util.List;
5+
import java.util.Locale;
6+
7+
import javafx.scene.control.Label;
8+
import javafx.scene.control.Tooltip;
9+
import javafx.scene.layout.VBox;
10+
import javafx.util.Duration;
11+
import root.utils.DateUtils;
12+
13+
public class PrequencyTooltip extends Tooltip {
14+
15+
private static final int MAX_SHOW_COUNT = 5;
16+
17+
public PrequencyTooltip(List<String> monitoringTimeList) {
18+
setShowDelay(Duration.ZERO);
19+
20+
setStyle("-fx-font-size: 10px; "
21+
+ "-fx-font-family: NanumGothic;"
22+
+ "-fx-background-color: white;");
23+
24+
Collections.sort(monitoringTimeList);
25+
26+
VBox vBox = new VBox();
27+
int loopCnt = Math.min(MAX_SHOW_COUNT, monitoringTimeList.size());
28+
29+
if (loopCnt == 0) {
30+
Label label = new Label("¸ð´ÏÅ͸µ ±â·Ï ¾øÀ½");
31+
label.setStyle("-fx-text-fill: black;");
32+
vBox.getChildren().add(label);
33+
} else {
34+
for (int i = 0; i < loopCnt; i++) {
35+
String text = DateUtils.convertDateFormat("yyyyMMddHHmmss", "HH:mm:ss", monitoringTimeList.get(i),
36+
Locale.KOREA);
37+
Label label = new Label(text);
38+
label.setStyle("-fx-text-fill: black;");
39+
vBox.getChildren().add(label);
40+
}
41+
42+
if (loopCnt != monitoringTimeList.size()) {
43+
Label label = new Label("...");
44+
label.setStyle("-fx-text-fill: black;");
45+
vBox.getChildren().add(label);
46+
}
47+
}
48+
setGraphic(vBox);
49+
}
50+
}

src/main/resources/fxml/MonitoringAP.fxml

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@
1313
<?import javafx.scene.control.Separator?>
1414
<?import javafx.scene.control.TableView?>
1515
<?import javafx.scene.control.ToolBar?>
16+
<?import javafx.scene.control.Tooltip?>
1617
<?import javafx.scene.layout.AnchorPane?>
1718
<?import javafx.scene.layout.BorderPane?>
1819
<?import javafx.scene.layout.HBox?>
1920
<?import javafx.scene.layout.VBox?>
2021

21-
2222
<fx:root stylesheets="@../css/javaFx.css" type="BorderPane" xmlns="http://javafx.com/javafx/17" xmlns:fx="http://javafx.com/fxml/1">
2323
<center>
2424
<AnchorPane style="-fx-background-color: white;" stylesheets="@../css/javaFx.css">
@@ -39,7 +39,11 @@
3939
<children>
4040
<HBox fx:id="prequencyHBox" alignment="CENTER">
4141
<children>
42-
<Button maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" prefHeight="25.0" prefWidth="25.0" style="-fx-background-color: white; -fx-background-radius: 0px; -fx-border-width: 0.2px; -fx-border-color: black; -fx-font-family: NanumGothic; -fx-font-size: 10px;" text="-" />
42+
<Button maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" prefHeight="25.0" prefWidth="25.0" style="-fx-background-color: white; -fx-background-radius: 0px; -fx-border-width: 0.2px; -fx-border-color: black; -fx-font-family: NanumGothic; -fx-font-size: 10px;" text="-">
43+
<tooltip>
44+
<Tooltip style="-fx-text-fill: blue;" text="Empty Tooltip" />
45+
</tooltip>
46+
</Button>
4347
<Button maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" prefHeight="25.0" prefWidth="25.0" style="-fx-background-color: white; -fx-background-radius: 0px; -fx-border-width: 0.2px; -fx-border-color: black; -fx-font-family: NanumGothic; -fx-font-size: 10px;" text="-" />
4448
<Button maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" prefHeight="25.0" prefWidth="25.0" style="-fx-background-color: white; -fx-background-radius: 0px; -fx-border-width: 0.2px; -fx-border-color: black; -fx-font-family: NanumGothic; -fx-font-size: 10px;" text="-" />
4549
<Button maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" prefHeight="25.0" prefWidth="25.0" style="-fx-background-color: white; -fx-background-radius: 0px; -fx-border-width: 0.2px; -fx-border-color: black; -fx-font-family: NanumGothic; -fx-font-size: 10px;" text="-" />
@@ -71,7 +75,14 @@
7175
</HBox>
7276
</children>
7377
</VBox>
74-
<FontAwesomeIconView glyphName="QUESTION_CIRCLE" size="12" />
78+
<Label>
79+
<graphic>
80+
<FontAwesomeIconView glyphName="QUESTION_CIRCLE" size="12" />
81+
</graphic>
82+
<tooltip>
83+
<Tooltip style="-fx-font-family: NanumGothic; -fx-font-size: 10px;" text="시간대별 모니터링 빈도입니다." />
84+
</tooltip>
85+
</Label>
7586
</children>
7687
</HBox>
7788
</children>

0 commit comments

Comments
 (0)