Package nl.topicus.onderwijs.dashboard.web.pages

Source Code of nl.topicus.onderwijs.dashboard.web.pages.DashboardPage

package nl.topicus.onderwijs.dashboard.web.pages;

import java.util.ArrayList;

import nl.topicus.onderwijs.dashboard.datasources.AverageRequestTime;
import nl.topicus.onderwijs.dashboard.datasources.Commits;
import nl.topicus.onderwijs.dashboard.datasources.Events;
import nl.topicus.onderwijs.dashboard.datasources.Issues;
import nl.topicus.onderwijs.dashboard.datasources.NumberOfUsers;
import nl.topicus.onderwijs.dashboard.datasources.RequestsPerMinute;
import nl.topicus.onderwijs.dashboard.datasources.Trains;
import nl.topicus.onderwijs.dashboard.keys.Location;
import nl.topicus.onderwijs.dashboard.keys.Misc;
import nl.topicus.onderwijs.dashboard.keys.Summary;
import nl.topicus.onderwijs.dashboard.modules.DataSource;
import nl.topicus.onderwijs.dashboard.modules.PlotSourcesService;
import nl.topicus.onderwijs.dashboard.web.DashboardMode;
import nl.topicus.onderwijs.dashboard.web.WicketApplication;
import nl.topicus.onderwijs.dashboard.web.components.alerts.AlertsPanel;
import nl.topicus.onderwijs.dashboard.web.components.bargraph.BarGraphPanel;
import nl.topicus.onderwijs.dashboard.web.components.events.EventsPanel;
import nl.topicus.onderwijs.dashboard.web.components.plot.PlotPanel;
import nl.topicus.onderwijs.dashboard.web.components.statustable.StatusTablePanel;
import nl.topicus.onderwijs.dashboard.web.components.table.StackedTablesPanel;
import nl.topicus.onderwijs.dashboard.web.components.table.TablePanel;
import nl.topicus.onderwijs.dashboard.web.components.twitter.TwitterPanel;
import nl.topicus.onderwijs.dashboard.web.components.weather.WeatherPanel;
import nl.topicus.onderwijs.dashboard.web.resources.ResourceLocator;

import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.markup.html.IHeaderResponse;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.model.util.ListModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.request.resource.JavaScriptResourceReference;
import org.apache.wicket.spring.injection.annot.SpringBean;
import org.odlabs.wiquery.core.IWiQueryPlugin;
import org.odlabs.wiquery.core.javascript.JsQuery;
import org.odlabs.wiquery.core.javascript.JsStatement;

public class DashboardPage extends WebPage implements IWiQueryPlugin {

  private static final long serialVersionUID = 1L;

  @SpringBean
  private PlotSourcesService plotSources;

  public DashboardPage(final PageParameters parameters) {
    AjaxLink<Void> liveToRandomModeSwitch = new AjaxLink<Void>("live") {
      private static final long serialVersionUID = 1L;

      @Override
      public void onClick(AjaxRequestTarget target) {
        WicketApplication.get().switchMode();
        target.add(this);
      }

      @Override
      public boolean isVisible() {
        return getApplication().usesDevelopmentConfig();
      }
    };
    add(liveToRandomModeSwitch);
    liveToRandomModeSwitch.add(new Label("label",
        new PropertyModel<String>(this, "mode")));
    ArrayList<Class<? extends DataSource<? extends Number>>> datasources = new ArrayList<Class<? extends DataSource<? extends Number>>>();
    datasources.add(NumberOfUsers.class);
    datasources.add(AverageRequestTime.class);
    datasources.add(RequestsPerMinute.class);
    add(new BarGraphPanel("bargraph",
        new ListModel<Class<? extends DataSource<? extends Number>>>(
            datasources)));
    add(new StatusTablePanel("table"));
    add(new TablePanel("ns", Trains.class, WicketApplication.get()
        .getRepository().getKeys(Location.class).get(0), true));

    StackedTablesPanel tablestack = new StackedTablesPanel("tablestack");
    tablestack.addTable(new TablePanel(tablestack.nextTableId(),
        Commits.class, Summary.get(), false));
    tablestack.addTable(new TablePanel(tablestack.nextTableId(),
        Issues.class, Summary.get(), false));
    add(tablestack);

    add(new WeatherPanel("weather", WicketApplication.get().getRepository()
        .getKeys(Location.class).get(0)));
    StackedTablesPanel plotstack = new StackedTablesPanel("plotstack");
    for (int index = 0; index < plotSources.getPlotSources().size(); index++) {
      plotstack.addTable(new PlotPanel(tablestack.nextTableId(), index));
    }
    add(plotstack);
    add(new EventsPanel("events", Events.class, Summary.get()));
    add(new AlertsPanel("alerts"));
    add(new TwitterPanel("twitter", WicketApplication.get().getRepository()
        .getKeys(Misc.class).get(0)));
  }

  public DashboardMode getMode() {
    return WicketApplication.get().getMode();
  }

  @Override
  public void renderHead(IHeaderResponse response) {
    response.renderJavaScriptReference(new JavaScriptResourceReference(
        ResourceLocator.class, "jquery.timers-1.1.3.js"));
    response.renderJavaScriptReference(new JavaScriptResourceReference(
        DashboardPage.class, "jquery.dashboardclock.js"));
  }

  @Override
  public JsStatement statement() {
    return new JsQuery(this).$().chain(
        "dashboardClock",
        "'resources/application/starttime'",
        Boolean.toString(WicketApplication.get()
            .isContextMenuDisabled()));
  }
}
TOP

Related Classes of nl.topicus.onderwijs.dashboard.web.pages.DashboardPage

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.