/// /// import { Injectable } from "@angular/core"; import { Http } from "@angular/http"; import { Reference } from "./Reference"; @Injectable() export class BibleService { chapters: BiblePassage[]; result: BiblePassageResult; count: number = 0; $: any; constructor(private http: Http) { } getResult(section: Section): BiblePassageResult { try { var self = this; this.chapters = []; // the verses from the chapter. this.result = { cs: [], testament: "", ref: Reference.toString(section), status: 0, msg: ":)" }; this.count = Number(section.end.chapter) - Number(section.start.chapter) + 1; for (let i = Number(section.start.chapter); i <= Number(section.end.chapter); i++) { const url = "data/bibles/kjv_strongs/" + section.start.book + "-" + i + ".json"; $.ajax({ async: false, type: "GET", url: url, dataType: "json", success: function (d: BiblePassage, t, x) { self.chapters.push(d); }, error: function (request, status, error) { self.result.status = -1; self.result.msg = "Unable to retrieve bible passage " + self.result.ref + "."; } }); } if (self.result.status == -1) return self.result; for (let j = 0; j < this.chapters.length; j++) { const vss: BibleVerse[] = []; let start: number; let end; // figure out the start verse. if (j === 0) { start = parseInt(section.start.verse); } else { start = 1; } // figure out the end verse if ((j + 1) === this.chapters.length) { end = section.end.verse; } else { end = "*"; } // get the verses requested. const tvs = this.chapters[j].vss.length; if (end == "*" || parseInt(end) > tvs) { end = tvs; } for (let i = start; i <= end; i++) { // we're using c based indexes here, so the index is 1 less than the verse #. vss.push(this.chapters[j].vss[i - 1]); } this.result.cs.push({ "ch": this.chapters[j].ch, "vss": vss }); } if (section.start.book >= 40) { this.result.testament = "new"; } else { this.result.testament = "old"; } return this.result; } catch (error) { console.log(error); } return null; } }