| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- // version: 2014-06-26
- /**
- * o--------------------------------------------------------------------------------o
- * | This file is part of the RGraph package. RGraph is Free Software, licensed |
- * | under the MIT license - so it's free to use for all purposes. If you want to |
- * | donate to help keep the project going then you can do so here: |
- * | |
- * | http://www.rgraph.net/donate |
- * o--------------------------------------------------------------------------------o
- */
- /**
- * Initialise the various objects
- */
- RGraph = window.RGraph || {isRGraph: true};
- RGraph.CSV = function (url, func)
- {
- var RG = RGraph,
- ua = navigator.userAgent,
- ma = Math;
- /**
- * Some default values
- */
- this.url = url;
- this.ready = func;
- this.data = null;
- this.numrows = null;
- this.numcols = null;
- this.seperator = arguments[2] || ',';
- this.endofline = arguments[3] || /\r?\n/;
- /**
- * This function splits the CSV data into an array so that it can be useful.
- */
- this.fetch = function ()
- {
- var sep = this.seperator;
- var eol = this.endofline;
- var obj = this;
- if (this.url.substring(0,3) == 'id:') {
- // Get rid of any trailing slash
- var data = document.getElementById(this.url.substring(3)).innerHTML.replace(/(\r?\n)+$/, '');
- // Store the CSV data on the CSV object (ie - this object)
- obj.data = data.split(eol);
-
- // Store the number of rows
- obj.numrows = obj.data.length;
- for (var i=0,len=obj.data.length; i<len; i+=1) {
- var row = obj.data[i].split(sep);
- if (!obj.numcols) {
- obj.numcols = row.length;
- }
- /**
- * If the cell is purely made up of numbers - convert it
- */
- for (var j=0; j<row.length; j+=1) {
- if ((/^[0-9.]+$/).test(row[j])) {
- row[j] = parseFloat(row[j]);
- }
-
- // Assign the split-up-row back to the data array
- obj.data[i] = row;
- }
- }
-
- // Call the ready function straight away
- obj.ready(obj);
- } else {
- RGraph.AJAX.getString(this.url, function (data)
- {
- data = data.replace(/(\r?\n)+$/, '');
- obj.data = data.split(eol);
-
- // Store the number of rows
- obj.numrows = obj.data.length;
-
- for (var i=0,len=obj.data.length; i<len; i+=1) {
-
-
- var row = obj.data[i].split(sep);
-
- if (!obj.numcols) {
- obj.numcols = row.length;
- }
- /**
- * If the cell is purely made up of numbers - convert it
- */
- for (var j=0; j<row.length; j+=1) {
- if ((/^\-?[0-9.]+$/).test(row[j])) {
- row[j] = parseFloat(row[j]);
- }
- // Assign the split-up-row back to the data array
- obj.data[i] = row;
- }
- }
- // Call the ready function straight away
- obj.ready(obj);
- });
- }
- }
- /**
- * Returns a row of the CSV file
- *
- * @param number index The index of the row to fetch
- * @param start OPTIONAL If desired you can specify a column to start at (which starts at 0 by default)
- */
- this.getRow = function (index)
- {
- var row = [];
- var start = arguments[1] || 0;
- for (var i=start; i<this.numcols; i+=1) {
- row.push(this.data[index][i]);
- }
-
- return row;
- }
- /**
- * Returns a column of the CSV file
- *
- * @param number index The index of the column to fetch
- * @param start OPTIONAL If desired you can specify a row to start at (which starts at 0 by default)
- */
- this.getCol =
- this.getColumn = function (index)
- {
- var col = [];
- var start = arguments[1] || 0;
- for (var i=start; i<this.numrows; i+=1) {
- col.push(this.data[i][index]);
- }
-
- return col;
- }
- // Fetch the CSV file
- this.fetch();
- };
|