Your IP : 216.73.216.95


Current Path : /var/www/ljmtc/cbt/admin/tool/dataprivacy/amd/build/
Upload File :
Current File : /var/www/ljmtc/cbt/admin/tool/dataprivacy/amd/build/data_registry.min.js.map

{"version":3,"sources":["../src/data_registry.js"],"names":["define","$","Str","Ajax","Notification","Templates","ModalFactory","ModalEvents","Fragment","AddPurpose","AddCategory","SELECTORS","TREE_NODES","FORM_CONTAINER","DataRegistry","systemContextId","initContextLevel","initContextId","currentContextLevel","currentContextId","init","prototype","addpurpose","addcategory","getInstance","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","expand","find","loadExtra","collapse","off","fragmentName","fragmentArgs","formSubmitCallback","clearForm","fragment","loadFragment","done","html","js","runTemplateJS","fail","exception","Y","use","M","core_formchangechecker","reset_form_dirty_state","submitForm","e","submit","submitFormAjax","saveMethodName","formData","serialize","then","call","methodname","args","jsonformdata","JSON","stringify","alert","catch","parentNode","contextid","element","branches","length","noElements","render","after","node","text","siblings"],"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 * Request actions.\n *\n * @module     tool_dataprivacy/data_registry\n * @package    tool_dataprivacy\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', 'core/modal_factory',\n    'core/modal_events', 'core/fragment', 'tool_dataprivacy/add_purpose', 'tool_dataprivacy/add_category'],\n    function($, Str, Ajax, Notification, Templates, ModalFactory, ModalEvents, 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            // For the previously loaded form.\n            Y.use('moodle-core-formchangechecker', function() {\n                M.core_formchangechecker.reset_form_dirty_state();\n            });\n\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\n"],"file":"data_registry.min.js"}