package ro.nextreports.server.web.dashboard; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.panel.FeedbackPanel; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.LoadableDetachableModel; import org.apache.wicket.spring.injection.annot.SpringBean; import ro.nextreports.server.service.StorageService; import ro.nextreports.server.web.core.UrlUtil; public class DashboardEmbedCodePanel extends Panel { private static final long serialVersionUID = 1L; private FeedbackPanel feedbackPanel; private ErrorLoadableDetachableModel model; @SpringBean StorageService storageService; public DashboardEmbedCodePanel(String id, final String dashboardId) { super(id); model = new ErrorLoadableDetachableModel(dashboardId); final Label codeLabel = new Label("code", model); codeLabel.setEscapeModelStrings(false); codeLabel.setOutputMarkupId(true); add(codeLabel); feedbackPanel = new FeedbackPanel("feedback"); feedbackPanel.setOutputMarkupId(true); add(feedbackPanel); } private String getCode(String dashboardId, boolean error) { if (error) { return ""; } StringBuilder sb = new StringBuilder(); String url = UrlUtil.getAppBaseUrl(storageService). append("dashboard?dashboardId=").append(dashboardId). toString(); sb.append(url); return sb.toString(); } private class ErrorLoadableDetachableModel extends LoadableDetachableModel<String> { private static final long serialVersionUID = 1L; private boolean error = false; private String dashboardId; public ErrorLoadableDetachableModel(String dashboardId) { super(); this.dashboardId = dashboardId; } public void setError(boolean error) { this.error = error; } @Override protected String load() { return getCode(dashboardId, error); } } }