Your IP : 192.168.165.1


Current Path : C:/xampp/htdocs/moodle/admin/tool/lp/amd/build/
Upload File :
Current File : C:/xampp/htdocs/moodle/admin/tool/lp/amd/build/competencyruleconfig.min.js.map

{"version":3,"sources":["../src/competencyruleconfig.js"],"names":["define","$","Notification","Templates","Dialogue","Outcomes","Str","RuleConfig","tree","rulesModules","_eventNode","_tree","_rulesModules","_setUp","prototype","_competency","_outcomesOption","_popup","_ready","_rules","_afterChange","_isValid","_find","prop","_afterRuleConfigChange","e","rule","_getRule","_afterRender","self","on","_switchedOutcome","trigger","_switchedRule","_trigger","_getConfig","close","canBeConfigured","can","each","index","canConfig","display","when","get_string","_render","then","title","render","bind","fail","exception","selector","getContent","find","_getApplicableOutcomesOptions","options","outcome","push","code","name","selected","ruleoutcome","_getApplicableRulesOptions","_getRuleName","getType","type","ruletype","ruleconfig","getConfig","_getOutcome","val","result","modInfo","_initOutcomes","getAll","outcomes","_initRules","promises","promise","init","setTargetCompetency","splice","apply","NONE","isValid","handler","_preRender","ready","config","rules","context","competencyshortname","shortname","setTargetCompetencyId","competencyId","getCompetency","modules","Deferred","amd","require","arguments","Module","always","resolve","hide","empty","show","container","injectTemplate","catch","data"],"mappings":"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","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 rule config.\n *\n * @package    tool_lp\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/templates',\n        'tool_lp/dialogue',\n        'tool_lp/competency_outcomes',\n        'core/str'],\n        function($, Notification, Templates, Dialogue, Outcomes, Str) {\n\n    /**\n     * Competency rule class.\n     *\n     * When implementing this you should attach a listener to the event 'save'\n     * on the instance. E.g.\n     *\n     * var config = new RuleConfig(tree, modules);\n     * config.on('save', function(e, config) { ... });\n     *\n     * @param {competencytree} tree The competency tree.\n     * @param {Array} rulesModules The modules containing the rules: [{ typeName: { amd: amdModule, name: ruleName }}].\n     */\n    var RuleConfig = function(tree, rulesModules) {\n        this._eventNode = $('<div></div>');\n        this._tree = tree;\n        this._rulesModules = rulesModules;\n        this._setUp();\n    };\n\n    /** @type {Object} The current competency. */\n    RuleConfig.prototype._competency = null;\n    /** @type {Node} The node we attach the events to. */\n    RuleConfig.prototype._eventNode = null;\n    /** @type {Array} Outcomes options. */\n    RuleConfig.prototype._outcomesOption = null;\n    /** @type {Dialogue} The dialogue. */\n    RuleConfig.prototype._popup = null;\n    /** @type {Promise} Resolved when the module is ready. */\n    RuleConfig.prototype._ready = null;\n    /** @type {Array} The rules. */\n    RuleConfig.prototype._rules = null;\n    /** @type {Array} The rules modules. */\n    RuleConfig.prototype._rulesModules = null;\n    /** @type {competencytree} The competency tree. */\n    RuleConfig.prototype._tree = null;\n\n    /**\n     * After change.\n     *\n     * Triggered when a change occured.\n     *\n     * @method _afterChange\n     * @protected\n     */\n    RuleConfig.prototype._afterChange = function() {\n        if (!this._isValid()) {\n            this._find('[data-action=\"save\"]').prop('disabled', true);\n        } else {\n            this._find('[data-action=\"save\"]').prop('disabled', false);\n        }\n    };\n\n    /**\n     * After change in rule's config.\n     *\n     * Triggered when a change occured in a specific rule config.\n     *\n     * @method _afterRuleConfigChange\n     * @protected\n     * @param {Event} e\n     * @param {Rule} rule\n     */\n    RuleConfig.prototype._afterRuleConfigChange = function(e, rule) {\n        if (rule != this._getRule()) {\n            // This rule is not the current one any more, we can ignore.\n            return;\n        }\n        this._afterChange();\n    };\n\n    /**\n     * After render hook.\n     *\n     * @method _afterRender\n     * @protected\n     */\n    RuleConfig.prototype._afterRender = function() {\n        var self = this;\n\n        self._find('[name=\"outcome\"]').on('change', function() {\n            self._switchedOutcome();\n        }).trigger('change');\n\n        self._find('[name=\"rule\"]').on('change', function() {\n            self._switchedRule();\n        }).trigger('change');\n\n        self._find('[data-action=\"save\"]').on('click', function() {\n            self._trigger('save', self._getConfig());\n            self.close();\n        });\n\n        self._find('[data-action=\"cancel\"]').on('click', function() {\n            self.close();\n        });\n    };\n\n    /**\n     * Whether the current competency can be configured.\n     *\n     * @return {Boolean}\n     * @method canBeConfigured\n     */\n    RuleConfig.prototype.canBeConfigured = function() {\n        var can = false;\n        $.each(this._rules, function(index, rule) {\n            if (rule.canConfig()) {\n                can = true;\n                return;\n            }\n        });\n        return can;\n    };\n\n    /**\n     * Close the dialogue.\n     *\n     * @method close\n     */\n    RuleConfig.prototype.close = function() {\n        this._popup.close();\n        this._popup = null;\n    };\n\n    /**\n     * Opens the picker.\n     *\n     * @param {Number} competencyId The competency ID of the competency to work on.\n     * @method display\n     * @return {Promise}\n     */\n    RuleConfig.prototype.display = function() {\n        var self = this;\n        if (!self._competency) {\n            return false;\n        }\n        return $.when(Str.get_string('competencyrule', 'tool_lp'), self._render())\n        .then(function(title, render) {\n            self._popup = new Dialogue(\n                title,\n                render[0],\n                self._afterRender.bind(self)\n            );\n            return;\n        }).fail(Notification.exception);\n    };\n\n    /**\n     * Find a node in the dialogue.\n     *\n     * @param {String} selector\n     * @return {JQuery}\n     * @method _find\n     * @protected\n     */\n    RuleConfig.prototype._find = function(selector) {\n        return $(this._popup.getContent()).find(selector);\n    };\n\n    /**\n     * Get the applicable outcome options.\n     *\n     * @return {Array}\n     * @method _getApplicableOutcomesOptions\n     * @protected\n     */\n    RuleConfig.prototype._getApplicableOutcomesOptions = function() {\n        var self = this,\n            options = [];\n\n        $.each(self._outcomesOption, function(index, outcome) {\n            options.push({\n                code: outcome.code,\n                name: outcome.name,\n                selected: (outcome.code == self._competency.ruleoutcome) ? true : false,\n            });\n        });\n\n        return options;\n    };\n\n    /**\n     * Get the applicable rules options.\n     *\n     * @return {Array}\n     * @method _getApplicableRulesOptions\n     * @protected\n     */\n    RuleConfig.prototype._getApplicableRulesOptions = function() {\n        var self = this,\n            options = [];\n\n        $.each(self._rules, function(index, rule) {\n            if (!rule.canConfig()) {\n                return;\n            }\n            options.push({\n                name: self._getRuleName(rule.getType()),\n                type: rule.getType(),\n                selected: (rule.getType() == self._competency.ruletype) ? true : false,\n            });\n        });\n\n        return options;\n    };\n\n    /**\n     * Get the full config for the competency.\n     *\n     * @return {Object} Contains rule, ruleoutcome and ruleconfig.\n     * @method _getConfig\n     * @protected\n     */\n    RuleConfig.prototype._getConfig = function() {\n        var rule = this._getRule();\n        return {\n            ruletype: rule ? rule.getType() : null,\n            ruleconfig: rule ? rule.getConfig() : null,\n            ruleoutcome: this._getOutcome()\n        };\n    };\n\n    /**\n     * Get the selected outcome code.\n     *\n     * @return {String}\n     * @method _getOutcome\n     * @protected\n     */\n    RuleConfig.prototype._getOutcome = function() {\n        return this._find('[name=\"outcome\"]').val();\n    };\n\n    /**\n     * Get the selected rule.\n     *\n     * @return {null|Rule}\n     * @method _getRule\n     * @protected\n     */\n    RuleConfig.prototype._getRule = function() {\n        var result,\n            type = this._find('[name=\"rule\"]').val();\n\n        $.each(this._rules, function(index, rule) {\n            if (rule.getType() == type) {\n                result = rule;\n                return;\n            }\n        });\n\n        return result;\n    };\n\n    /**\n     * Return the name of a rule.\n     *\n     * @param  {String} type The type of a rule.\n     * @return {String}\n     * @method _getRuleName\n     * @protected\n     */\n    RuleConfig.prototype._getRuleName = function(type) {\n        var self = this,\n            name;\n        $.each(self._rulesModules, function(index, modInfo) {\n            if (modInfo.type == type) {\n                name = modInfo.name;\n                return;\n            }\n        });\n        return name;\n    };\n\n    /**\n     * Initialise the outcomes.\n     *\n     * @return {Promise}\n     * @method _initOutcomes\n     * @protected\n     */\n    RuleConfig.prototype._initOutcomes = function() {\n        var self = this;\n        return Outcomes.getAll().then(function(outcomes) {\n            self._outcomesOption = outcomes;\n            return;\n        });\n    };\n\n    /**\n     * Initialise the rules.\n     *\n     * @return {Promise}\n     * @method _initRules\n     * @protected\n     */\n    RuleConfig.prototype._initRules = function() {\n        var self = this,\n            promises = [];\n        $.each(self._rules, function(index, rule) {\n            var promise = rule.init().then(function() {\n                rule.setTargetCompetency(self._competency);\n                rule.on('change', self._afterRuleConfigChange.bind(self));\n                return;\n            }, function() {\n                // Upon failure remove the rule, and resolve the promise.\n                self._rules.splice(index, 1);\n                return $.when();\n            });\n            promises.push(promise);\n        });\n\n        return $.when.apply($.when, promises);\n    };\n\n    /**\n     * Whether or not the current config is valid.\n     *\n     * @return {Boolean}\n     * @method _isValid\n     * @protected\n     */\n    RuleConfig.prototype._isValid = function() {\n        var outcome = this._getOutcome(),\n            rule = this._getRule();\n\n        if (outcome == Outcomes.NONE) {\n            return true;\n        } else if (!rule) {\n            return false;\n        }\n\n        return rule.isValid();\n    };\n\n    /**\n     * Register an event listener.\n     *\n     * @param {String} type The event type.\n     * @param {Function} handler The event listener.\n     * @method on\n     */\n    RuleConfig.prototype.on = function(type, handler) {\n        this._eventNode.on(type, handler);\n    };\n\n    /**\n     * Hook to executed before render.\n     *\n     * @method _preRender\n     * @protected\n     * @return {Promise}\n     */\n    RuleConfig.prototype._preRender = function() {\n        // We need to have all the information about the rule plugins first.\n        return this.ready();\n    };\n\n    /**\n     * Returns a promise that is resolved when the module is ready.\n     *\n     * @return {Promise}\n     * @method ready\n     * @protected\n     */\n    RuleConfig.prototype.ready = function() {\n        return this._ready.promise();\n    };\n\n    /**\n     * Render the dialogue.\n     *\n     * @method _render\n     * @protected\n     * @return {Promise}\n     */\n    RuleConfig.prototype._render = function() {\n        var self = this;\n        return this._preRender().then(function() {\n            var config;\n\n            if (!self.canBeConfigured()) {\n                config = false;\n            } else {\n                config = {};\n                config.outcomes = self._getApplicableOutcomesOptions();\n                config.rules = self._getApplicableRulesOptions();\n            }\n\n            var context = {\n                competencyshortname: self._competency.shortname,\n                config: config\n            };\n\n            return Templates.render('tool_lp/competency_rule_config', context);\n        });\n    };\n\n    /**\n     * Set the target competency.\n     *\n     * @param {Number} competencyId The target competency Id.\n     * @method setTargetCompetencyId\n     */\n    RuleConfig.prototype.setTargetCompetencyId = function(competencyId) {\n        var self = this;\n        self._competency = self._tree.getCompetency(competencyId);\n        $.each(self._rules, function(index, rule) {\n            rule.setTargetCompetency(self._competency);\n        });\n    };\n\n    /**\n     * Set up the instance.\n     *\n     * @method _setUp\n     * @protected\n     */\n    RuleConfig.prototype._setUp = function() {\n        var self = this,\n            promises = [],\n            modules = [];\n\n        self._ready = $.Deferred();\n        self._rules = [];\n\n        $.each(self._rulesModules, function(index, rule) {\n            modules.push(rule.amd);\n        });\n\n        // Load all the modules.\n        require(modules, function() {\n            $.each(arguments, function(index, Module) {\n                // Instantiate the rule and listen to it.\n                var rule = new Module(self._tree);\n                self._rules.push(rule);\n            });\n\n            // Load all the option values.\n            promises.push(self._initRules());\n            promises.push(self._initOutcomes());\n\n            // Ready when everything is done.\n            $.when.apply($.when, promises).always(function() {\n                self._ready.resolve();\n            });\n        });\n    };\n\n    /**\n     * Called when the user switches outcome.\n     *\n     * @method _switchedOutcome\n     * @protected\n     */\n    RuleConfig.prototype._switchedOutcome = function() {\n        var self = this,\n            type = self._getOutcome();\n\n        if (type == Outcomes.NONE) {\n            // Reset to defaults.\n            self._find('[data-region=\"rule-type\"]').hide()\n                .find('[name=\"rule\"]').val(-1);\n            self._find('[data-region=\"rule-config\"]').empty().hide();\n            self._afterChange();\n            return;\n        }\n\n        self._find('[data-region=\"rule-type\"]').show();\n        self._find('[data-region=\"rule-config\"]').show();\n        self._afterChange();\n    };\n\n    /**\n     * Called when the user switches rule.\n     *\n     * @method _switchedRule\n     * @protected\n     */\n    RuleConfig.prototype._switchedRule = function() {\n        var self = this,\n            container = self._find('[data-region=\"rule-config\"]'),\n            rule = self._getRule();\n\n        if (!rule) {\n            container.empty().hide();\n            self._afterChange();\n            return;\n        }\n        rule.injectTemplate(container).then(function() {\n            container.show();\n            return;\n        }).always(function() {\n            self._afterChange();\n        }).catch(function() {\n            container.empty().hide();\n        });\n    };\n\n    /**\n     * Trigger an event.\n     *\n     * @param {String} type The type of event.\n     * @param {Object} data The data to pass to the listeners.\n     * @method _trigger\n     * @protected\n     */\n    RuleConfig.prototype._trigger = function(type, data) {\n        this._eventNode.trigger(type, [data]);\n    };\n\n    return /** @alias module:tool_lp/competencyruleconfig */ RuleConfig;\n\n});\n"],"file":"competencyruleconfig.min.js"}