@foreverrbum/ethsign
Version:
This package will allow you to electronically sign documents within your application
1,085 lines (943 loc) • 44.6 kB
JavaScript
;
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.DataDashboard = void 0;
var _react = _interopRequireWildcard(require("react"));
var _charts = require("../charts");
var _graphql = require("../../helpers/graphql");
var _moment = _interopRequireDefault(require("moment"));
var _reactCsv = require("react-csv");
var _lodash = _interopRequireDefault(require("lodash"));
var _utils = require("./utils");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
var statisticalData = {
'totalDocumentsSigned': 'Documents Signed',
'totalSignaturesSigned': 'Signatures Signed'
};
var CHART_COLOR = {
'totalDocumentsSigned': '#7cb5ec',
'totalSignaturesSigned': "#434348"
};
var TOTAL_DOCUMENTS_SIGNED = 'totalDocumentsSigned';
var TOTAL_SIGNATURES_SIGNED = 'totalSignaturesSigned';
var DataDashboard = function DataDashboard() {
var _useState = (0, _react.useState)(),
_useState2 = _slicedToArray(_useState, 2),
historyData = _useState2[0],
handleHistoryData = _useState2[1];
var _useState3 = (0, _react.useState)(),
_useState4 = _slicedToArray(_useState3, 2),
allSignaturesSignedData = _useState4[0],
handleAllSignaturesSignedData = _useState4[1];
var _useState5 = (0, _react.useState)(),
_useState6 = _slicedToArray(_useState5, 2),
allDocumentSignedData = _useState6[0],
handleAllDocumentSignedData = _useState6[1];
var _useState7 = (0, _react.useState)(),
_useState8 = _slicedToArray(_useState7, 2),
allOptions = _useState8[0],
handleAllOptions = _useState8[1];
var _useState9 = (0, _react.useState)(),
_useState10 = _slicedToArray(_useState9, 2),
timeOptions = _useState10[0],
handleTimeOptions = _useState10[1];
var _useState11 = (0, _react.useState)(),
_useState12 = _slicedToArray(_useState11, 2),
aggregateOptions = _useState12[0],
handleAggregateOptions = _useState12[1];
var _useState13 = (0, _react.useState)(),
_useState14 = _slicedToArray(_useState13, 2),
addressData = _useState14[0],
handleAddressData = _useState14[1];
var _useState15 = (0, _react.useState)(),
_useState16 = _slicedToArray(_useState15, 2),
addressTotalOptions = _useState16[0],
handleAddressTotalOptions = _useState16[1];
var _useState17 = (0, _react.useState)(),
_useState18 = _slicedToArray(_useState17, 2),
addressTimeOptions = _useState18[0],
handleAddressTimeOptions = _useState18[1];
var _useState19 = (0, _react.useState)(),
_useState20 = _slicedToArray(_useState19, 2),
addressAggregateOptions = _useState20[0],
handleAddressAggregateOptions = _useState20[1];
var _useState21 = (0, _react.useState)(false),
_useState22 = _slicedToArray(_useState21, 2),
loading = _useState22[0],
handleLoading = _useState22[1];
var _useState23 = (0, _react.useState)(false),
_useState24 = _slicedToArray(_useState23, 2),
error = _useState24[0],
handleError = _useState24[1];
var _useState25 = (0, _react.useState)(0),
_useState26 = _slicedToArray(_useState25, 2),
currentLoadedStep = _useState26[0],
handleCurrentLoadedStep = _useState26[1];
var _useState27 = (0, _react.useState)(null),
_useState28 = _slicedToArray(_useState27, 2),
csvData = _useState28[0],
handleCSVData = _useState28[1];
var _useState29 = (0, _react.useState)(null),
_useState30 = _slicedToArray(_useState29, 2),
documentsSignedByNetwork = _useState30[0],
handleDocumentsSignedByNetwork = _useState30[1];
var _useState31 = (0, _react.useState)(null),
_useState32 = _slicedToArray(_useState31, 2),
signaturesSignedByNetwork = _useState32[0],
handleSignaturesSignedByNetwork = _useState32[1];
(0, _react.useEffect)(function () {
var documentSignedEle = document.getElementById("documents_sign_num");
documentSignedEle === null || documentSignedEle === void 0 ? void 0 : documentSignedEle.setAttribute("style", 'cursor:pointer');
documentSignedEle === null || documentSignedEle === void 0 ? void 0 : documentSignedEle.addEventListener('click', documentSignedListener);
var signatureSignedEle = document.getElementById("signature_sign_num");
signatureSignedEle === null || signatureSignedEle === void 0 ? void 0 : signatureSignedEle.setAttribute("style", 'cursor:pointer');
signatureSignedEle === null || signatureSignedEle === void 0 ? void 0 : signatureSignedEle.addEventListener('click', signatureSignedListener);
return function () {
var _document$getElementB, _document$getElementB2;
(_document$getElementB = document.getElementById("documents_sign_num")) === null || _document$getElementB === void 0 ? void 0 : _document$getElementB.removeEventListener('click', documentSignedListener);
(_document$getElementB2 = document.getElementById("signature_sign_num")) === null || _document$getElementB2 === void 0 ? void 0 : _document$getElementB2.removeEventListener('click', signatureSignedListener);
};
}, [historyData, addressData, allDocumentSignedData, allSignaturesSignedData, allOptions]);
var documentSignedListener = function documentSignedListener() {
var _contractsData$sort;
var contractsData = allDocumentSignedData === null || allDocumentSignedData === void 0 ? void 0 : allDocumentSignedData.reduce(function (acc, _ref) {
var data = _ref.data;
if (data !== null && data !== void 0 && data.contracts) {
return acc.concat(data === null || data === void 0 ? void 0 : data.contracts);
}
return acc;
}, []);
var timeData = [];
contractsData === null || contractsData === void 0 ? void 0 : (_contractsData$sort = contractsData.sort(function (a, b) {
return (a === null || a === void 0 ? void 0 : a.consensusTimestamp) - (b === null || b === void 0 ? void 0 : b.consensusTimestamp);
})) === null || _contractsData$sort === void 0 ? void 0 : _contractsData$sort.forEach(function (contract) {
var consensusTimestamp = contract.consensusTimestamp; // parse every day timestamp
handleTimestamp(consensusTimestamp, timeData);
});
var len = contractsData === null || contractsData === void 0 ? void 0 : contractsData.length;
var timeTitle = "Documents Signed Count (".concat(len, ")");
var aggregateTile = "Documents Signed Count (".concat(len, ") - Aggregated");
var _generateOptions = generateOptions('Documents Signed', timeData, timeTitle, aggregateTile, CHART_COLOR[TOTAL_DOCUMENTS_SIGNED]),
timeOpt = _generateOptions.timeOpt,
aggregateOpt = _generateOptions.aggregateOpt;
handleTimeOptions(timeOpt);
handleAggregateOptions(aggregateOpt);
};
var signatureSignedListener = function signatureSignedListener() {
var _contractsData$sort2;
var contractsData = allSignaturesSignedData === null || allSignaturesSignedData === void 0 ? void 0 : allSignaturesSignedData.reduce(function (acc, _ref2) {
var events = _ref2.data.events;
return acc.concat(events);
}, []);
var timeData = [];
contractsData === null || contractsData === void 0 ? void 0 : (_contractsData$sort2 = contractsData.sort(function (a, b) {
return (a === null || a === void 0 ? void 0 : a.timestamp) - (b === null || b === void 0 ? void 0 : b.timestamp);
})) === null || _contractsData$sort2 === void 0 ? void 0 : _contractsData$sort2.forEach(function (contract) {
var timestamp = contract.timestamp;
handleTimestamp(timestamp, timeData);
});
var len = contractsData === null || contractsData === void 0 ? void 0 : contractsData.length;
var timeTitle = "Signatures Signed Count (".concat(len, ")");
var aggregateTile = "Signatures Signed Count (".concat(len, ") - Aggregated");
var _generateOptions2 = generateOptions('Signatures Signed', timeData, timeTitle, aggregateTile, CHART_COLOR[TOTAL_SIGNATURES_SIGNED]),
timeOpt = _generateOptions2.timeOpt,
aggregateOpt = _generateOptions2.aggregateOpt;
handleTimeOptions(timeOpt);
handleAggregateOptions(aggregateOpt);
};
(0, _react.useEffect)(function () {
_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
var _historyData, _parseContractHistory, documentsSignedNumOnEachChain, signaturesSignedNumOnEachChain, dsbn, ssbn, idx, _dsbn$, timeOpt, aggregateOpt;
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.prev = 0;
handleError(false);
handleLoading(true); // load contract data
handleCurrentLoadedStep(0);
_context.next = 6;
return (0, _graphql.loadAllContractHistoryData)();
case 6:
_historyData = _context.sent;
handleCurrentLoadedStep(1);
_parseContractHistory = (0, _utils.parseContractHistoryData)(_historyData), documentsSignedNumOnEachChain = _parseContractHistory.documentsSignedNumOnEachChain, signaturesSignedNumOnEachChain = _parseContractHistory.signaturesSignedNumOnEachChain;
handleHistoryData(_historyData); //load Address Count data
_context.t0 = handleAddressData;
_context.next = 13;
return (0, _graphql.loadAllAddressCount)();
case 13:
_context.t1 = _context.sent;
(0, _context.t0)(_context.t1);
handleCurrentLoadedStep(2); // load document and signature count data
dsbn = [];
ssbn = [];
_context.t2 = regeneratorRuntime.keys(_historyData);
case 19:
if ((_context.t3 = _context.t2()).done) {
_context.next = 37;
break;
}
idx = _context.t3.value;
_context.t4 = dsbn;
_context.t5 = handleDocumentSignedData;
_context.next = 25;
return (0, _graphql.loadDocumentsSignedByNetwork)(_graphql.network[idx]);
case 25:
_context.t6 = _context.sent;
_context.t7 = (0, _context.t5)(_context.t6);
_context.t4.push.call(_context.t4, _context.t7);
_context.t8 = ssbn;
_context.t9 = handleSignatureSignedData;
_context.next = 32;
return (0, _graphql.loadSignatureSignedByNetwork)(_graphql.network[idx]);
case 32:
_context.t10 = _context.sent;
_context.t11 = (0, _context.t9)(_context.t10);
_context.t8.push.call(_context.t8, _context.t11);
_context.next = 19;
break;
case 37:
handleCurrentLoadedStep(3);
handleDocumentsSignedByNetwork(dsbn);
handleSignaturesSignedByNetwork(ssbn); // load all signature signed data
_context.t12 = handleAllSignaturesSignedData;
_context.next = 43;
return (0, _graphql.loadAllSignatureSignedData)(signaturesSignedNumOnEachChain);
case 43:
_context.t13 = _context.sent;
(0, _context.t12)(_context.t13);
handleCurrentLoadedStep(4); // load all documents signed data
_context.t14 = handleAllDocumentSignedData;
_context.next = 49;
return (0, _graphql.loadAllDocumentsSignedData)(documentsSignedNumOnEachChain);
case 49:
_context.t15 = _context.sent;
(0, _context.t14)(_context.t15);
handleCurrentLoadedStep(5); // Load default UI statistics from ethereum
_dsbn$ = dsbn[0], timeOpt = _dsbn$.timeOpt, aggregateOpt = _dsbn$.aggregateOpt;
handleTimeOptions(timeOpt);
handleAggregateOptions(aggregateOpt);
handleLoading(false);
_context.next = 63;
break;
case 58:
_context.prev = 58;
_context.t16 = _context["catch"](0);
console.log(_context.t16);
handleLoading(false);
handleError(true);
case 63:
case "end":
return _context.stop();
}
}
}, _callee, null, [[0, 58]]);
}))();
}, []);
(0, _react.useEffect)(function () {
if (!historyData || !addressData || !allSignaturesSignedData || !allDocumentSignedData) {
return;
} // History data portion
{
var allDocumentsSigned = 0;
var allSignaturesSigned = 0;
historyData === null || historyData === void 0 ? void 0 : historyData.forEach(function (_ref4) {
var infos = _ref4.data.infos;
var _infos$ = infos[0],
totalDocumentsSigned = _infos$.totalDocumentsSigned,
totalSignaturesSigned = _infos$.totalSignaturesSigned;
allDocumentsSigned = allDocumentsSigned + totalDocumentsSigned;
allSignaturesSigned = allSignaturesSigned + totalSignaturesSigned;
});
var tmpOptions = {
chart: {
type: 'column'
},
title: {
text: "Contract Data"
},
subtitle: {
text: "<span id =\"documents_sign_num\">Documents Signed (".concat(allDocumentsSigned, ") </span><br/> <span id =\"signature_sign_num\">Signatures Signed (").concat(allSignaturesSigned, ") </span>"),
align: "center",
useHTML: true
},
xAxis: {
categories: _graphql.network
},
yAxis: {
title: false
},
credits: {
enabled: false
},
series: []
};
var series = Object.keys(statisticalData).map(function (key) {
return {
cursor: 'pointer',
point: {
events: {
click: function click() {
handleChartEvent(this.category, this.series.name);
}
}
},
name: statisticalData[key],
data: []
};
});
historyData === null || historyData === void 0 ? void 0 : historyData.forEach(function (d) {
var infos = d.data.infos;
infos.forEach(function (info) {
Object.keys(statisticalData).forEach(function (key) {
var _series$find = series.find(function (serie) {
return serie.name === statisticalData[key];
}),
data = _series$find.data;
data.push(info[key]);
});
});
});
tmpOptions.series = series;
handleAllOptions(tmpOptions);
} // Address Data portion
{
var addressNum = 0;
addressData === null || addressData === void 0 ? void 0 : addressData.forEach(function (item) {
var data = item.data;
addressNum = ((data === null || data === void 0 ? void 0 : data.users.length) || 0) + addressNum;
});
var tmpOptionsAddress = {
chart: {
type: 'column'
},
title: {
text: "Address Count (".concat(addressNum, ")")
},
xAxis: {
categories: _graphql.network
},
yAxis: {
title: false
},
credits: {
enabled: false
},
series: []
};
var _series = tmpOptionsAddress.series;
var seriesItem = {
cursor: 'pointer',
point: {
events: {
click: function click() {
handleTotalAddressChartEvent(this.category);
}
}
},
name: "Address",
data: []
};
addressData === null || addressData === void 0 ? void 0 : addressData.forEach(function (address) {
var _data$users;
var networkName = address.networkName,
data = address.data; //special
var len = (data === null || data === void 0 ? void 0 : (_data$users = data.users) === null || _data$users === void 0 ? void 0 : _data$users.length) || 0;
seriesItem === null || seriesItem === void 0 ? void 0 : seriesItem.data.push(len);
});
_series.push(seriesItem);
handleAddressTotalOptions(tmpOptionsAddress);
if (addressData) {
handleTotalAddressChartEvent(_graphql.network[0]);
}
} // Update our CSV data variable with the above data
if (historyData && addressData) {
handleCSVData(getCSVData());
}
}, [historyData, addressData, allSignaturesSignedData, allDocumentSignedData]);
var handleTotalAddressChartEvent = function handleTotalAddressChartEvent(networkName) {
var _users$sort;
var res = addressData === null || addressData === void 0 ? void 0 : addressData.find(function (item) {
return (item === null || item === void 0 ? void 0 : item.networkName) === networkName;
});
var users = res.data.users;
var timeData = [];
users === null || users === void 0 ? void 0 : (_users$sort = users.sort(function (a, b) {
return (a === null || a === void 0 ? void 0 : a.joinedTimestamp) - (b === null || b === void 0 ? void 0 : b.joinedTimestamp);
})) === null || _users$sort === void 0 ? void 0 : _users$sort.forEach(function (user) {
var joinedTimestamp = user.joinedTimestamp;
handleTimestamp(joinedTimestamp, timeData);
});
var timeTitle = "Address Count (".concat(networkName, ")");
var aggragatetTile = "Address Count - Aggregated (".concat(networkName, ")");
var _generateOptions3 = generateOptions(networkName, timeData, timeTitle, aggragatetTile),
timeOpt = _generateOptions3.timeOpt,
aggregateOpt = _generateOptions3.aggregateOpt;
handleAddressTimeOptions(timeOpt);
handleAddressAggregateOptions(aggregateOpt);
};
function completionData(timeData) {
if ((timeData === null || timeData === void 0 ? void 0 : timeData.length) === 0) return [];
var endTime = (0, _moment.default)();
var _timeData$ = timeData[0],
year = _timeData$.year,
month = _timeData$.month,
date = _timeData$.date;
var nextDay = (0, _moment.default)([year, month - 1, date]);
var dataList = [];
var _loop = function _loop() {
var tmpT = nextDay;
var tDate = tmpT.format("DD/MM/YYYY");
var item = timeData.find(function (_ref5) {
var year = _ref5.year,
month = _ref5.month,
date = _ref5.date;
return (0, _moment.default)([year, month - 1, date]).format("DD/MM/YYYY") == tDate;
});
if (item) {
dataList.push(item);
} else {
dataList.push({
time: "".concat(nextDay.year(), "-").concat(nextDay.month() + 1, "-").concat(nextDay.date()),
year: nextDay.year(),
month: nextDay.month() + 1,
date: nextDay.date(),
count: 0
});
}
nextDay = nextDay.add(1, 'days');
};
while (isValidDate(endTime, nextDay)) {
_loop();
}
return dataList;
}
function isValidDate(endTime, nextDay) {
return nextDay.isBefore(endTime);
}
var generateOptions = function generateOptions(seriesTitle, timeData, timeTitle, aggregateTile, color) {
var dataList = completionData(timeData);
var aggregateTimeData = handleAggregateData(dataList);
var aggregateData = generateChartData(aggregateTimeData);
var numData = generateChartData(dataList);
var timeOpt = {
chart: {
type: 'column'
},
title: {
text: timeTitle
},
xAxis: {
type: "datetime"
},
yAxis: {
title: false
},
credits: {
enabled: false
},
series: [{
title: "".concat(seriesTitle),
name: "".concat(seriesTitle),
data: numData,
color: color
}]
};
var options = {
xAxis: {
type: 'datetime'
},
yAxis: {
min: 0,
title: false
},
credits: {
enabled: false
},
plotOptions: {
series: {
events: {
legendItemClick: function legendItemClick() {
return false;
}
},
marker: {
enabled: false
}
}
}
};
var aggregateOpTime = {
title: {
text: aggregateTile
}
};
var aggregateOpSeries = {
series: [{
title: "".concat(seriesTitle),
name: "".concat(seriesTitle),
data: aggregateData,
color: color
}]
};
var aggregateOpt = _objectSpread(_objectSpread(_objectSpread({}, options), aggregateOpTime), aggregateOpSeries);
return {
timeOpt: timeOpt,
aggregateOpt: aggregateOpt
};
};
var handleTimestamp = function handleTimestamp(timestamp, timeData) {
var _parseTimestamp = parseTimestamp(timestamp),
year = _parseTimestamp.year,
month = _parseTimestamp.month,
date = _parseTimestamp.date,
time = _parseTimestamp.time;
var result = timeData.find(function (item) {
return (item === null || item === void 0 ? void 0 : item.time) === time;
});
if (result) {
result.count = (result === null || result === void 0 ? void 0 : result.count) + 1;
} else {
timeData.push({
time: time,
year: year,
month: month,
date: date,
count: 1
});
}
};
var parseTimestamp = function parseTimestamp(timestamp) {
var utcTime = _moment.default.unix(timestamp).utc();
var year = utcTime.year();
var month = utcTime.month() + 1;
var date = utcTime.date();
var time = "".concat(year, "-").concat(month, "-").concat(date);
return {
year: year,
month: month,
date: date,
time: time
};
};
var generateChartData = function generateChartData(timeData) {
var _sortTimeData;
return (_sortTimeData = sortTimeData(timeData)) === null || _sortTimeData === void 0 ? void 0 : _sortTimeData.map(function (_ref6) {
var year = _ref6.year,
month = _ref6.month,
date = _ref6.date,
count = _ref6.count;
return [Date.UTC(year, month - 1, date), count];
});
};
var sortTimeData = function sortTimeData(timeData) {
return timeData.sort(function (a, b) {
var aTime = (0, _moment.default)([a.year, a.month, a.date]).unix();
var bTime = (0, _moment.default)([b.year, b.month, b.date]).unix();
return aTime - bTime;
});
};
var handleAggregateData = function handleAggregateData(timeData) {
var tmp = sortTimeData(_lodash.default.cloneDeep(timeData));
return tmp === null || tmp === void 0 ? void 0 : tmp.map(function (item, index) {
var count;
if (index !== 0) {
count = item.count + tmp[index - 1].count;
item.count = count;
}
return item;
});
};
var handleDocumentSignedData = function handleDocumentSignedData(documentSignedData) {
var _data$contracts, _data$contracts$filte, _data$contracts$filte2;
var networkName = documentSignedData.networkName,
data = documentSignedData.data;
var timeData = [];
data === null || data === void 0 ? void 0 : (_data$contracts = data.contracts) === null || _data$contracts === void 0 ? void 0 : (_data$contracts$filte = _data$contracts.filter(function (_ref7) {
var consensusTimestamp = _ref7.consensusTimestamp;
return consensusTimestamp !== "0";
})) === null || _data$contracts$filte === void 0 ? void 0 : (_data$contracts$filte2 = _data$contracts$filte.sort(function (a, b) {
return (a === null || a === void 0 ? void 0 : a.consensusTimestamp) - (b === null || b === void 0 ? void 0 : b.consensusTimestamp);
})) === null || _data$contracts$filte2 === void 0 ? void 0 : _data$contracts$filte2.forEach(function (contract) {
var consensusTimestamp = contract.consensusTimestamp; // parse every day timestamp
handleTimestamp(consensusTimestamp, timeData);
});
var timeTitle = "Documents Signed Count (".concat(networkName, ")");
var aggragatetTile = "Documents Signed Count - Aggregated (".concat(networkName, ")");
return generateOptions(networkName, timeData, timeTitle, aggragatetTile, CHART_COLOR[TOTAL_DOCUMENTS_SIGNED]);
};
var handleSignatureSignedData = function handleSignatureSignedData(signatureSignedData) {
var _events$sort;
var networkName = signatureSignedData.networkName,
events = signatureSignedData.data.events;
var timeData = [];
events === null || events === void 0 ? void 0 : (_events$sort = events.sort(function (a, b) {
return (a === null || a === void 0 ? void 0 : a.timestamp) - (b === null || b === void 0 ? void 0 : b.timestamp);
})) === null || _events$sort === void 0 ? void 0 : _events$sort.forEach(function (_ref8) {
var timestamp = _ref8.timestamp;
handleTimestamp(timestamp, timeData);
});
var timeTitle = "Signature Signed Count (".concat(networkName, ")");
var aggregateTile = "Signature Signed Count - Aggregated (".concat(networkName, ")");
return generateOptions(networkName, timeData, timeTitle, aggregateTile, CHART_COLOR[TOTAL_SIGNATURES_SIGNED]);
};
var handleChartEvent = /*#__PURE__*/function () {
var _ref9 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(networkName, type) {
var result, _handleDocumentSigned, timeOpt, aggregateOpt, _handleSignatureSigne, timeOp, aggregateOp;
return regeneratorRuntime.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
result = Object.keys(statisticalData).find(function (key) {
return statisticalData[key] === type;
});
_context2.t0 = result;
_context2.next = _context2.t0 === TOTAL_DOCUMENTS_SIGNED ? 4 : _context2.t0 === TOTAL_SIGNATURES_SIGNED ? 14 : 24;
break;
case 4:
_context2.t1 = handleDocumentSignedData;
_context2.next = 7;
return (0, _graphql.loadDocumentsSignedByNetwork)(networkName);
case 7:
_context2.t2 = _context2.sent;
_handleDocumentSigned = (0, _context2.t1)(_context2.t2);
timeOpt = _handleDocumentSigned.timeOpt;
aggregateOpt = _handleDocumentSigned.aggregateOpt;
handleTimeOptions(timeOpt);
handleAggregateOptions(aggregateOpt);
return _context2.abrupt("break", 24);
case 14:
_context2.t3 = handleSignatureSignedData;
_context2.next = 17;
return (0, _graphql.loadSignatureSignedByNetwork)(networkName);
case 17:
_context2.t4 = _context2.sent;
_handleSignatureSigne = (0, _context2.t3)(_context2.t4);
timeOp = _handleSignatureSigne.timeOpt;
aggregateOp = _handleSignatureSigne.aggregateOpt;
handleTimeOptions(timeOp);
handleAggregateOptions(aggregateOp);
return _context2.abrupt("break", 24);
case 24:
case "end":
return _context2.stop();
}
}
}, _callee2);
}));
return function handleChartEvent(_x, _x2) {
return _ref9.apply(this, arguments);
};
}();
var headers = [{
label: "Network",
key: "network"
}, {
label: "Documents Signed",
key: "docsignedlength"
}, {
label: "Signatures Signed",
key: "sigsignedlength"
}, {
label: "Address Count",
key: "addresscountog"
}, {
label: "",
key: "blank"
}, {
label: "Date",
key: "date"
}, {
label: "Signed Document Count (ethereum)",
key: "signeddoccount.ethereum"
}, {
label: "Signed Document Count (ropsten)",
key: "signeddoccount.ropsten"
}, {
label: "Signed Document Count (bsc)",
key: "signeddoccount.bsc"
}, {
label: "Signed Document Count (avalanche)",
key: "signeddoccount.avalanche"
}, {
label: "Signed Document Count (polygon)",
key: "signeddoccount.polygon"
}, {
label: "Signed Document Count (fantom)",
key: "signeddoccount.fantom"
}, {
label: "",
key: "blank"
}, {
label: "Aggregate Signed Document Count (ethereum)",
key: "signeddoccountagg.ethereum"
}, {
label: "Aggregate Signed Document Count (ropsten)",
key: "signeddoccountagg.ropsten"
}, {
label: "Aggregate Signed Document Count (bsc)",
key: "signeddoccountagg.bsc"
}, {
label: "Aggregate Signed Document Count (avalanche)",
key: "signeddoccountagg.avalanche"
}, {
label: "Aggregate Signed Document Count (polygon)",
key: "signeddoccountagg.polygon"
}, {
label: "Aggregate Signed Document Count (fantom)",
key: "signeddoccountagg.fantom"
}, {
label: "",
key: "blank"
}, {
label: "Signature Count (ethereum)",
key: "signaturecount.ethereum"
}, {
label: "Signature Count (ropsten)",
key: "signaturecount.ropsten"
}, {
label: "Signature Count (bsc)",
key: "signaturecount.bsc"
}, {
label: "Signature Count (avalanche)",
key: "signaturecount.avalanche"
}, {
label: "Signature Count (polygon)",
key: "signaturecount.polygon"
}, {
label: "Signature Count (fantom)",
key: "signaturecount.fantom"
}, {
label: "",
key: "blank"
}, {
label: "Aggregate Signature Count (ethereum)",
key: "signaturecountagg.ethereum"
}, {
label: "Aggregate Signature Count (ropsten)",
key: "signaturecountagg.ropsten"
}, {
label: "Aggregate Signature Count (bsc)",
key: "signaturecountagg.bsc"
}, {
label: "Aggregate Signature Count (avalanche)",
key: "signaturecountagg.avalanche"
}, {
label: "Aggregate Signature Count (polygon)",
key: "signaturecountagg.polygon"
}, {
label: "Aggregate Signature Count (fantom)",
key: "signaturecountagg.fantom"
}, {
label: "",
key: "blank"
}, {
label: "Address Count (ethereum)",
key: "addresscount.ethereum"
}, {
label: "Address Count (ropsten)",
key: "addresscount.ropsten"
}, {
label: "Address Count (bsc)",
key: "addresscount.bsc"
}, {
label: "Address Count (avalanche)",
key: "addresscount.avalanche"
}, {
label: "Address Count (polygon)",
key: "addresscount.polygon"
}, {
label: "Address Count (fantom)",
key: "addresscount.fantom"
}, {
label: "",
key: "blank"
}, {
label: "Aggregate Address Count (ethereum)",
key: "addresscountagg.ethereum"
}, {
label: "Aggregate Address Count (ropsten)",
key: "addresscountagg.ropsten"
}, {
label: "Aggregate Address Count (bsc)",
key: "addresscountagg.bsc"
}, {
label: "Aggregate Address Count (avalanche)",
key: "addresscountagg.avalanche"
}, {
label: "Aggregate Address Count (polygon)",
key: "addresscountagg.polygon"
}, {
label: "Aggregate Address Count (fantom)",
key: "addresscountagg.fantom"
}];
var getCSVData = function getCSVData() {
// Signature counts + Signed document counts
var numDataSig = [],
aggregateDataSig = [],
numDataDoc = [],
aggregateDataDoc = [];
for (var idx in signaturesSignedByNetwork) {
var _signaturesSignedByNe = signaturesSignedByNetwork[idx],
timeOpt = _signaturesSignedByNe.timeOpt,
aggregateOpt = _signaturesSignedByNe.aggregateOpt;
numDataSig.push(timeOpt.series[0].data);
aggregateDataSig.push(aggregateOpt.series[0].data);
var _documentsSignedByNet = documentsSignedByNetwork[idx],
timeOptDoc = _documentsSignedByNet.timeOpt,
aggregateOptDoc = _documentsSignedByNet.aggregateOpt;
numDataDoc.push(timeOptDoc.series[0].data);
aggregateDataDoc.push(aggregateOptDoc.series[0].data);
} // Address Count
var csvAddressData = [];
var _loop2 = function _loop2(_idx) {
var _users$sort2;
var users = addressData[_idx].data.users;
var timeDataAddress = [];
users === null || users === void 0 ? void 0 : (_users$sort2 = users.sort(function (a, b) {
return (a === null || a === void 0 ? void 0 : a.joinedTimestamp) - (b === null || b === void 0 ? void 0 : b.joinedTimestamp);
})) === null || _users$sort2 === void 0 ? void 0 : _users$sort2.forEach(function (user) {
var joinedTimestamp = user.joinedTimestamp;
handleTimestamp(joinedTimestamp, timeDataAddress);
});
var dataListAddress = completionData(timeDataAddress);
var aggregateTimeDataAddress = handleAggregateData(dataListAddress);
var aggregateDataAddress = generateChartData(aggregateTimeDataAddress);
var numDataAddress = generateChartData(dataListAddress);
csvAddressData.push({
aggregateDataAddress: aggregateDataAddress,
numDataAddress: numDataAddress
});
};
for (var _idx in addressData) {
_loop2(_idx);
}
var contractData = []; // Document and signature counts
for (var net in numDataSig[0]) {
var _historyData$net, _historyData$net2;
contractData.push({
network: historyData[net] ? historyData[net].networkName : "",
docsignedlength: (_historyData$net = historyData[net]) !== null && _historyData$net !== void 0 && _historyData$net.data ? historyData[net].data.infos[0].totalDocumentsSigned : "",
sigsignedlength: (_historyData$net2 = historyData[net]) !== null && _historyData$net2 !== void 0 && _historyData$net2.data ? historyData[net].data.infos[0].totalSignaturesSigned : "",
blank: "",
date: new Date(numDataSig[0][net][0]).toDateString(),
signeddoccount: {
ethereum: numDataDoc[0][net] ? numDataDoc[0][net][1] : "0",
ropsten: numDataDoc[1][net] ? numDataDoc[1][net][1] : "0",
bsc: numDataDoc[2][net] ? numDataDoc[2][net][1] : "0",
avalanche: numDataDoc[3][net] ? numDataDoc[3][net][1] : "0",
polygon: numDataDoc[4][net] ? numDataDoc[4][net][1] : "0",
fantom: numDataDoc[0][net] ? numDataDoc[0][net][1] : "0"
},
signeddoccountagg: {
ethereum: aggregateDataDoc[0][net] ? aggregateDataDoc[0][net][1] : "0",
ropsten: aggregateDataDoc[1][net] ? aggregateDataDoc[1][net][1] : "0",
bsc: aggregateDataDoc[2][net] ? aggregateDataDoc[2][net][1] : "0",
avalanche: aggregateDataDoc[3][net] ? aggregateDataDoc[3][net][1] : "0",
polygon: aggregateDataDoc[4][net] ? aggregateDataDoc[4][net][1] : "0",
fantom: aggregateDataDoc[0][net] ? aggregateDataDoc[0][net][1] : "0"
},
signaturecount: {
ethereum: numDataSig[0][net] ? numDataSig[0][net][1] : "0",
ropsten: numDataSig[1][net] ? numDataSig[1][net][1] : "0",
bsc: numDataSig[2][net] ? numDataSig[2][net][1] : "0",
avalanche: numDataSig[3][net] ? numDataSig[3][net][1] : "0",
polygon: numDataSig[4][net] ? numDataSig[4][net][1] : "0",
fantom: numDataSig[0][net] ? numDataSig[0][net][1] : "0"
},
signaturecountagg: {
ethereum: aggregateDataSig[0][net] ? aggregateDataSig[0][net][1] : "0",
ropsten: aggregateDataSig[1][net] ? aggregateDataSig[1][net][1] : "0",
bsc: aggregateDataSig[2][net] ? aggregateDataSig[2][net][1] : "0",
avalanche: aggregateDataSig[3][net] ? aggregateDataSig[3][net][1] : "0",
polygon: aggregateDataSig[4][net] ? aggregateDataSig[4][net][1] : "0",
fantom: aggregateDataSig[0][net] ? aggregateDataSig[0][net][1] : "0"
},
addresscount: {
ethereum: csvAddressData[0].numDataAddress[net] ? csvAddressData[0].numDataAddress[net][1] : "0",
ropsten: csvAddressData[1].numDataAddress[net] ? csvAddressData[1].numDataAddress[net][1] : "0",
bsc: csvAddressData[2].numDataAddress[net] ? csvAddressData[2].numDataAddress[net][1] : "0",
avalanche: csvAddressData[3].numDataAddress[net] ? csvAddressData[3].numDataAddress[net][1] : "0",
polygon: csvAddressData[4].numDataAddress[net] ? csvAddressData[4].numDataAddress[net][1] : "0",
fantom: csvAddressData[5].numDataAddress[net] ? csvAddressData[5].numDataAddress[net][1] : "0"
},
addresscountagg: {
ethereum: csvAddressData[0].aggregateDataAddress[net] ? csvAddressData[0].aggregateDataAddress[net][1] : "0",
ropsten: csvAddressData[1].aggregateDataAddress[net] ? csvAddressData[1].aggregateDataAddress[net][1] : "0",
bsc: csvAddressData[2].aggregateDataAddress[net] ? csvAddressData[2].aggregateDataAddress[net][1] : "0",
avalanche: csvAddressData[3].aggregateDataAddress[net] ? csvAddressData[3].aggregateDataAddress[net][1] : "0",
polygon: csvAddressData[4].aggregateDataAddress[net] ? csvAddressData[4].aggregateDataAddress[net][1] : "0",
fantom: csvAddressData[5].aggregateDataAddress[net] ? csvAddressData[5].aggregateDataAddress[net][1] : "0"
}
});
} // Add address counts
for (var _net in addressData) {
contractData[_net].addresscountog = addressData[_net].data.users.length;
}
var data = contractData;
return data;
};
if (error) {
return /*#__PURE__*/_react.default.createElement("div", {
className: "m-auto text-lg text-gray-60"
}, "Error loading data. Check console for a detailed error message.");
}
if (loading) {
return /*#__PURE__*/_react.default.createElement("div", {
className: "m-auto text-lg text-gray-60"
}, "Loading... (", currentLoadedStep, "/5)");
}
return /*#__PURE__*/_react.default.createElement("div", {
className: "flex justify-center flex-wrap mt-16 px-2 sm:px-16 mb-auto max-w-7xl"
}, /*#__PURE__*/_react.default.createElement(_reactCsv.CSVLink, {
className: "cursor-pointer text-center ml-auto mt-3 sm:mt-0 sm:w-32 font-bold flex-grow-0 bg-orange-500 focus:outline-none text-gray-40 py-2 rounded-sm hover:bg-orange-600",
onClick: function onClick(event) {
// Returning false will not export the svg. Since we are still loading data, we don't want to give an incomplete csv file.
if (loading) {
return false;
}
},
headers: headers,
data: csvData ? csvData : "",
filename: "data-export-".concat(new Date().toISOString().replace(':', '-').substring(0, 16), "Z.csv")
}, loading ? 'Loading...' : 'Export to CSV'), /*#__PURE__*/_react.default.createElement("div", {
className: "flex justify-around flex-wrap w-full"
}, /*#__PURE__*/_react.default.createElement(_charts.Chart, {
options: allOptions,
className: "my-4 w-full sm:w-1/3 p-4"
}), /*#__PURE__*/_react.default.createElement(_charts.Chart, {
options: timeOptions,
className: "my-4 w-full sm:w-1/3 p-4"
}), /*#__PURE__*/_react.default.createElement(_charts.Chart, {
options: aggregateOptions,
className: "my-4 w-full sm:w-1/3 p-4"
})), /*#__PURE__*/_react.default.createElement("div", {
className: "flex justify-around flex-wrap w-full"
}, /*#__PURE__*/_react.default.createElement(_charts.Chart, {
options: addressTotalOptions,
className: "my-4 w-full sm:w-1/3 p-4"
}), /*#__PURE__*/_react.default.createElement(_charts.Chart, {
options: addressTimeOptions,
className: "my-4 w-full sm:w-1/3 p-4"
}), /*#__PURE__*/_react.default.createElement(_charts.Chart, {
options: addressAggregateOptions,
className: "my-4 w-full sm:w-1/3 p-4"
})));
};
exports.DataDashboard = DataDashboard;