| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479 | 
							- // use this to isolate the scope
 
- (function() {
 
-         if(!$axure.document.configuration.showRecordPlay) { return; }
 
-     $(window.document).ready(function() {
 
-         $axure.player.createPluginHost({
 
-             id: 'recordPlayHost',
 
-             context: 'interface',
 
-             title: 'Recording'
 
-         });
 
-         _generateRecordPlay();
 
-         $('#recordButton').click(_recordClick);
 
-         $('#playButton').click(_playClick);
 
-         $('#stopButton').click(_stopClick);
 
-         $('#deleteButton').click(_deleteClick);
 
-         // bind to the page load
 
-         $axure.page.bind('load.page_notes', function() {
 
-             
 
-             $.ajax({
 
-                 type: "POST",
 
-                 url: '/RecordController/ListRecordings',
 
-                 success: function(response) {
 
-                     $('#recordNameHeader').html("");
 
-                     $('#recordPlayContent').html("");
 
-                     //populate the notes 
 
-                     
 
-                     axRecordingList = [];
 
-                     if(!eventList) {
 
-                         recordingIndex = 0;
 
-                         eventList = [];
 
-                         recordingStartTime = 0;
 
-                         bulkEventElement = "";
 
-                         lastBulkEvent = {};
 
-                     }
 
-                     for(var idx in response.recordingList) {
 
-                         getOneRecording(response.recordingList[idx]);
 
-                     }
 
-                     return false;
 
-                 },
 
-                 //                dataType: 'json'
 
-             });
 
-         });
 
-     });
 
-     
 
-     var nameMatcher = new RegExp("^axRecording[0-9]{4}$", "i");
 
-     var indexMatcher = new RegExp("[0-9]{4}$", "i");
 
-     var convertFromJson = function(oneRecording) {
 
-         
 
-         if(nameMatcher.exec(oneRecording.recordingName)) {
 
-             var myArray = indexMatcher.exec(oneRecording.recordingName);
 
-             var currIdx = parseInt(myArray);
 
-             if(recordingIndex < currIdx) {
 
-                 recordingIndex = currIdx;
 
-             }
 
-         }
 
-         
 
-         for(var idx in oneRecording.eventList) {
 
-             var thisEvent = oneRecording.eventList[idx];
 
-                 thisEvent.eventInfo = {};
 
-                             thisEvent.eventInfo.srcElement = thisEvent.elementID;
 
-                 // TODO: check that this is correct.
 
-             if(isBulkMouse(thisEvent.eventType)) {
 
-                 thisEvent.eventInfo.mousePositions = [];
 
-                 thisEvent.eventInfo.mousePositions = thisEvent.mousePositions;
 
-                 thisEvent.timeStamp = thisEvent.mousePositions[0].timeStamp;
 
-             }
 
-             if(isSingleMouse(thisEvent.eventType)) {
 
-                 thisEvent.eventInfo.cursor = {};
 
-                 thisEvent.eventInfo.cursor = thisEvent.cursor;
 
-                 
 
-             }
 
-             if(thisEvent.eventType === 'OnDrag') {
 
-                 thisEvent.eventInfo.dragInfo = {};
 
-                 thisEvent.eventInfo.dragInfo = thisEvent.dragInfo;
 
-                 thisEvent.timeStamp = thisEvent.dragInfo.startTime;
 
-             }
 
-         }
 
-         return oneRecording;
 
-     };
 
-     var getOneRecording = function(recordingItem) {
 
-         $.ajax({
 
-                 type: "POST",
 
-                 url: '/RecordController/GetRecording',
 
-                 data: { 'recordingId': recordingItem.recordingId },
 
-             success: function(response) {
 
-                         axRecordingList[axRecordingList.length] = convertFromJson(response);
 
-                         var axRecordingContainer = $('#recordingContainer').find('li').filter('.recordingRootNode');
 
-                         axRecordingContainer.append(_formAxRecordingBranch(response));
 
-                         _attachEventTriggers(response);     
 
-             },                //                dataType: 'json'
 
-         });
 
-     };
 
-     
 
-     var axRecordingList;
 
-     var eventList;
 
-     var recordingIndex;
 
-     var recordingStartTime;
 
-     var recordingId;
 
-     var recordingName;
 
-     var leadingZeros = function(number, digits) { // because this thing doesn't have string.format (or does it?)
 
-         var recurseLeadingZeros = function(number, digitsLeft) {
 
-             if(digitsLeft > 0) {
 
-                 return recurseLeadingZeros("0" + number, digitsLeft - 1);
 
-             } else {
 
-                 return number;
 
-             }
 
-         };
 
-         return recurseLeadingZeros(number, digits - String(number).length);
 
-     };
 
-     
 
-     var generateRecordingName = function() {
 
-         return "axRecording" + leadingZeros(recordingIndex, 4);
 
-     };
 
-     var isSingleMouse = function(eventType) {
 
-         return (eventType === 'OnClick' ||
 
-             eventType === 'OnMouseUp' ||
 
-             eventType === 'OnMouseDown' ||
 
-             eventType === 'OnMouseOver' ||
 
-             eventType === 'OnKeyUp' ||
 
-             eventType === 'OnSelectedChange' ||
 
-             eventType === 'OnSelect' ||
 
-             eventType === 'OnUnselect' ||
 
-             eventType === 'OnTextChange' ||
 
-             eventType === 'OnMouseOut');
 
-     };
 
-     var isBulkMouse = function(eventType) {
 
-         return (eventType === 'OnMouseHover' ||
 
-             eventType === 'OnMouseMove');
 
-     };
 
-     var bulkEventElement;
 
-     var lastBulkEvent;
 
-     $axure.messageCenter.addMessageListener(function(message, eventData) {
 
-         var lastEvent, lastBulkData;
 
-         
 
-         if(message === 'logEvent') {
 
-             
 
-             if(bulkEventElement !== eventData.elementID) {
 
-                 lastBulkEvent = {};
 
-                 bulkEventElement = eventData.elementID;
 
-             }
 
-             
 
-             if(isBulkMouse(eventData.eventType)) {
 
-                 lastEvent = lastBulkEvent[eventData.eventType];
 
-                 if(lastEvent) {
 
-                     // this is the second or third or whatever onmousemove in a row
 
-                     lastBulkData = lastEvent.eventInfo.mousePositions;
 
-                     lastBulkData[lastBulkData.length] = {
 
-                         cursor: eventData.eventInfo.cursor,
 
-                         timeStamp: eventData.timeStamp
 
-                     };
 
-                 } else {
 
-                     eventData.eventInfo.mousePositions = [];
 
-                     eventData.eventInfo.mousePositions[0] = {
 
-                         cursor: eventData.eventInfo.cursor,
 
-                         timeStamp: eventData.timeStamp
 
-                     };
 
-                     eventList[eventList.length] = eventData;
 
-                     lastBulkEvent[eventData.eventType] = eventData;
 
-                 }
 
-             } else {
 
-                 var z = true;
 
-             }
 
-             
 
-             if(isSingleMouse(eventData.eventType) ) {
 
-                 eventList[eventList.length] = eventData;
 
-                 lastBulkEvent = {};
 
-                 bulkEventElement = eventData.elementID;
 
-             }
 
-             if(eventData.eventType === 'OnDrag') {
 
-                 lastEvent = lastBulkEvent[eventData.eventType];
 
-                 
 
-                 if (lastEvent) {
 
-                     // this is the second or third or whatever onmousemove in a row
 
-                     lastBulkData = lastEvent.eventInfo.mousePositions;
 
-                     lastBulkData[lastBulkData.length] = {
 
-                         dragInfo: eventData.eventInfo.dragInfo,
 
-                         timeStamp: eventData.timeStamp
 
-                     };
 
-                 } else {
 
-                     eventData.eventInfo.mousePositions = [];
 
-                     eventData.eventInfo.mousePositions[0] = {
 
-                         dragInfo: eventData.eventInfo.dragInfo,
 
-                         timeStamp: eventData.timeStamp
 
-                     };
 
-                     eventList[eventList.length] = eventData;
 
-                     lastBulkEvent[eventData.eventType] = eventData;
 
-                 }
 
-             }
 
- //            if(eventData.eventType === 'OnKeyUp') {
 
- //                transmissionFields.eventInfo = eventData.eventInfo;
 
- //                $.ajax({
 
- //                    type: "POST",
 
- //                    url: '/RecordController/LogMouseClick',
 
- //                    data: transmissionFields,
 
- //                });
 
- //            }            
 
-         }
 
-     });
 
-     
 
-     
 
-     var _recordClick = function(event) {
 
-         $('#recordButton').addClass('recordPlayButtonSelected');
 
-         recordingIndex++;
 
-         //        $axure.recording.startRecord();
 
-         recordingStartTime = new Date().getTime();
 
-         $.ajax({
 
-             type: "POST",
 
-             url: '/RecordController/CreateRecording',
 
-             data: {
 
-                 'recordingName': generateRecordingName(),
 
-                 timeStamp: recordingStartTime
 
-             },
 
-             success: function(response) {
 
-                 recordingId = response.recordingId;
 
-                 recordingName = response.recordingName;
 
-         $axure.messageCenter.postMessage('startRecording', {'recordingId' : recordingId, 'recordingName': recordingName});
 
-             },
 
-             //                dataType: 'json'
 
-         });
 
-         
 
-     };
 
-     var _playClick = function(event) {
 
-         $('#playButton').addClass('recordPlayButtonSelected');
 
-     };
 
-     var _stopClick = function(event) {
 
-         var axRecording, axObjectDictionary, axRecordingContainer, transmissionFields;
 
-         $('#sitemapLinksContainer').toggle();
 
-         if($('#recordButton').is('.recordPlayButtonSelected')) {
 
-             $('#recordButton').removeClass('recordPlayButtonSelected');
 
-             //            $axure.recording.stopRecord();
 
-             axRecording = {
 
-                 'recordingId' : recordingId,
 
-                 'recordingName': recordingName,
 
-                 'eventList': eventList
 
-             };
 
-             
 
-             axRecordingList[axRecordingList.length] = axRecording;
 
-             axRecordingContainer = $('#recordingContainer').find('li').filter('.recordingRootNode');
 
-             axRecordingContainer.append(_formAxRecordingBranch(axRecording));
 
-             _attachEventTriggers(axRecording);
 
-             lastBulkEvent = {};
 
-             var recordingStepList = [];
 
-             for(var eventListIdx in eventList) {
 
-                 var eventListItem = eventList[eventListIdx];
 
-                 if(eventListItem.eventType === 'OnDrag') {
 
-                     var lastDrag = eventListItem.eventInfo.mousePositions[eventListItem.eventInfo.mousePositions.length - 1].dragInfo;
 
-                     eventListItem.eventInfo.dragInfo.currentX = lastDrag.currentX;
 
-                     eventListItem.eventInfo.dragInfo.currentY = lastDrag.currentY;
 
-                     eventListItem.eventInfo.dragInfo.currentTime = lastDrag.currentTime;
 
-                     eventListItem.eventInfo.dragInfo.xDelta = eventListItem.eventInfo.dragInfo.currentX - eventListItem.eventInfo.dragInfo.lastX;
 
-                     eventListItem.eventInfo.dragInfo.yDelta = eventListItem.eventInfo.dragInfo.currentY - eventListItem.eventInfo.dragInfo.lastY;
 
-                     transmissionFields = {};
 
-                     transmissionFields = tackItOn(transmissionFields, eventListItem, ['eventType', 'elementID', 'path']);
 
-                     transmissionFields = tackItOn(transmissionFields, eventListItem.eventInfo, ['dragInfo']);
 
-                     transmissionFields.recordingId = recordingId;
 
-                 }
 
-                 if(isSingleMouse(eventListItem.eventType)) {
 
-                     transmissionFields = {};
 
-                     transmissionFields = tackItOn(transmissionFields, eventListItem, ['timeStamp', 'eventType', 'elementID', 'path']);
 
-                     transmissionFields = tackItOn(transmissionFields, eventListItem.eventInfo, ['cursor']);
 
-                     transmissionFields.recordingId = recordingId;
 
-                 }
 
-                 if(isBulkMouse(eventListItem.eventType)) {
 
-                     transmissionFields = {};
 
-                     transmissionFields = tackItOn(transmissionFields, eventListItem, ['eventType', 'elementID', 'path']);
 
-                     transmissionFields = tackItOn(transmissionFields, eventListItem.eventInfo, ['mousePositions']);
 
-                     transmissionFields.recordingId = recordingId;
 
-                 }
 
-                 recordingStepList[recordingStepList.length] = transmissionFields;
 
-             }
 
-             eventList = [];
 
-             $axure.messageCenter.postMessage('stopRecording', axObjectDictionary);
 
-             var jsonText = {
 
-                 'recordingName': recordingName,
 
-                 'recordingId': recordingId,
 
-                 recordingStart: new Date().getTime(),
 
-                 recordingEnd: recordingStartTime,
 
-                 'eventList': recordingStepList
 
-             };
 
-             $.ajax({
 
-                 type: "POST",
 
-                 url: '/RecordController/StopRecording',
 
-                 data: { 'jsonText': JSON.stringify(jsonText) }
 
-                 
 
-             });
 
-         }
 
-         if($('#playButton').is('.recordPlayButtonSelected')) {
 
-             $('#playButton').removeClass('recordPlayButtonSelected');
 
-         }
 
-     };
 
-     
 
-     var _deleteClick = function(event) {
 
-         $.ajax({
 
-                 type: "POST",
 
-                 url: '/RecordController/DeleteRecordings',
 
-             success: function(response) {
 
-                 var x = true;
 
-             },                //                dataType: 'json'
 
-         });
 
-     };
 
-     var tackItOn = function(destination, source, fields) {
 
-         for(var idx in fields) {
 
-             destination[fields[idx]] = source[fields[idx]];
 
-         }
 
-         return destination;
 
-     };
 
-     var makeFirstLetterLower = function(eventName) {
 
-         return eventName.substr(0, 1).toLowerCase() + eventName.substr(1);
 
-     };
 
-     var _attachEventTriggers = function(axRecording) {
 
-         for(var eventIdx in axRecording.eventList) {
 
-             var eventObject = axRecording.eventList[eventIdx];
 
-             var eventID = axRecording['recordingId'] + '_' + eventObject.timeStamp;
 
-             currentEvent = eventID;
 
-             $('#' + eventID).click(_triggerEvent(axRecording['recordingId'], eventObject.timeStamp));
 
-             //            $('#' + eventID).click(event.trigger);
 
-         }
 
-     };
 
-     var _formAxRecordingBranch = function(axRecording) {
 
-         var eventObject, eventID, RDOID;
 
-         var recordPlayUi = '<ul class="recordingTree">';
 
-         recordPlayUi += "<li class='recordingNode recordingExpandableNode'>";
 
-         recordPlayUi += '<div class="recordingContainer" style="margin-left:15px">';
 
-         recordPlayUi += '<a class="recordingPlusMinusLink"><span class="recordingMinus"></span></a>';
 
-         recordPlayUi += '<a class="recordingPageLink" nodeurl="home.html">';
 
-         recordPlayUi += '<span class="recordingPageIcon"></span>';
 
-         recordPlayUi += '<span class="recordingPageName">' + axRecording['recordingName'] + '</span>';
 
-         recordPlayUi += '</a>';
 
-         recordPlayUi += '<ul>';
 
-         for(eventID in axRecording.eventList) {
 
-             eventObject = axRecording.eventList[eventID];
 
-             recordPlayUi += '<li class="recordingNode recordingLeafNode">';
 
-             recordPlayUi += '<div class="recordingEventContainer" style="margin-left:44px">';
 
-             var eventID = axRecording['recordingId'] + '_' + eventObject.timeStamp;
 
-             recordPlayUi += '<a id="' + eventID + '" class="sitemapPageLink">';
 
-             recordPlayUi += 'Event ID: ' + eventID + '<br/>';
 
-             recordPlayUi += '<span class="sitemapPageIcon"></span>';
 
-             recordPlayUi += '<span class="sitemapPageName">';
 
-             recordPlayUi += 'elementID: ' + eventObject.elementID + '<br/>';
 
-             recordPlayUi += 'eventType: ' + eventObject.eventType + '<br/>';
 
- //            recordPlayUi += 'cursor: ' + eventObject.eventInfo.cursor.x + ',' + eventObject.eventInfo.cursor.y + '<br/>';
 
-             for(RDOID in eventObject.path) {
 
-                 recordPlayUi += '/' + eventObject.path[RDOID];
 
-             }
 
-             recordPlayUi += '<br/>';
 
-             recordPlayUi += '</span>';
 
-             recordPlayUi += '</a>';
 
-             recordPlayUi += '</div>';
 
-             recordPlayUi += '</li>';
 
-         }
 
-         recordPlayUi += '</ul>';
 
-         recordPlayUi += '</div>';
 
-         recordPlayUi += "</li>";
 
-         recordPlayUi += "</ul>";
 
-         return recordPlayUi;
 
-     };
 
-     var currentEvent = '';
 
-     var _triggerEvent = function(axRecording, timeStamp) {
 
-         //            $axure.messageCenter.postMessage('triggerEvent', false);
 
-         for(var axRecordingIdx in axRecordingList) {
 
-             if(axRecordingList[axRecordingIdx].recordingId === axRecording) {
 
-                 for(var eventIdx in axRecordingList[axRecordingIdx].eventList) {
 
-                     if(axRecordingList[axRecordingIdx].eventList[eventIdx].timeStamp === timeStamp) {
 
-                         var thisEvent = axRecordingList[axRecordingIdx].eventList[eventIdx];
 
-                         //                            thisEvent.trigger();
 
-                         var thisEventInfo, lowerEventType;
 
-                         lowerEventType = thisEvent.eventType.toLowerCase();
 
-                         if(lowerEventType === 'onclick' || lowerEventType === 'onmousein') {
 
-                             thisEventInfo = {};
 
-                             thisEventInfo = tackItOn(thisEventInfo, thisEvent.eventInfo, ['cursor', 'timeStamp', 'srcElement']);
 
-                             if(thisEvent.eventInfo.inputType) {
 
-                                 thisEventInfo = tackItOn(thisEventInfo, thisEvent.eventInfo, ['inputType', 'inputValue']);
 
-                             }
 
-                         } else {
 
-                             thisEventInfo = thisEvent.eventInfo;
 
-                         }
 
-                         var thisParameters = {
 
-                             'element': thisEvent.elementID,
 
-                             'eventInfo': thisEventInfo,
 
-                             //                            'axEventObject': thisEvent.eventObject,
 
-                             'eventType': thisEvent.eventType
 
-                         };
 
-                         return function() {
 
-                             $axure.messageCenter.postMessage('playEvent', thisParameters);
 
-                         };
 
-                     }
 
-                 }
 
-             }
 
-         }
 
-     };
 
-     var _generateRecordPlay = function() {
 
-         var recordPlayUi = "<div id='recordPlayContainer'>";
 
-         recordPlayUi += "<div id='recordPlayToolbar'>";
 
-         recordPlayUi += "<div style='height:30px;'>";
 
-         recordPlayUi += "<a id='recordButton' title='Start a Recording' class='recordPlayButton'></a>";
 
-         recordPlayUi += "<a id='playButton' title='Play Back a Recording' class='recordPlayButton'></a>";
 
-         recordPlayUi += "<a id='stopButton' title='Stop' class='recordPlayButton'></a>";
 
-         recordPlayUi += "<a id='deleteButton' title='Delete All Recordings' class='recordPlayButton'></a>";
 
-         recordPlayUi += "</div>";
 
-         recordPlayUi += "<div id='recordingContainer'><li class='recordingNode recordingRootNode'></li></div>";
 
-         recordPlayUi += "</div>";
 
-         $('#recordPlayHost').html(recordPlayUi);
 
-     };
 
- })();   
 
 
  |