UNPKG

pixie-transformer

Version:

Pixie Transformer is transforming a Raw/Response JSON Payload into your expected JSON Payload. It's make your life easy and convenience without any logic required in your code.

50 lines (49 loc) 1.39 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const _ = require("underscore"); const math = require("mathjs"); const tool_1 = require("../util/tool"); function parseMeasurement(d, index, measurement) { let value = d[measurement.row]; let name = 'y'; try { if (measurement.defaultValue !== undefined) { value = measurement.defaultValue; } else if (measurement.isIncremental) { value = index; } else if (measurement.formula !== undefined) { value = Calculating(d, measurement.formula); } else { value = parseFloat(value.toString()); } } catch (e) { value = 0; } if (measurement.rename !== undefined) { name = measurement.rename; } return { type: true, name: name, value: value, float: measurement.float }; } exports.parseMeasurement = parseMeasurement; function Calculating(d, formula) { const splitPattern = /[\s()*/%+-]+/g; let formulaWithValue = formula; const formulaKey = formula.split(splitPattern); _.chain(formulaKey) .compact() .each(key => { if (!tool_1.IsNumber(key)) { formulaWithValue = tool_1.ReplaceAll(formulaWithValue, key, d[key]); } }); return math.eval(formulaWithValue); }