From 16a302e9798305754779ff4ad4ea561208288ed4 Mon Sep 17 00:00:00 2001 From: Bruno Alves de Faria Date: Sat, 14 May 2016 12:30:11 -0300 Subject: [PATCH] LT-67 Adding form for DIMSE servers --- .../serverInformationDicomWeb.html | 21 +++------ .../serverInformationDimse.html | 43 +++++++++++++++++++ .../serverInformationDimse.js | 28 ++++++++++++ .../serverInformationForm.html | 8 ++-- .../serverInformationFormField.html | 10 +++++ .../lesiontracker/client/helpers/blaze.js | 17 +++++--- .../lesiontracker/client/helpers/logical.js | 34 +++++++-------- .../lesiontracker/client/helpers/string.js | 7 +++ Packages/lesiontracker/client/utils/form.js | 17 +++++--- Packages/lesiontracker/package.js | 4 ++ Packages/lesiontracker/server/servers.js | 6 ++- 11 files changed, 145 insertions(+), 50 deletions(-) create mode 100644 Packages/lesiontracker/client/components/serverInformationModal/serverInformationDimse.html create mode 100644 Packages/lesiontracker/client/components/serverInformationModal/serverInformationDimse.js create mode 100644 Packages/lesiontracker/client/components/serverInformationModal/serverInformationFormField.html create mode 100644 Packages/lesiontracker/client/helpers/string.js diff --git a/Packages/lesiontracker/client/components/serverInformationModal/serverInformationDicomWeb.html b/Packages/lesiontracker/client/components/serverInformationModal/serverInformationDicomWeb.html index 75d7d897a..5efd42467 100644 --- a/Packages/lesiontracker/client/components/serverInformationModal/serverInformationDicomWeb.html +++ b/Packages/lesiontracker/client/components/serverInformationModal/serverInformationDicomWeb.html @@ -1,8 +1,8 @@ - - diff --git a/Packages/lesiontracker/client/components/serverInformationModal/serverInformationDimse.html b/Packages/lesiontracker/client/components/serverInformationModal/serverInformationDimse.html new file mode 100644 index 000000000..c5caeabc5 --- /dev/null +++ b/Packages/lesiontracker/client/components/serverInformationModal/serverInformationDimse.html @@ -0,0 +1,43 @@ + diff --git a/Packages/lesiontracker/client/components/serverInformationModal/serverInformationDimse.js b/Packages/lesiontracker/client/components/serverInformationModal/serverInformationDimse.js new file mode 100644 index 000000000..df1abecae --- /dev/null +++ b/Packages/lesiontracker/client/components/serverInformationModal/serverInformationDimse.js @@ -0,0 +1,28 @@ +Template.serverInformationDimse.onCreated(function() { + var instance = Template.instance(); + instance.peers = new ReactiveVar([]); + instance.autorun(function() { + var currentItem = instance.data.currentItem.get(); + instance.peers.set(currentItem.peers || []); + }); +}); + +Template.serverInformationDimse.onRendered(function() { + var instance = Template.instance(); + instance.autorun(function() { + var mode = instance.data.mode.get(); + if (mode === 'edit') { + var data = instance.data.currentItem.get(); + FormUtils.setFormData(instance.data.$form, data); + } + }); +}); + +Template.serverInformationDimse.events({ + 'click .js-new-peer': function(event, instance) { + event.preventDefault(); + var peers = instance.peers.get(); + peers.push({}); + instance.peers.set(peers); + } +}); diff --git a/Packages/lesiontracker/client/components/serverInformationModal/serverInformationForm.html b/Packages/lesiontracker/client/components/serverInformationModal/serverInformationForm.html index 457d1d923..f598cdafc 100644 --- a/Packages/lesiontracker/client/components/serverInformationModal/serverInformationForm.html +++ b/Packages/lesiontracker/client/components/serverInformationModal/serverInformationForm.html @@ -24,13 +24,13 @@
- {{#if equals serverType.get "dicomWeb"}} + {{#if equals this.serverType.get "dicomWeb"}} {{>serverInformationDicomWeb this}} {{/if}} - {{#if equals serverType.get "dimse"}} - TODO: Print DIMSE form + {{#if equals this.serverType.get "dimse"}} + {{>serverInformationDimse this}} {{/if}} - {{#if serverType.get}} + {{#if this.serverType.get}}
diff --git a/Packages/lesiontracker/client/components/serverInformationModal/serverInformationFormField.html b/Packages/lesiontracker/client/components/serverInformationModal/serverInformationFormField.html new file mode 100644 index 000000000..c2b69a752 --- /dev/null +++ b/Packages/lesiontracker/client/components/serverInformationModal/serverInformationFormField.html @@ -0,0 +1,10 @@ + diff --git a/Packages/lesiontracker/client/helpers/blaze.js b/Packages/lesiontracker/client/helpers/blaze.js index 8f5bc1163..d91219967 100644 --- a/Packages/lesiontracker/client/helpers/blaze.js +++ b/Packages/lesiontracker/client/helpers/blaze.js @@ -1,14 +1,17 @@ -Template.registerHelper("instance", function() { +Template.registerHelper('instance', function() { return Template.instance(); }); -Template.registerHelper("extend", function(object, extendedProperties){ +Template.registerHelper('extend', function() { const result = {}; - for (let i=0; i { - if (result || value instanceof Spacebars.kw) return; - value && (result = value); + _.each(_.initial(arguments, 1), function(value) { + return value && (result = value); }); return result; }); -Template.registerHelper("bool", function(value) { +Template.registerHelper('bool', function(value) { return !!value; }); -Template.registerHelper("equals", function(a, b) { +Template.registerHelper('equals', function(a, b) { return a === b; }); -Template.registerHelper("not", function(value) { +Template.registerHelper('not', function(value) { return !value; }); -Template.registerHelper("and", function() { +Template.registerHelper('and', function() { let result = true; - _.each(arguments, value => value || (result = false)); - return result; -}); - -Template.registerHelper("or", function() { - let result = false; - _.each(arguments, value => { - if (value instanceof Spacebars.kw) return; - value && (result = true); + _.each(_.initial(arguments, 1), function(value) { + return value || (result = false); + }); + return result; +}); + +Template.registerHelper('or', function() { + let result = false; + _.each(_.initial(arguments, 1), function(value) { + return value && (result = true); }); return result; }); diff --git a/Packages/lesiontracker/client/helpers/string.js b/Packages/lesiontracker/client/helpers/string.js new file mode 100644 index 000000000..5fd8240d4 --- /dev/null +++ b/Packages/lesiontracker/client/helpers/string.js @@ -0,0 +1,7 @@ +Template.registerHelper('concat', function() { + let result = ''; + _.each(_.initial(arguments, 1), function(value) { + result += value; + }); + return result; +}); diff --git a/Packages/lesiontracker/client/utils/form.js b/Packages/lesiontracker/client/utils/form.js index 959c6a059..4ac813d3b 100644 --- a/Packages/lesiontracker/client/utils/form.js +++ b/Packages/lesiontracker/client/utils/form.js @@ -39,15 +39,18 @@ class Form { var propertyArray = key.split('.'); var currentObject = nestedObject; while (propertyArray.length) { - var currentProperty = propertyArray.shift(); + var property = propertyArray.shift(); + var isArray = property.slice(-2) === '[]'; + var key = isArray ? property.slice(0, -2) : property; if (!propertyArray.length) { - currentObject[currentProperty] = value; + currentObject[key] = value; } else { - if (!currentObject[currentProperty]) { - currentObject[currentProperty] = {}; + if (!currentObject[key]) { + var dataStructure = isArray ? [] : {}; + currentObject[key] = dataStructure; } - currentObject = currentObject[currentProperty]; + currentObject = currentObject[key]; } } } @@ -63,6 +66,10 @@ class Form { var currentKey = baseKey ? baseKey + '.' + key : key; var currentValue = nestedObject[key]; if (typeof currentValue === 'object') { + if (currentValue instanceof Array) { + currentKey += '[]'; + } + putValues(currentKey, currentValue, resultObject); } else { resultObject[currentKey] = currentValue; diff --git a/Packages/lesiontracker/package.js b/Packages/lesiontracker/package.js index 59222cd93..84c61426e 100644 --- a/Packages/lesiontracker/package.js +++ b/Packages/lesiontracker/package.js @@ -61,6 +61,7 @@ Package.onUse(function(api) { // Spacebars helpers api.addFiles('client/helpers/blaze.js', 'client'); api.addFiles('client/helpers/logical.js', 'client'); + api.addFiles('client/helpers/string.js', 'client'); // Utility classes api.addFiles('client/utils/form.js', 'client'); @@ -191,8 +192,11 @@ Package.onUse(function(api) { api.addFiles('client/components/serverInformationModal/serverInformationDicomWeb.html', 'client'); api.addFiles('client/components/serverInformationModal/serverInformationDicomWeb.js', 'client'); + api.addFiles('client/components/serverInformationModal/serverInformationDimse.html', 'client'); + api.addFiles('client/components/serverInformationModal/serverInformationDimse.js', 'client'); api.addFiles('client/components/serverInformationModal/serverInformationForm.html', 'client'); api.addFiles('client/components/serverInformationModal/serverInformationForm.js', 'client'); + api.addFiles('client/components/serverInformationModal/serverInformationFormField.html', 'client'); api.addFiles('client/components/serverInformationModal/serverInformationList.html', 'client'); api.addFiles('client/components/serverInformationModal/serverInformationList.js', 'client'); api.addFiles('client/components/serverInformationModal/serverInformationModal.html', 'client'); diff --git a/Packages/lesiontracker/server/servers.js b/Packages/lesiontracker/server/servers.js index ccb01a145..5c3baa57e 100644 --- a/Packages/lesiontracker/server/servers.js +++ b/Packages/lesiontracker/server/servers.js @@ -23,12 +23,16 @@ Meteor.methods({ var options = { upsert: true }; + + if (!serverSettings._id) { + delete serverSettings._id; + } + var callback = function(error, affected) { if (error) { throw new Meteor.Error('data-write', error); } - console.log(Servers.findOne()); }; Servers.update(criteria, serverSettings, options, callback);