1 (function(mmir) { 2 var _instance = { 3 "xmlns": "http://www.w3.org/2003/04/emma", 4 "version": "1.0", 5 }; 6 7 function toEmma() { 8 return { 9 emma: buildEmma(arguments) 10 }; 11 } 12 13 function guid() { 14 var d = new Date().getTime(); 15 var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { 16 var r = (d + Math.random() * 16) % 16 | 0; 17 d = Math.floor(d / 16); 18 return (c == 'x' ? r : (r & 0x7 | 0x8)).toString(16); 19 }); 20 return uuid; 21 } 22 23 function buildEmma() { 24 var args = arguments[0]; 25 switch (args[0]) { 26 case "touchInput": 27 var emma = _instance; 28 emma["interpretation"] = {}; 29 emma.interpretation.start = args[1].event.timeStamp; 30 /* TODO emma.interpretation.end = args[1].event.timeStamp; */ 31 emma.interpretation.mode = "gui"; 32 emma.interpretation.medium = "tactile"; 33 emma.interpretation.confidence = 1.0; 34 emma.interpretation.id = guid(); 35 emma.interpretation.gesture = {}; 36 emma.interpretation.gesture.type = args[1].event.type; 37 emma.interpretation.gesture.reference = {}; 38 emma.interpretation.gesture.reference.type = args[1].event.target.localName; 39 /* TODO add id to the button elements in the view */ 40 emma.interpretation.gesture.reference.id = args[1].event.target.id; 41 emma.interpretation.action = {}; 42 emma.interpretation.action.name = args[1].event.target.name; 43 emma.interpretation.action.data = args[1].data; 44 // @chsc03 FIXME div element cannot be converted to JSON due to circular reference 45 emma.interpretation.action.source = new XMLSerializer().serializeToString(args[1].source); 46 //emma.interpretation.action.source = args[1].source; 47 console.debug(JSON.stringify(emma)); 48 return emma; 49 case "speechInput": 50 // @chsc03 TODO 51 break; 52 default: 53 console.log('not known input'); 54 break; 55 } 56 // $.fn.trigger.call($(document), "inputManager", emma); 57 } 58 if (typeof exports !== 'undefined') { 59 if (typeof module !== 'undefined' && module.exports) { 60 exports = module.exports = toEmma; 61 } 62 mmir.emma = toEmma; 63 } else { 64 mmir.emma = toEmma; 65 } 66 })(this.mmir = this.mmir || {});