Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
{"version":3,"file":"data_registry.min.js","sources":["../src/data_registry.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 * Request actions.\n *\n * @module     tool_dataprivacy/data_registry\n * @copyright  2018 David Monllao\n * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\ndefine(['jquery', 'core/str', 'core/ajax', 'core/notification', 'core/templates',\n    'core/fragment', 'tool_dataprivacy/add_purpose', 'tool_dataprivacy/add_category'],\n    function($, Str, Ajax, Notification, Templates, Fragment, AddPurpose, AddCategory) {\n\n        var SELECTORS = {\n            TREE_NODES: '[data-context-tree-node=1]',\n            FORM_CONTAINER: '#context-form-container',\n        };\n\n        var DataRegistry = function(systemContextId, initContextLevel, initContextId) {\n            this.systemContextId = systemContextId;\n            this.currentContextLevel = initContextLevel;\n            this.currentContextId = initContextId;\n            this.init();\n        };\n\n        /**\n         * @var {int} systemContextId\n         * @private\n         */\n        DataRegistry.prototype.systemContextId = 0;\n\n        /**\n         * @var {int} currentContextLevel\n         * @private\n         */\n        DataRegistry.prototype.currentContextLevel = 0;\n\n        /**\n         * @var {int} currentContextId\n         * @private\n         */\n        DataRegistry.prototype.currentContextId = 0;\n\n        /**\n         * @var {AddPurpose} addpurpose\n         * @private\n         */\n        DataRegistry.prototype.addpurpose = null;\n\n        /**\n         * @var {AddCategory} addcategory\n         * @private\n         */\n        DataRegistry.prototype.addcategory = null;\n\n        DataRegistry.prototype.init = function() {\n            // Add purpose and category modals always at system context.\n            this.addpurpose = AddPurpose.getInstance(this.systemContextId);\n            this.addcategory = AddCategory.getInstance(this.systemContextId);\n\n            var stringKeys = [\n                {\n                    key: 'changessaved',\n                    component: 'moodle'\n                }, {\n                    key: 'contextpurposecategorysaved',\n                    component: 'tool_dataprivacy'\n                }, {\n                    key: 'noblockstoload',\n                    component: 'tool_dataprivacy'\n                }, {\n                    key: 'noactivitiestoload',\n                    component: 'tool_dataprivacy'\n                }, {\n                    key: 'nocoursestoload',\n                    component: 'tool_dataprivacy'\n                }\n            ];\n            this.strings = Str.get_strings(stringKeys);\n\n            this.registerEventListeners();\n\n            // Load the default context level form.\n            if (this.currentContextId) {\n                this.loadForm('context_form', [this.currentContextId], this.submitContextFormAjax.bind(this));\n            } else {\n                this.loadForm('contextlevel_form', [this.currentContextLevel], this.submitContextLevelFormAjax.bind(this));\n            }\n        };\n\n        DataRegistry.prototype.registerEventListeners = function() {\n            $(SELECTORS.TREE_NODES).on('click', function(ev) {\n                ev.preventDefault();\n\n                var trigger = $(ev.currentTarget);\n\n                // Active node.\n                $(SELECTORS.TREE_NODES).removeClass('active');\n                trigger.addClass('active');\n\n                var contextLevel = trigger.data('contextlevel');\n                var contextId = trigger.data('contextid');\n                if (contextLevel) {\n                    // Context level level.\n\n                    window.history.pushState({}, null, '?contextlevel=' + contextLevel);\n\n                    // Remove previous add purpose and category listeners to avoid memory leaks.\n                    this.addpurpose.removeListeners();\n                    this.addcategory.removeListeners();\n\n                    // Load the context level form.\n                    this.currentContextLevel = contextLevel;\n                    this.loadForm('contextlevel_form', [this.currentContextLevel], this.submitContextLevelFormAjax.bind(this));\n                } else if (contextId) {\n                    // Context instance level.\n\n                    window.history.pushState({}, null, '?contextid=' + contextId);\n\n                    // Remove previous add purpose and category listeners to avoid memory leaks.\n                    this.addpurpose.removeListeners();\n                    this.addcategory.removeListeners();\n\n                    // Load the context level form.\n                    this.currentContextId = contextId;\n                    this.loadForm('context_form', [this.currentContextId], this.submitContextFormAjax.bind(this));\n                } else {\n                    // Expandable nodes.\n\n                    var expandContextId = trigger.data('expandcontextid');\n                    var expandElement = trigger.data('expandelement');\n                    var expanded = trigger.data('expanded');\n\n                    // Extra checking that there is an expandElement because we remove it after loading 0 branches.\n                    if (expandElement) {\n\n                        if (!expanded) {\n                            if (trigger.data('loaded') || !expandContextId || !expandElement) {\n                                this.expand(trigger);\n                            } else {\n\n                                trigger.find('> i').removeClass('fa-plus');\n                                trigger.find('> i').addClass('fa-circle-o-notch fa-spin');\n                                this.loadExtra(trigger, expandContextId, expandElement);\n                            }\n                        } else {\n                            this.collapse(trigger);\n                        }\n                    }\n                }\n\n            }.bind(this));\n        };\n\n        DataRegistry.prototype.removeListeners = function() {\n            $(SELECTORS.TREE_NODES).off('click');\n        };\n\n        DataRegistry.prototype.loadForm = function(fragmentName, fragmentArgs, formSubmitCallback) {\n\n            this.clearForm();\n\n            var fragment = Fragment.loadFragment('tool_dataprivacy', fragmentName, this.systemContextId, fragmentArgs);\n            fragment.done(function(html, js) {\n\n                $(SELECTORS.FORM_CONTAINER).html(html);\n                Templates.runTemplateJS(js);\n\n                this.addpurpose.registerEventListeners();\n                this.addcategory.registerEventListeners();\n\n                // We also catch the form submit event and use it to submit the form with ajax.\n                $(SELECTORS.FORM_CONTAINER).on('submit', 'form', formSubmitCallback);\n\n            }.bind(this)).fail(Notification.exception);\n        };\n\n        DataRegistry.prototype.clearForm = function() {\n            // Remove previous listeners.\n            $(SELECTORS.FORM_CONTAINER).off('submit', 'form');\n        };\n\n        /**\n         * This triggers a form submission, so that any mform elements can do final tricks before the form submission is processed.\n         *\n         * @method submitForm\n         * @param {Event} e Form submission event.\n         * @private\n         */\n        DataRegistry.prototype.submitForm = function(e) {\n            e.preventDefault();\n            $(SELECTORS.FORM_CONTAINER).find('form').submit();\n        };\n\n        DataRegistry.prototype.submitContextLevelFormAjax = function(e) {\n            this.submitFormAjax(e, 'tool_dataprivacy_set_contextlevel_form');\n        };\n\n        DataRegistry.prototype.submitContextFormAjax = function(e) {\n            this.submitFormAjax(e, 'tool_dataprivacy_set_context_form');\n        };\n\n        DataRegistry.prototype.submitFormAjax = function(e, saveMethodName) {\n            // We don't want to do a real form submission.\n            e.preventDefault();\n\n            // Convert all the form elements values to a serialised string.\n            var formData = $(SELECTORS.FORM_CONTAINER).find('form').serialize();\n            return this.strings.then(function(strings) {\n                Ajax.call([{\n                    methodname: saveMethodName,\n                    args: {jsonformdata: JSON.stringify(formData)},\n                    done: function() {\n                        Notification.alert(strings[0], strings[1]);\n                    },\n                    fail: Notification.exception\n                }]);\n                return;\n            }).catch(Notification.exception);\n\n        };\n\n        DataRegistry.prototype.loadExtra = function(parentNode, expandContextId, expandElement) {\n\n            Ajax.call([{\n                methodname: 'tool_dataprivacy_tree_extra_branches',\n                args: {\n                    contextid: expandContextId,\n                    element: expandElement,\n                },\n                done: function(data) {\n                    if (data.branches.length == 0) {\n                        this.noElements(parentNode, expandElement);\n                        return;\n                    }\n                    Templates.render('tool_dataprivacy/context_tree_branches', data)\n                        .then(function(html) {\n                            parentNode.after(html);\n                            this.removeListeners();\n                            this.registerEventListeners();\n                            this.expand(parentNode);\n                            parentNode.data('loaded', 1);\n                            return;\n                        }.bind(this))\n                        .fail(Notification.exception);\n                }.bind(this),\n                fail: Notification.exception\n            }]);\n        };\n\n        DataRegistry.prototype.noElements = function(node, expandElement) {\n            node.data('expandcontextid', '');\n            node.data('expandelement', '');\n            this.strings.then(function(strings) {\n\n                // 2 = blocks, 3 = activities, 4 = courses (although courses is not likely really).\n                var key = 2;\n                if (expandElement == 'module') {\n                    key = 3;\n                } else if (expandElement == 'course') {\n                    key = 4;\n                }\n                node.text(strings[key]);\n                return;\n            }).fail(Notification.exception);\n        };\n\n        DataRegistry.prototype.collapse = function(node) {\n            node.data('expanded', 0);\n            node.siblings('nav').addClass('hidden');\n            node.find('> i').removeClass('fa-minus');\n            node.find('> i').addClass('fa-plus');\n        };\n\n        DataRegistry.prototype.expand = function(node) {\n            node.data('expanded', 1);\n            node.siblings('nav').removeClass('hidden');\n            node.find('> i').removeClass('fa-plus');\n            // Also remove the spinning one if data was just loaded.\n            node.find('> i').removeClass('fa-circle-o-notch fa-spin');\n            node.find('> i').addClass('fa-minus');\n        };\n        return /** @alias module:tool_dataprivacy/data_registry */ {\n\n            /**\n             * Initialise the page.\n             *\n             * @param {Number} systemContextId\n             * @param {Number} initContextLevel\n             * @param {Number} initContextId\n             * @return {DataRegistry}\n             */\n            init: function(systemContextId, initContextLevel, initContextId) {\n                return new DataRegistry(systemContextId, initContextLevel, initContextId);\n            }\n        };\n    }\n);\n"],"names":["define","$","Str","Ajax","Notification","Templates","Fragment","AddPurpose","AddCategory","SELECTORS","DataRegistry","systemContextId","initContextLevel","initContextId","currentContextLevel","currentContextId","init","prototype","addpurpose","addcategory","getInstance","this","strings","get_strings","key","component","registerEventListeners","loadForm","submitContextFormAjax","bind","submitContextLevelFormAjax","on","ev","preventDefault","trigger","currentTarget","removeClass","addClass","contextLevel","data","contextId","window","history","pushState","removeListeners","expandContextId","expandElement","expanded","collapse","find","loadExtra","expand","off","fragmentName","fragmentArgs","formSubmitCallback","clearForm","loadFragment","done","html","js","runTemplateJS","fail","exception","submitForm","e","submit","submitFormAjax","saveMethodName","formData","serialize","then","call","methodname","args","jsonformdata","JSON","stringify","alert","catch","parentNode","contextid","element","branches","length","render","after","noElements","node","text","siblings"],"mappings":"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"}