mirror of
https://github.com/getredash/redash.git
synced 2025-12-25 01:03:20 -05:00
#121: editing query name, description, ttl triggers save
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
var route = $route.current;
|
||||
|
||||
$scope.dirty = undefined;
|
||||
$scope.isOwner = false;
|
||||
$scope.canEdit = false;
|
||||
|
||||
$scope.isSourceVisible = route.locals.viewSource;
|
||||
@@ -201,8 +202,8 @@
|
||||
$scope.dirty = false;
|
||||
$scope.queryResult = $scope.query.getQueryResult();
|
||||
|
||||
$scope.canEdit =
|
||||
$scope.isSourceVisible && currentUser.canEdit($scope.query);
|
||||
$scope.isOwner = currentUser.canEdit($scope.query);
|
||||
$scope.canEdit = $scope.isSourceVisible && $scope.isOwner;
|
||||
|
||||
} else {
|
||||
// new query
|
||||
|
||||
@@ -216,7 +216,8 @@
|
||||
scope: {
|
||||
value: '=',
|
||||
ignoreBlanks: '=',
|
||||
editable: '='
|
||||
editable: '=',
|
||||
done: '='
|
||||
},
|
||||
template: function(tElement, tAttrs) {
|
||||
var elType = tAttrs.editor || 'input';
|
||||
@@ -252,13 +253,27 @@
|
||||
inputElement[0].focus();
|
||||
};
|
||||
|
||||
$(inputElement).blur(function() {
|
||||
if ($scope.ignoreBlanks && _.isEmpty($scope.value)) {
|
||||
$scope.value = $scope.oldValue;
|
||||
function save() {
|
||||
if ($scope.editing) {
|
||||
if ($scope.ignoreBlanks && _.isEmpty($scope.value)) {
|
||||
$scope.value = $scope.oldValue;
|
||||
}
|
||||
$scope.editing = false;
|
||||
element.removeClass('active');
|
||||
|
||||
$scope.done && $scope.done();
|
||||
}
|
||||
$scope.editing = false;
|
||||
element.removeClass('active');
|
||||
})
|
||||
}
|
||||
|
||||
$(inputElement).keydown(function(e) {
|
||||
// 'return' or 'enter' key pressed
|
||||
// allow 'shift' to break lines
|
||||
if (e.which === 13 && !e.shiftKey) {
|
||||
save();
|
||||
}
|
||||
}).blur(function() {
|
||||
save();
|
||||
});
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
@@ -277,7 +277,7 @@
|
||||
};
|
||||
|
||||
Query.prototype.getHash = function() {
|
||||
return [this.name, this.description, this.query, this.ttl].join('!#');
|
||||
return this.query;
|
||||
};
|
||||
|
||||
return Query;
|
||||
|
||||
@@ -26,6 +26,9 @@ a.navbar-brand {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.edit-in-place span {
|
||||
white-space: pre;
|
||||
}
|
||||
.edit-in-place span.editable {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
@@ -3,14 +3,14 @@
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h2>
|
||||
<edit-in-place editable="canEdit" ignore-blanks='true' value="query.name"></edit-in-place>
|
||||
<edit-in-place editable="isOwner" done="saveQuery" ignore-blanks='true' value="query.name"></edit-in-place>
|
||||
|
||||
<span class="pull-right">
|
||||
<button ng-click="toggleSource()" class="btn btn-default" ng-class="{active: isSourceVisible}">Source</button>
|
||||
</span>
|
||||
</h2>
|
||||
<em>
|
||||
<edit-in-place editable="canEdit" editor="textarea" placeholder="No description" ignore-blanks='false' value="query.description"></edit-in-place>
|
||||
<edit-in-place editable="isOwner" done="saveQuery" editor="textarea" placeholder="No description" ignore-blanks='false' value="query.description"></edit-in-place>
|
||||
</em>
|
||||
|
||||
|
||||
@@ -106,7 +106,7 @@
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<select ng-disabled="!canEdit" ng-model="query.ttl" ng-options="c.value as c.name for c in refreshOptions"></select>
|
||||
<select ng-disabled="!isOwner" ng-model="query.ttl" ng-change="saveQuery()" ng-options="c.value as c.name for c in refreshOptions"></select>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
|
||||
Reference in New Issue
Block a user