Add component ParamValuesLabel to display build parameter values

This commit is contained in:
Robin Shen 2019-12-01 22:48:39 +08:00
parent decd0ea22e
commit e7a13f3d00
4 changed files with 52 additions and 46 deletions

View File

@ -519,25 +519,21 @@ public class Build extends AbstractEntity implements Referenceable {
if (!checkedParamNames.add(paramName))
return false;
ParamSpec paramSpec = getJob().getParamSpecMap().get(paramName);
if (paramSpec != null) {
if (paramSpec.getShowCondition() != null) {
Input dependentInput = getParamInputs().get(paramSpec.getShowCondition().getInputName());
Preconditions.checkNotNull(dependentInput);
String value;
if (!dependentInput.getValues().isEmpty())
value = dependentInput.getValues().iterator().next();
else
value = null;
if (paramSpec.getShowCondition().getValueMatcher().matches(value))
return isParamVisible(dependentInput.getName(), checkedParamNames);
else
return false;
} else {
return true;
}
ParamSpec paramSpec = Preconditions.checkNotNull(getJob().getParamSpecMap().get(paramName));
if (paramSpec.getShowCondition() != null) {
Input dependentInput = getParamInputs().get(paramSpec.getShowCondition().getInputName());
Preconditions.checkNotNull(dependentInput);
String value;
if (!dependentInput.getValues().isEmpty())
value = dependentInput.getValues().iterator().next();
else
value = null;
if (paramSpec.getShowCondition().getValueMatcher().matches(value))
return isParamVisible(dependentInput.getName(), checkedParamNames);
else
return false;
} else {
return false;
return true;
}
}

View File

@ -0,0 +1,27 @@
package io.onedev.server.web.component.build;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.Model;
import io.onedev.commons.utils.StringUtils;
import io.onedev.server.buildspec.job.paramspec.ParamSpec;
import io.onedev.server.util.Input;
import io.onedev.server.util.inputspec.SecretInput;
@SuppressWarnings("serial")
public class ParamValuesLabel extends Label {
public ParamValuesLabel(String id, Input param) {
super(id);
if (param.getType().equals(ParamSpec.SECRET)) {
setDefaultModel(Model.of(SecretInput.MASK));
} else if (!param.getValues().isEmpty()) {
setDefaultModel(Model.of(StringUtils.join(param.getValues(), ",")));
} else {
setDefaultModel(Model.of("<i>Unspecified</i>"));
setEscapeModelStrings(false);
}
}
}

View File

@ -49,7 +49,6 @@ import com.google.common.collect.Sets;
import de.agilecoders.wicket.core.markup.html.bootstrap.common.NotificationPanel;
import io.onedev.commons.utils.StringUtils;
import io.onedev.server.OneDev;
import io.onedev.server.buildspec.job.paramspec.ParamSpec;
import io.onedev.server.entitymanager.BuildManager;
import io.onedev.server.entitymanager.BuildParamManager;
import io.onedev.server.entitymanager.ProjectManager;
@ -63,12 +62,11 @@ import io.onedev.server.search.entity.build.BuildQuery;
import io.onedev.server.util.BuildConstants;
import io.onedev.server.util.Input;
import io.onedev.server.util.SecurityUtils;
import io.onedev.server.util.inputspec.SecretInput;
import io.onedev.server.web.WebConstants;
import io.onedev.server.web.behavior.BuildQueryBehavior;
import io.onedev.server.web.behavior.WebSocketObserver;
import io.onedev.server.web.behavior.clipboard.CopyClipboardBehavior;
import io.onedev.server.web.component.MultilineLabel;
import io.onedev.server.web.component.build.ParamValuesLabel;
import io.onedev.server.web.component.build.status.BuildStatusIcon;
import io.onedev.server.web.component.datatable.DefaultDataTable;
import io.onedev.server.web.component.datatable.LoadableDetachableDataProvider;
@ -557,8 +555,8 @@ public abstract class BuildListPanel extends Panel {
}
});
for (String param: getListParams()) {
columns.add(new AbstractColumn<Build, Void>(Model.of(param)) {
for (String paramName: getListParams()) {
columns.add(new AbstractColumn<Build, Void>(Model.of(paramName)) {
@Override
public String getCssClass() {
@ -566,22 +564,13 @@ public abstract class BuildListPanel extends Panel {
}
@Override
public void populateItem(Item<ICellPopulator<Build>> cellItem, String componentId,
IModel<Build> rowModel) {
public void populateItem(Item<ICellPopulator<Build>> cellItem, String componentId, IModel<Build> rowModel) {
Build build = rowModel.getObject();
if (build.isParamVisible(param)) {
Input input = build.getParamInputs().get(param);
if (input != null) {
if (input.getType().equals(ParamSpec.SECRET))
cellItem.add(new Label(componentId, SecretInput.MASK));
else
cellItem.add(new MultilineLabel(componentId, StringUtils.join(input.getValues(), ",")));
} else {
cellItem.add(new Label(componentId, "<i>Undefined</i>").setEscapeModelStrings(false));
}
} else {
cellItem.add(new Label(componentId, "<i>Undefined</i>").setEscapeModelStrings(false));
}
Input param = build.getParamInputs().get(paramName);
if (param != null && build.isParamVisible(paramName))
cellItem.add(new ParamValuesLabel(componentId, param));
else
cellItem.add(new Label(componentId, "<i>Unspecified</i>").setEscapeModelStrings(false));
}
});

View File

@ -24,9 +24,7 @@ import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.util.time.Duration;
import org.eclipse.jgit.revwalk.RevCommit;
import io.onedev.commons.utils.StringUtils;
import io.onedev.server.OneDev;
import io.onedev.server.buildspec.job.paramspec.ParamSpec;
import io.onedev.server.entitymanager.BuildManager;
import io.onedev.server.git.GitUtils;
import io.onedev.server.model.Build;
@ -36,10 +34,9 @@ import io.onedev.server.search.entity.build.BuildQuery;
import io.onedev.server.util.DateUtils;
import io.onedev.server.util.Input;
import io.onedev.server.util.SecurityUtils;
import io.onedev.server.util.inputspec.SecretInput;
import io.onedev.server.util.userident.UserIdent;
import io.onedev.server.web.behavior.clipboard.CopyClipboardBehavior;
import io.onedev.server.web.component.MultilineLabel;
import io.onedev.server.web.component.build.ParamValuesLabel;
import io.onedev.server.web.component.entity.nav.EntityNavPanel;
import io.onedev.server.web.component.job.JobDefLink;
import io.onedev.server.web.component.link.ViewStateAwarePageLink;
@ -211,10 +208,7 @@ public abstract class BuildSidePanel extends Panel {
protected void populateItem(ListItem<Input> item) {
Input param = item.getModelObject();
item.add(new Label("name", param.getName()));
if (param.getType().equals(ParamSpec.SECRET))
item.add(new Label("value", SecretInput.MASK));
else
item.add(new MultilineLabel("value", StringUtils.join(param.getValues(), ",")));
item.add(new ParamValuesLabel("value", param));
}
@Override