Proyectos de Subversion Moodle

Rev

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

{"version":3,"file":"actionselector.min.js","sources":["../src/actionselector.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 * Action selector.\n *\n * To handle 'save' events use: actionselector.on('save')\n * This will receive the information to display in popup.\n * The actions have the format [{'text': sometext, 'value' : somevalue}].\n *\n * @module     tool_lp/actionselector\n * @copyright  2016 Serge Gauthier - <serge.gauthier.2@umontreal.ca>\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        'tool_lp/dialogue',\n        'tool_lp/event_base'],\n        function($, Notification, Ajax, Templates, Dialogue, EventBase) {\n\n    /**\n     * Action selector class.\n     *\n     * @class tool_lp/actionselector\n     * @param {String} title The title of popup.\n     * @param {String} message The message to display.\n     * @param {object} actions The actions that can be selected.\n     * @param {String} confirm Text for confirm button.\n     * @param {String} cancel Text for cancel button.\n     */\n    var ActionSelector = function(title, message, actions, confirm, cancel) {\n        var self = this;\n\n        EventBase.prototype.constructor.apply(this, []);\n        self._title = title;\n        self._message = message;\n        self._actions = actions;\n        self._confirm = confirm;\n        self._cancel = cancel;\n        self._selectedValue = null;\n        self._reset();\n    };\n\n    ActionSelector.prototype = Object.create(EventBase.prototype);\n\n    /** @property {String} The value that was selected. */\n    ActionSelector.prototype._selectedValue = null;\n    /** @property {Dialogue} The reference to the dialogue. */\n    ActionSelector.prototype._popup = null;\n    /** @property {String} The title of popup. */\n    ActionSelector.prototype._title = null;\n    /** @property {String} The message in popup. */\n    ActionSelector.prototype._message = null;\n    /** @property {object} The information for radion buttons. */\n    ActionSelector.prototype._actions = null;\n    /** @property {String} The text for confirm button. */\n    ActionSelector.prototype._confirm = null;\n    /** @property {String} The text for cancel button. */\n    ActionSelector.prototype._cancel = null;\n\n    /**\n     * Hook to executed after the view is rendered.\n     *\n     * @method _afterRender\n     */\n    ActionSelector.prototype._afterRender = function() {\n        var self = this;\n\n        // Confirm button is disabled until a choice is done.\n        self._find('[data-action=\"action-selector-confirm\"]').attr('disabled', 'disabled');\n\n        // Add listener for radio buttons change.\n        self._find('[data-region=\"action-selector-radio-buttons\"]').change(function() {\n            self._selectedValue = $(\"input[type='radio']:checked\").val();\n            self._find('[data-action=\"action-selector-confirm\"]').removeAttr('disabled');\n            self._refresh.bind(self);\n        });\n\n        // Add listener for cancel.\n        self._find('[data-action=\"action-selector-cancel\"]').click(function(e) {\n            e.preventDefault();\n            self.close();\n        });\n\n        // Add listener for confirm.\n        self._find('[data-action=\"action-selector-confirm\"]').click(function(e) {\n            e.preventDefault();\n            if (!self._selectedValue.length) {\n                return;\n            }\n            self._trigger('save', {action: self._selectedValue});\n            self.close();\n        });\n    };\n\n    /**\n     * Close the dialogue.\n     *\n     * @method close\n     */\n    ActionSelector.prototype.close = function() {\n        var self = this;\n        self._popup.close();\n        self._reset();\n    };\n\n    /**\n     * Opens the action selector.\n     *\n     * @method display\n     * @return {Promise}\n     */\n    ActionSelector.prototype.display = function() {\n        var self = this;\n        return self._render().then(function(html) {\n            self._popup = new Dialogue(\n                self._title,\n                html,\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} The node\n     * @method _find\n     */\n    ActionSelector.prototype._find = function(selector) {\n        return $(this._popup.getContent()).find(selector);\n    };\n\n    /**\n     * Refresh the view.\n     *\n     * @method _refresh\n     * @return {Promise}\n     */\n    ActionSelector.prototype._refresh = function() {\n        var self = this;\n        return self._render().then(function(html) {\n            self._find('[data-region=\"action-selector\"]').replaceWith(html);\n            self._afterRender();\n            return;\n        });\n    };\n\n    /**\n     * Render the dialogue.\n     *\n     * @method _render\n     * @return {Promise}\n     */\n    ActionSelector.prototype._render = function() {\n        var self = this;\n        var choices = [];\n        for (var i in self._actions) {\n            choices.push(self._actions[i]);\n        }\n        var content = {'message': self._message, 'choices': choices,\n            'confirm': self._confirm, 'cancel': self._cancel};\n\n        return Templates.render('tool_lp/action_selector', content);\n    };\n\n    /**\n     * Reset the dialogue properties.\n     *\n     * This does not reset everything, just enough to reset the UI.\n     *\n     * @method _reset\n     */\n    ActionSelector.prototype._reset = function() {\n        this._popup = null;\n        this._selectedValue = '';\n    };\n\n    return ActionSelector;\n\n});\n"],"names":["define","$","Notification","Ajax","Templates","Dialogue","EventBase","ActionSelector","title","message","actions","confirm","cancel","prototype","constructor","apply","this","_title","_message","_actions","_confirm","_cancel","_selectedValue","_reset","Object","create","_popup","_afterRender","self","_find","attr","change","val","removeAttr","_refresh","bind","click","e","preventDefault","close","length","_trigger","action","display","_render","then","html","fail","exception","selector","getContent","find","replaceWith","choices","i","push","content","render"],"mappings":";;;;;;;;;;;AA2BAA,gCAAO,CAAC,SACA,oBACA,YACA,iBACA,mBACA,uBACA,SAASC,EAAGC,aAAcC,KAAMC,UAAWC,SAAUC,eAYrDC,eAAiB,SAASC,MAAOC,QAASC,QAASC,QAASC,QAG5DN,UAAUO,UAAUC,YAAYC,MAAMC,KAAM,IAFjCA,KAGNC,OAAST,MAHHQ,KAINE,SAAWT,QAJLO,KAKNG,SAAWT,QALLM,KAMNI,SAAWT,QANLK,KAONK,QAAUT,OAPJI,KAQNM,eAAiB,KARXN,KASNO,iBAGThB,eAAeM,UAAYW,OAAOC,OAAOnB,UAAUO,YAG1BS,eAAiB,KAE1Cf,eAAeM,UAAUa,OAAS,KAElCnB,eAAeM,UAAUI,OAAS,KAElCV,eAAeM,UAAUK,SAAW,KAEpCX,eAAeM,UAAUM,SAAW,KAEpCZ,eAAeM,UAAUO,SAAW,KAEpCb,eAAeM,UAAUQ,QAAU,KAOnCd,eAAeM,UAAUc,aAAe,eAChCC,KAAOZ,KAGXY,KAAKC,MAAM,2CAA2CC,KAAK,WAAY,YAGvEF,KAAKC,MAAM,iDAAiDE,QAAO,WAC/DH,KAAKN,eAAiBrB,EAAE,+BAA+B+B,MACvDJ,KAAKC,MAAM,2CAA2CI,WAAW,YACjEL,KAAKM,SAASC,KAAKP,SAIvBA,KAAKC,MAAM,0CAA0CO,OAAM,SAASC,GAChEA,EAAEC,iBACFV,KAAKW,WAITX,KAAKC,MAAM,2CAA2CO,OAAM,SAASC,GACjEA,EAAEC,iBACGV,KAAKN,eAAekB,SAGzBZ,KAAKa,SAAS,OAAQ,CAACC,OAAQd,KAAKN,iBACpCM,KAAKW,aASbhC,eAAeM,UAAU0B,MAAQ,WAClBvB,KACNU,OAAOa,QADDvB,KAENO,UASThB,eAAeM,UAAU8B,QAAU,eAC3Bf,KAAOZ,YACJY,KAAKgB,UAAUC,MAAK,SAASC,MAChClB,KAAKF,OAAS,IAAIrB,SACduB,KAAKX,OACL6B,KACAlB,KAAKD,aAAaQ,KAAKP,UAG5BmB,KAAK7C,aAAa8C,YAUzBzC,eAAeM,UAAUgB,MAAQ,SAASoB,iBAC/BhD,EAAEe,KAAKU,OAAOwB,cAAcC,KAAKF,WAS5C1C,eAAeM,UAAUqB,SAAW,eAC5BN,KAAOZ,YACJY,KAAKgB,UAAUC,MAAK,SAASC,MAChClB,KAAKC,MAAM,mCAAmCuB,YAAYN,MAC1DlB,KAAKD,mBAWbpB,eAAeM,UAAU+B,QAAU,eAE3BS,QAAU,OACT,IAAIC,KAFEtC,KAEQG,SACfkC,QAAQE,KAHDvC,KAGWG,SAASmC,QAE3BE,QAAU,SALHxC,KAKoBE,iBAAqBmC,gBALzCrC,KAMSI,gBANTJ,KAMkCK,gBAEtCjB,UAAUqD,OAAO,0BAA2BD,UAUvDjD,eAAeM,UAAUU,OAAS,gBACzBG,OAAS,UACTJ,eAAiB,IAGnBf"}