@iotize/tap
Version:
IoTize Device client for Javascript
120 lines • 9.52 kB
JavaScript
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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