Metadata management for SM and DS in Management UI.
Conflicts: hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleTable.java Signed-off-by: Kai Zimmermann <kai.zimmermann@bosch-si.com>
This commit is contained in:
@@ -83,6 +83,7 @@ public final class DistributionSetSpecification {
|
|||||||
targetRoot.fetch(JpaDistributionSet_.modules, JoinType.LEFT);
|
targetRoot.fetch(JpaDistributionSet_.modules, JoinType.LEFT);
|
||||||
targetRoot.fetch(JpaDistributionSet_.tags, JoinType.LEFT);
|
targetRoot.fetch(JpaDistributionSet_.tags, JoinType.LEFT);
|
||||||
targetRoot.fetch(JpaDistributionSet_.type, JoinType.LEFT);
|
targetRoot.fetch(JpaDistributionSet_.type, JoinType.LEFT);
|
||||||
|
targetRoot.fetch(JpaDistributionSet_.metadata, JoinType.LEFT);
|
||||||
query.distinct(true);
|
query.distinct(true);
|
||||||
|
|
||||||
return predicate;
|
return predicate;
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.eclipse.hawkbit.repository.jpa.specifications;
|
package org.eclipse.hawkbit.repository.jpa.specifications;
|
||||||
|
|
||||||
|
import javax.persistence.criteria.JoinType;
|
||||||
import javax.persistence.criteria.Predicate;
|
import javax.persistence.criteria.Predicate;
|
||||||
|
|
||||||
import org.eclipse.hawkbit.repository.jpa.model.JpaSoftwareModule;
|
import org.eclipse.hawkbit.repository.jpa.model.JpaSoftwareModule;
|
||||||
@@ -38,6 +39,8 @@ public final class SoftwareModuleSpecification {
|
|||||||
return (targetRoot, query, cb) -> {
|
return (targetRoot, query, cb) -> {
|
||||||
final Predicate predicate = cb.equal(targetRoot.<Long> get(JpaSoftwareModule_.id), moduleId);
|
final Predicate predicate = cb.equal(targetRoot.<Long> get(JpaSoftwareModule_.id), moduleId);
|
||||||
targetRoot.fetch(JpaSoftwareModule_.type);
|
targetRoot.fetch(JpaSoftwareModule_.type);
|
||||||
|
targetRoot.fetch(JpaSoftwareModule_.metadata,JoinType.LEFT);
|
||||||
|
query.distinct(true);
|
||||||
return predicate;
|
return predicate;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,11 +8,17 @@
|
|||||||
*/
|
*/
|
||||||
package org.eclipse.hawkbit.ui.artifacts.smtable;
|
package org.eclipse.hawkbit.ui.artifacts.smtable;
|
||||||
|
|
||||||
|
import org.eclipse.hawkbit.repository.EntityFactory;
|
||||||
|
import org.eclipse.hawkbit.repository.SoftwareManagement;
|
||||||
import org.eclipse.hawkbit.repository.model.SoftwareModule;
|
import org.eclipse.hawkbit.repository.model.SoftwareModule;
|
||||||
|
import org.eclipse.hawkbit.repository.model.SoftwareModuleMetadata;
|
||||||
import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent;
|
import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent;
|
||||||
import org.eclipse.hawkbit.ui.artifacts.state.ArtifactUploadState;
|
import org.eclipse.hawkbit.ui.artifacts.state.ArtifactUploadState;
|
||||||
import org.eclipse.hawkbit.ui.common.detailslayout.AbstractNamedVersionedEntityTableDetailsLayout;
|
import org.eclipse.hawkbit.ui.common.detailslayout.AbstractNamedVersionedEntityTableDetailsLayout;
|
||||||
|
import org.eclipse.hawkbit.ui.common.detailslayout.SoftwareModuleMetadatadetailslayout;
|
||||||
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
|
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
|
||||||
|
import org.eclipse.hawkbit.ui.distributions.event.MetadataEvent;
|
||||||
|
import org.eclipse.hawkbit.ui.distributions.smtable.SwMetadataPopupLayout;
|
||||||
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
|
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
|
||||||
import org.eclipse.hawkbit.ui.utils.SPUIComponentIdProvider;
|
import org.eclipse.hawkbit.ui.utils.SPUIComponentIdProvider;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -45,6 +51,44 @@ public class SoftwareModuleDetails extends AbstractNamedVersionedEntityTableDeta
|
|||||||
@Autowired
|
@Autowired
|
||||||
private ArtifactUploadState artifactUploadState;
|
private ArtifactUploadState artifactUploadState;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private transient SoftwareManagement softwareManagement;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private SwMetadataPopupLayout swMetadataPopupLayout;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private EntityFactory entityFactory;
|
||||||
|
|
||||||
|
private SoftwareModuleMetadatadetailslayout swmMetadataTable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* softwareLayout Initialize the component.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected void init() {
|
||||||
|
swmMetadataTable = new SoftwareModuleMetadatadetailslayout();
|
||||||
|
swmMetadataTable.init(getI18n(), getPermissionChecker(),softwareManagement,swMetadataPopupLayout,entityFactory);
|
||||||
|
super.init();
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventBusListenerMethod(scope = EventScope.SESSION)
|
||||||
|
void onEvent(final MetadataEvent event) {
|
||||||
|
UI.getCurrent()
|
||||||
|
.access(() -> {
|
||||||
|
SoftwareModuleMetadata softwareModuleMetadata = event.getSoftwareModuleMetadata();
|
||||||
|
if (softwareModuleMetadata != null
|
||||||
|
&& isSoftwareModuleSelected(softwareModuleMetadata.getSoftwareModule())) {
|
||||||
|
if (event.getMetadataUIEvent() == MetadataEvent.MetadataUIEvent.CREATE_SOFTWARE_MODULE_METADATA) {
|
||||||
|
swmMetadataTable.createMetadata(event.getSoftwareModuleMetadata().getKey());
|
||||||
|
} else if (event.getMetadataUIEvent() == MetadataEvent.MetadataUIEvent.DELETE_SOFTWARE_MODULE_METADATA) {
|
||||||
|
swmMetadataTable.deleteMetadata(event.getSoftwareModuleMetadata().getKey());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String getEditButtonId() {
|
protected String getEditButtonId() {
|
||||||
return SPUIComponentIdProvider.UPLOAD_SW_MODULE_EDIT_BUTTON;
|
return SPUIComponentIdProvider.UPLOAD_SW_MODULE_EDIT_BUTTON;
|
||||||
@@ -55,6 +99,7 @@ public class SoftwareModuleDetails extends AbstractNamedVersionedEntityTableDeta
|
|||||||
detailsTab.addTab(createDetailsLayout(), getI18n().get("caption.tab.details"), null);
|
detailsTab.addTab(createDetailsLayout(), getI18n().get("caption.tab.details"), null);
|
||||||
detailsTab.addTab(createDescriptionLayout(), getI18n().get("caption.tab.description"), null);
|
detailsTab.addTab(createDescriptionLayout(), getI18n().get("caption.tab.description"), null);
|
||||||
detailsTab.addTab(createLogLayout(), getI18n().get("caption.logs.tab"), null);
|
detailsTab.addTab(createLogLayout(), getI18n().get("caption.logs.tab"), null);
|
||||||
|
detailsTab.addTab(swmMetadataTable, getI18n().get("caption.metadata"), null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -81,6 +126,8 @@ public class SoftwareModuleDetails extends AbstractNamedVersionedEntityTableDeta
|
|||||||
updateSoftwareModuleDetailsLayout(HawkbitCommonUtil.SP_STRING_EMPTY, HawkbitCommonUtil.SP_STRING_EMPTY,
|
updateSoftwareModuleDetailsLayout(HawkbitCommonUtil.SP_STRING_EMPTY, HawkbitCommonUtil.SP_STRING_EMPTY,
|
||||||
maxAssign);
|
maxAssign);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
populateMetadataDetails();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateSoftwareModuleDetailsLayout(final String type, final String vendor, final String maxAssign) {
|
private void updateSoftwareModuleDetailsLayout(final String type, final String vendor, final String maxAssign) {
|
||||||
@@ -141,4 +188,16 @@ public class SoftwareModuleDetails extends AbstractNamedVersionedEntityTableDeta
|
|||||||
protected String getDetailsHeaderCaptionId() {
|
protected String getDetailsHeaderCaptionId() {
|
||||||
return SPUIComponentIdProvider.TARGET_DETAILS_HEADER_LABEL_ID;
|
return SPUIComponentIdProvider.TARGET_DETAILS_HEADER_LABEL_ID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void populateMetadataDetails(){
|
||||||
|
swmMetadataTable.populateSMMetadata(getSelectedBaseEntity());
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isSoftwareModuleSelected(SoftwareModule softwareModule) {
|
||||||
|
final SoftwareModule selectedUploadSWModule = artifactUploadState.getSelectedBaseSoftwareModule().isPresent() ? artifactUploadState
|
||||||
|
.getSelectedBaseSoftwareModule().get() : null;
|
||||||
|
return softwareModule != null && selectedUploadSWModule != null
|
||||||
|
&& selectedUploadSWModule.getName().equals(softwareModule.getName())
|
||||||
|
&& selectedUploadSWModule.getVersion().equals(softwareModule.getVersion());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.eclipse.hawkbit.ui.artifacts.smtable;
|
package org.eclipse.hawkbit.ui.artifacts.smtable;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -212,4 +213,26 @@ public class SoftwareModuleTable extends AbstractNamedVersionTable<SoftwareModul
|
|||||||
artifactUploadState.setNoDataAvilableSoftwareModule(!available);
|
artifactUploadState.setNoDataAvilableSoftwareModule(!available);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private Button createManageMetadataButton(String nameVersionStr) {
|
||||||
|
final Button manageMetadataBtn = SPUIComponentProvider.getButton(
|
||||||
|
SPUIComponentIdProvider.SW_TABLE_MANAGE_METADATA_ID + "." + nameVersionStr, "", "", null, false,
|
||||||
|
FontAwesome.LIST_ALT, SPUIButtonStyleSmallNoBorder.class);
|
||||||
|
manageMetadataBtn.addStyleName(SPUIStyleDefinitions.ARTIFACT_DTLS_ICON);
|
||||||
|
manageMetadataBtn.setDescription(i18n.get("tooltip.metadata.icon"));
|
||||||
|
return manageMetadataBtn;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getNameAndVerion(final Object itemId) {
|
||||||
|
final Item item = getItem(itemId);
|
||||||
|
final String name = (String) item.getItemProperty(SPUILabelDefinitions.VAR_NAME).getValue();
|
||||||
|
final String version = (String) item.getItemProperty(SPUILabelDefinitions.VAR_VERSION).getValue();
|
||||||
|
return name + "." + version;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void showMetadataDetails(Long itemId, String nameVersionStr) {
|
||||||
|
SoftwareModule swmodule = softwareManagement.findSoftwareModuleWithDetails(itemId);
|
||||||
|
/* display the window */
|
||||||
|
UI.getCurrent().addWindow(swMetadataPopupLayout.getWindow(swmodule,null));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import org.eclipse.hawkbit.ui.utils.SPUIComponentIdProvider;
|
|||||||
|
|
||||||
import com.vaadin.data.Property.ValueChangeListener;
|
import com.vaadin.data.Property.ValueChangeListener;
|
||||||
import com.vaadin.server.FontAwesome;
|
import com.vaadin.server.FontAwesome;
|
||||||
|
import com.vaadin.server.Resource;
|
||||||
import com.vaadin.ui.AbstractOrderedLayout;
|
import com.vaadin.ui.AbstractOrderedLayout;
|
||||||
import com.vaadin.ui.Alignment;
|
import com.vaadin.ui.Alignment;
|
||||||
import com.vaadin.ui.Button;
|
import com.vaadin.ui.Button;
|
||||||
@@ -93,12 +94,14 @@ public class CommonDialogWindow extends Window {
|
|||||||
|
|
||||||
if (null != content) {
|
if (null != content) {
|
||||||
mainLayout.addComponent(content);
|
mainLayout.addComponent(content);
|
||||||
|
mainLayout.setExpandRatio(content, 1.0F);
|
||||||
}
|
}
|
||||||
final HorizontalLayout buttonLayout = createActionButtonsLayout();
|
final HorizontalLayout buttonLayout = createActionButtonsLayout();
|
||||||
mainLayout.addComponent(buttonLayout);
|
mainLayout.addComponent(buttonLayout);
|
||||||
mainLayout.setComponentAlignment(buttonLayout, Alignment.TOP_CENTER);
|
mainLayout.setComponentAlignment(buttonLayout, Alignment.TOP_CENTER);
|
||||||
|
|
||||||
setCaption(caption);
|
setCaption(caption);
|
||||||
|
setCaptionAsHtml(true);
|
||||||
setContent(mainLayout);
|
setContent(mainLayout);
|
||||||
setResizable(false);
|
setResizable(false);
|
||||||
center();
|
center();
|
||||||
@@ -109,9 +112,8 @@ public class CommonDialogWindow extends Window {
|
|||||||
private HorizontalLayout createActionButtonsLayout() {
|
private HorizontalLayout createActionButtonsLayout() {
|
||||||
|
|
||||||
buttonsLayout = new HorizontalLayout();
|
buttonsLayout = new HorizontalLayout();
|
||||||
buttonsLayout.setSizeFull();
|
buttonsLayout.setSizeUndefined();
|
||||||
buttonsLayout.setSpacing(true);
|
buttonsLayout.setSpacing(true);
|
||||||
|
|
||||||
createSaveButton();
|
createSaveButton();
|
||||||
|
|
||||||
createCancelButton();
|
createCancelButton();
|
||||||
@@ -155,6 +157,7 @@ public class CommonDialogWindow extends Window {
|
|||||||
buttonsLayout.setComponentAlignment(helpLinkComponent, Alignment.MIDDLE_RIGHT);
|
buttonsLayout.setComponentAlignment(helpLinkComponent, Alignment.MIDDLE_RIGHT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void setSaveButtonEnabled(final boolean enabled) {
|
public void setSaveButtonEnabled(final boolean enabled) {
|
||||||
saveButton.setEnabled(enabled);
|
saveButton.setEnabled(enabled);
|
||||||
}
|
}
|
||||||
@@ -167,4 +170,15 @@ public class CommonDialogWindow extends Window {
|
|||||||
return buttonsLayout;
|
return buttonsLayout;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setCancelButtonCaption(final String caption) {
|
||||||
|
cancelButton.setCaption(caption);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCancelButtonIcon(final Resource icon) {
|
||||||
|
cancelButton.setIcon(icon);
|
||||||
|
}
|
||||||
|
|
||||||
|
public VerticalLayout getMainLayout() {
|
||||||
|
return mainLayout;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,18 +14,22 @@ import java.util.Map;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import org.eclipse.hawkbit.repository.DistributionSetManagement;
|
import org.eclipse.hawkbit.repository.DistributionSetManagement;
|
||||||
|
import org.eclipse.hawkbit.repository.EntityFactory;
|
||||||
import org.eclipse.hawkbit.repository.SoftwareManagement;
|
import org.eclipse.hawkbit.repository.SoftwareManagement;
|
||||||
import org.eclipse.hawkbit.repository.model.DistributionSet;
|
import org.eclipse.hawkbit.repository.model.DistributionSet;
|
||||||
|
import org.eclipse.hawkbit.repository.model.DistributionSetMetadata;
|
||||||
import org.eclipse.hawkbit.repository.model.SoftwareModule;
|
import org.eclipse.hawkbit.repository.model.SoftwareModule;
|
||||||
import org.eclipse.hawkbit.repository.model.SoftwareModuleIdName;
|
import org.eclipse.hawkbit.repository.model.SoftwareModuleIdName;
|
||||||
import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent;
|
import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent;
|
||||||
import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent.SoftwareModuleEventType;
|
import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent.SoftwareModuleEventType;
|
||||||
import org.eclipse.hawkbit.ui.common.DistributionSetIdName;
|
import org.eclipse.hawkbit.ui.common.DistributionSetIdName;
|
||||||
import org.eclipse.hawkbit.ui.common.detailslayout.AbstractNamedVersionedEntityTableDetailsLayout;
|
import org.eclipse.hawkbit.ui.common.detailslayout.AbstractNamedVersionedEntityTableDetailsLayout;
|
||||||
|
import org.eclipse.hawkbit.ui.common.detailslayout.DistributionSetMetadatadetailslayout;
|
||||||
import org.eclipse.hawkbit.ui.common.detailslayout.SoftwareModuleDetailsTable;
|
import org.eclipse.hawkbit.ui.common.detailslayout.SoftwareModuleDetailsTable;
|
||||||
import org.eclipse.hawkbit.ui.common.tagdetails.DistributionTagToken;
|
import org.eclipse.hawkbit.ui.common.tagdetails.DistributionTagToken;
|
||||||
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
|
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
|
||||||
import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder;
|
import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder;
|
||||||
|
import org.eclipse.hawkbit.ui.distributions.event.MetadataEvent;
|
||||||
import org.eclipse.hawkbit.ui.distributions.event.SaveActionWindowEvent;
|
import org.eclipse.hawkbit.ui.distributions.event.SaveActionWindowEvent;
|
||||||
import org.eclipse.hawkbit.ui.distributions.event.SoftwareModuleAssignmentDiscardEvent;
|
import org.eclipse.hawkbit.ui.distributions.event.SoftwareModuleAssignmentDiscardEvent;
|
||||||
import org.eclipse.hawkbit.ui.distributions.state.ManageDistUIState;
|
import org.eclipse.hawkbit.ui.distributions.state.ManageDistUIState;
|
||||||
@@ -80,12 +84,37 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet
|
|||||||
@Autowired
|
@Autowired
|
||||||
private transient DistributionSetManagement distributionSetManagement;
|
private transient DistributionSetManagement distributionSetManagement;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private DsMetadataPopupLayout dsMetadataPopupLayout;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private EntityFactory entityFactory;
|
||||||
|
|
||||||
private SoftwareModuleDetailsTable softwareModuleTable;
|
private SoftwareModuleDetailsTable softwareModuleTable;
|
||||||
|
|
||||||
|
private DistributionSetMetadatadetailslayout dsMetadataTable;
|
||||||
|
|
||||||
private VerticalLayout tagsLayout;
|
private VerticalLayout tagsLayout;
|
||||||
|
|
||||||
Map<String, StringBuilder> assignedSWModule = new HashMap<>();
|
Map<String, StringBuilder> assignedSWModule = new HashMap<>();
|
||||||
|
|
||||||
|
|
||||||
|
@EventBusListenerMethod(scope = EventScope.SESSION)
|
||||||
|
void onEvent(final MetadataEvent event) {
|
||||||
|
UI.getCurrent()
|
||||||
|
.access(() -> {
|
||||||
|
DistributionSetMetadata dsMetadata = event.getDistributionSetMetadata();
|
||||||
|
if (dsMetadata != null && isDistributionSetSelected(dsMetadata.getDistributionSet())) {
|
||||||
|
if (event.getMetadataUIEvent() == MetadataEvent.MetadataUIEvent.CREATE_DISTRIBUTION_SET_METADATA) {
|
||||||
|
dsMetadataTable.createMetadata(event.getDistributionSetMetadata().getKey());
|
||||||
|
} else if (event.getMetadataUIEvent() == MetadataEvent.MetadataUIEvent.DELETE_DISTRIBUTION_SET_METADATA) {
|
||||||
|
dsMetadataTable.deleteMetadata(event.getDistributionSetMetadata().getKey());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* softwareLayout Initialize the component.
|
* softwareLayout Initialize the component.
|
||||||
*/
|
*/
|
||||||
@@ -94,6 +123,9 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet
|
|||||||
softwareModuleTable = new SoftwareModuleDetailsTable();
|
softwareModuleTable = new SoftwareModuleDetailsTable();
|
||||||
softwareModuleTable.init(getI18n(), true, getPermissionChecker(), distributionSetManagement, getEventBus(),
|
softwareModuleTable.init(getI18n(), true, getPermissionChecker(), distributionSetManagement, getEventBus(),
|
||||||
manageDistUIState);
|
manageDistUIState);
|
||||||
|
dsMetadataTable = new DistributionSetMetadatadetailslayout();
|
||||||
|
dsMetadataTable.init(getI18n(), getPermissionChecker(),distributionSetManagement,
|
||||||
|
dsMetadataPopupLayout,entityFactory);
|
||||||
super.init();
|
super.init();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -107,6 +139,7 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet
|
|||||||
populateDetails();
|
populateDetails();
|
||||||
populateModule();
|
populateModule();
|
||||||
populateTags();
|
populateTags();
|
||||||
|
populateMetadataDetails();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void populateModule() {
|
private void populateModule() {
|
||||||
@@ -239,6 +272,10 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void populateMetadataDetails(){
|
||||||
|
dsMetadataTable.populateDSMetadata(getSelectedBaseEntity());
|
||||||
|
}
|
||||||
|
|
||||||
private void updateDistributionSetDetailsLayout(final String type, final Boolean isMigrationRequired) {
|
private void updateDistributionSetDetailsLayout(final String type, final Boolean isMigrationRequired) {
|
||||||
final VerticalLayout detailsTabLayout = getDetailsLayout();
|
final VerticalLayout detailsTabLayout = getDetailsLayout();
|
||||||
detailsTabLayout.removeAllComponents();
|
detailsTabLayout.removeAllComponents();
|
||||||
@@ -294,6 +331,7 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet
|
|||||||
detailsTab.addTab(createSoftwareModuleTab(), getI18n().get("caption.softwares.distdetail.tab"), null);
|
detailsTab.addTab(createSoftwareModuleTab(), getI18n().get("caption.softwares.distdetail.tab"), null);
|
||||||
detailsTab.addTab(createTagsLayout(), getI18n().get("caption.tags.tab"), null);
|
detailsTab.addTab(createTagsLayout(), getI18n().get("caption.tags.tab"), null);
|
||||||
detailsTab.addTab(createLogLayout(), getI18n().get("caption.logs.tab"), null);
|
detailsTab.addTab(createLogLayout(), getI18n().get("caption.logs.tab"), null);
|
||||||
|
detailsTab.addTab(dsMetadataTable, getI18n().get("caption.metadata"), null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -353,7 +391,7 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String getTabSheetId() {
|
protected String getTabSheetId() {
|
||||||
return null;
|
return SPUIComponentIdProvider.DISTRIBUTIONSET_DETAILS_TABSHEET_ID;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -361,4 +399,10 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet
|
|||||||
return SPUIComponentIdProvider.DISTRIBUTION_DETAILS_HEADER_LABEL_ID;
|
return SPUIComponentIdProvider.DISTRIBUTION_DETAILS_HEADER_LABEL_ID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isDistributionSetSelected(DistributionSet ds) {
|
||||||
|
DistributionSetIdName lastselectedDistDS = manageDistUIState.getLastSelectedDistribution().isPresent() ? manageDistUIState
|
||||||
|
.getLastSelectedDistribution().get() : null;
|
||||||
|
return ds != null && lastselectedDistDS != null && lastselectedDistDS.getName().equals(ds.getName())
|
||||||
|
&& lastselectedDistDS.getVersion().endsWith(ds.getVersion());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,6 +30,8 @@ import org.eclipse.hawkbit.ui.common.DistributionSetIdName;
|
|||||||
import org.eclipse.hawkbit.ui.common.table.AbstractNamedVersionTable;
|
import org.eclipse.hawkbit.ui.common.table.AbstractNamedVersionTable;
|
||||||
import org.eclipse.hawkbit.ui.common.table.AbstractTable;
|
import org.eclipse.hawkbit.ui.common.table.AbstractTable;
|
||||||
import org.eclipse.hawkbit.ui.common.table.BaseEntityEventType;
|
import org.eclipse.hawkbit.ui.common.table.BaseEntityEventType;
|
||||||
|
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
|
||||||
|
import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder;
|
||||||
import org.eclipse.hawkbit.ui.distributions.event.DistributionsUIEvent;
|
import org.eclipse.hawkbit.ui.distributions.event.DistributionsUIEvent;
|
||||||
import org.eclipse.hawkbit.ui.distributions.event.DistributionsViewAcceptCriteria;
|
import org.eclipse.hawkbit.ui.distributions.event.DistributionsViewAcceptCriteria;
|
||||||
import org.eclipse.hawkbit.ui.distributions.event.DragEvent;
|
import org.eclipse.hawkbit.ui.distributions.event.DragEvent;
|
||||||
@@ -42,6 +44,7 @@ import org.eclipse.hawkbit.ui.utils.SPUIComponentIdProvider;
|
|||||||
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
|
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
|
||||||
import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions;
|
import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions;
|
||||||
import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions;
|
import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions;
|
||||||
|
import org.eclipse.hawkbit.ui.utils.TableColumn;
|
||||||
import org.eclipse.hawkbit.ui.utils.UINotification;
|
import org.eclipse.hawkbit.ui.utils.UINotification;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@@ -57,8 +60,10 @@ import com.vaadin.data.Item;
|
|||||||
import com.vaadin.event.dd.DragAndDropEvent;
|
import com.vaadin.event.dd.DragAndDropEvent;
|
||||||
import com.vaadin.event.dd.DropHandler;
|
import com.vaadin.event.dd.DropHandler;
|
||||||
import com.vaadin.event.dd.acceptcriteria.AcceptCriterion;
|
import com.vaadin.event.dd.acceptcriteria.AcceptCriterion;
|
||||||
|
import com.vaadin.server.FontAwesome;
|
||||||
import com.vaadin.spring.annotation.SpringComponent;
|
import com.vaadin.spring.annotation.SpringComponent;
|
||||||
import com.vaadin.spring.annotation.ViewScope;
|
import com.vaadin.spring.annotation.ViewScope;
|
||||||
|
import com.vaadin.ui.Button;
|
||||||
import com.vaadin.ui.Component;
|
import com.vaadin.ui.Component;
|
||||||
import com.vaadin.ui.Table;
|
import com.vaadin.ui.Table;
|
||||||
import com.vaadin.ui.UI;
|
import com.vaadin.ui.UI;
|
||||||
@@ -98,6 +103,9 @@ public class DistributionSetTable extends AbstractNamedVersionTable<Distribution
|
|||||||
@Autowired
|
@Autowired
|
||||||
private transient TargetManagement targetManagement;
|
private transient TargetManagement targetManagement;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private DsMetadataPopupLayout dsMetadataPopupLayout;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize the component.
|
* Initialize the component.
|
||||||
*/
|
*/
|
||||||
@@ -181,6 +189,10 @@ public class DistributionSetTable extends AbstractNamedVersionTable<Distribution
|
|||||||
protected void publishEntityAfterValueChange(final DistributionSet distributionSet) {
|
protected void publishEntityAfterValueChange(final DistributionSet distributionSet) {
|
||||||
eventBus.publish(this, new DistributionTableEvent(BaseEntityEventType.SELECTED_ENTITY, distributionSet));
|
eventBus.publish(this, new DistributionTableEvent(BaseEntityEventType.SELECTED_ENTITY, distributionSet));
|
||||||
eventBus.publish(this, DistributionsUIEvent.ORDER_BY_DISTRIBUTION);
|
eventBus.publish(this, DistributionsUIEvent.ORDER_BY_DISTRIBUTION);
|
||||||
|
if(distributionSet!=null){
|
||||||
|
manageDistUIState.setLastSelectedEntity(new DistributionSetIdName(distributionSet.getId(),
|
||||||
|
distributionSet.getName(),distributionSet.getVersion()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -469,4 +481,49 @@ public class DistributionSetTable extends AbstractNamedVersionTable<Distribution
|
|||||||
manageDistUIState.setNoDataAvailableDist(!available);
|
manageDistUIState.setNoDataAvailableDist(!available);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void addCustomGeneratedColumns() {
|
||||||
|
addGeneratedColumn(SPUILabelDefinitions.METADATA_ICON, new ColumnGenerator() {
|
||||||
|
private static final long serialVersionUID = 117186282275065399L;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object generateCell(final Table source, final Object itemId, final Object columnId) {
|
||||||
|
final String nameVersionStr = getNameAndVerion(itemId);
|
||||||
|
final Button manageMetaDataBtn = createManageMetadataButton(nameVersionStr);
|
||||||
|
manageMetaDataBtn.addClickListener(event -> showMetadataDetails(((DistributionSetIdName) itemId).getId()));
|
||||||
|
return manageMetaDataBtn;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected List<TableColumn> getTableVisibleColumns() {
|
||||||
|
final List<TableColumn> columnList = super.getTableVisibleColumns();
|
||||||
|
if (!isMaximized()) {
|
||||||
|
columnList.add(new TableColumn(SPUILabelDefinitions.METADATA_ICON, "", 0.1F));
|
||||||
|
}
|
||||||
|
return columnList;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Button createManageMetadataButton(String nameVersionStr) {
|
||||||
|
final Button manageMetadataBtn = SPUIComponentProvider.getButton(
|
||||||
|
SPUIComponentIdProvider.DS_TABLE_MANAGE_METADATA_ID + "." + nameVersionStr, "", "", null, false,
|
||||||
|
FontAwesome.LIST_ALT, SPUIButtonStyleSmallNoBorder.class);
|
||||||
|
manageMetadataBtn.addStyleName(SPUIStyleDefinitions.ARTIFACT_DTLS_ICON);
|
||||||
|
manageMetadataBtn.setDescription(i18n.get("tooltip.metadata.icon"));
|
||||||
|
return manageMetadataBtn;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void showMetadataDetails(Long itemId) {
|
||||||
|
DistributionSet ds = distributionSetManagement.findDistributionSetByIdWithDetails(itemId);
|
||||||
|
UI.getCurrent().addWindow(dsMetadataPopupLayout.getWindow(ds,null));
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getNameAndVerion(final Object itemId) {
|
||||||
|
final Item item = getItem(itemId);
|
||||||
|
final String name = (String) item.getItemProperty(SPUILabelDefinitions.VAR_NAME).getValue();
|
||||||
|
final String version = (String) item.getItemProperty(SPUILabelDefinitions.VAR_VERSION).getValue();
|
||||||
|
return name + "." + version;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,11 +8,16 @@
|
|||||||
*/
|
*/
|
||||||
package org.eclipse.hawkbit.ui.distributions.smtable;
|
package org.eclipse.hawkbit.ui.distributions.smtable;
|
||||||
|
|
||||||
|
import org.eclipse.hawkbit.repository.EntityFactory;
|
||||||
|
import org.eclipse.hawkbit.repository.SoftwareManagement;
|
||||||
import org.eclipse.hawkbit.repository.model.SoftwareModule;
|
import org.eclipse.hawkbit.repository.model.SoftwareModule;
|
||||||
|
import org.eclipse.hawkbit.repository.model.SoftwareModuleMetadata;
|
||||||
import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent;
|
import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent;
|
||||||
import org.eclipse.hawkbit.ui.artifacts.smtable.SoftwareModuleAddUpdateWindow;
|
import org.eclipse.hawkbit.ui.artifacts.smtable.SoftwareModuleAddUpdateWindow;
|
||||||
import org.eclipse.hawkbit.ui.common.detailslayout.AbstractNamedVersionedEntityTableDetailsLayout;
|
import org.eclipse.hawkbit.ui.common.detailslayout.AbstractNamedVersionedEntityTableDetailsLayout;
|
||||||
|
import org.eclipse.hawkbit.ui.common.detailslayout.SoftwareModuleMetadatadetailslayout;
|
||||||
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
|
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
|
||||||
|
import org.eclipse.hawkbit.ui.distributions.event.MetadataEvent;
|
||||||
import org.eclipse.hawkbit.ui.distributions.state.ManageDistUIState;
|
import org.eclipse.hawkbit.ui.distributions.state.ManageDistUIState;
|
||||||
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
|
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
|
||||||
import org.eclipse.hawkbit.ui.utils.SPUIComponentIdProvider;
|
import org.eclipse.hawkbit.ui.utils.SPUIComponentIdProvider;
|
||||||
@@ -45,6 +50,50 @@ public class SwModuleDetails extends AbstractNamedVersionedEntityTableDetailsLay
|
|||||||
@Autowired
|
@Autowired
|
||||||
private ManageDistUIState manageDistUIState;
|
private ManageDistUIState manageDistUIState;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private transient SoftwareManagement softwareManagement;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private SwMetadataPopupLayout swMetadataPopupLayout;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private EntityFactory entityFactory;
|
||||||
|
|
||||||
|
private SoftwareModuleMetadatadetailslayout swmMetadataTable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* softwareLayout Initialize the component.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected void init() {
|
||||||
|
swmMetadataTable = new SoftwareModuleMetadatadetailslayout();
|
||||||
|
swmMetadataTable.init(getI18n(), getPermissionChecker(),softwareManagement,swMetadataPopupLayout,entityFactory);
|
||||||
|
super.init();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MetadataEvent.
|
||||||
|
*
|
||||||
|
* @param event
|
||||||
|
* as instance of {@link MetadataEvent}
|
||||||
|
*/
|
||||||
|
|
||||||
|
@EventBusListenerMethod(scope = EventScope.SESSION)
|
||||||
|
void onEvent(final MetadataEvent event) {
|
||||||
|
UI.getCurrent()
|
||||||
|
.access(() -> {
|
||||||
|
SoftwareModuleMetadata softwareModuleMetadata = event.getSoftwareModuleMetadata();
|
||||||
|
if (softwareModuleMetadata != null
|
||||||
|
&& isSoftwareModuleSelected(softwareModuleMetadata.getSoftwareModule())) {
|
||||||
|
if (event.getMetadataUIEvent() == MetadataEvent.MetadataUIEvent.CREATE_SOFTWARE_MODULE_METADATA) {
|
||||||
|
swmMetadataTable.createMetadata(event.getSoftwareModuleMetadata().getKey());
|
||||||
|
} else if (event.getMetadataUIEvent() == MetadataEvent.MetadataUIEvent.DELETE_SOFTWARE_MODULE_METADATA) {
|
||||||
|
swmMetadataTable.deleteMetadata(event.getSoftwareModuleMetadata().getKey());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
@EventBusListenerMethod(scope = EventScope.SESSION)
|
@EventBusListenerMethod(scope = EventScope.SESSION)
|
||||||
void onEvent(final SoftwareModuleEvent softwareModuleEvent) {
|
void onEvent(final SoftwareModuleEvent softwareModuleEvent) {
|
||||||
onBaseEntityEvent(softwareModuleEvent);
|
onBaseEntityEvent(softwareModuleEvent);
|
||||||
@@ -69,6 +118,7 @@ public class SwModuleDetails extends AbstractNamedVersionedEntityTableDetailsLay
|
|||||||
detailsTab.addTab(createDetailsLayout(), getI18n().get("caption.tab.details"), null);
|
detailsTab.addTab(createDetailsLayout(), getI18n().get("caption.tab.details"), null);
|
||||||
detailsTab.addTab(createDescriptionLayout(), getI18n().get("caption.tab.description"), null);
|
detailsTab.addTab(createDescriptionLayout(), getI18n().get("caption.tab.description"), null);
|
||||||
detailsTab.addTab(createLogLayout(), getI18n().get("caption.logs.tab"), null);
|
detailsTab.addTab(createLogLayout(), getI18n().get("caption.logs.tab"), null);
|
||||||
|
detailsTab.addTab(swmMetadataTable, getI18n().get("caption.metadata"), null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -93,7 +143,7 @@ public class SwModuleDetails extends AbstractNamedVersionedEntityTableDetailsLay
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String getTabSheetId() {
|
protected String getTabSheetId() {
|
||||||
return null;
|
return SPUIComponentIdProvider.DIST_SW_MODULE_DETAILS_TABSHEET_ID;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void populateDetails() {
|
private void populateDetails() {
|
||||||
@@ -139,6 +189,7 @@ public class SwModuleDetails extends AbstractNamedVersionedEntityTableDetailsLay
|
|||||||
@Override
|
@Override
|
||||||
protected void populateDetailsWidget() {
|
protected void populateDetailsWidget() {
|
||||||
populateDetails();
|
populateDetails();
|
||||||
|
populateMetadataDetails();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -146,4 +197,15 @@ public class SwModuleDetails extends AbstractNamedVersionedEntityTableDetailsLay
|
|||||||
return SPUIComponentIdProvider.TARGET_DETAILS_HEADER_LABEL_ID;
|
return SPUIComponentIdProvider.TARGET_DETAILS_HEADER_LABEL_ID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void populateMetadataDetails() {
|
||||||
|
swmMetadataTable.populateSMMetadata(getSelectedBaseEntity());
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isSoftwareModuleSelected(SoftwareModule softwareModule) {
|
||||||
|
final Long selectedDistSWModuleId = manageDistUIState.getSelectedBaseSwModuleId().isPresent() ? manageDistUIState
|
||||||
|
.getSelectedBaseSwModuleId().get() : null;
|
||||||
|
return softwareModule != null && selectedDistSWModuleId != null
|
||||||
|
&& selectedDistSWModuleId.equals(softwareModule.getId());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ import com.vaadin.shared.ui.window.WindowMode;
|
|||||||
import com.vaadin.spring.annotation.SpringComponent;
|
import com.vaadin.spring.annotation.SpringComponent;
|
||||||
import com.vaadin.spring.annotation.ViewScope;
|
import com.vaadin.spring.annotation.ViewScope;
|
||||||
import com.vaadin.ui.Button;
|
import com.vaadin.ui.Button;
|
||||||
|
import com.vaadin.ui.HorizontalLayout;
|
||||||
import com.vaadin.ui.JavaScript;
|
import com.vaadin.ui.JavaScript;
|
||||||
import com.vaadin.ui.Table;
|
import com.vaadin.ui.Table;
|
||||||
import com.vaadin.ui.UI;
|
import com.vaadin.ui.UI;
|
||||||
@@ -78,6 +79,9 @@ public class SwModuleTable extends AbstractNamedVersionTable<SoftwareModule, Lon
|
|||||||
@Autowired
|
@Autowired
|
||||||
private ArtifactDetailsLayout artifactDetailsLayout;
|
private ArtifactDetailsLayout artifactDetailsLayout;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private SwMetadataPopupLayout swMetadataPopupLayout;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize the filter layout.
|
* Initialize the filter layout.
|
||||||
*/
|
*/
|
||||||
@@ -175,16 +179,19 @@ public class SwModuleTable extends AbstractNamedVersionTable<SoftwareModule, Lon
|
|||||||
protected void addCustomGeneratedColumns() {
|
protected void addCustomGeneratedColumns() {
|
||||||
|
|
||||||
addGeneratedColumn(SPUILabelDefinitions.ARTIFACT_ICON, new ColumnGenerator() {
|
addGeneratedColumn(SPUILabelDefinitions.ARTIFACT_ICON, new ColumnGenerator() {
|
||||||
|
|
||||||
private static final long serialVersionUID = -5982361782989980277L;
|
private static final long serialVersionUID = -5982361782989980277L;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object generateCell(final Table source, final Object itemId, final Object columnId) {
|
public Object generateCell(final Table source, final Object itemId, final Object columnId) {
|
||||||
|
HorizontalLayout iconLayout = new HorizontalLayout();
|
||||||
// add artifactory details popup
|
// add artifactory details popup
|
||||||
final String nameVersionStr = getNameAndVerion(itemId);
|
final String nameVersionStr = getNameAndVerion(itemId);
|
||||||
final Button showArtifactDtlsBtn = createShowArtifactDtlsButton(nameVersionStr);
|
final Button showArtifactDtlsBtn = createShowArtifactDtlsButton(nameVersionStr);
|
||||||
|
final Button manageMetaDataBtn = createManageMetadataButton(nameVersionStr);
|
||||||
showArtifactDtlsBtn.addClickListener(event -> showArtifactDetailsWindow((Long) itemId, nameVersionStr));
|
showArtifactDtlsBtn.addClickListener(event -> showArtifactDetailsWindow((Long) itemId, nameVersionStr));
|
||||||
return showArtifactDtlsBtn;
|
manageMetaDataBtn.addClickListener(event -> showMetadataDetails((Long) itemId));
|
||||||
|
iconLayout.addComponent(showArtifactDtlsBtn);
|
||||||
|
iconLayout.addComponent(manageMetaDataBtn);
|
||||||
|
return iconLayout;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -207,6 +214,9 @@ public class SwModuleTable extends AbstractNamedVersionTable<SoftwareModule, Lon
|
|||||||
@Override
|
@Override
|
||||||
protected void publishEntityAfterValueChange(final SoftwareModule selectedLastEntity) {
|
protected void publishEntityAfterValueChange(final SoftwareModule selectedLastEntity) {
|
||||||
eventBus.publish(this, new SoftwareModuleEvent(BaseEntityEventType.SELECTED_ENTITY, selectedLastEntity));
|
eventBus.publish(this, new SoftwareModuleEvent(BaseEntityEventType.SELECTED_ENTITY, selectedLastEntity));
|
||||||
|
if(selectedLastEntity!=null){
|
||||||
|
manageDistUIState.setSelectedBaseSwModuleId(selectedLastEntity.getId());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -310,12 +320,21 @@ public class SwModuleTable extends AbstractNamedVersionTable<SoftwareModule, Lon
|
|||||||
private Button createShowArtifactDtlsButton(final String nameVersionStr) {
|
private Button createShowArtifactDtlsButton(final String nameVersionStr) {
|
||||||
final Button showArtifactDtlsBtn = SPUIComponentProvider.getButton(
|
final Button showArtifactDtlsBtn = SPUIComponentProvider.getButton(
|
||||||
SPUIComponentIdProvider.SW_TABLE_ATRTIFACT_DETAILS_ICON + "." + nameVersionStr, "", "", null, false,
|
SPUIComponentIdProvider.SW_TABLE_ATRTIFACT_DETAILS_ICON + "." + nameVersionStr, "", "", null, false,
|
||||||
FontAwesome.LIST_ALT, SPUIButtonStyleSmallNoBorder.class);
|
FontAwesome.FILE_O, SPUIButtonStyleSmallNoBorder.class);
|
||||||
showArtifactDtlsBtn.addStyleName(SPUIStyleDefinitions.ARTIFACT_DTLS_ICON);
|
showArtifactDtlsBtn.addStyleName(SPUIStyleDefinitions.ARTIFACT_DTLS_ICON);
|
||||||
showArtifactDtlsBtn.setDescription(i18n.get("tooltip.artifact.icon"));
|
showArtifactDtlsBtn.setDescription(i18n.get("tooltip.artifact.icon"));
|
||||||
return showArtifactDtlsBtn;
|
return showArtifactDtlsBtn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Button createManageMetadataButton(String nameVersionStr) {
|
||||||
|
final Button manageMetadataBtn = SPUIComponentProvider.getButton(
|
||||||
|
SPUIComponentIdProvider.SW_TABLE_MANAGE_METADATA_ID + "." + nameVersionStr, "", "", null, false,
|
||||||
|
FontAwesome.LIST_ALT, SPUIButtonStyleSmallNoBorder.class);
|
||||||
|
manageMetadataBtn.addStyleName(SPUIStyleDefinitions.ARTIFACT_DTLS_ICON);
|
||||||
|
manageMetadataBtn.setDescription(i18n.get("tooltip.metadata.icon"));
|
||||||
|
return manageMetadataBtn;
|
||||||
|
}
|
||||||
|
|
||||||
private String getNameAndVerion(final Object itemId) {
|
private String getNameAndVerion(final Object itemId) {
|
||||||
final Item item = getItem(itemId);
|
final Item item = getItem(itemId);
|
||||||
final String name = (String) item.getItemProperty(SPUILabelDefinitions.VAR_NAME).getValue();
|
final String name = (String) item.getItemProperty(SPUILabelDefinitions.VAR_NAME).getValue();
|
||||||
@@ -388,4 +407,9 @@ public class SwModuleTable extends AbstractNamedVersionTable<SoftwareModule, Lon
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void showMetadataDetails(Long itemId) {
|
||||||
|
SoftwareModule swmodule = softwareManagement.findSoftwareModuleWithDetails(itemId);
|
||||||
|
UI.getCurrent().addWindow(swMetadataPopupLayout.getWindow(swmodule,null));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,6 @@ import org.eclipse.hawkbit.ui.management.event.ManagementUIEvent;
|
|||||||
import org.eclipse.hawkbit.ui.management.event.PinUnpinEvent;
|
import org.eclipse.hawkbit.ui.management.event.PinUnpinEvent;
|
||||||
import org.eclipse.hawkbit.ui.management.event.TargetTableEvent;
|
import org.eclipse.hawkbit.ui.management.event.TargetTableEvent;
|
||||||
import org.eclipse.hawkbit.ui.management.state.ManagementUIState;
|
import org.eclipse.hawkbit.ui.management.state.ManagementUIState;
|
||||||
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
|
|
||||||
import org.eclipse.hawkbit.ui.utils.I18N;
|
import org.eclipse.hawkbit.ui.utils.I18N;
|
||||||
import org.eclipse.hawkbit.ui.utils.SPDateTimeUtil;
|
import org.eclipse.hawkbit.ui.utils.SPDateTimeUtil;
|
||||||
import org.eclipse.hawkbit.ui.utils.SPUIComponentIdProvider;
|
import org.eclipse.hawkbit.ui.utils.SPUIComponentIdProvider;
|
||||||
|
|||||||
@@ -8,11 +8,18 @@
|
|||||||
*/
|
*/
|
||||||
package org.eclipse.hawkbit.ui.management.dstable;
|
package org.eclipse.hawkbit.ui.management.dstable;
|
||||||
|
|
||||||
|
import org.eclipse.hawkbit.repository.DistributionSetManagement;
|
||||||
|
import org.eclipse.hawkbit.repository.EntityFactory;
|
||||||
import org.eclipse.hawkbit.repository.model.DistributionSet;
|
import org.eclipse.hawkbit.repository.model.DistributionSet;
|
||||||
|
import org.eclipse.hawkbit.repository.model.DistributionSetMetadata;
|
||||||
|
import org.eclipse.hawkbit.ui.common.DistributionSetIdName;
|
||||||
import org.eclipse.hawkbit.ui.common.detailslayout.AbstractNamedVersionedEntityTableDetailsLayout;
|
import org.eclipse.hawkbit.ui.common.detailslayout.AbstractNamedVersionedEntityTableDetailsLayout;
|
||||||
|
import org.eclipse.hawkbit.ui.common.detailslayout.DistributionSetMetadatadetailslayout;
|
||||||
import org.eclipse.hawkbit.ui.common.detailslayout.SoftwareModuleDetailsTable;
|
import org.eclipse.hawkbit.ui.common.detailslayout.SoftwareModuleDetailsTable;
|
||||||
import org.eclipse.hawkbit.ui.common.tagdetails.DistributionTagToken;
|
import org.eclipse.hawkbit.ui.common.tagdetails.DistributionTagToken;
|
||||||
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
|
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
|
||||||
|
import org.eclipse.hawkbit.ui.distributions.dstable.DsMetadataPopupLayout;
|
||||||
|
import org.eclipse.hawkbit.ui.distributions.event.MetadataEvent;
|
||||||
import org.eclipse.hawkbit.ui.management.event.DistributionTableEvent;
|
import org.eclipse.hawkbit.ui.management.event.DistributionTableEvent;
|
||||||
import org.eclipse.hawkbit.ui.management.state.ManagementUIState;
|
import org.eclipse.hawkbit.ui.management.state.ManagementUIState;
|
||||||
import org.eclipse.hawkbit.ui.utils.SPUIComponentIdProvider;
|
import org.eclipse.hawkbit.ui.utils.SPUIComponentIdProvider;
|
||||||
@@ -47,15 +54,47 @@ public class DistributionDetails extends AbstractNamedVersionedEntityTableDetail
|
|||||||
@Autowired
|
@Autowired
|
||||||
private DistributionTagToken distributionTagToken;
|
private DistributionTagToken distributionTagToken;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private transient DistributionSetManagement distributionSetManagement;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private DsMetadataPopupLayout dsMetadataPopupLayout;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private EntityFactory entityFactory;
|
||||||
|
|
||||||
private SoftwareModuleDetailsTable softwareModuleTable;
|
private SoftwareModuleDetailsTable softwareModuleTable;
|
||||||
|
|
||||||
|
private DistributionSetMetadatadetailslayout dsMetadataTable;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void init() {
|
protected void init() {
|
||||||
softwareModuleTable = new SoftwareModuleDetailsTable();
|
softwareModuleTable = new SoftwareModuleDetailsTable();
|
||||||
softwareModuleTable.init(getI18n(), false, getPermissionChecker(), null, null, null);
|
softwareModuleTable.init(getI18n(), false, getPermissionChecker(), null, null, null);
|
||||||
|
|
||||||
|
dsMetadataTable = new DistributionSetMetadatadetailslayout();
|
||||||
|
dsMetadataTable.init(getI18n(), getPermissionChecker(),distributionSetManagement,
|
||||||
|
dsMetadataPopupLayout,entityFactory);
|
||||||
|
|
||||||
super.init();
|
super.init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventBusListenerMethod(scope = EventScope.SESSION)
|
||||||
|
void onEvent(final MetadataEvent event) {
|
||||||
|
UI.getCurrent()
|
||||||
|
.access(() -> {
|
||||||
|
DistributionSetMetadata dsMetadata = event.getDistributionSetMetadata();
|
||||||
|
if (dsMetadata != null && isDistributionSetSelected(dsMetadata.getDistributionSet())) {
|
||||||
|
if (event.getMetadataUIEvent() == MetadataEvent.MetadataUIEvent.CREATE_DISTRIBUTION_SET_METADATA) {
|
||||||
|
dsMetadataTable.createMetadata(event.getDistributionSetMetadata().getKey());
|
||||||
|
} else if (event.getMetadataUIEvent() == MetadataEvent.MetadataUIEvent.DELETE_DISTRIBUTION_SET_METADATA) {
|
||||||
|
dsMetadataTable.deleteMetadata(event.getDistributionSetMetadata().getKey());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@EventBusListenerMethod(scope = EventScope.SESSION)
|
@EventBusListenerMethod(scope = EventScope.SESSION)
|
||||||
void onEvent(final DistributionTableEvent distributionTableEvent) {
|
void onEvent(final DistributionTableEvent distributionTableEvent) {
|
||||||
onBaseEntityEvent(distributionTableEvent);
|
onBaseEntityEvent(distributionTableEvent);
|
||||||
@@ -73,6 +112,7 @@ public class DistributionDetails extends AbstractNamedVersionedEntityTableDetail
|
|||||||
detailsTab.addTab(createSoftwareModuleTab(), getI18n().get("caption.softwares.distdetail.tab"), null);
|
detailsTab.addTab(createSoftwareModuleTab(), getI18n().get("caption.softwares.distdetail.tab"), null);
|
||||||
detailsTab.addTab(createTagsLayout(), getI18n().get("caption.tags.tab"), null);
|
detailsTab.addTab(createTagsLayout(), getI18n().get("caption.tags.tab"), null);
|
||||||
detailsTab.addTab(createLogLayout(), getI18n().get("caption.logs.tab"), null);
|
detailsTab.addTab(createLogLayout(), getI18n().get("caption.logs.tab"), null);
|
||||||
|
detailsTab.addTab(dsMetadataTable, getI18n().get("caption.metadata"), null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -114,9 +154,14 @@ public class DistributionDetails extends AbstractNamedVersionedEntityTableDetail
|
|||||||
protected void populateDetailsWidget() {
|
protected void populateDetailsWidget() {
|
||||||
softwareModuleTable.populateModule(getSelectedBaseEntity());
|
softwareModuleTable.populateModule(getSelectedBaseEntity());
|
||||||
populateDetails(getSelectedBaseEntity());
|
populateDetails(getSelectedBaseEntity());
|
||||||
|
populateMetadataDetails();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void populateMetadataDetails(){
|
||||||
|
dsMetadataTable.populateDSMetadata(getSelectedBaseEntity());
|
||||||
|
}
|
||||||
|
|
||||||
private void populateDetails(final DistributionSet ds) {
|
private void populateDetails(final DistributionSet ds) {
|
||||||
if (ds != null) {
|
if (ds != null) {
|
||||||
updateDistributionDetailsLayout(ds.getType().getName(), ds.isRequiredMigrationStep());
|
updateDistributionDetailsLayout(ds.getType().getName(), ds.isRequiredMigrationStep());
|
||||||
@@ -161,4 +206,11 @@ public class DistributionDetails extends AbstractNamedVersionedEntityTableDetail
|
|||||||
return SPUIComponentIdProvider.DISTRIBUTION_DETAILS_HEADER_LABEL_ID;
|
return SPUIComponentIdProvider.DISTRIBUTION_DETAILS_HEADER_LABEL_ID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isDistributionSetSelected(DistributionSet ds) {
|
||||||
|
DistributionSetIdName lastselectedManageDS = managementUIState.getLastSelectedDistribution().isPresent() ? managementUIState
|
||||||
|
.getLastSelectedDistribution().get() : null;
|
||||||
|
return ds!=null && lastselectedManageDS != null && lastselectedManageDS.getName().equals(ds.getName())
|
||||||
|
&& lastselectedManageDS.getVersion().endsWith(ds.getVersion());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,9 +18,11 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.eclipse.hawkbit.repository.DistributionSetManagement;
|
import org.eclipse.hawkbit.repository.DistributionSetManagement;
|
||||||
|
import org.eclipse.hawkbit.repository.EntityFactory;
|
||||||
import org.eclipse.hawkbit.repository.SpPermissionChecker;
|
import org.eclipse.hawkbit.repository.SpPermissionChecker;
|
||||||
import org.eclipse.hawkbit.repository.TargetManagement;
|
import org.eclipse.hawkbit.repository.TargetManagement;
|
||||||
import org.eclipse.hawkbit.repository.model.DistributionSet;
|
import org.eclipse.hawkbit.repository.model.DistributionSet;
|
||||||
|
import org.eclipse.hawkbit.repository.model.DistributionSetMetadata;
|
||||||
import org.eclipse.hawkbit.repository.model.DistributionSetTagAssignmentResult;
|
import org.eclipse.hawkbit.repository.model.DistributionSetTagAssignmentResult;
|
||||||
import org.eclipse.hawkbit.repository.model.Target;
|
import org.eclipse.hawkbit.repository.model.Target;
|
||||||
import org.eclipse.hawkbit.repository.model.TargetIdName;
|
import org.eclipse.hawkbit.repository.model.TargetIdName;
|
||||||
@@ -29,6 +31,9 @@ import org.eclipse.hawkbit.ui.common.table.AbstractNamedVersionTable;
|
|||||||
import org.eclipse.hawkbit.ui.common.table.AbstractTable;
|
import org.eclipse.hawkbit.ui.common.table.AbstractTable;
|
||||||
import org.eclipse.hawkbit.ui.common.table.BaseEntityEventType;
|
import org.eclipse.hawkbit.ui.common.table.BaseEntityEventType;
|
||||||
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
|
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
|
||||||
|
import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder;
|
||||||
|
import org.eclipse.hawkbit.ui.distributions.dstable.DsMetadataPopupLayout;
|
||||||
|
import org.eclipse.hawkbit.ui.distributions.state.ManageDistUIState;
|
||||||
import org.eclipse.hawkbit.ui.management.event.DistributionTableEvent;
|
import org.eclipse.hawkbit.ui.management.event.DistributionTableEvent;
|
||||||
import org.eclipse.hawkbit.ui.management.event.DistributionTableFilterEvent;
|
import org.eclipse.hawkbit.ui.management.event.DistributionTableFilterEvent;
|
||||||
import org.eclipse.hawkbit.ui.management.event.DragEvent;
|
import org.eclipse.hawkbit.ui.management.event.DragEvent;
|
||||||
@@ -63,6 +68,7 @@ import com.vaadin.ui.Button;
|
|||||||
import com.vaadin.ui.Button.ClickEvent;
|
import com.vaadin.ui.Button.ClickEvent;
|
||||||
import com.vaadin.ui.Component;
|
import com.vaadin.ui.Component;
|
||||||
import com.vaadin.ui.DragAndDropWrapper;
|
import com.vaadin.ui.DragAndDropWrapper;
|
||||||
|
import com.vaadin.ui.HorizontalLayout;
|
||||||
import com.vaadin.ui.Table;
|
import com.vaadin.ui.Table;
|
||||||
import com.vaadin.ui.UI;
|
import com.vaadin.ui.UI;
|
||||||
|
|
||||||
@@ -90,9 +96,15 @@ public class DistributionTable extends AbstractNamedVersionTable<DistributionSet
|
|||||||
@Autowired
|
@Autowired
|
||||||
private transient TargetManagement targetService;
|
private transient TargetManagement targetService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private DsMetadataPopupLayout dsMetadataPopupLayout;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private transient DistributionSetManagement distributionSetManagement;
|
private transient DistributionSetManagement distributionSetManagement;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private EntityFactory entityFactory;
|
||||||
|
|
||||||
private String notAllowedMsg;
|
private String notAllowedMsg;
|
||||||
|
|
||||||
private Boolean isDistPinned = false;
|
private Boolean isDistPinned = false;
|
||||||
@@ -219,11 +231,36 @@ public class DistributionTable extends AbstractNamedVersionTable<DistributionSet
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object generateCell(final Table source, final Object itemId, final Object columnId) {
|
public Object generateCell(final Table source, final Object itemId, final Object columnId) {
|
||||||
return getPinButton(itemId);
|
HorizontalLayout iconLayout = new HorizontalLayout();
|
||||||
|
final String nameVersionStr = getNameAndVerion(itemId);
|
||||||
|
final Button manageMetaDataBtn = createManageMetadataButton(nameVersionStr);
|
||||||
|
manageMetaDataBtn.addClickListener(event -> showMetadataDetails(itemId));
|
||||||
|
iconLayout.addComponent((Button)getPinButton(itemId));
|
||||||
|
iconLayout.addComponent(manageMetaDataBtn);
|
||||||
|
return iconLayout;
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private String getNameAndVerion(final Object itemId) {
|
||||||
|
final Item item = getItem(itemId);
|
||||||
|
final String name = (String) item.getItemProperty(SPUILabelDefinitions.VAR_NAME).getValue();
|
||||||
|
final String version = (String) item.getItemProperty(SPUILabelDefinitions.VAR_VERSION).getValue();
|
||||||
|
return name + "." + version;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Button createManageMetadataButton(String nameVersionStr) {
|
||||||
|
final Button manageMetadataBtn = SPUIComponentProvider.getButton(
|
||||||
|
SPUIComponentIdProvider.SW_TABLE_MANAGE_METADATA_ID + "." + nameVersionStr, "", "", null, false,
|
||||||
|
FontAwesome.LIST_ALT, SPUIButtonStyleSmallNoBorder.class);
|
||||||
|
manageMetadataBtn.addStyleName(SPUIStyleDefinitions.ARTIFACT_DTLS_ICON);
|
||||||
|
manageMetadataBtn.addStyleName(SPUIStyleDefinitions.DS_METADATA_ICON);
|
||||||
|
manageMetadataBtn.setDescription(i18n.get("tooltip.metadata.icon"));
|
||||||
|
return manageMetadataBtn;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean isFirstRowSelectedOnLoad() {
|
protected boolean isFirstRowSelectedOnLoad() {
|
||||||
return !managementUIState.getSelectedDsIdName().isPresent()
|
return !managementUIState.getSelectedDsIdName().isPresent()
|
||||||
@@ -246,6 +283,10 @@ public class DistributionTable extends AbstractNamedVersionTable<DistributionSet
|
|||||||
@Override
|
@Override
|
||||||
protected void publishEntityAfterValueChange(final DistributionSet selectedLastEntity) {
|
protected void publishEntityAfterValueChange(final DistributionSet selectedLastEntity) {
|
||||||
eventBus.publish(this, new DistributionTableEvent(BaseEntityEventType.SELECTED_ENTITY, selectedLastEntity));
|
eventBus.publish(this, new DistributionTableEvent(BaseEntityEventType.SELECTED_ENTITY, selectedLastEntity));
|
||||||
|
if(selectedLastEntity!=null){
|
||||||
|
managementUIState.setLastSelectedDistribution(new DistributionSetIdName(selectedLastEntity.getId(),
|
||||||
|
selectedLastEntity.getName(),selectedLastEntity.getVersion()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -264,7 +305,7 @@ public class DistributionTable extends AbstractNamedVersionTable<DistributionSet
|
|||||||
if (isMaximized()) {
|
if (isMaximized()) {
|
||||||
return columnList;
|
return columnList;
|
||||||
}
|
}
|
||||||
columnList.add(new TableColumn(SPUILabelDefinitions.PIN_COLUMN, StringUtils.EMPTY, 0.1F));
|
columnList.add(new TableColumn(SPUILabelDefinitions.PIN_COLUMN, StringUtils.EMPTY, 0.2F));
|
||||||
return columnList;
|
return columnList;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -658,4 +699,11 @@ public class DistributionTable extends AbstractNamedVersionTable<DistributionSet
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void showMetadataDetails(Object itemId) {
|
||||||
|
final DistributionSetIdName distIdName = (DistributionSetIdName) getContainerDataSource().getItem(itemId)
|
||||||
|
.getItemProperty(SPUILabelDefinitions.VAR_DIST_ID_NAME).getValue();
|
||||||
|
DistributionSet ds = distributionSetManagement.findDistributionSetByIdWithDetails(distIdName.getId());
|
||||||
|
UI.getCurrent().addWindow(dsMetadataPopupLayout.getWindow(ds, null));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -88,6 +88,22 @@ public class ManagementUIState implements ManagmentEntityState<DistributionSetId
|
|||||||
|
|
||||||
private boolean bulkUploadWindowMinimised;
|
private boolean bulkUploadWindowMinimised;
|
||||||
|
|
||||||
|
private DistributionSetIdName lastSelectedDistribution;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the lastSelectedDistribution
|
||||||
|
*/
|
||||||
|
public Optional<DistributionSetIdName> getLastSelectedDistribution() {
|
||||||
|
return Optional.ofNullable(lastSelectedDistribution);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void setLastSelectedDistribution(final DistributionSetIdName value) {
|
||||||
|
this.lastSelectedDistribution = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the bulkUploadWindowMinimised
|
* @return the bulkUploadWindowMinimised
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -82,9 +82,9 @@ public final class HawkbitCommonUtil {
|
|||||||
|
|
||||||
private static final String JS_DRAG_COUNT_REM_CHILD = " if(x) { document.head.removeChild(x); } ";
|
private static final String JS_DRAG_COUNT_REM_CHILD = " if(x) { document.head.removeChild(x); } ";
|
||||||
|
|
||||||
private static final String DIV_DESCRIPTION = "<div id=\"desc-length\"><p id=\"desciption-p\">";
|
public static final String DIV_DESCRIPTION = "<div id=\"desc-length\"><p id=\"desciption-p\">";
|
||||||
|
|
||||||
private static final String DIV_CLOSE = "</p></div>";
|
public static final String DIV_CLOSE = "</p></div>";
|
||||||
|
|
||||||
private static final String DRAG_COUNT_ELEMENT = "var x = document.getElementById('sp-drag-count'); ";
|
private static final String DRAG_COUNT_ELEMENT = "var x = document.getElementById('sp-drag-count'); ";
|
||||||
private static final String CLOSE_BRACE = "\"; }';";
|
private static final String CLOSE_BRACE = "\"; }';";
|
||||||
|
|||||||
@@ -915,6 +915,70 @@ public final class SPUIComponentIdProvider {
|
|||||||
*/
|
*/
|
||||||
public static final String UPLOAD_STATUS_POPUP_ID = "artifact.upload.status.popup.id";
|
public static final String UPLOAD_STATUS_POPUP_ID = "artifact.upload.status.popup.id";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Software module table - Manage metadata id.
|
||||||
|
*/
|
||||||
|
public static final String SW_TABLE_MANAGE_METADATA_ID = "swtable.manage.metadata.id";
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Metadata key id.
|
||||||
|
*/
|
||||||
|
public static final String METADATA_KEY_FIELD_ID = "metadata.key.id";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Metadata value id.
|
||||||
|
*/
|
||||||
|
public static final String METADATA_VALUE_ID = "metadata.value.id";
|
||||||
|
/**
|
||||||
|
* Metadata save id.
|
||||||
|
*/
|
||||||
|
public static final String METADTA_SAVE_ICON_ID = "metadata.save.icon.id";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Metadata discard id.
|
||||||
|
*/
|
||||||
|
public static final String METADTA_DISCARD_ICON_ID = "metadata.discard.icon.id";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Metadata add icon id.
|
||||||
|
*/
|
||||||
|
public static final String METADTA_ADD_ICON_ID = "metadata.add.icon.id";
|
||||||
|
/**
|
||||||
|
* Metadata table id.
|
||||||
|
*/
|
||||||
|
public static final String METDATA_TABLE_ID = "metadata.table.id";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Distribution set table - Manage metadata id.
|
||||||
|
*/
|
||||||
|
public static final String DS_TABLE_MANAGE_METADATA_ID = "dstable.manage.metadata.id";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DistributionSet - Metadata button id.
|
||||||
|
*/
|
||||||
|
public static final String DS_METADATA_DETAIL_LINK = "distributionset.metadata.detail.link";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Metadata popup id.
|
||||||
|
*/
|
||||||
|
public static final String METADATA_POPUP_ID = "metadata.popup.id";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DistributionSet table details tab id in Distributions .
|
||||||
|
*/
|
||||||
|
public static final String DISTRIBUTIONSET_DETAILS_TABSHEET_ID = "distributionset.details.tabsheet";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Software module table details tab id in Distributions .
|
||||||
|
*/
|
||||||
|
public static final String DIST_SW_MODULE_DETAILS_TABSHEET_ID = "dist.sw.module.details.tabsheet";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Software Module - Metadata button id.
|
||||||
|
*/
|
||||||
|
public static final String SW_METADATA_DETAIL_LINK = "softwaremodule.metadata.detail.link";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* /* Private Constructor.
|
* /* Private Constructor.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1017,6 +1017,16 @@ public final class SPUIDefinitions {
|
|||||||
*/
|
*/
|
||||||
public static final String ROLLOUT_ACTION = "rollout-action";
|
public static final String ROLLOUT_ACTION = "rollout-action";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DistributionSet Metadata tab Id
|
||||||
|
*/
|
||||||
|
public static final String DISTRIBUTIONSET_METADATA_TAB_ID = "distSet.metadata.tab.id";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SoftwareModule Metadata tab Id
|
||||||
|
*/
|
||||||
|
public static final String SOFTWAREMODULE_METADATA_TAB_ID = "swModule.metadata.tab.id";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* /** Constructor.
|
* /** Constructor.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -561,6 +561,11 @@ public final class SPUILabelDefinitions {
|
|||||||
*/
|
*/
|
||||||
public static final String ROLLOUT_GROUP_INSTALLED_PERCENTAGE = "finishedPercentage";
|
public static final String ROLLOUT_GROUP_INSTALLED_PERCENTAGE = "finishedPercentage";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add metadata icon.
|
||||||
|
*/
|
||||||
|
public static final String METADATA_ICON = "metadataDls";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -137,6 +137,11 @@ public final class SPUIStyleDefinitions {
|
|||||||
*/
|
*/
|
||||||
public static final String ARTIFACT_DTLS_ICON = "swm-artifact-dtls-icon";
|
public static final String ARTIFACT_DTLS_ICON = "swm-artifact-dtls-icon";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Distribution metadata icon style.
|
||||||
|
*/
|
||||||
|
public static final String DS_METADATA_ICON = "ds-metadata-icon";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Target table style.
|
* Target table style.
|
||||||
*/
|
*/
|
||||||
@@ -293,6 +298,10 @@ public final class SPUIStyleDefinitions {
|
|||||||
* Status pending icon.
|
* Status pending icon.
|
||||||
*/
|
*/
|
||||||
public static final String STATUS_ICON_PENDING = "statusIconPending";
|
public static final String STATUS_ICON_PENDING = "statusIconPending";
|
||||||
|
/**
|
||||||
|
* Grid style.
|
||||||
|
*/
|
||||||
|
public static final String METADATA_GRID = "metadata-grid";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Footer layout style.
|
* Footer layout style.
|
||||||
|
|||||||
@@ -182,6 +182,7 @@
|
|||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.v-button-generatedColumnPadding {
|
.v-button-generatedColumnPadding {
|
||||||
height: 28px;
|
height: 28px;
|
||||||
padding: 0 6px !important;
|
padding: 0 6px !important;
|
||||||
@@ -189,5 +190,31 @@
|
|||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.metadata-grid {
|
||||||
|
tr {
|
||||||
|
.icon-only {
|
||||||
|
visibility: hidden;
|
||||||
|
color: $discard-icon-color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tr.v-grid-row-selected{
|
||||||
|
.icon-only .v-icon {
|
||||||
|
color : $widget-bg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tr.v-grid-row-selected:hover {
|
||||||
|
.icon-only {
|
||||||
|
visibility: visible;
|
||||||
|
color: $widget-bg !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tr:hover {
|
||||||
|
.icon-only {
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,9 +48,6 @@
|
|||||||
.distributionPin {
|
.distributionPin {
|
||||||
line-height: 15px;
|
line-height: 15px;
|
||||||
background-color: none;
|
background-color: none;
|
||||||
margin-bottom: 0 !important;
|
|
||||||
margin-right: 0 !important;
|
|
||||||
padding: 0;
|
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -143,4 +140,8 @@
|
|||||||
line-height: 21px;
|
line-height: 21px;
|
||||||
border: 1px solid $widget-border-color;
|
border: 1px solid $widget-border-color;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ds-metadata-icon{
|
||||||
|
line-height:15px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -139,5 +139,4 @@ $v-included-components: remove($v-included-components, form);
|
|||||||
background-position: bottom;
|
background-position: bottom;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
# Button names prefix with - button
|
# Button names prefix with - button
|
||||||
button.save = Save
|
button.save = Save
|
||||||
button.delete = Delete
|
button.delete = Delete
|
||||||
|
button.discard = Discard
|
||||||
button.discard.all = Discard All
|
button.discard.all = Discard All
|
||||||
button.delete.all = Delete All
|
button.delete.all = Delete All
|
||||||
button.assign.all = Save Assign
|
button.assign.all = Save Assign
|
||||||
@@ -57,6 +58,7 @@ caption.new.softwaremodule.jvm = Configure New Runtime
|
|||||||
caption.new.softwaremodule.os = Configure New OS
|
caption.new.softwaremodule.os = Configure New OS
|
||||||
caption.filter.simple = Simple Filter
|
caption.filter.simple = Simple Filter
|
||||||
caption.filter.custom = Custom Filter
|
caption.filter.custom = Custom Filter
|
||||||
|
caption.metadata = Metadata
|
||||||
|
|
||||||
caption.add.softwaremodule = Configure Software Module
|
caption.add.softwaremodule = Configure Software Module
|
||||||
caption.add.new.dist = Configure New Distribution
|
caption.add.new.dist = Configure New Distribution
|
||||||
@@ -89,6 +91,9 @@ caption.force.action.confirmbox = Confirm Force Active Action
|
|||||||
caption.confirm.abort.action = Confirm abort action
|
caption.confirm.abort.action = Confirm abort action
|
||||||
|
|
||||||
caption.filter.delete.confirmbox = Confirm Filter Delete Action
|
caption.filter.delete.confirmbox = Confirm Filter Delete Action
|
||||||
|
caption.metadata.popup = Metadata of
|
||||||
|
caption.metadata.delete.action.confirmbox = Confirm metadata delete action
|
||||||
|
|
||||||
|
|
||||||
# Labels prefix with - label
|
# Labels prefix with - label
|
||||||
label.dist.details.type = Type :
|
label.dist.details.type = Type :
|
||||||
@@ -176,6 +181,7 @@ textfield.version = Version
|
|||||||
textfield.vendor = Vendor
|
textfield.vendor = Vendor
|
||||||
textfield.description = Description
|
textfield.description = Description
|
||||||
textfield.customfiltername = Filter name
|
textfield.customfiltername = Filter name
|
||||||
|
textfield.value = Value
|
||||||
ui.version = Powered by Bosch IoT Software Provisioning
|
ui.version = Powered by Bosch IoT Software Provisioning
|
||||||
prompt.target.id = Controller ID
|
prompt.target.id = Controller ID
|
||||||
|
|
||||||
@@ -194,6 +200,7 @@ tooltip.timeforced.item=Soft update until a specific time and then the action wi
|
|||||||
tooltip.check.for.mandatory=Check to make Mandatory
|
tooltip.check.for.mandatory=Check to make Mandatory
|
||||||
tooltip.artifact.icon=Show Artifact Details
|
tooltip.artifact.icon=Show Artifact Details
|
||||||
tooltip.click.to.edit = Click to edit
|
tooltip.click.to.edit = Click to edit
|
||||||
|
tooltip.metadata.icon = Manage metadata
|
||||||
|
|
||||||
# Notification messages prefix with - message
|
# Notification messages prefix with - message
|
||||||
message.save.success = {0} saved successfully
|
message.save.success = {0} saved successfully
|
||||||
@@ -373,6 +380,13 @@ message.dist.discard.success = All Distributions are discarded successfully !
|
|||||||
message.assign.discard.success = All assignments are discarded successfully !
|
message.assign.discard.success = All assignments are discarded successfully !
|
||||||
message.target.ds.assign.success = Assignments saved successfully !
|
message.target.ds.assign.success = Assignments saved successfully !
|
||||||
message.bulk.upload.assignment.failed = Distribution set assignment failed as distribution set no longer exists!
|
message.bulk.upload.assignment.failed = Distribution set assignment failed as distribution set no longer exists!
|
||||||
|
message.key.missing = Key is missing !
|
||||||
|
message.value.missing = Value is missing !
|
||||||
|
message.metadata.saved = Metadata with key {0} successfully saved !
|
||||||
|
message.metadata.updated = Metadata with key {0} successfully updated !
|
||||||
|
message.metadata.duplicate.check = Metadata with key {0} already exists, please enter another value
|
||||||
|
message.metadata.deleted.successfully = Metadata with key {0} successfully deleted !
|
||||||
|
message.confirm.delete.metadata = Are you sure that you want to delete metadata with key {0} ?
|
||||||
|
|
||||||
# Login view
|
# Login view
|
||||||
notification.login.title=Welcome to Bosch IoT Software Provisioning.
|
notification.login.title=Welcome to Bosch IoT Software Provisioning.
|
||||||
@@ -438,6 +452,8 @@ header.distributionset = Distribution set
|
|||||||
header.numberofgroups = No. of groups
|
header.numberofgroups = No. of groups
|
||||||
header.detail.status = Detail status
|
header.detail.status = Detail status
|
||||||
header.total.targets = Total targets
|
header.total.targets = Total targets
|
||||||
|
header.key = Key
|
||||||
|
header.value = Value
|
||||||
|
|
||||||
distribution.details.header = Distribution set
|
distribution.details.header = Distribution set
|
||||||
target.details.header = Target
|
target.details.header = Target
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
# Button names prefix with - button
|
# Button names prefix with - button
|
||||||
button.save = Save
|
button.save = Save
|
||||||
button.delete = Delete
|
button.delete = Delete
|
||||||
|
button.discard = Discard
|
||||||
button.discard.all = Discard All
|
button.discard.all = Discard All
|
||||||
button.delete.all = Delete All
|
button.delete.all = Delete All
|
||||||
button.assign.all = Save Assign
|
button.assign.all = Save Assign
|
||||||
@@ -55,6 +56,8 @@ caption.error = Error
|
|||||||
caption.new.softwaremodule.application = Configure New Application
|
caption.new.softwaremodule.application = Configure New Application
|
||||||
caption.new.softwaremodule.jvm = Configure New Runtime
|
caption.new.softwaremodule.jvm = Configure New Runtime
|
||||||
caption.new.softwaremodule.os = Configure New OS
|
caption.new.softwaremodule.os = Configure New OS
|
||||||
|
caption.metadata = Metadata
|
||||||
|
|
||||||
|
|
||||||
caption.add.softwaremodule = Configure Software Module
|
caption.add.softwaremodule = Configure Software Module
|
||||||
caption.add.new.dist = Configure New Distribution
|
caption.add.new.dist = Configure New Distribution
|
||||||
@@ -88,6 +91,8 @@ caption.filter.custom = Custom Filter
|
|||||||
caption.filter.delete.confirmbox = Confirm Filter Delete Action
|
caption.filter.delete.confirmbox = Confirm Filter Delete Action
|
||||||
caption.confirm.abort.action = Confirm abort action
|
caption.confirm.abort.action = Confirm abort action
|
||||||
|
|
||||||
|
caption.metadata.popup = Metadata of
|
||||||
|
caption.metadata.delete.action.confirmbox = Confirm metadata delete action
|
||||||
|
|
||||||
# Labels prefix with - label
|
# Labels prefix with - label
|
||||||
label.dist.details.type = Type :
|
label.dist.details.type = Type :
|
||||||
@@ -174,6 +179,7 @@ textfield.version = Version
|
|||||||
textfield.vendor = Vendor
|
textfield.vendor = Vendor
|
||||||
textfield.description = Description
|
textfield.description = Description
|
||||||
textfield.customfiltername = Filter name
|
textfield.customfiltername = Filter name
|
||||||
|
textfield.value = Value
|
||||||
ui.version = Powered by Bosch IoT Software Provisioning
|
ui.version = Powered by Bosch IoT Software Provisioning
|
||||||
prompt.target.id = Controller ID
|
prompt.target.id = Controller ID
|
||||||
|
|
||||||
@@ -192,6 +198,7 @@ tooltip.timeforced.item=Soft update until a specific time and then the action wi
|
|||||||
tooltip.check.for.mandatory=Check to make Mandatory
|
tooltip.check.for.mandatory=Check to make Mandatory
|
||||||
tooltip.artifact.icon=Show Artifact Details
|
tooltip.artifact.icon=Show Artifact Details
|
||||||
tooltip.click.to.edit = Click to edit
|
tooltip.click.to.edit = Click to edit
|
||||||
|
tooltip.metadata.icon = Manage metadata
|
||||||
|
|
||||||
|
|
||||||
# Notification messages prefix with - message
|
# Notification messages prefix with - message
|
||||||
@@ -361,6 +368,14 @@ message.dist.type.discard.success = All Distribution Types are discarded success
|
|||||||
message.dist.discard.success = All Distributions are discarded successfully !
|
message.dist.discard.success = All Distributions are discarded successfully !
|
||||||
message.assign.discard.success = All assignments are discarded successfully !
|
message.assign.discard.success = All assignments are discarded successfully !
|
||||||
message.bulk.upload.assignment.failed = Distribution set assignment failed as distribution set no longer exists!
|
message.bulk.upload.assignment.failed = Distribution set assignment failed as distribution set no longer exists!
|
||||||
|
message.key.missing = Key is missing !
|
||||||
|
message.value.missing = Value is missing !
|
||||||
|
message.metadata.saved = Metadata with key {0} successfully saved !
|
||||||
|
message.metadata.updated = Metadata with key {0} successfully updated !
|
||||||
|
message.metadata.duplicate.check = Metadata with key {0} already exists, please enter another value
|
||||||
|
message.metadata.deleted.successfully = Metadata with key {0} successfully deleted !
|
||||||
|
message.confirm.delete.metadata = Are you sure that you want to delete metadata with key {0} ?
|
||||||
|
|
||||||
|
|
||||||
# Login view
|
# Login view
|
||||||
notification.login.title=Welcome to Bosch IoT Software Provisioning.
|
notification.login.title=Welcome to Bosch IoT Software Provisioning.
|
||||||
@@ -440,6 +455,8 @@ header.caption.softwaremodule = SoftwareModule
|
|||||||
header.caption.unassign = Unassign
|
header.caption.unassign = Unassign
|
||||||
message.sw.unassigned = Software module {0} successfully unassigned
|
message.sw.unassigned = Software module {0} successfully unassigned
|
||||||
header.caption.upload.details = Upload details
|
header.caption.upload.details = Upload details
|
||||||
|
header.key = Key
|
||||||
|
header.value = Value
|
||||||
combo.type.tag.name = Type tag name
|
combo.type.tag.name = Type tag name
|
||||||
|
|
||||||
label.yes = Yes
|
label.yes = Yes
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
# Button names prefix with - button
|
# Button names prefix with - button
|
||||||
button.save = Save
|
button.save = Save
|
||||||
button.delete = Delete
|
button.delete = Delete
|
||||||
|
button.discard = Discard
|
||||||
button.discard.all = Discard All
|
button.discard.all = Discard All
|
||||||
button.delete.all = Delete All
|
button.delete.all = Delete All
|
||||||
button.assign.all = Save Assign
|
button.assign.all = Save Assign
|
||||||
@@ -57,6 +58,7 @@ caption.new.softwaremodule.jvm = Configure New Runtime
|
|||||||
caption.new.softwaremodule.os = Configure New OS
|
caption.new.softwaremodule.os = Configure New OS
|
||||||
caption.filter.simple = Simple Filter
|
caption.filter.simple = Simple Filter
|
||||||
caption.filter.custom = Custom Filter
|
caption.filter.custom = Custom Filter
|
||||||
|
caption.metadata = Metadata
|
||||||
|
|
||||||
caption.add.softwaremodule = Configure Software Module
|
caption.add.softwaremodule = Configure Software Module
|
||||||
caption.add.new.dist = Configure New Distribution
|
caption.add.new.dist = Configure New Distribution
|
||||||
@@ -86,6 +88,9 @@ caption.cancel.action.confirmbox = Confirm action cancellation
|
|||||||
caption.forced.datefield = Force update at time
|
caption.forced.datefield = Force update at time
|
||||||
caption.force.action.confirmbox = Confirm Force Active Action
|
caption.force.action.confirmbox = Confirm Force Active Action
|
||||||
caption.filter.delete.confirmbox = Confirm Filter Delete Action
|
caption.filter.delete.confirmbox = Confirm Filter Delete Action
|
||||||
|
caption.metadata.popup = Metadata of
|
||||||
|
caption.metadata.delete.action.confirmbox = Confirm metadata delete action
|
||||||
|
|
||||||
caption.confirm.abort.action = Confirm abort action
|
caption.confirm.abort.action = Confirm abort action
|
||||||
|
|
||||||
# Labels prefix with - label
|
# Labels prefix with - label
|
||||||
@@ -174,6 +179,7 @@ textfield.version = Version
|
|||||||
textfield.vendor = Vendor
|
textfield.vendor = Vendor
|
||||||
textfield.description = Description
|
textfield.description = Description
|
||||||
textfield.customfiltername = Filter name
|
textfield.customfiltername = Filter name
|
||||||
|
textfield.value = Value
|
||||||
ui.version = Powered by Bosch IoT Software Provisioning
|
ui.version = Powered by Bosch IoT Software Provisioning
|
||||||
prompt.target.id = Controller ID
|
prompt.target.id = Controller ID
|
||||||
|
|
||||||
@@ -192,6 +198,8 @@ tooltip.timeforced.item=Soft update until a specific time and then the action wi
|
|||||||
tooltip.check.for.mandatory=Check to make Mandatory
|
tooltip.check.for.mandatory=Check to make Mandatory
|
||||||
tooltip.artifact.icon=Show Artifact Details
|
tooltip.artifact.icon=Show Artifact Details
|
||||||
tooltip.click.to.edit = Click to edit
|
tooltip.click.to.edit = Click to edit
|
||||||
|
tooltip.metadata.icon = Manage metadata
|
||||||
|
|
||||||
|
|
||||||
# Notification messages prefix with - message
|
# Notification messages prefix with - message
|
||||||
message.save.success = {0} saved successfully
|
message.save.success = {0} saved successfully
|
||||||
@@ -356,6 +364,13 @@ message.sw.module.type.delete = {0} Software Module Type(s) deleted successfully
|
|||||||
message.dist.type.discard.success = All Distribution Types are discarded successfully !
|
message.dist.type.discard.success = All Distribution Types are discarded successfully !
|
||||||
message.dist.discard.success = All Distributions are discarded successfully !
|
message.dist.discard.success = All Distributions are discarded successfully !
|
||||||
message.assign.discard.success = All assignments are discarded successfully !
|
message.assign.discard.success = All assignments are discarded successfully !
|
||||||
|
message.key.missing = Key is missing !
|
||||||
|
message.value.missing = Value is missing !
|
||||||
|
message.metadata.saved = Metadata with key {0} successfully saved !
|
||||||
|
message.metadata.updated = Metadata with key {0} successfully updated !
|
||||||
|
message.metadata.duplicate.check = Metadata with key {0} already exists, please enter another value
|
||||||
|
message.metadata.deleted.successfully = Metadata with key {0} successfully deleted !
|
||||||
|
message.confirm.delete.metadata = Are you sure that you want to delete metadata with key {0} ?
|
||||||
|
|
||||||
# Login view
|
# Login view
|
||||||
notification.login.title=Welcome to Bosch IoT Software Provisioning.
|
notification.login.title=Welcome to Bosch IoT Software Provisioning.
|
||||||
@@ -435,6 +450,8 @@ header.caption.mandatory = Mandatory
|
|||||||
header.caption.typename = SoftwareModuleType
|
header.caption.typename = SoftwareModuleType
|
||||||
header.caption.softwaremodule = SoftwareModule
|
header.caption.softwaremodule = SoftwareModule
|
||||||
header.caption.upload.details = Upload details
|
header.caption.upload.details = Upload details
|
||||||
|
header.key = Key
|
||||||
|
header.value = Value
|
||||||
combo.type.tag.name = Type tag name
|
combo.type.tag.name = Type tag name
|
||||||
|
|
||||||
label.yes = Yes
|
label.yes = Yes
|
||||||
|
|||||||
Reference in New Issue
Block a user