Publish Vulpes Preview 15 sources for desktop, Android and Tundra

Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
This commit is contained in:
OverSu 2026-09-30 23:13:03 +02:00
commit b38dea0597
25901 changed files with 9982925 additions and 369 deletions

View file

@ -0,0 +1,75 @@
/* globals Clock */
'use strict';
(function(exports) {
var proto = Object.create(HTMLElement.prototype);
proto.createdCallback = function sw_createdCallBack() {
this.hands = {};
this.timeouts = {};
this.innerHTML = this._getView();
this.hands.min = this.getElementsByClassName('minute-hand')[0];
this.hands.hour = this.getElementsByClassName('hour-hand')[0];
this.clock = new Clock();
};
proto.attachedCallback = function sw_attachedCallback() {
this.clock.start(this.updateAnalogClock.bind(this));
};
proto.detachedCallback = function sw_detachedCallback() {
this.clock.stop();
};
proto._getView = function sw_getView() {
// TODO: Change the following fake data to real weather data.
var view = `
<section class="clock">
<div class='hour-hand'></div>
<div class='minute-hand'></div>
</section>
<section class="city">New York</section>
<section class="weather-detail">
<div>Partly Cloudy</div>
<div>17-24°C</div>
<div>70 %</div>
<div>7 mph</div>
</section>
</section>`;
return view;
};
proto.updateAnalogClock = function sw_updateAnalogClock(now) {
var min, hour;
min = now.getMinutes();
// hours progress gradually
hour = (now.getHours() % 12) + min / 60;
this.setTransform('min', min);
this.setTransform('hour', hour);
};
proto.setTransform = function sw_setTransform(id, angle) {
var hand = this.hands[id];
// return correct angle for different hands
function conv(timeFrag) {
var mult;
// generate a conformable number to rotate about
// 30 degrees per hour 6 per second and minute
mult = id === 'hour' ? 30 : 6;
// we generate the angle from the fractional sec/min/hour
return (timeFrag * mult);
}
// Use transform rotate on the rect itself vs on a child element
// avoids unexpected behavior if either dur and fill are set to defaults
// Use translateZ to force it on its own layer, which will invoke the GPU
// and thus do the minimum amount of work required (reduces power usage)
hand.style.transform = 'rotate(' + conv(angle) + 'deg) translateZ(1px)';
};
exports.SmartWeather =
document.registerElement('smart-weather', {prototype: proto});
}(window));