sharing ui implemented

Project: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/commit/fb16922a
Tree: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/tree/fb16922a
Diff: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/diff/fb16922a

Branch: refs/heads/grouper-integration
Commit: fb16922a815654ef061832c3c18ac3bae816c30d
Parents: 58983e0
Author: Jeff Kinnison <[email protected]>
Authored: Tue Jun 28 12:36:02 2016 -0400
Committer: Jeff Kinnison <[email protected]>
Committed: Tue Jun 28 12:36:02 2016 -0400

----------------------------------------------------------------------
 public/js/sharing/share.js | 136 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 136 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/fb16922a/public/js/sharing/share.js
----------------------------------------------------------------------
diff --git a/public/js/sharing/share.js b/public/js/sharing/share.js
old mode 100644
new mode 100755
index e69de29..58079e6
--- a/public/js/sharing/share.js
+++ b/public/js/sharing/share.js
@@ -0,0 +1,136 @@
+/**
+ * Utilities for sharing projects and experiments between users
+ *
+ * @author Jeff Kinnison <[email protected]>
+ */
+
+$(function() {
+       /* Share box functions */
+
+       /**
+        * Create the popup containing sharing functionality
+        *
+        * @param id The id of the resource being shared
+        * @return The share box JQuery element.
+        */
+       var createShareBox = function(resource_id) {
+               var $box, $filter, $user_list, $share_list, $btn_share, 
$btn_cancel;
+               if (($('#share-box')).length === 0) {
+                       $box = $('<div id="share-box" class="row"</div>');
+                       $filter = $('<div class="col-md-8 
col-md-offset-2"><input id="share-box-filter" type="text" placeholder="Filter 
users"></div>');
+                       $user_list = $('<div class="col-md-8 
col-md-offset-2"><ul id="share-box-users"></ul></div>');
+                       $share_list = $('<ul id="share-box-share"></ul>');
+                       $btn_share = $('<button id="share-box-button" 
class="btn btn-primary">Share</button>');
+                       $btn_close = $('<button id="share-box-cancel" 
class="btn btn-default">Close</button>');
+
+                       $box.data({'resource_id': id});
+
+                       $box.append($search, $user_list, $share_list, 
$btn_share, $btn_close);
+
+                       return $box
+               }
+       }
+
+       /**
+        * Remove the share box from the DOM and clean up.
+        */
+       var destroyShareBox() {
+               $('#share-box').remove();
+       }
+
+
+       var updateUserPrivileges = function(resource_id, $share_list) {
+               $share_list.each(function(index, element) {
+                       var data = element.data();
+                       console.log(data.username + " can now view resource " + 
resource_id);
+               });
+       }
+
+
+
+
+       /* Share box event handlers */
+
+       $('body').on('click', 'button#project-share, button#experiment-share', 
function(e) {
+               e.stopPropagation();
+               e.preventDefault();
+               createShareBox();
+               return false;
+       });
+
+       // Filter the list as the user types
+       $('body').on('change', '#share-box-filter', function(e) {
+               var $target, pattern, $users;
+               e.stopPropagation();
+               e.preventDefault();
+               pattern = $target.val();
+               $users = $('#share-box-users').children();
+               $users.each(function(index, element) {
+                       var re, data;
+                       re = new RegExp(pattern, 'i');
+                       data = element.data();
+
+                       if (re.test(data.username)
+                           || re.test(data.firstname)
+                           || re.test(data.lastname)
+                               || re.test(data.email)
+                       ) {
+                               element.show();
+                       }
+                       else {
+                               element.hide();
+                       }
+               });
+               return false;
+       });
+
+       // Save the sharing permissions of each selected user
+       $('body').on('click', '#share-box-button', function(e) {
+               var data, resource_id, $share_list;
+               e.stopPropagation();
+               e.preventDefault();
+               data = $("#share-box").data()
+               if (data.hasOwnProperty('resource_id')) {
+                       resource_id = .resource_id;
+                       $share_list = $("#share_list").children();
+                       updateUserPrivileges(resource_id, $share_list);
+               }
+               else {
+                       console.log("Error: unknown resource");
+               }
+               return false;
+       });
+
+       // Close the share box
+       $('body').on('click', '#share-box-close', function(e) {
+               e.stopPropagation();
+               e.preventDefault();
+               destroyShareBox();
+               return false;
+       });
+
+       // Select a user to share with
+       $('body').on('click', '.share-box-users-item', function(e) {
+               var $target;
+               e.stopPropagation();
+               e.preventDefault();
+               $target = $(e.target);
+               $target.remove();
+               $('#share-box-share').prepend($target);
+               $target.addClass('.share-box-share-item');
+               $target.removeClass('.share-box-users-item');
+               return false;
+       });
+
+       // Remove a user from the share list
+       $('body').on('click', '.share-box-share-item', function(e) {
+               e.stopPropagation();
+               e.preventDefault();
+               $target = $(e.target);
+               $target.remove();
+               $('#share-box-users').prepend($target);
+               $target.addClass('.share-box-users-item');
+               $target.removeClass('.share-box-share-item');
+               return false;
+       });
+});

Reply via email to