Add "added at" column for model tabs

This commit is contained in:
0xb00bface 2021-09-06 17:31:47 +02:00
parent ab209ca2c1
commit 069160f3ae
8 changed files with 45 additions and 4 deletions

View File

@ -281,6 +281,16 @@ public class JavaFxModel implements Model {
return delegate.getLastRecorded();
}
@Override
public Instant getAddedTimestamp() {
return delegate.getAddedTimestamp();
}
@Override
public void setAddedTimestamp(Instant timestamp) {
delegate.setAddedTimestamp(timestamp);
}
@Override
public int compareTo(Model o) {
return delegate.compareTo(o);

View File

@ -3,6 +3,7 @@ package ctbrec.ui.tabs.recorded;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@ -34,6 +35,7 @@ import ctbrec.ui.action.PlayAction;
import ctbrec.ui.action.SetPortraitAction;
import ctbrec.ui.action.StartRecordingAction;
import ctbrec.ui.controls.CustomMouseBehaviorContextMenu;
import ctbrec.ui.controls.DateTimeCellFactory;
import ctbrec.ui.controls.Dialogs;
import ctbrec.ui.controls.SearchBox;
import ctbrec.ui.controls.autocomplete.AutoFillTextField;
@ -129,7 +131,6 @@ public abstract class AbstractRecordedModelsTab extends Tab implements TabSelect
}
protected void createGui() {
Config config = Config.getInstance();
grid.setPadding(new Insets(5));
grid.setHgap(5);
grid.setVgap(5);
@ -265,6 +266,14 @@ public abstract class AbstractRecordedModelsTab extends Tab implements TabSelect
url.setEditable(false);
}
protected void addAddedTimestampColumn(int columnIdx) {
TableColumn<JavaFxModel, Instant> tc = addTableColumn("addedTimestamp", "added at", columnIdx, 400);
tc.setCellFactory(new DateTimeCellFactory<>());
tc.setCellValueFactory(param -> new SimpleObjectProperty<>(param.getValue().getAddedTimestamp()));
tc.setPrefWidth(150);
tc.setEditable(false);
}
protected void addNotesColumn(int columnIdx) {
TableColumn<JavaFxModel, String> notes = addTableColumn("notes", "Notes", columnIdx, 400);
notes.setCellValueFactory(cdf -> {

View File

@ -54,6 +54,7 @@ public class RecordLaterTab extends AbstractRecordedModelsTab implements TabSele
addPortraitColumn(columnIdx++);
addModelColumn(columnIdx++);
addUrlColumn(columnIdx++);
addAddedTimestampColumn(columnIdx++);
addNotesColumn(columnIdx);
var root = new BorderPane();

View File

@ -151,6 +151,7 @@ public class RecordedModelsTab extends AbstractRecordedModelsTab implements TabS
columns.add(lastRecorded);
addTableColumnIfEnabled(lastRecorded);
addAddedTimestampColumn(idx++);
addNotesColumn(idx);
addModelBox.getChildren().add(3, pauseAll);
@ -190,8 +191,8 @@ public class RecordedModelsTab extends AbstractRecordedModelsTab implements TabS
private void updatePriority(JavaFxModel model, int priority) {
try {
if (priority < 0 || priority > 1000) {
var msg = "Priority has to be between 0 and 1000";
if (priority < 0 || priority > Model.MAX_PRIO) {
var msg = "Priority has to be between 0 and " + Model.MAX_PRIO;
Dialogs.showError(table.getScene(), "Invalid value", msg, null);
} else {
model.setPriority(priority);
@ -396,7 +397,7 @@ public class RecordedModelsTab extends AbstractRecordedModelsTab implements TabS
} else {
prio++;
}
prio = Math.min(Math.max(0, prio), 100);
prio = Math.min(Math.max(0, prio), Model.MAX_PRIO);
m.setPriority(prio);
updatePriority(m, prio);
}

View File

@ -41,6 +41,7 @@ public abstract class AbstractModel implements Model {
private Instant lastSeen;
private Instant lastRecorded;
private Instant recordUntil;
private Instant addedTimestamp = Instant.EPOCH;
private SubsequentAction recordUntilSubsequentAction;
@Override
@ -253,6 +254,16 @@ public abstract class AbstractModel implements Model {
this.lastRecorded = lastRecorded;
}
@Override
public Instant getAddedTimestamp() {
return addedTimestamp;
}
@Override
public void setAddedTimestamp(Instant timestamp) {
this.addedTimestamp = timestamp;
}
@Override
public boolean isRecordingTimeLimited() {
return !getRecordUntil().equals(Instant.ofEpochMilli(RECORD_INDEFINITELY));

View File

@ -21,6 +21,7 @@ import ctbrec.sites.Site;
public interface Model extends Comparable<Model>, Serializable {
public static final long RECORD_INDEFINITELY = 9000000000000000000l;
public static final int MAX_PRIO = 10_000;
public enum State {
ONLINE("online"),
@ -103,6 +104,10 @@ public interface Model extends Comparable<Model>, Serializable {
public Instant getLastRecorded();
public void setAddedTimestamp(Instant timestamp);
public Instant getAddedTimestamp();
/**
* Determines the stream resolution for this model
*

View File

@ -65,6 +65,8 @@ public class ModelJsonAdapter extends JsonAdapter<Model> {
model.setLastSeen(Instant.ofEpochMilli(reader.nextLong()));
} else if (key.equals("lastRecorded")) {
model.setLastRecorded(Instant.ofEpochMilli(reader.nextLong()));
} else if (key.equals("addedTimestamp")) {
model.setAddedTimestamp(Instant.ofEpochMilli(reader.nextLong()));
} else if (key.equals("recordUntil")) {
model.setRecordUntil(Instant.ofEpochMilli(reader.nextLong()));
} else if (key.equals("recordUntilSubsequentAction")) {
@ -112,6 +114,7 @@ public class ModelJsonAdapter extends JsonAdapter<Model> {
writer.name("markedForLater").value(model.isMarkedForLaterRecording());
writer.name("lastSeen").value(model.getLastSeen().toEpochMilli());
writer.name("lastRecorded").value(model.getLastRecorded().toEpochMilli());
writer.name("addedTimestamp").value(model.getAddedTimestamp().toEpochMilli());
writer.name("recordUntil").value(model.getRecordUntil().toEpochMilli());
writer.name("recordUntilSubsequentAction").value(model.getRecordUntilSubsequentAction().name());
writer.name("siteSpecific");

View File

@ -271,6 +271,7 @@ public class NextGenLocalRecorder implements Recorder {
recorderLock.lock();
try {
models.add(model);
model.setAddedTimestamp(Instant.now());
config.getSettings().models.add(model);
config.save();
} catch (IOException e) {