| @@ 1-54 (lines=54) @@ | ||
| 1 | $('i.glyphicon-refresh-animate').hide(); |
|
| 2 | function updateItems(r) { |
|
| 3 | _opts.items.available = r.available; |
|
| 4 | _opts.items.assigned = r.assigned; |
|
| 5 | search('available'); |
|
| 6 | search('assigned'); |
|
| 7 | } |
|
| 8 | ||
| 9 | $('.btn-assign').click(function () { |
|
| 10 | var $this = $(this); |
|
| 11 | var target = $this.data('target'); |
|
| 12 | var items = $('select.list[data-target="' + target + '"]').val(); |
|
| 13 | ||
| 14 | if (items && items.length) { |
|
| 15 | $this.children('i.glyphicon-refresh-animate').show(); |
|
| 16 | $.post($this.attr('href'), {items: items}, function (r) { |
|
| 17 | updateItems(r); |
|
| 18 | }).always(function () { |
|
| 19 | $this.children('i.glyphicon-refresh-animate').hide(); |
|
| 20 | }); |
|
| 21 | } |
|
| 22 | return false; |
|
| 23 | }); |
|
| 24 | ||
| 25 | $('.search[data-target]').keyup(function () { |
|
| 26 | search($(this).data('target')); |
|
| 27 | }); |
|
| 28 | ||
| 29 | function search(target) { |
|
| 30 | var $list = $('select.list[data-target="' + target + '"]'); |
|
| 31 | $list.html(''); |
|
| 32 | var q = $('.search[data-target="' + target + '"]').val(); |
|
| 33 | ||
| 34 | var groups = { |
|
| 35 | role: [$('<optgroup label="Roles">'), false], |
|
| 36 | permission: [$('<optgroup label="Permission">'), false], |
|
| 37 | route: [$('<optgroup label="Routes">'), false], |
|
| 38 | }; |
|
| 39 | $.each(_opts.items[target], function (name, group) { |
|
| 40 | if (name.indexOf(q) >= 0) { |
|
| 41 | $('<option>').text(name).val(name).appendTo(groups[group][0]); |
|
| 42 | groups[group][1] = true; |
|
| 43 | } |
|
| 44 | }); |
|
| 45 | $.each(groups, function () { |
|
| 46 | if (this[1]) { |
|
| 47 | $list.append(this[0]); |
|
| 48 | } |
|
| 49 | }); |
|
| 50 | } |
|
| 51 | ||
| 52 | // initial |
|
| 53 | search('available'); |
|
| 54 | search('assigned'); |
|
| 55 | ||
| @@ 1-53 (lines=53) @@ | ||
| 1 | $('i.glyphicon-refresh-animate').hide(); |
|
| 2 | function updateItems(r) { |
|
| 3 | _opts.items.available = r.available; |
|
| 4 | _opts.items.assigned = r.assigned; |
|
| 5 | search('available'); |
|
| 6 | search('assigned'); |
|
| 7 | } |
|
| 8 | ||
| 9 | $('.btn-assign').click(function () { |
|
| 10 | var $this = $(this); |
|
| 11 | var target = $this.data('target'); |
|
| 12 | var items = $('select.list[data-target="' + target + '"]').val(); |
|
| 13 | ||
| 14 | if (items && items.length) { |
|
| 15 | $this.children('i.glyphicon-refresh-animate').show(); |
|
| 16 | $.post($this.attr('href'), {items: items}, function (r) { |
|
| 17 | updateItems(r); |
|
| 18 | }).always(function () { |
|
| 19 | $this.children('i.glyphicon-refresh-animate').hide(); |
|
| 20 | }); |
|
| 21 | } |
|
| 22 | return false; |
|
| 23 | }); |
|
| 24 | ||
| 25 | $('.search[data-target]').keyup(function () { |
|
| 26 | search($(this).data('target')); |
|
| 27 | }); |
|
| 28 | ||
| 29 | function search(target) { |
|
| 30 | var $list = $('select.list[data-target="' + target + '"]'); |
|
| 31 | $list.html(''); |
|
| 32 | var q = $('.search[data-target="' + target + '"]').val(); |
|
| 33 | ||
| 34 | var groups = { |
|
| 35 | role: [$('<optgroup label="Roles">'), false], |
|
| 36 | permission: [$('<optgroup label="Permission">'), false], |
|
| 37 | }; |
|
| 38 | $.each(_opts.items[target], function (name, group) { |
|
| 39 | if (name.indexOf(q) >= 0) { |
|
| 40 | $('<option>').text(name).val(name).appendTo(groups[group][0]); |
|
| 41 | groups[group][1] = true; |
|
| 42 | } |
|
| 43 | }); |
|
| 44 | $.each(groups, function () { |
|
| 45 | if (this[1]) { |
|
| 46 | $list.append(this[0]); |
|
| 47 | } |
|
| 48 | }); |
|
| 49 | } |
|
| 50 | ||
| 51 | // initial |
|
| 52 | search('available'); |
|
| 53 | search('assigned'); |
|
| 54 | ||