added access levels

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/ded24f14
Tree: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/tree/ded24f14
Diff: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/diff/ded24f14

Branch: refs/heads/grouper-integration
Commit: ded24f140171364de8a1f4102bd7fdf62cf750e5
Parents: ccdfa21
Author: Jeff Kinnison <[email protected]>
Authored: Wed Jun 29 13:12:42 2016 -0400
Committer: Jeff Kinnison <[email protected]>
Committed: Wed Jun 29 13:12:42 2016 -0400

----------------------------------------------------------------------
 public/js/sharing/share.js | 149 ++++++++++++++++++++++++++++++++--------
 1 file changed, 119 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/ded24f14/public/js/sharing/share.js
----------------------------------------------------------------------
diff --git a/public/js/sharing/share.js b/public/js/sharing/share.js
index bb8f0da..17f1a8f 100755
--- a/public/js/sharing/share.js
+++ b/public/js/sharing/share.js
@@ -4,24 +4,81 @@
  * @author Jeff Kinnison <[email protected]>
  */
 
- var createThumbnail = function(username, firstname, lastname, email, img) {
-        var $thumbnail, data;
+var access_enum = {
+       NONE: 0,
+       VIEW: 1,
+       RUN: 2,
+       EDIT: 3,
+       ADMIN: 4
+};
+
+var dummy_data = [
+       {
+               username: 'testuser1',
+               firstname: 'Jane',
+               lastname: 'Doe',
+               email: '[email protected]',
+               access: access_enum.RUN
+       },
+       {
+               username: 'testuser2',
+               firstname: 'Ego',
+               lastname: 'Id',
+               email: '[email protected]',
+               access: access_enum.VIEW
+       },
+       {
+               username: 'testuser3',
+               firstname: 'Ivan',
+               lastname: 'Ivanov',
+               email: '[email protected]',
+               access: access_enum.NONE
+       },
+       {
+               username: 'testuser4',
+               firstname: 'Grok',
+               lastname: '',
+               email: '[email protected]',
+               access: access_enum.ADMIN
+       },
+       {
+               username: 'testuser5',
+               firstname: 'Identifier',
+               lastname: 'Appellation',
+               email: '[email protected]',
+               access: access_enum.EDIT
+       }
+];
+
+ var createThumbnail = function(username, firstname, lastname, email, 
access=access_enum.NONE, img="#") {
+        var $thumbnail, data, options;
 
         data = {
                 username: username,
                 firstname: firstname,
                 lastname: lastname,
-                email: email
+                email: email,
+                access: access
         };
 
-        $thumbnail = $('<div class="col-md-6"> \
-               <div class="user-thumbnail thumbnail"> \
+        options = '';
+        options += '<option value="' + access_enum.NONE + '"' + (access === 
access_enum.NONE ? "selected" : "") + '>Not Shared</option>';
+        options += '<option value="' + access_enum.VIEW + '"' + (access === 
access_enum.VIEW ? "selected" : "") + '>Can View</option>';
+        options += '<option value="' + access_enum.RUN + '"' + (access === 
access_enum.RUN ? "selected" : "") + '>Can Run</option>';
+        options += '<option value="' + access_enum.EDIT + '"' + (access === 
access_enum.EDIT ? "selected" : "") + '>Can Edit</option>';
+        options += '<option value="' + access_enum.ADMIN + '"' + (access === 
access_enum.ADMIN ? "selected" : "") + '>All Privileges</option>';
+
+        $thumbnail = $('<div class="user-thumbnail  col-md-6"> \
+               <div class="thumbnail"> \
                        <div class="col-md-6"> \
-                               <img src="' + img + '" alt="' + username + '" 
/> \
+                               <img class="user-thumbnail-image" src="' + img 
+ '" alt="' + username + '" /> \
                        </div> \
                        <div class="col-md-6"> \
-                               <h5>' + firstname + ' ' + lastname + '</h5> \
-                               <p>' + email + '</p> \
+                               <h5 class="user-thumbnail-name">' + firstname + 
' ' + lastname + '</h5> \
+                               <p class="user-thumbnail-email">' + email + 
'</p> \
+                               <select class="user-thumbnail-access"> \
+                               ' + options + ' \
+                               </select> \
                        </div> \
                </div>');
 
@@ -68,46 +125,76 @@ $(function() {
                return $share_box;
        }
 
+       var createTestData = function () {
+               var $users, $share, $user, data;
+
+               $users = $('#share-box-users');
+               $share = $('#share-box-share');
+
+               for (var user in dummy_data) {
+                       if (dummy_data.hasOwnProperty(user)) {
+                               data = dummy_data[user];
+                               $user = createThumbnail(data.username, 
data.firstname, data.lastname, data.email, data.access);
+                               if (data.access === access_enum.NONE) {
+                                       $user.addClass('share-box-users-item');
+                                       $users.append($user);
+                               }
+                               else {
+                                       $user.addClass('share-box-share-item');
+                                       $share.append($user);
+                               }
+                       }
+               }
+       }
+
 
 
 
 
        /* Share box event handlers */
 
+       // Create, populate, and show the share box
        $('body').on('click', 'button#project-share, button#experiment-share', 
function(e) {
                e.stopPropagation();
                e.preventDefault();
-               $('body').append(createShareBox());
+               if ($('#share-box').length === 0) {
+                       $('body').append(createShareBox());
+                       createTestData();
+               }
                $('#share-box').animate({top: "1%"})
                return false;
        });
 
        // Filter the list as the user types
        $('body').on('change', '#share-box-filter', function(e) {
-               var $target, pattern, re $users;
+               var $target, pattern, re, $users;
                e.stopPropagation();
                e.preventDefault();
+               $target = $(e.target);
                pattern = $target.val();
-               if (pattern !== '') {
+               if (pattern && pattern !== '') {
                        re = new RegExp(pattern, 'i');
                }
                else {
                        re = new RegExp(/.+/);
                }
                $users = $('#share-box-users').children();
+               console.log("Users: " + $users);
                $users.each(function(index, element) {
                        var data;
-                       data = element.data();
-
+                       data = $(element).data();
+                       console.log(data);
                        if (re.test(data.username)
                            || re.test(data.firstname)
                            || re.test(data.lastname)
                                || re.test(data.email)
                        ) {
-                               element.show();
+                               console.log("Showing the user");
+                               $(element).show();
                        }
                        else {
-                               element.hide();
+                               console.log("Hiding the user");
+                               $(element).hide();
                        }
                });
                return false;
@@ -138,28 +225,30 @@ $(function() {
                return false;
        });
 
-       // Select a user to share with
-       $('body').on('click', '.share-box-users-item', function(e) {
+       // Handle sharing and unsharing
+       $('body').on('click', '.user-thumbnail', 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');
+               $target = $(e.target).closest('.user-thumbnail');
+               console.log($target);
+               // If the user has sharing privileges, revoke them
+               if ($target.hasClass('share-box-users-item')) {
+                       console.log("Sharing");
+                       $target.detach().prependTo('#share-box-share').show();
+               }
+               // IOther
+               else if ($target.hasClass('share-box-share-item')) {
+                       console.log("Revoking share");
+                       $target.detach().appendTo('#share-box-users');
+                       $('#share-box-filter').trigger('change');
+               }
+               $target.toggleClass('share-box-users-item 
share-box-share-item');
                return false;
        });
 
-       // Remove a user from the share list
-       $('body').on('click', '.share-box-share-item', function(e) {
+       $('body').on('click', '.user-thumbnail-access', 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