Add "added at" column for model tabs
This commit is contained in:
parent
ab209ca2c1
commit
069160f3ae
|
@ -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);
|
||||
|
|
|
@ -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 -> {
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -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
|
||||
*
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in New Issue