1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | #controllers/index.py import config from bottle import Bottle, template, static_file class Index(Bottle): def __init__( self ): super ().__init__() self .route( '/static/images/<filename>' , callback = self .loadImage) self .route( '/static/styles/<filename>' , callback = self .loadStyle) self .route( '/static/scripts/<filename>' , callback = self .loadScript) self .route( '/static/fonts/<filename>' , callback = self .loadFont) self .route( '/' , callback = self .index) self .route( '/lesson/<id:int>' , callback = self .lesson) self .route( '/practice/<id:int>' , callback = self .practice) def loadImage( self , filename): return static_file(filename, root = './public/images' ) def loadStyle( self , filename): return static_file(filename, root = './public/css' ) def loadScript( self , filename): return static_file(filename, root = './public/js' ) def loadFont( self , filename): return static_file(filename, root = './public/fonts' ) def index( self ): config.kdict[ 'blogTitle' ] = "រៀនវាយអក្សរខ្មែរ" return template( 'index' , data = config.kdict) def lesson( self , id ): config.kdict[ 'blogTitle' ] = 'មេរៀនទី ' + config.kdict[ 'KhmerNumber' ][ id ] return template( 'lessons/lesson' + str ( id ), data = config.kdict) def practice( self , id ): config.kdict[ 'blogTitle' ] = 'លំហាត់ទី ' + config.kdict[ 'KhmerNumber' ][ id ] return template( 'practices/practice' + str ( id ), data = config.kdict) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | //public/js/practice1.js class Typing{ constructor(){ $( ".keyboard-base .key" ).on({ keypress: function (event){ if (event.which != 32) var key = String.fromCharCode(event.which).toUpperCase(); else if (event.which == 32) var key = "Space" ; typing.checkKey(key) } }); this .letters = [[ 'A' , 'កូនដៃ' , 'ា' ],[ 'S' , 'នាងដៃ' , 'ស' ],[ 'D' , 'ចង្អុលកណ្តាល' , 'ដ' ],[ 'F' , 'ចង្អុលដៃ' , 'ថ' ],[ 'G' , 'ចង្អុលដៃ' , 'ង' ], [ 'H' , 'ចង្អុលដៃស្តាំ' , 'ហ' ],[ 'J' , 'ចង្អុលដៃស្តាំ' , '្' ],[ 'K' , 'ចង្អុលកណ្តាល' , 'ក' ],[ 'L' , 'នាងដៃ' , 'ល' ],[ ';' , 'កូនដៃ' , 'ើ' ], [ "'" ,'កូនដៃ ',' ់ '],[' Space ',' មេដៃស្តាំ ',' ']]; this.counter = Math.floor(Math.random() * (this.letters).length); this.nextKey = this.letters[this.counter][0]; this.setColor(this.nextKey); } setColor(nextKey){ var keys = $(".keyboard-base").children(); for(var index in keys){ if(keys[index].innerHTML == nextKey){ keys[index].focus(); $(keys[index]).css({' color ':' teal '}); } if(this.pressedKey && (keys[index].innerHTML == this.pressedKey)){ $(keys[index]).css({' color ':' black '}); } } $(' #letter').html(this.letters[this.counter][2]); } checkKey(key){ if (key == this .nextKey){ this .counter = Math.floor(Math.random() * ( this .letters).length); this .pressedKey = this .nextKey; this .nextKey = this .letters[ this .counter][0]; this .setColor( this .nextKey); } } } //end of class |
GitHub: https://khmerweb-typing.herokuapp.com
Heroku: https://khmerweb-typing.herokuapp.com/