require('./globalfunc.js') const TaosObjects = require('./taosobjects'); const TaosRow = TaosObjects.TaosRow; const TaosField = TaosObjects.TaosField; module.exports = TaosResult; /** * @class TaosResult * @classdesc A TaosResult class consts of the row data and the fields metadata, all wrapped under various objects for higher functionality. * @param {Array} data - Array of result rows * @param {Array} fields - Array of field meta data * @property {Array} data - Array of TaosRows forming the result data (this does not include field meta data) * @property {Array} fields - Array of TaosFields forming the fields meta data array. * @return {TaosResult} * @since 1.0.6 */ function TaosResult(data, fields) { this.data = data.map(row => new TaosRow(row)); this.rowcount = this.data.length; this.fields = fields.map(field => new TaosField(field)); } /** * Pretty print data and the fields meta data as if you were using the taos shell * @memberof TaosResult * @function pretty * @since 1.0.6 */ TaosResult.prototype.pretty = function pretty() { let fieldsStr = ""; let sizing = []; this.fields.forEach((field,i) => { if (field._field.type == 8 || field._field.type == 10){ sizing.push(Math.max(field.name.length, field._field.bytes)); } else { sizing.push(Math.max(field.name.length, suggestedMinWidths[field._field.type])); } fieldsStr += fillEmpty(Math.floor(sizing[i]/2 - field.name.length / 2)) + field.name + fillEmpty(Math.ceil(sizing[i]/2 - field.name.length / 2)) + " | "; }); var sumLengths = sizing.reduce((a,b)=> a+=b,(0)) + sizing.length * 3; console.log("\n" + fieldsStr); console.log(printN("=",sumLengths)); this.data.forEach(row => { let rowStr = ""; row.data.forEach((entry, i) => { if (this.fields[i]._field.type == 9) { entry = entry.toTaosString(); } else { entry = entry == null ? 'null' : entry.toString(); } rowStr += entry rowStr += fillEmpty(sizing[i] - entry.length) + " | "; }); console.log(rowStr); }); } const suggestedMinWidths = { 0: 4, 1: 4, 2: 4, 3: 6, 4: 11, 5: 12, 6: 24, 7: 24, 8: 10, 9: 25, 10: 10, } function printN(s, n) { let f = ""; for (let i = 0; i < n; i ++) { f += s; } return f; } function fillEmpty(n) { let str = ""; for (let i = 0; i < n; i++) { str += " "; } return str; }