Merge branch 'feature/seconds' into 'develop'

Feature/seconds

See merge request !19
This commit is contained in:
Manuel Friedli 2014-08-12 18:22:05 +02:00
commit 0a86959c32
6 changed files with 295 additions and 27 deletions

3
.gitignore vendored
View file

@ -1,4 +1,5 @@
*~ *~
.idea .idea
*.iml
atlassian-ide-plugin.xml atlassian-ide-plugin.xml
uhr.iml

View file

@ -37,6 +37,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
<script type="text/javascript" src="js/uhr.js"></script> <script type="text/javascript" src="js/uhr.js"></script>
<script type="text/javascript" src="js/uhr-de_CH.js"></script> <script type="text/javascript" src="js/uhr-de_CH.js"></script>
<script type="text/javascript" src="js/uhr-de_CH_genau.js"></script> <script type="text/javascript" src="js/uhr-de_CH_genau.js"></script>
<script type="text/javascript" src="js/uhr-de_CH-seconds.js"></script>
<script type="text/javascript" src="js/uhr-de.js"></script> <script type="text/javascript" src="js/uhr-de.js"></script>
<script type="text/javascript" src="js/uhr-en.js"></script> <script type="text/javascript" src="js/uhr-en.js"></script>
<script type="text/javascript" src="js/uhr-fr.js"></script> <script type="text/javascript" src="js/uhr-fr.js"></script>

247
js/uhr-de_CH-seconds.js Normal file
View file

@ -0,0 +1,247 @@
/*
* Copyright (C) Schweizerische Bundesbahnen SBB, 2014.
*/
/*
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
(function () {
'use strict';
var vorne0 = {
3: [2, 3, 4],
4: [1, 5],
5: [1, 4, 5],
6: [1, 3, 5],
7: [1, 2, 5],
8: [1, 5],
9: [2, 3, 4]
};
var hinten0 = {
3: [8, 9, 10],
4: [7, 11],
5: [7, 10, 11],
6: [7, 9, 11],
7: [7, 8, 11],
8: [7, 11],
9: [8, 9, 10]
};
var vorne1 = {
3: [3],
4: [2, 3],
5: [3],
6: [3],
7: [3],
8: [3],
9: [2, 3, 4]
};
var hinten1 = {
3: [9],
4: [8, 9],
5: [9],
6: [9],
7: [9],
8: [9],
9: [8, 9, 10]
};
var vorne2 = {
3: [2, 3, 4],
4: [1, 5],
5: [5],
6: [4],
7: [3],
8: [2],
9: [1, 2, 3, 4, 5]
};
var hinten2 = {
3: [8, 9, 10],
4: [7, 11],
5: [11],
6: [10],
7: [9],
8: [8],
9: [7, 8, 9, 10, 11]
};
var vorne3 = {
3: [1, 2, 3, 4, 5],
4: [4],
5: [3],
6: [4],
7: [5],
8: [1, 5],
9: [2, 3, 4]
};
var hinten3 = {
3: [7, 8, 9, 10, 11],
4: [10],
5: [9],
6: [10],
7: [11],
8: [7, 11],
9: [8, 9, 10]
};
var vorne4 = {
3: [4],
4: [3, 4],
5: [2, 4],
6: [1, 4],
7: [1, 2, 3, 4, 5],
8: [4],
9: [4]
};
var hinten4 = {
3: [10],
4: [9, 10],
5: [8, 10],
6: [7, 10],
7: [7, 8, 9, 10, 11],
8: [10],
9: [10]
};
var vorne5 = {
3: [1, 2, 3, 4, 5],
4: [1],
5: [1, 2, 3, 4],
6: [5],
7: [5],
8: [1, 5],
9: [2, 3, 4]
};
var hinten5 = {
3: [7, 8, 9, 10, 11],
4: [7],
5: [7, 8, 9, 10],
6: [11],
7: [11],
8: [7, 11],
9: [8, 9, 10]
};
var hinten6 = {
3: [9, 10],
4: [8],
5: [7],
6: [7, 8, 9, 10],
7: [7, 11],
8: [7, 11],
9: [8, 9, 10]
};
var hinten7 = {
3: [7, 8, 9, 10, 11],
4: [11],
5: [10],
6: [9],
7: [8],
8: [8],
9: [8]
};
var hinten8 = {
3: [8, 9, 10],
4: [7, 11],
5: [7, 11],
6: [8, 9, 10],
7: [7, 11],
8: [7, 11],
9: [8, 9, 10]
};
var hinten9 = {
3: [8, 9, 10],
4: [7, 11],
5: [7, 11],
6: [8, 9, 10, 11],
7: [11],
8: [10],
9: [8, 9]
};
var layout = {
"version": 2,
"language": 'Bärndütschi Sekunde',
"letters": [
'ESKISCHAFÜF',
'VIERTUBFZÄÄ',
'ZWÄNZGSIVOR',
'ABOHAUBIEGE',
'EISZWÖISDRÜ',
'VIERIFÜFIQT',
'SÄCHSISIBNI',
'ACHTINÜNIEL',
'ZÄNIERBEUFI',
'ZWÖUFINAUHR'
],
"seconds": {
"0": [vorne0, hinten0],
"1": [vorne0, hinten1],
"2": [vorne0, hinten2],
"3": [vorne0, hinten3],
"4": [vorne0, hinten4],
"5": [vorne0, hinten5],
"6": [vorne0, hinten6],
"7": [vorne0, hinten7],
"8": [vorne0, hinten8],
"9": [vorne0, hinten9],
"10": [vorne1, hinten0],
"11": [vorne1, hinten1],
"12": [vorne1, hinten2],
"13": [vorne1, hinten3],
"14": [vorne1, hinten4],
"15": [vorne1, hinten5],
"16": [vorne1, hinten6],
"17": [vorne1, hinten7],
"18": [vorne1, hinten8],
"19": [vorne1, hinten9],
"20": [vorne2, hinten0],
"21": [vorne2, hinten1],
"22": [vorne2, hinten2],
"23": [vorne2, hinten3],
"24": [vorne2, hinten4],
"25": [vorne2, hinten5],
"26": [vorne2, hinten6],
"27": [vorne2, hinten7],
"28": [vorne2, hinten8],
"29": [vorne2, hinten9],
"30": [vorne3, hinten0],
"31": [vorne3, hinten1],
"32": [vorne3, hinten2],
"33": [vorne3, hinten3],
"34": [vorne3, hinten4],
"35": [vorne3, hinten5],
"36": [vorne3, hinten6],
"37": [vorne3, hinten7],
"38": [vorne3, hinten8],
"39": [vorne3, hinten9],
"40": [vorne4, hinten0],
"41": [vorne4, hinten1],
"42": [vorne4, hinten2],
"43": [vorne4, hinten3],
"44": [vorne4, hinten4],
"45": [vorne4, hinten5],
"46": [vorne4, hinten6],
"47": [vorne4, hinten7],
"48": [vorne4, hinten8],
"49": [vorne4, hinten9],
"50": [vorne5, hinten0],
"51": [vorne5, hinten1],
"52": [vorne5, hinten2],
"53": [vorne5, hinten3],
"54": [vorne5, hinten4],
"55": [vorne5, hinten5],
"56": [vorne5, hinten6],
"57": [vorne5, hinten7],
"58": [vorne5, hinten8],
"59": [vorne5, hinten9]
},
"getDotMinute": function (time) {
return 0;
}
};
$.fritteli.uhr.register('de_CH_seconds', layout);
}());

View file

@ -134,7 +134,7 @@
}; };
// private helper methods (not exported) // private helper methods (not exported)
var showConfigScreen = function showConfigScreen() { var showConfigScreen = function showConfigScreen() {
$('#uhr-controlpanel' + this.id).show(); $('#uhr-controlpanel' + this.id).fadeIn('fast');
}; };
// set up // set up
var setupHTML = function setupHTML() { var setupHTML = function setupHTML() {
@ -187,7 +187,7 @@
} }
var closebutton = $('<a class="uhr-closecontrolpanel" id="uhr-closecontrolpanel' + this.id + '"></a>'); var closebutton = $('<a class="uhr-closecontrolpanel" id="uhr-closecontrolpanel' + this.id + '"></a>');
closebutton.on('click', function () { closebutton.on('click', function () {
$('#uhr-controlpanel' + this.id).hide(); $('#uhr-controlpanel' + this.id).fadeOut('fast');
}.bind(this)); }.bind(this));
content.append(closebutton); content.append(closebutton);
e.after(controlpanel); e.after(controlpanel);
@ -277,10 +277,12 @@
var update = function update() { var update = function update() {
if (isOn.bind(this)()) { if (isOn.bind(this)()) {
var time = this.options.time; var time = this.options.time;
if (!language.bind(this)().hasOwnProperty('seconds')) {
if (time.getMinutes() === this.currentMinute) { if (time.getMinutes() === this.currentMinute) {
return; return;
} }
this.currentMinute = time.getMinutes(); this.currentMinute = time.getMinutes();
}
show.bind(this)(time); show.bind(this)(time);
} else { } else {
clear.bind(this)(); clear.bind(this)();
@ -288,6 +290,7 @@
} }
}; };
var show = function show(time) { var show = function show(time) {
var second = getSecond.bind(this)(time);
var dotMinute = getDotMinute.bind(this)(time); var dotMinute = getDotMinute.bind(this)(time);
var hour = getHour.bind(this)(time); var hour = getHour.bind(this)(time);
var coarseMinute = getCoarseMinute.bind(this)(time); var coarseMinute = getCoarseMinute.bind(this)(time);
@ -296,6 +299,7 @@
for (var i = 1; i <= dotMinute; i++) { for (var i = 1; i <= dotMinute; i++) {
highlight.bind(this)('dot' + i); highlight.bind(this)('dot' + i);
} }
highlight.bind(this)('second' + second);
highlight.bind(this)('minute' + coarseMinute); highlight.bind(this)('minute' + coarseMinute);
highlight.bind(this)('hour' + hour); highlight.bind(this)('hour' + hour);
}; };
@ -305,6 +309,12 @@
var clear = function clear() { var clear = function clear() {
this.element.find('.item').removeClass('active'); this.element.find('.item').removeClass('active');
}; };
var getSecond = function getSecond(date) {
if (typeof language.bind(this)().getSeconds === 'function') {
return language.bind(this)().getSeconds(date);
}
return date.getSeconds();
};
var getDotMinute = function getDotMinute(date) { var getDotMinute = function getDotMinute(date) {
if (typeof language.bind(this)().getDotMinute === 'function') { if (typeof language.bind(this)().getDotMinute === 'function') {
return language.bind(this)().getDotMinute(date); return language.bind(this)().getDotMinute(date);
@ -401,6 +411,7 @@
function UhrRendererV2Delegate(layout) { function UhrRendererV2Delegate(layout) {
function parseArrayOrObject(letters, styleClass, input) { function parseArrayOrObject(letters, styleClass, input) {
if (typeof input !== 'undefined' && input !== null) {
if (Array.isArray(input)) { if (Array.isArray(input)) {
input.forEach(function (item) { input.forEach(function (item) {
parseObject(letters, styleClass, item); parseObject(letters, styleClass, item);
@ -409,8 +420,10 @@
parseObject(letters, styleClass, input); parseObject(letters, styleClass, input);
} }
} }
}
function parseObject(letters, styleClass, object) { function parseObject(letters, styleClass, object) {
if (typeof object !== 'undefined' && object !== null) {
Object.keys(object).forEach(function (y) { Object.keys(object).forEach(function (y) {
var highlightLetters = object[y]; var highlightLetters = object[y];
highlightLetters.forEach(function (x) { highlightLetters.forEach(function (x) {
@ -418,8 +431,10 @@
}); });
}); });
} }
}
function parseTimeDefinition(letters, styleClass, definition) { function parseTimeDefinition(letters, styleClass, definition) {
if (typeof definition !== 'undefined' && definition !== null) {
Object.keys(definition).forEach(function (listString) { Object.keys(definition).forEach(function (listString) {
var array = listString.split(','); var array = listString.split(',');
var highlightLetters = definition[listString]; var highlightLetters = definition[listString];
@ -428,6 +443,7 @@
}); });
}); });
} }
}
this.parse = function parse() { this.parse = function parse() {
var letters = []; var letters = [];
@ -440,6 +456,7 @@
letters.push(line); letters.push(line);
}); });
parseArrayOrObject(letters, 'on', layout.permanent); parseArrayOrObject(letters, 'on', layout.permanent);
parseTimeDefinition(letters, 'second', layout.seconds);
parseTimeDefinition(letters, 'minute', layout.minutes); parseTimeDefinition(letters, 'minute', layout.minutes);
parseTimeDefinition(letters, 'hour', layout.hours); parseTimeDefinition(letters, 'hour', layout.hours);
return letters; return letters;

View file

@ -15,6 +15,7 @@ js/uhr.js
js/uhr-de.js js/uhr-de.js
js/uhr-de_CH.js js/uhr-de_CH.js
js/uhr-de_CH_genau.js js/uhr-de_CH_genau.js
js/uhr-de_CH-seconds.js
js/uhr-en.js js/uhr-en.js
js/uhr-fr.js js/uhr-fr.js
js/uhr-it.js js/uhr-it.js

View file

@ -29,8 +29,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
<link rel="stylesheet" type="text/css" href="../css/uhr-yellow.css" data-class="yellow" data-name="Gelb" /> <link rel="stylesheet" type="text/css" href="../css/uhr-yellow.css" data-class="yellow" data-name="Gelb" />
<link rel="stylesheet" type="text/css" href="../css/uhr-blue.css" data-class="blue" data-name="Blau" /> <link rel="stylesheet" type="text/css" href="../css/uhr-blue.css" data-class="blue" data-name="Blau" />
<link rel="stylesheet" type="text/css" href="../css/uhr-pink.css" data-class="pink" data-name="Pink" /> <link rel="stylesheet" type="text/css" href="../css/uhr-pink.css" data-class="pink" data-name="Pink" />
<link rel="shortcut icon" type="image/png" href="favicon.png" /> <link rel="shortcut icon" type="image/png" href="../resources/favicon.png" />
<link rel="apple-touch-icon-precomposed" href="apple-touch-icon-precomposed.png" /> <link rel="apple-touch-icon-precomposed" href="../resources/apple-touch-icon-precomposed.png" />
<script type="text/javascript" src="../lib/jquery-2.1.0.min.js"></script> <script type="text/javascript" src="../lib/jquery-2.1.0.min.js"></script>
<script type="text/javascript" src="../lib/jquery-ui-1.10.4.custom.min.js"></script> <script type="text/javascript" src="../lib/jquery-ui-1.10.4.custom.min.js"></script>
<script type="text/javascript" src="../lib/jquery-cookie-1.4.0.js"></script> <script type="text/javascript" src="../lib/jquery-cookie-1.4.0.js"></script>
@ -41,6 +41,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
<p ><a href="..">Go back to the main page</a></p> <p ><a href="..">Go back to the main page</a></p>
<script type="text/javascript" src="../js/uhr-de_CH.js"></script> <script type="text/javascript" src="../js/uhr-de_CH.js"></script>
<script type="text/javascript" src="../js/uhr-de_CH_genau.js"></script> <script type="text/javascript" src="../js/uhr-de_CH_genau.js"></script>
<script type="text/javascript" src="../js/uhr-de_CH-seconds.js"></script>
<script type="text/javascript" src="../js/uhr-de.js"></script> <script type="text/javascript" src="../js/uhr-de.js"></script>
<script type="text/javascript" src="../js/uhr-en.js"></script> <script type="text/javascript" src="../js/uhr-en.js"></script>
<script type="text/javascript" src="../js/uhr-fr.js"></script> <script type="text/javascript" src="../js/uhr-fr.js"></script>
@ -49,7 +50,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
(function($) { (function($) {
var width = $(window).width(); var width = $(window).width();
var height = $(window).height() - 150; var height = $(window).height() - 150;
var size = width < height ? width : height; var size = Math.min(width, height);
if (size < 200) { if (size < 200) {
size = 200; size = 200;
} }