Search in sources :

Example 31 with Grid

use of com.vaadin.flow.component.grid.Grid in project furms by unity-idm.

the class ProjectsView method createSearchFilterLayout.

private HorizontalLayout createSearchFilterLayout(Grid<ProjectViewGridModel> grid, Button addButton) {
    TextField textField = new TextField();
    textField.setPlaceholder(getTranslation("view.community-admin.projects.field.search"));
    textField.setPrefixComponent(SEARCH.create());
    textField.setValueChangeMode(ValueChangeMode.EAGER);
    textField.setClearButtonVisible(true);
    textField.addValueChangeListener(event -> {
        String value = textField.getValue().toLowerCase();
        List<ProjectViewGridModel> filteredUsers = projectsViewDataSnapshot.projectViewGridModels.stream().filter(project -> project.matches(value)).collect(toList());
        grid.setItems(filteredUsers);
        // TODO This is a work around to fix disappearing text cursor
        addButton.focus();
        textField.focus();
    });
    HorizontalLayout search = new HorizontalLayout(textField);
    search.setJustifyContentMode(FlexComponent.JustifyContentMode.END);
    return search;
}
Also used : UTCTimeUtils(io.imunity.furms.utils.UTCTimeUtils) Component(com.vaadin.flow.component.Component) HorizontalLayout(com.vaadin.flow.component.orderedlayout.HorizontalLayout) MenuButton(io.imunity.furms.ui.components.MenuButton) PageTitle(io.imunity.furms.ui.components.PageTitle) ADMINISTRATORS_PARAM(io.imunity.furms.ui.views.community.projects.ProjectConst.ADMINISTRATORS_PARAM) Route(com.vaadin.flow.router.Route) FlexComponent(com.vaadin.flow.component.orderedlayout.FlexComponent) Collectors.toMap(java.util.stream.Collectors.toMap) Map(java.util.Map) UI(com.vaadin.flow.component.UI) CommunityAdminMenu(io.imunity.furms.ui.views.community.CommunityAdminMenu) SEARCH(com.vaadin.flow.component.icon.VaadinIcon.SEARCH) TextField(com.vaadin.flow.component.textfield.TextField) USERS(com.vaadin.flow.component.icon.VaadinIcon.USERS) Collections.emptyList(java.util.Collections.emptyList) TooltipAlignment(com.vaadin.componentfactory.TooltipAlignment) RouterGridLink(io.imunity.furms.ui.components.RouterGridLink) Set(java.util.Set) PARAM_NAME(io.imunity.furms.ui.views.community.projects.ProjectConst.PARAM_NAME) Collectors(java.util.stream.Collectors) TreeGrid(com.vaadin.flow.component.treegrid.TreeGrid) List(java.util.List) ColumnTextAlign(com.vaadin.flow.component.grid.ColumnTextAlign) StatusLayout(io.imunity.furms.ui.components.StatusLayout) Optional(java.util.Optional) TIME_BACKWARD(com.vaadin.flow.component.icon.VaadinIcon.TIME_BACKWARD) TooltipPosition(com.vaadin.componentfactory.TooltipPosition) Dialog(com.vaadin.flow.component.dialog.Dialog) ViewHeaderLayout(io.imunity.furms.ui.components.ViewHeaderLayout) VaadinExceptionHandler.handleExceptions(io.imunity.furms.ui.utils.VaadinExceptionHandler.handleExceptions) ResourceGetter.getCurrentResourceId(io.imunity.furms.ui.utils.ResourceGetter.getCurrentResourceId) ProjectInstallationJobStatus(io.imunity.furms.domain.project_installation.ProjectInstallationJobStatus) Collectors.groupingBy(java.util.stream.Collectors.groupingBy) FurmsDialog(io.imunity.furms.ui.components.FurmsDialog) Collectors.collectingAndThen(java.util.stream.Collectors.collectingAndThen) Function(java.util.function.Function) PLUS_CIRCLE(com.vaadin.flow.component.icon.VaadinIcon.PLUS_CIRCLE) REFRESH(com.vaadin.flow.component.icon.VaadinIcon.REFRESH) FurmsViewComponent(io.imunity.furms.ui.components.FurmsViewComponent) PIE_CHART(com.vaadin.flow.component.icon.VaadinIcon.PIE_CHART) Collectors.mapping(java.util.stream.Collectors.mapping) RouterLink(com.vaadin.flow.router.RouterLink) ProjectInstallationsService(io.imunity.furms.api.project_installation.ProjectInstallationsService) DenseTreeGrid(io.imunity.furms.ui.views.project.resource_access.DenseTreeGrid) Comparator.comparing(java.util.Comparator.comparing) ProjectUpdateJobStatus(io.imunity.furms.domain.project_installation.ProjectUpdateJobStatus) Icon(com.vaadin.flow.component.icon.Icon) ValueChangeMode(com.vaadin.flow.data.value.ValueChangeMode) Grid(com.vaadin.flow.component.grid.Grid) TRASH(com.vaadin.flow.component.icon.VaadinIcon.TRASH) ALLOCATIONS_PARAM(io.imunity.furms.ui.views.community.projects.ProjectConst.ALLOCATIONS_PARAM) EDIT(com.vaadin.flow.component.icon.VaadinIcon.EDIT) GridActionMenu(io.imunity.furms.ui.components.GridActionMenu) GridActionsButtonLayout(io.imunity.furms.ui.components.GridActionsButtonLayout) Collectors.toList(java.util.stream.Collectors.toList) Tooltip(com.vaadin.componentfactory.Tooltip) Button(com.vaadin.flow.component.button.Button) ProjectService(io.imunity.furms.api.projects.ProjectService) Comparator(java.util.Comparator) Collections(java.util.Collections) TextField(com.vaadin.flow.component.textfield.TextField) HorizontalLayout(com.vaadin.flow.component.orderedlayout.HorizontalLayout)

Example 32 with Grid

use of com.vaadin.flow.component.grid.Grid in project furms by unity-idm.

the class ProjectAllocationComponent method createCommunityGrid.

private Grid<ProjectAllocationGridModel> createCommunityGrid() {
    Grid<ProjectAllocationGridModel> grid = new DenseGrid<>(ProjectAllocationGridModel.class);
    grid.addComponentColumn(model -> {
        Icon icon = grid.isDetailsVisible(model) ? ANGLE_DOWN.create() : ANGLE_RIGHT.create();
        return new Div(icon, new Text(model.siteName));
    }).setHeader(getTranslation("view.community-admin.project-allocation.grid.column.1")).setSortable(true);
    grid.addComponentColumn(model -> {
        if (hasTerminalStatus(model))
            return new RouterLink(model.name, ProjectAllocationFormView.class, model.id);
        return new Text(model.name);
    }).setHeader(getTranslation("view.community-admin.project-allocation.grid.column.2")).setSortable(true).setComparator(model -> model.name.toLowerCase());
    grid.addColumn(model -> model.resourceTypeName).setHeader(getTranslation("view.community-admin.project-allocation.grid.column.3")).setSortable(true);
    grid.addColumn(model -> model.amountWithUnit).setHeader(getTranslation("view.community-admin.project-allocation.grid.column.4")).setSortable(true).setComparator(comparing(c -> c.amountWithUnit.amount));
    grid.addColumn(model -> model.consumedWithUnit).setHeader(getTranslation("view.community-admin.project-allocation.grid.column.5")).setSortable(true).setComparator(comparing(c -> c.consumedWithUnit.amount));
    grid.addColumn(model -> model.remainingWithUnit).setHeader(getTranslation("view.community-admin.project-allocation.grid.column.6")).setSortable(true).setComparator(comparing(c -> c.remainingWithUnit.amount));
    grid.addComponentColumn(c -> {
        Optional<ProjectAllocationInstallation> projectAllocationInstallations = projectDataSnapshot.getAllocation(c.id);
        Optional<ProjectDeallocation> deallocation = projectDataSnapshot.getDeallocationStatus(c.id);
        if (deallocation.isPresent()) {
            int statusId = deallocation.get().status.getPersistentId();
            return new StatusLayout(getTranslation("view.community-admin.project-allocation.deallocation-status." + statusId), deallocation.flatMap(x -> x.errorMessage).map(x -> x.message).orElse(null), getContent());
        }
        return projectAllocationInstallations.map(installation -> {
            final int statusId = installation.status.getPersistentId();
            return new StatusLayout(getTranslation("view.community-admin.project-allocation.status." + statusId), installation.errorMessage.map(x -> x.message).orElse(null), getContent());
        }).orElseGet(StatusLayout::new);
    }).setHeader(getTranslation("view.community-admin.project-allocation.grid.column.7")).setSortable(true);
    grid.addComponentColumn(model -> new ResourceProgressBar(model.amountWithUnit.amount, model.consumedWithUnit.amount, 0)).setHeader(getTranslation("view.community-admin.project-allocation.grid.column.8")).setTextAlign(ColumnTextAlign.CENTER);
    grid.addComponentColumn(this::createLastColumnContent).setHeader(getTranslation("view.community-admin.project-allocation.grid.column.9")).setTextAlign(ColumnTextAlign.END);
    grid.setItemDetailsRenderer(new ComponentRenderer<>(x -> new Div(AllocationDetailsComponentFactory.create(x.creationTime, x.validFrom, x.validTo), AllocationDetailsComponentFactory.create(projectDataSnapshot.getChunks(x.id), x.amountWithUnit.unit))));
    grid.setSelectionMode(Grid.SelectionMode.NONE);
    return grid;
}
Also used : VaadinExceptionHandler.handleExceptions(io.imunity.furms.ui.utils.VaadinExceptionHandler.handleExceptions) ComponentRenderer(com.vaadin.flow.data.renderer.ComponentRenderer) ResourceGetter.getCurrentResourceId(io.imunity.furms.ui.utils.ResourceGetter.getCurrentResourceId) Component(com.vaadin.flow.component.Component) Composite(com.vaadin.flow.component.Composite) NotificationUtils.showErrorNotification(io.imunity.furms.ui.utils.NotificationUtils.showErrorNotification) Div(com.vaadin.flow.component.html.Div) FurmsDialog(io.imunity.furms.ui.components.FurmsDialog) MenuButton(io.imunity.furms.ui.components.MenuButton) Supplier(java.util.function.Supplier) REFRESH(com.vaadin.flow.component.icon.VaadinIcon.REFRESH) ProjectAllocationInstallation(io.imunity.furms.domain.project_allocation_installation.ProjectAllocationInstallation) DenseGrid(io.imunity.furms.ui.components.DenseGrid) ProjectAllocationService(io.imunity.furms.api.project_allocation.ProjectAllocationService) Map(java.util.Map) RouterLink(com.vaadin.flow.router.RouterLink) ProjectDeallocationStatus(io.imunity.furms.domain.project_allocation_installation.ProjectDeallocationStatus) SPLINE_CHART(com.vaadin.flow.component.icon.VaadinIcon.SPLINE_CHART) UI(com.vaadin.flow.component.UI) ANGLE_RIGHT(com.vaadin.flow.component.icon.VaadinIcon.ANGLE_RIGHT) Comparator.comparing(java.util.Comparator.comparing) Icon(com.vaadin.flow.component.icon.Icon) QueryParameters(com.vaadin.flow.router.QueryParameters) Text(com.vaadin.flow.component.Text) AllocationDetailsComponentFactory(io.imunity.furms.ui.components.AllocationDetailsComponentFactory) Grid(com.vaadin.flow.component.grid.Grid) RemovalOfConsumedProjectAllocationIsFirbiddenException(io.imunity.furms.api.validation.exceptions.RemovalOfConsumedProjectAllocationIsFirbiddenException) TRASH(com.vaadin.flow.component.icon.VaadinIcon.TRASH) EDIT(com.vaadin.flow.component.icon.VaadinIcon.EDIT) MenuItem(com.vaadin.flow.component.contextmenu.MenuItem) RouterGridLink(io.imunity.furms.ui.components.RouterGridLink) GridActionMenu(io.imunity.furms.ui.components.GridActionMenu) GridActionsButtonLayout(io.imunity.furms.ui.components.GridActionsButtonLayout) ResourceProgressBar(io.imunity.furms.ui.components.ResourceProgressBar) ANGLE_DOWN(com.vaadin.flow.component.icon.VaadinIcon.ANGLE_DOWN) Button(com.vaadin.flow.component.button.Button) List(java.util.List) Collectors.toList(java.util.stream.Collectors.toList) ProjectDeallocation(io.imunity.furms.domain.project_allocation_installation.ProjectDeallocation) ColumnTextAlign(com.vaadin.flow.component.grid.ColumnTextAlign) StatusLayout(io.imunity.furms.ui.components.StatusLayout) ProjectService(io.imunity.furms.api.projects.ProjectService) ProjectAllocationDataSnapshot(io.imunity.furms.ui.project_allocation.ProjectAllocationDataSnapshot) Optional(java.util.Optional) Dialog(com.vaadin.flow.component.dialog.Dialog) Collections(java.util.Collections) ViewHeaderLayout(io.imunity.furms.ui.components.ViewHeaderLayout) DenseGrid(io.imunity.furms.ui.components.DenseGrid) Text(com.vaadin.flow.component.Text) ResourceProgressBar(io.imunity.furms.ui.components.ResourceProgressBar) Div(com.vaadin.flow.component.html.Div) RouterLink(com.vaadin.flow.router.RouterLink) ProjectAllocationInstallation(io.imunity.furms.domain.project_allocation_installation.ProjectAllocationInstallation) ProjectDeallocation(io.imunity.furms.domain.project_allocation_installation.ProjectDeallocation) StatusLayout(io.imunity.furms.ui.components.StatusLayout) Icon(com.vaadin.flow.component.icon.Icon)

Example 33 with Grid

use of com.vaadin.flow.component.grid.Grid in project furms by unity-idm.

the class AlarmsView method createAlarmGrid.

private Grid<AlarmGridModel> createAlarmGrid() {
    Grid<AlarmGridModel> grid = new DenseGrid<>(AlarmGridModel.class);
    grid.addComponentColumn(model -> new RouterLink(model.name, AlarmFormView.class, model.id.id.toString())).setHeader(getTranslation("view.project-admin.alarms.page.grid.1")).setSortable(true).setComparator(x -> x.name.toLowerCase());
    grid.addColumn(model -> model.allocationName).setHeader(getTranslation("view.project-admin.alarms.page.grid.2")).setSortable(true);
    grid.addColumn(model -> model.threshold + "%").setHeader(getTranslation("view.project-admin.alarms.page.grid.3")).setSortable(true);
    grid.addComponentColumn(model -> new DisableCheckbox(model.allUsers)).setHeader(getTranslation("view.project-admin.alarms.page.grid.4")).setSortable(true).setComparator(model -> model.allUsers);
    grid.addComponentColumn(model -> {
        Label label = new Label(model.users.stream().limit(3).collect(Collectors.joining()) + (model.users.size() > 3 ? "..." : ""));
        Tooltip tooltip = new Tooltip();
        tooltip.add(String.join(", ", model.users));
        tooltip.attachToComponent(label);
        getContent().add(tooltip);
        return label;
    }).setHeader(getTranslation("view.project-admin.alarms.page.grid.5")).setSortable(true).setComparator(model -> model.users.toString());
    grid.addComponentColumn(this::createLastColumnContent).setHeader(getTranslation("view.project-admin.alarms.page.grid.6")).setTextAlign(ColumnTextAlign.END);
    grid.setClassNameGenerator(model -> model.fired ? "light-red-row" : "usual-row");
    return grid;
}
Also used : VaadinExceptionHandler.handleExceptions(io.imunity.furms.ui.utils.VaadinExceptionHandler.handleExceptions) ResourceGetter.getCurrentResourceId(io.imunity.furms.ui.utils.ResourceGetter.getCurrentResourceId) AssignedPolicyRemovingException(io.imunity.furms.api.validation.exceptions.AssignedPolicyRemovingException) Component(com.vaadin.flow.component.Component) NotificationUtils.showErrorNotification(io.imunity.furms.ui.utils.NotificationUtils.showErrorNotification) HorizontalLayout(com.vaadin.flow.component.orderedlayout.HorizontalLayout) Label(com.vaadin.flow.component.html.Label) FurmsDialog(io.imunity.furms.ui.components.FurmsDialog) MenuButton(io.imunity.furms.ui.components.MenuButton) PageTitle(io.imunity.furms.ui.components.PageTitle) Route(com.vaadin.flow.router.Route) PLUS_CIRCLE(com.vaadin.flow.component.icon.VaadinIcon.PLUS_CIRCLE) DenseGrid(io.imunity.furms.ui.components.DenseGrid) ProjectAllocationService(io.imunity.furms.api.project_allocation.ProjectAllocationService) FurmsViewComponent(io.imunity.furms.ui.components.FurmsViewComponent) Map(java.util.Map) RouterLink(com.vaadin.flow.router.RouterLink) UI(com.vaadin.flow.component.UI) Comparator.comparing(java.util.Comparator.comparing) ProjectAdminMenu(io.imunity.furms.ui.views.project.ProjectAdminMenu) Grid(com.vaadin.flow.component.grid.Grid) TRASH(com.vaadin.flow.component.icon.VaadinIcon.TRASH) EDIT(com.vaadin.flow.component.icon.VaadinIcon.EDIT) GridActionMenu(io.imunity.furms.ui.components.GridActionMenu) GridActionsButtonLayout(io.imunity.furms.ui.components.GridActionsButtonLayout) AlarmId(io.imunity.furms.domain.alarms.AlarmId) Collectors(java.util.stream.Collectors) Checkbox(com.vaadin.flow.component.checkbox.Checkbox) Tooltip(com.vaadin.componentfactory.Tooltip) Button(com.vaadin.flow.component.button.Button) List(java.util.List) Collectors.toList(java.util.stream.Collectors.toList) AlarmService(io.imunity.furms.api.alarms.AlarmService) ColumnTextAlign(com.vaadin.flow.component.grid.ColumnTextAlign) Dialog(com.vaadin.flow.component.dialog.Dialog) Collections(java.util.Collections) ViewHeaderLayout(io.imunity.furms.ui.components.ViewHeaderLayout) RouterLink(com.vaadin.flow.router.RouterLink) DenseGrid(io.imunity.furms.ui.components.DenseGrid) Tooltip(com.vaadin.componentfactory.Tooltip) Label(com.vaadin.flow.component.html.Label)

Example 34 with Grid

use of com.vaadin.flow.component.grid.Grid in project furms by unity-idm.

the class ResourceAllocationsView method createCommunityGrid.

private Grid<ProjectAllocationGridModel> createCommunityGrid() {
    Grid<ProjectAllocationGridModel> grid = new DenseGrid<>(ProjectAllocationGridModel.class);
    grid.addComponentColumn(allocation -> {
        Icon icon = grid.isDetailsVisible(allocation) ? ANGLE_DOWN.create() : ANGLE_RIGHT.create();
        return new Div(icon, new Label(allocation.siteName));
    }).setHeader(getTranslation("view.project-admin.resource-allocations.grid.column.1")).setSortable(true);
    grid.addColumn(model -> model.name).setHeader(getTranslation("view.project-admin.resource-allocations.grid.column.2")).setSortable(true).setComparator(model -> model.name.toLowerCase());
    grid.addColumn(model -> model.resourceTypeName).setHeader(getTranslation("view.project-admin.resource-allocations.grid.column.3")).setSortable(true);
    grid.addColumn(model -> model.amountWithUnit).setHeader(getTranslation("view.project-admin.resource-allocations.grid.column.4")).setSortable(true).setComparator(comparing(model -> model.amountWithUnit.amount));
    grid.addColumn(model -> model.consumedWithUnit).setHeader(getTranslation("view.project-admin.resource-allocations.grid.column.5")).setSortable(true).setComparator(comparing(model -> model.consumedWithUnit.amount));
    grid.addColumn(model -> model.remainingWithUnit).setHeader(getTranslation("view.project-admin.resource-allocations.grid.column.6")).setSortable(true).setComparator(comparing(model -> model.remainingWithUnit.amount));
    grid.addComponentColumn(c -> {
        Optional<ProjectAllocationInstallation> projectAllocationInstallations = projectDataSnapshot.getAllocation(c.id);
        Optional<ProjectDeallocation> deallocation = projectDataSnapshot.getDeallocationStatus(c.id);
        if (deallocation.isPresent()) {
            int statusId = deallocation.get().status.getPersistentId();
            return new StatusLayout(getTranslation("view.community-admin.project-allocation.deallocation-status." + statusId), deallocation.flatMap(x -> x.errorMessage).map(x -> x.message).orElse(null), getContent());
        }
        return projectAllocationInstallations.map(installation -> {
            final int statusId = installation.status.getPersistentId();
            return new StatusLayout(getTranslation("view.community-admin.project-allocation.status." + statusId), installation.errorMessage.map(x -> x.message).orElse(null), getContent());
        }).orElseGet(StatusLayout::new);
    }).setHeader(getTranslation("view.project-admin.resource-allocations.grid.column.7")).setSortable(true);
    grid.addComponentColumn(model -> new ResourceProgressBar(model.amountWithUnit.amount, model.consumedWithUnit.amount, projectDataSnapshot.getAlarmThreshold(model.id))).setHeader(getTranslation("view.project-admin.resource-allocations.grid.column.8")).setTextAlign(ColumnTextAlign.CENTER);
    grid.addComponentColumn(this::createLastColumnContent).setHeader(getTranslation("view.project-admin.resource-allocations.grid.column.9")).setTextAlign(ColumnTextAlign.END);
    grid.setItemDetailsRenderer(new ComponentRenderer<>(c -> AllocationDetailsComponentFactory.create(projectDataSnapshot.getChunks(c.id), c.amountWithUnit.unit)));
    grid.setSelectionMode(Grid.SelectionMode.NONE);
    return grid;
}
Also used : VaadinExceptionHandler.handleExceptions(io.imunity.furms.ui.utils.VaadinExceptionHandler.handleExceptions) ComponentRenderer(com.vaadin.flow.data.renderer.ComponentRenderer) ResourceGetter.getCurrentResourceId(io.imunity.furms.ui.utils.ResourceGetter.getCurrentResourceId) Component(com.vaadin.flow.component.Component) HorizontalLayout(com.vaadin.flow.component.orderedlayout.HorizontalLayout) Div(com.vaadin.flow.component.html.Div) Label(com.vaadin.flow.component.html.Label) MenuButton(io.imunity.furms.ui.components.MenuButton) PageTitle(io.imunity.furms.ui.components.PageTitle) Route(com.vaadin.flow.router.Route) REFRESH(com.vaadin.flow.component.icon.VaadinIcon.REFRESH) ProjectAllocationInstallation(io.imunity.furms.domain.project_allocation_installation.ProjectAllocationInstallation) DenseGrid(io.imunity.furms.ui.components.DenseGrid) ProjectAllocationService(io.imunity.furms.api.project_allocation.ProjectAllocationService) FurmsViewComponent(io.imunity.furms.ui.components.FurmsViewComponent) SPLINE_CHART(com.vaadin.flow.component.icon.VaadinIcon.SPLINE_CHART) ANGLE_RIGHT(com.vaadin.flow.component.icon.VaadinIcon.ANGLE_RIGHT) Comparator.comparing(java.util.Comparator.comparing) Icon(com.vaadin.flow.component.icon.Icon) ProjectAdminMenu(io.imunity.furms.ui.views.project.ProjectAdminMenu) AllocationDetailsComponentFactory(io.imunity.furms.ui.components.AllocationDetailsComponentFactory) Grid(com.vaadin.flow.component.grid.Grid) RouterGridLink(io.imunity.furms.ui.components.RouterGridLink) GridActionMenu(io.imunity.furms.ui.components.GridActionMenu) GridActionsButtonLayout(io.imunity.furms.ui.components.GridActionsButtonLayout) ResourceProgressBar(io.imunity.furms.ui.components.ResourceProgressBar) ANGLE_DOWN(com.vaadin.flow.component.icon.VaadinIcon.ANGLE_DOWN) List(java.util.List) Collectors.toList(java.util.stream.Collectors.toList) ProjectDeallocation(io.imunity.furms.domain.project_allocation_installation.ProjectDeallocation) AlarmService(io.imunity.furms.api.alarms.AlarmService) ColumnTextAlign(com.vaadin.flow.component.grid.ColumnTextAlign) StatusLayout(io.imunity.furms.ui.components.StatusLayout) ProjectAllocationDataSnapshot(io.imunity.furms.ui.project_allocation.ProjectAllocationDataSnapshot) Optional(java.util.Optional) ProjectAllocationResolved(io.imunity.furms.domain.project_allocation.ProjectAllocationResolved) Collections(java.util.Collections) ViewHeaderLayout(io.imunity.furms.ui.components.ViewHeaderLayout) DenseGrid(io.imunity.furms.ui.components.DenseGrid) Label(com.vaadin.flow.component.html.Label) ResourceProgressBar(io.imunity.furms.ui.components.ResourceProgressBar) Div(com.vaadin.flow.component.html.Div) ProjectAllocationInstallation(io.imunity.furms.domain.project_allocation_installation.ProjectAllocationInstallation) ProjectDeallocation(io.imunity.furms.domain.project_allocation_installation.ProjectDeallocation) StatusLayout(io.imunity.furms.ui.components.StatusLayout) Icon(com.vaadin.flow.component.icon.Icon)

Example 35 with Grid

use of com.vaadin.flow.component.grid.Grid in project furms by unity-idm.

the class ProjectView method createCommunityGrid.

private Grid<ProjectAllocationGridModel> createCommunityGrid() {
    Grid<ProjectAllocationGridModel> grid = new DenseGrid<>(ProjectAllocationGridModel.class);
    grid.addComponentColumn(allocation -> {
        Icon icon = grid.isDetailsVisible(allocation) ? ANGLE_DOWN.create() : ANGLE_RIGHT.create();
        return new Div(icon, new Label(allocation.siteName));
    }).setHeader(getTranslation("view.user-settings.project-allocation.grid.column.1")).setSortable(true);
    grid.addColumn(model -> model.name).setHeader(getTranslation("view.user-settings.project-allocation.grid.column.2")).setSortable(true).setComparator(model -> model.name.toLowerCase());
    grid.addColumn(model -> model.resourceTypeName).setHeader(getTranslation("view.user-settings.project-allocation.grid.column.3")).setSortable(true);
    grid.addColumn(model -> model.amountWithUnit).setHeader(getTranslation("view.user-settings.project-allocation.grid.column.4")).setSortable(true).setComparator(comparing(model -> model.amountWithUnit.amount));
    grid.addColumn(model -> model.consumedWithUnit).setHeader(getTranslation("view.user-settings.project-allocation.grid.column.5")).setSortable(true).setComparator(comparing(model -> model.consumedWithUnit.amount));
    grid.addColumn(model -> model.remainingWithUnit).setHeader(getTranslation("view.user-settings.project-allocation.grid.column.6")).setSortable(true).setComparator(comparing(model -> model.remainingWithUnit.amount));
    grid.addComponentColumn(c -> {
        Optional<ProjectAllocationInstallation> projectAllocationInstallations = projectDataSnapshot.getParent().getAllocation(c.id);
        Optional<ProjectDeallocation> deallocation = projectDataSnapshot.getParent().getDeallocationStatus(c.id);
        if (deallocation.isPresent()) {
            int statusId = deallocation.get().status.getPersistentId();
            return new StatusLayout(getTranslation("view.community-admin.project-allocation.deallocation-status." + statusId), deallocation.flatMap(x -> x.errorMessage).map(x -> x.message).orElse(null), getContent());
        }
        return projectAllocationInstallations.map(installation -> {
            final int statusId = installation.status.getPersistentId();
            return new StatusLayout(getTranslation("view.community-admin.project-allocation.status." + statusId), installation.errorMessage.map(x -> x.message).orElse(null), getContent());
        }).orElseGet(StatusLayout::new);
    }).setHeader(getTranslation("view.user-settings.project-allocation.grid.column.7")).setSortable(true);
    grid.addColumn(x -> getEnabledValue(x.id, x.accessibleForAllProjectMembers)).setHeader(getTranslation("view.user-settings.project-allocation.grid.column.8")).setSortable(true);
    grid.addComponentColumn(model -> new ResourceProgressBar(model.amountWithUnit.amount, model.consumedWithUnit.amount, projectDataSnapshot.projectAllocationDataSnapshot.getAlarmThreshold(model.id))).setHeader(getTranslation("view.user-settings.project-allocation.grid.column.9")).setTextAlign(ColumnTextAlign.CENTER);
    grid.addComponentColumn(this::createLastColumnContent).setHeader(getTranslation("view.user-settings.project-allocation.grid.column.10")).setTextAlign(ColumnTextAlign.END);
    grid.setItemDetailsRenderer(new ComponentRenderer<>(c -> AllocationDetailsComponentFactory.create(projectDataSnapshot.getParent().getChunks(c.id), c.amountWithUnit.unit)));
    grid.setSelectionMode(Grid.SelectionMode.NONE);
    return grid;
}
Also used : ComponentRenderer(com.vaadin.flow.data.renderer.ComponentRenderer) Component(com.vaadin.flow.component.Component) HorizontalLayout(com.vaadin.flow.component.orderedlayout.HorizontalLayout) Label(com.vaadin.flow.component.html.Label) MenuButton(io.imunity.furms.ui.components.MenuButton) PageTitle(io.imunity.furms.ui.components.PageTitle) BeforeEvent(com.vaadin.flow.router.BeforeEvent) ResourceAccessService(io.imunity.furms.api.resource_access.ResourceAccessService) Route(com.vaadin.flow.router.Route) GRANTED_STATUES(io.imunity.furms.domain.resource_access.AccessStatus.GRANTED_STATUES) DenseGrid(io.imunity.furms.ui.components.DenseGrid) Collectors.toMap(java.util.stream.Collectors.toMap) Map(java.util.Map) ANGLE_RIGHT(com.vaadin.flow.component.icon.VaadinIcon.ANGLE_RIGHT) AllocationDetailsComponentFactory(io.imunity.furms.ui.components.AllocationDetailsComponentFactory) UserGrant(io.imunity.furms.domain.resource_access.UserGrant) RouterGridLink(io.imunity.furms.ui.components.RouterGridLink) ResourceProgressBar(io.imunity.furms.ui.components.ResourceProgressBar) BreadCrumbParameter(io.imunity.furms.ui.components.layout.BreadCrumbParameter) ANGLE_DOWN(com.vaadin.flow.component.icon.VaadinIcon.ANGLE_DOWN) OptionalParameter(com.vaadin.flow.router.OptionalParameter) List(java.util.List) AlarmService(io.imunity.furms.api.alarms.AlarmService) ColumnTextAlign(com.vaadin.flow.component.grid.ColumnTextAlign) StatusLayout(io.imunity.furms.ui.components.StatusLayout) Function.identity(java.util.function.Function.identity) Optional(java.util.Optional) UserWithoutFenixIdValidationError(io.imunity.furms.api.validation.exceptions.UserWithoutFenixIdValidationError) ProjectAllocationResolved(io.imunity.furms.domain.project_allocation.ProjectAllocationResolved) ViewHeaderLayout(io.imunity.furms.ui.components.ViewHeaderLayout) VaadinExceptionHandler.handleExceptions(io.imunity.furms.ui.utils.VaadinExceptionHandler.handleExceptions) Project(io.imunity.furms.domain.projects.Project) NotificationUtils.showErrorNotification(io.imunity.furms.ui.utils.NotificationUtils.showErrorNotification) Div(com.vaadin.flow.component.html.Div) REFRESH(com.vaadin.flow.component.icon.VaadinIcon.REFRESH) ProjectAllocationInstallation(io.imunity.furms.domain.project_allocation_installation.ProjectAllocationInstallation) ProjectAllocationService(io.imunity.furms.api.project_allocation.ProjectAllocationService) FurmsViewComponent(io.imunity.furms.ui.components.FurmsViewComponent) SPLINE_CHART(com.vaadin.flow.component.icon.VaadinIcon.SPLINE_CHART) UserSettingsMenu(io.imunity.furms.ui.views.user_settings.UserSettingsMenu) Comparator.comparing(java.util.Comparator.comparing) Icon(com.vaadin.flow.component.icon.Icon) Grid(com.vaadin.flow.component.grid.Grid) GridActionMenu(io.imunity.furms.ui.components.GridActionMenu) GridActionsButtonLayout(io.imunity.furms.ui.components.GridActionsButtonLayout) Collectors.toList(java.util.stream.Collectors.toList) ProjectDeallocation(io.imunity.furms.domain.project_allocation_installation.ProjectDeallocation) ProjectService(io.imunity.furms.api.projects.ProjectService) ProjectAllocationDataSnapshot(io.imunity.furms.ui.project_allocation.ProjectAllocationDataSnapshot) Collections(java.util.Collections) DenseGrid(io.imunity.furms.ui.components.DenseGrid) Label(com.vaadin.flow.component.html.Label) ResourceProgressBar(io.imunity.furms.ui.components.ResourceProgressBar) Div(com.vaadin.flow.component.html.Div) ProjectAllocationInstallation(io.imunity.furms.domain.project_allocation_installation.ProjectAllocationInstallation) ProjectDeallocation(io.imunity.furms.domain.project_allocation_installation.ProjectDeallocation) StatusLayout(io.imunity.furms.ui.components.StatusLayout) Icon(com.vaadin.flow.component.icon.Icon)

Aggregations

Grid (com.vaadin.flow.component.grid.Grid)73 Route (com.vaadin.flow.router.Route)41 Div (com.vaadin.flow.component.html.Div)38 List (java.util.List)26 NativeButton (com.vaadin.flow.component.html.NativeButton)22 Person (com.vaadin.flow.data.bean.Person)22 ComponentRenderer (com.vaadin.flow.data.renderer.ComponentRenderer)21 H2 (com.vaadin.flow.component.html.H2)17 Collections (java.util.Collections)16 Button (com.vaadin.flow.component.button.Button)15 HorizontalLayout (com.vaadin.flow.component.orderedlayout.HorizontalLayout)14 ArrayList (java.util.ArrayList)13 Collectors (java.util.stream.Collectors)13 Component (com.vaadin.flow.component.Component)12 ColumnTextAlign (com.vaadin.flow.component.grid.ColumnTextAlign)12 Column (com.vaadin.flow.component.grid.Grid.Column)12 Label (com.vaadin.flow.component.html.Label)12 Span (com.vaadin.flow.component.html.Span)11 TextField (com.vaadin.flow.component.textfield.TextField)10 DenseGrid (io.imunity.furms.ui.components.DenseGrid)10