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 modify// it under the terms of the GNU General Public License as published by// the 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 of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.//// You should have received a copy of the GNU General Public License// along with Moodle. If not, see <http://www.gnu.org/licenses/>./*** Chart output for HTML table.** @copyright 2016 Frédéric Massart - FMCorz.net* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later* @module core/chart_output_htmltable*/define(['jquery','core/chart_output_base',], function($, Base) {/*** Render a chart as an HTML table.** @class* @extends {module:core/chart_output_base}*/function Output() {Base.prototype.constructor.apply(this, arguments);this._build();}Output.prototype = Object.create(Base.prototype);/*** Attach the table to the document.** @protected*/Output.prototype._build = function() {this._node.empty();this._node.append(this._makeTable());};/*** Builds the table node.** @protected* @return {Jquery}*/Output.prototype._makeTable = function() {var tbl = $('<table>'),c = this._chart,node,value,labels = c.getLabels(),hasLabel = labels.length > 0,series = c.getSeries(),seriesLabels,rowCount = series[0].getCount();// Identify the table.tbl.addClass('chart-output-htmltable generaltable');// Set the caption.if (c.getTitle() !== null) {tbl.append($('<caption>').text(c.getTitle()));}// Write the column headers.node = $('<tr>');if (hasLabel) {node.append($('<td>'));}series.forEach(function(serie) {node.append($('<th>').text(serie.getLabel()).attr('scope', 'col'));});tbl.append(node);// Write rows.for (var rowId = 0; rowId < rowCount; rowId++) {node = $('<tr>');if (labels.length > 0) {node.append($('<th>').text(labels[rowId]).attr('scope', 'row'));}for (var serieId = 0; serieId < series.length; serieId++) {value = series[serieId].getValues()[rowId];seriesLabels = series[serieId].getLabels();if (seriesLabels !== null) {value = series[serieId].getLabels()[rowId];}node.append($('<td>').text(value));}tbl.append(node);}return tbl;};/** @override */Output.prototype.update = function() {this._build();};return Output;});