UNPKG

@iotize/tap

Version:

IoTize Device client for Javascript

120 lines 9.52 kB
import { VariableType } from '@iotize/tap/service/impl/variable'; export function isTruthy(v, falsyValue = ['no', 'false', '0']) { if (v === undefined) { return false; } if (falsyValue.indexOf(v.toString().toLowerCase()) >= 0) { return false; } return !!v; } export function convertToVariableType(accessor) { let unsigned = isTruthy(accessor.value('GUI_unsigned', 'string', '0')); let float = isTruthy(accessor.value('GUI_float', 'string', '0')); const unitSize = accessor.value('Unit', 'number', 1); if (unitSize === 1) { const xAppRender = accessor.get('XAppRender', undefined); if (xAppRender) { const xAppRenderUnitType = xAppRender.value('GUI_UnitType', 'string', undefined); if (xAppRenderUnitType === 'ASCII') { return VariableType.Data.ASCII; } } } // Old version of IoTize Studio was storing UnitType ? const unitDataType = accessor.value('UnitType', 'string', ''); if (unitDataType) { if (unitDataType === 'boolean') { return VariableType.Data.BOOLEAN; } else if (unitDataType === 'ASCII') { return VariableType.Data.ASCII; } else { unsigned = unitDataType === 'unsigned integer'; float = unitDataType === 'float'; } } if (float) { return VariableType.Data.FLOAT32; } switch (unitSize) { case 0: return unsigned ? VariableType.Data.UINT8 : VariableType.Data.INT8; case 1: return unsigned ? VariableType.Data.UINT8 : VariableType.Data.INT8; case 2: return unsigned ? VariableType.Data.UINT16 : VariableType.Data.INT16; case 3: return unsigned ? VariableType.Data.UINT32 : VariableType.Data.INT32; default: throw new Error(`Unknown unit size: "${unitSize}" (type=${typeof unitSize})`); } } export function fromMapping(data, attributeName, mapping, defaultValue) { let value = data.value(attributeName, 'string', defaultValue); if (!value) { return undefined; } value = value.replace(/ /g, '_').toUpperCase(); if (!(value in mapping)) { throw new Error(`Invalid value "${value}" for key "${attributeName}"`); } return mapping[value]; } /** * TODO add to common lib (toEnumFromValue) * @param mapping * @param value */ export function stringToEnum(mapping, value) { const values = Object.keys(mapping).map((key) => mapping[key]); if (values.find((v) => v.toString() === value) === undefined) { throw new Error(`Missing value "${value}" in enum. Available keys are ${values.join(', ')}`); } if (value in mapping) { // For string to number convertion return mapping[mapping[value]]; } return value; } export function mapKey(object, key, value) { if (value) { object[key] = value; } } // /** // * Checks if current bundle can be seen by the current user // * @param {string} profile name of the profile // * @returns {boolean} true if bundle is visible to the user // */ // isVisibleTo(profile: string) { // let isVisible; // switch (profile) { // case 'admin': // return true; // case 'supervisor': // return (this.rights.length !== 1 || this.rights.find( right => right.profile === 'admin') === undefined); // default : // isVisible = this.rights.find( right => right.profile === profile? true : right.profile === 'anonymous'); // } // return isVisible !== undefined ? true : false; // } // /** // * Checks if current bundle can be written by the current user // * @param profile name of the profile // * @returns {boolean} true if bundle is writable by the user // */ // isWritableBy(profile: string) { // switch (profile) { // case 'admin': // return this.rights.find(right => right.write) !== undefined; // case 'supervisor': // return this.rights.find(right => (right.write && right.profile !== 'admin')) !== undefined; // default : // const profileRights = this.rights.find( right => right.profile === profile); // const anonymousRights = this.rights.find( right => right.profile === 'anonymous'); // return (profileRights && profileRights.write)? true : (anonymousRights && anonymousRights.write)? true : false; // } // } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2NvbmZpZy9pb3RpemUtc3R1ZGlvL3NyYy9saWIvaW90aXplLXN0dWRpby1jb25maWctY29udmVydGVyL3V0aWxpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRWpFLE1BQU0sVUFBVSxRQUFRLENBQ3RCLENBQThCLEVBQzlCLFVBQVUsR0FBRyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDO0lBRWpDLElBQUksQ0FBQyxLQUFLLFNBQVMsRUFBRTtRQUNuQixPQUFPLEtBQUssQ0FBQztLQUNkO0lBQ0QsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUN2RCxPQUFPLEtBQUssQ0FBQztLQUNkO0lBQ0QsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2IsQ0FBQztBQUVELE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxRQUFtQjtJQUN2RCxJQUFJLFFBQVEsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdkUsSUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLE1BQU0sUUFBUSxHQUFXLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUU3RCxJQUFJLFFBQVEsS0FBSyxDQUFDLEVBQUU7UUFDbEIsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLENB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