Match the existing parameter type when applying configuration

This commit is contained in:
Zaid Abdulla committed 2013-01-14 16:17:50 +03:00
1 parent c568bb6332
commit 5c834568ab
2 files changed
+32 -9

No files matched your search

+28 -7
View File
@@ -1,11 +1,12 @@
exports.UNDEFINED_TYPE = '[object Undefined]' UNDEFINED_TYPE = '[object Undefined]'
exports.NULL_TYPE = '[object Null]' NULL_TYPE = '[object Null]'
exports.NUMBER_TYPE = '[object Number]' NUMBER_TYPE = '[object Number]'
exports.STRING_TYPE = '[object String]' STRING_TYPE = '[object String]'
exports.ARRAY_TYPE = '[object Array]' ARRAY_TYPE = '[object Array]'
exports.OBJECT_TYPE = '[object Object]' OBJECT_TYPE = '[object Object]'
exports.typeOf = (obj) ->
typeOf = (obj) ->
Object.prototype.toString.call(obj) Object.prototype.toString.call(obj)
@@ -39,3 +40,23 @@ exports.getParamValueFromPath = (obj, path) ->
for p in pp for p in pp
ref = ref[p] ref = ref[p]
return ref return ref
exports.matchType = (src, dst) ->
switch typeOf(src)
when STRING_TYPE
String(dst)
when NUMBER_TYPE
Number(dst)
else
dst
exports.UNDEFINED_TYPE = UNDEFINED_TYPE
exports.NULL_TYPE = NULL_TYPE
exports.NUMBER_TYPE = NUMBER_TYPE
exports.STRING_TYPE = STRING_TYPE
exports.ARRAY_TYPE = ARRAY_TYPE
exports.OBJECT_TYPE = OBJECT_TYPE
exports.typeOf = typeOf
+4 -2
View File
@@ -72,8 +72,10 @@ exports.assertPresets = (deviceId, presetsHash, callback) ->
for c in configurations for c in configurations
switch c.type switch c.type
when 'value' when 'value'
if c.value != common.getParamValueFromPath(device, "#{c.name}._value") src = common.getParamValueFromPath(device, "#{c.name}._value")
setParameterValues.push([c.name, c.value]) dst = common.matchType(src, c.value)
if src != dst
setParameterValues.push([c.name, dst])
when 'age' when 'age'
timeDiff = (now - common.getParamValueFromPath(device, "#{c.name}._timestamp")) / 1000 timeDiff = (now - common.getParamValueFromPath(device, "#{c.name}._timestamp")) / 1000
if (c.age - timeDiff < config.PRESETS_TIME_PADDING) if (c.age - timeDiff < config.PRESETS_TIME_PADDING)