{"version":3,"file":"form-potential-user-selector.min.js","sources":["../src/form-potential-user-selector.js"],"sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.\n\n/**\n * Potential user selector module.\n *\n * @module     enrol_manual/form-potential-user-selector\n * @class      form-potential-user-selector\n * @package    enrol_manual\n * @copyright  2016 Damyon Wiese\n * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\ndefine(['jquery', 'core/ajax', 'core/templates', 'core/str'], function($, Ajax, Templates, Str) {\n\n    return /** @alias module:enrol_manual/form-potential-user-selector */ {\n\n        processResults: function(selector, results) {\n            var users = [];\n            if ($.isArray(results)) {\n                $.each(results, function(index, user) {\n                    users.push({\n                        value: user.id,\n                        label: user._label\n                    });\n                });\n                return users;\n\n            } else {\n                return results;\n            }\n        },\n\n        transport: function(selector, query, success, failure) {\n            var promise;\n            var courseid = $(selector).attr('courseid');\n            var userfields = $(selector).attr('userfields').split(',');\n            if (typeof courseid === \"undefined\") {\n                courseid = '1';\n            }\n            var enrolid = $(selector).attr('enrolid');\n            if (typeof enrolid === \"undefined\") {\n                enrolid = '';\n            }\n            var perpage = parseInt($(selector).attr('perpage'));\n            if (isNaN(perpage)) {\n                perpage = 100;\n            }\n\n            promise = Ajax.call([{\n                methodname: 'core_enrol_get_potential_users',\n                args: {\n                    courseid: courseid,\n                    enrolid: enrolid,\n                    search: query,\n                    searchanywhere: true,\n                    page: 0,\n                    perpage: perpage + 1\n                }\n            }]);\n\n            promise[0].then(function(results) {\n                var promises = [],\n                    i = 0;\n\n                if (results.length <= perpage) {\n                    // Render the label.\n                    $.each(results, function(index, user) {\n                        var ctx = user,\n                            identity = [];\n                        $.each(userfields, function(i, k) {\n                            if (typeof user[k] !== 'undefined' && user[k] !== '') {\n                                ctx.hasidentity = true;\n                                identity.push(user[k]);\n                            }\n                        });\n                        ctx.identity = identity.join(', ');\n                        promises.push(Templates.render('enrol_manual/form-user-selector-suggestion', ctx));\n                    });\n\n                    // Apply the label to the results.\n                    return $.when.apply($.when, promises).then(function() {\n                        var args = arguments;\n                        $.each(results, function(index, user) {\n                            user._label = args[i];\n                            i++;\n                        });\n                        success(results);\n                        return;\n                    });\n\n                } else {\n                    return Str.get_string('toomanyuserstoshow', 'core', '>' + perpage).then(function(toomanyuserstoshow) {\n                        success(toomanyuserstoshow);\n                        return;\n                    });\n                }\n\n            }).fail(failure);\n        }\n\n    };\n\n});\n"],"names":["define","$","Ajax","Templates","Str","processResults","selector","results","users","isArray","each","index","user","push","value","id","label","_label","transport","query","success","failure","courseid","attr","userfields","split","enrolid","perpage","parseInt","isNaN","call","methodname","args","search","searchanywhere","page","then","promises","i","length","ctx","identity","k","hasidentity","join","render","when","apply","arguments","get_string","toomanyuserstoshow","fail"],"mappings":";;;;;;;;;AAyBAA,mDAAO,CAAC,SAAU,YAAa,iBAAkB,aAAa,SAASC,EAAGC,KAAMC,UAAWC,WAEjB,CAElEC,eAAgB,SAASC,SAAUC,aAC3BC,MAAQ,UACRP,EAAEQ,QAAQF,UACVN,EAAES,KAAKH,SAAS,SAASI,MAAOC,MAC5BJ,MAAMK,KAAK,CACPC,MAAOF,KAAKG,GACZC,MAAOJ,KAAKK,YAGbT,OAGAD,SAIfW,UAAW,SAASZ,SAAUa,MAAOC,QAASC,aAEtCC,SAAWrB,EAAEK,UAAUiB,KAAK,YAC5BC,WAAavB,EAAEK,UAAUiB,KAAK,cAAcE,MAAM,UAC9B,IAAbH,WACPA,SAAW,SAEXI,QAAUzB,EAAEK,UAAUiB,KAAK,gBACR,IAAZG,UACPA,QAAU,QAEVC,QAAUC,SAAS3B,EAAEK,UAAUiB,KAAK,YACpCM,MAAMF,WACNA,QAAU,KAGJzB,KAAK4B,KAAK,CAAC,CACjBC,WAAY,iCACZC,KAAM,CACFV,SAAUA,SACVI,QAASA,QACTO,OAAQd,MACRe,gBAAgB,EAChBC,KAAM,EACNR,QAASA,QAAU,MAInB,GAAGS,MAAK,SAAS7B,aACjB8B,SAAW,GACXC,EAAI,SAEJ/B,QAAQgC,QAAUZ,SAElB1B,EAAES,KAAKH,SAAS,SAASI,MAAOC,UACxB4B,IAAM5B,KACN6B,SAAW,GACfxC,EAAES,KAAKc,YAAY,SAASc,EAAGI,QACJ,IAAZ9B,KAAK8B,IAAkC,KAAZ9B,KAAK8B,KACvCF,IAAIG,aAAc,EAClBF,SAAS5B,KAAKD,KAAK8B,QAG3BF,IAAIC,SAAWA,SAASG,KAAK,MAC7BP,SAASxB,KAAKV,UAAU0C,OAAO,6CAA8CL,SAI1EvC,EAAE6C,KAAKC,MAAM9C,EAAE6C,KAAMT,UAAUD,MAAK,eACnCJ,KAAOgB,UACX/C,EAAES,KAAKH,SAAS,SAASI,MAAOC,MAC5BA,KAAKK,OAASe,KAAKM,GACnBA,OAEJlB,QAAQb,aAKLH,IAAI6C,WAAW,qBAAsB,OAAQ,IAAMtB,SAASS,MAAK,SAASc,oBAC7E9B,QAAQ8B,0BAKjBC,KAAK9B"}