Skip to content

Commit

Permalink
Merge pull request #4750 from gchq/gh-4626_sorting
Browse files Browse the repository at this point in the history
#4626 Add error messages to dashboard tables when sorting limited res…
  • Loading branch information
stroomdev66 authored Jan 31, 2025
2 parents 05b0f6e + 02079da commit 9670c92
Show file tree
Hide file tree
Showing 15 changed files with 180 additions and 71 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package stroom.data.grid.client;

import com.google.gwt.safehtml.shared.SafeHtml;

import java.util.List;

public interface MessagePanel {

void showMessage(List<String> errors);

void showMessage(SafeHtml message);

void showMessage(String message);

void hideMessage();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package stroom.data.grid.client;

import stroom.widget.util.client.SafeHtmlUtil;

import com.google.gwt.safehtml.shared.SafeHtml;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.SimplePanel;

import java.util.List;

public class MessagePanelImpl extends SimplePanel implements MessagePanel {

private Label message;
private boolean visible;

public MessagePanelImpl() {
setStyleName("dashboardVis-messageOuter");
setVisible(false);
}

@Override
public void showMessage(final List<String> errors) {
if (errors != null && errors.size() > 0) {
final SafeHtmlBuilder sb = new SafeHtmlBuilder();
for (final String error : errors) {
final String[] lines = error.split("\n");
for (final String line : lines) {
sb.appendEscaped(line);
sb.appendHtmlConstant("<br />");
}
}
showMessage(sb.toSafeHtml());
}
}

@Override
public void showMessage(final String message) {
showMessage(SafeHtmlUtil.from(message));
}

@Override
public void showMessage(final SafeHtml msg) {
if (!visible) {
if (message == null) {
message = new Label("", false);
message.setStyleName("dashboardVis-messageInner");
add(message);
}

message.getElement().setInnerSafeHtml(msg);
setVisible(true);
visible = true;
}
}

@Override
public void hideMessage() {
if (visible) {
setVisible(false);
visible = false;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,11 @@ public interface PagerView extends View, TaskMonitorFactory {
ToggleButtonView addToggleButton(Preset primaryPreset,
Preset secondaryPreset);

void addToolbarWidget(final Widget widget);

RefreshButton getRefreshButton();

void setDataWidget(final AbstractHasData<?> widget);

void setPagerVisible(boolean visible);

MessagePanel getMessagePanel();
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.cellview.client.AbstractHasData;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.Widget;
import com.gwtplatform.mvp.client.ViewImpl;

Expand All @@ -45,13 +44,13 @@ public class PagerViewImpl extends ViewImpl implements PagerView {
@UiField
FlowPanel toolbarWidgets;
@UiField
SimplePanel listContainer;
FlowPanel listContainer;

private int taskCount;
private ButtonPanel buttonPanel;
private boolean addedWidgets;

private final Widget widget;
private final MessagePanelImpl messagePanel = new MessagePanelImpl();

@Inject
public PagerViewImpl(final Binder binder) {
Expand All @@ -62,7 +61,8 @@ public PagerViewImpl(final Binder binder) {
@Override
public void setDataWidget(final AbstractHasData<?> widget) {
pager.setDisplay(widget);
listContainer.setWidget(widget);
listContainer.add(widget);
listContainer.add(messagePanel);
}

@Override
Expand All @@ -86,20 +86,10 @@ public ToggleButtonView addToggleButton(final Preset primaryPreset,
return getButtonPanel().addToggleButton(primaryPreset, secondaryPreset);
}

@Override
public void addToolbarWidget(final Widget widget) {
if (!addedWidgets) {
addedWidgets = true;
toolbarWidgets.getElement().getStyle().setProperty("paddingLeft", "var(--control__gap--horizontal)");
}
toolbarWidgets.add(widget);
}

private ButtonPanel getButtonPanel() {
if (buttonPanel == null) {
buttonPanel = new ButtonPanel();
toolbarWidgets.add(buttonPanel);
addedWidgets = true;
}
return buttonPanel;
}
Expand Down Expand Up @@ -136,6 +126,11 @@ public void onEnd(final Task task) {
};
}

@Override
public MessagePanel getMessagePanel() {
return messagePanel;
}

public interface Binder extends UiBinder<Widget, PagerViewImpl> {

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@
<g:FlowPanel ui:field="toolbarWidgets" addStyleNames="pager-toolbar"/>
<p:Pager ui:field="pager" addStyleNames="dock-min"/>
</g:FlowPanel>
<g:SimplePanel ui:field="listContainer" addStyleNames="listContainer dock-max"/>
<g:FlowPanel ui:field="listContainer" addStyleNames="listContainer dock-max"/>
</g:FlowPanel>
</ui:UiBinder>
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
import stroom.dashboard.shared.Search;
import stroom.dashboard.shared.TableComponentSettings;
import stroom.dashboard.shared.TableResultRequest;
import stroom.data.grid.client.MessagePanel;
import stroom.data.grid.client.MyDataGrid;
import stroom.data.grid.client.PagerView;
import stroom.datasource.api.v2.ConditionSet;
Expand Down Expand Up @@ -540,6 +541,8 @@ public void setData(final Result componentResult) {

private void setDataInternal(final Result componentResult) {
ignoreRangeChange = true;
final MessagePanel messagePanel = pagerView.getMessagePanel();
messagePanel.hideMessage();

try {
if (componentResult != null) {
Expand All @@ -560,6 +563,10 @@ private void setDataInternal(final Result componentResult) {

// Enable download of current results.
downloadButton.setEnabled(true);

// Show errors if there are any.
messagePanel.showMessage(tableResult.getErrors());

} else {
// Disable download of current results.
downloadButton.setEnabled(false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,14 @@
package stroom.dashboard.client.vis;

import stroom.dashboard.client.vis.VisPresenter.VisView;
import stroom.data.grid.client.MessagePanelImpl;
import stroom.data.pager.client.RefreshButton;
import stroom.widget.tab.client.view.GlobalResizeObserver;
import stroom.widget.util.client.ElementUtil;
import stroom.widget.util.client.Rect;

import com.google.gwt.dom.client.Element;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.inject.Inject;
Expand All @@ -34,21 +34,14 @@ public class VisViewImpl extends ViewImpl implements VisView {

private final FlowPanel widget;
private final SimplePanel visContainer;
private final SimplePanel messagePanel;
private final Label message;
private final MessagePanelImpl messagePanel;
private final RefreshButton refreshButton;

private VisFrame visFrame;

@Inject
public VisViewImpl() {
message = new Label("", false);
message.setStyleName("dashboardVis-messageInner");

messagePanel = new SimplePanel();
messagePanel.setStyleName("dashboardVis-messageOuter");
messagePanel.add(message);
messagePanel.setVisible(false);
messagePanel = new MessagePanelImpl();

visContainer = new SimplePanel();
visContainer.setStyleName("dashboardVis-innerLayout");
Expand Down Expand Up @@ -150,21 +143,20 @@ public void onResize() {
private Element getParentByClass(final Element element, final String className) {
Element el = element;
while (el != null &&
(el.getClassName() == null ||
!el.getClassName().contains(className))) {
(el.getClassName() == null ||
!el.getClassName().contains(className))) {
el = el.getParentElement();
}
return el;
}

@Override
public void showMessage(final String msg) {
message.setText(msg);
messagePanel.setVisible(true);
messagePanel.showMessage(msg);
}

@Override
public void hideMessage() {
messagePanel.setVisible(false);
messagePanel.hideMessage();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import stroom.dashboard.client.table.TableRowStyles;
import stroom.dashboard.client.table.cf.RulesPresenter;
import stroom.data.grid.client.DataGridSelectionEventManager;
import stroom.data.grid.client.MessagePanel;
import stroom.data.grid.client.MyDataGrid;
import stroom.data.grid.client.PagerView;
import stroom.dispatch.client.ExportFileCompleteUtil;
Expand Down Expand Up @@ -437,6 +438,8 @@ public void setData(final Result componentResult) {

private void setDataInternal(final Result componentResult) {
GWT.log("setDataInternal");
final MessagePanel messagePanel = pagerView.getMessagePanel();
messagePanel.hideMessage();

final QueryTablePreferences queryTablePreferences = getQueryTablePreferences();
ignoreRangeChange = true;
Expand Down Expand Up @@ -531,6 +534,10 @@ private void setDataInternal(final Result componentResult) {

// Enable download of current results.
downloadButton.setEnabled(true);

// Show errors if there are any.
messagePanel.showMessage(tableResult.getErrors());

} else {
// Disable download of current results.
downloadButton.setEnabled(false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
package stroom.query.client.view;

import stroom.dashboard.client.vis.VisFrame;
import stroom.data.grid.client.MessagePanelImpl;
import stroom.data.pager.client.RefreshButton;
import stroom.query.client.presenter.QueryResultVisPresenter.QueryResultVisView;
import stroom.widget.tab.client.view.GlobalResizeObserver;
Expand All @@ -25,7 +26,6 @@

import com.google.gwt.dom.client.Element;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.inject.Inject;
Expand All @@ -35,21 +35,14 @@ public class QueryResultVisViewImpl extends ViewImpl implements QueryResultVisVi

private final FlowPanel widget;
private final SimplePanel visContainer;
private final SimplePanel messagePanel;
private final Label message;
private final MessagePanelImpl messagePanel;
private final RefreshButton refreshButton;

private VisFrame visFrame;

@Inject
public QueryResultVisViewImpl() {
message = new Label("", false);
message.setStyleName("dashboardVis-messageInner");

messagePanel = new SimplePanel();
messagePanel.setStyleName("dashboardVis-messageOuter");
messagePanel.add(message);
messagePanel.setVisible(false);
messagePanel = new MessagePanelImpl();

visContainer = new SimplePanel();
visContainer.setStyleName("queryVis-innerLayout");
Expand Down Expand Up @@ -151,21 +144,20 @@ public void onResize() {
private Element getParentByClass(final Element element, final String className) {
Element el = element;
while (el != null &&
(el.getClassName() == null ||
!el.getClassName().contains(className))) {
(el.getClassName() == null ||
!el.getClassName().contains(className))) {
el = el.getParentElement();
}
return el;
}

@Override
public void showMessage(final String msg) {
message.setText(msg);
messagePanel.setVisible(true);
messagePanel.showMessage(msg);
}

@Override
public void hideMessage() {
messagePanel.setVisible(false);
messagePanel.hideMessage();
}
}
Loading

0 comments on commit 9670c92

Please sign in to comment.