Skip to content

Instantly share code, notes, and snippets.

@jackweinbender
Last active February 5, 2016 15:58
Show Gist options
  • Save jackweinbender/dc3f60bbbff056776277 to your computer and use it in GitHub Desktop.
Save jackweinbender/dc3f60bbbff056776277 to your computer and use it in GitHub Desktop.
GoogleSheets
import Ember from 'ember';
export default Ember.Controller.extend({
appName:'Ember Twiddle'
});
import Ember from 'ember';
export default Ember.Route.extend({
setupController: function(controller){
$.ajax({
url:"https://spreadsheets.google.com/feeds/list/1ZeOOv54pyw8yXGFzOGt4EG8dOaAu2MSKG6wSzr768Ag/od6/public/values?alt=json",
complete: function(response){
var data = response.responseJSON.feed;
var roots = data.entry.map(function(item){
return {
root:item.gsx$root.$t,
ethiopic:item.gsx$ethiopic.$t,
gloss:item.gsx$gloss.$t,
morph:item.gsx$morph.$t,
note:item.gsx$note.$t,
other:item.gsx$other.$t,
script:item.gsx$script.$t,
pos:item.gsx$pos.$t
};
}).reduce(function(prev, curr) {
prev.push(curr);
return prev;
}, []).reduce(function(prev, curr){
var index = prev.lookup.indexOf(curr.root);
if( index === -1){
prev.lookup.push(curr.root);
prev.output.push(newRoot(curr));
return prev;
console.log("If")
}
prev.output[index].entries.push(curr);
return prev;
}, {
lookup:[],
output:[]
});
roots = roots.output.sort(function(a, b){
for(var i = 0; i <= a.root.length; i++){
var foo = getRootOrder(a.root[i]);
var bar = getRootOrder(b.root[i]);
if(foo == bar){ continue; }
if(foo < bar){ return -1; }
return 1;
}
}).map(function(root){
root.entries.sort(function(a, b){
var order = ['verb', 'prep', 'adj', 'noun', 'adv', 'other'];
var foo = order.indexOf(a.pos);
var bar = order.indexOf(b.pos);
if(foo < bar){return -1}
return 1;
});
return root;
});
var out = {
author:data.author,
title:data.title,
roots: roots
}
//console.log(out);
controller.set('model', out);
}
});
}
});
function newRoot(item){
return{
root: item.root,
entries: [item]
}
}
function getRootOrder(char){
var order = [
"ʾ",
"ʿ",
"b",
"d",
"ḍ",
"f",
"g",
"h",
"ḥ",
"k",
"l",
"m",
"n",
"p",
"ṗ",
"q",
"r",
"s",
"š",
"ṣ",
"t",
"ṭ",
"w",
"x",
"y",
"z"
];
return order.indexOf(char);
}
<h1>{{model.title.$t}}</h1>
<p>by
{{#each model.author as |author|}}
<a href="mailto:{{author.email.$t}}">{{author.name.$t}}</a>
{{/each}}</p>
{{#each model.roots as |root|}}
<p><span style="font-weight:bold">{{root.root}}</span> -
{{#each root.entries as |entry|}}
<span style="font-style:italic;background-color:#eee;padding:0 0.5em;border-radius:2px;">{{entry.ethiopic}}</span>
<span>{{entry.gloss}}</span>
{{/each}}
</p>
{{/each}}
{
"version": "0.5.0",
"EmberENV": {
"FEATURES": {}
},
"options": {
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js",
"ember": "https://cdnjs.cloudflare.com/ajax/libs/ember.js/2.2.0/ember.debug.js",
"ember-data": "https://cdnjs.cloudflare.com/ajax/libs/ember-data.js/2.2.0/ember-data.js",
"ember-template-compiler": "https://cdnjs.cloudflare.com/ajax/libs/ember.js/2.2.0/ember-template-compiler.js"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment