Merge pull request #13900 from abextm/timetracking-formatfailure
timetracking: don't fail rendering overview with dead contracts
This commit is contained in:
@@ -31,10 +31,10 @@ import java.time.Instant;
|
||||
import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Stream;
|
||||
import javax.annotation.Nullable;
|
||||
import net.runelite.api.ItemID;
|
||||
import net.runelite.client.game.ItemManager;
|
||||
import net.runelite.client.plugins.timetracking.clocks.ClockManager;
|
||||
import net.runelite.client.plugins.timetracking.farming.CropState;
|
||||
import net.runelite.client.plugins.timetracking.farming.FarmingContractManager;
|
||||
import net.runelite.client.plugins.timetracking.farming.FarmingTracker;
|
||||
import net.runelite.client.plugins.timetracking.hunter.BirdHouseTracker;
|
||||
@@ -124,14 +124,13 @@ class OverviewTabPanel extends TabContentPanel
|
||||
}
|
||||
|
||||
farmingOverviews.forEach((patchType, panel) ->
|
||||
updateItemPanel(panel, farmingTracker.getSummary(patchType), farmingTracker.getCompletionTime(patchType), null));
|
||||
updateItemPanel(panel, farmingTracker.getSummary(patchType), farmingTracker.getCompletionTime(patchType)));
|
||||
|
||||
updateItemPanel(birdHouseOverview, birdHouseTracker.getSummary(), birdHouseTracker.getCompletionTime(), null);
|
||||
updateItemPanel(farmingContractOverview, farmingContractManager.getSummary(), farmingContractManager.getCompletionTime(),
|
||||
farmingContractManager.getContractName());
|
||||
updateItemPanel(birdHouseOverview, birdHouseTracker.getSummary(), birdHouseTracker.getCompletionTime());
|
||||
updateContractPanel();
|
||||
}
|
||||
|
||||
private void updateItemPanel(OverviewItemPanel panel, SummaryState summary, long completionTime, @Nullable String farmingContract)
|
||||
private void updateItemPanel(OverviewItemPanel panel, SummaryState summary, long completionTime)
|
||||
{
|
||||
switch (summary)
|
||||
{
|
||||
@@ -151,10 +150,7 @@ class OverviewTabPanel extends TabContentPanel
|
||||
break;
|
||||
}
|
||||
case EMPTY:
|
||||
panel.updateStatus(farmingContract == null ? "Empty" : farmingContract, Color.GRAY);
|
||||
break;
|
||||
case OCCUPIED:
|
||||
panel.updateStatus(farmingContract == null ? "" : farmingContract, Color.RED);
|
||||
panel.updateStatus("Empty", Color.GRAY);
|
||||
break;
|
||||
case UNKNOWN:
|
||||
default:
|
||||
@@ -162,4 +158,45 @@ class OverviewTabPanel extends TabContentPanel
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void updateContractPanel()
|
||||
{
|
||||
switch (farmingContractManager.getSummary())
|
||||
{
|
||||
case COMPLETED:
|
||||
case IN_PROGRESS:
|
||||
switch (farmingContractManager.getContractCropState())
|
||||
{
|
||||
case HARVESTABLE:
|
||||
case GROWING:
|
||||
long duration = farmingContractManager.getCompletionTime() - Instant.now().getEpochSecond();
|
||||
|
||||
if (duration <= 0)
|
||||
{
|
||||
farmingContractOverview.updateStatus("Ready", ColorScheme.PROGRESS_COMPLETE_COLOR);
|
||||
return;
|
||||
}
|
||||
|
||||
farmingContractOverview.updateStatus("Ready " + getFormattedEstimate(duration, config.timeFormatMode()), Color.GRAY);
|
||||
return;
|
||||
case DISEASED:
|
||||
farmingContractOverview.updateStatus("Diseased", CropState.DISEASED.getColor());
|
||||
return;
|
||||
case DEAD:
|
||||
farmingContractOverview.updateStatus("Dead", CropState.DEAD.getColor());
|
||||
return;
|
||||
}
|
||||
// fallthrough
|
||||
case UNKNOWN:
|
||||
default:
|
||||
farmingContractOverview.updateStatus("Unknown", Color.GRAY);
|
||||
return;
|
||||
case EMPTY:
|
||||
farmingContractOverview.updateStatus(farmingContractManager.getContractName(), Color.GRAY);
|
||||
return;
|
||||
case OCCUPIED:
|
||||
farmingContractOverview.updateStatus(farmingContractManager.getContractName(), Color.RED);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,13 +24,16 @@
|
||||
*/
|
||||
package net.runelite.client.plugins.timetracking;
|
||||
|
||||
import java.time.DateTimeException;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.time.format.TextStyle;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.Locale;
|
||||
import javax.swing.JPanel;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
public abstract class TabContentPanel extends JPanel
|
||||
{
|
||||
private static final DateTimeFormatter DATETIME_FORMATTER_24H = DateTimeFormatter.ofPattern("HH:mm");
|
||||
@@ -72,17 +75,25 @@ public abstract class TabContentPanel extends JPanel
|
||||
}
|
||||
else
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
LocalDateTime endTime = LocalDateTime.now().plus(remainingSeconds, ChronoUnit.SECONDS);
|
||||
LocalDateTime currentTime = LocalDateTime.now();
|
||||
if (endTime.getDayOfWeek() != currentTime.getDayOfWeek())
|
||||
try
|
||||
{
|
||||
sb.append(endTime.getDayOfWeek().getDisplayName(TextStyle.SHORT, Locale.getDefault())).append(" ");
|
||||
}
|
||||
sb.append("at ");
|
||||
sb.append(formatter.format(endTime));
|
||||
StringBuilder sb = new StringBuilder();
|
||||
LocalDateTime endTime = LocalDateTime.now().plus(remainingSeconds, ChronoUnit.SECONDS);
|
||||
LocalDateTime currentTime = LocalDateTime.now();
|
||||
if (endTime.getDayOfWeek() != currentTime.getDayOfWeek())
|
||||
{
|
||||
sb.append(endTime.getDayOfWeek().getDisplayName(TextStyle.SHORT, Locale.getDefault())).append(" ");
|
||||
}
|
||||
sb.append("at ");
|
||||
sb.append(formatter.format(endTime));
|
||||
|
||||
return sb.toString();
|
||||
return sb.toString();
|
||||
}
|
||||
catch (DateTimeException e)
|
||||
{
|
||||
log.warn("error formatting absolute time: now + {}", remainingSeconds, e);
|
||||
return "Invalid";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user