Proyectos de Subversion Moodle

Rev

Autoría | Ultima modificación | Ver Log |

{"version":3,"file":"competencypicker_user_plans.min.js","sources":["../src/competencypicker_user_plans.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 * Competency picker from user plans.\n *\n * To handle 'save' events use: picker.on('save').\n *\n * This will receive a object with either a single 'competencyId', or an array in 'competencyIds'\n * depending on the value of multiSelect.\n *\n * @module     tool_lp/competencypicker_user_plans\n * @copyright  2015 Frédéric Massart - FMCorz.net\n * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\ndefine(['jquery',\n        'core/notification',\n        'core/ajax',\n        'core/templates',\n        'core/str',\n        'tool_lp/tree',\n        'tool_lp/competencypicker'\n        ],\n        function($, Notification, Ajax, Templates, Str, Tree, PickerBase) {\n\n    /**\n     * Competency picker in plan class.\n     *\n     * @class tool_lp/competencypicker_user_plans\n     * @param {Number} userId\n     * @param {Number|false} singlePlan The ID of the plan when limited to one.\n     * @param {Boolean} multiSelect Support multi-select in the tree.\n     */\n    var Picker = function(userId, singlePlan, multiSelect) {\n        PickerBase.prototype.constructor.apply(this, [1, false, 'self', multiSelect]);\n        this._userId = userId;\n        this._plans = [];\n\n        if (singlePlan) {\n            this._planId = singlePlan;\n            this._singlePlan = true;\n        }\n    };\n    Picker.prototype = Object.create(PickerBase.prototype);\n\n    /** @property {Array} The list of plans fetched. */\n    Picker.prototype._plans = null;\n    /** @property {Number} The current plan ID. */\n    Picker.prototype._planId = null;\n    /** @property {Boolean} Whether we can browse plans or not. */\n    Picker.prototype._singlePlan = false;\n    /** @property {Number} The user the plans belongs to. */\n    Picker.prototype._userId = null;\n\n    /**\n     * Hook to executed after the view is rendered.\n     *\n     * @method _afterRender\n     */\n    Picker.prototype._afterRender = function() {\n        var self = this;\n        PickerBase.prototype._afterRender.apply(self, arguments);\n\n        // Add listener for framework change.\n        if (!self._singlePlan) {\n            self._find('[data-action=\"chooseplan\"]').change(function(e) {\n                self._planId = $(e.target).val();\n                self._loadCompetencies().then(self._refresh.bind(self))\n                .catch(Notification.exception);\n            });\n        }\n    };\n\n    /**\n     * Fetch the competencies.\n     *\n     * @param {Number} planId The planId.\n     * @param {String} searchText Limit the competencies to those matching the text.\n     * @method _fetchCompetencies\n     * @return {Promise} The promise object.\n     */\n    Picker.prototype._fetchCompetencies = function(planId, searchText) {\n        var self = this;\n\n        return Ajax.call([\n            {methodname: 'core_competency_list_plan_competencies', args: {\n                id: planId\n            }}\n        ])[0].done(function(competencies) {\n\n            // Expand the list of competencies into a fake tree.\n            var i, comp;\n            var tree = [];\n            for (i = 0; i < competencies.length; i++) {\n                comp = competencies[i].competency;\n                if (comp.shortname.toLowerCase().indexOf(searchText.toLowerCase()) < 0) {\n                    continue;\n                }\n                comp.children = [];\n                comp.haschildren = 0;\n                tree.push(comp);\n            }\n\n            self._competencies = tree;\n\n        }).fail(Notification.exception);\n    };\n\n    /**\n     * Convenience method to get a plan object.\n     *\n     * @param {Number} id The plan ID.\n     * @return {Object|undefined} The plan.\n     * @method _getPlan\n     */\n    Picker.prototype._getPlan = function(id) {\n        var plan;\n        $.each(this._plans, function(i, f) {\n            if (f.id == id) {\n                plan = f;\n                return;\n            }\n        });\n        return plan;\n    };\n\n    /**\n     * Load the competencies.\n     *\n     * @method _loadCompetencies\n     * @return {Promise}\n     */\n    Picker.prototype._loadCompetencies = function() {\n        return this._fetchCompetencies(this._planId, this._searchText);\n    };\n\n    /**\n     * Load the plans.\n     *\n     * @method _loadPlans\n     * @return {Promise}\n     */\n    Picker.prototype._loadPlans = function() {\n        var promise,\n            self = this;\n\n        // Quit early because we already have the data.\n        if (self._plans.length > 0) {\n            return $.when();\n        }\n\n        if (self._singlePlan) {\n            promise = Ajax.call([\n                {methodname: 'core_competency_read_plan', args: {\n                    id: this._planId\n                }}\n            ])[0].then(function(plan) {\n                return [plan];\n            });\n        } else {\n            promise = Ajax.call([\n                {methodname: 'core_competency_list_user_plans', args: {\n                    userid: self._userId\n                }}\n            ])[0];\n        }\n\n        return promise.done(function(plans) {\n            self._plans = plans;\n        }).fail(Notification.exception);\n    };\n\n    /**\n     * Hook to executed before render.\n     *\n     * @method _preRender\n     * @return {Promise}\n     */\n    Picker.prototype._preRender = function() {\n        var self = this;\n        return self._loadPlans().then(function() {\n            if (!self._planId && self._plans.length > 0) {\n                self._planId = self._plans[0].id;\n            }\n\n            // We could not set a framework ID, that probably means there are no frameworks accessible.\n            if (!self._planId) {\n                self._plans = [];\n                return $.when();\n            }\n\n            return self._loadCompetencies();\n        });\n    };\n\n    /**\n     * Render the dialogue.\n     *\n     * @method _render\n     * @return {Promise}\n     */\n    Picker.prototype._render = function() {\n        var self = this;\n        return self._preRender().then(function() {\n\n            if (!self._singlePlan) {\n                $.each(self._plans, function(i, plan) {\n                    if (plan.id == self._planId) {\n                        plan.selected = true;\n                    } else {\n                        plan.selected = false;\n                    }\n                });\n            }\n\n            var context = {\n                competencies: self._competencies,\n                plan: self._getPlan(self._planId),\n                plans: self._plans,\n                search: self._searchText,\n                singlePlan: self._singlePlan,\n            };\n\n            return Templates.render('tool_lp/competency_picker_user_plans', context);\n        });\n    };\n\n    return Picker;\n});\n"],"names":["define","$","Notification","Ajax","Templates","Str","Tree","PickerBase","Picker","userId","singlePlan","multiSelect","prototype","constructor","apply","this","_userId","_plans","_planId","_singlePlan","Object","create","_afterRender","self","arguments","_find","change","e","target","val","_loadCompetencies","then","_refresh","bind","catch","exception","_fetchCompetencies","planId","searchText","call","methodname","args","id","done","competencies","i","comp","tree","length","competency","shortname","toLowerCase","indexOf","children","haschildren","push","_competencies","fail","_getPlan","plan","each","f","_searchText","_loadPlans","when","userid","plans","_preRender","_render","selected","context","search","render"],"mappings":"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"}