UNPKG

trc-sheet

Version:
214 lines (213 loc) 7.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var ColumnNames = (function () { function ColumnNames() { } ColumnNames.RecId = "RecId"; ColumnNames.FirstName = "FirstName"; ColumnNames.LastName = "LastName"; ColumnNames.Party = "Party"; ColumnNames.Address = "Address"; ColumnNames.City = "City"; ColumnNames.Zip = "Zip"; ColumnNames.Lat = "Lat"; ColumnNames.Long = "Long"; ColumnNames.XVoted = "XVoted"; ColumnNames.XTargetPri = "XTargetPri"; ColumnNames.PrecinctName = "PrecinctName"; ColumnNames.Cellphone = "Cellphone"; ColumnNames.HHID = "HHID"; ColumnNames.XUser = "XUser"; ColumnNames.XApp = "XApp"; ColumnNames.XLat = "XLat"; ColumnNames.XLong = "XLong"; ColumnNames.XLastModified = "XLastModified"; ColumnNames.XIPAddress = "XIPAddress"; return ColumnNames; }()); exports.ColumnNames = ColumnNames; var SheetContentsIndex = (function () { function SheetContentsIndex(source) { this._map = {}; this._source = source; var cRecId = source["RecId"]; for (var i = 0; i < cRecId.length; i++) { var recId = cRecId[i]; this._map[recId] = i; } } SheetContentsIndex.prototype.lookupRecId = function (recId) { var idx = this._map[recId]; if (idx == undefined) { return -1; } return idx; }; SheetContentsIndex.prototype.set = function (recId, columnName, newValue) { var idx = this.lookupRecId(recId); if (idx != -1) { this._source[columnName][idx] = newValue; } }; SheetContentsIndex.prototype.getContents = function () { return this._source; }; return SheetContentsIndex; }()); exports.SheetContentsIndex = SheetContentsIndex; var SheetContents = (function () { function SheetContents() { } SheetContents.getSheetContentsIndex = function (source) { return new SheetContentsIndex(source); }; SheetContents.toCsv = function (data) { var colKeys = Object.keys(data); var grid = []; var rowCount = data[colKeys[0]].length; var index = 0; grid.push(colKeys); while (index < rowCount) { var row = []; for (var _i = 0, colKeys_1 = colKeys; _i < colKeys_1.length; _i++) { var colKey = colKeys_1[_i]; var direct = data[colKey][index]; var val; if (direct == null || direct == undefined) { val = ""; } else { val = direct.toString(); try { val = val .replace(/\"/g, '\'') .replace(/\t|\n|\r/g, ' '); if (val.indexOf(",") >= 0) { val = "\"" + val + "\""; } } catch (e) { val = "???"; } } row.push(val); } grid.push(row); index++; } var content = ""; grid.forEach(function (arr, index) { var row = arr.join(","); content += index < grid.length ? row + "\r\n" : row; }); return content; }; SheetContents.ForEach = function (source, callback) { var colRecId = source[ColumnNames.RecId]; for (var columnName in source) { var column = source[columnName]; if (column == colRecId) { continue; } for (var i = 0; i < column.length; i++) { var recId = colRecId[i]; var newValue = column[i]; callback(recId, columnName, newValue); } } }; SheetContents.FromSingleCell = function (recId, columnName, newValue) { var body = {}; body[ColumnNames.RecId] = [recId]; body[columnName] = [newValue]; return body; }; SheetContents.FromRow = function (recId, columnNames, newValues) { if (columnNames.length != newValues.length) { throw "length mismatch"; } var body = {}; body[ColumnNames.RecId] = [recId]; for (var i = 0; i < columnNames.length; i++) { var columnName = columnNames[i]; var newValue = newValues[i]; body[columnName] = [newValue]; } return body; }; SheetContents.KeepRows = function (source, fpInclude) { var columnNames = []; var results = {}; var len = -1; for (var columnName in source) { if (len == -1) { len = source[columnName].length; } columnNames.push(columnName); results[columnName] = []; } for (var iRow = 0; iRow < len; iRow++) { var keepRow = fpInclude(iRow); if (keepRow) { for (var x in columnNames) { var columnName = columnNames[x]; var val = source[columnName][iRow]; results[columnName].push(val); } } } return results; }; SheetContents.TakeN = function (sheet, topN) { var sheet2 = {}; for (var key in sheet) { var value = sheet[key]; sheet2[key] = value.slice(0, topN); } return sheet2; }; SheetContents.AddTimestamp = function (source, gps) { if (gps === void 0) { gps = null; } var curTime = new Date().toISOString(); var cs = []; var vs = []; cs.push(ColumnNames.XLastModified); vs.push(curTime); if (!!gps) { var loc = gps.getLoc(); cs.push(ColumnNames.XLat); cs.push(ColumnNames.XLong); vs.push(loc.Lat.toString()); vs.push(loc.Long.toString()); } return SheetContents.Append(source, cs, vs); }; SheetContents.Append = function (source, newColumns, newValues) { var results = {}; var numRows = -1; for (var columnName in source) { if (numRows == -1) { numRows = source[columnName].length; } results[columnName] = []; } for (var i in newColumns) { var columnName = newColumns[i]; results[columnName] = []; } for (var iRow = 0; iRow < numRows; iRow++) { for (var columnName in source) { var val = source[columnName][iRow]; results[columnName].push(val); } for (var i in newColumns) { var columnName = newColumns[i]; var val = newValues[i]; results[columnName].push(val); } } return results; }; return SheetContents; }()); exports.SheetContents = SheetContents;