Got navigation working
This commit is contained in:
parent
f0463b210b
commit
e504a104b7
|
@ -0,0 +1,6 @@
|
|||
import JSONAPIAdapter from '@ember-data/adapter/json-api';
|
||||
|
||||
export default class ApplicationAdapter extends JSONAPIAdapter {
|
||||
namepace = 'api/v1/';
|
||||
host = 'http://gwt.api';
|
||||
}
|
Binary file not shown.
|
@ -0,0 +1,2 @@
|
|||
<a href="#" {{on "click" this.selectBook}}>{{this.bookTitle}}</a>
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
import Component from '@glimmer/component';
|
||||
import { action } from '@ember/object';
|
||||
|
||||
export default class BookComponent extends Component {
|
||||
get bookTitle() {
|
||||
let string = this.args.book.name.toLowerCase();
|
||||
if (this.isNumber(string.charAt(0))) {
|
||||
return string.slice(0,1) + string.charAt(2).toUpperCase() + string.slice(3);
|
||||
} else {
|
||||
return string.charAt(0).toUpperCase() + string.slice(1);
|
||||
}
|
||||
}
|
||||
|
||||
@action
|
||||
selectBook() {
|
||||
this.args.showChapters(this.args.book);
|
||||
}
|
||||
|
||||
isNumber(char) {
|
||||
var number = /^[0-9]+$/;
|
||||
let string = char;
|
||||
|
||||
if(string.match(number)) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
<Scrollmenu @visible={{@visible}}>
|
||||
{{#each @book.chapters as |chapter|}}
|
||||
<Chapter @book={{@book}} @chapter={{chapter}} @active={{this.isChapterActive}} @showVerses={{this.showVerses}} />
|
||||
{{/each}}
|
||||
</Scrollmenu>
|
|
@ -0,0 +1,24 @@
|
|||
import Component from '@glimmer/component';
|
||||
import { action } from '@ember/object';
|
||||
import { tracked } from "@glimmer/tracking";
|
||||
|
||||
export default class ChapterNavComponent extends Component {
|
||||
@tracked currentChapter;
|
||||
|
||||
constructor(...args) {
|
||||
super(...args);
|
||||
}
|
||||
|
||||
@action
|
||||
showVerses(book, chapter)
|
||||
{
|
||||
this.args.showVerses(book, chapter);
|
||||
this.currentChapter = chapter;
|
||||
}
|
||||
|
||||
@action
|
||||
isChapterActive(chapter)
|
||||
{
|
||||
return chapter === this.currentChapter;
|
||||
}
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
<a href="#" {{on "click" this.selectChapter}} >{{@chapter.chapter}}</a>
|
|
@ -0,0 +1,12 @@
|
|||
import Component from '@glimmer/component';
|
||||
import { action } from '@ember/object';
|
||||
|
||||
export default class ChapterComponent extends Component {
|
||||
@tracked selected = false;
|
||||
|
||||
@action
|
||||
selectChapter() {
|
||||
this.args.showVerses(this.args.book, this.args.chapter);
|
||||
this.selected = true;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
<div class="jumbotron">
|
||||
<div class="container">
|
||||
{{yield}}
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,17 @@
|
|||
<nav class="scripture-menu">
|
||||
<Scrollmenu @visible="true">
|
||||
{{#each this.books as |book|}}
|
||||
<Book @book={{book}} @showChapters={{this.showChapters}} />
|
||||
{{/each}}
|
||||
</Scrollmenu>
|
||||
|
||||
<ChapterNav @book={{this.currentBook}}
|
||||
@showVerses={{this.showVerses}}
|
||||
@visible={{this.chaptersVisible}} />
|
||||
|
||||
<VerseNav @book={{this.currentBook}}
|
||||
@chapter={{this.currentChapter}}
|
||||
@verses={{this.currentChapter.verses}}
|
||||
@verseSelected={{this.verseSelected}}
|
||||
@visible={{this.versesVisible}} />
|
||||
</nav>
|
|
@ -0,0 +1,35 @@
|
|||
import Component from '@glimmer/component';
|
||||
import { action } from '@ember/object';
|
||||
import { tracked } from "@glimmer/tracking";
|
||||
import { books } from "../data/book-chapter-verse";
|
||||
|
||||
export default class ScriptureNavBarComponent extends Component {
|
||||
@tracked chaptersVisible = false;
|
||||
@tracked versesVisible = false;
|
||||
@tracked currentBook = null;
|
||||
@tracked currentChapter = null;
|
||||
|
||||
constructor(...args) {
|
||||
super(...args);
|
||||
this.books = books;
|
||||
}
|
||||
|
||||
@action
|
||||
showChapters(book) {
|
||||
this.chaptersVisible = true;
|
||||
this.versesVisible = false;
|
||||
this.currentBook = book;
|
||||
}
|
||||
|
||||
@action
|
||||
showVerses(book, chapter) {
|
||||
this.versesVisible = true;
|
||||
this.currentChapter = chapter;
|
||||
}
|
||||
|
||||
@action
|
||||
verseSelected(book, chapter, verse) {
|
||||
// Load the DOM with vese page
|
||||
console.log('[verseSelected] called: ' + book + ' ' + chapter + ':' + verse);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
<div class="scrollmenu" style="visibility: {{this.visibility}}">
|
||||
{{yield}}
|
||||
</div>
|
|
@ -0,0 +1,13 @@
|
|||
import Component from '@glimmer/component';
|
||||
import {tracked} from "@glimmer/tracking";
|
||||
import { action } from '@ember/object';
|
||||
|
||||
export default class ScrollmenuComponent extends Component {
|
||||
get visibility() {
|
||||
if (this.args.visible == 'false' || this.args.visible == false) {
|
||||
return "hidden";
|
||||
} else {
|
||||
return "visible";
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
<Scrollmenu @visible={{@visible}}>
|
||||
{{#each this.verseList as |verse|}}
|
||||
<Verse @book={{@book.name}} @chapter={{@chapter}} @verse={{verse}} @verseSelected={{this.verseSelected}} />
|
||||
{{/each}}
|
||||
</Scrollmenu>
|
|
@ -0,0 +1,20 @@
|
|||
import Component from '@glimmer/component';
|
||||
import { action } from '@ember/object';
|
||||
import { tracked } from "@glimmer/tracking";
|
||||
|
||||
export default class VerseNavComponent extends Component {
|
||||
@tracked currentVerse;
|
||||
|
||||
get verseList() {
|
||||
let verses = [];
|
||||
for (var i = 1; i <= this.args.verses; i++) {
|
||||
verses.push(i);
|
||||
}
|
||||
return verses;
|
||||
}
|
||||
|
||||
@action
|
||||
verseSelected(book, chapter, verse) {
|
||||
this.args.verseSelected(book, chapter, verse);
|
||||
}
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
<a href="#" {{on "click" this.selectVerse }}>{{@verse}}</a>
|
|
@ -0,0 +1,9 @@
|
|||
import Component from '@glimmer/component';
|
||||
import { action } from '@ember/object';
|
||||
|
||||
export default class VerseComponent extends Component {
|
||||
@action
|
||||
selectVerse() {
|
||||
this.args.verseSelected(this.args.book, this.args.chapter, this.args.verse);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,286 @@
|
|||
export let books = [{
|
||||
"name": "matthew",
|
||||
"chapters": [{"chapter": "1", "verses": "25"}, {"chapter": "2", "verses": "23"}, {
|
||||
"chapter": "3",
|
||||
"verses": "17"
|
||||
}, {"chapter": "4", "verses": "25"}, {"chapter": "5", "verses": "48"}, {
|
||||
"chapter": "6",
|
||||
"verses": "34"
|
||||
}, {"chapter": "7", "verses": "29"}, {"chapter": "8", "verses": "34"}, {
|
||||
"chapter": "9",
|
||||
"verses": "38"
|
||||
}, {"chapter": "10", "verses": "42"}, {"chapter": "11", "verses": "30"}, {
|
||||
"chapter": "12",
|
||||
"verses": "50"
|
||||
}, {"chapter": "13", "verses": "58"}, {"chapter": "14", "verses": "36"}, {
|
||||
"chapter": "15",
|
||||
"verses": "39"
|
||||
}, {"chapter": "16", "verses": "28"}, {"chapter": "17", "verses": "27"}, {
|
||||
"chapter": "18",
|
||||
"verses": "35"
|
||||
}, {"chapter": "19", "verses": "30"}, {"chapter": "20", "verses": "34"}, {
|
||||
"chapter": "21",
|
||||
"verses": "46"
|
||||
}, {"chapter": "22", "verses": "46"}, {"chapter": "23", "verses": "39"}, {
|
||||
"chapter": "24",
|
||||
"verses": "51"
|
||||
}, {"chapter": "25", "verses": "46"}, {"chapter": "26", "verses": "75"}, {
|
||||
"chapter": "27",
|
||||
"verses": "66"
|
||||
}, {"chapter": "28", "verses": "20"}]
|
||||
}, {
|
||||
"name": "mark",
|
||||
"chapters": [{"chapter": "1", "verses": "45"}, {"chapter": "2", "verses": "28"}, {
|
||||
"chapter": "3",
|
||||
"verses": "35"
|
||||
}, {"chapter": "4", "verses": "41"}, {"chapter": "5", "verses": "43"}, {
|
||||
"chapter": "6",
|
||||
"verses": "56"
|
||||
}, {"chapter": "7", "verses": "37"}, {"chapter": "8", "verses": "38"}, {
|
||||
"chapter": "9",
|
||||
"verses": "50"
|
||||
}, {"chapter": "10", "verses": "52"}, {"chapter": "11", "verses": "33"}, {
|
||||
"chapter": "12",
|
||||
"verses": "44"
|
||||
}, {"chapter": "13", "verses": "37"}, {"chapter": "14", "verses": "72"}, {
|
||||
"chapter": "15",
|
||||
"verses": "47"
|
||||
}, {"chapter": "16", "verses": "20"}]
|
||||
}, {
|
||||
"name": "luke",
|
||||
"chapters": [{"chapter": "1", "verses": "80"}, {"chapter": "2", "verses": "52"}, {
|
||||
"chapter": "3",
|
||||
"verses": "38"
|
||||
}, {"chapter": "4", "verses": "44"}, {"chapter": "5", "verses": "39"}, {
|
||||
"chapter": "6",
|
||||
"verses": "49"
|
||||
}, {"chapter": "7", "verses": "50"}, {"chapter": "8", "verses": "56"}, {
|
||||
"chapter": "9",
|
||||
"verses": "62"
|
||||
}, {"chapter": "10", "verses": "42"}, {"chapter": "11", "verses": "54"}, {
|
||||
"chapter": "12",
|
||||
"verses": "59"
|
||||
}, {"chapter": "13", "verses": "35"}, {"chapter": "14", "verses": "35"}, {
|
||||
"chapter": "15",
|
||||
"verses": "32"
|
||||
}, {"chapter": "16", "verses": "31"}, {"chapter": "17", "verses": "37"}, {
|
||||
"chapter": "18",
|
||||
"verses": "43"
|
||||
}, {"chapter": "19", "verses": "48"}, {"chapter": "20", "verses": "47"}, {
|
||||
"chapter": "21",
|
||||
"verses": "38"
|
||||
}, {"chapter": "22", "verses": "71"}, {"chapter": "23", "verses": "56"}, {"chapter": "24", "verses": "53"}]
|
||||
}, {
|
||||
"name": "john",
|
||||
"chapters": [{"chapter": "1", "verses": "51"}, {"chapter": "2", "verses": "25"}, {
|
||||
"chapter": "3",
|
||||
"verses": "36"
|
||||
}, {"chapter": "4", "verses": "54"}, {"chapter": "5", "verses": "47"}, {
|
||||
"chapter": "6",
|
||||
"verses": "71"
|
||||
}, {"chapter": "7", "verses": "53"}, {"chapter": "8", "verses": "59"}, {
|
||||
"chapter": "9",
|
||||
"verses": "41"
|
||||
}, {"chapter": "10", "verses": "42"}, {"chapter": "11", "verses": "57"}, {
|
||||
"chapter": "12",
|
||||
"verses": "50"
|
||||
}, {"chapter": "13", "verses": "38"}, {"chapter": "14", "verses": "31"}, {
|
||||
"chapter": "15",
|
||||
"verses": "27"
|
||||
}, {"chapter": "16", "verses": "33"}, {"chapter": "17", "verses": "26"}, {
|
||||
"chapter": "18",
|
||||
"verses": "40"
|
||||
}, {"chapter": "19", "verses": "42"}, {"chapter": "20", "verses": "31"}, {"chapter": "21", "verses": "25"}]
|
||||
}, {
|
||||
"name": "acts",
|
||||
"chapters": [{"chapter": "1", "verses": "26"}, {"chapter": "2", "verses": "47"}, {
|
||||
"chapter": "3",
|
||||
"verses": "26"
|
||||
}, {"chapter": "4", "verses": "37"}, {"chapter": "5", "verses": "42"}, {
|
||||
"chapter": "6",
|
||||
"verses": "15"
|
||||
}, {"chapter": "7", "verses": "60"}, {"chapter": "8", "verses": "40"}, {
|
||||
"chapter": "9",
|
||||
"verses": "43"
|
||||
}, {"chapter": "10", "verses": "48"}, {"chapter": "11", "verses": "30"}, {
|
||||
"chapter": "12",
|
||||
"verses": "25"
|
||||
}, {"chapter": "13", "verses": "52"}, {"chapter": "14", "verses": "28"}, {
|
||||
"chapter": "15",
|
||||
"verses": "41"
|
||||
}, {"chapter": "16", "verses": "40"}, {"chapter": "17", "verses": "34"}, {
|
||||
"chapter": "18",
|
||||
"verses": "28"
|
||||
}, {"chapter": "19", "verses": "40"}, {"chapter": "20", "verses": "38"}, {
|
||||
"chapter": "21",
|
||||
"verses": "40"
|
||||
}, {"chapter": "22", "verses": "30"}, {"chapter": "23", "verses": "35"}, {
|
||||
"chapter": "24",
|
||||
"verses": "27"
|
||||
}, {"chapter": "25", "verses": "27"}, {"chapter": "26", "verses": "32"}, {
|
||||
"chapter": "27",
|
||||
"verses": "44"
|
||||
}, {"chapter": "28", "verses": "31"}]
|
||||
}, {
|
||||
"name": "romans",
|
||||
"chapters": [{"chapter": "1", "verses": "32"}, {"chapter": "2", "verses": "29"}, {
|
||||
"chapter": "3",
|
||||
"verses": "31"
|
||||
}, {"chapter": "4", "verses": "25"}, {"chapter": "5", "verses": "21"}, {
|
||||
"chapter": "6",
|
||||
"verses": "23"
|
||||
}, {"chapter": "7", "verses": "25"}, {"chapter": "8", "verses": "39"}, {
|
||||
"chapter": "9",
|
||||
"verses": "33"
|
||||
}, {"chapter": "10", "verses": "21"}, {"chapter": "11", "verses": "36"}, {
|
||||
"chapter": "12",
|
||||
"verses": "21"
|
||||
}, {"chapter": "13", "verses": "14"}, {"chapter": "14", "verses": "23"}, {
|
||||
"chapter": "15",
|
||||
"verses": "33"
|
||||
}, {"chapter": "16", "verses": "27"}]
|
||||
}, {
|
||||
"name": "1 corinthians",
|
||||
"chapters": [{"chapter": "1", "verses": "31"}, {"chapter": "2", "verses": "16"}, {
|
||||
"chapter": "3",
|
||||
"verses": "23"
|
||||
}, {"chapter": "4", "verses": "21"}, {"chapter": "5", "verses": "13"}, {
|
||||
"chapter": "6",
|
||||
"verses": "20"
|
||||
}, {"chapter": "7", "verses": "40"}, {"chapter": "8", "verses": "13"}, {
|
||||
"chapter": "9",
|
||||
"verses": "27"
|
||||
}, {"chapter": "10", "verses": "33"}, {"chapter": "11", "verses": "34"}, {
|
||||
"chapter": "12",
|
||||
"verses": "31"
|
||||
}, {"chapter": "13", "verses": "13"}, {"chapter": "14", "verses": "40"}, {
|
||||
"chapter": "15",
|
||||
"verses": "58"
|
||||
}, {"chapter": "16", "verses": "24"}]
|
||||
}, {
|
||||
"name": "2 corinthians",
|
||||
"chapters": [{"chapter": "1", "verses": "24"}, {"chapter": "2", "verses": "17"}, {
|
||||
"chapter": "3",
|
||||
"verses": "18"
|
||||
}, {"chapter": "4", "verses": "18"}, {"chapter": "5", "verses": "21"}, {
|
||||
"chapter": "6",
|
||||
"verses": "18"
|
||||
}, {"chapter": "7", "verses": "16"}, {"chapter": "8", "verses": "24"}, {
|
||||
"chapter": "9",
|
||||
"verses": "15"
|
||||
}, {"chapter": "10", "verses": "18"}, {"chapter": "11", "verses": "33"}, {
|
||||
"chapter": "12",
|
||||
"verses": "21"
|
||||
}, {"chapter": "13", "verses": "13"}]
|
||||
}, {
|
||||
"name": "galatians",
|
||||
"chapters": [{"chapter": "1", "verses": "24"}, {"chapter": "2", "verses": "21"}, {
|
||||
"chapter": "3",
|
||||
"verses": "29"
|
||||
}, {"chapter": "4", "verses": "31"}, {"chapter": "5", "verses": "26"}, {"chapter": "6", "verses": "18"}]
|
||||
}, {
|
||||
"name": "ephesians",
|
||||
"chapters": [{"chapter": "1", "verses": "23"}, {"chapter": "2", "verses": "22"}, {
|
||||
"chapter": "3",
|
||||
"verses": "21"
|
||||
}, {"chapter": "4", "verses": "32"}, {"chapter": "5", "verses": "33"}, {"chapter": "6", "verses": "24"}]
|
||||
}, {
|
||||
"name": "philippians",
|
||||
"chapters": [{"chapter": "1", "verses": "30"}, {"chapter": "2", "verses": "30"}, {
|
||||
"chapter": "3",
|
||||
"verses": "21"
|
||||
}, {"chapter": "4", "verses": "23"}]
|
||||
}, {
|
||||
"name": "colossians",
|
||||
"chapters": [{"chapter": "1", "verses": "29"}, {"chapter": "2", "verses": "23"}, {
|
||||
"chapter": "3",
|
||||
"verses": "25"
|
||||
}, {"chapter": "4", "verses": "18"}]
|
||||
}, {
|
||||
"name": "1 thessalonians",
|
||||
"chapters": [{"chapter": "1", "verses": "10"}, {"chapter": "2", "verses": "20"}, {
|
||||
"chapter": "3",
|
||||
"verses": "13"
|
||||
}, {"chapter": "4", "verses": "18"}, {"chapter": "5", "verses": "28"}]
|
||||
}, {
|
||||
"name": "2 thessalonians",
|
||||
"chapters": [{"chapter": "1", "verses": "12"}, {"chapter": "2", "verses": "17"}, {"chapter": "3", "verses": "18"}]
|
||||
}, {
|
||||
"name": "1 timothy",
|
||||
"chapters": [{"chapter": "1", "verses": "20"}, {"chapter": "2", "verses": "15"}, {
|
||||
"chapter": "3",
|
||||
"verses": "16"
|
||||
}, {"chapter": "4", "verses": "16"}, {"chapter": "5", "verses": "25"}, {"chapter": "6", "verses": "21"}]
|
||||
}, {
|
||||
"name": "2 timothy",
|
||||
"chapters": [{"chapter": "1", "verses": "18"}, {"chapter": "2", "verses": "26"}, {
|
||||
"chapter": "3",
|
||||
"verses": "17"
|
||||
}, {"chapter": "4", "verses": "22"}]
|
||||
}, {
|
||||
"name": "titus",
|
||||
"chapters": [{"chapter": "1", "verses": "16"}, {"chapter": "2", "verses": "15"}, {"chapter": "3", "verses": "15"}]
|
||||
}, {"name": "philemon", "chapters": [{"chapter": "1", "verses": "25"}]}, {
|
||||
"name": "hebrews",
|
||||
"chapters": [{"chapter": "1", "verses": "14"}, {"chapter": "2", "verses": "18"}, {
|
||||
"chapter": "3",
|
||||
"verses": "19"
|
||||
}, {"chapter": "4", "verses": "16"}, {"chapter": "5", "verses": "14"}, {
|
||||
"chapter": "6",
|
||||
"verses": "20"
|
||||
}, {"chapter": "7", "verses": "28"}, {"chapter": "8", "verses": "13"}, {
|
||||
"chapter": "9",
|
||||
"verses": "28"
|
||||
}, {"chapter": "10", "verses": "39"}, {"chapter": "11", "verses": "40"}, {
|
||||
"chapter": "12",
|
||||
"verses": "29"
|
||||
}, {"chapter": "13", "verses": "25"}]
|
||||
}, {
|
||||
"name": "james",
|
||||
"chapters": [{"chapter": "1", "verses": "27"}, {"chapter": "2", "verses": "26"}, {
|
||||
"chapter": "3",
|
||||
"verses": "18"
|
||||
}, {"chapter": "4", "verses": "17"}, {"chapter": "5", "verses": "20"}]
|
||||
}, {
|
||||
"name": "1 peter",
|
||||
"chapters": [{"chapter": "1", "verses": "25"}, {"chapter": "2", "verses": "25"}, {
|
||||
"chapter": "3",
|
||||
"verses": "22"
|
||||
}, {"chapter": "4", "verses": "19"}, {"chapter": "5", "verses": "14"}]
|
||||
}, {
|
||||
"name": "2 peter",
|
||||
"chapters": [{"chapter": "1", "verses": "21"}, {"chapter": "2", "verses": "22"}, {"chapter": "3", "verses": "18"}]
|
||||
}, {
|
||||
"name": "1 john",
|
||||
"chapters": [{"chapter": "1", "verses": "10"}, {"chapter": "2", "verses": "29"}, {
|
||||
"chapter": "3",
|
||||
"verses": "24"
|
||||
}, {"chapter": "4", "verses": "21"}, {"chapter": "5", "verses": "21"}]
|
||||
}, {"name": "2 john", "chapters": [{"chapter": "1", "verses": "13"}]}, {
|
||||
"name": "3 john",
|
||||
"chapters": [{"chapter": "1", "verses": "15"}]
|
||||
}, {"name": "jude", "chapters": [{"chapter": "1", "verses": "25"}]}, {
|
||||
"name": "revelation",
|
||||
"chapters": [{"chapter": "1", "verses": "20"}, {
|
||||
"chapter": "2",
|
||||
"verses": "29"
|
||||
}, {"chapter": "3", "verses": "22"}, {"chapter": "4", "verses": "11"}, {
|
||||
"chapter": "5",
|
||||
"verses": "14"
|
||||
}, {"chapter": "6", "verses": "17"}, {"chapter": "7", "verses": "17"}, {
|
||||
"chapter": "8",
|
||||
"verses": "13"
|
||||
}, {"chapter": "9", "verses": "21"}, {"chapter": "10", "verses": "11"}, {
|
||||
"chapter": "11",
|
||||
"verses": "19"
|
||||
}, {"chapter": "12", "verses": "18"}, {"chapter": "13", "verses": "18"}, {
|
||||
"chapter": "14",
|
||||
"verses": "20"
|
||||
}, {"chapter": "15", "verses": "8"}, {"chapter": "16", "verses": "21"}, {
|
||||
"chapter": "17",
|
||||
"verses": "18"
|
||||
}, {"chapter": "18", "verses": "24"}, {"chapter": "19", "verses": "21"}, {
|
||||
"chapter": "20",
|
||||
"verses": "15"
|
||||
}, {"chapter": "21", "verses": "27"}, {"chapter": "22", "verses": "21"}]
|
||||
}];
|
|
@ -7,6 +7,8 @@
|
|||
<meta name="description" content="">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
{{content-for "book-data"}}
|
||||
|
||||
{{content-for "head"}}
|
||||
|
||||
<link integrity="" rel="stylesheet" href="{{rootURL}}assets/vendor.css">
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
export function initialize(appInstance) {
|
||||
// application.inject('route', 'foo', 'service:foo');
|
||||
let metaTag = document.querySelector('meta[name=book-data]');
|
||||
if (metaTag) {
|
||||
let store = appInstance.lookup('service:store');
|
||||
let bookContent = JSON.parse(unescape(metaTag.content));
|
||||
store.pushPayload(bookContent);
|
||||
}
|
||||
}
|
||||
|
||||
export default {
|
||||
initialize
|
||||
};
|
|
@ -0,0 +1,9 @@
|
|||
import Model from '@ember-data/model';
|
||||
|
||||
export default class LexiconEntryModel extends Model {
|
||||
@attr strongsNumber;
|
||||
@attr lexeme;
|
||||
@attr commentary;
|
||||
|
||||
@belongsTo('verse-word') word;
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
import Model from '@ember-data/model';
|
||||
|
||||
export default class VerseWordModel extends Model {
|
||||
@attr ulb;
|
||||
@attr greek;
|
||||
@attr morph;
|
||||
@attr ogntSort;
|
||||
@attr lexeme;
|
||||
|
||||
@belongsTo('verse') verse;
|
||||
@belongsTo('lexicon-entry') lexiconEntry;
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
import Model from '@ember-data/model';
|
||||
|
||||
export default class VerseModel extends Model {
|
||||
@attr name;
|
||||
@attr greek;
|
||||
@attr ulb;
|
||||
|
||||
@hasMany('verse-word') words;
|
||||
}
|
|
@ -5,6 +5,3 @@ export default class Router extends EmberRouter {
|
|||
location = config.locationType;
|
||||
rootURL = config.rootURL;
|
||||
}
|
||||
|
||||
Router.map(function() {
|
||||
});
|
||||
|
|
|
@ -1,2 +1,4 @@
|
|||
|
||||
@import "ember-bootstrap/bootstrap";
|
||||
|
||||
@import "components/scrollmenu";
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
div.scrollmenu {
|
||||
background-color: #333;
|
||||
overflow: auto;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
div.scrollmenu a {
|
||||
display: inline-block;
|
||||
color: white;
|
||||
text-align: center;
|
||||
padding: 14px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
div.scrollmenu a:hover {
|
||||
background-color: #777;
|
||||
}
|
|
@ -1 +1,5 @@
|
|||
<Jumbo>
|
||||
<h1>Biblical Resources for Translators</h1>
|
||||
</Jumbo>
|
||||
<ScriptureNavBar/>
|
||||
{{outlet}}
|
|
@ -1,12 +1,32 @@
|
|||
'use strict';
|
||||
|
||||
const EmberApp = require('ember-cli/lib/broccoli/ember-app');
|
||||
const fs = require('fs');
|
||||
|
||||
// Taken from https://www.balinterdi.com/blog/inlining-store-data-in-ember-js/
|
||||
function readFile(file) {
|
||||
try {
|
||||
return escape(fs.readFileSync(file));
|
||||
} catch(e) {
|
||||
if (e.code === 'ENOENT') {
|
||||
return '{}';
|
||||
}
|
||||
throw(e);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = function(defaults) {
|
||||
let app = new EmberApp(defaults, {
|
||||
'ember-bootstrap': {
|
||||
bootstrapVersion: 4,
|
||||
importBootstrapCSS: false
|
||||
},
|
||||
'ember-cli-string-helpers': {},
|
||||
inlineContent: {
|
||||
'book-data': {
|
||||
content: `<meta name='store-data'
|
||||
content="${readFile('support/data/book-chapter-verse.json')}" />`
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -34,8 +34,10 @@
|
|||
"ember-cli-dependency-checker": "^3.2.0",
|
||||
"ember-cli-htmlbars": "^5.2.0",
|
||||
"ember-cli-inject-live-reload": "^2.0.2",
|
||||
"ember-cli-inline-content": "^0.4.1",
|
||||
"ember-cli-sass": "^10.0.1",
|
||||
"ember-cli-sri": "^2.1.1",
|
||||
"ember-cli-string-helpers": "^5.0.0",
|
||||
"ember-cli-uglify": "^3.0.0",
|
||||
"ember-data": "~3.20.0",
|
||||
"ember-export-application-global": "^2.0.1",
|
||||
|
|
Binary file not shown.
File diff suppressed because one or more lines are too long
|
@ -7,6 +7,8 @@
|
|||
<meta name="description" content="">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
{{content-for "book-data"}}
|
||||
|
||||
{{content-for "head"}}
|
||||
{{content-for "test-head"}}
|
||||
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
import { module, test } from 'qunit';
|
||||
import { setupRenderingTest } from 'ember-qunit';
|
||||
import { render } from '@ember/test-helpers';
|
||||
import { hbs } from 'ember-cli-htmlbars';
|
||||
|
||||
module('Integration | Component | book-nav', function(hooks) {
|
||||
setupRenderingTest(hooks);
|
||||
|
||||
test('it renders', async function(assert) {
|
||||
// Set any properties with this.set('myProperty', 'value');
|
||||
// Handle any actions with this.set('myAction', function(val) { ... });
|
||||
|
||||
await render(hbs`<BookNav />`);
|
||||
|
||||
assert.equal(this.element.textContent.trim(), '');
|
||||
|
||||
// Template block usage:
|
||||
await render(hbs`
|
||||
<BookNav>
|
||||
template block text
|
||||
</BookNav>
|
||||
`);
|
||||
|
||||
assert.equal(this.element.textContent.trim(), 'template block text');
|
||||
});
|
||||
});
|
|
@ -0,0 +1,26 @@
|
|||
import { module, test } from 'qunit';
|
||||
import { setupRenderingTest } from 'ember-qunit';
|
||||
import { render } from '@ember/test-helpers';
|
||||
import { hbs } from 'ember-cli-htmlbars';
|
||||
|
||||
module('Integration | Component | book', function(hooks) {
|
||||
setupRenderingTest(hooks);
|
||||
|
||||
test('it renders', async function(assert) {
|
||||
// Set any properties with this.set('myProperty', 'value');
|
||||
// Handle any actions with this.set('myAction', function(val) { ... });
|
||||
|
||||
await render(hbs`<Book />`);
|
||||
|
||||
assert.equal(this.element.textContent.trim(), '');
|
||||
|
||||
// Template block usage:
|
||||
await render(hbs`
|
||||
<Book>
|
||||
template block text
|
||||
</Book>
|
||||
`);
|
||||
|
||||
assert.equal(this.element.textContent.trim(), 'template block text');
|
||||
});
|
||||
});
|
|
@ -0,0 +1,26 @@
|
|||
import { module, test } from 'qunit';
|
||||
import { setupRenderingTest } from 'ember-qunit';
|
||||
import { render } from '@ember/test-helpers';
|
||||
import { hbs } from 'ember-cli-htmlbars';
|
||||
|
||||
module('Integration | Component | chapter-nav', function(hooks) {
|
||||
setupRenderingTest(hooks);
|
||||
|
||||
test('it renders', async function(assert) {
|
||||
// Set any properties with this.set('myProperty', 'value');
|
||||
// Handle any actions with this.set('myAction', function(val) { ... });
|
||||
|
||||
await render(hbs`<ChapterNav />`);
|
||||
|
||||
assert.equal(this.element.textContent.trim(), '');
|
||||
|
||||
// Template block usage:
|
||||
await render(hbs`
|
||||
<ChapterNav>
|
||||
template block text
|
||||
</ChapterNav>
|
||||
`);
|
||||
|
||||
assert.equal(this.element.textContent.trim(), 'template block text');
|
||||
});
|
||||
});
|
|
@ -0,0 +1,26 @@
|
|||
import { module, test } from 'qunit';
|
||||
import { setupRenderingTest } from 'ember-qunit';
|
||||
import { render } from '@ember/test-helpers';
|
||||
import { hbs } from 'ember-cli-htmlbars';
|
||||
|
||||
module('Integration | Component | chapter', function(hooks) {
|
||||
setupRenderingTest(hooks);
|
||||
|
||||
test('it renders', async function(assert) {
|
||||
// Set any properties with this.set('myProperty', 'value');
|
||||
// Handle any actions with this.set('myAction', function(val) { ... });
|
||||
|
||||
await render(hbs`<Chapter />`);
|
||||
|
||||
assert.equal(this.element.textContent.trim(), '');
|
||||
|
||||
// Template block usage:
|
||||
await render(hbs`
|
||||
<Chapter>
|
||||
template block text
|
||||
</Chapter>
|
||||
`);
|
||||
|
||||
assert.equal(this.element.textContent.trim(), 'template block text');
|
||||
});
|
||||
});
|
|
@ -0,0 +1,18 @@
|
|||
import { module, test } from 'qunit';
|
||||
import { setupRenderingTest } from 'ember-qunit';
|
||||
import { render } from '@ember/test-helpers';
|
||||
import { hbs } from 'ember-cli-htmlbars';
|
||||
|
||||
module('Integration | Component | jumbo', function(hooks) {
|
||||
setupRenderingTest(hooks);
|
||||
|
||||
test('it renders content inside the jumbo', async function(assert) {
|
||||
// Set any properties with this.set('myProperty', 'value');
|
||||
// Handle any actions with this.set('myAction', function(val) { ... });
|
||||
|
||||
await render(hbs`<Jumbo>Hello World!</Jumbo>`);
|
||||
|
||||
assert.dom('.jumbotron').exists();
|
||||
assert.dom('.jumbotron').hasText('Hello World!');
|
||||
});
|
||||
});
|
|
@ -0,0 +1,26 @@
|
|||
import { module, test } from 'qunit';
|
||||
import { setupRenderingTest } from 'ember-qunit';
|
||||
import { render } from '@ember/test-helpers';
|
||||
import { hbs } from 'ember-cli-htmlbars';
|
||||
|
||||
module('Integration | Component | scripture-nav-bar', function(hooks) {
|
||||
setupRenderingTest(hooks);
|
||||
|
||||
test('it renders', async function(assert) {
|
||||
// Set any properties with this.set('myProperty', 'value');
|
||||
// Handle any actions with this.set('myAction', function(val) { ... });
|
||||
|
||||
await render(hbs`<ScriptureNavBar />`);
|
||||
|
||||
assert.equal(this.element.textContent.trim(), '');
|
||||
|
||||
// Template block usage:
|
||||
await render(hbs`
|
||||
<ScriptureNavBar>
|
||||
template block text
|
||||
</ScriptureNavBar>
|
||||
`);
|
||||
|
||||
assert.equal(this.element.textContent.trim(), 'template block text');
|
||||
});
|
||||
});
|
|
@ -0,0 +1,26 @@
|
|||
import { module, test } from 'qunit';
|
||||
import { setupRenderingTest } from 'ember-qunit';
|
||||
import { render } from '@ember/test-helpers';
|
||||
import { hbs } from 'ember-cli-htmlbars';
|
||||
|
||||
module('Integration | Component | scrollmenu', function(hooks) {
|
||||
setupRenderingTest(hooks);
|
||||
|
||||
test('it renders', async function(assert) {
|
||||
// Set any properties with this.set('myProperty', 'value');
|
||||
// Handle any actions with this.set('myAction', function(val) { ... });
|
||||
|
||||
await render(hbs`<Scrollmenu />`);
|
||||
|
||||
assert.equal(this.element.textContent.trim(), '');
|
||||
|
||||
// Template block usage:
|
||||
await render(hbs`
|
||||
<Scrollmenu>
|
||||
template block text
|
||||
</Scrollmenu>
|
||||
`);
|
||||
|
||||
assert.equal(this.element.textContent.trim(), 'template block text');
|
||||
});
|
||||
});
|
|
@ -0,0 +1,26 @@
|
|||
import { module, test } from 'qunit';
|
||||
import { setupRenderingTest } from 'ember-qunit';
|
||||
import { render } from '@ember/test-helpers';
|
||||
import { hbs } from 'ember-cli-htmlbars';
|
||||
|
||||
module('Integration | Component | verse-nav', function(hooks) {
|
||||
setupRenderingTest(hooks);
|
||||
|
||||
test('it renders', async function(assert) {
|
||||
// Set any properties with this.set('myProperty', 'value');
|
||||
// Handle any actions with this.set('myAction', function(val) { ... });
|
||||
|
||||
await render(hbs`<VerseNav />`);
|
||||
|
||||
assert.equal(this.element.textContent.trim(), '');
|
||||
|
||||
// Template block usage:
|
||||
await render(hbs`
|
||||
<VerseNav>
|
||||
template block text
|
||||
</VerseNav>
|
||||
`);
|
||||
|
||||
assert.equal(this.element.textContent.trim(), 'template block text');
|
||||
});
|
||||
});
|
|
@ -0,0 +1,26 @@
|
|||
import { module, test } from 'qunit';
|
||||
import { setupRenderingTest } from 'ember-qunit';
|
||||
import { render } from '@ember/test-helpers';
|
||||
import { hbs } from 'ember-cli-htmlbars';
|
||||
|
||||
module('Integration | Component | verse', function(hooks) {
|
||||
setupRenderingTest(hooks);
|
||||
|
||||
test('it renders', async function(assert) {
|
||||
// Set any properties with this.set('myProperty', 'value');
|
||||
// Handle any actions with this.set('myAction', function(val) { ... });
|
||||
|
||||
await render(hbs`<Verse />`);
|
||||
|
||||
assert.equal(this.element.textContent.trim(), '');
|
||||
|
||||
// Template block usage:
|
||||
await render(hbs`
|
||||
<Verse>
|
||||
template block text
|
||||
</Verse>
|
||||
`);
|
||||
|
||||
assert.equal(this.element.textContent.trim(), 'template block text');
|
||||
});
|
||||
});
|
|
@ -0,0 +1,12 @@
|
|||
import { module, test } from 'qunit';
|
||||
import { setupTest } from 'ember-qunit';
|
||||
|
||||
module('Unit | Adapter | application', function(hooks) {
|
||||
setupTest(hooks);
|
||||
|
||||
// Replace this with your real tests.
|
||||
test('it exists', function(assert) {
|
||||
let adapter = this.owner.lookup('adapter:application');
|
||||
assert.ok(adapter);
|
||||
});
|
||||
});
|
|
@ -0,0 +1,28 @@
|
|||
import Application from '@ember/application';
|
||||
|
||||
import { initialize } from 'gwt-frontend/initializers/load-book-data';
|
||||
import { module, test } from 'qunit';
|
||||
import { run } from '@ember/runloop';
|
||||
|
||||
module('Unit | Initializer | load-book-data', function(hooks) {
|
||||
hooks.beforeEach(function() {
|
||||
this.TestApplication = Application.extend();
|
||||
this.TestApplication.initializer({
|
||||
name: 'initializer under test',
|
||||
initialize
|
||||
});
|
||||
|
||||
this.application = this.TestApplication.create({ autoboot: false });
|
||||
});
|
||||
|
||||
hooks.afterEach(function() {
|
||||
run(this.application, 'destroy');
|
||||
});
|
||||
|
||||
// TODO: Replace this with your real tests.
|
||||
test('it works', async function(assert) {
|
||||
await this.application.boot();
|
||||
|
||||
assert.ok(true);
|
||||
});
|
||||
});
|
|
@ -0,0 +1,13 @@
|
|||
import { module, test } from 'qunit';
|
||||
import { setupTest } from 'ember-qunit';
|
||||
|
||||
module('Unit | Model | lexicon entry', function(hooks) {
|
||||
setupTest(hooks);
|
||||
|
||||
// Replace this with your real tests.
|
||||
test('it exists', function(assert) {
|
||||
let store = this.owner.lookup('service:store');
|
||||
let model = store.createRecord('lexicon-entry', {});
|
||||
assert.ok(model);
|
||||
});
|
||||
});
|
|
@ -0,0 +1,13 @@
|
|||
import { module, test } from 'qunit';
|
||||
import { setupTest } from 'ember-qunit';
|
||||
|
||||
module('Unit | Model | verse', function(hooks) {
|
||||
setupTest(hooks);
|
||||
|
||||
// Replace this with your real tests.
|
||||
test('it exists', function(assert) {
|
||||
let store = this.owner.lookup('service:store');
|
||||
let model = store.createRecord('verse', {});
|
||||
assert.ok(model);
|
||||
});
|
||||
});
|
|
@ -0,0 +1,13 @@
|
|||
import { module, test } from 'qunit';
|
||||
import { setupTest } from 'ember-qunit';
|
||||
|
||||
module('Unit | Model | verse word', function(hooks) {
|
||||
setupTest(hooks);
|
||||
|
||||
// Replace this with your real tests.
|
||||
test('it exists', function(assert) {
|
||||
let store = this.owner.lookup('service:store');
|
||||
let model = store.createRecord('verse-word', {});
|
||||
assert.ok(model);
|
||||
});
|
||||
});
|
Loading…
Reference in New Issue