There is one more thing regarding the same code. Here I am adding
ChartPanel in the constructor of LearningCurveChartPanel and as the
LearningCurveChartPanel loads the chart panel is loaded with the data that
is returned by renderChart. I want to do such that the ChartPanel only
renders when I click a button. How do I change the below line to
chartPanel = *new* ChartPanel(*MID_CHART_CONTAINER*,
LoadableDetachableModel.*of*(*this*::renderChart));
And how do I define such thing in the onClick event?
Best,
Sibgha
On Sun, Apr 28, 2019 at 9:29 PM Sibgha Nazir <[email protected]> wrote:
> Hi,
>
> This question is related to LoadableDetachable Model.
>
> I have a wicket panel, LearningCurveChartPanel.
>
> *public* LearningCurveChartPanel(String aId, IModel<AnnotatorState>
> aModel)
>
> {
>
> *super*(aId);
>
> model = aModel;
>
>
> //initially the chart is empty. passing empty model
>
> chartPanel = *new* ChartPanel(*MID_CHART_CONTAINER*,
>
> LoadableDetachableModel.*of*(*this*::renderChart));
>
>
>
> chartPanel.setOutputMarkupId(*true*);
>
> add(chartPanel);
>
> }
>
> @OnEvent
>
> *public* *void* onRenderAnnotations(RenderAnnotationsEvent aEvent)
>
> {
>
> LOG.trace("rendered annotation event");
>
>
> aEvent.getRequestHandler().add(*this*);
>
> }
>
>
> which is rendering a ChartPanel. The ChartPanel is like this
>
> *public* ChartPanel(String aId, LoadableDetachableModel<LearningCurve>
> loadableDetachableModel)
>
> {
>
> *super*(aId);
>
>
>
> chartModel = (loadableDetachableModel);
>
>
> chart = *new* WebMarkupContainer(*MID_CHART_CONTAINER*);
>
> chart.setMarkupId("canvas");
>
> chart.setOutputMarkupId(*true*);
>
> add(chart);
>
>
> chartAjaxBejavior = *new* ChartAjaxBejavior();
>
> add(chartAjaxBejavior);
>
> }
>
>
> The chartModel has the right data and it renders correctly with the data
> that is fed to it from LearningCurveChartPanel.
>
> But when the onRenderAnnotation event of the LearningCurveChartPanel
> triggers what I am trying to do is to update the (re-render) the Chart
> Panel inside it. It does re-render the chart panel but the model stays the
> same. I want to implement it such that the model of the ChartPanel updates
> and when it re-renders it as the latest data when the onRenderAnnotation
> event was triggered.
>
> Please guide me in the right direction.
>
> Best,
> Sibgha
>
>
>
>