Commit 0b4c9acc authored by Anna Kutschka's avatar Anna Kutschka

repo structure, weather setup

parent f1fa2b6e
<svg fill="#FFFFFF" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
<path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"/>
<path d="M0 0h24v24H0z" fill="none"/>
</svg>
\ No newline at end of file
<svg fill="#FFFFFF" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
<path d="M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z"/>
<path d="M0 0h24v24H0z" fill="none"/>
</svg>
\ No newline at end of file
<!--
Copyright 2016 Google Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="canonical" href="https://weather-pwa-sample.firebaseapp.com/final/">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Weather PWA</title>
<link rel="stylesheet" type="text/css" href="styles/inline.css">
<link rel="manifest" href="/manifest.json">
<!--ios-->
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-title" content="Weather PWA">
<link rel="apple-touch-icon" href="images/icons/icon-152x152.png">
<!--windows-->
<meta name="msapplication-TileImage" content="images/icons/icon-144x144.png">
<meta name="msapplication-TileColor" content="#2F3BA2">
</head>
<body>
<header class="header">
<h1 class="header__title">Weather PWA</h1>
<button id="butRefresh" class="headerButton" aria-label="Refresh"></button>
<button id="butAdd" class="headerButton" aria-label="Add"></button>
</header>
<main class="main">
<div class="card cardTemplate weather-forecast" hidden>
<div class="city-key" hidden></div>
<div class="card-last-updated" hidden></div>
<div class="location"></div>
<div class="date"></div>
<div class="description"></div>
<div class="current">
<div class="visual">
<div class="icon"></div>
<div class="temperature">
<span class="value"></span><span class="scale">°F</span>
</div>
</div>
<div class="description">
<div class="humidity"></div>
<div class="wind">
<span class="value"></span>
<span class="scale">mph</span>
<span class="direction"></span>°
</div>
<div class="sunrise"></div>
<div class="sunset"></div>
</div>
</div>
<div class="future">
<div class="oneday">
<div class="date"></div>
<div class="icon"></div>
<div class="temp-high">
<span class="value"></span>°
</div>
<div class="temp-low">
<span class="value"></span>°
</div>
</div>
<div class="oneday">
<div class="date"></div>
<div class="icon"></div>
<div class="temp-high">
<span class="value"></span>°
</div>
<div class="temp-low">
<span class="value"></span>°
</div>
</div>
<div class="oneday">
<div class="date"></div>
<div class="icon"></div>
<div class="temp-high">
<span class="value"></span>°
</div>
<div class="temp-low">
<span class="value"></span>°
</div>
</div>
<div class="oneday">
<div class="date"></div>
<div class="icon"></div>
<div class="temp-high">
<span class="value"></span>°
</div>
<div class="temp-low">
<span class="value"></span>°
</div>
</div>
<div class="oneday">
<div class="date"></div>
<div class="icon"></div>
<div class="temp-high">
<span class="value"></span>°
</div>
<div class="temp-low">
<span class="value"></span>°
</div>
</div>
<div class="oneday">
<div class="date"></div>
<div class="icon"></div>
<div class="temp-high">
<span class="value"></span>°
</div>
<div class="temp-low">
<span class="value"></span>°
</div>
</div>
<div class="oneday">
<div class="date"></div>
<div class="icon"></div>
<div class="temp-high">
<span class="value"></span>°
</div>
<div class="temp-low">
<span class="value"></span>°
</div>
</div>
</div>
</div>
</main>
<div class="dialog-container">
<div class="dialog">
<div class="dialog-title">Add new city</div>
<div class="dialog-body">
<select id="selectCityToAdd">
<!-- Values map to Yahoo Weather API Where On Earth Identifiers (WOEIDs).
https://developer.yahoo.com/weather/documentation.html#req -->
<option value="2357536">Austin, TX</option>
<option value="2367105">Boston, MA</option>
<option value="2379574">Chicago, IL</option>
<option value="2459115">New York, NY</option>
<option value="2475687">Portland, OR</option>
<option value="2487956">San Francisco, CA</option>
<option value="2490383">Seattle, WA</option>
</select>
</div>
<div class="dialog-buttons">
<button id="butAddCity" class="button">Add</button>
<button id="butAddCancel" class="button">Cancel</button>
</div>
</div>
</div>
<div class="loader">
<svg viewBox="0 0 32 32" width="32" height="32">
<circle id="spinner" cx="16" cy="16" r="14" fill="none"></circle>
</svg>
</div>
<!-- Uncomment the line below when ready to test with fake data -->
<script src="scripts/app.js" async></script>
</body>
</html>
{
"name": "Weather",
"short_name": "Weather",
"icons": [{
"src": "images/icons/icon-128x128.png",
"sizes": "128x128",
"type": "image/png"
}, {
"src": "images/icons/icon-144x144.png",
"sizes": "144x144",
"type": "image/png"
}, {
"src": "images/icons/icon-152x152.png",
"sizes": "152x152",
"type": "image/png"
}, {
"src": "images/icons/icon-192x192.png",
"sizes": "192x192",
"type": "image/png"
}, {
"src": "images/icons/icon-256x256.png",
"sizes": "256x256",
"type": "image/png"
}],
"start_url": "/index.html",
"display": "standalone",
"background_color": "#3E4EB8",
"theme_color": "#2F3BA2"
}
\ No newline at end of file
This diff is collapsed.
var dataCacheName = 'weatherData-v1';
var cacheName = 'weatherPWA-step-6-1';
var filesToCache = [
'/',
'/index.html',
'/scripts/app.js',
'/styles/inline.css',
'/images/clear.png',
'/images/cloudy-scattered-showers.png',
'/images/cloudy.png',
'/images/fog.png',
'/images/ic_add_white_24px.svg',
'/images/ic_refresh_white_24px.svg',
'/images/partly-cloudy.png',
'/images/rain.png',
'/images/scattered-showers.png',
'/images/sleet.png',
'/images/snow.png',
'/images/thunderstorm.png',
'/images/wind.png'
];
self.addEventListener('install', function(e) {
console.log('[ServiceWorker] Install');
e.waitUntil(
caches.open(cacheName).then(function(cache) {
console.log('[ServiceWorker] Caching app shell');
return cache.addAll(filesToCache);
}).then(function(){
console.log("skipWaiting")
return self.skipWaiting();
})
);
});
self.addEventListener('activate', function(e) {
console.log('[ServiceWorker] Activate');
});
self.addEventListener('activate', function(e) {
console.log('[ServiceWorker] Activate');
e.waitUntil(
caches.keys().then(function(keyList) {
return Promise.all(keyList.map(function(key) {
if (key !== cacheName && key !== dataCacheName) {
console.log('[ServiceWorker] Removing old cache', key);
return caches.delete(key);
}
}));
})
);
return self.clients.claim();
});
self.addEventListener('fetch', function(e) {
console.log('[ServiceWorker] Fetch', e.request.url);
var dataUrl = 'https://query.yahooapis.com/v1/public/yql';
if (e.request.url.indexOf(dataUrl) > -1) {
e.respondWith(
caches.open(dataCacheName).then(function(cache) {
return fetch(e.request).then(function(response){
cache.put(e.request.url, response.clone());
return response;
});
})
);
} else {
e.respondWith(
caches.match(e.request).then(function(response) {
return response || fetch(e.request);
})
);
}
});
//MessageChannel - Window Code
var msgChan = new MessagingChannel()
msgChan.port1.onmessage = function (event) {
console.log('Message received in page:' + event.data)
}
var msg = { action: 'triple', value: 2 }
navigator.serviceWorker.controller.postMessage(msg, [msgChan.port2])
//ServiceWorkerCode
self.addEventListener('message', function (event) {
var data = event.data
var openPort = messageEvent.ports[0]
if (data.action === 'triple') {
openPort.postMessage(data.value * 3)
}
})
\ No newline at end of file
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment