react-data-export
Advanced tools
Comparing version 0.2.0 to 0.3.1
@@ -87,3 +87,7 @@ "use strict"; | ||
_react2.default.Children.forEach(this.props.children, function (sheet) { | ||
wb.Sheets[sheet.props.name] = (0, _DataUtil.excelSheetFromAoA)(_this2.createSheetData(sheet)); | ||
if (typeof sheet.props.dataSet === 'undefined' || sheet.props.dataSet.length === 0) { | ||
wb.Sheets[sheet.props.name] = (0, _DataUtil.excelSheetFromAoA)(_this2.createSheetData(sheet)); | ||
} else { | ||
wb.Sheets[sheet.props.name] = (0, _DataUtil.excelSheetFromDataSet)(sheet.props.dataSet); | ||
} | ||
}); | ||
@@ -90,0 +94,0 @@ |
@@ -50,2 +50,4 @@ "use strict"; | ||
name: _propTypes2.default.string.isRequired, | ||
data: _propTypes2.default.arrayOf(_propTypes2.default.object), | ||
dataSet: _propTypes2.default.arrayOf(_propTypes2.default.object), | ||
value: _propTypes2.default.oneOfType([_propTypes2.default.array, _propTypes2.default.func]).isRequired, | ||
@@ -52,0 +54,0 @@ children: _propTypes2.default.arrayOf(function (propValue, key) { |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports.ExcelColumn = exports.ExcelSheet = undefined; | ||
var _ExcelFile = require("./components/ExcelFile"); | ||
@@ -17,6 +22,7 @@ | ||
module.exports = { | ||
ExcelFile: _ExcelFile2.default, | ||
ExcelSheet: _ExcelSheet2.default, | ||
ExcelColumn: _ExcelColumn2.default | ||
}; | ||
_ExcelFile2.default.ExcelSheet = _ExcelSheet2.default; | ||
_ExcelFile2.default.ExcelColumn = _ExcelColumn2.default; | ||
exports.default = _ExcelFile2.default; | ||
exports.ExcelSheet = _ExcelSheet2.default; | ||
exports.ExcelColumn = _ExcelColumn2.default; |
@@ -6,3 +6,3 @@ 'use strict'; | ||
}); | ||
exports.excelSheetFromAoA = exports.dateToNumber = exports.strToArrBuffer = undefined; | ||
exports.excelSheetFromDataSet = exports.excelSheetFromAoA = exports.dateToNumber = exports.strToArrBuffer = undefined; | ||
@@ -36,2 +36,93 @@ var _xlsx = require('xlsx'); | ||
var excelSheetFromDataSet = function excelSheetFromDataSet(dataSet) { | ||
/* | ||
Assuming the structure of dataset | ||
{ | ||
xSteps?: number; //How many cells to skips from left | ||
ySteps?: number; //How many rows to skips from last data | ||
columns: [array | string] | ||
data: [array_of_array | string|boolean|number] | ||
} | ||
*/ | ||
if (dataSet === undefined || dataSet.length === 0) { | ||
return {}; | ||
} | ||
var ws = {}; | ||
var range = { s: { c: 10000000, r: 10000000 }, e: { c: 0, r: 0 } }; | ||
var rowCount = 0; | ||
dataSet.forEach(function (dataSetItem) { | ||
var columns = dataSetItem.columns; | ||
var xSteps = typeof dataSetItem.xSteps === 'number' ? dataSetItem.xSteps : 0; | ||
var ySteps = typeof dataSetItem.ySteps === 'number' ? dataSetItem.ySteps : 0; | ||
var data = dataSetItem.data; | ||
if (dataSet === undefined || dataSet.length === 0) { | ||
return; | ||
} | ||
rowCount += ySteps; | ||
if (columns.length >= 0) { | ||
columns.forEach(function (col, index) { | ||
var cellRef = _xlsx2.default.utils.encode_cell({ c: xSteps + index, r: rowCount }); | ||
fixRange(range, 0, 0, rowCount, xSteps, ySteps); | ||
getCell(col, cellRef, ws); | ||
}); | ||
rowCount += 1; | ||
} | ||
for (var R = 0; R != data.length; ++R, rowCount++) { | ||
for (var C = 0; C != data[R].length; ++C) { | ||
var cellRef = _xlsx2.default.utils.encode_cell({ c: C + xSteps, r: rowCount }); | ||
fixRange(range, R, C, rowCount, xSteps, ySteps); | ||
getCell(data[R][C], cellRef, ws); | ||
} | ||
} | ||
}); | ||
if (range.s.c < 10000000) { | ||
ws['!ref'] = _xlsx2.default.utils.encode_range(range); | ||
} | ||
return ws; | ||
}; | ||
function getCell(v, cellRef, ws) { | ||
var cell = { v: v }; | ||
if (cell.v === null) { | ||
return; | ||
} | ||
if (typeof cell.v === 'number') { | ||
cell.t = 'n'; | ||
} else if (typeof cell.v === 'boolean') { | ||
cell.t = 'b'; | ||
} else if (cell.v instanceof Date) { | ||
cell.t = 'n';cell.z = _xlsx2.default.SSF._table[14]; | ||
cell.v = dateToNumber(cell.v); | ||
} else { | ||
cell.t = 's'; | ||
} | ||
ws[cellRef] = cell; | ||
} | ||
function fixRange(range, R, C, rowCount, xSteps, ySteps) { | ||
if (range.s.r > R + rowCount) { | ||
range.s.r = R + rowCount; | ||
} | ||
if (range.s.c > C + xSteps) { | ||
range.s.c = C + xSteps; | ||
} | ||
if (range.e.r < R + rowCount) { | ||
range.e.r = R + rowCount; | ||
} | ||
if (range.e.c < C + xSteps) { | ||
range.e.c = C + xSteps; | ||
} | ||
} | ||
var excelSheetFromAoA = function excelSheetFromAoA(data) { | ||
@@ -70,3 +161,4 @@ var ws = {}; | ||
} else if (cell.v instanceof Date) { | ||
cell.t = 'n';cell.z = _xlsx2.default.SSF._table[14]; | ||
cell.t = 'n'; | ||
cell.z = _xlsx2.default.SSF._table[14]; | ||
cell.v = dateToNumber(cell.v); | ||
@@ -90,2 +182,3 @@ } else { | ||
exports.dateToNumber = dateToNumber; | ||
exports.excelSheetFromAoA = excelSheetFromAoA; | ||
exports.excelSheetFromAoA = excelSheetFromAoA; | ||
exports.excelSheetFromDataSet = excelSheetFromDataSet; |
{ | ||
"name": "react-data-export", | ||
"version": "0.2.0", | ||
"version": "0.3.1", | ||
"main": "dist/index.js", | ||
@@ -29,3 +29,3 @@ "description": "A set of tools to export dataset from react to different formats.", | ||
"babel-preset-react": "6.24.1", | ||
"babel-register": "^6.26.0", | ||
"babel-register": "6.26.0", | ||
"cross-env": "5.1.0", | ||
@@ -41,5 +41,7 @@ "eslint": "4.8.0", | ||
"react": "16.0.0", | ||
"react-dom": "16.0.0" | ||
"react-dom": "16.0.0", | ||
"standard-version": "4.2.0" | ||
}, | ||
"scripts": { | ||
"release": "standard-version", | ||
"test": "mocha ./test/unit --reporter=spec --full-trace", | ||
@@ -46,0 +48,0 @@ "test:coverage": "nyc npm t", |
@@ -0,0 +0,0 @@ # React-Data-Export |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
340
0
28420
19
14