AutorÃa | Ultima modificación | Ver Log |
{{!This file is part of Moodle - http://moodle.org/Moodle is free software: you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation, either version 3 of the License, or(at your option) any later version.Moodle is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with Moodle. If not, see <http://www.gnu.org/licenses/>.}}{{!@template tool_analytics/restorable_modelsDisplays the list of missing prediction models that can be restored.Classes required for JS:* The list should be wrapped within a id="restorablemodelslist" element.Data attributes required for JS:* [data-widget="toggle"] indicates the clickable element for expanding/collapsingthe list of indicators used by the given model.* [data-select] indicates a clickable element used for selecting multiple checkboxes.* [data-component] should be set for checkboxes that select the particular model.Context variables required for this template:* hasdata: boolean - do we have data to display* submiturl: string - URL where the form should be submitted* backurl: string - URL where the user should be sent without making any changes* sesskey: string* components: array - list of components to display- name: string - human readable name of the component- component: string - frankenstyle name of the component- models: array - list of restorable models provided by the component+ defid: string - model definition identifier+ targetname: string - human readable name of the target+ targetclass: string - fully qualified classname of the target+ indicatorsnum: int - number of indicators+ indicators: array - list of indicators~ name: string - human readable name of the indicator~ classname: string - fully qualified classname of the indicatorExample context (json):{"hasdata": true,"submiturl": "https://example.com/moodle/admin/tool/analytics/restoredefault.php","backurl": "https://example.com/moodle/admin/tool/analytics/index.php","sesskey": "abcdefg123456","components": [{"name": "Core","component": "core","models": [{"defid": "id24680aceg","targetname": "Courses at risk of not starting","targetclass": "\\core\\analytics\\target\\no_teaching","indicatorsnum": 2,"indicators": [{"name": "There are no teachers","classname": "\\core\\analytics\\indicator\\no_teacher"},{"name": "There are no students","classname": "\\core\\analytics\\indicator\\no_students"}]},{"defid": "id13579bdfi","targetname": "Students at risk of dropping out","targetclass": "\\core\\analytics\\target\\course_dropout","indicatorsnum": 1,"indicators": [{"name": "Read actions amount","classname": "\\core\\analytics\\indicator\\read_actions"}]}]},{"name": "Custom analytics plugin","component": "tool_customanalytics","models": [{"defid": "id566dsgffg655","targetname": "Cheater","targetclass": "\\tool_customanalytics\\analytics\\target\\cheater","indicatorsnum": 1,"indicators": [{"name": "Copy-pasted submissions","classname": "\\tool_customanalytics\\analytics\\indicator\\copy_paster_submissions"}]}]}]}}}<div class="box">{{^hasdata}}<p>{{#str}} restoredefaultnone, tool_analytics {{/str}}</p><div><a href="{{backurl}}" class="btn btn-secondary">{{#str}} back {{/str}}</a></div>{{/hasdata}}{{#hasdata}}<p>{{#str}} restoredefaultinfo, tool_analytics {{/str}}</p><form method="post" action="{{submiturl}}"><table id="restorablemodelslist" class="generaltable fullwidth"><colgroup><col width="10%"><col width="45%"><col width="45%"></colgroup><thead><tr><th scope="col"><a href="" data-select="*">{{#str}} selectall {{/str}}</a></th><th scope="col">{{#str}} target, tool_analytics {{/str}}</th><th scope="col">{{#str}} indicators, tool_analytics {{/str}}</th></tr></thead><tbody>{{#components}}<tr><th scope="rowgroup" colspan="3"><span class="component-name"><a href=""title="{{#str}} componentselect, tool_analytics, {{name}} {{/str}}"data-select="{{component}}">{{name}}</a></span><div><small class="component-frankenstyle">{{component}}</small></div></th></tr>{{#models}}<tr><td><input data-component="{{component}}" type="checkbox" name="restoreid[]" value="{{defid}}"></td><td><span class="target-name">{{targetname}}</span>{{#targethelp}}{{>core/help_icon}}{{/targethelp}}<div><small class="target-class">{{targetclass}}</small></div></td><td><a data-widget="toggle"title="{{#str}} clicktohideshow {{/str}}"aria-expanded="false"aria-controls="indicators-{{defid}}"role="button"href="">{{#str}} indicatorsnum, tool_analytics, {{indicatorsnum}} {{/str}}</a><ul class="hidden listunstyled" id="indicators-{{defid}}">{{#indicators}}<li>{{name}}{{#indicatorhelp}}{{>core/help_icon}}{{/indicatorhelp}}<div><small>{{classname}}</small></div></li>{{/indicators}}</ul></td></tr>{{/models}}{{/components}}</tbody></table><div><input class="btn btn-primary" type="submit" value="{{#str}} restoredefaultsubmit, tool_analytics {{/str}}"><input class="btn btn-secondary" type="reset" value="{{#str}} componentselectnone, tool_analytics {{/str}}"><a href="{{backurl}}" class="btn btn-secondary">{{#str}} back {{/str}}</a><input type="hidden" name="sesskey" value="{{sesskey}}"></div></form>{{/hasdata}}</div>{{#js}}require(['jquery'], function($) {// Toggle the visibility of the indicators list.$('#restorablemodelslist').on('click', '[data-widget="toggle"]', function(e) {e.preventDefault();var toggle = $(e.currentTarget);var listid = toggle.attr('aria-controls');$(document.getElementById(listid)).toggle();if (toggle.attr('aria-expanded') == 'false') {toggle.attr('aria-expanded', 'true');} else {toggle.attr('aria-expanded', 'false');}});// Selecting all / all in component checkboxes.$('#restorablemodelslist').on('click', '[data-select]', function(e) {e.preventDefault();var handler = $(e.currentTarget);var component = handler.attr('data-select');if (component == '*') {$('input[data-component]').prop('checked', true);} else {$('input[data-component="' + component + '"]').prop('checked', true);}});});{{/js}}