Adding in the delete api and the delete and create UI.

This commit is contained in:
Charlton Austin 2016-10-11 15:09:38 -04:00
parent 43063272bb
commit 97d644d95d
12 changed files with 277 additions and 12 deletions

View file

@ -0,0 +1,90 @@
<!-- Messages tab -->
<div class="global-message-tab-element">
<div class="cor-loader" ng-show="!messages"></div>
<div ng-show="messages">
<div class="manager-header" header-title="Messages">
<button class="create-button btn btn-primary" ng-click="showCreateMessage()">
<i class="fa fa-plus" style="margin-right: 6px;"></i>Create Message
</button>
</div>
<table class="cor-table">
<thead>
<td>Message</td>
<td style="options-cols"></td>
</thead>
<tr ng-repeat="message in messages" class="user-row">
<td>
{{ message.content }}
</td>
<td class="options-col">
<span class="cor-options-menu">
<span class="cor-option" option-click="showDeleteMessage(message.uuid)">
<i class="fa fa-times"></i> Delete Message
</span>
</span>
</td>
</tr>
</table>
</div><!-- Messages tab -->
<!-- Modal delete message dialog -->
<div class="co-dialog modal fade" id="confirmDeleteMessageModal">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title">Delete Message?</h4>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-danger" ng-click="deleteMessage(messageToDelete)">Delete Message</button>
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
<!-- Modal create message dialog -->
<div class="co-dialog modal fade" id="createMessageModal">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title">Create new message</h4>
</div>
<form name="createMessageForm" ng-submit="createNewMessage()">
<div class="modal-body" ng-show="createdMessage">
<table class="table">
<thead>
<th>Message</th>
</thead>
<tr class="user-row">
<td>{{ createdMessage.content }}</td>
</tr>
</table>
</div>
<div class="modal-body" ng-show="creatingMessage">
<div class="cor-loader"></div>
</div>
<div class="modal-body" ng-show="!creatingMessage && !createdMessage">
<div class="form-group">
<label>Message</label>
<input class="form-control" type="text" ng-model="newMessage.content" required>
</div>
</div>
<div class="modal-footer" ng-show="createdMessage">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
<div class="modal-footer" ng-show="!creatingMessage && !createdMessage">
<button class="btn btn-primary" type="submit" ng-disabled="!createMessageForm.$valid">
Create Message
</button>
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
</div>
</form>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
</div>

View file

@ -0,0 +1,81 @@
/**
* An element for managing global messages.
*/
angular.module('quay').directive('globalMessageTab', function () {
var directiveDefinitionObject = {
priority: 0,
templateUrl: '/static/directives/global-message-tab.html',
replace: false,
transclude: true,
restrict: 'C',
scope: {
'isEnabled': '=isEnabled'
},
controller: function ($scope, $element, ApiService) {
$scope.newMessage = {};
$scope.creatingMessage = false;
$scope.showCreateMessage = function () {
$scope.createdMessage = null;
$('#createMessageModal').modal('show');
};
$scope.createNewMessage = function () {
$scope.creatingMessage = true;
$scope.createdMessage = null;
var errorHandler = ApiService.errorDisplay('Cannot create message', function () {
$scope.creatingMessage = false;
$('#createMessageModal').modal('hide');
});
var data = {
message: $scope.newMessage
};
ApiService.createMessages(data, null).then(function (resp) {
$scope.creatingMessage = false;
$scope.createdMessage = {content: $scope.newMessage.content};
$scope.newMessage = {};
$scope.loadMessageInternal();
}, errorHandler)
};
$scope.showDeleteMessage = function (uuid) {
$scope.messageToDelete = uuid;
$('#confirmDeleteMessageModal').modal({});
};
$scope.deleteMessage = function (uuid) {
$('#confirmDeleteMessageModal').modal('hide');
ApiService.deleteGlobalMessage(null, {uuid: uuid}).then(function (resp) {
$scope.loadMessageInternal();
}, ApiService.errorDisplay('Can not delete message'));
};
$scope.loadMessageOfTheDay = function () {
if ($scope.messages) {
return;
}
$scope.loadMessageInternal();
};
$scope.loadMessageInternal = function () {
ApiService.getMessages().then(function (resp) {
$scope.messages = resp['messages'];
}, function (resp) {
$scope.messages = [];
$scope.messagesErrors = ApiService.getErrorMessage(resp);
});
};
$scope.$watch('isEnabled', function (value) {
if (value) {
$scope.loadMessageInternal();
}
});
}
};
return directiveDefinitionObject;
});

View file

@ -31,8 +31,12 @@
$scope.csrf_token = encodeURIComponent(window.__token);
$scope.currentConfig = null;
$scope.serviceKeysActive = false;
$scope.globalMessagesActive = false;
$scope.takeOwnershipInfo = null;
$scope.loadMessageOfTheDay = function () {
$scope.globalMessagesActive = true;
};
$scope.configurationSaved = function(config) {
$scope.currentConfig = config;
$scope.requiresRestart = true;
@ -69,7 +73,7 @@
var errorHandler = ApiService.errorDisplay('Cannot load system logs. Please contact support.',
function() {
callback(false);
})
});
ApiService.getSystemLogs(null, params, /* background */true).then(function(resp) {
$scope.debugLogs = resp['logs'];
@ -95,7 +99,7 @@
ApiService.getChangeLog().then(function(resp) {
$scope.changeLog = resp;
}, ApiService.errorDisplay('Cannot load change log. Please contact support.'))
}
};
$scope.loadUsageLogs = function() {
$scope.logsCounter++;

View file

@ -41,6 +41,10 @@
tab-init="loadConfig()">
<i class="fa fa-cog"></i>
</span>
<span class="cor-tab hidden-xs" tab-title="Globally visible user messages" tab-target="#message-of-the-day"
tab-init="loadMessageOfTheDay()">
<i class="fa fa-newspaper-o"></i>
</span>
</div> <!-- /cor-tabs -->
<div class="cor-tab-content">
@ -50,6 +54,12 @@
configuration-saved="configurationSaved(config)"></div>
</div>
<!-- Messages tab -->
<div id="message-of-the-day" class="tab-pane">
<div class="global-message-tab" is-enabled="globalMessagesActive"></div>
</div> <!-- Messages tab -->
<!-- Service keys tab -->
<div id="servicekeys" class="tab-pane">
<div class="service-keys-manager" is-enabled="serviceKeysActive"></div>
@ -269,7 +279,7 @@
</div><!-- /.modal -->
<!-- Modal message dialog -->
<!-- Modal create user dialog -->
<div class="co-dialog modal fade" id="createUserModal">
<div class="modal-dialog">
<div class="modal-content">