reworked app screens and added vibration
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
(function (ns) {
|
||||
'use strict';
|
||||
|
||||
const Patterns = Object.freeze({
|
||||
MICRO: 50,
|
||||
MINI: 100,
|
||||
SHORT: 200,
|
||||
LONG: 2000,
|
||||
ALARM: Object.freeze([100, 50, 100]),
|
||||
POI: Object.freeze([2000, 200, 2000]),
|
||||
ACTIVE_POI: Object.freeze([500, 300, 500])
|
||||
});
|
||||
|
||||
function supported() {
|
||||
return typeof navigator !== 'undefined' && typeof navigator.vibrate === 'function';
|
||||
}
|
||||
|
||||
function normalize(pattern) {
|
||||
const selected = pattern ?? Patterns.LONG;
|
||||
|
||||
if (Array.isArray(selected)) {
|
||||
const values = selected.map(Number);
|
||||
if (!values.length || values.some(value => !Number.isFinite(value) || value < 0)) {
|
||||
throw new TypeError('Das Vibrationsmuster muss aus nichtnegativen Millisekunden bestehen.');
|
||||
}
|
||||
return values;
|
||||
}
|
||||
|
||||
const duration = Number(selected);
|
||||
if (!Number.isFinite(duration) || duration < 0) {
|
||||
throw new TypeError('Die Vibrationsdauer muss eine nichtnegative Millisekundenangabe sein.');
|
||||
}
|
||||
return duration;
|
||||
}
|
||||
|
||||
function start(pattern = Patterns.LONG) {
|
||||
const normalized = normalize(pattern);
|
||||
if (!supported()) return false;
|
||||
return navigator.vibrate(normalized);
|
||||
}
|
||||
|
||||
function stop() {
|
||||
if (!supported()) return false;
|
||||
return navigator.vibrate(0);
|
||||
}
|
||||
|
||||
ns.Vibration = Object.freeze({
|
||||
Patterns,
|
||||
isSupported: supported,
|
||||
start,
|
||||
stop
|
||||
});
|
||||
}(window.Wegwichtel));
|
||||
Reference in New Issue
Block a user