mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-17 17:50:56 +00:00
Implemented a dirty update mechanism for the data mining frontend
This commit is contained in:
1 parent
fef56faa97
commit
f815b5cbda
6 files changed
+53
-28
No files matched your search
+2
@@ -7,6 +7,8 @@ import com.sap.sse.gwt.client.shared.components.Component;
|
||||
|
||||
public interface DataRetrieverChainDefinitionProvider extends Component<Settings> {
|
||||
|
||||
public void updateRetrieverChains();
|
||||
|
||||
public DataRetrieverChainDefinitionDTO getDataRetrieverChainDefinition();
|
||||
|
||||
public void addDataRetrieverChainDefinitionChangedListener(DataRetrieverChainDefinitionChangedListener listener);
|
||||
|
||||
+2
@@ -7,6 +7,8 @@ import com.sap.sse.datamining.shared.impl.dto.FunctionDTO;
|
||||
import com.sap.sse.gwt.client.shared.components.Component;
|
||||
|
||||
public interface StatisticProvider extends Component<Settings> {
|
||||
|
||||
public void updateExtractionFunctions();
|
||||
|
||||
public FunctionDTO getStatisticToCalculate();
|
||||
|
||||
|
||||
+40
-12
@@ -21,6 +21,7 @@ import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.datamining.DataMiningControls;
|
||||
import com.sap.sailing.gwt.ui.datamining.DataMiningServiceAsync;
|
||||
import com.sap.sailing.gwt.ui.datamining.DataRetrieverChainDefinitionChangedListener;
|
||||
import com.sap.sailing.gwt.ui.datamining.DataRetrieverChainDefinitionProvider;
|
||||
import com.sap.sailing.gwt.ui.datamining.FilterSelectionProvider;
|
||||
import com.sap.sailing.gwt.ui.datamining.GroupingChangedListener;
|
||||
import com.sap.sailing.gwt.ui.datamining.SelectionChangedListener;
|
||||
@@ -47,22 +48,27 @@ public class BufferingQueryDefinitionProviderWithControls extends AbstractQueryD
|
||||
private static final int queryBufferTimeInMillis = 200;
|
||||
|
||||
private final Timer queryDefinitionReleaseTimer;
|
||||
private boolean isUpdatingComponents;
|
||||
|
||||
private final DockLayoutPanel mainPanel;
|
||||
private FlowPanel controlsPanel;
|
||||
|
||||
private StatisticProvider statisticProvider;
|
||||
private SimpleDataRetrieverChainDefinitionProvider retrieverChainProvider;
|
||||
|
||||
private DataRetrieverChainDefinitionProvider retrieverChainProvider;
|
||||
private MultiDimensionalGroupingProvider groupBySelectionPanel;
|
||||
|
||||
private FilterSelectionProvider selectionProvider;
|
||||
|
||||
public BufferingQueryDefinitionProviderWithControls(DataMiningSession session, StringMessages stringMessages, SailingServiceAsync sailingService, DataMiningServiceAsync dataMiningService, ErrorReporter errorReporter) {
|
||||
super(stringMessages, sailingService, dataMiningService, errorReporter);
|
||||
queryDefinitionReleaseTimer = new Timer() {
|
||||
@Override
|
||||
public void run() {
|
||||
notifyQueryDefinitionChanged();
|
||||
}
|
||||
};
|
||||
isUpdatingComponents = false;
|
||||
|
||||
mainPanel = new DockLayoutPanel(Unit.PX);
|
||||
|
||||
mainPanel.addNorth(createFunctionsPanel(), 92);
|
||||
|
||||
selectionProvider = new ListRetrieverChainFilterSelectionProvider(session, stringMessages, dataMiningService, errorReporter, retrieverChainProvider);
|
||||
@@ -73,13 +79,6 @@ public class BufferingQueryDefinitionProviderWithControls extends AbstractQueryD
|
||||
}
|
||||
});
|
||||
mainPanel.add(selectionProvider.getEntryWidget());
|
||||
|
||||
queryDefinitionReleaseTimer = new Timer() {
|
||||
@Override
|
||||
public void run() {
|
||||
notifyQueryDefinitionChanged();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private Widget createFunctionsPanel() {
|
||||
@@ -123,13 +122,42 @@ public class BufferingQueryDefinitionProviderWithControls extends AbstractQueryD
|
||||
});
|
||||
addControl(clearSelectionButton);
|
||||
|
||||
Button reloadButton = new Button(getStringMessages().reload());
|
||||
reloadButton.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
//FIXME This is just a quick fix for bug 2176
|
||||
isUpdatingComponents = true;
|
||||
// This causes all other providers to update their components, if the selected
|
||||
// statistic changed. If not, will the other providers update their components,
|
||||
// when another statistic is selected.
|
||||
// This works because, all other providers listen to the statistic provider in
|
||||
// the current implementation.
|
||||
statisticProvider.updateExtractionFunctions();
|
||||
}
|
||||
});
|
||||
addControl(reloadButton);
|
||||
|
||||
SplitLayoutPanel controlsSplitPanel = new SplitLayoutPanel(15);
|
||||
controlsSplitPanel.addWest(new ScrollPanel(statisticAndRetrieverChainPanel), 800);
|
||||
controlsSplitPanel.addEast(new ScrollPanel(controlsPanel), 130);
|
||||
controlsSplitPanel.addEast(new ScrollPanel(controlsPanel), 150);
|
||||
controlsSplitPanel.add(groupBySelectionScrollPanel);
|
||||
return controlsSplitPanel;
|
||||
}
|
||||
|
||||
//FIXME This is just a quick fix for bug 2176
|
||||
@Override
|
||||
protected void notifyQueryDefinitionChanged() {
|
||||
if (isUpdatingComponents) {
|
||||
// This ensures, that the retriever chains are reloaded. This is necessary, because
|
||||
// they have UUIDs, that change after a bundle refresh.
|
||||
retrieverChainProvider.updateRetrieverChains();
|
||||
isUpdatingComponents = false;
|
||||
} else {
|
||||
super.notifyQueryDefinitionChanged();
|
||||
}
|
||||
}
|
||||
|
||||
private void scheduleQueryDefinitionChanged() {
|
||||
queryDefinitionReleaseTimer.schedule(queryBufferTimeInMillis);
|
||||
}
|
||||
|
||||
+2
-1
@@ -27,6 +27,7 @@ import com.google.gwt.view.client.SingleSelectionModel;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.datamining.DataMiningServiceAsync;
|
||||
import com.sap.sailing.gwt.ui.datamining.DataRetrieverChainDefinitionChangedListener;
|
||||
import com.sap.sailing.gwt.ui.datamining.DataRetrieverChainDefinitionProvider;
|
||||
import com.sap.sailing.gwt.ui.datamining.FilterSelectionPresenter;
|
||||
import com.sap.sailing.gwt.ui.datamining.FilterSelectionProvider;
|
||||
import com.sap.sailing.gwt.ui.datamining.SelectionChangedListener;
|
||||
@@ -62,7 +63,7 @@ public class ListRetrieverChainFilterSelectionProvider implements FilterSelectio
|
||||
|
||||
public ListRetrieverChainFilterSelectionProvider(DataMiningSession session, StringMessages stringMessages,
|
||||
DataMiningServiceAsync dataMiningService, ErrorReporter errorReporter,
|
||||
SimpleDataRetrieverChainDefinitionProvider retrieverChainProvider) {
|
||||
DataRetrieverChainDefinitionProvider retrieverChainProvider) {
|
||||
this.session = session;
|
||||
this.stringMessages = stringMessages;
|
||||
this.dataMiningService = dataMiningService;
|
||||
|
||||
+3
-2
@@ -84,12 +84,13 @@ public class SimpleDataRetrieverChainDefinitionProvider implements DataRetriever
|
||||
String currentSourceType = currentStatisticToCalculate == null ? null : currentStatisticToCalculate.getSourceTypeName();
|
||||
currentStatisticToCalculate = newStatisticToCalculate;
|
||||
if (!Objects.equals(currentSourceType, newStatisticToCalculate.getSourceTypeName())) {
|
||||
updateAvailableRetrieverChains();
|
||||
updateRetrieverChains();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void updateAvailableRetrieverChains() {
|
||||
@Override
|
||||
public void updateRetrieverChains() {
|
||||
dataMiningService.getDataRetrieverChainDefinitionsFor(currentStatisticToCalculate, LocaleInfo.getCurrentLocale().getLocaleName(),
|
||||
new AsyncCallback<Iterable<DataRetrieverChainDefinitionDTO>>() {
|
||||
@Override
|
||||
|
||||
+4
-13
@@ -69,7 +69,8 @@ public class SimpleStatisticProvider implements StatisticProvider {
|
||||
updateExtractionFunctions();
|
||||
}
|
||||
|
||||
private void updateExtractionFunctions() {
|
||||
@Override
|
||||
public void updateExtractionFunctions() {
|
||||
dataMiningService.getAllStatistics(LocaleInfo.getCurrentLocale().getLocaleName(), new AsyncCallback<Iterable<FunctionDTO>>() {
|
||||
|
||||
@Override
|
||||
@@ -78,24 +79,14 @@ public class SimpleStatisticProvider implements StatisticProvider {
|
||||
|
||||
if (extractionFunctions.iterator().hasNext()) {
|
||||
extractionFunctionSet.addAll(extractionFunctions);
|
||||
|
||||
StrippedFunctionDTO previousExtractionFunction = extractionFunctionListBox.getValue();
|
||||
updateExtractionFunctionListBox();
|
||||
StrippedFunctionDTO newExtractionFunction = extractionFunctionListBox.getValue();
|
||||
|
||||
String previousBaseDataType = baseDataTypeListBox.getValue();
|
||||
updateBaseDataTypeListBox();
|
||||
String newBaseDataType = baseDataTypeListBox.getValue();
|
||||
|
||||
if (!newExtractionFunction.equals(previousExtractionFunction) ||
|
||||
!newBaseDataType.equals(previousBaseDataType)) {
|
||||
notifyListeners();
|
||||
}
|
||||
} else {
|
||||
clearListBox(extractionFunctionListBox);
|
||||
clearListBox(baseDataTypeListBox);
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in new issue
Block a user