diff options
author | Vinzenz <vinzenz.rosenkranz@gmail.com> | 2016-09-18 00:19:35 +0300 |
---|---|---|
committer | Vinzenz Rosenkranz <vinzenz.rosenkranz@gmail.com> | 2016-10-22 02:02:32 +0300 |
commit | fe86cb3e34957c8b0afd5d91f8957a4f647caeca (patch) | |
tree | 1faafdd33c33436c7435bbb053b6ed4acfb9dc94 /js | |
parent | 3483a58fdead1a9421d964ce29d0a9d57b8ca2c2 (diff) |
search field and selection enhancements
Diffstat (limited to 'js')
-rw-r--r-- | js/create_edit.js | 119 |
1 files changed, 72 insertions, 47 deletions
diff --git a/js/create_edit.js b/js/create_edit.js index 853f5c52..921a5191 100644 --- a/js/create_edit.js +++ b/js/create_edit.js @@ -25,16 +25,30 @@ $(document).ready(function () { var accessValues = document.getElementById('accessValues'); if(accessValues.value.length > 0) { + var list = document.getElementById('selected-search-list-id'); var accessValueArr = accessValues.value.split(';'); for(var i=0; i<accessValueArr.length; i++) { var val = accessValueArr[i]; + if(val == '') continue; + var li = document.createElement('li'); + li.id = val; + li.className = 'cl_item cl_access_item selected'; var index = val.indexOf('group_'); if(index == 0) { g_chosen_groups.push(val); + li.className += ' is-group'; + li.appendChild(document.createTextNode(val.substring(6) + " (group)")); + list.appendChild(li); } else { index = val.indexOf('user_'); if(index == 0) { g_chosen_users.push(val); + li.className = 'cl_item cl_access_item selected'; + var username = val.substring(5); + $.post(OC.generateUrl('/apps/polls/get/displayname'), {username: username}, function(data) { + li.appendChild(document.createTextNode(username + " (" + data + ")")); + list.appendChild(li); + }); } } } @@ -168,24 +182,40 @@ $(document).ready(function () { text.value = ''; }); - $(document).on('click', '.cl_user_item', function(e) { + $(document).on('click', '.cl_item', function(e) { + var list = document.getElementById('selected-search-list-id'); + var isGroup = $(this).hasClass('is-group'); if($(this).hasClass('selected')) { - var index = g_chosen_users.indexOf(this.id); - if(index > -1) g_chosen_users.splice(index, 1); - } else { - g_chosen_users.push(this.id); - } - $(this).toggleClass('selected'); - }); - - $(document).on('click', '.cl_group_item', function(e) { - if($(this).hasClass('selected')) { - var index = g_chosen_groups.indexOf(this.id); - if(index > -1) g_chosen_groups.splice(index, 1); + var index = -1; + if(isGroup) index = g_chosen_groups.indexOf(this.id); + else index = g_chosen_users.indexOf(this.id); + if(index > -1) { + if(isGroup) g_chosen_groups.splice(index, 1); + else g_chosen_users.splice(index, 1); + $(this).remove(); + } } else { - g_chosen_groups.push(this.id); + if(!isGroup) { + var text = this.id.replace('user_', ''); + g_chosen_users.push(this.id); + } else { + g_chosen_groups.push(this.id); + } + document.getElementById('user-group-search-box').value = ''; + var li = document.createElement('li'); + li.id = this.id; + li.className = 'cl_item cl_access_item selected' + (isGroup ? ' is-group' : ''); + if(!isGroup) { + $.post(OC.generateUrl('/apps/polls/get/displayname'), {username: text}, function(data) { + li.appendChild(document.createTextNode(text + " (" + data + ")")); + list.appendChild(li); + }); + } else { + li.appendChild(document.createTextNode($(this).html())); + list.appendChild(li); + } + $(this).remove(); } - $(this).toggleClass('selected'); }); $('.toggleable-row').hover( @@ -231,8 +261,10 @@ $(document).ready(function () { access_type = this.value; if(access_type == 'select') { $("#access_rights").show(); + $("#selected_access").show(); } else { $("#access_rights").hide(); + $("#selected_access").hide(); } }); @@ -242,44 +274,37 @@ $(document).ready(function () { } }); - $('#group-search-box').on('input', debounce(function() { - var groupUl = document.getElementById('live-search-list-group-id'); - while(groupUl.firstChild) { - groupUl.removeChild(groupUl.firstChild); + $('#user-group-search-box').on('input', debounce(function() { + var ul = document.getElementById('live-search-list-id'); + while(ul.firstChild) { + ul.removeChild(ul.firstChild); } var val = $(this).val(); if(val.length < 3) return; - $.post(OC.generateUrl('/apps/polls/search/groups'), { searchTerm: val }, function(data) { - for(var i=0; i<data.length; i++) { - var gid = data[i]; - var li = document.createElement('li'); - li.setAttribute('id', 'group_' + gid); - li.setAttribute('class', 'cl_group_item cl_access_item'); - li.appendChild(document.createTextNode(gid)); - groupUl.appendChild(li); - } - }); - }, 250)); - - $('#user-search-box').on('input', debounce(function() { - var userUl = document.getElementById('live-search-list-user-id'); - while(userUl.firstChild) { - userUl.removeChild(userUl.firstChild); + var formData = { + searchTerm: val, + groups: JSON.stringify(g_chosen_groups), + users: JSON.stringify(g_chosen_users) } - var val = $(this).val(); - if(val.length < 3) return; - $.post(OC.generateUrl('/apps/polls/search/users'), { searchTerm: val }, function(data) { + $.post(OC.generateUrl('/apps/polls/search'), formData, function(data) { for(var i=0; i<data.length; i++) { - var user = data[i]; + var ug = data[i]; var li = document.createElement('li'); - var span = document.createElement('span'); - li.setAttribute('id', 'user_' + user.uid); - li.setAttribute('class', 'cl_user_item cl_access_item'); - li.appendChild(document.createTextNode(user.displayName)); - span.setAttribute('id', 'sec_name'); - span.appendChild(document.createTextNode(user.uid)); - li.appendChild(span); - userUl.appendChild(li); + li.className = 'cl_item cl_access_item'; + if(ug.isGroup) { + li.id = 'group_' + ug.gid; + li.className += ' is-group'; + li.appendChild(document.createTextNode(ug.gid + " (group)")); + ul.appendChild(li); + } else { + li.id = 'user_' + ug.uid; + li.appendChild(document.createTextNode(ug.uid + " (" + ug.displayName + ")")); + var span = document.createElement('span'); + span.id = 'sec_name'; + span.appendChild(document.createTextNode(ug.uid)); + li.appendChild(span); + ul.appendChild(li); + } } }); }, 250)); |