From eff9700864b57ed600449fae3b617a1516e4f5f1 Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Thu, 26 Jun 2014 13:46:10 +0200 Subject: [PATCH] first working version with some bugfixes! refactoring ensues ... --- uhr-de_CH_new.js | 6 ++--- uhr.js | 66 +++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 66 insertions(+), 6 deletions(-) diff --git a/uhr-de_CH_new.js b/uhr-de_CH_new.js index c269d47..5cabe64 100644 --- a/uhr-de_CH_new.js +++ b/uhr-de_CH_new.js @@ -36,7 +36,7 @@ var layout = { 'SÄCHSISIBNI', 'ACHTINÜNIEL', 'ZÄNIERBEUFI', - 'ZWÜUFINAUHR' + 'ZWÖUFINAUHR' ], "permanent": h._es_isch, "minutes": { @@ -55,7 +55,6 @@ var layout = { "55": [h._5, h._vor] }, "hours": { - "0": {10:[1,2,3,4,5,6]}, "1": {5:[1,2,3]}, "2": {5:[4,5,6,7]}, "3": {5:[9,10,11]}, @@ -66,7 +65,8 @@ var layout = { "8": {8:[1,2,3,4,5]}, "9": {8:[6,7,8,9]}, "10": {9:[1,2,3,4]}, - "11": {9:[8,9,10,11]} + "11": {9:[8,9,10,11]}, + "12": {10:[1,2,3,4,5,6]} } }; window._uhr.languages['de_CH_new'] = layout; diff --git a/uhr.js b/uhr.js index f7efbba..1e0bb84 100644 --- a/uhr.js +++ b/uhr.js @@ -287,11 +287,63 @@ function UhrRenderer(layout, renderarea) { this.layout = layout; this.renderarea = renderarea; this._parseLayoutV2 = function() { - console.log("attempting to parse layout v2"); var letters = []; - console.log(this.layout); + for (var i = 0; i < this.layout.letters.length; i++) { + var line = []; + var string = this.layout.letters[i]; + for (var c = 0; c < string.length; c++) { + var character = new Letter(string[c]); + line.push(character); + } + letters.push(line); + } + var permanent = this.layout.permanent; + if (Array.isArray(permanent)) { + for (var i = 0; i < permanent.length; i++) { + this._parseObject(letters, 'on', permanent[i]); + } + } else { + this._parseObject(letters, 'on', permanent); + } + var minutes = this.layout.minutes; + for (minute in minutes) { + if (minutes.hasOwnProperty(minute)) { + var highlightLetters = minutes[minute]; + if (Array.isArray(highlightLetters)) { + for (var i = 0; i < highlightLetters.length; i++) { + this._parseObject(letters, 'minute' + minute, highlightLetters[i]); + } + } else { + this._parseObject(letters, 'minute' + minute, highlightLetters); + } + } + } + var hours = this.layout.hours; + for (hour in hours) { + if (hours.hasOwnProperty(hour)) { + var highlightLetters = hours[hour]; + if (Array.isArray(highlightLetters)) { + for (var i = 0; i < highlightLetters.length; i++) { + this._parseObject(letters, 'hour' + hour, highlightLetters[i]); + } + } else { + this._parseObject(letters, 'hour' + hour, highlightLetters); + } + } + } return letters; } + this._parseObject = function(letters, styleClass, object) { + for (line in object) { + if (object.hasOwnProperty(line)) { + var highlightLetters = object[line]; + for (var i = 0; i < highlightLetters.length; i++) { + var x = highlightLetters[i] - 1; + letters[line - 1][x].addStyle(styleClass); + } + } + } + } } UhrRenderer.prototype.render = function(uhr, beforeshow) { var renderer = this; @@ -336,11 +388,19 @@ function Letter(value, style) { this.value = value; this.style = style || ''; this.getStyle = function() { - return 'item letter ' + style; + return 'item letter ' + this.style; }; this.getValue = function() { return value; } + this.addStyle = function(style) { + if (this.style == '') { + this.style = style; + } else { + this.style += ' ' + style; + } + console.log(this.getStyle()); + } } Letter.prototype.toString = function letterToString() { return '' + this.getValue() + '';