Divec has uploaded a new change for review.
https://gerrit.wikimedia.org/r/83123
Change subject: WIP: Event Logger: collect IME functionality info
......................................................................
WIP: Event Logger: collect IME functionality info
Change-Id: I50e89d5a289f3fcb4fe2a6835a2ec96fb497242c
---
A demos/ve/eventLogger.html
1 file changed, 131 insertions(+), 0 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor
refs/changes/23/83123/1
diff --git a/demos/ve/eventLogger.html b/demos/ve/eventLogger.html
new file mode 100644
index 0000000..cff3387
--- /dev/null
+++ b/demos/ve/eventLogger.html
@@ -0,0 +1,131 @@
+<!doctype html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <title>Keyboard Event Logger</title>
+ <style>
+ #imediv, #inputbox {
+ position: absolute;
+ left: 0.5em; right: .5em; top: .5em; height:
2em;
+ overflow: clip;
+ }
+ #inputbox {
+ border: solid gray 1px;
+ display: none;
+ }
+ #logbox {
+ border: solid gray 1px;
+ white-space: pre;
+ font: 10pt monospace;
+ position: absolute;
+ left: .5em; right: .5em; top: 3.5em; bottom:
.5em;
+ overflow-y: auto;
+ }
+ </style>
+ <script src="../../modules/jquery/jquery.js"></script>
+ <script src="../../modules/jquery/jquery.client.js"></script>
+ <script src="../../modules/oojs/oo.js"></script>
+ <script src="../../modules/rangy/rangy-core-1.3.js"></script>
+ <script
src="../../modules/rangy/rangy-position-1.3.js"></script>
+ <script src="../../modules/unicodejs/unicodejs.js"></script>
+ <script
src="../../modules/unicodejs/unicodejs.graphemebreak.js"></script>
+ <script
src="../../modules/unicodejs/unicodejs.wordbreak.js"></script>
+ <script src="../../modules/ve/ve.js"></script>
+ <script src="../../modules/ve/ce/ve.ce.js"></script>
+ <script src="../../modules/ve/ve.EventSequencer.js"></script>
+ <script>
+ ve = {};
+ ve.log = function() {};
+ var imediv, imebox, inputbox, logbox, startTime,
timeoutId,
+ oldHtml = '', log = [];
+ function onbodyload () {
+ var i, len, range, sel,
+ eventNames = ['compositionstart',
'compositionend',
+'keydown', 'keyup', 'keypress', 'input'];
+ imediv = document.getElementById( 'imediv' ),
+ imebox = document.getElementById( 'imebox' ),
+ inputbox = document.getElementById( 'inputbox'
),
+ logbox = document.getElementById( 'logbox' );
+ for ( i = 0, len = eventNames.length; i < len;
i++ ) {
+ addListener( inputbox, eventNames[i] );
+ }
+ startTime = new Date().valueOf();
+ imebox.value = '';
+ imebox.focus();
+ }
+
+ function addListener( node, eventName ) {
+ node.addEventListener( eventName, function ( e
) {
+ logEvent( node, eventName, e );
+ var id;
+ id = setTimeout( function () {
+ if ( timeoutId != id ) {
+ return;
+ }
+ logEvent( node, 'end of event
queue', null );
+ log.push( '------' );
+ showlog();
+ } );
+ if ( timeoutId ) {
+ clearTimeout( timeoutId );
+ }
+ timeoutId = id;
+ });
+ }
+
+ function getKeyCode ( e ) {
+ return ( e && e.keyCode ) ? e.keyCode : null;
+ }
+
+ function logEvent( node, eventName, e ) {
+ var msUtc = (new Date().valueOf() - startTime)
/ 1000;
+ var newHtml = node.innerHTML;
+ var change = null;
+ if ( oldHtml !== newHtml ) {
+ change = newHtml;
+ oldHtml = newHtml;
+ }
+ logOb( {
+ 'time': msUtc,
+ 'eventName': eventName,
+ 'keyCode': getKeyCode( e ),
+ 'change': change
+ } );
+ //log( '' + cluster + ' (' + msUtc + 's) ' +
eventName + ' ' + showEventCode( e ) );
+ }
+
+ function logOb( ob ) {
+ log.push( ob );
+ showlog();
+ }
+
+ function showlog() {
+ logbox.innerHTML = JSON.stringify( log, null, 4
);
+ logbox.scrollTop = logbox.scrollHeight;
+ }
+
+ function start( ) {
+ log.push( {
+ 'imeNameAndVersion': imebox.value,
+ 'startDom': inputbox.innerHTML
+ } );
+ showlog();
+ imediv.style.display = 'none';
+ inputbox.style.display = 'block';
+ inputbox.focus();
+ }
+ </script>
+ </head>
+ <body onload="onbodyload()">
+ <div id="imediv">
+ <form onsubmit="start(); return false">
+ IME name and version:
+ <input type="text" id="imebox">
+ <input type='submit' id='startbutton'
value='Start Logging Keyboard Events'>
+ </form>
+ </div>
+ <div id="imebox" contenteditable="true"></div>
+ <div id="inputbox" contenteditable="true"></div>
+ <div id="logbox"></div>
+ </body>
+</html>
--
To view, visit https://gerrit.wikimedia.org/r/83123
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I50e89d5a289f3fcb4fe2a6835a2ec96fb497242c
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Divec <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits