Commit 7d25d6f1 by Torkel Ödegaard

progress on tag selection in variable dropdown

parent 0bd50c06
...@@ -95,6 +95,12 @@ function (angular, app, _) { ...@@ -95,6 +95,12 @@ function (angular, app, _) {
scope.search = {query: '', options: scope.options}; scope.search = {query: '', options: scope.options};
scope.selectedValuesCount = currentValues.length; scope.selectedValuesCount = currentValues.length;
if (!scope.tags) {
scope.tags = _.map(variable.tags, function(value) {
return { text: value, selected: false };
});
}
scope.openDropdown(); scope.openDropdown();
}; };
...@@ -158,11 +164,15 @@ function (angular, app, _) { ...@@ -158,11 +164,15 @@ function (angular, app, _) {
setAllExceptCurrentTo(false); setAllExceptCurrentTo(false);
} }
scope.selectionsChanged(option, commitChange);
};
scope.selectionsChanged = function(defaultItem, commitChange) {
var selected = _.filter(scope.options, {selected: true}); var selected = _.filter(scope.options, {selected: true});
if (selected.length === 0) { if (selected.length === 0) {
option.selected = true; defaultItem.selected = true;
selected = [option]; selected = [defaultItem];
} }
if (selected.length > 1 && selected.length !== scope.options.length) { if (selected.length > 1 && selected.length !== scope.options.length) {
...@@ -177,6 +187,18 @@ function (angular, app, _) { ...@@ -177,6 +187,18 @@ function (angular, app, _) {
value: _.pluck(selected, 'value'), value: _.pluck(selected, 'value'),
}; };
var valuesNotInTag = _.filter(selected, function(test) {
for (var i = 0; i < scope.selectedTags.length; i++) {
var tag = scope.selectedTags[i];
if (_.indexOf(tag.values, test.value) !== -1) {
return false;
}
}
return true;
});
variable.current.text = _.pluck(valuesNotInTag, 'text').join(', ');
scope.selectedValuesCount = variable.current.value.length; scope.selectedValuesCount = variable.current.value.length;
// only single value // only single value
...@@ -189,6 +211,27 @@ function (angular, app, _) { ...@@ -189,6 +211,27 @@ function (angular, app, _) {
} }
}; };
scope.selectTag = function(tag) {
tag.selected = !tag.selected;
if (!tag.values) {
if (tag.text === 'backend') {
tag.values = ['backend_01', 'backend_02', 'backend_03', 'backend_04'];
} else {
tag.values = ['web_server_01', 'web_server_02', 'web_server_03', 'web_server_04'];
}
console.log('querying for tag values');
}
_.each(scope.options, function(option) {
if (_.indexOf(tag.values, option.value) !== -1) {
option.selected = tag.selected;
}
});
scope.selectedTags = _.filter(scope.tags, {selected: true});
scope.selectionsChanged(scope.options[0], false);
};
scope.updateLinkText = function() { scope.updateLinkText = function() {
scope.labelText = variable.label || '$' + variable.name; scope.labelText = variable.label || '$' + variable.name;
scope.linkText = variable.current.text; scope.linkText = variable.current.text;
......
...@@ -5,6 +5,10 @@ ...@@ -5,6 +5,10 @@
<div style="position: relative; display: inline-block"> <div style="position: relative; display: inline-block">
<a ng-click="show()" class="variable-value-link tight-form-item"> <a ng-click="show()" class="variable-value-link tight-form-item">
{{linkText}} {{linkText}}
<span class="label-tag" ng-repeat="tag in selectedTags" tag-color-from-name="tag.text">
{{tag.text}}
&nbsp;&nbsp;<i class="fa fa-tag"></i>&nbsp;
</span>
<i class="fa fa-caret-down"></i> <i class="fa fa-caret-down"></i>
</a> </a>
<input type="text" class="tight-form-clear-input input-small" style="display: none" ng-keydown="keyDown($event)" ng-model="search.query" ng-change="queryChanged()" ></input> <input type="text" class="tight-form-clear-input input-small" style="display: none" ng-keydown="keyDown($event)" ng-model="search.query" ng-change="queryChanged()" ></input>
...@@ -22,9 +26,9 @@ ...@@ -22,9 +26,9 @@
</div> </div>
<div class="variable-options-column" ng-if="variable.tags.length"> <div class="variable-options-column" ng-if="variable.tags.length">
<div class="variable-options-column-header" ng-if="variable.tags.length">Tags</div> <div class="variable-options-column-header" ng-if="variable.tags.length">Tags</div>
<a class="variable-option-tag pointer" ng-repeat="tag in variable.tags" ng-click="selectTag(option, $event)"> <a class="variable-option-tag pointer" ng-repeat="tag in tags" ng-click="selectTag(tag, $event)" ng-class="{'selected': tag.selected}">
<span class="fa fa-fw variable-option-icon"></span> <span class="fa fa-fw variable-option-icon"></span>
<span class="label-tag" tag-color-from-name="tag">{{tag}}&nbsp;&nbsp;<i class="fa fa-tag"></i>&nbsp;</span> <span class="label-tag" tag-color-from-name="tag.text">{{tag.text}}&nbsp;&nbsp;<i class="fa fa-tag"></i>&nbsp;</span>
</a> </a>
</div> </div>
</div> </div>
......
...@@ -82,7 +82,6 @@ function (angular, _) { ...@@ -82,7 +82,6 @@ function (angular, _) {
}; };
$scope.update = function() { $scope.update = function() {
$scope.current.tags = [];
if ($scope.isValid()) { if ($scope.isValid()) {
$scope.runQuery().then(function() { $scope.runQuery().then(function() {
$scope.reset(); $scope.reset();
......
...@@ -542,7 +542,7 @@ div.flot-text { ...@@ -542,7 +542,7 @@ div.flot-text {
background-color: @purple; background-color: @purple;
color: darken(@white, 5%); color: darken(@white, 5%);
white-space: nowrap; white-space: nowrap;
border-radius: 2px; border-radius: 3px;
text-shadow: none; text-shadow: none;
font-size: 13px; font-size: 13px;
padding: 2px 6px; padding: 2px 6px;
......
...@@ -39,6 +39,9 @@ ...@@ -39,6 +39,9 @@
.variable-value-link { .variable-value-link {
font-size: 16px; font-size: 16px;
padding-right: 10px; padding-right: 10px;
.label-tag {
margin: 0 5px;
}
} }
.variable-value-dropdown { .variable-value-dropdown {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment