%PDF- %PDF-
Direktori : /home/vacivi36/ava/lib/amd/src/ |
Current File : /home/vacivi36/ava/lib/amd/src/chart_output_htmltable.js |
// 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; });