Skip to content

Commit dd495af

Browse files
committed
Bug fix in log table view: sort order only applied in search, not presentation
1 parent 5e31f8d commit dd495af

File tree

2 files changed

+24
-15
lines changed

2 files changed

+24
-15
lines changed

app/logbook/olog/ui/src/main/java/org/phoebus/logbook/olog/ui/AdvancedSearchViewController.java

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
package org.phoebus.logbook.olog.ui;
2020

2121
import javafx.application.Platform;
22-
import javafx.beans.property.SimpleBooleanProperty;
22+
import javafx.beans.property.SimpleObjectProperty;
2323
import javafx.beans.property.SimpleStringProperty;
2424
import javafx.beans.value.ChangeListener;
2525
import javafx.beans.value.ObservableValue;
@@ -36,15 +36,16 @@
3636
import javafx.scene.control.RadioButton;
3737
import javafx.scene.control.TextField;
3838
import javafx.scene.control.ToggleButton;
39+
import javafx.scene.control.ToggleGroup;
3940
import javafx.scene.image.ImageView;
4041
import javafx.scene.input.KeyCode;
4142
import javafx.scene.input.KeyEvent;
4243
import javafx.scene.layout.AnchorPane;
4344
import javafx.scene.layout.GridPane;
4445
import javafx.scene.layout.HBox;
4546
import javafx.scene.layout.VBox;
46-
import org.phoebus.logbook.LogEntryLevel;
4747
import org.phoebus.logbook.LogClient;
48+
import org.phoebus.logbook.LogEntryLevel;
4849
import org.phoebus.logbook.Logbook;
4950
import org.phoebus.logbook.Tag;
5051
import org.phoebus.ui.dialog.ListSelectionPopOver;
@@ -132,7 +133,8 @@ public class AdvancedSearchViewController {
132133

133134
private final SearchParameters searchParameters;
134135

135-
private final SimpleBooleanProperty sortAscending = new SimpleBooleanProperty(false);
136+
private final SimpleObjectProperty<SortOrder> sortOrderProperty =
137+
new SimpleObjectProperty<>(SortOrder.DESCENDING);
136138
private final ObservableList<LevelSelection> levelSelections = FXCollections.observableArrayList();
137139
private final SimpleStringProperty selectedLevelsString = new SimpleStringProperty();
138140
private final List<String> levelsList = new ArrayList<>();
@@ -181,7 +183,6 @@ public void initialize() {
181183
endTime.textProperty().bindBidirectional(this.searchParameters.endTimeProperty());
182184
endTime.setOnKeyReleased(this::searchOnEnter);
183185
searchParameters.addListener((observable, oldValue, newValue) -> updateControls(newValue));
184-
sortAscending.addListener(searchOnSortChange);
185186

186187
attachmentTypes.textProperty().bindBidirectional(this.searchParameters.attachmentsProperty());
187188
attachmentTypes.setOnKeyReleased(this::searchOnEnter);
@@ -330,14 +331,16 @@ public void initialize() {
330331
levelsContextMenu.getItems().add(levelSelectionMenuItem);
331332
});
332333

333-
sortAscending.addListener((observable, oldValue, newValue) -> {
334-
sortDescRadioButton.selectedProperty().set(!newValue);
335-
sortAscRadioButton.selectedProperty().set(newValue);
336-
});
334+
sortOrderProperty.addListener(searchOnSortChange);
337335

338-
sortDescRadioButton.setOnAction(ae -> sortAscending.set(false));
336+
sortDescRadioButton.setUserData(SortOrder.DESCENDING);
337+
sortAscRadioButton.setUserData(SortOrder.ASCENDING);
339338

340-
sortAscRadioButton.setOnAction(ae -> sortAscending.set(true));
339+
ToggleGroup toggleGroup = new ToggleGroup();
340+
toggleGroup.getToggles().addAll(sortDescRadioButton, sortAscRadioButton);
341+
toggleGroup.selectToggle(sortDescRadioButton);
342+
toggleGroup.selectedToggleProperty().addListener((obs, o, n) ->
343+
sortOrderProperty.set((SortOrder) n.getUserData()));
341344

342345
gridPane.setOnMouseClicked(e -> levelsToggleButton.setSelected(false));
343346

@@ -428,8 +431,8 @@ protected List<String> getValidatedLevelsSelection(String levels) {
428431
return levelsFromQueryString.stream().filter(levelsList::contains).collect(Collectors.toList());
429432
}
430433

431-
public SimpleBooleanProperty getSortAscending() {
432-
return sortAscending;
434+
public boolean getSortAscending() {
435+
return sortOrderProperty.get().equals(SortOrder.ASCENDING);
433436
}
434437

435438
private void searchOnEnter(KeyEvent e) {
@@ -440,7 +443,8 @@ private void searchOnEnter(KeyEvent e) {
440443

441444
private final ChangeListener<? super String> searchOnTextChange = (options, oldValue, newValue) -> searchCallback.run();
442445

443-
private final ChangeListener<? super Boolean> searchOnSortChange = (options, oldValue, newValue) -> searchCallback.run();
446+
private final ChangeListener<? super SortOrder> searchOnSortChange =
447+
(options, oldValue, newValue) -> searchCallback.run();
444448

445449
private void setSelectedLevelsString() {
446450
selectedLevelsString.set(levelSelections.stream().filter(LevelSelection::isSelected)
@@ -498,4 +502,8 @@ public CheckBox getCheckBox() {
498502
}
499503
}
500504

505+
private enum SortOrder {
506+
DESCENDING,
507+
ASCENDING
508+
}
501509
}

app/logbook/olog/ui/src/main/java/org/phoebus/logbook/olog/ui/LogEntryTableViewController.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,7 @@ public void search() {
378378

379379
Map<String, String> params =
380380
LogbookQueryUtil.parseHumanReadableQueryString(ologQueryManager.getOrAddQuery(queryString).getQuery());
381-
params.put("sort", advancedSearchViewController.getSortAscending().get() ? "up" : "down");
381+
params.put("sort", advancedSearchViewController.getSortAscending() ? "up" : "down");
382382
params.put("from", Integer.toString(pagination.getCurrentPageIndex() * pageSizeProperty.get()));
383383
params.put("size", Integer.toString(pageSizeProperty.get()));
384384

@@ -444,7 +444,8 @@ private void refresh() {
444444
List<TableViewListItem> selectedLogEntries = new ArrayList<>(tableView.getSelectionModel().getSelectedItems());
445445

446446
List<LogEntry> logEntries = searchResult.getLogs();
447-
logEntries.sort((o1, o2) -> -(o1.getCreatedDate().compareTo(o2.getCreatedDate())));
447+
logEntries.sort((o1, o2) -> advancedSearchViewController.getSortAscending() ? o1.getCreatedDate().compareTo(o2.getCreatedDate()) :
448+
-(o1.getCreatedDate().compareTo(o2.getCreatedDate())));
448449

449450
boolean showDetailsBoolean = showDetails.get();
450451
var logs = logEntries.stream().map(le -> new TableViewListItem(le, showDetailsBoolean)).toList();

0 commit comments

Comments
 (0)