Skip to content

Commit 40667f8

Browse files
committed
#4861 Allow embedded queries to have a set page size
1 parent 3ead61b commit 40667f8

File tree

8 files changed

+89
-10
lines changed

8 files changed

+89
-10
lines changed

stroom-core-client/src/main/java/stroom/dashboard/client/embeddedquery/BasicEmbeddedQuerySettingsPresenter.java

+19-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@
2525
import stroom.docref.DocRef;
2626
import stroom.explorer.client.presenter.DocSelectionBoxPresenter;
2727
import stroom.query.shared.QueryDoc;
28+
import stroom.query.shared.QueryTablePreferences;
2829
import stroom.security.shared.DocumentPermission;
30+
import stroom.util.shared.GwtNullSafe;
2931
import stroom.util.shared.ModelStringUtil;
3032

3133
import com.google.gwt.user.client.ui.Focus;
@@ -83,6 +85,11 @@ public void read(final ComponentConfig componentConfig) {
8385
getView().setQueryOnOpen(automate.isOpen());
8486
getView().setAutoRefresh(automate.isRefresh());
8587
getView().setRefreshInterval(automate.getRefreshInterval());
88+
getView().setPageSize(GwtNullSafe.getOrElse(
89+
settings,
90+
EmbeddedQueryComponentSettings::getQueryTablePreferences,
91+
QueryTablePreferences::getPageSize,
92+
100));
8693
}
8794

8895
@Override
@@ -94,6 +101,10 @@ public ComponentConfig write(final ComponentConfig componentConfig) {
94101
}
95102

96103
private EmbeddedQueryComponentSettings writeSettings(final EmbeddedQueryComponentSettings settings) {
104+
QueryTablePreferences queryTablePreferences = settings.getQueryTablePreferences();
105+
QueryTablePreferences.Builder builder = QueryTablePreferences.copy(queryTablePreferences);
106+
builder.pageSize(getView().getPageSize());
107+
97108
return settings
98109
.copy()
99110
.queryRef(getQuery())
@@ -102,6 +113,7 @@ private EmbeddedQueryComponentSettings writeSettings(final EmbeddedQueryComponen
102113
.refresh(getView().isAutoRefresh())
103114
.refreshInterval(getView().getRefreshInterval())
104115
.build())
116+
.queryTablePreferences(builder.build())
105117
.build();
106118
}
107119

@@ -136,7 +148,9 @@ public boolean isDirty(final ComponentConfig componentConfig) {
136148
final EmbeddedQueryComponentSettings newSettings = writeSettings(oldSettings);
137149

138150
final boolean equal = Objects.equals(oldSettings.getQueryRef(), newSettings.getQueryRef()) &&
139-
Objects.equals(oldSettings.getAutomate(), newSettings.getAutomate());
151+
Objects.equals(oldSettings.getAutomate(), newSettings.getAutomate()) &&
152+
Objects.equals(oldSettings.getQueryTablePreferences(),
153+
newSettings.getQueryTablePreferences());
140154

141155
return !equal;
142156
}
@@ -157,5 +171,9 @@ public interface BasicEmbeddedQuerySettingsView
157171
String getRefreshInterval();
158172

159173
void setRefreshInterval(String refreshInterval);
174+
175+
int getPageSize();
176+
177+
void setPageSize(int pageSize);
160178
}
161179
}

stroom-core-client/src/main/java/stroom/dashboard/client/embeddedquery/BasicEmbeddedQuerySettingsViewImpl.java

+16
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import stroom.dashboard.client.embeddedquery.BasicEmbeddedQuerySettingsPresenter.BasicEmbeddedQuerySettingsView;
2020
import stroom.widget.tickbox.client.view.CustomCheckBox;
21+
import stroom.widget.valuespinner.client.ValueSpinner;
2122

2223
import com.google.gwt.dom.client.Style.Unit;
2324
import com.google.gwt.uibinder.client.UiBinder;
@@ -48,10 +49,15 @@ public class BasicEmbeddedQuerySettingsViewImpl
4849
CustomCheckBox autoRefresh;
4950
@UiField
5051
TextBox refreshInterval;
52+
@UiField
53+
ValueSpinner pageSize;
5154

5255
@Inject
5356
public BasicEmbeddedQuerySettingsViewImpl(final Binder binder) {
5457
widget = binder.createAndBindUi(this);
58+
pageSize.setValue(100);
59+
pageSize.setMin(1);
60+
pageSize.setMax(10000);
5561
}
5662

5763
@Override
@@ -117,6 +123,16 @@ public void setRefreshInterval(final String refreshInterval) {
117123
this.refreshInterval.setText(refreshInterval);
118124
}
119125

126+
@Override
127+
public int getPageSize() {
128+
return pageSize.getIntValue();
129+
}
130+
131+
@Override
132+
public void setPageSize(final int pageSize) {
133+
this.pageSize.setValue(pageSize);
134+
}
135+
120136
public void onResize() {
121137
((RequiresResize) widget).onResize();
122138
}

stroom-core-client/src/main/java/stroom/dashboard/client/embeddedquery/EmbeddedQueryPresenter.java

+1
Original file line numberDiff line numberDiff line change
@@ -745,6 +745,7 @@ public void run() {
745745
protected void changeSettings() {
746746
super.changeSettings();
747747
if (currentTablePresenter != null) {
748+
currentTablePresenter.changeSettings();
748749
currentTablePresenter.refresh();
749750
}
750751
loadEmbeddedQuery();

stroom-core-client/src/main/java/stroom/dashboard/client/table/TablePresenter.java

+1-3
Original file line numberDiff line numberDiff line change
@@ -1020,9 +1020,7 @@ private void updatePageSize() {
10201020
final int start = dataGrid.getVisibleRange().getStart();
10211021
dataGrid.setVisibleRange(new Range(
10221022
start,
1023-
tableComponentSettings.getPageSize() == null
1024-
? 100
1025-
: tableComponentSettings.getPageSize()));
1023+
GwtNullSafe.getOrElse(tableComponentSettings, TableComponentSettings::getPageSize, 100)));
10261024
}
10271025

10281026
@Override

stroom-core-client/src/main/java/stroom/query/client/presenter/QueryResultTablePresenter.java

+19-1
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@
6969
import com.google.gwt.dom.client.Style.Unit;
7070
import com.google.gwt.safecss.shared.SafeStylesBuilder;
7171
import com.google.gwt.safehtml.shared.SafeHtml;
72+
import com.google.gwt.view.client.Range;
7273
import com.google.inject.Inject;
7374
import com.google.inject.Provider;
7475
import com.google.web.bindery.event.shared.EventBus;
@@ -286,6 +287,21 @@ private void setApplyValueFilters(final boolean applyValueFilters) {
286287
}
287288
}
288289

290+
public void changeSettings() {
291+
final QueryTablePreferences queryTablePreferences = getQueryTablePreferences();
292+
updatePageSize(queryTablePreferences);
293+
294+
// Update styles and re-render
295+
tableRowStyles.setConditionalFormattingRules(queryTablePreferences.getConditionalFormattingRules());
296+
}
297+
298+
private void updatePageSize(final QueryTablePreferences queryTablePreferences) {
299+
final int start = dataGrid.getVisibleRange().getStart();
300+
dataGrid.setVisibleRange(new Range(
301+
start,
302+
GwtNullSafe.getOrElse(queryTablePreferences, QueryTablePreferences::getPageSize, 100)));
303+
}
304+
289305
private void setPause(final boolean pause,
290306
final boolean refresh) {
291307
// If currently paused then refresh if we are allowed.
@@ -781,7 +797,9 @@ public void setQueryTablePreferencesConsumer(final Consumer<QueryTablePreference
781797

782798
public void updateQueryTablePreferences() {
783799
// Change value filter state.
784-
setApplyValueFilters(queryTablePreferencesSupplier.get().applyValueFilters());
800+
final QueryTablePreferences queryTablePreferences = queryTablePreferencesSupplier.get();
801+
setApplyValueFilters(queryTablePreferences.applyValueFilters());
802+
updatePageSize(queryTablePreferences);
785803
refresh();
786804
}
787805

stroom-core-client/src/main/resources/stroom/dashboard/client/embeddedquery/BasicEmbeddedQuerySettingsViewImpl.ui.xml

+7-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
22
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
33
xmlns:g="urn:import:com.google.gwt.user.client.ui"
4-
xmlns:v="urn:import:stroom.widget.tickbox.client.view"
4+
xmlns:tickbox="urn:import:stroom.widget.tickbox.client.view"
5+
xmlns:valuespinner="urn:import:stroom.widget.valuespinner.client"
56
xmlns:form="urn:import:stroom.widget.form.client">
67
<g:FlowPanel styleName="max form">
78
<form:FormGroup identity="basicQuerySettingsId" label="Id">
@@ -14,13 +15,16 @@
1415
<g:SimplePanel ui:field="queryRef" addStyleNames="w-100"/>
1516
</form:FormGroup>
1617
<form:FormGroup>
17-
<v:CustomCheckBox ui:field="queryOnOpen" identity="basicQuerySettingsQueryOnOpen" label="Query On Open"/>
18+
<tickbox:CustomCheckBox ui:field="queryOnOpen" identity="basicQuerySettingsQueryOnOpen" label="Query On Open"/>
1819
</form:FormGroup>
1920
<form:FormGroup>
20-
<v:CustomCheckBox ui:field="autoRefresh" identity="basicQuerySettingsAutoRefresh" label="Auto Refresh"/>
21+
<tickbox:CustomCheckBox ui:field="autoRefresh" identity="basicQuerySettingsAutoRefresh" label="Auto Refresh"/>
2122
</form:FormGroup>
2223
<form:FormGroup identity="basicQuerySettingsRefreshInterval" label="Refresh Interval">
2324
<g:TextBox ui:field="refreshInterval" addStyleNames="w-100"/>
2425
</form:FormGroup>
26+
<form:FormGroup identity="basicTableSettingsPageSize" label="Table Page Size">
27+
<valuespinner:ValueSpinner ui:field="pageSize" width="200px"/>
28+
</form:FormGroup>
2529
</g:FlowPanel>
2630
</ui:UiBinder>

stroom-core-client/src/main/resources/stroom/dashboard/client/table/BasicTableSettingsViewImpl.ui.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
33
xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:i="urn:import:stroom.item.client"
44
xmlns:tickbox="urn:import:stroom.widget.tickbox.client.view"
5-
xmlns:v="urn:import:stroom.widget.valuespinner.client"
5+
xmlns:valuespinner="urn:import:stroom.widget.valuespinner.client"
66
xmlns:form="urn:import:stroom.widget.form.client">
77
<g:FlowPanel styleName="max form">
88
<form:FormGroup identity="basicTableSettingsId" label="Id">
@@ -27,7 +27,7 @@
2727
<g:TextBox ui:field="maxResults" addStyleNames="w-100"/>
2828
</form:FormGroup>
2929
<form:FormGroup identity="basicTableSettingsPageSize" label="Table Page Size">
30-
<v:ValueSpinner ui:field="pageSize" width="200px"/>
30+
<valuespinner:ValueSpinner ui:field="pageSize" width="200px"/>
3131
</form:FormGroup>
3232
<form:FormGroup>
3333
<tickbox:CustomCheckBox ui:field="showDetail" identity="basicTableSettingsShowGroupDetail" label="Show Group Detail"/>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
* Issue **#4861** : Allow embedded queries to have a set page size.
2+
3+
4+
```sh
5+
# ********************************************************************************
6+
# Issue title: Embedded Query, I cant' set the Table Page Size
7+
# Issue link: https://github.com/gchq/stroom/issues/4861
8+
# ********************************************************************************
9+
10+
# ONLY the top line will be included as a change entry in the CHANGELOG.
11+
# The entry should be in GitHub flavour markdown and should be written on a SINGLE
12+
# line with no hard breaks. You can have multiple change files for a single GitHub issue.
13+
# The entry should be written in the imperative mood, i.e. 'Fix nasty bug' rather than
14+
# 'Fixed nasty bug'.
15+
#
16+
# Examples of acceptable entries are:
17+
#
18+
#
19+
# * Issue **123** : Fix bug with an associated GitHub issue in this repository
20+
#
21+
# * Issue **namespace/other-repo#456** : Fix bug with an associated GitHub issue in another repository
22+
#
23+
# * Fix bug with no associated GitHub issue.
24+
```

0 commit comments

Comments
 (0)