You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

170 lines
7.6 KiB

3 years ago
  1. // use this to isolate the scope
  2. (function () {
  3. if(!$axure.document.configuration.showConsole) { return; }
  4. $(document).ready(function () {
  5. $axure.player.createPluginHost({
  6. id: 'debugHost',
  7. context: 'inspect',
  8. title: 'Console',
  9. gid: 3
  10. });
  11. generateDebug();
  12. $('#variablesClearLink').click(clearvars_click);
  13. $('#traceClear').click(cleartrace_click);
  14. $('#traceToggle').click(stoptrace_click);
  15. $('#traceStart').click(starttrace_click);
  16. $('#traceClear').hide();
  17. $('#traceToggle').hide();
  18. $('#closeConsole').click(close);
  19. var currentStack= [];
  20. var finishedStack = [];
  21. $axure.messageCenter.addMessageListener(function (message, data) {
  22. if(message == 'axCompositeEventMessage') {
  23. for(var i = 0; i < data.length; i++) {
  24. processMessages(data[i].message, data[i].data);
  25. }
  26. } else processMessages(message, data);
  27. });
  28. var processMessages = function(message, data) {
  29. if(message == 'globalVariableValues') {
  30. $('#variablesDiv').empty();
  31. for(var key in data) {
  32. var value = data[key] == '' ? '(blank)' : data[key];
  33. $('#variablesDiv').append('<div class="variableList"><div class="variableName">' + key + '</div><div class="variableValue">' + value + '</div></div>');
  34. }
  35. } else if(message == 'axEvent') {
  36. var addToStack = "<div class='axEventBlock'>";
  37. addToStack += "<div class='axEventContainer'>";
  38. addToStack += " <div class='axTime'>" + new Date().toLocaleTimeString() + "</div>";
  39. addToStack += " <div class='axEvent'>" + data.event.description + ": </div>";
  40. addToStack += " <div class='axLabel'>" + data.label + " (" + data.type + ")</div>";
  41. addToStack += "</div>";
  42. currentStack.push(addToStack);
  43. } else if (message == 'axEventComplete') {
  44. currentStack[currentStack.length - 1] += "</div>";
  45. finishedStack.push(currentStack.pop());
  46. if(currentStack.length == 0) {
  47. $('#traceEmptyState').hide();
  48. $('#traceClear').show();
  49. $('#traceToggle').show();
  50. for(var i = finishedStack.length - 1; i >= 0; i--) {
  51. if($('#traceDiv').children().length > 99) $('#traceDiv').children().last().remove();
  52. $('#traceDiv').prepend(finishedStack[i]);
  53. }
  54. finishedStack = [];
  55. }
  56. } else if (message == 'axCase') {
  57. //var addToStack = "<div class='axCaseContainer' style='background-color: #" + data.color + "'>";
  58. var addToStack = "<div class='axCaseContainer'>";
  59. addToStack += " <div class='axCaseItem'>" + data.item + "</div>";
  60. if (data.description) { addToStack += " <div class='axCaseDescription' title='" + data.description + "'>" + data.description + "</div>" };
  61. addToStack += "</div>";
  62. currentStack[currentStack.length - 1] += addToStack;
  63. } else if (message == 'axAction') {
  64. var addToStack = "<div class='axActionContainer'>";
  65. addToStack += " <div class='axActionItem'>" + data.name + "</div>";
  66. //addToStack += " <div class='axActionItem'>" + data.item + "</div>";
  67. //if (data.description) { addToStack += " <div class='axActionDescription' title='" + data.description + "'>" + data.description + "</div>" };
  68. addToStack += "</div>";
  69. currentStack[currentStack.length - 1] += addToStack;
  70. } else if (message == 'axInfo') {
  71. var addToStack = "<div class='axInfoContainer'>";
  72. addToStack += " <div class='axInfoItem'>" + data.item + "</div>";
  73. if (data.description) { addToStack += " <div class='axInfoDescription' title='" + data.longDescription + "'>" + data.description + "</div>" };
  74. addToStack += "</div>";
  75. currentStack[currentStack.length - 1] += addToStack;
  76. }
  77. }
  78. // bind to the page load
  79. $axure.page.bind('load.debug', function () {
  80. var traceStr = $axure.player.getHashStringVar(TRACE_VAR_NAME);
  81. if (traceStr.length > 0) $axure.messageCenter.setState("isTracing", true);
  82. else $axure.messageCenter.setState("isTracing", false);
  83. $axure.messageCenter.postMessage('getGlobalVariables', '');
  84. return false;
  85. });
  86. function clearvars_click(event) {
  87. $axure.messageCenter.postMessage('resetGlobalVariables', '');
  88. }
  89. function close() {
  90. $axure.player.pluginClose("debugHost");
  91. }
  92. function cleartrace_click(event) {
  93. $('#traceDiv').html('');
  94. }
  95. function starttrace_click(event) {
  96. $axure.messageCenter.setState("isTracing", true);
  97. //$('#traceDiv').html('');
  98. $('#traceEmptyState').hide();
  99. $('#traceClear').show();
  100. $('#traceToggle').text('Stop Trace');
  101. $('#traceToggle').off("click");
  102. $('#traceToggle').click(stoptrace_click);
  103. $('#traceToggle').show();
  104. console.log("starting trace");
  105. $axure.player.setVarInCurrentUrlHash(TRACE_VAR_NAME, 1);
  106. }
  107. function stoptrace_click(event) {
  108. $axure.messageCenter.setState("isTracing", false);
  109. $('#traceDiv').prepend('<div class="tracePausedNotification">Trace Paused<div>');
  110. $('#traceToggle').text('Restart Trace');
  111. $('#traceToggle').off("click");
  112. $('#traceToggle').click(starttrace_click);
  113. console.log("stopping trace");
  114. $axure.player.deleteVarFromCurrentUrlHash(TRACE_VAR_NAME);
  115. }
  116. });
  117. function generateDebug() {
  118. var pageNotesUi = "<div id='debugHeader'>";
  119. pageNotesUi += "<div id='debugToolbar'>";
  120. pageNotesUi += "<div id='consoleTitle' class='pluginNameHeader'>Console</div>";
  121. pageNotesUi += "</div>";
  122. pageNotesUi += "</div>";
  123. pageNotesUi += "<div id='variablesContainer' style='max-height:300px; overflow-y:auto'>";
  124. pageNotesUi += "<div id='variablesTitle' class='sectionTitle'>Variables</div>";
  125. pageNotesUi += "<a id='variablesClearLink' class='traceOption'>Reset Variables</a>";
  126. pageNotesUi += "<div id='variablesDiv'></div></div>";
  127. pageNotesUi += "<div id='traceContainer'>";
  128. pageNotesUi += "<div id='traceHeader'>";
  129. pageNotesUi += "<span class='sectionTitle'>Trace</span><a id='traceClear' class='traceOption'>Clear Trace</a><a id='traceToggle' class='traceOption'>Stop Trace</a>";
  130. pageNotesUi += "</div>";
  131. pageNotesUi += "</div>";
  132. pageNotesUi += "<div id='debugScrollContainer'>";
  133. pageNotesUi += "<div id='debugContainer'>";
  134. pageNotesUi += "<div id='traceEmptyState'>";
  135. pageNotesUi += "<div class='startInstructions'>Click the button below to start recording interactions as you click through the prototype.</div>";
  136. pageNotesUi += "<div id='traceStart' class='startButton'>Start Trace</div>";
  137. pageNotesUi += "</div>";
  138. pageNotesUi += "<div id='traceDiv'></div></div>";
  139. pageNotesUi += "</div></div>";
  140. $('#debugHost').html(pageNotesUi);
  141. $('#traceEmptyState').show();
  142. }
  143. })();