LT-67 Storing the activeServer in user's profile

This commit is contained in:
Bruno Alves de Faria 2016-06-01 14:50:17 -03:00 committed by Erik Ziegler
parent 1ca585bfb0
commit 9bf96f24d7
6 changed files with 56 additions and 19 deletions

View File

@ -54,7 +54,8 @@ var getInstanceRetrievalParams = function(studyInstanceUID, seriesInstanceUID) {
}; };
Meteor.startup(function() { Meteor.startup(function() {
if (!Meteor.settings.servers.dimse) return; if (!Meteor.settings.servers.dimse || !Meteor.settings.servers.dimse.length) return;
// TODO: [custom-servers] use active server and check if type is DIMSE
var peers = Meteor.settings.servers.dimse[0].peers; var peers = Meteor.settings.servers.dimse[0].peers;
console.log('Adding DIMSE peers'); console.log('Adding DIMSE peers');
if (peers && peers.length) { if (peers && peers.length) {

View File

@ -19,7 +19,7 @@ Template.serverInformationForm.events({
submit: function(event, instance) { submit: function(event, instance) {
event.preventDefault(); event.preventDefault();
var formData = FormUtils.getFormData(instance.data.$form); var formData = FormUtils.getFormData(instance.data.$form);
Meteor.call('saveServer', formData, function(error) { Meteor.call('serverSave', formData, function(error) {
if (error) { if (error) {
// TODO: check for errors: not-authorized, data-write // TODO: check for errors: not-authorized, data-write
console.log('>>>>ERROR', error); console.log('>>>>ERROR', error);

View File

@ -14,6 +14,13 @@
<td>{{this.type}}</td> <td>{{this.type}}</td>
<td class="text-right"> <td class="text-right">
<div class="btn-group" role="group" aria-label="Actions"> <div class="btn-group" role="group" aria-label="Actions">
<button class="btn btn-sm btn-default js-use-server" title="Use this server" disabled="{{#if isActive this}}disabled{{/if}}">
{{#if isActive this}}
<i class="fa fa-check-square-o"></i>
{{else}}
<i class="fa fa-square-o"></i>
{{/if}}
</button>
<button class="btn btn-sm btn-default js-edit-server" title="Edit"> <button class="btn btn-sm btn-default js-edit-server" title="Edit">
<i class="fa fa-pencil"></i> <i class="fa fa-pencil"></i>
</button> </button>

View File

@ -1,4 +1,7 @@
Template.serverInformationList.helpers({ Template.serverInformationList.helpers({
isActive: function(server) {
return server._id === Meteor.user().profile.activeServer;
},
servers: function() { servers: function() {
return Servers.find().fetch(); return Servers.find().fetch();
} }
@ -14,11 +17,15 @@ Template.serverInformationList.events({
}, },
'click .js-remove-server': function(event, instance) { 'click .js-remove-server': function(event, instance) {
var id = this._id; var id = this._id;
Meteor.call('removeServer', this._id, function(error) { Meteor.call('serverRemove', this._id, function(error) {
if (error) { // TODO: [custom-servers] check for errors: not-authorized, data-write
// TODO: check for errors: not-authorized, data-write });
console.log('>>>>ERROR', error); },
} 'click .js-use-server': function(event, instance) {
console.debug('>>>>clicked');
var id = this._id;
Meteor.call('serverSetActive', this._id, function(error) {
// TODO: [custom-servers] check for errors: not-authorized, data-write
}); });
} }
}); });

View File

@ -11,13 +11,22 @@ Meteor.startup(function() {
}); });
Meteor.methods({ class ServersControl {
saveServer: function(serverSettings) { static validateUser() {
if (!Meteor.userId()) { if (!Meteor.userId()) {
throw new Meteor.Error('not-authorized'); throw new Meteor.Error('not-authorized');
} }
}
static writeCallback(error, affected) {
if (error) {
throw new Meteor.Error('data-write', error);
}
}
static save(serverSettings) {
this.validateUser();
var query = { var query = {
_id: serverSettings._id _id: serverSettings._id
}; };
@ -29,21 +38,34 @@ Meteor.methods({
delete serverSettings._id; delete serverSettings._id;
} }
var callback = function(error, affected) { return Servers.update(query, serverSettings, options, this.writeCallback);
if (error) { }
throw new Meteor.Error('data-write', error);
}
static setActive(serverId) {
this.validateUser();
var query = {
_id: Meteor.userId()
}; };
var data = {
$set: {
'profile.activeServer': serverId
}
};
Accounts.users.update(query, data, this.writeCallback);
}
Servers.update(query, serverSettings, options, callback); static remove(serverId) {
}, this.validateUser();
removeServer: function(serverId) {
var query = { var query = {
_id: serverId _id: serverId
}; };
Servers.remove(query, true); return Servers.remove(query, this.writeCallback);
} }
}
Meteor.methods({
serverSave: serverSettings => ServersControl.save(serverSettings),
serverSetActive: serverId => ServersControl.setActive(serverId),
serverRemove: serverId => ServersControl.remove(serverId)
}); });

View File

@ -31,7 +31,7 @@ function resultDataToStudyMetadata(resultData) {
seriesList.push(series); seriesList.push(series);
} }
// TODO: Check which peer it should point to | brunoalvesdefaria // TODO: [custom-servers] Check which peer it should point to
var server = Meteor.settings.servers.dimse[0].peers[0]; var server = Meteor.settings.servers.dimse[0].peers[0];
var host = Meteor.settings.servers.dimse.host, var host = Meteor.settings.servers.dimse.host,
port = Meteor.settings.servers.dimse.port; port = Meteor.settings.servers.dimse.port;