156 lines
5.5 KiB
TypeScript
Raw Normal View History

type BiblePassage = {
ch: number,
vss: BibleVerse[]
}
type BibleVerse = {
v: number,
w: [
{
t: string, s: string
}
]
}
type BiblePassageResult = {
cs: BiblePassage[],
testament: string
}
class Bible {
public static DisplayPassage(result: BiblePassageResult, ref: Reference): void {
try {
let r = "";
for (let j = 0; j < result.cs.length; j++) {
if (Number(ref.Section.start.chapter) < Number(ref.Section.end.chapter)) {
r += "<b>Chapter: " + result.cs[j].ch + "</b><br />";
}
let vss = result.cs[j].vss;
for (let m = 0; m < vss.length; m++) {
let v = vss[m];
r += "<b>" + v.v + ".</b> ";
for (let w = 0; w < v.w.length; w++) {
if (v.w[w].s != undefined) {
let strongs_pre = "";
if (result.testament == "old") {
strongs_pre = "H";
}
if (result.testament == "new") {
strongs_pre = "G";
}
let sp = "";
if (v.w[w].t.substr(v.w[w].t.length - 1) == " ") {
sp = " ";
}
r += "<a href='javascript:void(0)' class='hiddenlink' title='Strongs #: " + v.w[w].s + "'><span class='searchvalue' style='display:none'>" + strongs_pre + v.w[w].s + "</span>" + v.w[w].t.trim() + "</a>" + sp;
} else {
r += v.w[w].t;
}
}
if ($("#break-on-verses").is(":checked")) {
r += "<br />";
}
}
}
let t = $("<div class='passage result'><a href='javascript:void(0)' class='removeresult' style='border: 0;'><img style='border: 0px;' src='images/delete.png' width='48' height='48' /></a><a href='#' class='trigger left'>&nbsp;</a><div class='tags panel left'></div><span class='resultbody'>" + "<h2><a class ='result-heading' href='?r=" + ref.toString() + "'>" + ref.toString() + "</a></h2>" + r + "</span><br clear='all' /></div>");
Bible.AttachEvents(t, ref);
$("#result").prepend(t);
}
catch (err) {
Util.HandleError(err);
}
}
public static GetPassage(section: Section): BiblePassageResult {
try {
let chapters: BiblePassage[] = []; // the verses from the chapter.
let r: BiblePassageResult = {
cs: [],
testament: ""
};
for (let i = Number(section.start.chapter); i <= Number(section.end.chapter); i++) {
let 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) {
chapters.push(d);
},
error: function (request, status, error) {
Util.HandleError(error);
}
});
}
for (let j = 0; j < chapters.length; j++) {
let vss: BibleVerse[] = [];
let start;
let end;
// figure out the start verse.
if (j == 0) {
start = section.start.verse;
} else {
start = 1;
}
// figure out the end verse
if ((j + 1) == chapters.length) {
end = section.end.verse;
} else {
end = "*";
}
// get the verses requested.
let tvs = chapters[j].vss.length;
if (end == "*" || 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(chapters[j].vss[i - 1]);
}
r.cs.push({
"ch": chapters[j].ch,
"vss": vss
});
}
if (section.start.book >= 40) {
r.testament = "new";
} else {
r.testament = "old";
}
return r;
} catch (err) {
Util.HandleError(err);
}
return null;
}
public static AttachEvents(t, ref) {
t.find(".hiddenlink").click(function (e) {
Util.HandleHiddenLink(e);
});
t.find(".removeresult").click(function (e) {
Util.RemoveResult(e);
});
t.find(".resultbody h2").tooltip({
items: ".resultbody h2",
content: function (tt) {
}
});
t.find('.trigger').slidePanel({
triggerCss: 'margin-top: 60px; display: block; width: 48px; height: 48px;',
panelCss: 'margin-top: 55px; border: 2px solid #666;'
});
}
};