Merge branch 'master' into feature_target_filtering_supports_overdue
Conflicts: hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/RepositoryApplicationConfiguration.java hawkbit-ui/src/main/resources/messages_de.properties hawkbit-ui/src/main/resources/messages_en.properties
This commit is contained in:
@@ -263,9 +263,9 @@ public class CommonDialogWindow extends Window {
|
||||
|
||||
if (field instanceof Table) {
|
||||
((Table) field).addItemSetChangeListener(new ChangeListener(field));
|
||||
} else {
|
||||
field.addValueChangeListener(new ChangeListener(field));
|
||||
}
|
||||
field.addValueChangeListener(new ChangeListener(field));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
/**
|
||||
* Copyright (c) 2015 Bosch Software Innovations GmbH and others.
|
||||
*
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*/
|
||||
package org.eclipse.hawkbit.ui.common.detailslayout;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.vaadin.data.Container;
|
||||
import com.vaadin.data.Item;
|
||||
import org.eclipse.hawkbit.repository.model.DistributionSet;
|
||||
import org.eclipse.hawkbit.repository.model.TargetFilterQuery;
|
||||
|
||||
import com.vaadin.data.util.IndexedContainer;
|
||||
import com.vaadin.spring.annotation.SpringComponent;
|
||||
import com.vaadin.spring.annotation.VaadinSessionScope;
|
||||
import com.vaadin.ui.Table;
|
||||
import com.vaadin.ui.themes.ValoTheme;
|
||||
import org.eclipse.hawkbit.ui.utils.I18N;
|
||||
import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions;
|
||||
|
||||
/**
|
||||
*
|
||||
* DistributionSet TargetFilterQuery table
|
||||
*
|
||||
*/
|
||||
|
||||
@SpringComponent
|
||||
@VaadinSessionScope
|
||||
public class TargetFilterQueryDetailsTable extends Table {
|
||||
|
||||
private static final long serialVersionUID = 2913758299611837718L;
|
||||
|
||||
private static final String TFQ_NAME = "name";
|
||||
private static final String TFQ_QUERY = "query";
|
||||
|
||||
private I18N i18n;
|
||||
|
||||
/**
|
||||
*
|
||||
* @param i18n
|
||||
*/
|
||||
public void init(final I18N i18n) {
|
||||
this.i18n = i18n;
|
||||
createTable();
|
||||
}
|
||||
|
||||
/**
|
||||
* Populate software module metadata.
|
||||
*
|
||||
* @param distributionSet the selected distribution set
|
||||
*/
|
||||
public void populateTableByDistributionSet(final DistributionSet distributionSet) {
|
||||
removeAllItems();
|
||||
if (distributionSet == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
Container dataSource = getContainerDataSource();
|
||||
List<TargetFilterQuery> filters = distributionSet.getAutoAssignFilters();
|
||||
filters.forEach(query -> {
|
||||
Object itemId = dataSource.addItem();
|
||||
Item item = dataSource.getItem(itemId);
|
||||
item.getItemProperty(TFQ_NAME).setValue(query.getName());
|
||||
item.getItemProperty(TFQ_QUERY).setValue(query.getQuery());
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private void createTable() {
|
||||
addStyleName(ValoTheme.TABLE_NO_HORIZONTAL_LINES);
|
||||
addStyleName(ValoTheme.TABLE_NO_STRIPES);
|
||||
addStyleName(SPUIStyleDefinitions.SW_MODULE_TABLE);
|
||||
addStyleName("details-layout");
|
||||
setSelectable(false);
|
||||
setImmediate(true);
|
||||
setContainerDataSource(getDistSetContainer());
|
||||
setColumnHeaderMode(ColumnHeaderMode.EXPLICIT);
|
||||
addTableHeader();
|
||||
setSizeFull();
|
||||
// same as height of other tabs in details tabsheet
|
||||
setHeight(116, Unit.PIXELS);
|
||||
}
|
||||
|
||||
private IndexedContainer getDistSetContainer() {
|
||||
final IndexedContainer container = new IndexedContainer();
|
||||
container.addContainerProperty(TFQ_NAME, String.class, "");
|
||||
container.addContainerProperty(TFQ_QUERY, String.class, "");
|
||||
setColumnExpandRatio(TFQ_NAME, 0.4F);
|
||||
setColumnAlignment(TFQ_NAME, Align.LEFT);
|
||||
setColumnExpandRatio(TFQ_QUERY, 0.6F);
|
||||
setColumnAlignment(TFQ_QUERY, Align.LEFT);
|
||||
|
||||
return container;
|
||||
}
|
||||
|
||||
private void addTableHeader() {
|
||||
setColumnHeader(TFQ_NAME, i18n.get("header.target.filter.name"));
|
||||
setColumnHeader(TFQ_QUERY, i18n.get("header.target.filter.query"));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -10,6 +10,9 @@ package org.eclipse.hawkbit.ui.components;
|
||||
|
||||
import org.eclipse.hawkbit.repository.model.DistributionSet;
|
||||
import org.eclipse.hawkbit.ui.common.DistributionSetIdName;
|
||||
import org.eclipse.hawkbit.ui.common.UserDetailsFormatter;
|
||||
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
|
||||
import org.eclipse.hawkbit.ui.utils.SPDateTimeUtil;
|
||||
|
||||
/**
|
||||
* Proxy for {@link DistributionSet}.
|
||||
@@ -39,6 +42,33 @@ public class ProxyDistribution {
|
||||
private String version;
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* Creates an empty proxy distribution set
|
||||
*/
|
||||
public ProxyDistribution() {
|
||||
// Default constructor
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new proxy distribution set by using the values from a distribution set
|
||||
* @param distributionSet the source distribution set
|
||||
*/
|
||||
public ProxyDistribution(DistributionSet distributionSet) {
|
||||
setName(distributionSet.getName());
|
||||
setDescription(distributionSet.getDescription());
|
||||
setDistId(distributionSet.getId());
|
||||
setId(distributionSet.getId());
|
||||
setVersion(distributionSet.getVersion());
|
||||
setCreatedDate(SPDateTimeUtil.getFormattedDate(distributionSet.getCreatedAt()));
|
||||
setLastModifiedDate(SPDateTimeUtil.getFormattedDate(distributionSet.getLastModifiedAt()));
|
||||
setCreatedByUser(UserDetailsFormatter.loadAndFormatCreatedBy(distributionSet));
|
||||
setModifiedByUser(UserDetailsFormatter.loadAndFormatLastModifiedBy(distributionSet));
|
||||
setNameVersion(
|
||||
HawkbitCommonUtil.getFormattedNameVersion(distributionSet.getName(), distributionSet.getVersion()));
|
||||
setIsComplete(distributionSet.isComplete());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return the nameVersion
|
||||
*/
|
||||
|
||||
@@ -26,6 +26,7 @@ public class ProxyTargetFilter {
|
||||
private String createdBy;
|
||||
private String lastModifiedBy;
|
||||
private String query;
|
||||
private ProxyDistribution autoAssignDistributionSet;
|
||||
|
||||
public String getCreatedDate() {
|
||||
return createdDate;
|
||||
@@ -90,4 +91,11 @@ public class ProxyTargetFilter {
|
||||
this.createdBy = createdBy;
|
||||
}
|
||||
|
||||
public ProxyDistribution getAutoAssignDistributionSet() {
|
||||
return autoAssignDistributionSet;
|
||||
}
|
||||
|
||||
public void setAutoAssignDistributionSet(ProxyDistribution autoAssignDistributionSet) {
|
||||
this.autoAssignDistributionSet = autoAssignDistributionSet;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@ import org.eclipse.hawkbit.ui.common.DistributionSetIdName;
|
||||
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.TargetFilterQueryDetailsTable;
|
||||
import org.eclipse.hawkbit.ui.common.tagdetails.DistributionTagToken;
|
||||
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
|
||||
import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder;
|
||||
@@ -91,6 +92,8 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet
|
||||
|
||||
private DistributionSetMetadatadetailslayout dsMetadataTable;
|
||||
|
||||
private TargetFilterQueryDetailsTable tfqDetailsTable;
|
||||
|
||||
private VerticalLayout tagsLayout;
|
||||
|
||||
private Map<String, StringBuilder> assignedSWModule;
|
||||
@@ -103,9 +106,14 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet
|
||||
softwareModuleTable = new SoftwareModuleDetailsTable();
|
||||
softwareModuleTable.init(getI18n(), true, getPermissionChecker(), distributionSetManagement, getEventBus(),
|
||||
manageDistUIState);
|
||||
|
||||
dsMetadataTable = new DistributionSetMetadatadetailslayout();
|
||||
dsMetadataTable.init(getI18n(), getPermissionChecker(), distributionSetManagement, dsMetadataPopupLayout,
|
||||
entityFactory);
|
||||
|
||||
tfqDetailsTable = new TargetFilterQueryDetailsTable();
|
||||
tfqDetailsTable.init(getI18n());
|
||||
|
||||
super.init();
|
||||
}
|
||||
|
||||
@@ -120,6 +128,7 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet
|
||||
populateModule();
|
||||
populateTags();
|
||||
populateMetadataDetails();
|
||||
populateTargetFilterQueries();
|
||||
}
|
||||
|
||||
private void populateModule() {
|
||||
@@ -277,6 +286,10 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet
|
||||
dsMetadataTable.populateDSMetadata(getSelectedBaseEntity());
|
||||
}
|
||||
|
||||
protected void populateTargetFilterQueries() {
|
||||
tfqDetailsTable.populateTableByDistributionSet(getSelectedBaseEntity());
|
||||
}
|
||||
|
||||
private void updateDistributionSetDetailsLayout(final String type, final Boolean isMigrationRequired) {
|
||||
final VerticalLayout detailsTabLayout = getDetailsLayout();
|
||||
detailsTabLayout.removeAllComponents();
|
||||
@@ -332,6 +345,7 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet
|
||||
detailsTab.addTab(createTagsLayout(), getI18n().get("caption.tags.tab"), null);
|
||||
detailsTab.addTab(createLogLayout(), getI18n().get("caption.logs.tab"), null);
|
||||
detailsTab.addTab(dsMetadataTable, getI18n().get("caption.metadata"), null);
|
||||
detailsTab.addTab(tfqDetailsTable, getI18n().get("caption.auto.assignment.ds"), null);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -20,10 +20,8 @@ import org.eclipse.hawkbit.repository.model.DistributionSet;
|
||||
import org.eclipse.hawkbit.repository.model.DistributionSetFilter;
|
||||
import org.eclipse.hawkbit.repository.model.DistributionSetFilter.DistributionSetFilterBuilder;
|
||||
import org.eclipse.hawkbit.repository.model.DistributionSetType;
|
||||
import org.eclipse.hawkbit.ui.common.UserDetailsFormatter;
|
||||
import org.eclipse.hawkbit.ui.components.ProxyDistribution;
|
||||
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
|
||||
import org.eclipse.hawkbit.ui.utils.SPDateTimeUtil;
|
||||
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
|
||||
import org.eclipse.hawkbit.ui.utils.SpringContextHelper;
|
||||
import org.springframework.data.domain.Page;
|
||||
@@ -43,11 +41,12 @@ public class ManageDistBeanQuery extends AbstractBeanQuery<ProxyDistribution> {
|
||||
|
||||
private static final long serialVersionUID = 5176481314404662215L;
|
||||
private Sort sort = new Sort(Direction.ASC, "createdAt");
|
||||
private String searchText = null;
|
||||
private String searchText;
|
||||
private transient DistributionSetManagement distributionSetManagement;
|
||||
private transient Page<DistributionSet> firstPageDistributionSets = null;
|
||||
private transient Page<DistributionSet> firstPageDistributionSets;
|
||||
|
||||
private DistributionSetType distributionSetType = null;
|
||||
private DistributionSetType distributionSetType;
|
||||
private Boolean dsComplete;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -65,14 +64,17 @@ public class ManageDistBeanQuery extends AbstractBeanQuery<ProxyDistribution> {
|
||||
if (!Strings.isNullOrEmpty(searchText)) {
|
||||
searchText = String.format("%%%s%%", searchText);
|
||||
}
|
||||
if (null != queryConfig.get(SPUIDefinitions.FILTER_BY_DISTRIBUTION_SET_TYPE)) {
|
||||
if (queryConfig.get(SPUIDefinitions.FILTER_BY_DISTRIBUTION_SET_TYPE) != null) {
|
||||
distributionSetType = (DistributionSetType) queryConfig
|
||||
.get(SPUIDefinitions.FILTER_BY_DISTRIBUTION_SET_TYPE);
|
||||
}
|
||||
if(queryConfig.get(SPUIDefinitions.FILTER_BY_DS_COMPLETE) != null) {
|
||||
dsComplete = (Boolean)queryConfig.get(SPUIDefinitions.FILTER_BY_DS_COMPLETE);
|
||||
}
|
||||
}
|
||||
|
||||
if (sortStates.length > 0) {
|
||||
// Initalize sort
|
||||
// Initialize sort
|
||||
sort = new Sort(sortStates[0] ? Direction.ASC : Direction.DESC, (String) sortPropertyIds[0]);
|
||||
// Add sort
|
||||
for (int distId = 1; distId < sortPropertyIds.length; distId++) {
|
||||
@@ -96,27 +98,17 @@ public class ManageDistBeanQuery extends AbstractBeanQuery<ProxyDistribution> {
|
||||
} else if (Strings.isNullOrEmpty(searchText)) {
|
||||
// if no search filters available
|
||||
distBeans = getDistributionSetManagement().findDistributionSetsByDeletedAndOrCompleted(
|
||||
new OffsetBasedPageRequest(startIndex, count, sort), false, null);
|
||||
new OffsetBasedPageRequest(startIndex, count, sort), false, dsComplete);
|
||||
} else {
|
||||
final DistributionSetFilter distributionSetFilter = new DistributionSetFilterBuilder().setIsDeleted(false)
|
||||
.setIsComplete(dsComplete)
|
||||
.setSearchText(searchText).setSelectDSWithNoTag(Boolean.FALSE).setType(distributionSetType).build();
|
||||
distBeans = getDistributionSetManagement().findDistributionSetsByFilters(
|
||||
new PageRequest(startIndex / count, count, sort), distributionSetFilter);
|
||||
}
|
||||
|
||||
for (final DistributionSet distributionSet : distBeans) {
|
||||
final ProxyDistribution proxyDistribution = new ProxyDistribution();
|
||||
proxyDistribution.setName(distributionSet.getName());
|
||||
proxyDistribution.setDescription(distributionSet.getDescription());
|
||||
proxyDistribution.setDistId(distributionSet.getId());
|
||||
proxyDistribution.setId(distributionSet.getId());
|
||||
proxyDistribution.setVersion(distributionSet.getVersion());
|
||||
proxyDistribution.setCreatedDate(SPDateTimeUtil.getFormattedDate(distributionSet.getCreatedAt()));
|
||||
proxyDistribution.setLastModifiedDate(SPDateTimeUtil.getFormattedDate(distributionSet.getLastModifiedAt()));
|
||||
proxyDistribution.setCreatedByUser(UserDetailsFormatter.loadAndFormatCreatedBy(distributionSet));
|
||||
proxyDistribution.setModifiedByUser(UserDetailsFormatter.loadAndFormatLastModifiedBy(distributionSet));
|
||||
proxyDistribution.setIsComplete(distributionSet.isComplete());
|
||||
proxyDistributions.add(proxyDistribution);
|
||||
proxyDistributions.add(new ProxyDistribution(distributionSet));
|
||||
}
|
||||
return proxyDistributions;
|
||||
}
|
||||
@@ -132,9 +124,10 @@ public class ManageDistBeanQuery extends AbstractBeanQuery<ProxyDistribution> {
|
||||
if (Strings.isNullOrEmpty(searchText) && null == distributionSetType) {
|
||||
// if no search filters available
|
||||
firstPageDistributionSets = getDistributionSetManagement().findDistributionSetsByDeletedAndOrCompleted(
|
||||
new PageRequest(0, SPUIDefinitions.PAGE_SIZE, sort), false, null);
|
||||
new PageRequest(0, SPUIDefinitions.PAGE_SIZE, sort), false, dsComplete);
|
||||
} else {
|
||||
final DistributionSetFilter distributionSetFilter = new DistributionSetFilterBuilder().setIsDeleted(false)
|
||||
.setIsComplete(dsComplete)
|
||||
.setSearchText(searchText).setSelectDSWithNoTag(Boolean.FALSE).setType(distributionSetType).build();
|
||||
firstPageDistributionSets = getDistributionSetManagement().findDistributionSetsByFilters(
|
||||
new PageRequest(0, SPUIDefinitions.PAGE_SIZE, sort), distributionSetFilter);
|
||||
|
||||
@@ -0,0 +1,179 @@
|
||||
/**
|
||||
* Copyright (c) 2015 Bosch Software Innovations GmbH and others.
|
||||
*
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*/
|
||||
package org.eclipse.hawkbit.ui.filtermanagement;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.annotation.PreDestroy;
|
||||
|
||||
import org.eclipse.hawkbit.repository.eventbus.event.DistributionCreatedEvent;
|
||||
import org.eclipse.hawkbit.repository.eventbus.event.DistributionDeletedEvent;
|
||||
import org.eclipse.hawkbit.ui.distributions.dstable.ManageDistBeanQuery;
|
||||
import org.eclipse.hawkbit.ui.distributions.state.ManageDistUIState;
|
||||
import org.eclipse.hawkbit.ui.utils.I18N;
|
||||
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
|
||||
import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions;
|
||||
import org.eclipse.hawkbit.ui.utils.TableColumn;
|
||||
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory;
|
||||
import org.vaadin.addons.lazyquerycontainer.LazyQueryContainer;
|
||||
import org.vaadin.addons.lazyquerycontainer.LazyQueryDefinition;
|
||||
import org.vaadin.spring.events.EventBus;
|
||||
import org.vaadin.spring.events.EventScope;
|
||||
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
|
||||
|
||||
import com.vaadin.data.Container;
|
||||
import com.vaadin.spring.annotation.SpringComponent;
|
||||
import com.vaadin.spring.annotation.ViewScope;
|
||||
import com.vaadin.ui.Table;
|
||||
import com.vaadin.ui.themes.ValoTheme;
|
||||
|
||||
/**
|
||||
* Table for selecting a distribution set.
|
||||
*/
|
||||
@SpringComponent
|
||||
@ViewScope
|
||||
public class DistributionSetSelectTable extends Table {
|
||||
|
||||
private static final long serialVersionUID = -4307487829435471759L;
|
||||
|
||||
@Autowired
|
||||
private I18N i18n;
|
||||
|
||||
@Autowired
|
||||
private transient EventBus.SessionEventBus eventBus;
|
||||
|
||||
@Autowired
|
||||
private ManageDistUIState manageDistUIState;
|
||||
|
||||
private Container container;
|
||||
|
||||
/**
|
||||
* Initialize the component.
|
||||
*/
|
||||
@PostConstruct
|
||||
protected void init() {
|
||||
setStyleName("sp-table");
|
||||
setSizeFull();
|
||||
setSelectable(true);
|
||||
setMultiSelect(false);
|
||||
setImmediate(true);
|
||||
addStyleName(ValoTheme.TABLE_NO_VERTICAL_LINES);
|
||||
addStyleName(ValoTheme.TABLE_SMALL);
|
||||
populateTableData();
|
||||
setColumnCollapsingAllowed(false);
|
||||
setColumnProperties();
|
||||
setId(UIComponentIdProvider.DIST_SET_SELECT_TABLE_ID);
|
||||
eventBus.subscribe(this);
|
||||
}
|
||||
|
||||
@PreDestroy
|
||||
void destroy() {
|
||||
eventBus.unsubscribe(this);
|
||||
}
|
||||
|
||||
@EventBusListenerMethod(scope = EventScope.SESSION)
|
||||
void onEvents(final List<?> events) {
|
||||
final Object firstEvent = events.get(0);
|
||||
if (DistributionCreatedEvent.class.isInstance(firstEvent)
|
||||
|| DistributionDeletedEvent.class.isInstance(firstEvent)) {
|
||||
refreshDistributions();
|
||||
}
|
||||
}
|
||||
|
||||
private void populateTableData() {
|
||||
container = createContainer();
|
||||
addContainerproperties();
|
||||
setContainerDataSource(container);
|
||||
setColumnProperties();
|
||||
|
||||
}
|
||||
|
||||
protected Container createContainer() {
|
||||
|
||||
final Map<String, Object> queryConfiguration = prepareQueryConfigFilters();
|
||||
final BeanQueryFactory<ManageDistBeanQuery> distributionQF = new BeanQueryFactory<>(ManageDistBeanQuery.class);
|
||||
|
||||
distributionQF.setQueryConfiguration(queryConfiguration);
|
||||
return new LazyQueryContainer(
|
||||
new LazyQueryDefinition(true, SPUIDefinitions.PAGE_SIZE, SPUILabelDefinitions.VAR_DIST_ID_NAME),
|
||||
distributionQF);
|
||||
}
|
||||
|
||||
private void addContainerproperties() {
|
||||
/* Create HierarchicalContainer container */
|
||||
container.addContainerProperty(SPUILabelDefinitions.NAME, String.class, null);
|
||||
container.addContainerProperty(SPUILabelDefinitions.VAR_VERSION, String.class, null);
|
||||
}
|
||||
|
||||
private List<TableColumn> getVisbleColumns() {
|
||||
final List<TableColumn> columnList = new ArrayList<>(2);
|
||||
columnList.add(new TableColumn(SPUILabelDefinitions.NAME, i18n.get("header.name"), 0.6F));
|
||||
columnList.add(new TableColumn(SPUILabelDefinitions.VAR_VERSION, i18n.get("header.version"), 0.4F));
|
||||
return columnList;
|
||||
|
||||
}
|
||||
|
||||
private void setColumnProperties() {
|
||||
setVisibleColumns(getVisbleColumns().stream().map(column -> {
|
||||
setColumnHeader(column.getColumnPropertyId(), column.getColumnHeader());
|
||||
setColumnExpandRatio(column.getColumnPropertyId(), column.getExpandRatio());
|
||||
return column.getColumnPropertyId();
|
||||
}).toArray());
|
||||
}
|
||||
|
||||
private Map<String, Object> prepareQueryConfigFilters() {
|
||||
final Map<String, Object> queryConfig = new HashMap<>();
|
||||
manageDistUIState.getManageDistFilters().getSearchText()
|
||||
.ifPresent(value -> queryConfig.put(SPUIDefinitions.FILTER_BY_TEXT, value));
|
||||
|
||||
if (null != manageDistUIState.getManageDistFilters().getClickedDistSetType()) {
|
||||
queryConfig.put(SPUIDefinitions.FILTER_BY_DISTRIBUTION_SET_TYPE,
|
||||
manageDistUIState.getManageDistFilters().getClickedDistSetType());
|
||||
}
|
||||
|
||||
queryConfig.put(SPUIDefinitions.FILTER_BY_DS_COMPLETE, Boolean.TRUE);
|
||||
|
||||
return queryConfig;
|
||||
}
|
||||
|
||||
private void refreshDistributions() {
|
||||
final LazyQueryContainer dsContainer = (LazyQueryContainer) getContainerDataSource();
|
||||
final int size = dsContainer.size();
|
||||
if (size < SPUIDefinitions.MAX_TABLE_ENTRIES) {
|
||||
refreshTablecontainer();
|
||||
}
|
||||
if (size != 0) {
|
||||
setData(SPUIDefinitions.DATA_AVAILABLE);
|
||||
}
|
||||
}
|
||||
|
||||
private Object getItemIdToSelect() {
|
||||
if (manageDistUIState.getSelectedDistributions().isPresent()) {
|
||||
return manageDistUIState.getSelectedDistributions().get();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private void selectRow() {
|
||||
setValue(getItemIdToSelect());
|
||||
}
|
||||
|
||||
private void refreshTablecontainer() {
|
||||
final LazyQueryContainer dsContainer = (LazyQueryContainer) getContainerDataSource();
|
||||
dsContainer.refresh();
|
||||
selectRow();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,307 @@
|
||||
/**
|
||||
* Copyright (c) 2015 Bosch Software Innovations GmbH and others.
|
||||
*
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*/
|
||||
package org.eclipse.hawkbit.ui.filtermanagement;
|
||||
|
||||
import com.vaadin.server.FontAwesome;
|
||||
import com.vaadin.ui.Alignment;
|
||||
import com.vaadin.ui.Button;
|
||||
import com.vaadin.ui.CheckBox;
|
||||
import com.vaadin.ui.HorizontalLayout;
|
||||
import com.vaadin.ui.Label;
|
||||
import com.vaadin.ui.UI;
|
||||
import com.vaadin.ui.VerticalLayout;
|
||||
import com.vaadin.ui.Window;
|
||||
import org.eclipse.hawkbit.repository.DistributionSetManagement;
|
||||
import org.eclipse.hawkbit.repository.TargetFilterQueryManagement;
|
||||
import org.eclipse.hawkbit.repository.TargetManagement;
|
||||
import org.eclipse.hawkbit.repository.model.DistributionSet;
|
||||
import org.eclipse.hawkbit.repository.model.TargetFilterQuery;
|
||||
import org.eclipse.hawkbit.ui.common.CommonDialogWindow;
|
||||
import org.eclipse.hawkbit.ui.common.DistributionSetIdName;
|
||||
import org.eclipse.hawkbit.ui.common.builder.WindowBuilder;
|
||||
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
|
||||
import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleNoBorderWithIcon;
|
||||
import org.eclipse.hawkbit.ui.filtermanagement.event.CustomFilterUIEvent;
|
||||
import org.eclipse.hawkbit.ui.utils.I18N;
|
||||
import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider;
|
||||
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.vaadin.spring.events.EventBus;
|
||||
|
||||
import com.vaadin.data.Property;
|
||||
import com.vaadin.server.Sizeable;
|
||||
import com.vaadin.spring.annotation.SpringComponent;
|
||||
import com.vaadin.spring.annotation.ViewScope;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* Creates a dialog window to select the distribution set for a target filter query.
|
||||
*/
|
||||
@SpringComponent
|
||||
@ViewScope
|
||||
public class DistributionSetSelectWindow
|
||||
implements CommonDialogWindow.SaveDialogCloseListener, Property.ValueChangeListener {
|
||||
|
||||
private static final long serialVersionUID = 4752345414134989396L;
|
||||
|
||||
@Autowired
|
||||
private I18N i18n;
|
||||
|
||||
@Autowired
|
||||
private DistributionSetSelectTable dsTable;
|
||||
|
||||
@Autowired
|
||||
private transient EventBus.SessionEventBus eventBus;
|
||||
|
||||
@Autowired
|
||||
private transient DistributionSetManagement distributionSetManagement;
|
||||
|
||||
@Autowired
|
||||
private transient TargetManagement targetManagement;
|
||||
|
||||
@Autowired
|
||||
private transient TargetFilterQueryManagement targetFilterQueryManagement;
|
||||
|
||||
private CommonDialogWindow window;
|
||||
private CheckBox checkBox;
|
||||
private VerticalLayout verticalLayout;
|
||||
private Long tfqId;
|
||||
|
||||
private void init() {
|
||||
Label label = new Label(i18n.get("label.auto.assign.description"));
|
||||
|
||||
checkBox = new CheckBox(i18n.get("label.auto.assign.enable"));
|
||||
checkBox.setId(UIComponentIdProvider.DIST_SET_SELECT_ENABLE_ID);
|
||||
checkBox.setImmediate(true);
|
||||
checkBox.addValueChangeListener(this);
|
||||
|
||||
verticalLayout = new VerticalLayout();
|
||||
verticalLayout.addComponent(label);
|
||||
verticalLayout.addComponent(checkBox);
|
||||
verticalLayout.addComponent(dsTable);
|
||||
|
||||
window = new WindowBuilder(SPUIDefinitions.CREATE_UPDATE_WINDOW)
|
||||
.caption(i18n.get("caption.select.auto.assign.dist")).content(verticalLayout).layout(verticalLayout)
|
||||
.i18n(i18n).saveDialogCloseListener(this).buildCommonDialogWindow();
|
||||
window.setId(UIComponentIdProvider.DIST_SET_SELECT_WINDOW_ID);
|
||||
}
|
||||
|
||||
public void setValue(DistributionSetIdName distSet) {
|
||||
dsTable.setVisible(distSet != null);
|
||||
checkBox.setValue(distSet != null);
|
||||
dsTable.setValue(distSet);
|
||||
dsTable.setCurrentPageFirstItemId(distSet);
|
||||
}
|
||||
|
||||
public DistributionSetIdName getValue() {
|
||||
if (checkBox.getValue()) {
|
||||
return (DistributionSetIdName) dsTable.getValue();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Shows a distribution set select window for the given target filter query
|
||||
*
|
||||
* @param tfqId
|
||||
* target filter query id
|
||||
*/
|
||||
public void showForTargetFilter(Long tfqId) {
|
||||
this.tfqId = tfqId;
|
||||
TargetFilterQuery tfq = targetFilterQueryManagement.findTargetFilterQueryById(tfqId);
|
||||
if(tfq == null) {
|
||||
throw new IllegalStateException("TargetFilterQuery does not exist for the given id");
|
||||
}
|
||||
|
||||
init();
|
||||
|
||||
DistributionSet distributionSet = tfq.getAutoAssignDistributionSet();
|
||||
if(distributionSet != null) {
|
||||
setValue(DistributionSetIdName.generate(distributionSet));
|
||||
} else {
|
||||
setValue(null);
|
||||
}
|
||||
|
||||
window.setWidth(40.0F, Sizeable.Unit.PERCENTAGE);
|
||||
UI.getCurrent().addWindow(window);
|
||||
window.setVisible(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Is triggered when the checkbox value changes
|
||||
*
|
||||
* @param event
|
||||
* change event
|
||||
*/
|
||||
@Override
|
||||
public void valueChange(Property.ValueChangeEvent event) {
|
||||
dsTable.setVisible(checkBox.getValue());
|
||||
if (window != null) {
|
||||
window.center();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Is triggered when the save button is clicked
|
||||
*
|
||||
* @return whether the click should be allowed
|
||||
*/
|
||||
@Override
|
||||
public boolean canWindowSaveOrUpdate() {
|
||||
return !checkBox.getValue() || dsTable.getValue() != null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Is called when the new value should be saved after the save button has
|
||||
* been clicked
|
||||
*/
|
||||
@Override
|
||||
public void saveOrUpdate() {
|
||||
if(checkBox.getValue() && dsTable.getValue() != null) {
|
||||
DistributionSetIdName ds = (DistributionSetIdName) dsTable.getValue();
|
||||
updateTargetFilterQueryDS(tfqId, ds.getId());
|
||||
|
||||
} else if(!checkBox.getValue()) {
|
||||
updateTargetFilterQueryDS(tfqId, null);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void updateTargetFilterQueryDS(final Long targetFilterQueryId, final Long dsId) {
|
||||
TargetFilterQuery tfq = targetFilterQueryManagement.findTargetFilterQueryById(targetFilterQueryId);
|
||||
|
||||
|
||||
|
||||
if(dsId != null) {
|
||||
confirmWithConsequencesDialog(tfq, dsId);
|
||||
} else {
|
||||
tfq.setAutoAssignDistributionSet(null);
|
||||
targetFilterQueryManagement.updateTargetFilterQuery(tfq);
|
||||
eventBus.publish(this, CustomFilterUIEvent.UPDATED_TARGET_FILTER_QUERY);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void confirmWithConsequencesDialog(TargetFilterQuery tfq, final Long dsId) {
|
||||
|
||||
ConfirmConsequencesDialog dialog = new ConfirmConsequencesDialog(tfq, dsId, new ConfirmCallback() {
|
||||
@Override
|
||||
public void onConfirmResult(boolean accepted) {
|
||||
if(accepted) {
|
||||
tfq.setAutoAssignDistributionSet(distributionSetManagement.findDistributionSetById(dsId));
|
||||
targetFilterQueryManagement.updateTargetFilterQuery(tfq);
|
||||
eventBus.publish(this, CustomFilterUIEvent.UPDATED_TARGET_FILTER_QUERY);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
dialog.setWidth(40.0F, Sizeable.Unit.PERCENTAGE);
|
||||
|
||||
UI.getCurrent().addWindow(dialog);
|
||||
dialog.setVisible(true);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* A dialog that displays how many targets will be assigned immediately with the
|
||||
*/
|
||||
private class ConfirmConsequencesDialog extends Window implements Button.ClickListener {
|
||||
|
||||
private static final long serialVersionUID = 7738545414137389326L;
|
||||
|
||||
private TargetFilterQuery targetFilterQuery;
|
||||
private Long distributionSetId;
|
||||
|
||||
private Button okButton;
|
||||
private Button cancelButton;
|
||||
|
||||
private ConfirmCallback callback;
|
||||
|
||||
public ConfirmConsequencesDialog(TargetFilterQuery targetFilterQuery, final Long dsId, ConfirmCallback callback) {
|
||||
super(i18n.get("caption.confirm.assign.consequences"));
|
||||
|
||||
this.callback = callback;
|
||||
this.targetFilterQuery = targetFilterQuery;
|
||||
this.distributionSetId = dsId;
|
||||
|
||||
init();
|
||||
|
||||
}
|
||||
|
||||
private void init() {
|
||||
setId(UIComponentIdProvider.DIST_SET_SELECT_CONS_WINDOW_ID);
|
||||
setModal(true);
|
||||
setResizable(false);
|
||||
|
||||
VerticalLayout layout = new VerticalLayout();
|
||||
layout.setSpacing(true);
|
||||
layout.setMargin(true);
|
||||
setContent(layout);
|
||||
|
||||
Long targetsCount = targetManagement.countTargetsByTargetFilterQueryAndNonDS(distributionSetId, targetFilterQuery);
|
||||
Label mainTextLabel;
|
||||
if(targetsCount == 0) {
|
||||
mainTextLabel = new Label(i18n.get("message.confirm.assign.consequences.none"));
|
||||
} else {
|
||||
mainTextLabel = new Label(i18n.get("message.confirm.assign.consequences.text", new Object[]{targetsCount}));
|
||||
}
|
||||
|
||||
layout.addComponent(mainTextLabel);
|
||||
|
||||
HorizontalLayout buttonsLayout = new HorizontalLayout();
|
||||
buttonsLayout.setSizeFull();
|
||||
buttonsLayout.setSpacing(true);
|
||||
buttonsLayout.addStyleName("actionButtonsMargin");
|
||||
layout.addComponent(buttonsLayout);
|
||||
|
||||
|
||||
okButton = SPUIComponentProvider.getButton(UIComponentIdProvider.SAVE_BUTTON, i18n.get("button.ok"), "", "", true,
|
||||
FontAwesome.SAVE, SPUIButtonStyleNoBorderWithIcon.class);
|
||||
okButton.setSizeUndefined();
|
||||
okButton.addStyleName("default-color");
|
||||
okButton.addClickListener(this);
|
||||
buttonsLayout.addComponent(okButton);
|
||||
buttonsLayout.setComponentAlignment(okButton, Alignment.MIDDLE_RIGHT);
|
||||
buttonsLayout.setExpandRatio(okButton, 1.0F);
|
||||
|
||||
|
||||
cancelButton = SPUIComponentProvider.getButton(UIComponentIdProvider.CANCEL_BUTTON, i18n.get("button.cancel"), "", "", true,
|
||||
FontAwesome.TIMES, SPUIButtonStyleNoBorderWithIcon.class);
|
||||
cancelButton.setSizeUndefined();
|
||||
cancelButton.addStyleName("default-color");
|
||||
cancelButton.addClickListener(this);
|
||||
buttonsLayout.addComponent(cancelButton);
|
||||
buttonsLayout.setComponentAlignment(cancelButton, Alignment.MIDDLE_LEFT);
|
||||
buttonsLayout.setExpandRatio(cancelButton, 1.0F);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void buttonClick(Button.ClickEvent event) {
|
||||
if(event.getButton().getId().equals(okButton.getId())) {
|
||||
callback.onConfirmResult(true);
|
||||
} else {
|
||||
callback.onConfirmResult(false);
|
||||
}
|
||||
|
||||
close();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@FunctionalInterface
|
||||
private interface ConfirmCallback extends Serializable {
|
||||
void onConfirmResult(boolean accepted);
|
||||
}
|
||||
}
|
||||
@@ -13,8 +13,10 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.eclipse.hawkbit.repository.TargetFilterQueryManagement;
|
||||
import org.eclipse.hawkbit.repository.model.DistributionSet;
|
||||
import org.eclipse.hawkbit.repository.model.TargetFilterQuery;
|
||||
import org.eclipse.hawkbit.ui.common.UserDetailsFormatter;
|
||||
import org.eclipse.hawkbit.ui.components.ProxyDistribution;
|
||||
import org.eclipse.hawkbit.ui.components.ProxyTargetFilter;
|
||||
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
|
||||
import org.eclipse.hawkbit.ui.utils.SPDateTimeUtil;
|
||||
@@ -85,7 +87,7 @@ public class TargetFilterBeanQuery extends AbstractBeanQuery<ProxyTargetFilter>
|
||||
targetFilterQuery = getTargetFilterQueryManagement().findAllTargetFilterQuery(
|
||||
new PageRequest(startIndex / SPUIDefinitions.PAGE_SIZE, SPUIDefinitions.PAGE_SIZE, sort));
|
||||
} else {
|
||||
targetFilterQuery = getTargetFilterQueryManagement().findTargetFilterQueryByFilters(
|
||||
targetFilterQuery = getTargetFilterQueryManagement().findTargetFilterQueryByName(
|
||||
new PageRequest(startIndex / SPUIDefinitions.PAGE_SIZE, SPUIDefinitions.PAGE_SIZE, sort),
|
||||
searchText);
|
||||
}
|
||||
@@ -98,6 +100,11 @@ public class TargetFilterBeanQuery extends AbstractBeanQuery<ProxyTargetFilter>
|
||||
proxyTarFilter.setModifiedDate(SPDateTimeUtil.getFormattedDate(tarFilterQuery.getLastModifiedAt()));
|
||||
proxyTarFilter.setLastModifiedBy(UserDetailsFormatter.loadAndFormatLastModifiedBy(tarFilterQuery));
|
||||
proxyTarFilter.setQuery(tarFilterQuery.getQuery());
|
||||
|
||||
final DistributionSet distributionSet = tarFilterQuery.getAutoAssignDistributionSet();
|
||||
if (distributionSet != null) {
|
||||
proxyTarFilter.setAutoAssignDistributionSet(new ProxyDistribution(distributionSet));
|
||||
}
|
||||
proxyTargetFilter.add(proxyTarFilter);
|
||||
}
|
||||
return proxyTargetFilter;
|
||||
@@ -117,7 +124,7 @@ public class TargetFilterBeanQuery extends AbstractBeanQuery<ProxyTargetFilter>
|
||||
.findAllTargetFilterQuery(new PageRequest(0, SPUIDefinitions.PAGE_SIZE, sort));
|
||||
} else {
|
||||
firstPageTargetFilter = getTargetFilterQueryManagement()
|
||||
.findTargetFilterQueryByFilters(new PageRequest(0, SPUIDefinitions.PAGE_SIZE, sort), searchText);
|
||||
.findTargetFilterQueryByName(new PageRequest(0, SPUIDefinitions.PAGE_SIZE, sort), searchText);
|
||||
}
|
||||
final long size = firstPageTargetFilter.getTotalElements();
|
||||
|
||||
|
||||
@@ -10,16 +10,21 @@ package org.eclipse.hawkbit.ui.filtermanagement;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.annotation.PreDestroy;
|
||||
|
||||
import com.vaadin.ui.Button;
|
||||
import com.vaadin.ui.Link;
|
||||
import com.vaadin.ui.Table;
|
||||
import com.vaadin.ui.UI;
|
||||
import org.eclipse.hawkbit.repository.DistributionSetManagement;
|
||||
import org.eclipse.hawkbit.repository.TargetFilterQueryManagement;
|
||||
import org.eclipse.hawkbit.repository.model.TargetFilterQuery;
|
||||
import org.eclipse.hawkbit.ui.common.ConfirmationDialog;
|
||||
import org.eclipse.hawkbit.ui.components.ProxyDistribution;
|
||||
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
|
||||
import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder;
|
||||
import org.eclipse.hawkbit.ui.filtermanagement.event.CustomFilterUIEvent;
|
||||
@@ -44,15 +49,11 @@ import com.vaadin.data.Item;
|
||||
import com.vaadin.server.FontAwesome;
|
||||
import com.vaadin.spring.annotation.SpringComponent;
|
||||
import com.vaadin.spring.annotation.ViewScope;
|
||||
import com.vaadin.ui.Button;
|
||||
import com.vaadin.ui.Button.ClickEvent;
|
||||
import com.vaadin.ui.Link;
|
||||
import com.vaadin.ui.Table;
|
||||
import com.vaadin.ui.UI;
|
||||
import com.vaadin.ui.themes.ValoTheme;
|
||||
|
||||
/**
|
||||
*
|
||||
* Displays list of target filter queries
|
||||
*
|
||||
*/
|
||||
@SpringComponent
|
||||
@@ -76,6 +77,12 @@ public class TargetFilterTable extends Table {
|
||||
@Autowired
|
||||
private transient TargetFilterQueryManagement targetFilterQueryManagement;
|
||||
|
||||
@Autowired
|
||||
private transient DistributionSetManagement distributionSetManagement;
|
||||
|
||||
@Autowired
|
||||
private DistributionSetSelectWindow dsSelectWindow;
|
||||
|
||||
private Container container;
|
||||
|
||||
private static final int PROPERTY_DEPT = 3;
|
||||
@@ -142,15 +149,17 @@ public class TargetFilterTable extends Table {
|
||||
container.addContainerProperty(SPUILabelDefinitions.VAR_CREATED_DATE, Date.class, null);
|
||||
container.addContainerProperty(SPUILabelDefinitions.VAR_MODIFIED_DATE, Date.class, null);
|
||||
container.addContainerProperty(SPUILabelDefinitions.VAR_MODIFIED_BY, String.class, null);
|
||||
container.addContainerProperty(SPUILabelDefinitions.AUTO_ASSIGN_DISTRIBUTION_SET, String.class, null);
|
||||
}
|
||||
|
||||
private List<TableColumn> getVisbleColumns() {
|
||||
final List<TableColumn> columnList = new ArrayList<>();
|
||||
final List<TableColumn> columnList = new ArrayList<>(7);
|
||||
columnList.add(new TableColumn(SPUILabelDefinitions.NAME, i18n.get("header.name"), 0.2F));
|
||||
columnList.add(new TableColumn(SPUILabelDefinitions.VAR_CREATED_USER, i18n.get("header.createdBy"), 0.15F));
|
||||
columnList.add(new TableColumn(SPUILabelDefinitions.VAR_CREATED_USER, i18n.get("header.createdBy"), 0.1F));
|
||||
columnList.add(new TableColumn(SPUILabelDefinitions.VAR_CREATED_DATE, i18n.get("header.createdDate"), 0.2F));
|
||||
columnList.add(new TableColumn(SPUILabelDefinitions.VAR_MODIFIED_BY, i18n.get("header.modifiedBy"), 0.15F));
|
||||
columnList.add(new TableColumn(SPUILabelDefinitions.VAR_MODIFIED_BY, i18n.get("header.modifiedBy"), 0.1F));
|
||||
columnList.add(new TableColumn(SPUILabelDefinitions.VAR_MODIFIED_DATE, i18n.get("header.modifiedDate"), 0.2F));
|
||||
columnList.add(new TableColumn(SPUILabelDefinitions.AUTO_ASSIGN_DISTRIBUTION_SET, i18n.get("header.auto.assignment.ds"), 0.1F));
|
||||
columnList.add(new TableColumn(SPUIDefinitions.CUSTOM_FILTER_DELETE, i18n.get("header.delete"), 0.1F));
|
||||
return columnList;
|
||||
|
||||
@@ -172,7 +181,7 @@ public class TargetFilterTable extends Table {
|
||||
return deleteIcon;
|
||||
}
|
||||
|
||||
private String getDeleteIconId(final String targetFilterName) {
|
||||
private static String getDeleteIconId(final String targetFilterName) {
|
||||
return new StringBuilder(UIComponentIdProvider.CUSTOM_FILTER_DELETE_ICON).append('.').append(targetFilterName)
|
||||
.toString();
|
||||
}
|
||||
@@ -208,6 +217,9 @@ public class TargetFilterTable extends Table {
|
||||
addGeneratedColumn(SPUILabelDefinitions.NAME,
|
||||
(source, itemId, columnId) -> customFilterDetailButton((Long) itemId));
|
||||
|
||||
addGeneratedColumn(SPUILabelDefinitions.AUTO_ASSIGN_DISTRIBUTION_SET,
|
||||
(source, itemId, columnId) -> customFilterDistributionSetButton((Long) itemId));
|
||||
|
||||
}
|
||||
|
||||
private Button customFilterDetailButton(final Long itemId) {
|
||||
@@ -222,6 +234,34 @@ public class TargetFilterTable extends Table {
|
||||
return updateIcon;
|
||||
}
|
||||
|
||||
private Button customFilterDistributionSetButton(final Long itemId) {
|
||||
final Item row1 = getItem(itemId);
|
||||
final ProxyDistribution distSet = (ProxyDistribution) row1.getItemProperty(SPUILabelDefinitions.AUTO_ASSIGN_DISTRIBUTION_SET).getValue();
|
||||
final String buttonId = "distSetButton";
|
||||
Button updateIcon;
|
||||
if(distSet == null) {
|
||||
updateIcon = SPUIComponentProvider.getButton(buttonId, i18n.get("button.no.auto.assignment"),
|
||||
i18n.get("button.auto.assignment.desc"), null, false, null, SPUIButtonStyleSmallNoBorder.class);
|
||||
} else {
|
||||
updateIcon = SPUIComponentProvider.getButton(buttonId, distSet.getNameVersion(),
|
||||
i18n.get("button.auto.assignment.desc"), null, false, null, SPUIButtonStyleSmallNoBorder.class);
|
||||
}
|
||||
|
||||
updateIcon.addClickListener(this::onClickOfDistributionSetButton);
|
||||
updateIcon.setData(row1);
|
||||
updateIcon.addStyleName(ValoTheme.LINK_SMALL + " " + "on-focus-no-border link");
|
||||
|
||||
return updateIcon;
|
||||
}
|
||||
|
||||
private void onClickOfDistributionSetButton(final ClickEvent event) {
|
||||
final Item item = (Item) ((Button) event.getComponent()).getData();
|
||||
final Long tfqId = (Long)item.getItemProperty(SPUILabelDefinitions.VAR_ID).getValue();
|
||||
|
||||
dsSelectWindow.showForTargetFilter(tfqId);
|
||||
|
||||
}
|
||||
|
||||
private void onClickOfDetailButton(final ClickEvent event) {
|
||||
final String targetFilterName = (String) ((Button) event.getComponent()).getData();
|
||||
final TargetFilterQuery targetFilterQuery = targetFilterQueryManagement
|
||||
@@ -246,14 +286,11 @@ public class TargetFilterTable extends Table {
|
||||
}
|
||||
|
||||
private void setColumnProperties() {
|
||||
final List<TableColumn> columnList = getVisbleColumns();
|
||||
final List<Object> swColumnIds = new ArrayList<>();
|
||||
for (final TableColumn column : columnList) {
|
||||
setVisibleColumns(getVisbleColumns().stream().map(column -> {
|
||||
setColumnHeader(column.getColumnPropertyId(), column.getColumnHeader());
|
||||
setColumnExpandRatio(column.getColumnPropertyId(), column.getExpandRatio());
|
||||
swColumnIds.add(column.getColumnPropertyId());
|
||||
}
|
||||
setVisibleColumns(swColumnIds.toArray());
|
||||
return column.getColumnPropertyId();
|
||||
}).toArray());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -63,13 +63,17 @@ public class CertificateAuthenticationConfigurationItem extends AbstractAuthenti
|
||||
final Label caRootAuthorityLabel = new LabelBuilder().name("SSL Issuer Hash:").buildLabel();
|
||||
caRootAuthorityLabel.setDescription(
|
||||
"The SSL Issuer iRules.X509 hash, to validate against the controller request certifcate.");
|
||||
caRootAuthorityLabel.setWidthUndefined();
|
||||
|
||||
caRootAuthorityTextField = new TextFieldBuilder().immediate(true).maxLengthAllowed(128).buildTextComponent();
|
||||
caRootAuthorityTextField.setWidth("500px");
|
||||
caRootAuthorityTextField = new TextFieldBuilder().immediate(true).maxLengthAllowed(160).buildTextComponent();
|
||||
caRootAuthorityTextField.setWidth("100%");
|
||||
caRootAuthorityTextField.addTextChangeListener(event -> caRootAuthorityChanged());
|
||||
|
||||
caRootAuthorityLayout.addComponent(caRootAuthorityLabel);
|
||||
caRootAuthorityLayout.setExpandRatio(caRootAuthorityLabel, 0);
|
||||
caRootAuthorityLayout.addComponent(caRootAuthorityTextField);
|
||||
caRootAuthorityLayout.setExpandRatio(caRootAuthorityTextField, 1);
|
||||
caRootAuthorityLayout.setWidth("100%");
|
||||
|
||||
detailLayout.addComponent(caRootAuthorityLayout);
|
||||
|
||||
|
||||
@@ -487,6 +487,11 @@ public final class SPUIDefinitions {
|
||||
*/
|
||||
public static final String FILTER_BY_INVALID_QUERY = "FilterByInvalidFilterQueryText";
|
||||
|
||||
/**
|
||||
* Filter by distribution set complete.
|
||||
*/
|
||||
public static final String FILTER_BY_DS_COMPLETE = "FilterByDistributionSetComplete";
|
||||
|
||||
/**
|
||||
* Sort order of column - created at in target table.
|
||||
*/
|
||||
|
||||
@@ -203,6 +203,10 @@ public final class SPUILabelDefinitions {
|
||||
* ASSIGNED DISTRIBUTION ID.
|
||||
*/
|
||||
public static final String ASSIGNED_DISTRIBUTION_ID = "assignedDistributionSet.id";
|
||||
/**
|
||||
* AUTO ASSIGN DISTRIBUTION SET ID
|
||||
*/
|
||||
public static final String AUTO_ASSIGN_DISTRIBUTION_SET = "autoAssignDistributionSet";
|
||||
/**
|
||||
* ASSIGNED DISTRIBUTION Name & Version.
|
||||
*/
|
||||
|
||||
@@ -885,6 +885,26 @@ public final class UIComponentIdProvider {
|
||||
*/
|
||||
public static final String FILTER_SEARCH_ICON_ID = "filter.search.icon";
|
||||
|
||||
/**
|
||||
* Distribution set select table id
|
||||
*/
|
||||
public static final String DIST_SET_SELECT_TABLE_ID = "distribution.set.select.table";
|
||||
|
||||
/**
|
||||
* Distribution set select window id
|
||||
*/
|
||||
public static final String DIST_SET_SELECT_WINDOW_ID = "distribution.set.select.window";
|
||||
|
||||
/**
|
||||
* Distribution set select consequences window id
|
||||
*/
|
||||
public static final String DIST_SET_SELECT_CONS_WINDOW_ID = "distribution.set.select.consequences.window";
|
||||
|
||||
/**
|
||||
* Distribution set select enable checkbox id
|
||||
*/
|
||||
public static final String DIST_SET_SELECT_ENABLE_ID = "distribution.set.select.enable";
|
||||
|
||||
/**
|
||||
* /* Private Constructor.
|
||||
*/
|
||||
|
||||
@@ -168,6 +168,7 @@
|
||||
|
||||
.v-table-cell-content {
|
||||
height: 27px;
|
||||
font-size: 12px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -22,8 +22,11 @@ button.no.actions = No actions
|
||||
button.ok = OK
|
||||
button.cancel = Cancel
|
||||
button.upload.file = Upload File
|
||||
button.no.auto.assignment = none
|
||||
button.auto.assignment.desc = Select auto assign distribution set
|
||||
bulk.targets.upload = Please upload csv file.
|
||||
bulkupload.ds.name = DS Name
|
||||
button.discard=Discard
|
||||
|
||||
# Headers prefix with - header
|
||||
header.target.table=Targets
|
||||
@@ -48,6 +51,14 @@ header.dist.twintable.selected=Selected
|
||||
header.dist.twintable.available=Available
|
||||
header.target.installed = Installed
|
||||
header.target.assigned = Assigned
|
||||
header.type=Type
|
||||
header.swmodules=SwModules
|
||||
header.migrations.step=IsRequiredMigrationStep
|
||||
header.action=Actions
|
||||
header.action.run=Run
|
||||
header.action.pause=Pause
|
||||
header.action.update=Edit
|
||||
header.status=Status
|
||||
|
||||
# Captions prefix with - caption
|
||||
caption.action.history = Action history for {0}
|
||||
@@ -59,6 +70,7 @@ caption.filter.simple = Simple Filter
|
||||
caption.filter.custom = Custom Filter
|
||||
caption.metadata = Metadata
|
||||
|
||||
caption.select.auto.assign.dist = Select auto assignment distribution set
|
||||
caption.add.softwaremodule = Configure Software Module
|
||||
caption.add.new.dist = Configure New Distribution
|
||||
caption.update.dist = Configure Update Distribution
|
||||
@@ -92,7 +104,8 @@ caption.confirm.abort.action = Confirm Abort 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.assign.consequences = Auto assign consequences
|
||||
caption.auto.assignment.ds = Auto assignment
|
||||
|
||||
# Labels prefix with - label
|
||||
label.dist.details.type = Type :
|
||||
@@ -129,8 +142,6 @@ label.combobox.tag = Select Tag
|
||||
label.choose.tag = Choose Tag to update
|
||||
label.choose.tag.color = Choose Tag Color
|
||||
label.target.filtered.total = Total filtered targets :
|
||||
label.filter.selected = Selected:
|
||||
label.filter.shown = Shown:
|
||||
label.filter = Filter :
|
||||
label.target.filter.count = Total Targets :
|
||||
label.filter.selected = Selected :
|
||||
@@ -161,13 +172,15 @@ label.filter.by.status = Filter by Status
|
||||
label.filter.by.overdue = Filter by Overdue
|
||||
label.target.controller.attrs = <b>Controller attributes</b>
|
||||
label.target.lastpolldate = Last poll :
|
||||
label.no.tag.assigned = NO TAG
|
||||
label.tag.name = Tag name
|
||||
label.configuration.auth.header = Allow targets to authenticate via a certificate authenticated by an reverse proxy
|
||||
label.configuration.auth.gatewaytoken = Allow a gateway to authenticate and manage multiple targets through a gateway security token
|
||||
label.configuration.auth.targettoken = Allow targets to authenticate directly with their target security token
|
||||
label.configuration.anonymous.download = Allow targets to download artifacts without security credentials
|
||||
label.unsupported.browser.ie=Sorry! current browser is not supported. Please use Internet Explorer 11 and above
|
||||
label.auto.assign.description=When an auto assign distribution set is selected, it will be automatically assigned to all targets that match the target filter.
|
||||
label.auto.assign.enable=Enable auto assignment
|
||||
label.scheduled=Scheduled
|
||||
|
||||
# Checkbox label prefix with - checkbox
|
||||
checkbox.dist.migration.required = Required Migration Step :
|
||||
@@ -233,7 +246,6 @@ message.dists.already.deleted = Few distribution(s) are already deleted.Pending
|
||||
message.target.deleted.pending = Target(s) already deleted.Pending for action
|
||||
message.dist.deleted.pending = Distribution(s) already deleted.Pending for action
|
||||
message.dist.delete.success = All selected distribution sets are deleted successfully !
|
||||
message.dist.discard.success = All distributions selected for delete are discarded successfully !
|
||||
message.target.delete.success = All selected targets are deleted successfully !
|
||||
message.target.discard.success = All targets selected for delete are discarded successfully !
|
||||
message.software.discard.success = All software modules selected for delete are discarded successfully !
|
||||
@@ -298,7 +310,6 @@ message.no.targets.assiged.fortag = No targets are assigned to tag {0}
|
||||
message.error.missing.tagname = Please select tag name
|
||||
message.type.delete = Please unclick the distribution type {0}, then try to delete
|
||||
message.error.dist.set.type.update= Distribution Set Type is already assigned to targets and cannot be changed
|
||||
message.target.ds.assign.success = Assignments saved successfully !
|
||||
message.no.directory.upload = Directory upload is not supported
|
||||
message.delete.filter.confirm = Are you sure that you want to delete custom filter?
|
||||
message.delete.filter.success = Custom filter {0} deleted Successfully!
|
||||
@@ -309,6 +320,8 @@ message.target.filter.duplicate = {0} already exists, please enter another valu
|
||||
message.tag.use.bulk.upload = {0} cannot be deleted .It is in use in targets bulk upload
|
||||
message.bulk.upload.tag.assignment.failed = Tag {0} assignment failed as tag no longer exists
|
||||
message.bulk.upload.tag.assignments.failed= Few tag assignments failed as tags no longer exists
|
||||
message.confirm.assign.consequences.none = This auto assignment will not have any effect on the currently available targets. In future added targets might match the filter and will receive the selected distribution set automatically.
|
||||
message.confirm.assign.consequences.text = When you confirm this auto assignment, {0} targets which match the filter will immediately get assigned with the selected distribution set.
|
||||
|
||||
# action info
|
||||
action.target.table.selectall = Select all (Ctrl+A)
|
||||
@@ -450,12 +463,12 @@ header.assigned.ds = Assigned DS
|
||||
header.installed.ds = Installed DS
|
||||
header.target.status = Status
|
||||
header.target.tags = Tags
|
||||
header.distributionset = Distribution set
|
||||
header.numberofgroups = No. of groups
|
||||
header.detail.status = Detail status
|
||||
header.total.targets = Total targets
|
||||
header.key = Key
|
||||
header.value = Value
|
||||
header.auto.assignment.ds = Auto assignment
|
||||
header.target.filter.name = Target filter name
|
||||
header.target.filter.query = Target filter query
|
||||
|
||||
distribution.details.header = Distribution set
|
||||
target.details.header = Target
|
||||
@@ -512,3 +525,9 @@ menu.title = Software Provisioning
|
||||
|
||||
#Target Filter Management
|
||||
breadcrumb.target.filter.custom.filters = Custom Filters
|
||||
|
||||
notification.configuration.save=Saved changes
|
||||
controller.polling.title=Polling Configuration
|
||||
controller.polling.time=Polling Time
|
||||
controller.polling.overduetime=Polling Overdue Time
|
||||
|
||||
|
||||
@@ -1,506 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 2015 Bosch Software Innovations GmbH and others.
|
||||
#
|
||||
# All rights reserved. This program and the accompanying materials
|
||||
# are made available under the terms of the Eclipse Public License v1.0
|
||||
# which accompanies this distribution, and is available at
|
||||
# http://www.eclipse.org/legal/epl-v10.html
|
||||
#
|
||||
|
||||
#########################################################################################
|
||||
# This is the messages_en.properties file
|
||||
#########################################################################################
|
||||
|
||||
# Button names prefix with - button
|
||||
button.save = Save
|
||||
button.delete = Delete
|
||||
button.discard = Discard
|
||||
button.discard.all = Discard All
|
||||
button.delete.all = Delete All
|
||||
button.assign.all = Save Assign
|
||||
button.actions = You have actions
|
||||
button.no.actions = No actions
|
||||
button.ok = OK
|
||||
button.cancel = Cancel
|
||||
button.upload.file = Upload File
|
||||
bulk.targets.upload = Please upload csv file.
|
||||
bulkupload.ds.name = DS Name
|
||||
|
||||
# Headers prefix with - header
|
||||
header.target.table=Targets
|
||||
header.dist.table=Distributions
|
||||
header.filter.tag=Filter by Tag
|
||||
header.target.filter.tag=Filters
|
||||
header.first.assignment.table = Targets
|
||||
header.second.assignment.table = Distributions
|
||||
header.dist.first.assignment.table = Distributions
|
||||
header.dist.second.assignment.table = Software Modules
|
||||
header.third.assignment.table = Discard
|
||||
header.one.deletedist.table = Distribution Name
|
||||
header.second.deletedist.table = Discard Changes
|
||||
header.first.deletetarget.table = Target Name
|
||||
header.second.deletetarget.table = Discard Changes
|
||||
header.first.deleteswmodule.table = Delete software
|
||||
header.first.delete.dist.type.table = DistributionSetType
|
||||
header.second.delete.dist.type.table = Discard
|
||||
header.first.delete.swmodule.type.table = Software Module Type
|
||||
header.second.delete.swmodule.type.table = Discard
|
||||
header.dist.twintable.selected=Selected
|
||||
header.dist.twintable.available=Available
|
||||
header.target.installed = Installed
|
||||
header.target.assigned = Assigned
|
||||
|
||||
# Captions prefix with - caption
|
||||
caption.action.history = Action history for {0}
|
||||
caption.error = Error
|
||||
caption.new.softwaremodule.application = Configure New Application
|
||||
caption.new.softwaremodule.jvm = Configure New Runtime
|
||||
caption.new.softwaremodule.os = Configure New OS
|
||||
caption.metadata = Metadata
|
||||
|
||||
|
||||
caption.add.softwaremodule = Configure Software Module
|
||||
caption.add.new.dist = Configure New Distribution
|
||||
caption.update.dist = Configure Update Distribution
|
||||
caption.add.tag = Configure Tag
|
||||
caption.add.type = Configure Type
|
||||
caption.add.new.target = Configure New Target
|
||||
caption.update.target = Configure Update Target
|
||||
caption.bulk.upload.targets = Bulk Upload
|
||||
caption.softwares.distdetail.tab = Modules
|
||||
caption.tags.tab = Tags
|
||||
caption.logs.tab = Logs
|
||||
caption.attributes.tab = Attributes
|
||||
caption.types.tab = Types
|
||||
caption.save.window = Action Details
|
||||
caption.assign.dist.accordion.tab = Assign Distribution Set
|
||||
caption.delete.dist.accordion.tab = Delete Distributions
|
||||
caption.delete.target.accordion.tab = Delete Targets
|
||||
caption.delete.swmodule.accordion.tab = Delete SW Modules
|
||||
caption.delete.dist.set.type.accordion.tab = Delete Distribution Set Type
|
||||
caption.delete.sw.module.type.accordion.tab = Delete Software Module Type
|
||||
caption.attributes = Attributes
|
||||
caption.panel.dist.installed = Installed Distribution Set
|
||||
caption.panel.dist.assigned = Assigned Distribution Set
|
||||
caption.soft.delete.confirmbox = Confirm Software Module Delete Action
|
||||
caption.cancel.action.confirmbox = Confirm Action Cancellation
|
||||
caption.forced.datefield = Force update at time
|
||||
caption.force.action.confirmbox = Confirm Force Active Action
|
||||
caption.filter.simple = Simple Filter
|
||||
caption.filter.custom = Custom Filter
|
||||
caption.filter.delete.confirmbox = Confirm Filter Delete 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
|
||||
label.dist.details.type = Type :
|
||||
label.dist.details.name = Name :
|
||||
label.dist.details.version = Version :
|
||||
label.dist.details.vendor = Vendor :
|
||||
label.dist.details.jvm = Runtime :
|
||||
label.dist.details.ah = Application :
|
||||
label.dist.details.os = OS :
|
||||
label.modified.date = Last modified at :
|
||||
label.modified.by = Last modified by :
|
||||
label.created.at = Created at :
|
||||
label.created.by = Created by :
|
||||
label.target.count = Targets :
|
||||
label.description = Description :
|
||||
label.ip = Address :
|
||||
label.type = Type :
|
||||
label.assigned.type = Assignment type :
|
||||
label.assigned.count = {0} Assigned
|
||||
label.installed.count = {0} Installed
|
||||
label.mandatory.field = * Mandatory Field
|
||||
label.components.drop.area = Drop here to delete
|
||||
label.software.module.drop.area = Delete Software
|
||||
label.create.tag = Create Tag
|
||||
label.update.tag = Update Tag
|
||||
label.create.type = Create Type
|
||||
label.update.type = Update Type
|
||||
label.singleAssign.type = Firmware (FW)
|
||||
label.multiAssign.type = Software (SW)
|
||||
label.choose.type = Choose Type
|
||||
label.choose.type.color = Choose Type Color
|
||||
label.combobox.type = Select Type
|
||||
label.combobox.tag = Select Tag
|
||||
label.choose.tag = Choose Tag to update
|
||||
label.choose.tag.color = Choose Tag Color
|
||||
label.target.filtered.total = Total filtered targets :
|
||||
label.filter.selected = Selected:
|
||||
label.filter.shown = Shown:
|
||||
label.filter = Filter :
|
||||
label.target.filter.count = Total Targets :
|
||||
label.filter.selected = Selected :
|
||||
label.filter.shown = Shown :
|
||||
label.filter.status = Status,
|
||||
label.filter.overdue = Overdue,
|
||||
label.filter.tags = Tags,
|
||||
label.filter.text = Search Text
|
||||
label.filter.dist = Distribution,
|
||||
label.filter.custom = Custom
|
||||
label.target.filter.truncated={0} targets has been truncated in the list due the target size limit of {1}, use filters to reduce the targets to be shown
|
||||
label.active =Active
|
||||
label.inactive = In-active
|
||||
label.finished = Finished
|
||||
label.error = Error
|
||||
label.warning = Warning
|
||||
label.running = Running
|
||||
label.cancelled = Cancelled
|
||||
label.cancelling = Canceling
|
||||
label.retrieved = Retrieved
|
||||
label.download = Downloading
|
||||
label.scheduled = Scheduled
|
||||
label.target.id = Controller Id :
|
||||
label.target.ip = Controller IP :
|
||||
label.target.security.token = Security token :
|
||||
label.filter.by.status = Filter by Status
|
||||
label.filter.by.overdue = Filter by Overdue
|
||||
label.target.controller.attrs = <b>Controller attributes</b>
|
||||
label.target.lastpolldate = Last poll :
|
||||
label.no.tag.assigned = NO TAG
|
||||
label.tag.name = Tag name
|
||||
label.configuration.auth.header = Allow targets to authenticate via a certificate authenticated by an reverse proxy
|
||||
label.configuration.auth.gatewaytoken = Allow a gateway to authenticate and manage multiple targets through a gateway security token
|
||||
label.configuration.auth.targettoken = Allow targets to authenticate directly with their target security token
|
||||
label.configuration.anonymous.download = Allow targets to download artifacts without security credentials
|
||||
label.unsupported.browser.ie=Sorry! current browser is not supported. Please use Internet Explorer 11 and above
|
||||
|
||||
# Checkbox label prefix with - checkbox
|
||||
checkbox.dist.migration.required = Required Migration Step :
|
||||
checkbox.dist.required.migration.step = Required Migration Step
|
||||
|
||||
# TextFields prefix with - textfield
|
||||
textfield.name = Name
|
||||
textfield.key = Key
|
||||
textfield.version = Version
|
||||
textfield.vendor = Vendor
|
||||
textfield.description = Description
|
||||
textfield.customfiltername = Filter name
|
||||
textfield.value = Value
|
||||
ui.version = Powered by Bosch IoT Software Provisioning
|
||||
prompt.target.id = Controller ID
|
||||
|
||||
|
||||
#Tooltips prefix with - tooltip
|
||||
tooltip.add.module = Add Software Module
|
||||
tooltip.status.unknown = Unknown
|
||||
tooltip.status.registered = Registered
|
||||
tooltip.status.pending = Pending
|
||||
tooltip.status.error = Error
|
||||
tooltip.status.insync = In-sync
|
||||
tooltip.status.overdue = Overdue
|
||||
tooltip.delete.module = Select and delete Software Module
|
||||
tooltip.forced.item=Forced update action
|
||||
tooltip.soft.item=Soft update action which interacts with an user as a attempt update action for example
|
||||
tooltip.timeforced.item=Soft update until a specific time and then the action will be forced
|
||||
tooltip.check.for.mandatory=Check to make Mandatory
|
||||
tooltip.artifact.icon=Show Artifact Details
|
||||
tooltip.click.to.edit = Click to edit
|
||||
tooltip.metadata.icon = Manage Metadata
|
||||
|
||||
|
||||
# Notification messages prefix with - message
|
||||
message.save.success = {0} saved successfully
|
||||
message.update.success = {0} updated successfully
|
||||
message.delete.success = {0} deleted successfully
|
||||
message.dist.installedorassigned = Target {targId} is already assigned/installed with distribution
|
||||
message.dist.pending.action = Target {0} is already assigned with distribution {1} . Pending for action
|
||||
message.empty.target.tags= No Tags Created
|
||||
message.empty.disttype.tags = No Distribution type tags created
|
||||
message.select.row = Please select a row to drag
|
||||
message.error = Unknown error occured during the operation. Please contact administrator
|
||||
message.dist.assigned.one = {0} is assigned to {1}
|
||||
message.dist.assigned.many = {0} DistributionSets are assigned to {1}
|
||||
message.dist.unassigned.one = {0} is unassigned from {1}
|
||||
message.dist.unassigned.many = {0} DistributionSets are unassigned from {1}
|
||||
message.target.assigned.one = {0} is assigned to {1}
|
||||
message.target.assigned.many = {0} Targets are assigned to {1}
|
||||
message.target.unassigned.one = {0} is unassigned from {1}
|
||||
message.target.unassigned.many = {0} Targets are unassigned from {1}
|
||||
message.target.assigned.pending = Some target(s) are already assigned.Pending for action
|
||||
message.cannot.delete = Cannot be deleted
|
||||
message.check.softwaremodule = Please provide both name and version!
|
||||
message.cannot.delete.default.dstype = Default distribution set type cannot be deleted
|
||||
message.duplicate.softwaremodule = {0} : {1} already exists!
|
||||
message.cannot.delete.default.dstype = Default distribution set type cannot be deleted
|
||||
message.tag.delete = Please unclick the tag {0}, then try to delete
|
||||
message.dist.type.check.delete = Please unclick the distribution type {0}, then try to delete
|
||||
message.swmodule.type.check.delete = Please unclick the Software Module type {0}, then try to delete
|
||||
message.targets.already.deleted = Few Target(s) are already deleted.Pending for action
|
||||
message.dists.already.deleted = Few distribution(s) are already deleted.Pending for action
|
||||
message.target.deleted.pending = Target(s) already deleted.Pending for action
|
||||
message.dist.deleted.pending = Distribution(s) already deleted.Pending for action
|
||||
message.dist.delete.success = All selected distribution sets are deleted successfully !
|
||||
message.dist.discard.success = All distributions selected for delete are discarded successfully !
|
||||
message.target.delete.success = All selected targets are deleted successfully !
|
||||
message.target.discard.success = All targets selected for delete are discarded successfully !
|
||||
message.software.discard.success = All software modules selected for delete are discarded successfully !
|
||||
message.software.type.discard.success = All software moduleTypes selected for delete are discarded successfully !
|
||||
message.assign.software.discard.success = All software moduleTypes selected for assign are discarded successfully !
|
||||
message.software.delete.success = All software modules selected for delete are deleted successfully !
|
||||
message.software.type.delete.success = All software modules types selected for delete are deleted successfully !
|
||||
message.dist.set.type.deleted.success = {0} DistributionSetType deleted successfully !
|
||||
message.new.dist.save.success = {0} - {1} saved successfully
|
||||
message.dist.update.success = {0} - {1} updated successfully
|
||||
message.duplicate.dist = Distribution set [{0}] or version [{1}] must be unique, entered value already exists.
|
||||
message.error.view = No such view: {0}
|
||||
message.accessdenied.view = No access to view: {0}
|
||||
message.no.data = No data available
|
||||
message.target.assignment = {0} Assignment(s) done
|
||||
message.target.deleted = {0} Target(s) deleted
|
||||
message.dist.deleted = {0} Distribution Set(s) deleted
|
||||
message.tag.update.mandatory = Please select the Tag to update
|
||||
message.tag.duplicate.check = {0} already exists, please enter another value
|
||||
message.type.key.duplicate.check = Distribution type with key {0} already exists, please give another value
|
||||
message.type.key.swmodule.duplicate.check = Software Module type with key {0} already exists, please give another value
|
||||
message.no.action.history = No action history is available for the target : {0}
|
||||
message.no.available = --No messages available--
|
||||
message.no.actionupdateds.available = No other updates available for this action
|
||||
message.mandatory.check = Mandatory details are missing
|
||||
message.target.duplicate.check = Target [ {0} ] must be unique, entered value already exists.
|
||||
message.permission.insufficient = Insufficient permissions to perform this action.
|
||||
message.error.temp = The operation cannot be fulfilled due to {0}. Please contact administrator
|
||||
message.dist.alreadyassigned = {0} : {1} is already assigned/installed, cannot be updated
|
||||
message.dist.tag.alreadyassigned = {0} : {1} is already assigned/installed, cannot assign/un-assign to tag
|
||||
message.dists.unassign.tag.alreadyassigned = Few of the DistributionSet's are already assigned to Target, those cannot be unassigned from Tag"
|
||||
message.dists.assign.tag.alreadyassigned = Few of the DistributionSet's are already assigned to Target, those cannot be assigned to Tag"
|
||||
message.dists.tag.assigned = {0} DistributionSet's assigned to Tag {1}
|
||||
message.dists.tag.unassigned = {0} DistributionSet's un-assigned from Tag {1}
|
||||
message.dist.no.operation = {0} - already assigned/installed, No operation
|
||||
message.sm.delete.confirm = Are you sure that you want to delete the selected {0} Software Module?
|
||||
message.error.os.softmodule = Please select the OS to delete
|
||||
message.error.ah.softmodule = Please select the Application to delete
|
||||
message.error.softmodule.deleted = The selected Software Module is already deleted
|
||||
message.cancel.action = Cancel
|
||||
message.cancel.action.success = Action cancelled successfully !
|
||||
message.cancel.action.failed = Unable to cancel the action !
|
||||
message.cancel.action.confirm = Are you sure that you want to cancel this action?
|
||||
message.target.alreadyAssigned = {0} Target(s) were already assigned
|
||||
message.dist.alreadyAssigned = {0} Distribution Set(s) were already assigned
|
||||
message.force.action = Force
|
||||
message.force.action.confirm = Are you sure that you want to force this action?
|
||||
message.force.action.success = Action forced successfully !
|
||||
message.distribution.no.update = distribution {0} set is already assigned to targets and cannot be changed
|
||||
message.action.not.allowed = Action not allowed
|
||||
message.action.did.not.work = Action did not work. Please try again.
|
||||
message.onlyone.distribution.assigned = Only one distribution set can be assigned
|
||||
message.onlyone.distribution.dropallowed = Only one distribution set can be dropped
|
||||
message.error.missing.typename = Missing Type Name
|
||||
message.error.missing.typenameorkey = Missing Type Name or Key
|
||||
message.tag.cannot.be.assigned = Target/DS cannot be assigned to {0}
|
||||
message.no.targets.assiged.fortag = No targets are assigned to tag {0}
|
||||
message.error.missing.tagname = Please select tag name
|
||||
message.type.delete = Please unclick the distribution type {0}, then try to delete
|
||||
message.error.dist.set.type.update= Distribution Set Type is already assigned to targets and cannot be changed
|
||||
message.target.ds.assign.success = Assignments saved successfully !
|
||||
message.no.directory.upload = Directory upload is not supported
|
||||
|
||||
message.delete.filter.confirm = Are you sure that you want to delete custom filter?
|
||||
message.delete.filter.success = Custom filter {0} deleted Successfully!
|
||||
message.create.filter.success = Custom filter {0} created Successfully!
|
||||
message.update.filter.success = Custom filter updated Successfully!
|
||||
message.target.filter.validation = Please enter name and query
|
||||
message.target.filter.duplicate = {0} already exists, please enter another value
|
||||
message.tag.use.bulk.upload = {0} cannot be deleted .It is in use in targets bulk upload
|
||||
message.bulk.upload.tag.assignment.failed = Tag {0} assignment failed as tag no longer exists
|
||||
message.bulk.upload.tag.assignments.failed= Few tag assignments failed as tags no longer exists
|
||||
|
||||
#reused messages
|
||||
soft.module.jvm =Runtime
|
||||
soft.module.application =Application
|
||||
soft.module.os =OS
|
||||
|
||||
#Artifact upload
|
||||
message.error.noFileSelected = No file selected for upload
|
||||
message.error.noProvidedName = Please provide custom file name
|
||||
message.error.noSwModuleSelected = Please select a Software Module
|
||||
message.no.duplicateFiles = Duplicate files selected
|
||||
message.no.duplicateFile = Duplicate file selected :
|
||||
message.delete.artifact = Are you sure that you want to delete artifact {0} ?
|
||||
message.duplicate.filename = Duplicate file name
|
||||
message.swModule.deleted = {0} Software Module(s) deleted
|
||||
message.error.missing.tagname = Please select tag name
|
||||
message.upload.failed = Streaming Failed
|
||||
message.uploadedfile.size.exceeded = File size exceeded .Allowed size {0} bytes
|
||||
message.uploadedfile.aborted = File upload aborted
|
||||
message.file.not.found = File not found
|
||||
message.artifact.deleted =Artifact with file {0} deleted successfully
|
||||
message.abort.upload = Are you sure that you want to abort the upload?
|
||||
|
||||
|
||||
|
||||
upload.swModuleTable.header = Software Module
|
||||
upload.selectedfile.name = file selected for upload
|
||||
upload.file.name = File name
|
||||
upload.sha1 = SHA1 checksum
|
||||
upload.md5 = MD5 checksum
|
||||
upload.last.modified.date=Last modified date
|
||||
upload.failed = Failed
|
||||
upload.success = Success
|
||||
upload.caption.add.new.swmodule = Configure New Software Module
|
||||
upload.caption.delete.swmodule = Configure Delete Software Module
|
||||
upload.swmodule.type = Type
|
||||
upload.artifact.alreadyExists = Artifact will be overridden as the given name already exists
|
||||
upload.size = Size(B)
|
||||
upload.validation = Validation
|
||||
upload.reason = Reason
|
||||
upload.action = Action
|
||||
upload.result.status = Upload status
|
||||
upload.file = Upload File
|
||||
upload.caption.update.swmodule = Update Software Module
|
||||
caption.tab.details = Details
|
||||
caption.tab.description = Description
|
||||
|
||||
caption.delete.artifact.confirmbox = Confirm Artifact Delete Action
|
||||
|
||||
#Manage distributions view
|
||||
label.drop.dist.delete.area = Drop here<br>to delete
|
||||
caption.assign.software.dist.accordion.tab = Assign Software Modules
|
||||
message.software.assignment = {0} Assignment(s) done
|
||||
message.dist.inuse = {0} Distribution is already assigned to target
|
||||
message.software.dist.already.assigned = {0} Distribution already has Software Module {1}
|
||||
message.software.dist.type.notallowed = {0} Software Module type can not assign to Distribution {1}
|
||||
message.target.assigned = {0} is assigned to {1}
|
||||
message.dist.type.delete = {0} DistributionType(s) Deleted successfully.
|
||||
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.discard.success = All Distributions 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.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} ?
|
||||
message.error.notification.ds.target.assigned = Distribution set {0}:{1} is already assigned to targets and cannot be changed
|
||||
|
||||
|
||||
# Login view
|
||||
notification.login.title=Welcome to Bosch IoT Software Provisioning.
|
||||
notification.login.description=Please login with your Bosch Identity Management credentials.
|
||||
notification.login.failed.title=Login failed!
|
||||
notification.login.failed.description=Login with the given credentials failed.
|
||||
notification.login.failed.credentialsexpired.title=Passwort Abgelaufen!
|
||||
notification.login.failed.credentialsexpired.description=Passwort ist entweder abgelaufen or muss initial gesetzt werden, bitte im Benutzer Verwaltungssystem <20>ndern.
|
||||
label.login.tenant=Tenant
|
||||
label.login.username=Username
|
||||
label.login.password=Password
|
||||
button.login.signin=Sign in
|
||||
checkbox.login.rememberme=Remember me
|
||||
|
||||
# Links
|
||||
link.documentation.name=Dokumentation
|
||||
link.demo.name=Demo
|
||||
link.requestaccount.name=Beantragung eines Accounts
|
||||
link.support.name=Support
|
||||
link.usermanagement.name=Benutzerverwaltung
|
||||
|
||||
|
||||
# System Configuration View
|
||||
notification.configuration.save=Ver<EFBFBD>nderungen gespeichert
|
||||
configuration.defaultdistributionset.title=Distribution Set Typ
|
||||
configuration.defaultdistributionset.select.label=Wahl des default Distribution Set typs:
|
||||
configuration.savebutton.tooltip=Konfigurationen speichern
|
||||
configuration.cancellbutton.tooltip=Konfigurationen zur<75>cksetzen
|
||||
configuration.authentication.title=Authentifikationseinstellungen
|
||||
|
||||
#Calendar
|
||||
calendar.year=Jahr
|
||||
calendar.years=Jahre
|
||||
calendar.month=Monat
|
||||
calendar.months=Monate
|
||||
calendar.day=Tag
|
||||
calendar.days=Tage
|
||||
calendar.hour=Stunde
|
||||
calendar.hours=Stunden
|
||||
calendar.minute=Minute
|
||||
calendar.minutes=Minuten
|
||||
calendar.second=Sekunde
|
||||
calendar.seconds=Sekunden
|
||||
|
||||
header.name = Name
|
||||
header.vendor = Vendor
|
||||
header.version = Version
|
||||
header.description = Description
|
||||
header.createdBy = Created By
|
||||
header.createdDate = Created Date
|
||||
header.modifiedBy = Modified By
|
||||
header.modifiedDate = Modified Date
|
||||
header.delete = Delete
|
||||
header.assigned.ds = Assigned DS
|
||||
header.installed.ds = Installed DS
|
||||
header.status = Status
|
||||
header.target.tags = Tags
|
||||
header.distributionset = Distribution set
|
||||
header.numberofgroups = No. of groups
|
||||
header.detail.status = Detail status
|
||||
header.total.targets = Total targets
|
||||
header.type = Type
|
||||
header.swmodules = SwModules
|
||||
header.migrations.step=IsRequiredMigrationStep
|
||||
|
||||
header.action=Actions
|
||||
header.action.run=Run
|
||||
header.action.pause=Pause
|
||||
header.action.update=Edit
|
||||
|
||||
header.rolloutgroup.installed.percentage = % Finished
|
||||
header.rolloutgroup.threshold.error = Error threshold
|
||||
header.rolloutgroup.threshold = Trigger threshold
|
||||
|
||||
header.rolloutgroup.target.date = Date and time
|
||||
header.rolloutgroup.target.message = Messages
|
||||
|
||||
rollout.group.label.target.truncated = {0} targets has been truncated in the list due the target size limit of {1}
|
||||
|
||||
distribution.details.header = Distribution Set
|
||||
target.details.header = Target
|
||||
header.caption.mandatory = Mandatory
|
||||
header.caption.typename = SoftwareModuleType
|
||||
header.caption.softwaremodule = SoftwareModule
|
||||
header.caption.unassign = Unassign
|
||||
message.sw.unassigned = Software Module {0} successfully unassigned
|
||||
header.caption.upload.details = Upload details
|
||||
header.key = Key
|
||||
header.value = Value
|
||||
combo.type.tag.name = Type tag name
|
||||
|
||||
label.yes = Yes
|
||||
label.no =No
|
||||
|
||||
|
||||
#Menu
|
||||
menu.title = Software Provisioning
|
||||
|
||||
|
||||
#Rollout management
|
||||
prompt.number.of.groups = Number of groups
|
||||
prompt.tigger.threshold = Trigger threshold
|
||||
prompt.error.threshold = Error threshold
|
||||
prompt.distribution.set = Distribution Set
|
||||
caption.configure.rollout = Configure Rollout
|
||||
caption.update.rollout = Update Rollout
|
||||
prompt.target.filter = Custom Target Filter
|
||||
message.rollout.nonzero.group.number = Number of groups must be greater than zero
|
||||
message.rollout.max.group.number = Number of groups must not be greater than 500
|
||||
message.rollout.duplicate.check = Rollout [ {0} ] must be unique, entered value already exists.
|
||||
message.rollout.field.value.range = Value should be in range {0} to {1}
|
||||
message.correct.invalid.value = Please correct invalid values
|
||||
message.enter.number = Please enter number
|
||||
message.rollout.started = Rollout {0} started successfully
|
||||
message.rollout.paused = Rollout {0} paused successfully
|
||||
message.rollout.resumed = Rollout {0} resumed successfully
|
||||
message.rollout.noofgroups.or.targetfilter.missing = Please enter number of groups and select target filter
|
||||
message.rollouts = Rollouts
|
||||
label.target.per.group = Targets per group :
|
||||
message.dist.already.assigned = Distribution {0} is already assigned to target
|
||||
message.error.creating.rollout = Server error. Error creating Rollout. Please contact the administrator
|
||||
message.error.starting.rollout = Server error. Error starting Rollout. Please contact the administrator
|
||||
|
||||
#Target Filter Management
|
||||
breadcrumb.target.filter.custom.filters = Custom Filters
|
||||
@@ -1,502 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 2015 Bosch Software Innovations GmbH and others.
|
||||
#
|
||||
# All rights reserved. This program and the accompanying materials
|
||||
# are made available under the terms of the Eclipse Public License v1.0
|
||||
# which accompanies this distribution, and is available at
|
||||
# http://www.eclipse.org/legal/epl-v10.html
|
||||
#
|
||||
|
||||
#########################################################################################
|
||||
# This is the messages_en.properties file
|
||||
#########################################################################################
|
||||
|
||||
# Button names prefix with - button
|
||||
button.save = Save
|
||||
button.delete = Delete
|
||||
button.discard = Discard
|
||||
button.discard.all = Discard All
|
||||
button.delete.all = Delete All
|
||||
button.assign.all = Save Assign
|
||||
button.actions = You have actions
|
||||
button.no.actions = No actions
|
||||
button.ok = OK
|
||||
button.cancel = Cancel
|
||||
button.upload.file = Upload File
|
||||
bulk.targets.upload = Please upload csv file.
|
||||
bulkupload.ds.name = DS Name
|
||||
|
||||
# Headers prefix with - header
|
||||
header.target.table=Targets
|
||||
header.dist.table=Distributions
|
||||
header.filter.tag=Filter by Tag
|
||||
header.target.filter.tag=Filters
|
||||
header.first.assignment.table = Targets
|
||||
header.second.assignment.table = Distributions
|
||||
header.dist.first.assignment.table = Distributions
|
||||
header.dist.second.assignment.table = Software Modules
|
||||
header.third.assignment.table = Discard
|
||||
header.one.deletedist.table = Distribution Name
|
||||
header.second.deletedist.table = Discard Changes
|
||||
header.first.deletetarget.table = Target Name
|
||||
header.second.deletetarget.table = Discard Changes
|
||||
header.first.deleteswmodule.table = Delete software
|
||||
header.first.delete.dist.type.table = DistributionSetType
|
||||
header.second.delete.dist.type.table = Discard
|
||||
header.first.delete.swmodule.type.table = Software Module Type
|
||||
header.second.delete.swmodule.type.table = Discard
|
||||
header.dist.twintable.selected=Selected
|
||||
header.dist.twintable.available=Available
|
||||
header.target.installed = Installed
|
||||
header.target.assigned = Assigned
|
||||
|
||||
# Captions prefix with - caption
|
||||
caption.action.history = Action history for {0}
|
||||
caption.error = Error
|
||||
caption.new.softwaremodule.application = Configure New Application
|
||||
caption.new.softwaremodule.jvm = Configure New Runtime
|
||||
caption.new.softwaremodule.os = Configure New OS
|
||||
caption.filter.simple = Simple Filter
|
||||
caption.filter.custom = Custom Filter
|
||||
caption.metadata = Metadata
|
||||
|
||||
caption.add.softwaremodule = Configure Software Module
|
||||
caption.add.new.dist = Configure New Distribution
|
||||
caption.update.dist = Configure Update Distribution
|
||||
caption.add.tag = Configure Tag
|
||||
caption.add.type = Configure Type
|
||||
caption.add.new.target = Configure New Target
|
||||
caption.update.target = Configure Update Target
|
||||
caption.bulk.upload.targets = Bulk Upload
|
||||
caption.softwares.distdetail.tab = Modules
|
||||
caption.tags.tab = Tags
|
||||
caption.logs.tab = Logs
|
||||
caption.attributes.tab = Attributes
|
||||
caption.types.tab = Types
|
||||
caption.save.window = Action Details
|
||||
caption.assign.dist.accordion.tab = Assign Software Module
|
||||
caption.delete.dist.accordion.tab = Delete Distributions
|
||||
caption.delete.target.accordion.tab = Delete Targets
|
||||
caption.delete.swmodule.accordion.tab = Delete SW Modules
|
||||
caption.delete.dist.set.type.accordion.tab = Delete Distribution Set Type
|
||||
caption.delete.sw.module.type.accordion.tab = Delete Software Module Type
|
||||
caption.attributes = Attributes
|
||||
caption.panel.dist.installed = Installed Distribution Set
|
||||
caption.panel.dist.assigned = Assigned Distribution Set
|
||||
caption.soft.delete.confirmbox = Confirm Software Module Delete Action
|
||||
caption.cancel.action.confirmbox = Confirm Action Cancellation
|
||||
caption.forced.datefield = Force update at time
|
||||
caption.force.action.confirmbox = Confirm Force Active 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
|
||||
|
||||
# Labels prefix with - label
|
||||
label.dist.details.type = Type :
|
||||
label.dist.details.name = Name :
|
||||
label.dist.details.version = Version :
|
||||
label.dist.details.vendor = Vendor :
|
||||
label.dist.details.jvm = Runtime :
|
||||
label.dist.details.ah = Application :
|
||||
label.dist.details.os = OS :
|
||||
label.modified.date = Last modified at :
|
||||
label.modified.by = Last modified by :
|
||||
label.created.at = Created at :
|
||||
label.created.by = Created by :
|
||||
label.target.count = Targets :
|
||||
label.description = Description :
|
||||
label.ip = Address :
|
||||
label.type = Type :
|
||||
label.assigned.type = Assignment type :
|
||||
label.assigned.count = {0} Assigned
|
||||
label.installed.count = {0} Installed
|
||||
label.mandatory.field = * Mandatory Field
|
||||
label.components.drop.area = Drop here to delete
|
||||
label.software.module.drop.area = Delete Software
|
||||
label.create.tag = Create Tag
|
||||
label.update.tag = Update Tag
|
||||
label.create.type = Create Type
|
||||
label.update.type = Update Type
|
||||
label.singleAssign.type = Firmware (FW)
|
||||
label.multiAssign.type = Software (SW)
|
||||
label.choose.type = Choose Type to Update
|
||||
label.choose.type.color = Choose Type Color
|
||||
label.combobox.type = Select Type
|
||||
label.combobox.tag = Select Tag
|
||||
label.choose.tag = Choose Tag to update
|
||||
label.choose.tag.color = Choose Tag Color
|
||||
label.target.filtered.total = Total filtered targets :
|
||||
label.filter.selected = Selected:
|
||||
label.filter.shown = Shown:
|
||||
label.filter.targets = Filtered targets :
|
||||
label.filter = Filter :
|
||||
label.target.filter.count = Total Targets :
|
||||
label.filter.selected = Selected :
|
||||
label.filter.shown = Shown :
|
||||
label.filter.status = Status,
|
||||
label.filter.overdue = Overdue,
|
||||
label.filter.tags = Tags,
|
||||
label.filter.text = Search Text
|
||||
label.filter.dist = Distribution,
|
||||
label.filter.custom = Custom
|
||||
label.target.filter.truncated={0} targets has been truncated in the list due the target size limit of {1}, use filters to reduce the targets to be shown
|
||||
label.active =Active
|
||||
label.inactive = In-active
|
||||
label.finished = Finished
|
||||
label.error = Error
|
||||
label.warning = Warning
|
||||
label.running = Running
|
||||
label.cancelled = Cancelled
|
||||
label.cancelling = Canceling
|
||||
label.retrieved = Retrieved
|
||||
label.download = Downloading
|
||||
label.scheduled = Scheduled
|
||||
label.target.id = Controller Id :
|
||||
label.target.ip = Controller IP :
|
||||
label.target.security.token = Security token :
|
||||
label.filter.by.status = Filter by Status
|
||||
label.filter.by.overdue = Filter by Overdue
|
||||
label.target.controller.attrs = <b>Controller attributes</b>
|
||||
label.target.lastpolldate = Last poll :
|
||||
label.no.tag.assigned = NO TAG
|
||||
label.tag.name = Tag name
|
||||
label.configuration.auth.header = Allow targets to authenticate via a certificate authenticated by an reverse proxy
|
||||
label.configuration.auth.gatewaytoken = Allow a gateway to authenticate and manage multiple targets through a gateway security token
|
||||
label.configuration.auth.targettoken = Allow targets to authenticate directly with their target security token
|
||||
label.configuration.anonymous.download = Allow targets to download artifacts without security credentials
|
||||
label.unsupported.browser.ie=Sorry! current browser is not supported. Please use Internet Explorer 11 and above
|
||||
|
||||
# Checkbox label prefix with - checkbox
|
||||
checkbox.dist.migration.required = Required Migration Step :
|
||||
checkbox.dist.required.migration.step = Required Migration Step
|
||||
|
||||
# TextFields prefix with - textfield
|
||||
textfield.name = Name
|
||||
textfield.key = Key
|
||||
textfield.version = Version
|
||||
textfield.vendor = Vendor
|
||||
textfield.description = Description
|
||||
textfield.customfiltername = Filter name
|
||||
textfield.value = Value
|
||||
ui.version = Powered by Bosch IoT Software Provisioning
|
||||
prompt.target.id = Controller ID
|
||||
|
||||
|
||||
#Tooltips prefix with - tooltip
|
||||
tooltip.add.module = Add Software Module
|
||||
tooltip.status.unknown = Unknown
|
||||
tooltip.status.registered = Registered
|
||||
tooltip.status.pending = Pending
|
||||
tooltip.status.error = Error
|
||||
tooltip.status.insync = In-sync
|
||||
tooltip.status.overdue = Overdue
|
||||
tooltip.delete.module = Select and delete Software Module
|
||||
tooltip.forced.item=Forced update action
|
||||
tooltip.soft.item=Soft update action which interacts with an user as a attempt update action for example
|
||||
tooltip.timeforced.item=Soft update until a specific time and then the action will be forced
|
||||
tooltip.check.for.mandatory=Check to make Mandatory
|
||||
tooltip.artifact.icon=Show Artifact Details
|
||||
tooltip.click.to.edit = Click to edit
|
||||
tooltip.metadata.icon = Manage Metadata
|
||||
|
||||
|
||||
# Notification messages prefix with - message
|
||||
message.save.success = {0} saved successfully
|
||||
message.update.success = {0} updated successfully
|
||||
message.delete.success = {0} deleted successfully
|
||||
message.dist.installedorassigned = Target {targId} is already assigned/installed with distribution
|
||||
message.dist.pending.action = Target {0} is already assigned with distribution {1} . Pending for action
|
||||
message.empty.target.tags= No Tags Created
|
||||
message.empty.disttype.tags = No Distribution type tags created
|
||||
message.select.row = Please select a row to drag
|
||||
message.error = Unknown error occured during the operation. Please contact administrator
|
||||
message.dist.assigned.one = {0} is assigned to {1}
|
||||
message.dist.assigned.many = {0} DistributionSets are assigned to {1}
|
||||
message.dist.unassigned.one = {0} is unassigned from {1}
|
||||
message.dist.unassigned.many = {0} DistributionSets are unassigned from {1}
|
||||
message.target.assigned.one = {0} is assigned to {1}
|
||||
message.target.assigned.many = {0} Targets are assigned to {1}
|
||||
message.target.unassigned.one = {0} is unassigned from {1}
|
||||
message.target.unassigned.many = {0} Targets are unassigned from {1}
|
||||
message.target.assigned.pending = Some target(s) are already assigned.Pending for action
|
||||
message.cannot.delete = Cannot be deleted
|
||||
message.check.softwaremodule = Please provide both name and version!
|
||||
message.duplicate.softwaremodule = {0} : {1} already exists!
|
||||
message.tag.delete = Please unclick the tag {0}, then try to delete
|
||||
message.dist.type.check.delete = Please unclick the distribution type {0}, then try to delete
|
||||
message.swmodule.type.check.delete = Please unclick the Software Module type {0}, then try to delete
|
||||
message.targets.already.deleted = Few Target(s) are already deleted.Pending for action
|
||||
message.dists.already.deleted = Few distribution(s) are already deleted.Pending for action
|
||||
message.target.deleted.pending = Target(s) already deleted.Pending for action
|
||||
message.dist.deleted.pending = Distribution(s) already deleted.Pending for action
|
||||
message.dist.delete.success = All selected distribution sets are deleted successfully !
|
||||
message.dist.discard.success = All distributions selected for delete are discarded successfully !
|
||||
message.target.delete.success = All selected targets are deleted successfully !
|
||||
message.target.discard.success = All targets selected for delete are discarded successfully !
|
||||
message.software.discard.success = All software modules selected for delete are discarded successfully !
|
||||
message.software.type.discard.success = All software moduleTypes selected for delete are discarded successfully !
|
||||
message.assign.software.discard.success = All software moduleTypes selected for assign are discarded successfully !
|
||||
message.software.delete.success = All software modules selected for delete are deleted successfully !
|
||||
message.software.type.delete.success = All software modules types selected for delete are deleted successfully !
|
||||
message.dist.set.type.deleted.success = {0} DistributionSetType deleted successfully !
|
||||
message.new.dist.save.success = {0} - {1} saved successfully
|
||||
message.dist.update.success = {0} - {1} updated successfully
|
||||
message.duplicate.dist = Distribution set [{0}] or version [{1}] must be unique, entered value already exists.
|
||||
message.error.view = No such view: {0}
|
||||
message.accessdenied.view = No access to view: {0}
|
||||
message.no.data = No data available
|
||||
message.target.assignment = {0} Assignment(s) done
|
||||
message.target.deleted = {0} Target(s) deleted
|
||||
message.dist.deleted = {0} Distribution set(s) deleted
|
||||
message.tag.update.mandatory = Please select the Tag to update
|
||||
message.tag.duplicate.check = {0} already exists, please enter another value
|
||||
message.type.key.duplicate.check = Distribution type with key {0} already exists, please give another value
|
||||
message.type.key.swmodule.duplicate.check = Software Module type with key {0} already exists, please give another value
|
||||
message.no.action.history = No action history is available for the target : {0}
|
||||
message.no.available = --No messages available--
|
||||
message.no.actionupdateds.available = No other updates available for this action
|
||||
message.mandatory.check = Mandatory details are missing
|
||||
message.target.duplicate.check = Target [ {0} ] must be unique, entered value already exists.
|
||||
message.permission.insufficient = Insufficient permissions to perform this action.
|
||||
message.error.temp = The operation cannot be fulfilled due to {0}. Please contact administrator
|
||||
message.dist.alreadyassigned = {0} : {1} is already assigned/installed, cannot be updated
|
||||
message.dist.tag.alreadyassigned = {0} : {1} is already assigned/installed, cannot assign/un-assign to tag
|
||||
message.dists.unassign.tag.alreadyassigned = Few of the DistributionSet's are already assigned to Target, those cannot be unassigned from Tag"
|
||||
message.dists.assign.tag.alreadyassigned = Few of the DistributionSet's are already assigned to Target, those cannot be assigned to Tag"
|
||||
message.dists.tag.assigned = {0} DistributionSet's assigned to Tag {1}
|
||||
message.dists.tag.unassigned = {0} DistributionSet's un-assigned from Tag {1}
|
||||
message.dist.no.operation = {0} - already assigned/installed, No operation
|
||||
message.sm.delete.confirm = Are you sure that you want to delete the selected {0} Software Module?
|
||||
message.error.os.softmodule = Please select the OS to delete
|
||||
message.error.ah.softmodule = Please select the Application to delete
|
||||
message.error.softmodule.deleted = The selected Software Module is already deleted
|
||||
message.cancel.action = Cancel
|
||||
message.cancel.action.success = Action cancelled successfully !
|
||||
message.cancel.action.failed = Unable to cancel the action !
|
||||
message.cancel.action.confirm = Are you sure that you want to cancel this action?
|
||||
message.target.alreadyAssigned = {0} Target(s) were already assigned
|
||||
message.dist.alreadyAssigned = {0} Distribution Set(s) were already assigned
|
||||
message.force.action = Force
|
||||
message.force.action.confirm = Are you sure that you want to force this action?
|
||||
message.force.action.success = Action forced successfully !
|
||||
message.distribution.no.update = distribution {0} set is already assigned to targets and cannot be changed
|
||||
message.action.not.allowed = Action not allowed
|
||||
message.action.did.not.work = Action did not work. Please try again.
|
||||
message.onlyone.distribution.assigned = Only one distribution set can be assigned
|
||||
message.onlyone.distribution.dropallowed = Only one distribution set can be dropped
|
||||
message.error.missing.typename = Missing Type Name
|
||||
message.error.missing.typenameorkey = Missing Type Name or Key or Software Module type
|
||||
message.tag.cannot.be.assigned = Target/DS cannot be assigned to {0}
|
||||
message.no.targets.assiged.fortag = No targets are assigned to tag {0}
|
||||
message.error.missing.tagname = Please select tag name
|
||||
message.type.delete = Please unclick the distribution type {0}, then try to delete
|
||||
message.error.dist.set.type.update= Distribution Set Type is already assigned to targets and cannot be changed
|
||||
message.target.ds.assign.success = Assignments saved successfully !
|
||||
message.no.directory.upload = Directory upload is not supported
|
||||
|
||||
message.delete.filter.confirm = Are you sure that you want to delete custom filter?
|
||||
message.delete.filter.success = Custom filter {0} deleted Successfully!
|
||||
message.create.filter.success = Custom filter {0} created Successfully!
|
||||
message.update.filter.success = Custom filter updated Successfully!
|
||||
message.target.filter.validation = Please enter name and query
|
||||
message.target.filter.duplicate = {0} already exists, please enter another value
|
||||
|
||||
# action info
|
||||
action.target.table.selectall = Select all (Ctrl+A)
|
||||
action.target.table.clear = Clear selections
|
||||
|
||||
#reused messages
|
||||
soft.module.jvm =Runtime
|
||||
soft.module.application =Application
|
||||
soft.module.os =OS
|
||||
|
||||
#Artifact upload
|
||||
message.error.noFileSelected = No file selected for upload
|
||||
message.error.noProvidedName = Please provide custom file name
|
||||
message.error.noSwModuleSelected = Please select a Software Module
|
||||
message.no.duplicateFiles = Duplicate files selected
|
||||
message.no.duplicateFile = Duplicate file selected :
|
||||
message.delete.artifact = Are you sure that you want to delete artifact {0} ?
|
||||
message.duplicate.filename = Duplicate file name
|
||||
message.swModule.deleted = {0} Software Module(s) deleted
|
||||
message.upload.failed = Streaming Failed
|
||||
message.uploadedfile.size.exceeded = File size exceeded .Allowed size {0} bytes
|
||||
message.uploadedfile.aborted = File upload aborted
|
||||
message.file.not.found = File not found
|
||||
message.abort.upload = Are you sure that you want to abort the upload?
|
||||
|
||||
|
||||
upload.swModuleTable.header = Software Module
|
||||
upload.selectedfile.name = file selected for upload
|
||||
upload.file.name = File name
|
||||
upload.sha1 = SHA1 checksum
|
||||
upload.md5 = MD5 checksum
|
||||
upload.last.modified.date=Last modified date
|
||||
upload.failed = Failed
|
||||
upload.success = Success
|
||||
upload.caption.add.new.swmodule = Configure New Software Module
|
||||
upload.caption.delete.swmodule = Configure Delete Software Module
|
||||
upload.swmodule.type = Type
|
||||
upload.artifact.alreadyExists = Artifact will be overridden as the given name already exists
|
||||
upload.size = Size(B)
|
||||
upload.validation = Validation
|
||||
upload.reason = Reason
|
||||
upload.action = Action
|
||||
upload.result.status = Upload status
|
||||
upload.file = Upload File
|
||||
upload.caption.update.swmodule = Update Software Module
|
||||
caption.tab.details = Details
|
||||
caption.tab.description = Description
|
||||
|
||||
caption.delete.artifact.confirmbox = Confirm Artifact Delete Action
|
||||
|
||||
|
||||
#Manage distributions view
|
||||
label.drop.dist.delete.area = Drop here<br>to delete
|
||||
caption.assign.software.dist.accordion.tab = Assign Software Modules
|
||||
message.software.assignment = {0} Software Module(s) Assignment(s) done
|
||||
message.dist.inuse = {0} Distribution is already assigned to target
|
||||
message.software.dist.already.assigned = {0} Distribution already has Software Module {1}
|
||||
message.software.dist.type.notallowed = {0} Software Module type can not assign to Distribution {1}
|
||||
message.target.assigned = {0} is assigned to {1}
|
||||
message.dist.type.delete = {0} DistributionType(s) Deleted successfully.
|
||||
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.discard.success = All Distributions 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} ?
|
||||
message.error.notification.ds.target.assigned = Distribution set {0}:{1} is already assigned to targets and cannot be changed
|
||||
|
||||
# Login view
|
||||
notification.login.title=Welcome to Bosch IoT Software Provisioning.
|
||||
notification.login.description=Please login with your Bosch Identity Management credentials.
|
||||
notification.login.failed.title=Login failed!
|
||||
notification.login.failed.description=Login with the given credentials failed.
|
||||
notification.login.failed.credentialsexpired.title=Password Expired!
|
||||
notification.login.failed.credentialsexpired.description=Password has been expired or needs to be set initially, please visit the User Management to change or set your password.
|
||||
label.login.tenant=Tenant
|
||||
label.login.username=Username
|
||||
label.login.password=Password
|
||||
button.login.signin=Sign in
|
||||
checkbox.login.rememberme=Remember me
|
||||
|
||||
# Links
|
||||
link.documentation.name=Documentation
|
||||
link.demo.name=Demo
|
||||
link.requestaccount.name=Request Account
|
||||
link.support.name=Support
|
||||
link.usermanagement.name=User Management
|
||||
|
||||
# System Configuration View
|
||||
notification.configuration.save=Saved changes
|
||||
configuration.defaultdistributionset.title=Distribution Set Type
|
||||
configuration.defaultdistributionset.select.label=Select the default Distribution Set type:
|
||||
configuration.savebutton.tooltip=Save Configurations
|
||||
configuration.cancellbutton.tooltip=Cancel Configurations
|
||||
configuration.authentication.title=Authentication Configuration
|
||||
controller.polling.title=Polling Configuration
|
||||
controller.polling.time=Polling Time
|
||||
controller.polling.overduetime=Polling Overdue Time
|
||||
|
||||
#Calendar
|
||||
calendar.year=year
|
||||
calendar.years=years
|
||||
calendar.month=month
|
||||
calendar.months=months
|
||||
calendar.day=day
|
||||
calendar.days=days
|
||||
calendar.hour=hour
|
||||
calendar.hours=hours
|
||||
calendar.minute=minute
|
||||
calendar.minutes=minutes
|
||||
calendar.second=second
|
||||
calendar.seconds=seconds
|
||||
|
||||
header.name = Name
|
||||
header.vendor = Vendor
|
||||
header.version = Version
|
||||
header.description = Description
|
||||
header.createdBy = Created By
|
||||
header.createdDate = Created Date
|
||||
header.modifiedBy = Modified By
|
||||
header.modifiedDate = Modified Date
|
||||
header.delete = Delete
|
||||
header.assigned.ds = Assigned DS
|
||||
header.installed.ds = Installed DS
|
||||
header.status = Status
|
||||
header.target.tags = Tags
|
||||
header.distributionset = Distribution Set
|
||||
header.numberofgroups = No. of groups
|
||||
header.detail.status = Detail status
|
||||
header.total.targets = Total targets
|
||||
header.type = Type
|
||||
header.swmodules = SwModules
|
||||
header.migrations.step=IsRequiredMigrationStep
|
||||
|
||||
header.action=Actions
|
||||
header.action.run=Run
|
||||
header.action.pause=Pause
|
||||
header.action.update=Edit
|
||||
|
||||
header.rolloutgroup.installed.percentage = % Finished
|
||||
header.rolloutgroup.threshold.error = Error threshold
|
||||
header.rolloutgroup.threshold = Trigger threshold
|
||||
|
||||
|
||||
|
||||
header.rolloutgroup.target.date = Date and time
|
||||
header.rolloutgroup.target.message = Messages
|
||||
|
||||
rollout.group.label.target.truncated = {0} targets has been truncated in the list due the target size limit of {1}
|
||||
|
||||
distribution.details.header = Distribution Set
|
||||
target.details.header = Target
|
||||
header.caption.mandatory = Mandatory
|
||||
header.caption.typename = SoftwareModuleType
|
||||
header.caption.softwaremodule = SoftwareModule
|
||||
header.caption.upload.details = Upload details
|
||||
header.key = Key
|
||||
header.value = Value
|
||||
combo.type.tag.name = Type tag name
|
||||
|
||||
label.yes = Yes
|
||||
label.no =No
|
||||
|
||||
#Menu
|
||||
menu.title = Software Provisioning
|
||||
|
||||
|
||||
#Rollout management
|
||||
prompt.number.of.groups = Number of groups
|
||||
prompt.tigger.threshold = Trigger threshold
|
||||
prompt.error.threshold = Error threshold
|
||||
prompt.distribution.set = Distribution Set
|
||||
caption.configure.rollout = Configure Rollout
|
||||
caption.update.rollout = Update Rollout
|
||||
prompt.target.filter = Custom Target Filter
|
||||
message.rollout.nonzero.group.number = Number of groups must be greater than zero
|
||||
message.rollout.max.group.number = Number of groups must not be greater than 500
|
||||
message.rollout.duplicate.check = Rollout [ {0} ] must be unique, entered value already exists.
|
||||
message.correct.invalid.value = Please correct invalid values
|
||||
message.enter.number = Please enter number
|
||||
message.rollout.field.value.range = Value should be in range {0} to {1}
|
||||
message.rollout.started = Rollout {0} started successfully
|
||||
message.rollout.paused = Rollout {0} paused successfully
|
||||
message.rollout.resumed = Rollout {0} resumed successfully
|
||||
message.rollout.noofgroups.or.targetfilter.missing = Please enter number of groups and select target filter
|
||||
message.rollouts = Rollouts
|
||||
label.target.per.group = Targets per group :
|
||||
message.dist.already.assigned = Distribution {0} is already assigned to target
|
||||
message.error.creating.rollout = Server error. Error creating Rollout. Please contact the administrator
|
||||
message.error.starting.rollout = Server error. Error starting Rollout. Please contact the administrator
|
||||
|
||||
#Target Filter Management
|
||||
breadcrumb.target.filter.custom.filters = Custom Filters
|
||||
Reference in New Issue
Block a user