Rev 1648 | Rev 1650 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed
| Rev 1648 | Rev 1649 | ||
|---|---|---|---|
| Line 2... | Line 2... | ||
| 2 | Require("plugin/storage.js"); |
2 | Require("plugin/storage.js"); |
| 3 | 3 | ||
| 4 | function Module_CreateAliasAutoComplete(args) |
4 | function Module_CreateAliasAutoComplete(arg_index, args) |
| 5 | { |
5 | { |
| 6 | // args[0] == command name |
- | |
| 7 | var arg_index = args.length - 2; |
- | |
| 8 | - | ||
| 9 | if (arg_index == 0) |
6 | if (arg_index == 0) |
| 10 | { |
7 | { |
| 11 | return Module_GetAliasNames(); |
8 | return Module_GetAliasNames(); |
| 12 | } |
9 | } |
| 13 | else if (arg_index == 1) |
10 | else if (arg_index == 1) |
| 14 | { |
11 | { |
| 15 | return Module_GetNames(); |
12 | return Module_GetNames(); |
| 16 | } |
13 | } |
| 17 | else if (arg_index == 2) |
14 | else if (arg_index == 2) |
| 18 | { |
15 | { |
| 19 | return Module_GetAvailableIds([ args[ |
16 | return Module_GetAvailableIds([ args[1] ]) |
| 20 | } |
17 | } |
| 21 | 18 | ||
| 22 | return []; |
19 | return []; |
| - | 20 | } |
|
| - | 21 | ||
| - | 22 | function Module_CreateAlias(alias_name, module_name, module_id, specific) |
|
| - | 23 | { |
|
| - | 24 | if (arguments.length < 3) |
|
| - | 25 | { |
|
| - | 26 | Log("\033[31mNot enough parameters given.\033[0m\n"); |
|
| - | 27 | return false; |
|
| 23 | } |
28 | } |
| 24 | 29 | ||
| 25 |
|
30 | if (alias_name == "all") |
| 26 | { |
31 | { |
| - | 32 | Log("\033[31m\"all\" is not allowed as alias name.\033[0m\n"); |
|
| 27 |
|
33 | return false; |
| - | 34 | } |
|
| 28 | 35 | ||
| 29 | var specific_list = {}; |
36 | var specific_list = {}; |
| 30 | 37 | ||
| 31 | if (specific) |
38 | if (specific) |
| 32 | { |
39 | { |
| 33 | var specific_parts = split( |
40 | var specific_parts = specific.split(","); |
| 34 | 41 | ||
| 35 | // TODO: Check length |
42 | // TODO: Check length |
| 36 | 43 | ||
| 37 | for (var index in specific_parts) |
44 | for (var index in specific_parts) |
| 38 | { |
45 | { |
| 39 | var parts = split("=" |
46 | var parts = specific_parts[index].split("="); |
| 40 | 47 | ||
| 41 | // TODO: Check length |
48 | // TODO: Check length |
| 42 | 49 | ||
| 43 | specific_list[parts[0]] = parts[1]; |
50 | specific_list[parts[0]] = parts[1]; |
| 44 | } |
51 | } |
| Line 54... | Line 61... | ||
| 54 | 61 | ||
| 55 | return Storage_SetParameter("alias", alias_name, JSON.stringify(alias_data)); |
62 | return Storage_SetParameter("alias", alias_name, JSON.stringify(alias_data)); |
| 56 | } |
63 | } |
| 57 | Console_RegisterCommand(Module_CreateAlias, Module_CreateAliasAutoComplete); |
64 | Console_RegisterCommand(Module_CreateAlias, Module_CreateAliasAutoComplete); |
| 58 | 65 | ||
| 59 | function Module_CreateAliasGroupAutoComplete(args) |
66 | function Module_CreateAliasGroupAutoComplete(arg_index, args) |
| 60 | { |
67 | { |
| 61 | // args[0] == command name |
- | |
| 62 | var arg_index = args.length - 2; |
- | |
| 63 | - | ||
| 64 | if (arg_index == 0) |
68 | if (arg_index == 0) |
| 65 | { |
69 | { |
| 66 | return Module_GetAliasNames(); |
70 | return Module_GetAliasNames(); |
| 67 | } |
71 | } |
| 68 | else if (arg_index == 1) |
72 | else if (arg_index == 1) |
| 69 | { |
73 | { |
| 70 | return Module_GetNames(); |
74 | return Module_GetNames(); |
| 71 | } |
75 | } |
| 72 | else if (arg_index >= 2) |
76 | else if (arg_index >= 2) |
| 73 | { |
77 | { |
| 74 | return Module_GetAliasNames([ args[ |
78 | return Module_GetAliasNames([ args[1] ]) |
| 75 | } |
79 | } |
| 76 | 80 | ||
| 77 | return []; |
81 | return []; |
| 78 | } |
82 | } |
| 79 | 83 | ||
| 80 | function Module_CreateAliasGroup(alias_group_name, module_type, alias_name1, alias_name2) |
84 | function Module_CreateAliasGroup(alias_group_name, module_type, alias_name1, alias_name2) |
| 81 | { |
85 | { |
| 82 | if (arguments.length < 3) |
86 | if (arguments.length < 3) |
| 83 | { |
87 | { |
| 84 |
|
88 | Log("\033[31mNot enough parameters given.\033[0m\n"); |
| - | 89 | return false; |
|
| - | 90 | } |
|
| - | 91 | ||
| - | 92 | if (alias_group_name == "all") |
|
| - | 93 | { |
|
| - | 94 | Log("\033[31m\"all\" is not allowed as alias name.\033[0m\n"); |
|
| - | 95 | return false; |
|
| 85 | } |
96 | } |
| 86 | 97 | ||
| 87 | alias_group_name = arguments[0]; |
98 | alias_group_name = arguments[0]; |
| 88 | module_type = arguments[1]; |
99 | module_type = arguments[1]; |
| 89 | var aliases = []; |
100 | var aliases = []; |
| Line 95... | Line 106... | ||
| 95 | var aliases_data = Module_ResolveAlias(arguments[n]); |
106 | var aliases_data = Module_ResolveAlias(arguments[n]); |
| 96 | aliases.push(arguments[n]); |
107 | aliases.push(arguments[n]); |
| 97 | } |
108 | } |
| 98 | } |
109 | } |
| 99 | 110 | ||
| 100 | if (aliases.length == 0) |
111 | if (aliases.length == 0) |
| 101 | { |
112 | { |
| 102 |
|
113 | Log("\033[31mNo valid aliases were found, aborting creation of group alias.\033[0m\n"); |
| - | 114 | return false; |
|
| 103 | } |
115 | } |
| 104 | 116 | ||
| 105 | var alias_data = { |
117 | var alias_data = { |
| 106 | "group" : true, |
118 | "group" : true, |
| 107 | "name" : alias_group_name, |
119 | "name" : alias_group_name, |
| 108 | "module_name" : module_type, |
120 | "module_name" : module_type, |
| 109 | "aliases" : aliases |
121 | "aliases" : aliases |
| Line 119... | Line 131... | ||
| 119 | var alias_data_string = Storage_GetParameter("alias", alias_name); |
131 | var alias_data_string = Storage_GetParameter("alias", alias_name); |
| 120 | 132 | ||
| 121 | if (alias_data_string) |
133 | if (alias_data_string) |
| 122 | { |
134 | { |
| 123 | var alias_data = eval("(" + alias_data_string + ")"); |
135 | var alias_data = eval("(" + alias_data_string + ")"); |
| 124 | 136 | ||
| 125 | if (alias_data["group"]) |
137 | if (alias_data["group"]) |
| 126 | { |
138 | { |
| 127 | for (var n in alias_data["aliases"]) |
139 | for (var n in alias_data["aliases"]) |
| 128 | { |
140 | { |
| 129 | var aliases_data_sub = Module_ResolveAlias(alias_data["aliases"][n], filter_module_names); |
141 | var aliases_data_sub = Module_ResolveAlias(alias_data["aliases"][n], filter_module_names); |
| Line 131... | Line 143... | ||
| 131 | for (var name in aliases_data_sub) |
143 | for (var name in aliases_data_sub) |
| 132 | { |
144 | { |
| 133 | aliases_data[name] = aliases_data_sub[name]; |
145 | aliases_data[name] = aliases_data_sub[name]; |
| 134 | } |
146 | } |
| 135 | } |
147 | } |
| 136 | } |
148 | } |
| 137 | else |
149 | else |
| 138 | { |
150 | { |
| 139 | if (in_array(filter_module_names, alias_data["module_name"])) |
151 | if (in_array(filter_module_names, alias_data["module_name"])) |
| 140 | { |
152 | { |
| 141 | aliases_data[alias_name] = alias_data; |
153 | aliases_data[alias_name] = alias_data; |
| 142 | } |
154 | } |
| 143 | } |
155 | } |
| Line 211... | Line 223... | ||
| 211 | return result_list; |
223 | return result_list; |
| 212 | } |
224 | } |
| 213 | 225 | ||
| 214 | function Module_GetNames() |
226 | function Module_GetNames() |
| 215 | { |
227 | { |
| 216 | return [ "Dimmer230", "irTransmit", "irReceive", "SimpleDTMF", "BusVoltage" ]; |
228 | return [ "Dimmer230", "irTransmit", "irReceive", "SimpleDTMF", "BusVoltage", "DS18x20", "FOST02" ]; |
| 217 | } |
229 | } |
| 218 | 230 | ||
| 219 | function Module_SendMessage(module_name, module_id, command, variables) |
231 | function Module_SendMessage(module_name, module_id, command, variables) |
| 220 | { |
232 | { |
| 221 | var args = []; |
233 | var args = []; |
| Line 252... | Line 264... | ||
| 252 | 264 | ||
| 253 | Module_OnChangeFunctions[alias_name].push(callback); |
265 | Module_OnChangeFunctions[alias_name].push(callback); |
| 254 | } |
266 | } |
| 255 | 267 | ||
| 256 | function Module_RegisterToOnMessage(alias_name, callback) |
268 | function Module_RegisterToOnMessage(alias_name, callback) |
| 257 | { |
269 | { |
| 258 | if (!Module_OnMessageFunctions[alias_name]) |
270 | if (!Module_OnMessageFunctions[alias_name]) |
| 259 | { |
271 | { |
| 260 | Module_OnMessageFunctions[alias_name] = []; |
272 | Module_OnMessageFunctions[alias_name] = []; |
| 261 | } |
273 | } |
| 262 | 274 | ||
| 263 | Module_OnMessageFunctions[alias_name].push(callback); |
275 | Module_OnMessageFunctions[alias_name].push(callback); |
| 264 | } |
276 | } |
| 265 | 277 | ||
| 266 | function Module_OnMessage(full_id, command, variables) |
278 | function Module_OnMessage(full_id, command, variables) |
| 267 | { |
279 | { |
| 268 | var id_parts = full_id.split(":", 2); |
280 | var id_parts = full_id.split(":", 2); |
| 269 | var aliases_data = {}; |
281 | var aliases_data = {}; |
| 270 | 282 | ||
| 271 | var aliases_data = Module_LookupAliases({ |
283 | var aliases_data = Module_LookupAliases({ |
| - | 284 | "module_name" : id_parts[0], |
|
| - | 285 | "module_id" : id_parts[1], |
|
| - | 286 | "group" : false |
|
| - | 287 | }); |
|
| - | 288 | ||
| - | 289 | for (var alias_name in aliases_data) |
|
| - | 290 | { |
|
| - | 291 | var ok = true; |
|
| - | 292 | ||
| - | 293 | if (aliases_data[alias_name]["specific"]) |
|
| - | 294 | { |
|
| - | 295 | var ok = true; |
|
| - | 296 | ||
| - | 297 | for (var name in variables) |
|
| - | 298 | { |
|
| - | 299 | if (aliases_data[alias_name]["specific"][name] && aliases_data[alias_name]["specific"][name] != variables[name]) |
|
| - | 300 | { |
|
| - | 301 | ok = false; |
|
| - | 302 | break; |
|
| - | 303 | } |
|
| - | 304 | } |
|
| - | 305 | } |
|
| - | 306 | ||
| - | 307 | if (Module_OnMessageFunctions[alias_name] && ok) |
|
| - | 308 | { |
|
| - | 309 | for (var n in Module_OnMessageFunctions[alias_name]) |
|
| - | 310 | { |
|
| - | 311 | Module_OnMessageFunctions[alias_name][n](alias_name, command, variables); |
|
| - | 312 | } |
|
| - | 313 | } |
|
| - | 314 | } |
|
| - | 315 | ||
| - | 316 | if (Module_OnMessageFunctions["all"]) |
|
| - | 317 | { |
|
| - | 318 | for (var n in Module_OnMessageFunctions["all"]) |
|
| - | 319 | { |
|
| - | 320 | Module_OnMessageFunctions["all"][n](id_parts[0], id_parts[1], command, variables); |
|
| - | 321 | } |
|
| - | 322 | } |
|
| - | 323 | } |
|
| - | 324 | ||
| - | 325 | function Module_OnChange(full_id, available) |
|
| - | 326 | { |
|
| - | 327 | var id_parts = full_id.split(":", 2); |
|
| - | 328 | var aliases_data = {}; |
|
| - | 329 | ||
| - | 330 | var aliases_data_all = Module_LookupAliases({ |
|
| 272 | "module_name" : id_parts[0], |
331 | "module_name" : id_parts[0], |
| 273 | "module_id" : id_parts[1], |
332 | "module_id" : id_parts[1], |
| 274 | "group" : false |
333 | "group" : false |
| 275 | }); |
334 | }); |
| 276 | 335 | ||
| 277 | for (var alias_name in aliases_data) |
336 | for (var alias_name in aliases_data) |
| 278 | { |
- | |
| 279 | var ok = true; |
- | |
| 280 | - | ||
| 281 | if (aliases_data[alias_name]["specific"]) |
- | |
| 282 | { |
- | |
| 283 | var ok = true; |
- | |
| 284 | - | ||
| 285 | for (var name in variables) |
- | |
| 286 | { |
- | |
| 287 | if (aliases_data[alias_name]["specific"][name] && aliases_data[alias_name]["specific"][name] != variables[name]) |
- | |
| 288 | { |
- | |
| 289 | ok = false; |
- | |
| 290 | break; |
- | |
| 291 | } |
- | |
| 292 | } |
- | |
| 293 | } |
- | |
| 294 | - | ||
| 295 | if (Module_OnMessageFunctions[alias_name] && ok) |
- | |
| 296 | { |
- | |
| 297 | for (var n in Module_OnMessageFunctions[alias_name]) |
- | |
| 298 | { |
- | |
| 299 | Module_OnMessageFunctions[alias_name][n](alias_name, command, variables); |
- | |
| 300 | } |
- | |
| 301 | } |
- | |
| 302 | } |
- | |
| 303 | } |
- | |
| 304 | - | ||
| 305 | function Module_OnChange(full_id, available) |
- | |
| 306 | { |
- | |
| 307 | var id_parts = full_id.split(":", 2); |
- | |
| 308 | var aliases_data = {}; |
- | |
| 309 | - | ||
| 310 | var aliases_data_all = Module_LookupAliases({ |
- | |
| 311 | "module_name" : id_parts[0], |
- | |
| 312 | "module_id" : id_parts[1], |
- | |
| 313 | "group" : false |
- | |
| 314 | }); |
- | |
| 315 | - | ||
| 316 | for (var alias_name in aliases_data) |
- | |
| 317 | { |
337 | { |
| 318 | var ok = true; |
338 | var ok = true; |
| 319 | 339 | ||
| 320 | if (aliases_data[alias_name]["specific"]) |
340 | if (aliases_data[alias_name]["specific"]) |
| 321 | { |
341 | { |
| 322 | var ok = true; |
342 | var ok = true; |
| 323 | 343 | ||
| Line 330... | Line 350... | ||
| 330 | } |
350 | } |
| 331 | } |
351 | } |
| 332 | } |
352 | } |
| 333 | 353 | ||
| 334 | if (Module_OnChangeFunctions[alias_name] && ok) |
354 | if (Module_OnChangeFunctions[alias_name] && ok) |
| 335 | { |
355 | { |
| 336 | for (var n in Module_OnChangeFunctions[alias_name]) |
356 | for (var n in Module_OnChangeFunctions[alias_name]) |
| 337 | { |
357 | { |
| 338 | Module_OnChangeFunctions[alias_name][n](alias_name, available); |
358 | Module_OnChangeFunctions[alias_name][n](alias_name, available); |
| 339 | } |
359 | } |
| - | 360 | } |
|
| - | 361 | } |
|
| - | 362 | ||
| - | 363 | if (Module_OnChangeFunctions["all"]) |
|
| - | 364 | { |
|
| - | 365 | for (var n in Module_OnChangeFunctions["all"]) |
|
| - | 366 | { |
|
| - | 367 | Module_OnChangeFunctions["all"][n](id_parts[0], id_parts[1], available); |
|
| 340 | } |
368 | } |
| 341 | } |
369 | } |
| 342 | } |
370 | } |