From 7888f5a8294184b352e4c88549d0c73b4233b0ba Mon Sep 17 00:00:00 2001 From: "Dale R. Hille" Date: Wed, 19 Feb 2020 04:32:41 -0500 Subject: [PATCH 1/2] add owner column to the subscriptions table --- .../api/deployables/subscriptions/methods.js | 1 + .../pages/deployables/subscriptions/index.js | 13 +++++++++--- .../pages/deployables/subscriptions/page.html | 21 +++++++++++++++---- 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/imports/api/deployables/subscriptions/methods.js b/imports/api/deployables/subscriptions/methods.js index ecd0e132..d409704e 100644 --- a/imports/api/deployables/subscriptions/methods.js +++ b/imports/api/deployables/subscriptions/methods.js @@ -91,6 +91,7 @@ Meteor.methods({ 'channel': resourceName, 'version': versionName, 'version_uuid': version, + 'owner': Meteor.userId(), 'created': new Date() }); diff --git a/imports/ui/pages/deployables/subscriptions/index.js b/imports/ui/pages/deployables/subscriptions/index.js index 8a444b44..da2c4759 100644 --- a/imports/ui/pages/deployables/subscriptions/index.js +++ b/imports/ui/pages/deployables/subscriptions/index.js @@ -99,7 +99,14 @@ Template.Subscriptions.helpers({ } let versions = DeployableVersions.find({'org_id': Session.get('currentOrgId'), 'channel_name': channel}).fetch(); return versions; - } + }, + owner(id) { + const user = Meteor.users.findOne({ _id: id }); + if (!user) { + return ''; + } + return user.profile.name; + }, }); Template.Subscriptions.events({ @@ -111,7 +118,7 @@ Template.Subscriptions.events({ 'click .js-add-group'(e, instance) { e.preventDefault(); const groupName = $(e.target).closest('.group-item-new').find('input[name="groupName"]').val(); - const groupTags = $(e.target).closest('.group-item-new').find('input[name="groupTags"]').val().split(/[ ,]+/); + const groupTags = $(e.target).closest('.group-item-new').find('input[name="groupTags"]').val().split(/[ ,]+/).filter(String); const resourceId = $(e.target).closest('.group-item-new').find('.resource-dropdown').val(); const resourceName = instance.selectedChannel.get(); const resourceVersion = $(e.target).closest('.group-item-new').find('.version-dropdown').val(); @@ -220,7 +227,7 @@ Template.Subscriptions.events({ e.preventDefault(); const groupId = $(e.target).closest('.group-item-edit').data('id'); const updatedName = $(e.target).closest('.group-item-edit').find('input[name="groupName"]').val(); - const updatedTags = $(e.target).closest('.group-item-edit').find('input[name="groupTags"]').val().split(/[ ,]+/); + const updatedTags = $(e.target).closest('.group-item-edit').find('input[name="groupTags"]').val().split(/[ ,]+/).filter(String); const resourceId = $(e.target).closest('.group-item-edit').find('.resource-dropdown').val(); const resourceName = $(e.target).closest('.group-item-edit').find('.resource-dropdown option:selected').text(); const resourceVersion = $(e.target).closest('.group-item-edit').find('.version-dropdown').val(); diff --git a/imports/ui/pages/deployables/subscriptions/page.html b/imports/ui/pages/deployables/subscriptions/page.html index dfbebb23..881eb8e1 100644 --- a/imports/ui/pages/deployables/subscriptions/page.html +++ b/imports/ui/pages/deployables/subscriptions/page.html @@ -13,7 +13,8 @@

Subscriptions
Name
-
Tags
+
Owner
+
Tags
Channel
Version
Action
@@ -34,7 +35,11 @@

Subscriptions
Please enter a unique name

-
+
+
Owner
+ +
+
Tags
Please enter a tag
@@ -71,7 +76,11 @@

Subscriptions
Name
{{subscription.name}}

-
+
+
Owner
+
{{owner subscription.owner}}
+
+
Tags
{{#each tag in tags subscription}} @@ -120,7 +129,11 @@
Please enter a unique name
-
+
+
Owner
+ +
+
Tags
Please enter a tag
From e68979904dfe63e07b761136fd93205d6ad4f707 Mon Sep 17 00:00:00 2001 From: "Dale R. Hille" Date: Thu, 20 Feb 2020 13:17:07 -0500 Subject: [PATCH 2/2] subscribe to all subscription user ids --- .../api/deployables/subscriptions/server/publications.js | 5 +++++ imports/ui/pages/deployables/subscriptions/index.js | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/imports/api/deployables/subscriptions/server/publications.js b/imports/api/deployables/subscriptions/server/publications.js index 9183f79f..320c838c 100644 --- a/imports/api/deployables/subscriptions/server/publications.js +++ b/imports/api/deployables/subscriptions/server/publications.js @@ -24,3 +24,8 @@ Meteor.publish('subscriptions', function(orgId) { requireOrgAccess(orgId); return Subscriptions.find({ org_id: orgId }); }); + +Meteor.publish('users.byIds', function(userIds) { + check( userIds, Array); + return Meteor.users.find({ _id: {$in: userIds} }, { fields: { 'profile.name': true } }); +}); diff --git a/imports/ui/pages/deployables/subscriptions/index.js b/imports/ui/pages/deployables/subscriptions/index.js index da2c4759..5ac156b3 100644 --- a/imports/ui/pages/deployables/subscriptions/index.js +++ b/imports/ui/pages/deployables/subscriptions/index.js @@ -54,6 +54,13 @@ Template.Subscriptions.helpers({ }, subscriptions(){ const groups = Subscriptions.find({'org_id': Session.get('currentOrgId')}).fetch(); + + // get all subscription owner ids and subscribe. + const ownerIds = groups.map( (sub) => sub.owner ) + .filter( (element, index, arr) => index === arr.indexOf(element)) // remove duplicates + .filter(Boolean); // remove undefined items from the array + Meteor.subscribe('users.byIds', ownerIds); + return groups; }, editMode(name) {