move more functionality and change to spaces

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

Branch: refs/heads/grouper-integration
Commit: fedf8e1ea73c1dc0188c67e28df60fc8c632adfe
Parents: a1c9629
Author: Jeff Kinnison <[email protected]>
Authored: Thu Jul 7 15:16:48 2016 -0400
Committer: Jeff Kinnison <[email protected]>
Committed: Thu Jul 7 15:16:48 2016 -0400

----------------------------------------------------------------------
 public/js/sharing/share.js         | 762 ++++++++++++++++----------------
 public/js/sharing/sharing_utils.js | 171 +++----
 2 files changed, 463 insertions(+), 470 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/fedf8e1e/public/js/sharing/share.js
----------------------------------------------------------------------
diff --git a/public/js/sharing/share.js b/public/js/sharing/share.js
index 86d3b9a..0be74e5 100755
--- a/public/js/sharing/share.js
+++ b/public/js/sharing/share.js
@@ -5,404 +5,384 @@
  */
 
 var access_enum = {
-       NONE: '0',
-       VIEW: '1',
-       RUN: '2',
-       EDIT: '3',
-       ADMIN: '4'
+    NONE: '0',
+    VIEW: '1',
+    RUN: '2',
+    EDIT: '3',
+    ADMIN: '4'
 };
 
 var dummy_user_data = [
-       {
-               username: 'testuser1',
-               firstname: 'Jane',
-               lastname: 'Doe',
-               email: '[email protected]',
-               access: access_enum.NONE
-       },
-       {
-               username: 'testuser2',
-               firstname: 'Ego',
-               lastname: 'Id',
-               email: '[email protected]',
-               access: access_enum.NONE
-       },
-       {
-               username: 'testuser3',
-               firstname: 'Ivan',
-               lastname: 'Ivanov',
-               email: '[email protected]',
-               access: access_enum.NONE
-       },
-       {
-               username: 'testuser4',
-               firstname: 'Grok',
-               lastname: 'Smytheson',
-               email: '[email protected]',
-               access: access_enum.ADMIN
-       },
-       {
-               username: 'testuser5',
-               firstname: 'Identifier',
-               lastname: 'Appellation',
-               email: '[email protected]',
-               access: access_enum.EDIT
-       }
+    {
+        username: 'testuser1',
+        firstname: 'Jane',
+        lastname: 'Doe',
+        email: '[email protected]',
+        access: access_enum.NONE
+    },
+    {
+        username: 'testuser2',
+        firstname: 'Ego',
+        lastname: 'Id',
+        email: '[email protected]',
+        access: access_enum.NONE
+    },
+    {
+        username: 'testuser3',
+        firstname: 'Ivan',
+        lastname: 'Ivanov',
+        email: '[email protected]',
+        access: access_enum.NONE
+    },
+    {
+        username: 'testuser4',
+        firstname: 'Grok',
+        lastname: 'Smytheson',
+        email: '[email protected]',
+        access: access_enum.ADMIN
+    },
+    {
+        username: 'testuser5',
+        firstname: 'Identifier',
+        lastname: 'Appellation',
+        email: '[email protected]',
+        access: access_enum.EDIT
+    }
 ];
 
 var dummy_group_data = [
-       {
-               username: 'Venusian Climate Studies',
-               firstname: 'Gazorpazorp',
-               lastname: 'Field',
-               email: '[email protected]',
-               access: access_enum.NONE
-       },
-       {
-               username: 'Molecular Dynamics Rawks',
-               firstname: 'Jorgen',
-               lastname: 'Jorgenson',
-               email: '[email protected]',
-               access: access_enum.NONE
-       },
-       {
-               username: 'Socialist Distributed Algorithms',
-               firstname: 'Richard',
-               lastname: 'Stallman',
-               email: '[email protected]',
-               access: access_enum.NONE
-       },
-       {
-               username: 'Stonferd Center for New Age Math',
-               firstname: 'Gugliermo',
-               lastname: 'Marconi',
-               email: '[email protected]',
-               access: access_enum.VIEW
-       },
-       {
-               username: 'CIT Center for Autonomous Studies',
-               firstname: 'Madison',
-               lastname: 'Li',
-               email: '[email protected]',
-               access: access_enum.EDIT
-       },
+    {
+        username: 'Venusian Climate Studies',
+        firstname: 'Gazorpazorp',
+        lastname: 'Field',
+        email: '[email protected]',
+        access: access_enum.NONE
+    },
+    {
+        username: 'Molecular Dynamics Rawks',
+        firstname: 'Jorgen',
+        lastname: 'Jorgenson',
+        email: '[email protected]',
+        access: access_enum.NONE
+    },
+    {
+        username: 'Socialist Distributed Algorithms',
+        firstname: 'Richard',
+        lastname: 'Stallman',
+        email: '[email protected]',
+        access: access_enum.NONE
+    },
+    {
+        username: 'Stonferd Center for New Age Math',
+        firstname: 'Gugliermo',
+        lastname: 'Marconi',
+        email: '[email protected]',
+        access: access_enum.VIEW
+    },
+    {
+        username: 'CIT Center for Autonomous Studies',
+        firstname: 'Madison',
+        lastname: 'Li',
+        email: '[email protected]',
+        access: access_enum.EDIT
+    },
 ];
 
 $(function() {
-       var comparator_map, comparator, $original_shared_list, $revoke_list;
-       comparator_map = {
-                       "username": usernameComparator,
-                       "firstlast": firstLastComparator,
-                       "lastfirst": lastFirstComparator,
-                       "email": emailComparator
-       };
-       comparator = usernameComparator;
-
-       /* 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 $share_box, $user_section, $share_section, $button_section;
-               if (($('#share-box')).length === 0) {
-                       $share_box = $('<div id="share-box" class="modal-fade" 
tabindex="-1" role="dialog"> \
-                           <div class="modal-dialog modal-lg"> \
-                               <div class="modal-content"> \
-                                   <div class="modal-header"> \
-                                       <button type="button" id="share-box-x" 
class="close" data-dismiss="modal" aria-label="Close"><span 
aria-hidden="true">&times;</span></button> \
-                                       <h3 class="modal-title">Share this 
project</h3> \
-                                   </div> \
-                                   <div class="modal-body"> \
-                                       <label>Click on the users you would 
like to share with.</label> \
-                                       <input id="share-box-filter" 
class="form-control" type="text" placeholder="Filter the user list" /> \
-                                                       <label>Show</label> \
-                                                       <div 
id="show-results-group" class="btn-group" role="group" aria-label="Show Groups 
or Users">\
-                                                               <button 
type="button" class="show-groups show-results-btn btn 
btn-primary">Groups</button> \
-                                                               <button 
type="button" class="show-users show-results-btn btn 
btn-default">Users</button> \
-                                                       </div> \
-                                                       <label>Order By</label> 
\
-                                                       <select 
class="order-results-selector"> \
-                                                               <option 
value="username">Username</option> \
-                                                               <option 
value="firstlast">First, Last Name</option> \
-                                                               <option 
value="lastfirst">Last, First Name</option> \
-                                                               <option 
value="email">Email</option> \
-                                                       </select> \
-                                       <ul id="share-box-users" 
class="form-control"></ul> \
-                                       <label>Set permissions with the 
drop-down menu on each user, or click the x to cancel sharing.</label> \
-                                                       <ul 
id="share-box-share" class="form-control"></ul> \
-                                   </div> \
-                                   <div class="modal-footer"> \
-                                                       <button type="button" 
id="share-box-button" class="btn btn-primary">Save</button> \
-                                       <button type="button" 
id="share-box-close" class="btn btn-default" 
data-dismiss="modal">Cancel</button> \
-                                   </div> \
-                               </div> \
-                           </div> \
-                       </div>');
-
-                       if (resource_id) {
-                               $share_box.data({'resource_id': resource_id});
-                       }
-               }
-               return $share_box;
-       }
-
-       var createTestData = function () {
-               var $users, $share, $user, data;
-
-               $users = $('#share-box-users');
-               $share = $('#share-box-share');
-
-               for (var user in dummy_user_data) {
-                       if (dummy_user_data.hasOwnProperty(user)) {
-                               data = dummy_user_data[user];
-                               $user = createThumbnail(data.username, 
data.firstname, data.lastname, data.email, data.access);
-                               $user.addClass('user-thumbnail');
-                               if (data.access === access_enum.NONE) {
-                                       $user.addClass('share-box-users-item');
-                                       $users.append($user);
-                               }
-                               else {
-                                       $user.addClass('share-box-share-item');
-                                       
$user.find('.sharing-thumbnail-access').prop("disabled", false).show();
-                                       
$user.find('.sharing-thumbnail-unshare').show();
-                                       $share.append($user);
-                               }
-                       }
-               }
-
-               for (var group in dummy_group_data) {
-                       if (dummy_group_data.hasOwnProperty(group)) {
-                               data = dummy_group_data[group];
-                               $group = createThumbnail(data.username, 
data.firstname, data.lastname, data.email, data.access);
-                               $group.addClass('group-thumbnail');
-                               if (data.access === access_enum.NONE) {
-                                       $group.addClass('share-box-users-item');
-                                       $users.append($group);
-                               }
-                               else {
-                                       $group.addClass('share-box-share-item');
-                                       
$group.find('.sharing-thumbnail-access').prop("disabled", false).show();
-                                       
$group.find('.sharing-thumbnail-unshare').show();
-                                       $share.append($group);
-                               }
-                       }
-               }
-
-               $('.user-thumbnail').hide();
-               $('.group-thumbnail').show();
-       }
-
-       var changeShareState = function($target) {
-               // If the user has sharing privileges, revoke them
-               if ($target.hasClass('share-box-users-item')) {
-                       console.log("Sharing");
-                       
$target.find('.sharing-thumbnail-access').val('1').prop("disabled", 
false).show();
-                       $target.find('.sharing-thumbnail-unshare').show();
-                       $target.detach().prependTo('#share-box-share').show();
-               }
-               // Otherwise move to the shared list
-               else if ($target.hasClass('share-box-share-item')) {
-                       console.log("Revoking share");
-                       $target.find('select').val('0').prop("disabled", 
true).hide();
-                       $target.find('.sharing-thumbnail-unshare').hide();
-                       $target.detach().appendTo('#share-box-users');
-                       $('#share-box-filter').trigger('keydown');
-                       $(".order-results-selector").trigger('change');
-               }
-               $target.toggleClass('share-box-users-item 
share-box-share-item');
-       }
-
-
-
-
-
-       /* Share box event handlers */
-
-       // Create, populate, and show the share box
-       $('body').on('click', 'button#project-share, button#experiment-share', 
function(e) {
-               var $share_list;
-               e.stopPropagation();
-               e.preventDefault();
-               if ($('#share-box').length === 0) {
-                       $('body').append(createShareBox());
-                       createTestData();
-               }
-
-               $share_list = $('#shared-users').children();
-
-               if ($share_list.filter('.sharing-thumbnail').length > 0) {
-                       $share_list.sort(comparator);
-                       $share_list.each(function(index, element) {
-                               var $e;
-                               $e = $(element);
-                               
$e.find('.sharing-thumbnail-access').prop('disabled', false);
-                               $e.find('.sharing-thumbnail-unshare').show();
-                               $e.detach().appendTo($('#share-box-share'));
-                       })
-               }
-               $original_shared_list = $('#share-box-share').children();
-               $('#share-box').animate({top: "1%"})
-               return false;
-       });
-
-       $('body').on('click', 'input[type="reset"]', function (e) {
-               var $shared_users;
-               $shared_users = $('.share-box-share-item');
-               $shared_users.toggleClass('.share-box-share-item 
.share-box-users-item');
-               
$shared_users.find('.sharing-thumbnail-access').val(access_enum.NONE).hide();
-               $shared_users.detach().appendTo('#share-box-users');
-               $('.order-results-selector').trigger('change');
-               $('#shared-users').addClass('text-align-center');
-               $('#shared-users').prepend('<p>This project has not been 
shared</p>');
-       });
-
-       // Filter the list as the user types
-       $('body').on('keyup', '#share-box-filter', function(e) {
-               var $target, pattern, re, visible, $users;
-               e.stopPropagation();
-               e.preventDefault();
-               $target = $(e.target);
-               pattern = $target.val().toLowerCase();
-               if (!pattern || pattern === '') {
-                       pattern = /.+/;
-               }
-               visible = ($('.show-groups').hasClass('btn-primary') ? 
'.group-thumbnail' : '.user-thumbnail');
-               $users = $('#share-box-users').children(visible);
-               userFilter($users, pattern);
-               return false;
-       });
-
-       $('body').on('click', '.show-results-btn', function(e) {
-               var $target;
-               e.preventDefault();
-               e.stopPropagation();
-               $target = $(e.target);
-               if ($target.hasClass("show-groups") && 
!$target.hasClass('btn-primary')) {
-                       $('.group-thumbnail').show();
-                       $('.user-thumbnail').hide();
-                       $('.show-groups').addClass('btn-primary');
-                       $('.show-groups').removeClass('btn-default');
-                       $('.show-users').addClass('btn-default');
-                       $('.show-users').removeClass('btn-primary');
-               }
-               else if ($target.hasClass("show-users") && 
!$target.hasClass('btn-primary')) {
-                       $('.user-thumbnail').show();
-                       $('.group-thumbnail').hide();
-                       $('.show-users').addClass('btn-primary');
-                       $('.show-users').removeClass('btn-default');
-                       $('.show-groups').addClass('btn-default');
-                       $('.show-groups').removeClass('btn-primary');
-               }
-               return false;
-       });
-
-       $('body').on('change', '.order-results-selector', function(e) {
-               var $target, $sibling, $sorted;
-               $target = $(e.target);
-               console.log($target);
-               comparator = comparator_map[$target.val()];
-               $('.order-results-selector').val($target.val());
-               $sibling = $target.siblings('#shared-users, #share-box-users');
-               $sorted = $sibling.children('.sharing-thumbnail');
-               $sorted.detach();
-               $sorted.sort(comparator);
-               $sibling.append($sorted);
-       });
-
-       // 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()
-               $share_list = $("#share-box-share").children();
-               if (data.hasOwnProperty('resource_id')) {
-                       resource_id = data.resource_id;
-                       updateUserPrivileges(resource_id, $share_list);
-               }
-               else {
-                       $('#shared-users').empty();
-                       if ($share_list.filter('.sharing-thumbnail').length > 
0) {
-                               $share_list.sort(comparator_map.username);
-                               $share_list.each(function(index, element) {
-                                       var $e, data;
-                                       $e = $(element);
-                                       data = $e.data();
-                                       if 
(data.hasOwnProperty('currentaccess')) {
-                                               data.access = 
data.currentaccess;
-                                               $e.data(data);
-                                       }
-                                       
$e.find('.sharing-thumbnail-access').prop('disabled', true);
-                                       
$e.find('.sharing-thumbnail-unshare').hide();
-                               });
-                               
$('#shared-users').removeClass('text-align-center');
-                               
$share_list.detach().appendTo($('#shared-users'));
-                       }
-                       else {
-                               
$('#shared-users').addClass('text-align-center');
-                               $('#shared-users').prepend('<p>This project has 
not been shared</p>');
-                       }
-                       $('#share-box').animate({top: '100%'});
-               }
-               return false;
-       });
-
-       // Close the share box
-       $('body').on('click', '#share-box-close, #share-box-x', function(e) {
-               e.stopPropagation();
-               e.preventDefault();
-               $('#shared-users').empty();
-               if ($original_shared_list.length > 0) {
-                       $original_shared_list.each(function(index, element) {
-                               var $e, data;
-                               $e = $(element);
-                               data = $e.data();
-                               if (data.hasOwnProperty('currentaccess')) {
-                                       data.currentaccess = data.access;
-                               }
-                               
$e.find('select').val(data.access).prop('disabled', true);
-                               $e.find('.sharing-thumbnail-unshare').hide();
-                       });
-                       $('shared-users').removeClass('text-align-center');
-                       
$original_shared_list.detach().appendTo('#shared-users');
-               }
-               else {
-                       $('#shared-users').addClass('text-align-center');
-                       $('#shared-users').prepend('<p>This project has not 
been shared</p>');
-               }
-               $('#share-box').animate({top: "100%"});
-               return false;
-       });
-
-       // Handle sharing and unsharing
-       $('body').on('click', '.share-box-users-item, 
.sharing-thumbnail-unshare', function(e) {
-               var $target;
-               e.stopPropagation();
-               e.preventDefault();
-               $target = $(e.target).closest('.sharing-thumbnail');
-               changeShareState($target);
-               return false;
-       });
-
-       // Handle changing access level
-       $('body').on('change', '.sharing-thumbnail-access', function(e) {
-               var $target, $parent, data;
-               $target = $(e.target);
-               $parent = $target.closest('.sharing-thumbnail');
-               data = $parent.data();
-               data.currentaccess = $target.val();
-               $parent.data(data);
-       });
-
-
-
-
-
-       /* Set up the sharing interface */
-       createShareBox();
-       createTestData();
+    var comparator_map, comparator, $original_shared_list, $revoke_list;
+    comparator_map = {
+            "username": usernameComparator,
+            "firstlast": firstLastComparator,
+            "lastfirst": lastFirstComparator,
+            "email": emailComparator
+    };
+    comparator = usernameComparator;
+
+    /* 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 $share_box, $user_section, $share_section, $button_section;
+        if (($('#share-box')).length === 0) {
+            $share_box = $('<div id="share-box" class="modal-fade" 
tabindex="-1" role="dialog"> \
+                <div class="modal-dialog modal-lg"> \
+                    <div class="modal-content"> \
+                        <div class="modal-header"> \
+                            <button type="button" id="share-box-x" 
class="close" data-dismiss="modal" aria-label="Close"><span 
aria-hidden="true">&times;</span></button> \
+                            <h3 class="modal-title">Share this project</h3> \
+                        </div> \
+                        <div class="modal-body"> \
+                            <label>Click on the users you would like to share 
with.</label> \
+                            <input id="share-box-filter" class="form-control" 
type="text" placeholder="Filter the user list" /> \
+                            <label>Show</label> \
+                            <div id="show-results-group" class="btn-group" 
role="group" aria-label="Show Groups or Users">\
+                                <button type="button" class="show-groups 
show-results-btn btn btn-primary">Groups</button> \
+                                <button type="button" class="show-users 
show-results-btn btn btn-default">Users</button> \
+                            </div> \
+                            <label>Order By</label> \
+                            <select class="order-results-selector"> \
+                                <option value="username">Username</option> \
+                                <option value="firstlast">First, Last 
Name</option> \
+                                <option value="lastfirst">Last, First 
Name</option> \
+                                <option value="email">Email</option> \
+                            </select> \
+                            <ul id="share-box-users" 
class="form-control"></ul> \
+                            <label>Set permissions with the drop-down menu on 
each user, or click the x to cancel sharing.</label> \
+                            <ul id="share-box-share" 
class="form-control"></ul> \
+                        </div> \
+                        <div class="modal-footer"> \
+                            <button type="button" id="share-box-button" 
class="btn btn-primary">Save</button> \
+                            <button type="button" id="share-box-close" 
class="btn btn-default" data-dismiss="modal">Cancel</button> \
+                        </div> \
+                    </div> \
+                </div> \
+            </div>');
+
+            if (resource_id) {
+                $share_box.data({'resource_id': resource_id});
+            }
+        }
+        return $share_box;
+    }
+
+    var createTestData = function () {
+        var $users, $share, $user, data;
+
+        $users = $('#share-box-users');
+        $share = $('#share-box-share');
+
+        for (var user in dummy_user_data) {
+            if (dummy_user_data.hasOwnProperty(user)) {
+                data = dummy_user_data[user];
+                $user = createThumbnail(data.username, data.firstname, 
data.lastname, data.email, data.access);
+                $user.addClass('user-thumbnail');
+                if (data.access === access_enum.NONE) {
+                    $user.addClass('share-box-users-item');
+                    $users.append($user);
+                }
+                else {
+                    $user.addClass('share-box-share-item');
+                    $user.find('.sharing-thumbnail-access').prop("disabled", 
false).show();
+                    $user.find('.sharing-thumbnail-unshare').show();
+                    $share.append($user);
+                }
+            }
+        }
+
+        for (var group in dummy_group_data) {
+            if (dummy_group_data.hasOwnProperty(group)) {
+                data = dummy_group_data[group];
+                $group = createThumbnail(data.username, data.firstname, 
data.lastname, data.email, data.access);
+                $group.addClass('group-thumbnail');
+                if (data.access === access_enum.NONE) {
+                    $group.addClass('share-box-users-item');
+                    $users.append($group);
+                }
+                else {
+                    $group.addClass('share-box-share-item');
+                    $group.find('.sharing-thumbnail-access').prop("disabled", 
false).show();
+                    $group.find('.sharing-thumbnail-unshare').show();
+                    $share.append($group);
+                }
+            }
+        }
+
+        $('.user-thumbnail').hide();
+        $('.group-thumbnail').show();
+    }
+
+
+
+
+
+    /* Share box event handlers */
+
+    // Create, populate, and show the share box
+    $('body').on('click', 'button#project-share, button#experiment-share', 
function(e) {
+        var $share_list;
+        e.stopPropagation();
+        e.preventDefault();
+        if ($('#share-box').length === 0) {
+            $('body').append(createShareBox());
+            createTestData();
+        }
+
+        $share_list = $('#shared-users').children();
+
+        if ($share_list.filter('.sharing-thumbnail').length > 0) {
+            $share_list.sort(comparator);
+            $share_list.each(function(index, element) {
+                var $e;
+                $e = $(element);
+                $e.find('.sharing-thumbnail-access').prop('disabled', false);
+                $e.find('.sharing-thumbnail-unshare').show();
+                $e.detach().appendTo($('#share-box-share'));
+            })
+        }
+        $original_shared_list = $('#share-box-share').children();
+        $('#share-box').animate({top: "1%"})
+        return false;
+    });
+
+    $('body').on('click', 'input[type="reset"]', function (e) {
+        var $shared_users;
+        $shared_users = $('.share-box-share-item');
+        $shared_users.toggleClass('.share-box-share-item 
.share-box-users-item');
+        
$shared_users.find('.sharing-thumbnail-access').val(access_enum.NONE).hide();
+        $shared_users.detach().appendTo('#share-box-users');
+        $('.order-results-selector').trigger('change');
+        $('#shared-users').addClass('text-align-center');
+        $('#shared-users').prepend('<p>This project has not been shared</p>');
+    });
+
+    // Filter the list as the user types
+    $('body').on('keyup', '#share-box-filter', function(e) {
+        var $target, pattern, visible, $users;
+        e.stopPropagation();
+        e.preventDefault();
+        $target = $(e.target);
+        pattern = $target.val().toLowerCase();
+        if (!pattern || pattern === '') {
+            pattern = /.+/;
+        }
+        visible = ($('.show-groups').hasClass('btn-primary') ? 
'.group-thumbnail' : '.user-thumbnail');
+        $users = $('#share-box-users').children(visible);
+        userFilter($users, pattern);
+        return false;
+    });
+
+    $('body').on('click', '.show-results-btn', function(e) {
+        var $target;
+        e.preventDefault();
+        e.stopPropagation();
+        $target = $(e.target);
+        if ($target.hasClass("show-groups") && 
!$target.hasClass('btn-primary')) {
+            $('.group-thumbnail').show();
+            $('.user-thumbnail').hide();
+            $('.show-groups').addClass('btn-primary');
+            $('.show-groups').removeClass('btn-default');
+            $('.show-users').addClass('btn-default');
+            $('.show-users').removeClass('btn-primary');
+        }
+        else if ($target.hasClass("show-users") && 
!$target.hasClass('btn-primary')) {
+            $('.user-thumbnail').show();
+            $('.group-thumbnail').hide();
+            $('.show-users').addClass('btn-primary');
+            $('.show-users').removeClass('btn-default');
+            $('.show-groups').addClass('btn-default');
+            $('.show-groups').removeClass('btn-primary');
+        }
+        return false;
+    });
+
+    $('body').on('change', '.order-results-selector', function(e) {
+        var $target, $sibling, $sorted;
+        $target = $(e.target);
+        console.log($target);
+        comparator = comparator_map[$target.val()];
+        $('.order-results-selector').val($target.val());
+        $sibling = $target.siblings('#shared-users, #share-box-users');
+        $sorted = $sibling.children('.sharing-thumbnail');
+        $sorted.detach();
+        $sorted.sort(comparator);
+        $sibling.append($sorted);
+    });
+
+    // 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()
+        $share_list = $("#share-box-share").children();
+        if (data.hasOwnProperty('resource_id')) {
+            resource_id = data.resource_id;
+            updateUserPrivileges(resource_id, $share_list);
+        }
+        else {
+            $('#shared-users').empty();
+            if ($share_list.filter('.sharing-thumbnail').length > 0) {
+                $share_list.sort(comparator_map.username);
+                $share_list.each(function(index, element) {
+                    var $e, data;
+                    $e = $(element);
+                    data = $e.data();
+                    if (data.hasOwnProperty('currentaccess')) {
+                        data.access = data.currentaccess;
+                        $e.data(data);
+                    }
+                    $e.find('.sharing-thumbnail-access').prop('disabled', 
true);
+                    $e.find('.sharing-thumbnail-unshare').hide();
+                });
+                $('#shared-users').removeClass('text-align-center');
+                $share_list.detach().appendTo($('#shared-users'));
+            }
+            else {
+                $('#shared-users').addClass('text-align-center');
+                $('#shared-users').prepend('<p>This project has not been 
shared</p>');
+            }
+            $('#share-box').animate({top: '100%'});
+        }
+        return false;
+    });
+
+    // Close the share box
+    $('body').on('click', '#share-box-close, #share-box-x', function(e) {
+        e.stopPropagation();
+        e.preventDefault();
+        $('#shared-users').empty();
+        if ($original_shared_list.length > 0) {
+            $original_shared_list.each(function(index, element) {
+                var $e, data;
+                $e = $(element);
+                data = $e.data();
+                if (data.hasOwnProperty('currentaccess')) {
+                    data.currentaccess = data.access;
+                }
+                $e.find('select').val(data.access).prop('disabled', true);
+                $e.find('.sharing-thumbnail-unshare').hide();
+            });
+            $('shared-users').removeClass('text-align-center');
+            $original_shared_list.detach().appendTo('#shared-users');
+        }
+        else {
+            $('#shared-users').addClass('text-align-center');
+            $('#shared-users').prepend('<p>This project has not been 
shared</p>');
+        }
+        $('#share-box').animate({top: "100%"});
+        return false;
+    });
+
+    // Handle sharing and unsharing
+    $('body').on('click', '.share-box-users-item, .sharing-thumbnail-unshare', 
function(e) {
+        var $target;
+        e.stopPropagation();
+        e.preventDefault();
+        $target = $(e.target).closest('.sharing-thumbnail');
+        changeShareState($target);
+        return false;
+    });
+
+    // Handle changing access level
+    $('body').on('change', '.sharing-thumbnail-access', function(e) {
+        var $target, $parent, data;
+        $target = $(e.target);
+        $parent = $target.closest('.sharing-thumbnail');
+        data = $parent.data();
+        data.currentaccess = $target.val();
+        $parent.data(data);
+    });
+
+
+
+
+
+    /* Set up the sharing interface */
+    createShareBox();
+    createTestData();
 });

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/fedf8e1e/public/js/sharing/sharing_utils.js
----------------------------------------------------------------------
diff --git a/public/js/sharing/sharing_utils.js 
b/public/js/sharing/sharing_utils.js
index 75ba614..2261d66 100644
--- a/public/js/sharing/sharing_utils.js
+++ b/public/js/sharing/sharing_utils.js
@@ -1,43 +1,70 @@
-var createThumbnail = function(username, firstname, lastname, email, 
access=access_enum.NONE) {
-    var $thumbnail, data, options;
-
-    data = {
-        username: username,
-        firstname: firstname,
-        lastname: lastname,
-        email: email,
-        access: access
-    };
-
-    options = '';
-    options += '<option value="' + access_enum.NONE + '"' + (access === 
access_enum.NONE ? "selected" : "") + ' style="display: none;">Can 
View</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="sharing-thumbnail col-md-6"> \
-       <div class="thumbnail"> \
-           <button type="button" class="sharing-thumbnail-unshare close" 
aria-label="Close"><span aria-hidden="true">&times;</span></button> \
-           <div class="col-md-11"> \
-           <h5>' + username + '</h5>\
-           </div> \
-           <div class="col-md-4"> \
-               <img class="sharing-thumbnail-image" src="' + 
$('.baseimage').prop('src') + '" alt="' + username + '" /> \
-           </div> \
-           <div class="col-md-7"> \
-               <h5 class="sharing-thumbnail-name">' + firstname + ' ' + 
lastname + '</h5> \
-               <p class="sharing-thumbnail-email">' + email + '</p> \
-               <select class="sharing-thumbnail-access" style="display: none;" 
disabled> \
-               ' + options + ' \
-               </select> \
-           </div> \
-       </div>');
-
-       $thumbnail.find('.baseimage').show();
-       $thumbnail.data(data);
-
-       return $thumbnail;
+var createThumbnail = function(username, firstname, lastname, email, access = 
access_enum.NONE, share = true) {
+  var $thumbnail, data, select, options;
+
+  data = {
+      username: username,
+      firstname: firstname,
+      lastname: lastname,
+      email: email,
+      access: access
+  };
+
+  select = '';
+
+  if (share) {
+      select = '<select class="sharing-thumbnail-access" style="display: 
none;" disabled>';
+
+      options = '';
+      options += '<option value="' + access_enum.NONE + '"' + (access === 
access_enum.NONE ? "selected" : "") + ' style="display: none;">Can 
View</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>';
+
+      select += options;
+      select += '</select>';
+   }
+
+   $thumbnail = $('<div class="sharing-thumbnail col-md-6"> \
+                     <div class="thumbnail"> \
+                        <button type="button" class="sharing-thumbnail-unshare 
close" aria-label="Close"><span aria-hidden="true">&times;</span></button> \
+                        <div class="col-md-11"> \
+                        <h5>' + username + '</h5>\
+                        </div> \
+                        <div class="col-md-4"> \
+                           <img class="sharing-thumbnail-image" src="' + 
$('.baseimage').prop('src') + '" alt="' + username + '" /> \
+                        </div> \
+                         <div class="col-md-7"> \
+                              <h5 class="sharing-thumbnail-name">' + firstname 
+ ' ' + lastname + '</h5> \
+                              <p class="sharing-thumbnail-email">' + email + 
'</p> \
+                              ' + select + ' \
+                          </div> \
+                      </div>');
+
+   $thumbnail.find('.baseimage').show();
+   $thumbnail.data(data);
+
+   return $thumbnail;
+}
+
+var changeShareState = function($target) {
+    // If the user has sharing privileges, revoke them
+    if ($target.hasClass('share-box-users-item')) {
+        console.log("Sharing");
+        $target.find('.sharing-thumbnail-access').val('1').prop("disabled", 
false).show();
+        $target.find('.sharing-thumbnail-unshare').show();
+        $target.detach().prependTo('#share-box-share').show();
+    }
+    // Otherwise move to the shared list
+    else if ($target.hasClass('share-box-share-item')) {
+        console.log("Revoking share");
+        $target.find('select').val('0').prop("disabled", true).hide();
+        $target.find('.sharing-thumbnail-unshare').hide();
+        $target.detach().appendTo('#share-box-users');
+        $('#share-box-filter').trigger('keydown');
+        $(".order-results-selector").trigger('change');
+    }
+    $target.toggleClass('share-box-users-item share-box-share-item');
 }
 
 var usernameComparator = function(a, b) {
@@ -48,11 +75,9 @@ var usernameComparator = function(a, b) {
 
    if ($a.username < $b.username) {
        return -1;
-   }
-   else if ($a.username > $b.username) {
+   } else if ($a.username > $b.username) {
        return 1;
-   }
-   else {
+   } else {
        return 0;
    }
 }
@@ -64,18 +89,14 @@ var firstLastComparator = function(a, b) {
 
    if ($a.firstname < $b.firstname) {
        return -1;
-   }
-   else if ($a.firstname > $b.firstname) {
+   } else if ($a.firstname > $b.firstname) {
        return 1;
-   }
-   else {
+   } else {
        if ($a.lastname < $b.lastname) {
            return -1;
-       }
-       else if ($a.lastname > $b.lastname) {
+       } else if ($a.lastname > $b.lastname) {
            return 1;
-       }
-       else {
+       } else {
            return 0;
        }
    }
@@ -88,18 +109,14 @@ var lastFirstComparator = function(a, b) {
 
    if ($a.lastname < $b.lastname) {
        return -1;
-   }
-   else if ($a.lastname > $b.lastname) {
+   } else if ($a.lastname > $b.lastname) {
        return 1;
-   }
-   else {
+   } else {
        if ($a.firstname < $b.firstname) {
            return -1;
-       }
-       else if ($a.firstname > $b.firstname) {
+       } else if ($a.firstname > $b.firstname) {
            return 1;
-       }
-       else {
+       } else {
            return 0;
        }
    }
@@ -112,11 +129,9 @@ var emailComparator = function(a, b) {
 
    if ($a.email < $b.email) {
        return -1;
-   }
-   else if ($a.email > $b.email) {
+   } else if ($a.email > $b.email) {
        return 1;
-   }
-   else {
+   } else {
        return 0;
    }
 }
@@ -124,20 +139,18 @@ var emailComparator = function(a, b) {
 var userFilter = function(users, pattern) {
    re = new RegExp(pattern, 'i');
    $(users).each(function(index, element) {
-      var data;
-      data = $(element).data();
-      console.log(data);
-      if (re.test(data.username.toLowerCase())
-          || re.test(data.firstname.toLowerCase())
-          || re.test(data.lastname.toLowerCase())
-          || re.test(data.email.toLowerCase())
-      ) {
-         console.log("Showing the user");
-         $(element).show();
-      }
-      else {
-         console.log("Hiding the user");
-         $(element).hide();
-      }
+       var data;
+       data = $(element).data();
+       if (re.test(data.username.toLowerCase()) ||
+           re.test(data.firstname.toLowerCase()) ||
+           re.test(data.lastname.toLowerCase()) ||
+           re.test(data.email.toLowerCase())
+       ) {
+           console.log("Showing the user");
+           $(element).show();
+       } else {
+           console.log("Hiding the user");
+           $(element).hide();
+       }
    });
 }

Reply via email to