Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
{"version":3,"file":"model.min.js","sources":["../src/model.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 * AMD module for model actions confirmation.\n *\n * @module     tool_analytics/model\n * @copyright  2017 David Monllao\n * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\ndefine([\n    'jquery', 'core/str', 'core/log', 'core/notification', 'core/modal_save_cancel',\n    'core/modal_cancel', 'core/modal_events', 'core/templates'],\n    function($, Str, log, Notification, ModalSaveCancel, ModalCancel, ModalEvents, Templates) {\n\n    /**\n     * List of actions that require confirmation and confirmation message.\n     */\n    var actionsList = {\n        clear: {\n            title: {\n                key: 'clearpredictions',\n                component: 'tool_analytics'\n            }, body: {\n                key: 'clearmodelpredictions',\n                component: 'tool_analytics'\n            }\n\n        },\n        'delete': {\n            title: {\n                key: 'delete',\n                component: 'tool_analytics'\n            }, body: {\n                key: 'deletemodelconfirmation',\n                component: 'tool_analytics'\n            }\n        }\n    };\n\n    /**\n     * Returns the model name.\n     *\n     * @param {Object} actionItem The action item DOM node.\n     * @return {String}\n     */\n    var getModelName = function(actionItem) {\n        var wrap = $(actionItem).closest('[data-model-name]');\n\n        if (wrap.length) {\n            return wrap.attr('data-model-name');\n\n        } else {\n            log.error('Unexpected DOM error - unable to obtain the model name');\n            return '';\n        }\n    };\n\n    /** @alias module:tool_analytics/model */\n    return {\n\n        /**\n         * Displays a confirm modal window before executing the action.\n         *\n         * @param {String} actionId\n         * @param {String} actionType\n         */\n        confirmAction: function(actionId, actionType) {\n            $('[data-action-id=\"' + actionId + '\"]').on('click', function(ev) {\n                ev.preventDefault();\n\n                var a = $(ev.currentTarget);\n\n                if (typeof actionsList[actionType] === \"undefined\") {\n                    log.error('Action \"' + actionType + '\" is not allowed.');\n                    return;\n                }\n\n                var reqStrings = [\n                    actionsList[actionType].title,\n                    actionsList[actionType].body\n                ];\n                reqStrings[1].param = getModelName(a);\n\n                var stringsPromise = Str.get_strings(reqStrings);\n                var modalPromise = ModalSaveCancel.create({});\n\n                $.when(stringsPromise, modalPromise).then(function(strings, modal) {\n                    modal.setTitle(strings[0]);\n                    modal.setBody(strings[1]);\n                    modal.setSaveButtonText(strings[0]);\n                    modal.getRoot().on(ModalEvents.save, function() {\n                        window.location.href = a.attr('href');\n                    });\n                    modal.show();\n                    return modal;\n                }).fail(Notification.exception);\n            });\n        },\n\n        /**\n         * Displays evaluation mode and time-splitting method choices.\n         *\n         * @param  {String}  actionId\n         * @param  {Boolean} trainedOnlyExternally\n         */\n        selectEvaluationOptions: function(actionId, trainedOnlyExternally) {\n            $('[data-action-id=\"' + actionId + '\"]').on('click', function(ev) {\n                ev.preventDefault();\n\n                var a = $(ev.currentTarget);\n\n                var timeSplittingMethods = $(this).attr('data-timesplitting-methods');\n\n                ModalSaveCancel.create({\n                    title: Str.get_string('evaluatemodel', 'tool_analytics'),\n                    body: Templates.render('tool_analytics/evaluation_options', {\n                        trainedexternally: trainedOnlyExternally,\n                        timesplittingmethods: JSON.parse(timeSplittingMethods)\n                    }),\n                    removeOnClose: true,\n                    buttons: {\n                        save: Str.get_string('evaluate', 'tool_analytics'),\n                    },\n                    show: true,\n                })\n                .then((modal) => {\n                    modal.getRoot().on(ModalEvents.save, function() {\n                        // Evaluation mode.\n                        var evaluationMode = $(\"input[name='evaluationmode']:checked\").val();\n                        if (evaluationMode == 'trainedmodel') {\n                            a.attr('href', a.attr('href') + '&mode=trainedmodel');\n                        }\n\n                        // Selected time-splitting id.\n                        var timeSplittingMethod = $(\"#id-evaluation-timesplitting\").val();\n                        a.attr('href', a.attr('href') + '&timesplitting=' + timeSplittingMethod);\n\n                        window.location.href = a.attr('href');\n                        return;\n                    });\n\n                    return modal;\n                }).catch(Notification.exception);\n            });\n        },\n\n        /**\n         * Displays export options.\n         *\n         * We have two main options: export training data and export configuration.\n         * The 2nd option has an extra option: include the trained algorithm weights.\n         *\n         * @param  {String}  actionId\n         * @param  {Boolean} isTrained\n         */\n        selectExportOptions: function(actionId, isTrained) {\n            $('[data-action-id=\"' + actionId + '\"]').on('click', function(ev) {\n                ev.preventDefault();\n\n                var a = $(ev.currentTarget);\n\n                if (!isTrained) {\n                    // Export the model configuration if the model is not trained. We can't export anything else.\n                    a.attr('href', a.attr('href') + '&action=exportmodel&includeweights=0');\n                    window.location.href = a.attr('href');\n                    return;\n                }\n\n                var stringsPromise = Str.get_strings([\n                    {\n                        key: 'export',\n                        component: 'tool_analytics'\n                    }\n                ]);\n                var modalPromise = ModalSaveCancel.create({\n                    body: Templates.render('tool_analytics/export_options', {}),\n                    removeOnClose: true,\n                });\n\n                $.when(stringsPromise, modalPromise).then(function(strings, modal) {\n                    modal.setTitle(strings[0]);\n                    modal.setSaveButtonText(strings[0]);\n\n                    modal.getRoot().on(ModalEvents.save, function() {\n\n                        var exportOption = $(\"input[name='exportoption']:checked\").val();\n\n                        if (exportOption == 'exportdata') {\n                            a.attr('href', a.attr('href') + '&action=exportdata');\n\n                        } else {\n                            a.attr('href', a.attr('href') + '&action=exportmodel');\n                            if ($(\"#id-includeweights\").is(':checked')) {\n                                a.attr('href', a.attr('href') + '&includeweights=1');\n                            } else {\n                                a.attr('href', a.attr('href') + '&includeweights=0');\n                            }\n                        }\n\n                        window.location.href = a.attr('href');\n                        return;\n                    });\n\n                    modal.show();\n                    return modal;\n                }).fail(Notification.exception);\n            });\n        }\n    };\n});\n"],"names":["define","$","Str","log","Notification","ModalSaveCancel","ModalCancel","ModalEvents","Templates","actionsList","clear","title","key","component","body","confirmAction","actionId","actionType","on","ev","preventDefault","a","currentTarget","wrap","reqStrings","param","closest","length","attr","error","stringsPromise","get_strings","modalPromise","create","when","then","strings","modal","setTitle","setBody","setSaveButtonText","getRoot","save","window","location","href","show","fail","exception","selectEvaluationOptions","trainedOnlyExternally","timeSplittingMethods","this","get_string","render","trainedexternally","timesplittingmethods","JSON","parse","removeOnClose","buttons","val","timeSplittingMethod","catch","selectExportOptions","isTrained","is"],"mappings":"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"}