Skip to content

Commit

Permalink
JBPM-6886 : Update Dashboards layout (kiegroup#29)
Browse files Browse the repository at this point in the history
  • Loading branch information
nmirasch authored and cristianonicolai committed Mar 9, 2018
1 parent 05038d4 commit 0801f10
Show file tree
Hide file tree
Showing 15 changed files with 288 additions and 82 deletions.
Expand Up @@ -28,14 +28,41 @@
public class PrimaryActionMenuBuilder implements MenuFactory.CustomMenuBuilder {

private Button button;
private String label;
private Command command;
boolean isOn = true;

public PrimaryActionMenuBuilder(final String label,
final Command command) {
this.label = label;
this.command = command;
setupMenuButton();
initPrimaryActionButton(label,
"",
"");
button.setClickHandler(() -> command.execute());
}

public PrimaryActionMenuBuilder(final String onLabel,
final String onIcon,
final String onTitle,
final String offLabel,
final String offIcon,
final String offTitle,
final Command command) {

isOn = true;
initPrimaryActionLink(onLabel,
onIcon,
onTitle);
button.setClickHandler(() -> {
if (isOn) {
setupButton(offLabel,
offIcon,
offTitle);
} else {
setupButton(onLabel,
onIcon,
onTitle);
}
command.execute();
isOn = !isOn;
});
}

@Override
Expand All @@ -62,16 +89,48 @@ public void setEnabled(boolean enabled) {
};
}

private void setupMenuButton() {
private void initPrimaryActionButton(String label,
String icon,
String title) {
button = (Button) document.createElement("button");
button.setType(Button.ButtonType.BUTTON);
button.setButtonStyleType(Button.ButtonStyleType.PRIMARY);
button.setText(label);
button.setClickHandler(() -> command.execute());
setupButton(label,
icon,
title);
}

private void initPrimaryActionLink(String label,
String icon,
String title) {
button = (Button) document.createElement("button");
button.setButtonStyleType(Button.ButtonStyleType.LINK);
setupButton(label,
icon,
title);
}

private void setupButton(String label,
String icon,
String title) {
while (button.hasChildNodes()) {
button.removeChild(button.lastChild);
}

if (label != null && !label.isEmpty()) {
button.setText(label);
}
if (icon != null && !icon.isEmpty()) {
button.addIcon("fa",
icon);
}
if (title != null && !title.isEmpty()) {
button.title = title;
}
}

public void setVisible(boolean visible) {
if(visible){
if (visible) {
button.show();
} else {
button.hide();
Expand Down
Expand Up @@ -16,6 +16,10 @@

package org.jbpm.dashboard.renderer.client.panel;

import javax.annotation.PostConstruct;
import javax.enterprise.event.Observes;
import javax.inject.Inject;

import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Widget;
import org.dashbuilder.dataset.DataSetLookup;
Expand All @@ -27,13 +31,18 @@
import org.dashbuilder.displayer.client.DisplayerLocator;
import org.dashbuilder.renderer.client.metric.MetricDisplayer;
import org.dashbuilder.renderer.client.table.TableDisplayer;
import org.jbpm.workbench.common.client.PerspectiveIds;
import org.jbpm.workbench.ks.integration.ConsoleDataSetLookup;
import org.jbpm.workbench.common.client.menu.ServerTemplateSelectorMenuBuilder;
import org.jbpm.dashboard.renderer.client.panel.formatter.DurationFormatter;
import org.jbpm.dashboard.renderer.client.panel.i18n.DashboardI18n;
import org.jbpm.dashboard.renderer.client.panel.widgets.ProcessBreadCrumb;
import org.uberfire.client.mvp.PerspectiveManager;
import org.uberfire.client.mvp.PlaceManager;
import org.uberfire.client.workbench.events.ClosePlaceEvent;
import org.uberfire.ext.widgets.common.client.breadcrumbs.UberfireBreadcrumbs;
import org.uberfire.mvp.Command;
import org.uberfire.mvp.Commands;

import static org.kie.soup.commons.validation.PortablePreconditions.*;

Expand All @@ -51,6 +60,19 @@ public abstract class AbstractDashboard {

protected ServerTemplateSelectorMenuBuilder serverTemplateSelectorMenuBuilder;

UberfireBreadcrumbs breadcrumbs;

private PerspectiveManager perspectiveManager;

private String detailScreenId;

public String getPerspectiveId() {
return perspectiveManager.getCurrentPerspective().getIdentifier();
}

public AbstractDashboard() {
}

public AbstractDashboard(final DataSetClientServices dataSetClientServices,
final PlaceManager placeManager,
final DashboardI18n i18n,
Expand All @@ -67,6 +89,64 @@ public AbstractDashboard(final DataSetClientServices dataSetClientServices,
this.serverTemplateSelectorMenuBuilder = serverTemplateSelectorMenuBuilder;
}

@PostConstruct
public void setBreadcrumbs() {
createListBreadcrumb();
breadcrumbs.addToolbar(getPerspectiveId(),
serverTemplateSelectorMenuBuilder.getView().getElement());
}

@Inject
public void setServerTemplateSelectorMenuBuilder(final ServerTemplateSelectorMenuBuilder serverTemplateSelectorMenuBuilder) {
this.serverTemplateSelectorMenuBuilder = serverTemplateSelectorMenuBuilder;
}

public abstract void createListBreadcrumb();

public abstract void tableRedraw();

public void setupListBreadcrumb(String listLabel) {
breadcrumbs.clearBreadcrumbs(getPerspectiveId());

breadcrumbs.addBreadCrumb(getPerspectiveId(),
i18n.Home(),
() -> placeManager.goTo(PerspectiveIds.HOME));
breadcrumbs.addBreadCrumb(getPerspectiveId(),
listLabel,
Commands.DO_NOTHING);
}

public void setupDetailBreadcrumb(String listLabel,
String detailLabel,
String detailScreenId) {
breadcrumbs.clearBreadcrumbs(getPerspectiveId());
breadcrumbs.addBreadCrumb(getPerspectiveId(),
i18n.Home(),
() -> placeManager.goTo(PerspectiveIds.HOME));
breadcrumbs.addBreadCrumb(getPerspectiveId(),
listLabel,
() -> closeDetails(detailScreenId));
breadcrumbs.addBreadCrumb(getPerspectiveId(),
detailLabel,
Commands.DO_NOTHING);
this.detailScreenId = detailScreenId;
}

private void closeDetails(String detailScreenId) {
placeManager.closePlace(detailScreenId);
createListBreadcrumb();
tableRedraw();
}

public void onDetailScreenClosed(@Observes ClosePlaceEvent closed) {
if (closed.getPlace() != null
&& detailScreenId != null
&& detailScreenId.equals(closed.getPlace().getIdentifier())) {
createListBreadcrumb();
tableRedraw();
}
}

public MetricDisplayer createMetricDisplayer(DisplayerSettings settings) {
checkNotNull("displayerSettings",
settings);
Expand Down Expand Up @@ -173,6 +253,16 @@ public void resetCurrentProcess() {
getView().hideBreadCrumb();
}

@Inject
public void setPerspectiveManager(PerspectiveManager perspectiveManager) {
this.perspectiveManager = perspectiveManager;
}

@Inject
public void setUberfireBreadcrumbs(UberfireBreadcrumbs uberfireBreadcrumbs) {
this.breadcrumbs = uberfireBreadcrumbs;
}

public interface View extends IsWidget {

void showBreadCrumb(String processName);
Expand All @@ -190,5 +280,7 @@ public interface View extends IsWidget {
void showInstances();

DashboardI18n getI18nService();

boolean isDashboardPanelVisible();
}
}
Expand Up @@ -37,8 +37,8 @@
import org.dashbuilder.displayer.client.DisplayerLocator;
import org.dashbuilder.renderer.client.metric.MetricDisplayer;
import org.dashbuilder.renderer.client.table.TableDisplayer;
import org.jbpm.dashboard.renderer.client.panel.i18n.DashboardConstants;
import org.jbpm.workbench.common.client.PerspectiveIds;
import org.jbpm.workbench.common.client.menu.PrimaryActionMenuBuilder;
import org.jbpm.workbench.common.client.menu.ServerTemplateSelectorMenuBuilder;
import org.jbpm.workbench.common.events.ServerTemplateSelected;
import org.jbpm.workbench.pr.events.ProcessInstanceSelectionEvent;
Expand All @@ -56,7 +56,6 @@
import static org.jbpm.dashboard.renderer.model.DashboardData.*;
import static org.jbpm.workbench.common.client.PerspectiveIds.PROCESS_INSTANCE_DETAILS_SCREEN;


@Dependent
@WorkbenchScreen(identifier = PerspectiveIds.PROCESS_DASHBOARD_SCREEN)
public class ProcessDashboard extends AbstractDashboard {
Expand Down Expand Up @@ -152,15 +151,7 @@ public ProcessDashboard(final View view,

@WorkbenchPartTitle
public String getTitle() {
return DashboardConstants.INSTANCE.processDashboardName();
}

@WorkbenchMenu
public Menus getMenus() {
return MenuFactory
.newTopLevelCustomMenu(serverTemplateSelectorMenuBuilder)
.endMenu()
.build();
return i18n.processDashboardName();
}

public void onServerTemplateSelected(@Observes final ServerTemplateSelected serverTemplateSelected) {
Expand Down Expand Up @@ -280,6 +271,38 @@ public AbstractDashboard.View getView() {
return view;
}

@WorkbenchMenu
public Menus getMenus() {
return MenuFactory
.newTopLevelCustomMenu(new PrimaryActionMenuBuilder("",
"fa-table",
i18n.viewTable(),
"",
"fa-th",
i18n.viewDashboard(),
() -> {
if (view.isDashboardPanelVisible()) {
showProcessesTable();
} else {
showDashboard();
}
}
))
.endMenu()
.build();
}

@Override
public void createListBreadcrumb() {
setupListBreadcrumb(i18n.processDashboardName());
}

@Override
public void tableRedraw() {
processesTable.filterReset();
processesTable.redraw();
}

public void resetProcessBreadcrumb() {
processesByType.filterReset();
processesByRunningTime.filterReset();
Expand Down Expand Up @@ -333,6 +356,9 @@ public void tableCellSelected(String columnId,
COLUMN_PROCESS_STATUS).toString()).intValue();

openProcessDetailsScreen();
setupDetailBreadcrumb(i18n.processDashboardName(),
i18n.ProcessInstanceBreadcrumb(processInstanceId),
PROCESS_INSTANCE_DETAILS_SCREEN);

instanceSelectionEvent.fire(new ProcessInstanceSelectionEvent(
deploymentId,
Expand Down
Expand Up @@ -21,15 +21,12 @@

import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Style;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.Widget;
import org.dashbuilder.displayer.client.Displayer;
import org.gwtbootstrap3.client.ui.AnchorButton;
import org.gwtbootstrap3.client.ui.Container;
import org.gwtbootstrap3.client.ui.Heading;
import org.gwtbootstrap3.client.ui.Row;
Expand All @@ -53,9 +50,6 @@ public class ProcessDashboardView extends Composite implements ProcessDashboard.
@UiField
Panel instancesPanel;

@UiField
AnchorButton instancesAnchor;

@UiField
Row processBreadCrumbRow;

Expand Down Expand Up @@ -253,25 +247,19 @@ public void hideBreadCrumb() {

@Override
public void showDashboard() {
instancesAnchor.setText(DashboardConstants.INSTANCE.showInstances());
dashboardPanel.setVisible(true);
instancesPanel.setVisible(false);
}

@Override
public void showInstances() {
instancesAnchor.setText(DashboardConstants.INSTANCE.showDashboard());
dashboardPanel.setVisible(false);
instancesPanel.setVisible(true);
}

@UiHandler("instancesAnchor")
protected void onShowInstances(ClickEvent event) {
if (dashboardPanel.isVisible()) {
presenter.showProcessesTable();
} else {
presenter.showDashboard();
}
@Override
public boolean isDashboardPanelVisible() {
return dashboardPanel.isVisible();
}

interface Binder extends UiBinder<Widget, ProcessDashboardView> {
Expand Down
Expand Up @@ -39,7 +39,6 @@
<b:Row>
<b:Column size="MD_12">
<g:FlowPanel>
<b:AnchorButton ui:field="instancesAnchor" type="LINK" pull="RIGHT" text="{i18n.showInstances}"/>
<b:Heading ui:field="headerLabel" size="H3" text="{i18n.allProcesses}"/>
</g:FlowPanel>

Expand Down

0 comments on commit 0801f10

Please sign in to comment.