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() {
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;
console.log('Adding DIMSE peers');
if (peers && peers.length) {

View File

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

View File

@ -14,6 +14,13 @@
<td>{{this.type}}</td>
<td class="text-right">
<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">
<i class="fa fa-pencil"></i>
</button>

View File

@ -1,4 +1,7 @@
Template.serverInformationList.helpers({
isActive: function(server) {
return server._id === Meteor.user().profile.activeServer;
},
servers: function() {
return Servers.find().fetch();
}
@ -14,11 +17,15 @@ Template.serverInformationList.events({
},
'click .js-remove-server': function(event, instance) {
var id = this._id;
Meteor.call('removeServer', this._id, function(error) {
if (error) {
// TODO: check for errors: not-authorized, data-write
console.log('>>>>ERROR', error);
}
Meteor.call('serverRemove', this._id, function(error) {
// TODO: [custom-servers] check for errors: not-authorized, data-write
});
},
'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()) {
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 = {
_id: serverSettings._id
};
@ -29,21 +38,34 @@ Meteor.methods({
delete serverSettings._id;
}
var callback = function(error, affected) {
if (error) {
throw new Meteor.Error('data-write', error);
}
return Servers.update(query, serverSettings, options, this.writeCallback);
}
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);
},
removeServer: function(serverId) {
static remove(serverId) {
this.validateUser();
var query = {
_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);
}
// 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 host = Meteor.settings.servers.dimse.host,
port = Meteor.settings.servers.dimse.port;