From 88b8aca0b658d83f07b618690687f68bb1ea8f84 Mon Sep 17 00:00:00 2001 From: Felix Pechtl Date: Tue, 8 Jun 2021 18:36:57 +0200 Subject: [PATCH] Added distance between stations Added distances table to database Added Bug-Report button Updated number formats --- .github/ISSUE_TEMPLATE/bug_report.md | 1 + pom.xml | 6 +- setup.iss | 2 +- src/main/java/com/fi0x/edct/Main.java | 2 +- .../com/fi0x/edct/controller/Commodity.java | 13 +- .../com/fi0x/edct/controller/ProgramInfo.java | 10 +- .../com/fi0x/edct/controller/Results.java | 17 +- .../com/fi0x/edct/controller/Station.java | 5 +- .../edct/data/{webconnection => }/EDDN.java | 4 +- .../{webconnection => }/RequestHandler.java | 21 +- src/main/java/com/fi0x/edct/data/Updater.java | 3 +- .../fi0x/edct/data/cleanup/HTMLCleanup.java | 44 +- .../edct/data/localstorage/DBHandler.java | 30 + .../edct/data/localstorage/SQLSTATEMENTS.java | 8 +- .../fi0x/edct/data/structures/ENDPOINTS.java | 3 +- .../{webconnection => websites}/GitHub.java | 3 +- .../com/fi0x/edct/data/websites/Hozbase.java | 39 + .../InaraCommodity.java | 3 +- .../InaraStation.java | 12 +- .../com/fi0x/edct/util/NumberConverter.java | 14 + src/main/resources/css/commodity.css | 5 +- src/main/resources/css/programinfo.css | 8 + src/main/resources/fxml/commodity.fxml | 1 + src/main/resources/fxml/programinfo.fxml | 5 + src/main/resources/test.html | 1211 +---------------- 25 files changed, 262 insertions(+), 1208 deletions(-) rename src/main/java/com/fi0x/edct/data/{webconnection => }/EDDN.java (98%) rename src/main/java/com/fi0x/edct/data/{webconnection => }/RequestHandler.java (91%) rename src/main/java/com/fi0x/edct/data/{webconnection => websites}/GitHub.java (96%) create mode 100644 src/main/java/com/fi0x/edct/data/websites/Hozbase.java rename src/main/java/com/fi0x/edct/data/{webconnection => websites}/InaraCommodity.java (97%) rename src/main/java/com/fi0x/edct/data/{webconnection => websites}/InaraStation.java (79%) create mode 100644 src/main/java/com/fi0x/edct/util/NumberConverter.java diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 40afa34..ec0766b 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -11,6 +11,7 @@ assignees: Fi0x A clear and concise description of what the bug is. **To Reproduce** +Version: '...' Steps to reproduce the behavior: 1. Go to '...' 2. Click on '....' diff --git a/pom.xml b/pom.xml index f6c5157..292354f 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.fi0x.edct EliteDangerousCarrierTrader - 1.0.1.2 + 1.0.2.2 UTF-8 @@ -107,8 +107,8 @@ com.fi0x.edct.Main - jre - + + 13.0.1 ${project.version} diff --git a/setup.iss b/setup.iss index d6fbaf0..e96f826 100644 --- a/setup.iss +++ b/setup.iss @@ -3,7 +3,7 @@ ; TODO: Update Version info #define MyAppName "Elite Dangerous Carrier Trader" -#define MyAppVersion "1.0.1.2" +#define MyAppVersion "1.0.2.2" #define MyAppPublisher "Fi0x" #define MyAppURL "https://github.com/Fi0x/EDCT" #define MyAppExeName "EDCT.exe" diff --git a/src/main/java/com/fi0x/edct/Main.java b/src/main/java/com/fi0x/edct/Main.java index ca1e15c..03245fd 100644 --- a/src/main/java/com/fi0x/edct/Main.java +++ b/src/main/java/com/fi0x/edct/Main.java @@ -18,7 +18,7 @@ public class Main public static File errors; public static File settings; //TODO: Update version information - public static final String version = "1.0.1.2";//All.GUI.Logic.Hotfix + public static final String version = "1.0.2.2";//All.GUI.Logic.Hotfix public static void main(String[] args) { diff --git a/src/main/java/com/fi0x/edct/controller/Commodity.java b/src/main/java/com/fi0x/edct/controller/Commodity.java index 567339d..2f373d0 100644 --- a/src/main/java/com/fi0x/edct/controller/Commodity.java +++ b/src/main/java/com/fi0x/edct/controller/Commodity.java @@ -1,9 +1,12 @@ package com.fi0x.edct.controller; +import com.fi0x.edct.util.NumberConverter; import javafx.fxml.FXML; import javafx.scene.control.Button; import javafx.scene.control.Label; +import java.text.DecimalFormat; + public class Commodity { private Results resultsController; @@ -16,6 +19,8 @@ public class Commodity private Label lblCommodity; @FXML private Label lblProfit; + @FXML + private Label lblDistance; @FXML private void nextCommodity() @@ -28,10 +33,14 @@ private void previousCommodity() resultsController.previousCommodity(); } - public void updateDisplay(boolean hasPrev, boolean hasNext) + public void updateDisplay(boolean hasPrev, boolean hasNext, double distance) { lblCommodity.setText(resultsController.getCurrentTrade().NAME); - lblProfit.setText(resultsController.getCurrentTrade().profit + " credits"); + String profit = NumberConverter.convertToString(resultsController.getCurrentTrade().profit, " "); + lblProfit.setText(profit + " credits"); + DecimalFormat df = new DecimalFormat(); + df.setMaximumFractionDigits(2); + lblDistance.setText("Distance: " + (distance == 0 ? "Unknown" : df.format(distance) + "Ly")); btnPrevComm.setDisable(!hasPrev); btnNextComm.setDisable(!hasNext); diff --git a/src/main/java/com/fi0x/edct/controller/ProgramInfo.java b/src/main/java/com/fi0x/edct/controller/ProgramInfo.java index 2a8322b..49db085 100644 --- a/src/main/java/com/fi0x/edct/controller/ProgramInfo.java +++ b/src/main/java/com/fi0x/edct/controller/ProgramInfo.java @@ -1,7 +1,7 @@ package com.fi0x.edct.controller; import com.fi0x.edct.Main; -import com.fi0x.edct.data.webconnection.GitHub; +import com.fi0x.edct.data.websites.GitHub; import com.fi0x.edct.util.Logger; import javafx.fxml.FXML; import javafx.fxml.Initializable; @@ -25,6 +25,8 @@ public class ProgramInfo implements Initializable @FXML private Label lblVersion; @FXML + private Button btnBugReport; + @FXML private Button btnUpdate; @Override @@ -40,6 +42,11 @@ private void openErrorPage() lblError.setVisible(false); } @FXML + private void reportBug() + { + openWebsite("https://github.com/Fi0x/EDCT/issues"); + } + @FXML private void updateVersion() { openWebsite(updateUrl); @@ -59,6 +66,7 @@ public void checkForUpdates() { updateUrl = url; btnUpdate.setVisible(true); + btnBugReport.setVisible(false); } } diff --git a/src/main/java/com/fi0x/edct/controller/Results.java b/src/main/java/com/fi0x/edct/controller/Results.java index 8e82236..a6b451c 100644 --- a/src/main/java/com/fi0x/edct/controller/Results.java +++ b/src/main/java/com/fi0x/edct/controller/Results.java @@ -2,6 +2,7 @@ import com.fi0x.edct.data.structures.COMMODITY; import com.fi0x.edct.data.structures.STATION; +import com.fi0x.edct.data.websites.Hozbase; import com.fi0x.edct.util.Logger; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; @@ -138,10 +139,12 @@ public void displayResults() } int profit = 0; + STATION sellStation = null; + STATION buyStation = null; if(trades.get(currentCommodity).BUY_PRICES != null && trades.get(currentCommodity).BUY_PRICES.size() > currentBuyStation) { - STATION sellStation = trades.get(currentCommodity).BUY_PRICES.get(currentBuyStation); + sellStation = trades.get(currentCommodity).BUY_PRICES.get(currentBuyStation); sellController.setStation(sellStation, currentBuyStation > 0, currentBuyStation < trades.get(currentCommodity).BUY_PRICES.size() - 1); profit -= sellStation.PRICE; @@ -149,15 +152,23 @@ public void displayResults() if(trades.get(currentCommodity).SELL_PRICES != null && trades.get(currentCommodity).SELL_PRICES.size() > currentSellStation) { - STATION buyStation = trades.get(currentCommodity).SELL_PRICES.get(currentSellStation); + buyStation = trades.get(currentCommodity).SELL_PRICES.get(currentSellStation); buyController.setStation(buyStation, currentSellStation > 0, currentSellStation < trades.get(currentCommodity).SELL_PRICES.size() - 1); if(profit < 0) profit += buyStation.PRICE; } trades.get(currentCommodity).profit = profit; + double distance = 0; + try + { + if(sellStation == null || buyStation == null) distance = 0; + else distance = Hozbase.getStarDistance(sellStation.SYSTEM, buyStation.SYSTEM); + } catch(InterruptedException ignored) + { + } - commodityController.updateDisplay(currentCommodity > 0, currentCommodity < trades.size() - 1); + commodityController.updateDisplay(currentCommodity > 0, currentCommodity < trades.size() - 1, distance); vbResults.setVisible(true); } diff --git a/src/main/java/com/fi0x/edct/controller/Station.java b/src/main/java/com/fi0x/edct/controller/Station.java index e100d48..99b9639 100644 --- a/src/main/java/com/fi0x/edct/controller/Station.java +++ b/src/main/java/com/fi0x/edct/controller/Station.java @@ -1,6 +1,7 @@ package com.fi0x.edct.controller; import com.fi0x.edct.data.structures.STATION; +import com.fi0x.edct.util.NumberConverter; import javafx.fxml.FXML; import javafx.scene.control.Button; import javafx.scene.control.Label; @@ -66,8 +67,8 @@ public void setStation(STATION station, boolean hasPrev, boolean hasNext) lblStationName.setText("Station: " + station.NAME); lblType.setText("Type: " + station.TYPE); lblPad.setText("Pad: " + station.PAD); - lblPrice.setText("Price: " + station.PRICE + " credits"); - lblAmount.setText((isBuying ? "Demand: " : "Supply: ") + station.QUANTITY + " tons"); + lblPrice.setText("Price: " + NumberConverter.convertToString(station.PRICE, " ") + " credits"); + lblAmount.setText((isBuying ? "Demand: " : "Supply: ") + NumberConverter.convertToString(station.QUANTITY, " ") + " tons"); lblAge.setText("Data age: " + station.getUpdateAge()); btnPrevStation.setDisable(!hasPrev); diff --git a/src/main/java/com/fi0x/edct/data/webconnection/EDDN.java b/src/main/java/com/fi0x/edct/data/EDDN.java similarity index 98% rename from src/main/java/com/fi0x/edct/data/webconnection/EDDN.java rename to src/main/java/com/fi0x/edct/data/EDDN.java index 6b87b9b..54c4966 100644 --- a/src/main/java/com/fi0x/edct/data/webconnection/EDDN.java +++ b/src/main/java/com/fi0x/edct/data/EDDN.java @@ -1,4 +1,4 @@ -package com.fi0x.edct.data.webconnection; +package com.fi0x.edct.data; import com.fi0x.edct.MainWindow; import com.fi0x.edct.data.cleanup.HTMLCleanup; @@ -7,6 +7,7 @@ import com.fi0x.edct.data.structures.PADSIZE; import com.fi0x.edct.data.structures.STATION; import com.fi0x.edct.data.structures.STATIONTYPE; +import com.fi0x.edct.data.websites.InaraStation; import com.fi0x.edct.util.Logger; import javafx.application.Platform; import org.json.simple.JSONObject; @@ -15,7 +16,6 @@ import org.zeromq.ZContext; import org.zeromq.ZMQ; -import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.Map; import java.util.zip.DataFormatException; diff --git a/src/main/java/com/fi0x/edct/data/webconnection/RequestHandler.java b/src/main/java/com/fi0x/edct/data/RequestHandler.java similarity index 91% rename from src/main/java/com/fi0x/edct/data/webconnection/RequestHandler.java rename to src/main/java/com/fi0x/edct/data/RequestHandler.java index abb2c2d..5fd8aeb 100644 --- a/src/main/java/com/fi0x/edct/data/webconnection/RequestHandler.java +++ b/src/main/java/com/fi0x/edct/data/RequestHandler.java @@ -1,4 +1,4 @@ -package com.fi0x.edct.data.webconnection; +package com.fi0x.edct.data; import com.fi0x.edct.Main; import com.fi0x.edct.util.Logger; @@ -6,6 +6,7 @@ import javax.annotation.Nullable; import java.io.*; import java.net.HttpURLConnection; +import java.net.MalformedURLException; import java.net.URL; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; @@ -37,7 +38,7 @@ public static String sendHTTPRequest(String endpoint, String requestType, Map getCommodityPrices(String inputHTML) return stations; } + public static double getSystemDistance(String inputHTML) + { + Document doc = Jsoup.parse(inputHTML); + + Elements bodies = doc.getElementsByClass("body-outer"); + if(bodies.size() == 0) return 0; + + Elements containers = bodies.first().getElementsByClass("container body-content"); + if(containers.size() == 0) return 0; + + Elements panels = containers.first().getElementsByClass("panel panel-primary panel-success"); + if(panels.size() == 0) return 0; + + Elements tables = panels.first().getElementsByClass("table-responsive"); + if(tables.size() == 0) return 0; + + Elements innerTables = tables.first().getElementsByClass("table table-condensed table-striped table-bordered"); + if(innerTables.size() == 0) return 0; + + Elements rows = innerTables.first().getElementsByTag("tr"); + if(rows.size() == 0) return 0; + + for(Element row : rows) + { + if(!row.toString().contains("td")) continue; + + Elements rowEntries = row.getElementsByTag("td"); + for(Element entry : rowEntries) + { + if(entry.ownText().contains("-")) continue; + if(entry.ownText().length() == 0) continue; + if(entry.toString().contains("")) continue; + + return Double.parseDouble(entry.ownText()); + } + } + + return 0; + } + @Nullable public static String getStationID(String inputHTML, String stationName, String systemName) { @@ -198,7 +236,7 @@ private static Element getStationDetails(String inputHTML) { String blockText = block.toString().toLowerCase(); if(blockText.contains("class=\"mainblock\"") && (blockText.contains("landing pad") || blockText.contains("station type") || blockText.contains("href=\"/station/"))) - return block; + return block; } return null; diff --git a/src/main/java/com/fi0x/edct/data/localstorage/DBHandler.java b/src/main/java/com/fi0x/edct/data/localstorage/DBHandler.java index a038093..3b2dc11 100644 --- a/src/main/java/com/fi0x/edct/data/localstorage/DBHandler.java +++ b/src/main/java/com/fi0x/edct/data/localstorage/DBHandler.java @@ -35,6 +35,7 @@ private DBHandler() sendStatement(SQLSTATEMENTS.CreateCommodities.getStatement()); sendStatement(SQLSTATEMENTS.CreateStations.getStatement()); + sendStatement(SQLSTATEMENTS.CreateDistances.getStatement()); Logger.INFO("Finished setup of local DB"); } @@ -69,6 +70,14 @@ public void setStationData(STATION station, int inaraID, boolean isSelling) + makeSQLValid(station.TYPE.toString()) + ")"); } + public void setSystemDistance(String system1, String system2, double distance) + { + sendStatement("REPLACE INTO distances VALUES (" + + makeSQLValid(system1) + ", " + + makeSQLValid(system2) + ", " + + distance + ")"); + } + public void updateDownloadTime(String commodityName, int inaraID) { sendStatement("REPLACE INTO commodities VALUES (" @@ -232,6 +241,27 @@ public ArrayList getCommodityInformation(int commodityID, boolean isSel return stationList; } + public double getSystemDistance(String system1, String system2) + { + ResultSet results = getQueryResults("SELECT distance " + + "FROM distances " + + "WHERE (star1 = '" + system1 + "' AND star2 = '" + system2 + "') " + + "OR (star1 = '" + system2 + "' AND star2 = '" + system1 + "')"); + + try + { + if(results != null && results.next()) + { + return results.getInt("distance"); + } + } catch(SQLException e) + { + Logger.WARNING("Could not get the distance between two systems", e); + } + + return 0; + } + public void removeOldEntries() { long validTime = System.currentTimeMillis() - 1000 * 60 * 60 * 24 * 4; diff --git a/src/main/java/com/fi0x/edct/data/localstorage/SQLSTATEMENTS.java b/src/main/java/com/fi0x/edct/data/localstorage/SQLSTATEMENTS.java index 39da84b..69eff80 100644 --- a/src/main/java/com/fi0x/edct/data/localstorage/SQLSTATEMENTS.java +++ b/src/main/java/com/fi0x/edct/data/localstorage/SQLSTATEMENTS.java @@ -19,7 +19,13 @@ public enum SQLSTATEMENTS "pad_size TEXT NOT NULL, " + "station_type TEXT NOT NULL, " + "PRIMARY KEY (commodity_id, station_name, star_system, is_seller), " + - "FOREIGN KEY (commodity_id) REFERENCES commodities (inara_id))"); + "FOREIGN KEY (commodity_id) REFERENCES commodities (inara_id))"), + CreateDistances( + "CREATE TABLE IF NOT EXISTS distances (" + + "star1 TEXT NOT NULL, " + + "star2 TEXT NOT NULL, " + + "distance INT NOT NULL, " + + "PRIMARY KEY (star1, star2))"); private final String statement; diff --git a/src/main/java/com/fi0x/edct/data/structures/ENDPOINTS.java b/src/main/java/com/fi0x/edct/data/structures/ENDPOINTS.java index 92671eb..f7b8a20 100644 --- a/src/main/java/com/fi0x/edct/data/structures/ENDPOINTS.java +++ b/src/main/java/com/fi0x/edct/data/structures/ENDPOINTS.java @@ -5,7 +5,8 @@ public enum ENDPOINTS Releases("https://api.github.com/repos/Fi0x/EDCT/releases", "GET"), Commodities("https://inara.cz/galaxy-commodities/", "GET"), Prices("https://inara.cz/ajaxaction.php", "GET", "act", "refname", "refid", "refid2"), - StationSearch("https://inara.cz/station/", "GET", "search"); + StationSearch("https://inara.cz/station/", "GET", "search"), + SystemDistance("http://elitedangerous.hozbase.co.uk/calc/distances", "GET", "systems"); public final String url; public final String type; diff --git a/src/main/java/com/fi0x/edct/data/webconnection/GitHub.java b/src/main/java/com/fi0x/edct/data/websites/GitHub.java similarity index 96% rename from src/main/java/com/fi0x/edct/data/webconnection/GitHub.java rename to src/main/java/com/fi0x/edct/data/websites/GitHub.java index 29759d8..66c5731 100644 --- a/src/main/java/com/fi0x/edct/data/webconnection/GitHub.java +++ b/src/main/java/com/fi0x/edct/data/websites/GitHub.java @@ -1,6 +1,7 @@ -package com.fi0x.edct.data.webconnection; +package com.fi0x.edct.data.websites; import com.fi0x.edct.Main; +import com.fi0x.edct.data.RequestHandler; import com.fi0x.edct.data.cleanup.JSONCleanup; import com.fi0x.edct.data.structures.ENDPOINTS; import com.fi0x.edct.util.Logger; diff --git a/src/main/java/com/fi0x/edct/data/websites/Hozbase.java b/src/main/java/com/fi0x/edct/data/websites/Hozbase.java new file mode 100644 index 0000000..86fe3fd --- /dev/null +++ b/src/main/java/com/fi0x/edct/data/websites/Hozbase.java @@ -0,0 +1,39 @@ +package com.fi0x.edct.data.websites; + +import com.fi0x.edct.data.RequestHandler; +import com.fi0x.edct.data.cleanup.HTMLCleanup; +import com.fi0x.edct.data.localstorage.DBHandler; +import com.fi0x.edct.data.structures.ENDPOINTS; + +import java.util.HashMap; +import java.util.Map; + +public class Hozbase +{ + public static double getStarDistance(String system1, String system2) throws InterruptedException + { + double distance = DBHandler.getInstance().getSystemDistance(system1, system2); + if(distance != 0) return distance; + + Map parameters = getRefinedParameters(ENDPOINTS.SystemDistance.parameter, system1, system2); + String html = RequestHandler.sendHTTPRequest(ENDPOINTS.SystemDistance.url, ENDPOINTS.SystemDistance.type, parameters); + + if(html == null) return 0; + distance = HTMLCleanup.getSystemDistance(html); + + DBHandler.getInstance().setSystemDistance(system1, system2, distance); + return distance; + } + + private static Map getRefinedParameters(String[] parameter, String system1, String system2) + { + Map parameters = new HashMap<>(); + + for(String param : parameter) + { + if("systems".equals(param)) parameters.put(param, system1 + "," + system2); + } + + return parameters; + } +} diff --git a/src/main/java/com/fi0x/edct/data/webconnection/InaraCommodity.java b/src/main/java/com/fi0x/edct/data/websites/InaraCommodity.java similarity index 97% rename from src/main/java/com/fi0x/edct/data/webconnection/InaraCommodity.java rename to src/main/java/com/fi0x/edct/data/websites/InaraCommodity.java index 702d84f..9d8ff43 100644 --- a/src/main/java/com/fi0x/edct/data/webconnection/InaraCommodity.java +++ b/src/main/java/com/fi0x/edct/data/websites/InaraCommodity.java @@ -1,5 +1,6 @@ -package com.fi0x.edct.data.webconnection; +package com.fi0x.edct.data.websites; +import com.fi0x.edct.data.RequestHandler; import com.fi0x.edct.data.cleanup.HTMLCleanup; import com.fi0x.edct.data.localstorage.DBHandler; import com.fi0x.edct.data.structures.ENDPOINTS; diff --git a/src/main/java/com/fi0x/edct/data/webconnection/InaraStation.java b/src/main/java/com/fi0x/edct/data/websites/InaraStation.java similarity index 79% rename from src/main/java/com/fi0x/edct/data/webconnection/InaraStation.java rename to src/main/java/com/fi0x/edct/data/websites/InaraStation.java index 33baf97..1223db0 100644 --- a/src/main/java/com/fi0x/edct/data/webconnection/InaraStation.java +++ b/src/main/java/com/fi0x/edct/data/websites/InaraStation.java @@ -1,5 +1,6 @@ -package com.fi0x.edct.data.webconnection; +package com.fi0x.edct.data.websites; +import com.fi0x.edct.data.RequestHandler; import com.fi0x.edct.data.cleanup.HTMLCleanup; import com.fi0x.edct.data.structures.ENDPOINTS; @@ -34,16 +35,9 @@ private static Map getRefinedParameters(String[] parameter, Stri if(parameter.length > 0 && parameter[0].equals("search")) { - parameters.put(parameter[0], getRefinedStationName(stationName)); + parameters.put(parameter[0], stationName); } return parameters; } - - private static String getRefinedStationName(String stationName) - { - return stationName.replace(" ", "+") - .replace("'", "%27") - .replace("`", "%60"); - } } \ No newline at end of file diff --git a/src/main/java/com/fi0x/edct/util/NumberConverter.java b/src/main/java/com/fi0x/edct/util/NumberConverter.java new file mode 100644 index 0000000..895c16e --- /dev/null +++ b/src/main/java/com/fi0x/edct/util/NumberConverter.java @@ -0,0 +1,14 @@ +package com.fi0x.edct.util; + +public class NumberConverter +{ + public static String convertToString(long number, String space) + { + StringBuilder visual = new StringBuilder(String.valueOf(number)); + for(int i = visual.length() - 3; i > 0; i-= 3) + { + visual.insert(i, space); + } + return visual.toString(); + } +} diff --git a/src/main/resources/css/commodity.css b/src/main/resources/css/commodity.css index 69a9bd3..8368f86 100644 --- a/src/main/resources/css/commodity.css +++ b/src/main/resources/css/commodity.css @@ -7,9 +7,12 @@ -fx-padding: 5 5 0 5; } #profit { - -fx-padding: 0 5 5 5; + -fx-padding: 0 5 0 5; -fx-font-weight: bold; } +#distance { + -fx-padding: 0 5 0 5; +} .button { -fx-min-height: 45; } \ No newline at end of file diff --git a/src/main/resources/css/programinfo.css b/src/main/resources/css/programinfo.css index bf6953e..7c92bce 100644 --- a/src/main/resources/css/programinfo.css +++ b/src/main/resources/css/programinfo.css @@ -18,6 +18,14 @@ -fx-text-fill: #000000; -fx-font-weight: bold; } +#btnBugReport { + -fx-background-color: #ff6037; + -fx-text-fill: #000000; +} +#btnBugReport:hover { + -fx-background-color: #bd2600; + -fx-text-fill: #000000; +} #btnUpdate { -fx-background-color: #87ff63; -fx-text-fill: #021802; diff --git a/src/main/resources/fxml/commodity.fxml b/src/main/resources/fxml/commodity.fxml index 96b5ce0..2d07609 100644 --- a/src/main/resources/fxml/commodity.fxml +++ b/src/main/resources/fxml/commodity.fxml @@ -18,6 +18,7 @@ +