1
+ /*jslint plusplus: false, bitwise: true, eqeq: true, unparam: true, white: false, browser: true, onevar: false */
2
+ /*global console: true, window: true, chrome: true, $: true, require: true, exports: true, process: true, alert: true*/
1
3
$ ( function ( ) {
4
+ var KEY_ENTER = 13 ;
5
+ var KEY_SPACE = 32 ;
6
+ function pretty_print_last_line ( ) {
7
+ // works for all lines. But we just select the most recent
8
+ var lines = $ ( "#out" ) . val ( ) . split ( "\n" ) ;
9
+ lines = lines . slice ( lines . length - 1 ) ;
10
+ var maxEntries = 0 ;
11
+ var tableRows = $ . map (
12
+ lines ,
13
+ function ( line ) {
14
+ var lineEntriesString = line . trim ( ) . split ( / / g) [ 2 ] . trim ( ) ;
15
+ console . log ( lineEntriesString ) ;
16
+ var lineEntries = lineEntriesString . split ( / \d + / g) . slice ( 1 ) ; // skip the first empty entry
17
+ console . log ( lineEntries ) ;
18
+ maxEntries = Math . max ( maxEntries , lineEntries . length ) ;
19
+ var tableRow = $ ( "<tr></tr>" ) ;
20
+ $ . each ( lineEntries ,
21
+ function ( i , entry ) {
22
+ var tableData = $ ( "<td></td>" ) . text ( entry ) ;
23
+ tableRow . append ( tableData ) ;
24
+ } ) ;
25
+ return tableRow ;
26
+ }
27
+ ) ;
28
+ var header = $ ( "<thead/>" ) ;
29
+ for ( var entryNumber = 0 ; entryNumber < maxEntries ; entryNumber ++ ) {
30
+ header . append ( $ ( "<td>" + ( entryNumber + 1 ) + "</td>" ) ) ;
31
+ }
32
+ var $table = $ ( "<table/>" ) ;
33
+ $table . append ( header ) ;
34
+ $ . each ( tableRows , function ( i , row ) {
35
+ $table . append ( row ) ;
36
+ } ) ;
37
+ // insert
38
+ $ ( "#out-pretty" ) . empty ( ) ;
39
+ $ ( "#out-pretty" ) . append ( "Pretty current line:" ) ;
40
+ $ ( "#out-pretty" ) . append ( $table ) ;
41
+ $ ( "#out-pretty tr:even" ) . css ( "background-color" , "#DDDDDD" ) ;
42
+ $ ( "#out-pretty tr:odd" ) . css ( "background-color" , "#BBBBBB" ) ;
43
+ $ ( "#out-pretty td:empty" ) . css ( "background-color" , "#FF0000" ) ;
44
+ }
2
45
$ ( '#output' ) . focus ( ) ;
3
46
var newEntry = function ( ) {
4
47
var out = $ ( '#out' ) ;
@@ -23,7 +66,7 @@ $(function() {
23
66
} ;
24
67
$ ( '#number' ) . val ( 1 ) ;
25
68
$ ( "#user" ) . add ( '#id' ) . keydown ( function ( e ) {
26
- if ( e . keyCode === 13 || e . keyCode === 32 ) {
69
+ if ( e . keyCode === KEY_ENTER || e . keyCode === KEY_SPACE ) {
27
70
newEntry ( ) ;
28
71
return false ;
29
72
}
@@ -32,7 +75,7 @@ $(function() {
32
75
$ ( '#answer' ) . keydown ( function ( e ) {
33
76
var input = $ ( '#answer' ) ;
34
77
var number = $ ( '#number' ) ;
35
- if ( e . keyCode === 32 || e . keyCode === 13 ) {
78
+ if ( e . keyCode === KEY_SPACE || e . keyCode === KEY_ENTER ) {
36
79
var out = $ ( '#out' ) ;
37
80
var inputVal = input . val ( ) ;
38
81
if ( inputVal === '' ) {
@@ -44,14 +87,21 @@ $(function() {
44
87
) ;
45
88
number . val ( parseInt ( number . val ( ) , 10 ) + 1 ) ;
46
89
input . val ( '' ) ;
47
- if ( e . keyCode === 32 ) return false ;
90
+ pretty_print_last_line ( ) ;
91
+ if ( e . keyCode === KEY_SPACE ) {
92
+ return false ;
93
+ }
48
94
}
49
- if ( e . keyCode === 13 ) {
95
+ if ( e . keyCode === KEY_ENTER ) {
50
96
$ ( '#number input' ) . val ( 1 ) ;
51
97
newEntry ( ) ;
52
98
return false ;
53
99
}
54
- if ( e . keyCode >= 48 && e . keyCode <= 57 ) return false ;
100
+ if ( e . keyCode >= 48 && e . keyCode <= 57 ) { // number
101
+ alert ( "You haven entered a number!" ) ;
102
+ return false ;
103
+ }
55
104
return true ;
56
105
} ) ;
106
+ $ ( "input" ) . add ( "textarea" ) . attr ( "tabindex" , - 1 ) ;
57
107
} ) ;
0 commit comments