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 @@
-
+
@@ -64,7 +64,7 @@