diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte
index 8d3d774..ff1481a 100644
--- a/src/routes/+page.svelte
+++ b/src/routes/+page.svelte
@@ -2,6 +2,8 @@
export let data;
const { webservices } = data;
+
+
function processData(webservices) {
let instances = 0;
let current = {};
@@ -63,12 +65,12 @@
}
});
- /*console.log('categories: ', categories);
- console.log('analogues: ', analogues);
- console.log('licenses: ', licenses);
- console.log('statuses: ', statuses);
- console.log('affiliates: ', affiliates);
- console.log('hosts: ', hosts); */
+ //console.log('categories: ', categories);
+ //console.log('analogues: ', analogues);
+ //console.log('licenses: ', licenses);
+ //console.log('statuses: ', statuses);
+ //console.log('affiliates: ', affiliates);
+ //console.log('hosts: ', hosts);
return {
total_instances: instances,
@@ -102,6 +104,14 @@
return keys;
}
+ function toOxfordCommaString(arr) {
+ if (arr.length == 1) return arr;
+ else {
+ var last = arr.pop();
+ return arr.join(', ') + ', and ' + last;
+ }
+ }
+
const results = processData(webservices);
// console.log('results: ', results);
/*console.log('stats = ' + results.total_instances);
@@ -116,13 +126,13 @@
const statuses = results.instance_tags.statuses);
const affiliates = results.instance_tags.affiliates);
const hosts = results.instance_tags.hosts);*/
- const categories = getKeys(results.tech_tags.categories);
+ const categories = getKeys(results.tech_tags.categories).sort();
//const categories = results.tech_tags.categories);
- const analogues = getKeys(results.tech_tags.analogues);
- const licenses = getKeys(results.tech_tags.licenses);
- const statuses = getKeys(results.instance_tags.statuses);
- const affiliates = getKeys(results.instance_tags.affiliates);
- const hosts = getKeys(results.instance_tags.hosts);
+ const analogues = getKeys(results.tech_tags.analogues).sort();
+ const licenses = getKeys(results.tech_tags.licenses).sort();
+ const statuses = getKeys(results.instance_tags.statuses).sort();
+ const affiliates = getKeys(results.instance_tags.affiliates).sort();
+ const hosts = getKeys(results.instance_tags.hosts).sort();
//console.log('categories array: ', results.tech_tags.categories);
//console.log('categories keys: ', categories);
@@ -139,58 +149,43 @@
-
- {#each categories as category}{category} {/each}
-
-
- {#each analogues as analogue}
- {analogue}
- {/each}
-
-
- {#each licenses as license}
- {license}
- {/each}
-
+
{#each categories as category}{category} {/each}
+
+
{#each licenses as license}{license} {/each}
-
- {#each statuses as status}
- {status}
- {/each}
-
-
- {#each affiliates as affiliate}
- {affiliate}
- {/each}
-
-
- {#each hosts as host}
- {host}
- {/each}
-
+
{#each statuses as status}{status} {/each}
{#each affiliates as affiliate}{affiliate} {/each}
+
{#each hosts as host}{host} {/each}
{#each technologies as technology}
-
-
- {#if hasInstances(technology)}
-
-
- {#each technology.instances as instance}
- - {instance.domain} {instance.affiliation}
- {/each}
-
+
+
+
+ {#if (technology.license)}
License: {technology.license}
{/if}
+ {#if (technology.analogues)}
Alternative to {toOxfordCommaString(technology.analogues)}
{/if}
+
{technology.description}
+
+
+ {#if hasInstances(technology)}
+
+
+ {#each technology.instances as instance}
+ - {instance.domain} {instance.affiliation}
+ {/each}
+
+
+ {:else}
+
+ {/if}
+
- {:else}
-
- {/if}
{/each}
@@ -240,15 +235,62 @@
grid-gap: 15px;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
}
+ /* flip card stuff: https://www.w3schools.com/howto/howto_css_flip_card.asp */
.tile {
- box-sizing: border-box;
- box-shadow: 5px 5px 3px #71ba71;
+ height: 460px;
min-width: 250px;
max-width: 400px;
- padding: 0.8em 1.2em;
+ /*padding: 0.8em 1.2em;*/
overflow: hidden;
+ perspective: 1000px; /* remove to remove 3D effect */
+ }
+ .tile-inner {
+ position: relative;
+ width: 100%;
+ height: 100%;
+ transition: transform 0.8s;
+ transform-style: preserve-3d;
+ }
+ /* .tile:hover .tile-inner {
+ transform: rotateY(180deg);
+ } */
+ .tile-front, .tile-back {
+ position: absolute;
+ top: 30px;
+ width: 100%;
+ height: 90%;
+ -webkit-backface-visibility: hidden; /* Safari */
+ backface-visibility: hidden;
+ box-sizing: border-box;
+ box-shadow: 5px 5px 3px #71ba71;
border: solid 3px #1e6831;
background-color: #fff;
}
+ .tile-front {
+ background-color: #ddd;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ }
+ .tile-back {
+ background-color: #3b559;
+ transform: rotateY(180deg);
+ }
+ .tile-front h2 {
+ background-color: #999;
+ text-align: center;
+ padding: 0.5em;
+ margin: 0;
+ }
+ .tile-front h2 a { color: #eee; }
+ .tile-front h2 a:visited { color: #ddd; }
+ .tile-front .description {
+ text-overflow: ellipsis;
+ overflow: hidden;
+ height: 100%;
+ }
+ .tile-front p {
+ padding: 0 1em 0.2em 1em;
+ }
.webservices li { list-style-type: none; }
+ .value { font-weight: bold; }