diff --git a/gui/admin-gui/pom.xml b/gui/admin-gui/pom.xml index f4c4503b826..5b5453c64c4 100644 --- a/gui/admin-gui/pom.xml +++ b/gui/admin-gui/pom.xml @@ -107,8 +107,8 @@ runtime - org.webjars.bower - adminlte + com.evolveum.webjars + AdminLTE runtime diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/MainObjectListPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/MainObjectListPanel.java index 3a57ff0fb36..0881fb6036e 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/MainObjectListPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/MainObjectListPanel.java @@ -271,7 +271,7 @@ protected String getFilename() { } @Override - protected void createReportPerformed(SearchFilterType filter, List indexOfColumns, AjaxRequestTarget target) { + protected void createReportPerformed(String name, SearchFilterType filter, List indexOfColumns, AjaxRequestTarget target) { PrismContext prismContext = getPageBase().getPrismContext(); PrismObjectDefinition def = prismContext.getSchemaRegistry().findObjectDefinitionByType(ReportType.COMPLEX_TYPE); PrismObject obj = null; @@ -286,41 +286,43 @@ protected void createReportPerformed(SearchFilterType filter, List inde ReportType report = obj.asObjectable(); String oid = UUID.randomUUID().toString(); report.setOid(oid); - String name = getPageBase().createStringResource("ObjectTypeGuiDescriptor.report").getString()+ "-" + oid; + if (StringUtils.isEmpty(name)) { + name = getPageBase().createStringResource("ObjectTypeGuiDescriptor.report").getString() + "-" + oid; + } report.setName(WebComponentUtil.createPolyFromOrigString(name)); report.setReportEngine(ReportEngineSelectionType.COLLECTION); ObjectCollectionReportEngineConfigurationType objectCollection = new ObjectCollectionReportEngineConfigurationType(); objectCollection.setUseOnlyReportView(true); CompiledObjectCollectionView view = getObjectCollectionView(); + CollectionRefSpecificationType collection = new CollectionRefSpecificationType(); if (view == null) { objectCollection.setView(resolveSelectedColumn(indexOfColumns, getDefaultView())); } else { objectCollection.setView(resolveSelectedColumn(indexOfColumns, view.toGuiObjectListViewType())); - } - CollectionRefSpecificationType collection = new CollectionRefSpecificationType(); - if (view.getCollection() != null && view.getCollection().getCollectionRef() != null) { - if (!QNameUtil.match(view.getCollection().getCollectionRef().getType(), ArchetypeType.COMPLEX_TYPE)) { - collection.setBaseCollectionRef(view.getCollection()); - } else { - CollectionRefSpecificationType baseCollection = new CollectionRefSpecificationType(); - try { - baseCollection.setFilter(getPageBase().getQueryConverter().createSearchFilterType(view.getFilter())); - collection.setBaseCollectionRef(baseCollection); - } catch (SchemaException e) { - LOGGER.error("Couldn't create filter for archetype"); - getPageBase().error(getString("MainObjectListPanel.message.error.createArchetypeFilter")); - target.add(getPageBase().getFeedbackPanel()); + if (view.getCollection() != null && view.getCollection().getCollectionRef() != null) { + if (!QNameUtil.match(view.getCollection().getCollectionRef().getType(), ArchetypeType.COMPLEX_TYPE)) { + collection.setBaseCollectionRef(view.getCollection()); + } else { + CollectionRefSpecificationType baseCollection = new CollectionRefSpecificationType(); + try { + baseCollection.setFilter(getPageBase().getQueryConverter().createSearchFilterType(view.getFilter())); + collection.setBaseCollectionRef(baseCollection); + } catch (SchemaException e) { + LOGGER.error("Couldn't create filter for archetype"); + getPageBase().error(getString("MainObjectListPanel.message.error.createArchetypeFilter")); + target.add(getPageBase().getFeedbackPanel()); + } } } } if (filter != null) { collection.setFilter(filter); - } else if (view.getCollection() == null) { + } else if (view == null || view.getCollection() == null) { try { SearchFilterType allFilter = prismContext.getQueryConverter().createSearchFilterType(prismContext.queryFactory().createAll()); collection.setFilter(allFilter); } catch (SchemaException e) { - LOGGER.error("Couldn't create all filter"); + LOGGER.error("Couldn't create all filter", e); getPageBase().error(getString("MainObjectListPanel.message.error.createAllFilter")); target.add(getPageBase().getFeedbackPanel()); return; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ObjectListPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ObjectListPanel.java index 7aba9880a31..30745d9a2d0 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ObjectListPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ObjectListPanel.java @@ -27,6 +27,7 @@ import com.evolveum.midpoint.web.component.util.SelectableBean; import com.evolveum.midpoint.web.component.util.SerializableSupplier; import com.evolveum.midpoint.web.component.util.VisibleBehaviour; +import com.evolveum.midpoint.web.page.admin.home.PageDashboardConfigurable; import com.evolveum.midpoint.web.page.admin.server.dto.OperationResultStatusPresentationProperties; import com.evolveum.midpoint.xml.ns._public.common.common_3.*; import org.apache.commons.lang3.StringUtils; @@ -713,7 +714,44 @@ protected List getAllApplicableArchetypeViews() { return getPageBase().getCompiledGuiProfile().findAllApplicableArchetypeViews(WebComponentUtil.classToQName(getPageBase().getPrismContext(), getType())); } + private CompiledObjectCollectionView dashboardWidgetView; + protected CompiledObjectCollectionView getObjectCollectionView() { + if (dashboardWidgetView != null) { + return dashboardWidgetView; + } + PageParameters parameters = getPageBase().getPageParameters(); + String dashboardOid = parameters == null ? null : parameters.get(PageBase.PARAMETER_DASHBOARD_TYPE_OID).toString(); + String dashboardWidgetName = parameters == null ? null : parameters.get(PageBase.PARAMETER_DASHBOARD_WIDGET_NAME).toString(); + + if (!StringUtils.isEmpty(dashboardOid) && !StringUtils.isEmpty(dashboardWidgetName)) { + Task task = getPageBase().createSimpleTask("Create view from dashboard"); + @NotNull DashboardType dashboard = WebModelServiceUtils.loadObject(DashboardType.class, dashboardOid, getPageBase(), task, task.getResult()).getRealValue(); + if (dashboard != null) { + for (DashboardWidgetType widget :dashboard.getWidget()) { + if (widget.getIdentifier().equals(dashboardWidgetName) + && widget.getData() != null && widget.getData().getCollection() != null + && widget.getData().getCollection().getCollectionRef() != null) { + ObjectReferenceType ref = widget.getData().getCollection().getCollectionRef(); + ObjectCollectionType collection = (ObjectCollectionType)WebModelServiceUtils.loadObject(ref, + getPageBase(), task, task.getResult()).getRealValue(); + try { + @NotNull CompiledObjectCollectionView compiledView = getPageBase().getModelInteractionService() + .compileObjectCollectionView(collection.asPrismObject(), null, task, task.getResult()); + if (widget.getPresentation() != null && widget.getPresentation().getView() != null) { + getPageBase().getModelInteractionService().applyView(compiledView, widget.getPresentation().getView()); + } + compiledView.setCollection(widget.getData().getCollection()); + dashboardWidgetView = compiledView; + } catch (SchemaException | CommunicationException | ConfigurationException | SecurityViolationException | ExpressionEvaluationException + | ObjectNotFoundException e) { + LOGGER.error("Couldn't compile collection " + collection.getName(), e); + } + break; + } + } + } + } String collectionName = getCollectionNameParameterValue().toString(); return getPageBase().getCompiledGuiProfile().findObjectCollectionView(WebComponentUtil.classToQName(getPageBase().getPrismContext(), getType()), collectionName); } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/button/CsvDownloadButtonPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/button/CsvDownloadButtonPanel.java index c56f5b0aad5..16a0fff8ab0 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/button/CsvDownloadButtonPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/button/CsvDownloadButtonPanel.java @@ -21,6 +21,7 @@ import com.evolveum.midpoint.web.component.search.Search; import com.evolveum.prism.xml.ns._public.query_3.SearchFilterType; +import org.apache.commons.lang.StringUtils; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable; import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; @@ -97,6 +98,7 @@ public T getObject() { return super.wrapModel(model); } }; + IModel name = Model.of(""); final AbstractAjaxDownloadBehavior ajaxDownloadBehavior = new AbstractAjaxDownloadBehavior() { private static final long serialVersionUID = 1L; @@ -106,7 +108,10 @@ public IResourceStream getResourceStream() { } public String getFileName() { - return CsvDownloadButtonPanel.this.getFilename(); + if (StringUtils.isEmpty(name.getObject())) { + return CsvDownloadButtonPanel.this.getFilename(); + } + return name.getObject(); } }; @@ -146,7 +151,7 @@ public void onClick(AjaxRequestTarget target) { } exportableColumnsIndex.clear(); ExportingPanel exportingPanel = new ExportingPanel(getPageBase().getMainPopupBodyId(), - getDataTable(), exportableColumnsIndex, useExportSizeLimit, search) { + getDataTable(), exportableColumnsIndex, useExportSizeLimit, search, name) { private static final long serialVersionUID = 1L; @Override @@ -155,8 +160,8 @@ public void exportPerformed(AjaxRequestTarget target) { } @Override - protected void createReportPerformed(SearchFilterType filter, AjaxRequestTarget target) { - CsvDownloadButtonPanel.this.createReportPerformed(filter, exportableColumnsIndex, target); + protected void createReportPerformed(String name, SearchFilterType filter, AjaxRequestTarget target) { + CsvDownloadButtonPanel.this.createReportPerformed(name, filter, exportableColumnsIndex, target); } }; getPageBase().showMainPopup(exportingPanel, target); @@ -178,6 +183,6 @@ protected void createReportPerformed(SearchFilterType filter, AjaxRequestTarget protected abstract String getFilename(); - protected abstract void createReportPerformed(SearchFilterType filter, List indexOfColumns, AjaxRequestTarget target); + protected abstract void createReportPerformed(String name, SearchFilterType filter, List indexOfColumns, AjaxRequestTarget target); } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.html index 6ec4f84b981..a40c772c880 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.html @@ -20,10 +20,10 @@ - - - - + + + + @@ -55,7 +55,7 @@