This is an automated email from the ASF dual-hosted git repository. volodymyr pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/drill.git
commit 5a8e6d782ace8fe8f3a772b2d05ea5380d7756d3 Author: Kunal Khatua <[email protected]> AuthorDate: Wed Nov 14 22:28:48 2018 -0800 DRILL-6668: In Web UI, highlight options that are not default values This commit introduces a new button on the options page that allows a user to reset an option to its system default value. To simplify things, a tooltip is shown when the mouse hovers over the button. If the option value is already default, the button is disabled. Currently, the Update button redirects to /option/optionName . This change reuses what we already are using to set the default (using AJAX) and auto-refreshing Switch [Default] label to [Reset] Patch To Pass StatusResourcesTest closes #1543 --- .../org/apache/drill/exec/server/rest/StatusResources.java | 11 +++++++++-- exec/java-exec/src/main/resources/rest/options.ftl | 8 ++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/StatusResources.java b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/StatusResources.java index e6b116c..1ebef31 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/StatusResources.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/StatusResources.java @@ -90,7 +90,7 @@ public class StatusResources { OptionList optionList = internal ? optionManager.getInternalOptionList(): optionManager.getPublicOptionList(); for (OptionValue option : optionList) { - options.add(new OptionWrapper(option.name, option.getValue(), option.accessibleScopes, option.kind, option.scope)); + options.add(new OptionWrapper(option.name, option.getValue(), optionManager.getDefault(option.name).getValue().toString(), option.accessibleScopes, option.kind, option.scope)); } Collections.sort(options, new Comparator<OptionWrapper>() { @@ -171,6 +171,7 @@ public class StatusResources { private String name; private Object value; + private String defaultValue; private OptionValue.AccessibleScopes accessibleScopes; private String kind; private String optionScope; @@ -178,11 +179,13 @@ public class StatusResources { @JsonCreator public OptionWrapper(@JsonProperty("name") String name, @JsonProperty("value") Object value, + @JsonProperty("defaultValue") String defaultValue, @JsonProperty("accessibleScopes") OptionValue.AccessibleScopes type, @JsonProperty("kind") Kind kind, @JsonProperty("optionScope") OptionValue.OptionScope scope) { this.name = name; this.value = value; + this.defaultValue = defaultValue; this.accessibleScopes = type; this.kind = kind.name(); this.optionScope = scope.name(); @@ -201,6 +204,10 @@ public class StatusResources { return value; } + public String getDefaultValue() { + return defaultValue; + } + public OptionValue.AccessibleScopes getAccessibleScopes() { return accessibleScopes; } @@ -215,7 +222,7 @@ public class StatusResources { @Override public String toString() { - return "OptionWrapper{" + "name='" + name + '\'' + ", value=" + value + ", accessibleScopes=" + accessibleScopes + ", kind='" + kind + '\'' + ", scope='" + optionScope + '\'' +'}'; + return "OptionWrapper{" + "name='" + name + '\'' + ", value=" + value + ", default=" + defaultValue + ", accessibleScopes=" + accessibleScopes + ", kind='" + kind + '\'' + ", scope='" + optionScope + '\'' +'}'; } } } diff --git a/exec/java-exec/src/main/resources/rest/options.ftl b/exec/java-exec/src/main/resources/rest/options.ftl index 085fb45..7ac8a2e 100644 --- a/exec/java-exec/src/main/resources/rest/options.ftl +++ b/exec/java-exec/src/main/resources/rest/options.ftl @@ -21,6 +21,11 @@ <#macro page_head> <script type="text/javascript" language="javascript" src="/static/js/jquery.dataTables-1.10.16.min.js"> </script> <script type="text/javascript" language="javascript" src="/static/js/dataTables.colVis-1.1.0.min.js"></script> + <script> + function resetToDefault(optionName, optionValue, optionKind) { + $.post("/option/"+optionName, {kind: optionKind, name: optionName, value: optionValue}, function (status) { location.reload(true); } ); + } + </script> <!-- List of Option Descriptions --> <script src="/dynamic/options.describe.js"></script> <link href="/static/css/dataTables.colVis-1.1.0.min.css" rel="stylesheet"> @@ -85,6 +90,9 @@ table.sortable thead .sorting_desc { background-image: url("/static/img/black-de </#if> <div class="input-group-btn"> <button class="btn btn-default" type="submit">Update</button> + <button class="btn btn-default" onClick="resetToDefault('${option.getName()}','${option.getDefaultValue()}', '${option.getKind()}')" type="button" + <#if option.getDefaultValue() == option.getValueAsString()>disabled="true" style="pointer-events:none" <#else> + title="Reset to ${option.getDefaultValue()}"</#if>>Reset</button> </div> </div> </div>
