in src/UXClient/UXClient.ts [60:130]
public transformTsxToEventsArray(events, options) {
var timezoneOffset = options.timezoneOffset ? options.timezoneOffset : 0;
var rows = [];
var eventSourceProperties = {};
var nameToStrippedPropName = {};
var valueToStrippedValueMap = {};
for (var eventIdx in events) {
var eventSourceId;
if (events[eventIdx].hasOwnProperty('schema')) {
eventSourceProperties[events[eventIdx].schema.rid] = {};
eventSourceProperties[events[eventIdx].schema.rid].propertyNames = events[eventIdx].schema.properties.reduce(function (prev, curr) {
prev.push({ name: curr.name, type: curr.type });
return prev;
}, []);
eventSourceProperties[events[eventIdx].schema.rid].eventSourceName = events[eventIdx].schema['$esn'];
eventSourceId = events[eventIdx].schema.rid;
} else {
eventSourceId = events[eventIdx].schemaRid;
}
var timeStamp = (new Date((new Date(events[eventIdx]['$ts'])).valueOf() - timezoneOffset)).toISOString().slice(0, -1).replace('T', ' ');
var event = { 'timestamp ($ts)': timeStamp };
// lts logic
var lts = events[eventIdx]['$lts'] ? events[eventIdx]['$lts'] : null;
if (lts) {
event['LocalTimestamp_DateTime'] = {
value: lts.replace('T', ' '),
name: 'LocalTimestamp',
type: 'DateTime'
}
}
event["EventSourceName_String"] = {
value: eventSourceProperties[eventSourceId].eventSourceName,
name: 'EventSourceName',
type: 'String'
};
for (var propIdx in eventSourceProperties[eventSourceId].propertyNames) {
var name = eventSourceProperties[eventSourceId].propertyNames[propIdx].name;
if (!nameToStrippedPropName.hasOwnProperty(name))
nameToStrippedPropName[name] = Utils.stripForConcat(name);
var strippedName = nameToStrippedPropName[name];
var type = eventSourceProperties[eventSourceId].propertyNames[propIdx].type;
var columnNameAndType = strippedName + "_" + type;
if (!valueToStrippedValueMap.hasOwnProperty(String(events[eventIdx].values[propIdx])))
valueToStrippedValueMap[String(events[eventIdx].values[propIdx])] = Utils.stripForConcat(String(events[eventIdx].values[propIdx]));
var eventObject = {
value: valueToStrippedValueMap[String(events[eventIdx].values[propIdx])],
name: strippedName,
type: type
}
event[columnNameAndType] = eventObject;
}
if (events[eventIdx].hasOwnProperty('$op')) {
let defaultType = 'String';
let otherProps = JSON.parse(events[eventIdx]['$op']);
Object.keys(otherProps).forEach((propNameRaw) => {
let strippedNameOP = Utils.stripForConcat(propNameRaw);
let columnNameAndTypeOP = strippedNameOP + '_String';
event[columnNameAndTypeOP] = {
value: otherProps[propNameRaw],
name: strippedNameOP,
type: defaultType
}
});
}
rows.push(event);
}
return rows;
}