|
|
@@ -46,7 +46,6 @@ public class MainController {
|
|
|
@FXML private Hyperlink navBrowse;
|
|
|
@FXML private Hyperlink navTrans;
|
|
|
@FXML private Hyperlink navSeller;
|
|
|
- @FXML private Hyperlink navStats;
|
|
|
@FXML private Hyperlink navAdmin;
|
|
|
|
|
|
// Content panes
|
|
|
@@ -54,7 +53,6 @@ public class MainController {
|
|
|
@FXML private VBox transPane;
|
|
|
@FXML private VBox profilePane;
|
|
|
@FXML private VBox sellerPane;
|
|
|
- @FXML private ScrollPane statsPane;
|
|
|
@FXML private SplitPane adminPane;
|
|
|
@FXML private StackPane adminContentArea;
|
|
|
|
|
|
@@ -63,7 +61,7 @@ public class MainController {
|
|
|
@FXML private VBox adminBookPane;
|
|
|
@FXML private VBox adminPendingPane;
|
|
|
@FXML private VBox adminTransPane;
|
|
|
- @FXML private VBox adminAnalysisPane;
|
|
|
+ @FXML private VBox adminStatsPane;
|
|
|
|
|
|
// Browse tab
|
|
|
@FXML private TextField searchField;
|
|
|
@@ -170,7 +168,7 @@ public class MainController {
|
|
|
@FXML private TableColumn<TransactionDetailDTO, java.math.BigDecimal> allTransPriceCol;
|
|
|
@FXML private TableColumn<TransactionDetailDTO, java.time.LocalDateTime> allTransTimeCol;
|
|
|
@FXML private Button generateBtn;
|
|
|
- @FXML private TextArea analysisResult;
|
|
|
+ @FXML private Label analysisResult;
|
|
|
|
|
|
private final BookService bookService = new BookService();
|
|
|
private final AiService aiService = new AiService();
|
|
|
@@ -206,7 +204,6 @@ public class MainController {
|
|
|
loadSubPane("/fxml/trans.fxml");
|
|
|
loadSubPane("/fxml/profile.fxml");
|
|
|
loadSubPane("/fxml/seller.fxml");
|
|
|
- loadSubPane("/fxml/stats.fxml");
|
|
|
loadSubPane("/fxml/admin.fxml");
|
|
|
} catch (IOException e) {
|
|
|
throw new RuntimeException("Failed to load sub-pane", e);
|
|
|
@@ -259,13 +256,11 @@ public class MainController {
|
|
|
navBrowse.getStyleClass().remove("nav-active");
|
|
|
navTrans.getStyleClass().remove("nav-active");
|
|
|
navSeller.getStyleClass().remove("nav-active");
|
|
|
- navStats.getStyleClass().remove("nav-active");
|
|
|
navAdmin.getStyleClass().remove("nav-active");
|
|
|
Hyperlink activeNav = null;
|
|
|
if (pane == browsePane) activeNav = navBrowse;
|
|
|
else if (pane == transPane) activeNav = navTrans;
|
|
|
else if (pane == sellerPane) activeNav = navSeller;
|
|
|
- else if (pane == statsPane) activeNav = navStats;
|
|
|
else if (pane == adminPane) activeNav = navAdmin;
|
|
|
if (activeNav != null) {
|
|
|
activeNav.getStyleClass().add("nav-active");
|
|
|
@@ -285,14 +280,13 @@ public class MainController {
|
|
|
@FXML private void handleNavTrans() { switchPane(transPane); handleLoadTransactions(); }
|
|
|
@FXML private void handleNavProfile() { switchPane(profilePane); }
|
|
|
@FXML private void handleNavSeller() { switchPane(sellerPane); handleLoadMyBooks(); }
|
|
|
- @FXML private void handleNavStats() { switchPane(statsPane); handleLoadStatistics(); }
|
|
|
@FXML private void handleNavAdmin() { switchPane(adminPane); switchAdminPane(adminUserPane); handleLoadAllUsers(); }
|
|
|
|
|
|
@FXML private void handleAdminNavUsers() { switchAdminPane(adminUserPane); handleLoadAllUsers(); }
|
|
|
@FXML private void handleAdminNavBooks() { switchAdminPane(adminBookPane); handleLoadAllBooksAdmin(); }
|
|
|
@FXML private void handleAdminNavPending() { switchAdminPane(adminPendingPane); handleLoadPendingBooks(); }
|
|
|
@FXML private void handleAdminNavTransactions() { switchAdminPane(adminTransPane); handleLoadAllTransactions(); }
|
|
|
- @FXML private void handleAdminNavAnalysis() { switchAdminPane(adminAnalysisPane); }
|
|
|
+ @FXML private void handleAdminNavStats() { switchAdminPane(adminStatsPane); handleLoadStatistics(); }
|
|
|
|
|
|
private void loadSubPane(String path) throws IOException {
|
|
|
FXMLLoader loader = new FXMLLoader(getClass().getResource(path));
|
|
|
@@ -1273,7 +1267,7 @@ public class MainController {
|
|
|
|| "AI 服务不可用,正在尝试本地模式...".equals(analysisResult.getText())) {
|
|
|
analysisResult.setText("");
|
|
|
}
|
|
|
- analysisResult.appendText(token);
|
|
|
+ analysisResult.setText(analysisResult.getText() + token);
|
|
|
}),
|
|
|
() -> Platform.runLater(() -> {
|
|
|
generateBtn.setDisable(false);
|