diff --git a/.hgignore b/.hgignore index b4e2de0b..a1e7ab24 100644 --- a/.hgignore +++ b/.hgignore @@ -38,3 +38,5 @@ DynamicBibleIonic/platforms/android/AndroidManifest.xml DynamicBibleIonic/platforms/android/.gitignore DynamicBibleIonic/.idea DynamicBibleIonic/nbproject +DynamicBibleIonic/obj +DynamicBibleIonic/bin diff --git a/DynamicBibleIonic/.vscode/settings.json b/DynamicBibleIonic/.vscode/settings.json deleted file mode 100644 index b44c2020..00000000 --- a/DynamicBibleIonic/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "typescript.tsdk": "./node_modules/typescript/lib" -} \ No newline at end of file diff --git a/DynamicBibleIonic/DynamicBibleIonic.njsproj b/DynamicBibleIonic/DynamicBibleIonic.njsproj new file mode 100644 index 00000000..a311e38e --- /dev/null +++ b/DynamicBibleIonic/DynamicBibleIonic.njsproj @@ -0,0 +1,3115 @@ + + + + Debug + 2.0 + {78f6c2b6-208e-4a76-a214-921afa081284} + + ProjectFiles + + + . + . + {3AF33F2E-1136-4D97-BBB7-1795711AC8B8};{349c5851-65df-11da-9384-00065b846f21};{9092AA53-FB77-4645-B42D-1CCCA6BD08BD} + true + CommonJS + true + 11.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + False + + + + ES5 + None + False + False + + False + walljm.js + C:\Projects\dynamicbible\DynamicBibleIonic\bin + False + True + False + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + False + True + 0 + / + http://localhost:48022/ + False + True + http://localhost:1337 + False + + + + + + + CurrentPage + True + False + False + False + + + + + + + + + False + False + + + + + \ No newline at end of file diff --git a/DynamicBibleIonic/DynamicBibleIonic.sln b/DynamicBibleIonic/DynamicBibleIonic.sln new file mode 100644 index 00000000..d6874123 --- /dev/null +++ b/DynamicBibleIonic/DynamicBibleIonic.sln @@ -0,0 +1,19 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9092AA53-FB77-4645-B42D-1CCCA6BD08BD}") = "DynamicBibleIonic", "DynamicBibleIonic.njsproj", "{78F6C2B6-208E-4A76-A214-921AFA081284}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {78F6C2B6-208E-4A76-A214-921AFA081284}.Release|Any CPU.ActiveCfg = Release|Any CPU + {78F6C2B6-208E-4A76-A214-921AFA081284}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/DynamicBibleIonic/config.xml b/DynamicBibleIonic/config.xml index f5d0e358..18abd71f 100644 --- a/DynamicBibleIonic/config.xml +++ b/DynamicBibleIonic/config.xml @@ -46,7 +46,7 @@ - + diff --git a/DynamicBibleIonic/platforms/android/walljm.keystore b/DynamicBibleIonic/platforms/android/walljm.keystore new file mode 100644 index 00000000..152ddd26 Binary files /dev/null and b/DynamicBibleIonic/platforms/android/walljm.keystore differ diff --git a/DynamicBibleIonic/src/app/app.component.ts b/DynamicBibleIonic/src/app/app.component.ts index 16c8cb9f..b523c657 100644 --- a/DynamicBibleIonic/src/app/app.component.ts +++ b/DynamicBibleIonic/src/app/app.component.ts @@ -1,31 +1,27 @@ import { Component, ViewChild } from '@angular/core'; import { Platform, MenuController, Nav } from 'ionic-angular'; import { StatusBar, Splashscreen } from 'ionic-native'; -import {SearchPage} from "../pages/search/search"; -import {SettingsPage} from "../pages/settings/settings"; +import { SearchPage } from "../pages/search/search"; +import { SettingsPage } from "../pages/settings/settings"; +import { PagesService } from "../services/pages-service"; @Component({ - templateUrl: 'app.html' + templateUrl: 'app.html', + providers: [PagesService] }) export class MyApp { @ViewChild(Nav) nav: Nav; rootPage: any = SearchPage; - pages: Array<{ title: string, component: any }>; constructor( public platform: Platform, - public menu: MenuController + public menu: MenuController, + private pagesSvc: PagesService ) { this.initializeApp(); - - // set our app's pages - this.pages = [ - { title: 'Search', component: SearchPage }, - { title: 'Settings', component: SettingsPage } - ]; } initializeApp() @@ -42,8 +38,8 @@ export class MyApp openPage(page) { // close the menu when clicking a link from the menu - this.menu.close(); + this.menu.close(); // navigate to the new page if it is not the current page - this.nav.setRoot(page.component); + this.nav.setRoot(page.component, page.params); } -} +} \ No newline at end of file diff --git a/DynamicBibleIonic/src/app/app.html b/DynamicBibleIonic/src/app/app.html index 5c201281..17d91695 100644 --- a/DynamicBibleIonic/src/app/app.html +++ b/DynamicBibleIonic/src/app/app.html @@ -8,7 +8,7 @@ - diff --git a/DynamicBibleIonic/src/app/app.module.ts b/DynamicBibleIonic/src/app/app.module.ts index ee637391..234d586a 100644 --- a/DynamicBibleIonic/src/app/app.module.ts +++ b/DynamicBibleIonic/src/app/app.module.ts @@ -1,4 +1,4 @@ -import { NgModule, ErrorHandler } from '@angular/core'; +import { NgModule, ErrorHandler } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular'; @@ -6,15 +6,15 @@ import { Storage } from '@ionic/storage'; import { MyApp } from './app.component'; -import {SearchPage} from "../pages/search/search"; -import {SettingsPage} from "../pages/settings/settings"; +import { SearchPage } from "../pages/search/search"; +import { SettingsPage } from "../pages/settings/settings"; -import {ComponentLoader} from "../components/component-loader/component-loader"; -import {Passage} from "../components/passage/passage"; -import {Strongs} from "../components/strongs/strongs"; -import {Words} from "../components/words/words"; -import {Error} from "../components/error/error"; -import {StrongsModal} from "../components/strongs-modal/strongs-modal"; +import { ComponentLoader } from "../components/component-loader/component-loader"; +import { Passage } from "../components/passage/passage"; +import { Strongs } from "../components/strongs/strongs"; +import { Words } from "../components/words/words"; +import { Error } from "../components/error/error"; +import { StrongsModal } from "../components/strongs-modal/strongs-modal"; @NgModule({ declarations: [ @@ -45,4 +45,4 @@ import {StrongsModal} from "../components/strongs-modal/strongs-modal"; ], providers: [{ provide: ErrorHandler, useClass: IonicErrorHandler }, Storage] }) -export class AppModule { } +export class AppModule { } \ No newline at end of file diff --git a/DynamicBibleIonic/src/components/component-loader/component-loader.ts b/DynamicBibleIonic/src/components/component-loader/component-loader.ts index 119416c0..801e55b9 100644 --- a/DynamicBibleIonic/src/components/component-loader/component-loader.ts +++ b/DynamicBibleIonic/src/components/component-loader/component-loader.ts @@ -25,7 +25,7 @@ export class ComponentLoader { } let factory = this.componentFactoryResolver.resolveComponentFactory(this.type); - this.cmpRef = this.target.createComponent(factory) + this.cmpRef = this.target.createComponent(factory); // to access the created instance use // this.compRef.instance.someProperty = 'someValue'; // this.compRef.instance.someOutput.subscribe(val => doSomething()); diff --git a/DynamicBibleIonic/src/components/error/error.html b/DynamicBibleIonic/src/components/error/error.html index 22d0c783..71f254f4 100644 --- a/DynamicBibleIonic/src/components/error/error.html +++ b/DynamicBibleIonic/src/components/error/error.html @@ -7,4 +7,8 @@

{{item}}

-
\ No newline at end of file + + \ No newline at end of file diff --git a/DynamicBibleIonic/src/components/error/error.ts b/DynamicBibleIonic/src/components/error/error.ts index f62369cd..423e814a 100644 --- a/DynamicBibleIonic/src/components/error/error.ts +++ b/DynamicBibleIonic/src/components/error/error.ts @@ -1,4 +1,5 @@ import { EventEmitter, Component, Input, Output } from "@angular/core"; +import { CardItem } from "../../pages/search/search"; @Component({ selector: "error", diff --git a/DynamicBibleIonic/src/components/passage/passage.html b/DynamicBibleIonic/src/components/passage/passage.html index f447208d..87fe134a 100644 --- a/DynamicBibleIonic/src/components/passage/passage.html +++ b/DynamicBibleIonic/src/components/passage/passage.html @@ -1,4 +1,4 @@ - + {{item.ref}} \ No newline at end of file diff --git a/DynamicBibleIonic/src/components/passage/passage.scss b/DynamicBibleIonic/src/components/passage/passage.scss index d78adeb3..6dd6ecc7 100644 --- a/DynamicBibleIonic/src/components/passage/passage.scss +++ b/DynamicBibleIonic/src/components/passage/passage.scss @@ -2,13 +2,18 @@ background-color: #c3cce4; } + passage .passage-text { - margin-bottom: 10px; padding-bottom: 12px; - border-bottom: 1px dotted #808080; } -@media screen and (min-width: 600px) and (max-width: 849px) { +.passage-text + .passage-text +{ + border-top: 1px dotted #808080; + padding-top: 12px; +} + +@media screen and (min-width: 700px) and (max-width: 949px) { passage .passage-text { -webkit-column-count: 2; /* Chrome, Safari, Opera */ -moz-column-count: 2; /* Firefox */ @@ -16,16 +21,16 @@ passage .passage-text { -webkit-column-gap: 30px; /* Chrome, Safari, Opera */ -moz-column-gap: 30px; /* Firefox */ column-gap: 30px; - -webkit-column-rule-style: solid; /* Chrome, Safari, Opera */ - -moz-column-rule-style: solid; /* Firefox */ - column-rule-style: solid; + -webkit-column-rule-style: dotted; /* Chrome, Safari, Opera */ + -moz-column-rule-style: dotted; /* Firefox */ + column-rule-style: dotted; -webkit-column-rule-width: 1px; /* Chrome, Safari, Opera */ -moz-column-rule-width: 1px; /* Firefox */ column-rule-width: 1px; } } -@media screen and (min-width: 850px) { +@media screen and (min-width: 950px) { passage .passage-text { -webkit-column-count: 3; /* Chrome, Safari, Opera */ -moz-column-count: 3; /* Firefox */ @@ -33,9 +38,9 @@ passage .passage-text { -webkit-column-gap: 30px; /* Chrome, Safari, Opera */ -moz-column-gap: 30px; /* Firefox */ column-gap: 30px; - -webkit-column-rule-style: solid; /* Chrome, Safari, Opera */ - -moz-column-rule-style: solid; /* Firefox */ - column-rule-style: solid; + -webkit-column-rule-style: dotted; /* Chrome, Safari, Opera */ + -moz-column-rule-style: dotted; /* Firefox */ + column-rule-style: dotted; -webkit-column-rule-width: 1px; /* Chrome, Safari, Opera */ -moz-column-rule-width: 1px; /* Firefox */ column-rule-width: 1px; diff --git a/DynamicBibleIonic/src/components/passage/passage.ts b/DynamicBibleIonic/src/components/passage/passage.ts index 8cb75568..9eb6334e 100644 --- a/DynamicBibleIonic/src/components/passage/passage.ts +++ b/DynamicBibleIonic/src/components/passage/passage.ts @@ -1,9 +1,13 @@ -import { Component, EventEmitter, Output, Input} from "@angular/core"; +import { Component, EventEmitter, Output, Input } from "@angular/core"; +import { BiblePassageResult } from "../../services/bible-service"; +import { OpenData, CardItem } from "../../pages/search/search"; + @Component({ selector: "passage", templateUrl: "passage.html" }) -export class Passage { +export class Passage +{ @Output() onStrongsClicked = new EventEmitter(); @Output() @@ -18,18 +22,23 @@ export class Passage { @Input() cardItem: CardItem; - constructor() { + constructor() + { } - close() { + close() + { this.onClose.emit(this.cardItem); } - openStrongs(strongs: string) { + openStrongs(strongs: string) + { this.onStrongsClicked.emit({ card: this.cardItem, qry: this.dict + strongs }); } - openMenu(strongs: string) { + openMenu(strongs: string) + { } - isPunct(c: string) { + isPunct(c: string) + { return new RegExp('^[\.\,\;\:\?\!]$').test(c) } } \ No newline at end of file diff --git a/DynamicBibleIonic/src/components/strongs-modal/strongs-modal.ts b/DynamicBibleIonic/src/components/strongs-modal/strongs-modal.ts index 50ee8976..a454f4df 100644 --- a/DynamicBibleIonic/src/components/strongs-modal/strongs-modal.ts +++ b/DynamicBibleIonic/src/components/strongs-modal/strongs-modal.ts @@ -1,12 +1,14 @@ import { EventEmitter, Component, Output } from "@angular/core"; import { Platform, NavParams, ViewController } from 'ionic-angular'; -import { Reference } from '../../Reference'; +import { Reference } from '../../libs/Reference'; +import { StrongsResult } from "../../services/strongs-service"; @Component({ selector: "strongs-modal", templateUrl: "strongs-modal.html" }) -export class StrongsModal { +export class StrongsModal +{ item: StrongsResult; @Output() @@ -16,21 +18,25 @@ export class StrongsModal { public platform: Platform, public params: NavParams, public viewCtrl: ViewController - ) { + ) + { this.item = this.params.get('strongsid') as StrongsResult; this.onPassageClicked.subscribe(item => this.params.get('onPassageClicked').getItems(item) - ) + ) } - dismiss() { + dismiss() + { this.viewCtrl.dismiss(); } - makePassage(p: string) { + makePassage(p: string) + { return Reference.bookName(parseInt(p.split(";")[0])) + ' ' + p.split(";")[1] + ":" + p.split(";")[2]; } - openPassage(p: string) { + openPassage(p: string) + { let ref = this.makePassage(p); this.onPassageClicked.emit(ref); } -} +} \ No newline at end of file diff --git a/DynamicBibleIonic/src/components/strongs/strongs.html b/DynamicBibleIonic/src/components/strongs/strongs.html index 171c4810..320cca83 100644 --- a/DynamicBibleIonic/src/components/strongs/strongs.html +++ b/DynamicBibleIonic/src/components/strongs/strongs.html @@ -32,4 +32,8 @@ - \ No newline at end of file + + \ No newline at end of file diff --git a/DynamicBibleIonic/src/components/strongs/strongs.scss b/DynamicBibleIonic/src/components/strongs/strongs.scss index bb3dea37..0ae008da 100644 --- a/DynamicBibleIonic/src/components/strongs/strongs.scss +++ b/DynamicBibleIonic/src/components/strongs/strongs.scss @@ -1,4 +1,8 @@ -.strongs-title { +strongs .button-clear-md{ + color: #307e4b; +} + +.strongs-title { background-color: #c6efd4; } diff --git a/DynamicBibleIonic/src/components/strongs/strongs.ts b/DynamicBibleIonic/src/components/strongs/strongs.ts index c79563fa..4e1b23c9 100644 --- a/DynamicBibleIonic/src/components/strongs/strongs.ts +++ b/DynamicBibleIonic/src/components/strongs/strongs.ts @@ -1,11 +1,14 @@ import { EventEmitter, Component, Input, Output } from "@angular/core"; -import { Reference } from '../../Reference'; +import { Reference } from '../../libs/Reference'; +import { OpenData, CardItem } from "../../pages/search/search"; +import { StrongsResult } from "../../services/strongs-service"; @Component({ selector: "strongs", templateUrl: "strongs.html" }) -export class Strongs { +export class Strongs +{ @Output() onClose = new EventEmitter(); @@ -18,18 +21,21 @@ export class Strongs { @Input() cardItem: CardItem; - constructor() { + constructor() + { } close() { this.onClose.emit(this.cardItem); } - makePassage(p: string) { + makePassage(p: string) + { return Reference.bookName(parseInt(p.split(";")[0])) + ' ' + p.split(";")[1] + ":" + p.split(";")[2]; } - openPassage(p: string) { + openPassage(p: string) + { let ref = this.makePassage(p); this.onPassageClicked.emit({ card: this.cardItem, qry: ref }); } -} +} \ No newline at end of file diff --git a/DynamicBibleIonic/src/components/words/words.html b/DynamicBibleIonic/src/components/words/words.html index 0d528519..0c6b24d8 100644 --- a/DynamicBibleIonic/src/components/words/words.html +++ b/DynamicBibleIonic/src/components/words/words.html @@ -8,4 +8,8 @@ {{makePassage(ref)}} - \ No newline at end of file + + \ No newline at end of file diff --git a/DynamicBibleIonic/src/components/words/words.scss b/DynamicBibleIonic/src/components/words/words.scss index 0b778876..42741c4a 100644 --- a/DynamicBibleIonic/src/components/words/words.scss +++ b/DynamicBibleIonic/src/components/words/words.scss @@ -1,4 +1,8 @@ words { + .button-clear-md { + color: #632761; + } + .words-title { background-color: #f5b9f3; } diff --git a/DynamicBibleIonic/src/components/words/words.ts b/DynamicBibleIonic/src/components/words/words.ts index 0666ee18..88c65ee2 100644 --- a/DynamicBibleIonic/src/components/words/words.ts +++ b/DynamicBibleIonic/src/components/words/words.ts @@ -1,11 +1,14 @@ -import {EventEmitter, Component, Input, Output} from "@angular/core"; -import { Reference } from '../../Reference'; +import { EventEmitter, Component, Input, Output } from "@angular/core"; +import { Reference } from '../../libs/Reference'; +import { OpenData, CardItem } from "../../pages/search/search"; +import { WordLookupResult } from "../../services/word-service" @Component({ selector: "words", templateUrl: "words.html" }) -export class Words { +export class Words +{ @Output() onClose = new EventEmitter(); @@ -18,10 +21,12 @@ export class Words { @Input() cardItem: CardItem; - constructor() { + constructor() + { } - close() { + close() + { this.onClose.emit(this.cardItem); } @@ -34,4 +39,4 @@ export class Words { let ref = this.makePassage(p); this.onPassageClicked.emit({ card: this.cardItem, qry: ref }); } -} +} \ No newline at end of file diff --git a/DynamicBibleIonic/src/Reference.spec.ts b/DynamicBibleIonic/src/libs/Reference.spec.ts similarity index 100% rename from DynamicBibleIonic/src/Reference.spec.ts rename to DynamicBibleIonic/src/libs/Reference.spec.ts diff --git a/DynamicBibleIonic/src/Reference.ts b/DynamicBibleIonic/src/libs/Reference.ts similarity index 77% rename from DynamicBibleIonic/src/Reference.ts rename to DynamicBibleIonic/src/libs/Reference.ts index 56a0ce96..78e83a31 100644 --- a/DynamicBibleIonic/src/Reference.ts +++ b/DynamicBibleIonic/src/libs/Reference.ts @@ -3,28 +3,33 @@ // Jason@walljm.com // www.walljm.com // Jeremy@marzhillstudios.com // jeremy.marzhillstudios.com -/// -class StringUtils { - public static trim(str: string): string { +class StringUtils +{ + public static trim(str: string): string + { return str.replace(/^\s+|\s+$/g, ""); } - public static ltrim(str: string): string { + public static ltrim(str: string): string + { return str.replace(/^\s+/, ""); } - public static rtrim(str: string): string { + public static rtrim(str: string): string + { return str.replace(/\s+$/, ""); } } -export class Reference { +export class Reference +{ private ref: string; public Section: Section; public errAcc: string; - constructor(reference: string) { + constructor(reference: string) + { this.Section = { start: { book: -1, @@ -46,7 +51,8 @@ export class Reference { this.ref = reference.toLowerCase().trim(); this.parseReference(); - if (this.Section.end.book == -1) { + if (this.Section.end.book == -1) + { this.Section.end.book = this.Section.start.book; this.Section.end.bookname = this.Section.start.bookname; this.Section.end.longbookname = this.Section.start.longbookname; @@ -63,7 +69,8 @@ export class Reference { if (this.Section.end.verse == "") this.Section.end.verse = "*"; } - private parseReference() { + private parseReference() + { this.parseBook(false); this.parseFirstNum(false); let foundFirstVerse = this.ref.search(/:.*-/) != -1; @@ -76,7 +83,8 @@ export class Reference { this.maybeParseSecondNum(true); }; - private parseBook(isEnd?: boolean) { + private parseBook(isEnd?: boolean) + { this.ref = this.ref.toLowerCase().trim(); let fbook = this.ref.substring(0, this.ref.search(/\w\s+\d/i) + 1); @@ -87,24 +95,32 @@ export class Reference { else this.Section.start = Reference.parseBook(fbook); } - private parseFirstNum(isEnd: boolean) { + private parseFirstNum(isEnd: boolean) + { let thing = this.Section.start; if (isEnd) thing = this.Section.end; this.ref = StringUtils.ltrim(this.ref); let found = false; - for (let i = 0; i <= this.ref.length; i++) { + for (let i = 0; i <= this.ref.length; i++) + { let c = this.ref.charAt(i); // Grab characters until we hit a non digit. - if ("0".charAt(0) <= c && c <= "9".charAt(0)) { + if ("0".charAt(0) <= c && c <= "9".charAt(0)) + { found = true; thing.chapter = thing.chapter.concat(c); - } else { + } + else + { // if the chapter is longer than 3 digits it's an error - if (thing.chapter.length > 3) { + if (thing.chapter.length > 3) + { this.errAcc = "Chapter too long\"" + thing.chapter + "\"."; return; - } else if (!found) { + } + else if (!found) + { this.errAcc = "No chapter found" + this.ref; } this.ref = this.ref.slice(i); @@ -113,29 +129,38 @@ export class Reference { } } - private parseSecondNum(skipColon?: boolean, isEnd?: boolean) { + private parseSecondNum(skipColon?: boolean, isEnd?: boolean) + { let thing = this.Section.start; if (isEnd) thing = this.Section.end; this.ref = StringUtils.ltrim(this.ref.toLowerCase()); - if (!skipColon) { - if (this.ref[0] != ":") { + if (!skipColon) + { + if (this.ref[0] != ":") + { return; } this.ref = this.ref.slice(1); } this.ref = StringUtils.ltrim(this.ref.toLowerCase()); - if (this.ref[0] == "*") { + if (this.ref[0] == "*") + { thing.verse = "*"; this.ref = this.ref.slice(1); return; } - for (var i = 0; i <= this.ref.length; i++) { + for (var i = 0; i <= this.ref.length; i++) + { let c = this.ref.charAt(i); - if ("0".charAt(0) <= c && c <= "9".charAt(0)) { + if ("0".charAt(0) <= c && c <= "9".charAt(0)) + { thing.verse = thing.verse.concat(c); - } else { - if (thing.verse.length > 3) { + } + else + { + if (thing.verse.length > 3) + { this.errAcc = "Verse too long \"" + thing.verse + "\"."; return ""; } @@ -145,31 +170,41 @@ export class Reference { } } - private maybeParseBook(isEnd: boolean) { - return this.maybeDo(() => { - if (this.ref.search(/\w\s+\d/i) == -1) { + private maybeParseBook(isEnd: boolean) + { + return this.maybeDo(() => + { + if (this.ref.search(/\w\s+\d/i) == -1) + { this.Section.end.book = this.Section.start.book; this.Section.end.bookname = this.Section.start.bookname; this.Section.end.longbookname = this.Section.start.longbookname; this.Section.end.lastchapter = this.Section.start.lastchapter; } - else { + else + { this.parseBook(isEnd) } }); }; - private maybeParseSecondNum(isEnd?: boolean) { - return this.maybeDo(() => { + private maybeParseSecondNum(isEnd?: boolean) + { + return this.maybeDo(() => + { this.parseSecondNum(false, isEnd); }); }; - private maybeParseFirstNumOrVerse(foundSecondBook: boolean, foundFirstVerse: boolean, isEnd: boolean) { + private maybeParseFirstNumOrVerse(foundSecondBook: boolean, foundFirstVerse: boolean, isEnd: boolean) + { let self = this; - return this.maybeDo(() => { - if (self.Section.end.book == self.Section.start.book) { - if (self.ref.search(/:/) != -1 || foundSecondBook || !foundFirstVerse) { + return this.maybeDo(() => + { + if (self.Section.end.book == self.Section.start.book) + { + if (self.ref.search(/:/) != -1 || foundSecondBook || !foundFirstVerse) + { self.parseFirstNum(isEnd); } self.parseSecondNum(true, isEnd); @@ -177,29 +212,36 @@ export class Reference { }); }; - private maybeParseRangeSep() { + private maybeParseRangeSep() + { let self = this; - return this.maybeDo(() => { - if (self.ref[0] == "-") { + return this.maybeDo(() => + { + if (self.ref[0] == "-") + { self.ref = StringUtils.ltrim(self.ref.slice(1)); } }); }; - private maybeDo(f) { + private maybeDo(f) + { let func = f; this.ref = StringUtils.ltrim(this.ref.toLowerCase()); - if (this.ref != "") { + if (this.ref != "") + { func(); } }; - public toString() { + public toString() + { // get the starting book, chapter, verse return Reference.toString(this.Section); }; - public static parseBook(fbook: string) { + public static parseBook(fbook: string) + { let thing = { book: 0, bookname: "", @@ -208,397 +250,463 @@ export class Reference { chapter: "", verse: "" }; - if (fbook.search(/\b(genesis|gen|ge|gn)\b/i) != -1) { + if (fbook.search(/\b(genesis|gen|ge|gn)\b/i) != -1) + { thing.book = 1; thing.bookname = "Genesis"; thing.longbookname = "Genesis"; thing.lastchapter = 50; } - if (fbook.search(/\b(exodus|ex|exo|exod|exd)\b/i) != -1) { + if (fbook.search(/\b(exodus|ex|exo|exod|exd)\b/i) != -1) + { thing.book = 2; thing.bookname = "Exodus"; thing.longbookname = "Exodus"; thing.lastchapter = 40; } - if (fbook.search(/\b(leviticus|lev|le|levi|lv)\b/i) != -1) { + if (fbook.search(/\b(leviticus|lev|le|levi|lv)\b/i) != -1) + { thing.book = 3; thing.bookname = "Leviticus"; thing.longbookname = "Leviticus"; thing.lastchapter = 27; } - if (fbook.search(/\b(numbers|num|nu|numb|number)\b/i) != -1) { + if (fbook.search(/\b(numbers|num|nu|numb|number)\b/i) != -1) + { thing.book = 4; thing.bookname = "Numbers"; thing.longbookname = "Book_of_Numbers"; thing.lastchapter = 36; } - if (fbook.search(/\b(deuteronomy|deut|de|dt|deu)\b/i) != -1) { + if (fbook.search(/\b(deuteronomy|deut|de|dt|deu)\b/i) != -1) + { thing.book = 5; thing.bookname = "Deuteronomy"; thing.longbookname = "Deuteronomy"; thing.lastchapter = 34; } - if (fbook.search(/\b(joshua|josh|jos)\b/i) != -1) { + if (fbook.search(/\b(joshua|josh|jos)\b/i) != -1) + { thing.book = 6; thing.bookname = "Joshua"; thing.longbookname = "Book_of_Joshua"; thing.lastchapter = 24; } - if (fbook.search(/\b(judges|jud|jdg|judg)\b/i) != -1) { + if (fbook.search(/\b(judges|jud|jdg|judg)\b/i) != -1) + { thing.book = 7; thing.bookname = "Judges"; thing.longbookname = "Book_of_Judges"; thing.lastchapter = 21; } - if (fbook.search(/\b(ruth|ru)\b/i) != -1) { + if (fbook.search(/\b(ruth|ru)\b/i) != -1) + { thing.book = 8; thing.bookname = "Ruth"; thing.longbookname = "Book_of_Ruth"; thing.lastchapter = 4; } - if (fbook.search(/\b(1|i|1st|first)\s*(samuel|sa|sam|sml)\b/i) != -1) { + if (fbook.search(/\b(1|i|1st|first)\s*(samuel|sa|sam|sml)\b/i) != -1) + { thing.book = 9; thing.bookname = "1 Samuel"; thing.longbookname = "First_Samuel"; thing.lastchapter = 31; } - if (fbook.search(/\b(2|ii|2nd|second|sec)\s*(samuel|sa|sam|sml)\b/i) != -1) { + if (fbook.search(/\b(2|ii|2nd|second|sec)\s*(samuel|sa|sam|sml)\b/i) != -1) + { thing.book = 10; thing.bookname = "2 Samuel"; thing.longbookname = "Second_Samuel"; thing.lastchapter = 24; } - if (fbook.search(/\b(1|i|1st|first)\s*(kings|king|kgs|kn|k|ki)\b/i) != -1) { + if (fbook.search(/\b(1|i|1st|first)\s*(kings|king|kgs|kn|k|ki)\b/i) != -1) + { thing.book = 11; thing.bookname = "1 Kings"; thing.longbookname = "First_Kings"; thing.lastchapter = 22; } - if (fbook.search(/\b(2|ii|2nd|second|sec)\s*(kings|king|kgs|kn|k|ki)\b/i) != -1) { + if (fbook.search(/\b(2|ii|2nd|second|sec)\s*(kings|king|kgs|kn|k|ki)\b/i) != -1) + { thing.book = 12; thing.bookname = "2 Kings"; thing.longbookname = "Second_Kings"; thing.lastchapter = 25; } - if (fbook.search(/\b(1|i|1st|first)\s*(chronicles|chron|ch|chr)\b/i) != -1) { + if (fbook.search(/\b(1|i|1st|first)\s*(chronicles|chron|ch|chr)\b/i) != -1) + { thing.book = 13; thing.bookname = "1 Chronicles"; thing.longbookname = "First_Chronicles"; thing.lastchapter = 29; } - if (fbook.search(/\b(2|ii|2nd|second|sec)\s*(chronicles|chron|ch|chr)\b/i) != -1) { + if (fbook.search(/\b(2|ii|2nd|second|sec)\s*(chronicles|chron|ch|chr)\b/i) != -1) + { thing.book = 14; thing.bookname = "2 Chronicles"; thing.longbookname = "Second_Chronicles"; thing.lastchapter = 36; } - if (fbook.search(/\b(ezra|ezr)\b/i) != -1) { + if (fbook.search(/\b(ezra|ezr)\b/i) != -1) + { thing.book = 15; thing.bookname = "Ezra"; thing.longbookname = "Book_of_Ezra"; thing.lastchapter = 10; } - if (fbook.search(/\b(nehemiah|neh|ne|nehamiah)\b/i) != -1) { + if (fbook.search(/\b(nehemiah|neh|ne|nehamiah)\b/i) != -1) + { thing.book = 16; thing.bookname = "Nehemiah"; thing.longbookname = "Book_of_Nehemiah"; thing.lastchapter = 13; } - if (fbook.search(/\b(esther|est|es|esth)\b/i) != -1) { + if (fbook.search(/\b(esther|est|es|esth)\b/i) != -1) + { thing.book = 17; thing.bookname = "Esther"; thing.longbookname = "Book_of_Esther"; thing.lastchapter = 10; } - if (fbook.search(/\b(job|jo|jb)\b/i) != -1) { + if (fbook.search(/\b(job|jo|jb)\b/i) != -1) + { thing.book = 18; thing.bookname = "Job"; thing.longbookname = "Book_of_Job"; thing.lastchapter = 42; } - if (fbook.search(/\b(psalms|ps|psa|psalm|psm)\b/i) != -1) { + if (fbook.search(/\b(psalms|ps|psa|psalm|psm)\b/i) != -1) + { thing.book = 19; thing.bookname = "Psalm"; thing.longbookname = "Psalm"; thing.lastchapter = 150; } - if (fbook.search(/\b(proverbs|prov|pr|pro|proverb|prv|prvbs)\b/i) != -1) { + if (fbook.search(/\b(proverbs|prov|pr|pro|proverb|prv|prvbs)\b/i) != -1) + { thing.book = 20; thing.bookname = "Proverbs"; thing.longbookname = "Book_of_Proverbs"; thing.lastchapter = 31; } - if (fbook.search(/\b(ecclesiastes|eccl|ecc|eccles|ec|ecl|ecclesiaste)\b/i) != -1) { + if (fbook.search(/\b(ecclesiastes|eccl|ecc|eccles|ec|ecl|ecclesiaste)\b/i) != -1) + { thing.book = 21; thing.bookname = "Ecclesiastes"; thing.longbookname = "Ecclesiastes"; thing.lastchapter = 12; } - if (fbook.search(/\b(song\sof\ssolomon|song\sof\ssongs|sos|ss|son|so|song|songs)\b/i) != -1) { + if (fbook.search(/\b(song\sof\ssolomon|song\sof\ssongs|sos|ss|son|so|song|songs)\b/i) != -1) + { thing.book = 22; thing.bookname = "Song of Solomon"; thing.longbookname = "Song_of_Solomon"; thing.lastchapter = 8; } - if (fbook.search(/\b(isaiah|is|isah|isai|ia)\b/i) != -1) { + if (fbook.search(/\b(isaiah|is|isah|isai|ia)\b/i) != -1) + { thing.book = 23; thing.bookname = "Isaiah"; thing.longbookname = "Book_of_Isaiah"; thing.lastchapter = 66; } - if (fbook.search(/\b(jerimiah|jeremiah|jer|je|jere)\b/i) != -1) { + if (fbook.search(/\b(jerimiah|jeremiah|jer|je|jere)\b/i) != -1) + { thing.book = 24; thing.bookname = "Jeremiah"; thing.longbookname = "Book_of_Jeremiah"; thing.lastchapter = 52; } - if (fbook.search(/\b(lamentations|lam|la|lamentation)\b/i) != -1) { + if (fbook.search(/\b(lamentations|lam|la|lamentation)\b/i) != -1) + { thing.book = 25; thing.bookname = "Lamentations"; thing.longbookname = "Book_of_Lamentations"; thing.lastchapter = 5; } - if (fbook.search(/\b(ezekiel|eze|ezk|ezek)\b/i) != -1) { + if (fbook.search(/\b(ezekiel|eze|ezk|ezek)\b/i) != -1) + { thing.book = 26; thing.bookname = "Ezekiel"; thing.longbookname = "Book_of_Ezekiel"; thing.lastchapter = 48; } - if (fbook.search(/\b(daniel|dan|dn|dl|da)\b/i) != -1) { + if (fbook.search(/\b(daniel|dan|dn|dl|da)\b/i) != -1) + { thing.book = 27; thing.bookname = "Daniel"; thing.longbookname = "Book_of_Daniel"; thing.lastchapter = 12; } - if (fbook.search(/\b(hosea|hos|ho)\b/i) != -1) { + if (fbook.search(/\b(hosea|hos|ho)\b/i) != -1) + { thing.book = 28; thing.bookname = "Hosea"; thing.longbookname = "Book_of_Hosea"; thing.lastchapter = 14; } - if (fbook.search(/\b(joel|joe|jl)\b/i) != -1) { + if (fbook.search(/\b(joel|joe|jl)\b/i) != -1) + { thing.book = 29; thing.bookname = "Joel"; thing.longbookname = "Book_of_Joel"; thing.lastchapter = 3; } - if (fbook.search(/\b(amos|am|amo)\b/i) != -1) { + if (fbook.search(/\b(amos|am|amo)\b/i) != -1) + { thing.book = 30; thing.bookname = "Amos"; thing.longbookname = "Book_of_Amos"; thing.lastchapter = 9; } - if (fbook.search(/\b(obadiah|oba|ob|obad)\b/i) != -1) { + if (fbook.search(/\b(obadiah|oba|ob|obad)\b/i) != -1) + { thing.book = 31; thing.bookname = "Obadiah"; thing.longbookname = "Book_of_Obadiah"; thing.lastchapter = 1; } - if (fbook.search(/\b(jonah|jnh|jon)\b/i) != -1) { + if (fbook.search(/\b(jonah|jnh|jon)\b/i) != -1) + { thing.book = 32; thing.bookname = "Jonah"; thing.longbookname = "Book_of_Jonah"; thing.lastchapter = 4; } - if (fbook.search(/\b(micah|mic|mi)\b/i) != -1) { + if (fbook.search(/\b(micah|mic|mi)\b/i) != -1) + { thing.book = 33; thing.bookname = "Micah"; thing.longbookname = "Book_of_Micah"; thing.lastchapter = 7; } - if (fbook.search(/\b(nahum|nah|na)\b/i) != -1) { + if (fbook.search(/\b(nahum|nah|na)\b/i) != -1) + { thing.book = 34; thing.bookname = "Nahum"; thing.longbookname = "Book_of_Nahum"; thing.lastchapter = 3; } - if (fbook.search(/\b(habakkuk|hab|ha|habakuk)\b/i) != -1) { + if (fbook.search(/\b(habakkuk|hab|ha|habakuk)\b/i) != -1) + { thing.book = 35; thing.bookname = "Habakkuk"; thing.longbookname = "Book_of_Habakkuk"; thing.lastchapter = 3; } - if (fbook.search(/\b(zephaniah|zeph|zep)\b/i) != -1) { + if (fbook.search(/\b(zephaniah|zeph|zep)\b/i) != -1) + { thing.book = 36; thing.bookname = "Zephaniah"; thing.longbookname = "Book_of_Zephaniah"; thing.lastchapter = 3; } - if (fbook.search(/\b(haggia|hag|hg|haggai)\b/i) != -1) { + if (fbook.search(/\b(haggia|hag|hg|haggai)\b/i) != -1) + { thing.book = 37; thing.bookname = "Haggai"; thing.longbookname = "Book_of_Haggai"; thing.lastchapter = 2; } - if (fbook.search(/\b(zechariah|zech|zch|zec)\b/i) != -1) { + if (fbook.search(/\b(zechariah|zech|zch|zec)\b/i) != -1) + { thing.book = 38; thing.bookname = "Zechariah"; thing.longbookname = "Book_of_Zechariah"; thing.lastchapter = 14; } - if (fbook.search(/\b(malachi|mal)\b/i) != -1) { + if (fbook.search(/\b(malachi|mal)\b/i) != -1) + { thing.book = 39; thing.bookname = "Malachi"; thing.longbookname = "Book_of_Malachi"; thing.lastchapter = 4; } - if (fbook.search(/\b(matthew|mt|matt|mat)\b/i) != -1) { + if (fbook.search(/\b(matthew|mt|matt|mat)\b/i) != -1) + { thing.book = 40; thing.bookname = "Matthew"; thing.longbookname = "Gospel_of_Matthew"; thing.lastchapter = 28; } - if (fbook.search(/\b(mark|mrk|mk|mr)\b/i) != -1) { + if (fbook.search(/\b(mark|mrk|mk|mr)\b/i) != -1) + { thing.book = 41; thing.bookname = "Mark"; thing.longbookname = "Gospel_of_Mark"; thing.lastchapter = 16; } - if (fbook.search(/\b(luke|lu|lke|luk|lk)\b/i) != -1) { + if (fbook.search(/\b(luke|lu|lke|luk|lk)\b/i) != -1) + { thing.book = 42; thing.bookname = "Luke"; thing.longbookname = "Gospel_of_Luke"; thing.lastchapter = 24; } - if (fbook.search(/\b(john|jn|jhn)\b/i) != -1) { + if (fbook.search(/\b(john|jn|jhn)\b/i) != -1) + { thing.book = 43; thing.bookname = "John"; thing.longbookname = "Gospel_of_John"; thing.lastchapter = 21; } - if (fbook.search(/\b(acts|ac|act)\b/i) != -1) { + if (fbook.search(/\b(acts|ac|act)\b/i) != -1) + { thing.book = 44; thing.bookname = "Acts"; thing.longbookname = "Acts_of_the_Apostles"; thing.lastchapter = 28; } - if (fbook.search(/\b(romans|rom|ro|rm|roman)\b/i) != -1) { + if (fbook.search(/\b(romans|rom|ro|rm|roman)\b/i) != -1) + { thing.book = 45; thing.bookname = "Romans"; thing.longbookname = "Epistle_to_the_Romans"; thing.lastchapter = 16; } - if (fbook.search(/\b(1|i|1st|first)\s*(corinthian|cor|corinthians|corinth|corin|corth|corint)\b/i) != -1) { + if (fbook.search(/\b(1|i|1st|first)\s*(corinthian|cor|corinthians|corinth|corin|corth|corint)\b/i) != -1) + { thing.book = 46; thing.bookname = "1 Corinthians"; thing.longbookname = "First_Epistle_to_the_Corinthians"; thing.lastchapter = 16; } - if (fbook.search(/\b(2|ii|2nd|second|sec)\s*(corinthian|cor|corinthians|corinth|corin|corth|corint)\b/i) != -1) { + if (fbook.search(/\b(2|ii|2nd|second|sec)\s*(corinthian|cor|corinthians|corinth|corin|corth|corint)\b/i) != -1) + { thing.book = 47; thing.bookname = "2 Corinthians"; thing.longbookname = "Second_Epistle_to_the_Corinthians"; thing.lastchapter = 13; } - if (fbook.search(/\b(galatians|galatian|galations|gal|ga|gala|galation|galat)\b/i) != -1) { + if (fbook.search(/\b(galatians|galatian|galations|gal|ga|gala|galation|galat)\b/i) != -1) + { thing.book = 48; thing.bookname = "Galatians"; thing.longbookname = "Epistle_to_the_Galatians"; thing.lastchapter = 6; } - if (fbook.search(/\b(ephesians|eph|ep|ephes|ephe|ephs)\b/i) != -1) { + if (fbook.search(/\b(ephesians|eph|ep|ephes|ephe|ephs)\b/i) != -1) + { thing.book = 49; thing.bookname = "Ephesians"; thing.longbookname = "Epistle_to_the_Ephesians"; thing.lastchapter = 6; } - if (fbook.search(/\b(philippians|phi|phil|ph|philip)\b/i) != -1) { + if (fbook.search(/\b(philippians|phi|phil|ph|philip)\b/i) != -1) + { thing.book = 50; thing.bookname = "Philippians"; thing.longbookname = "Epistle_to_the_Philippians"; thing.lastchapter = 4; } - if (fbook.search(/\b(colossians|col|co|colossian|colos|coloss)\b/i) != -1) { + if (fbook.search(/\b(colossians|col|co|colossian|colos|coloss)\b/i) != -1) + { thing.book = 51; thing.bookname = "Colossians"; thing.longbookname = "Epistle_to_the_Colossians"; thing.lastchapter = 4; } - if (fbook.search(/\b(1|i|1st|first)\s*(thessalonians|the|thessa|thessalonian|thes|thess|th)\b/i) != -1) { + if (fbook.search(/\b(1|i|1st|first)\s*(thessalonians|the|thessa|thessalonian|thes|thess|th)\b/i) != -1) + { thing.book = 52; thing.bookname = "1 Thessalonians"; thing.longbookname = "First_Epistle_to_the_Thessalonians"; thing.lastchapter = 5; } - if (fbook.search(/\b(2|ii|2nd|second|sec)\s*(thessalonians|the|thessa|thessalonian|thes|thess|th)\b/i) != -1) { + if (fbook.search(/\b(2|ii|2nd|second|sec)\s*(thessalonians|the|thessa|thessalonian|thes|thess|th)\b/i) != -1) + { thing.book = 53; thing.bookname = "2 Thessalonians"; thing.longbookname = "Second_Epistle_to_the_Thessalonians"; thing.lastchapter = 3; } - if (fbook.search(/\b(1|i|1st|first)\s*(timothy|tim|ti|timoth|tm)\b/i) != -1) { + if (fbook.search(/\b(1|i|1st|first)\s*(timothy|tim|ti|timoth|tm)\b/i) != -1) + { thing.book = 54; thing.bookname = "1 Timothy"; thing.longbookname = "First_Epistle_to_Timothy"; thing.lastchapter = 6; } - if (fbook.search(/\b(2|ii|2nd|second|sec)\s*(timothy|tim|timoth|tm)\b/i) != -1) { + if (fbook.search(/\b(2|ii|2nd|second|sec)\s*(timothy|tim|timoth|tm)\b/i) != -1) + { thing.book = 55; thing.bookname = "2 Timothy"; thing.longbookname = "Second_Epistle_to_Timothy"; thing.lastchapter = 4; } - if (fbook.search(/\b(titus|tit)\b/i) != -1) { + if (fbook.search(/\b(titus|tit)\b/i) != -1) + { thing.book = 56; thing.bookname = "Titus"; thing.longbookname = "Epistle_to_Titus"; thing.lastchapter = 3; } - if (fbook.search(/\b(philemon|phlmn|phl|phm|phile|philem)\b/i) != -1) { + if (fbook.search(/\b(philemon|phlmn|phl|phm|phile|philem)\b/i) != -1) + { thing.book = 57; thing.bookname = "Philemon"; thing.longbookname = "Epistle_to_Philemon"; thing.lastchapter = 1; } - if (fbook.search(/\b(hebrews|heb|he|hebrew)\b/i) != -1) { + if (fbook.search(/\b(hebrews|heb|he|hebrew)\b/i) != -1) + { thing.book = 58; thing.bookname = "Hebrews"; thing.longbookname = "Epistle_to_the_Hebrews"; thing.lastchapter = 13; } - if (fbook.search(/\b(james|jam|ja|jas|jms|jame|jm)\b/i) != -1) { + if (fbook.search(/\b(james|jam|ja|jas|jms|jame|jm)\b/i) != -1) + { thing.book = 59; thing.bookname = "James"; thing.longbookname = "Epistle_of_James"; thing.lastchapter = 5; } - if (fbook.search(/\b(1|i|1st|first)\s*(peter|pe|pet|pete|pt|p)\b/i) != -1) { + if (fbook.search(/\b(1|i|1st|first)\s*(peter|pe|pet|pete|pt|p)\b/i) != -1) + { thing.book = 60; thing.bookname = "1 Peter"; thing.longbookname = "First_Epistle_of_Peter"; thing.lastchapter = 5; } - if (fbook.search(/\b(2|ii|2nd|second|sec)\s*(peter|pe|pet|pete|pt|p)\b/i) != -1) { + if (fbook.search(/\b(2|ii|2nd|second|sec)\s*(peter|pe|pet|pete|pt|p)\b/i) != -1) + { thing.book = 61; thing.bookname = "2 Peter"; thing.longbookname = "Second_Epistle_of_Peter"; thing.lastchapter = 3; } - if (fbook.search(/\b(1|i|1st|first)\s*(john|jn|jo)\b/i) != -1) { + if (fbook.search(/\b(1|i|1st|first)\s*(john|jn|jo)\b/i) != -1) + { thing.book = 62; thing.bookname = "1 John"; thing.longbookname = "First_Epistle_of_John"; thing.lastchapter = 5; } - if (fbook.search(/\b(2|ii|2nd|second|sec)\s*(john|jn|jo)\b/i) != -1) { + if (fbook.search(/\b(2|ii|2nd|second|sec)\s*(john|jn|jo)\b/i) != -1) + { thing.book = 63; thing.bookname = "2 John"; thing.longbookname = "Second_Epistle_of_John"; thing.lastchapter = 1; } - if (fbook.search(/\b(3|iii|3rd|third)\s*(john|jn|jo)\b/i) != -1) { + if (fbook.search(/\b(3|iii|3rd|third)\s*(john|jn|jo)\b/i) != -1) + { thing.book = 64; thing.bookname = "3 John"; thing.longbookname = "Third_Epistle_of_John"; thing.lastchapter = 1; } - if (fbook.search(/\b(jude|ju)\b/i) != -1) { + if (fbook.search(/\b(jude|ju)\b/i) != -1) + { thing.book = 65; thing.bookname = "Jude"; thing.longbookname = "Epistle_of_Jude"; thing.lastchapter = 1; } - if (fbook.search(/\b(revelation|rev|re|revelations|rv)\b/i) != -1) { + if (fbook.search(/\b(revelation|rev|re|revelations|rv)\b/i) != -1) + { thing.book = 66; thing.bookname = "Revelation"; thing.longbookname = "Book_of_Revelations"; @@ -608,7 +716,8 @@ export class Reference { return thing; } - public static toString(section: Section) { + public static toString(section: Section) + { // get the starting book, chapter, verse let ref = section.start.bookname.concat(" "). concat(section.start.chapter).concat(":"). @@ -616,20 +725,24 @@ export class Reference { if (section.start.chapter == section.end.chapter && section.start.verse == section.end.verse && - section.start.book == section.end.book) { + section.start.book == section.end.book) + { return ref; } if (section.start.chapter == section.end.chapter && section.start.verse != section.end.verse && - section.start.book == section.end.book) { + section.start.book == section.end.book) + { return ref.concat(" - ").concat(section.end.verse); } - if (section.start.book != section.end.book) { + if (section.start.book != section.end.book) + { ref = ref.concat(" - ").concat(section.end.bookname).concat(" "); } - else { + else + { ref = ref.concat(" - "); } @@ -638,7 +751,8 @@ export class Reference { return ref.concat(section.end.verse); } - public static bookName(booknum: number): string { + public static bookName(booknum: number): string + { let book = new Array(); book[0] = ""; book[1] = "Genesis"; @@ -712,3 +826,22 @@ export class Reference { } } + +export type Section = { + start: { + book: number, + bookname: string, + longbookname: string, + lastchapter: number, + chapter: string, + verse: string + }, + end: { + book: number, + bookname: string, + longbookname: string, + lastchapter: number, + chapter: string, + verse: string + } +}; \ No newline at end of file diff --git a/DynamicBibleIonic/src/UserProfile.ts b/DynamicBibleIonic/src/libs/UserProfile.ts similarity index 71% rename from DynamicBibleIonic/src/UserProfile.ts rename to DynamicBibleIonic/src/libs/UserProfile.ts index 2c903468..abd05940 100644 --- a/DynamicBibleIonic/src/UserProfile.ts +++ b/DynamicBibleIonic/src/libs/UserProfile.ts @@ -1,9 +1,10 @@ import { Storage } from '@ionic/storage'; +import { CardItem } from "../pages/search/search"; export class UserProfile { user: User; - + constructor(u: User) { this.user = u; @@ -48,6 +49,7 @@ export class UserProfile this.user.append_to_bottom = false; this.user.insert_next_to_item = false; this.user.font_size = 10; + this.user.saved_pages = []; this.save(local); } @@ -59,7 +61,23 @@ export class UserProfile items: [], append_to_bottom: false, insert_next_to_item: false, - font_size: 10 + font_size: 10, + saved_pages: [] }; } +} + +export type User = { + strongs_modal: boolean, + clear_search_after_query: boolean, + items: CardItem[], + append_to_bottom: boolean, + insert_next_to_item: boolean, + font_size: number, + saved_pages: SavedPage[] +} + +export type SavedPage = { + queries: CardItem[], + title: string } \ No newline at end of file diff --git a/DynamicBibleIonic/src/pages/search/search.html b/DynamicBibleIonic/src/pages/search/search.html index f9f87db7..1ac57d37 100644 --- a/DynamicBibleIonic/src/pages/search/search.html +++ b/DynamicBibleIonic/src/pages/search/search.html @@ -6,30 +6,30 @@ + - + + + + + + + + + + + + + + + - + - - + \ No newline at end of file diff --git a/DynamicBibleIonic/src/pages/search/search.scss b/DynamicBibleIonic/src/pages/search/search.scss index deaafd7c..dacb4251 100644 --- a/DynamicBibleIonic/src/pages/search/search.scss +++ b/DynamicBibleIonic/src/pages/search/search.scss @@ -4,9 +4,11 @@ line-height: 1em; font-size: 1em; } -} -.search-card { + .button-large-md { + height: 3.6rem !important; + } + .title { font-size: 1.3em; font-family: 'Roboto', Helvetica, Arial, sans-serif; @@ -31,4 +33,7 @@ body { font-size: 1.2em; font-weight: bold; } -.item-md.item-block .item-inner {padding: 0px;} \ No newline at end of file + +.item-md.item-block .item-inner { + padding: 0px; +} \ No newline at end of file diff --git a/DynamicBibleIonic/src/pages/search/search.ts b/DynamicBibleIonic/src/pages/search/search.ts index ee1b1a3d..7d4d67af 100644 --- a/DynamicBibleIonic/src/pages/search/search.ts +++ b/DynamicBibleIonic/src/pages/search/search.ts @@ -1,40 +1,42 @@ -/// -import {Type, Component} from "@angular/core"; -import {Reference} from "../../Reference"; -import {BibleService} from "../../bible-service"; -import {Loading, LoadingController, ModalController } from "ionic-angular"; -import {StrongsService} from "../../strongs-service"; -import {WordService} from "../../word-service"; -import {StrongsModal} from "../../components/strongs-modal/strongs-modal"; -import {Storage} from '@ionic/storage'; -import {UserProfile} from '../../UserProfile'; +import { Type, Component } from '@angular/core'; +import { Loading, LoadingController, ModalController, NavController, MenuController, ViewController, App, NavParams, IonicApp } from 'ionic-angular'; +import { Storage } from '@ionic/storage'; -class Item -{ - id: number; - data: any; - type: Type; - dict: string; -} +import { StrongsModal } from '../../components/strongs-modal/strongs-modal'; + +import { BiblePassageResult, BibleService } from '../../services/bible-service'; +import { StrongsResult, StrongsService } from '../../services/strongs-service'; +import { WordService } from '../../services/word-service'; +import { PagesService } from "../../services/pages-service"; + +import { UserProfile } from '../../libs/UserProfile'; +import { Reference } from '../../libs/Reference'; +import { MyApp } from '../../app/app.component'; @Component({ - templateUrl: "search.html", - providers: [BibleService, StrongsService, WordService], + templateUrl: 'search.html', + providers: [BibleService, StrongsService, WordService] }) export class SearchPage { - searchQuery: string = ""; + searchQuery = ''; userProfile: UserProfile; last: CardItem; loader: Loading; + saved_results_title: string = ""; constructor( private strongsService: StrongsService , private bibleService: BibleService , private wordService: WordService + , private pagesService: PagesService , public loadingCtrl: LoadingController , public modalCtrl: ModalController - , public local: Storage) + , public navCtl: NavController + , public menuCtl: MenuController + , public local: Storage + , public params: NavParams + ) { this.userProfile = new UserProfile(UserProfile.createDefaultUser()); @@ -53,12 +55,22 @@ export class SearchPage { console.log(error); }); + } + addPage() + { + let p = { queries: this.userProfile.user.items.slice(), title: this.saved_results_title }; + this.userProfile.user.saved_pages.push(p); + this.userProfile.save(this.local); + this.pagesService.addPage(p); } initializeItems(u: UserProfile) { this.userProfile = u; + this.pagesService.initializePages(u.user.saved_pages); + if (this.params.data.queries !== undefined) + this.userProfile.user.items = this.params.data.queries.slice(); } presentStrongsModal(strongs: StrongsResult) @@ -87,19 +99,19 @@ export class SearchPage isError(t: string) { - return t === "Error"; + return t === 'Error'; } isPassage(t: string) { - return t === "Passage"; + return t === 'Passage'; } isStrongs(t: string) { - return t === "Strongs"; + return t === 'Strongs'; } isWords(t: string) { - return t === "Words"; + return t === 'Words'; } addItemToList(item) @@ -133,33 +145,32 @@ export class SearchPage this.getItems(data.qry); } - getItems(search) { this.loader = this.loadingCtrl.create({ - content: "Looking up query..." + content: 'Looking up query...' }); this.loader.present().then( () => { try { - let qs = search.split(";"); + let qs = search.split(';'); for (let x in qs) { if (qs.hasOwnProperty(x)) { let q = qs[x].trim(); - if (q !== "") + if (q !== '') { // its a search term. if (q.search(/[0-9]/i) === -1) { let result = this.wordService.getResult(q); - if (result.status == 0) - this.addItemToList({ data: result, type: "Words", dict: "na" }); + if (result.status === 0) + this.addItemToList({ data: result, type: 'Words', dict: 'na' }); else - this.addItemToList({ data: result.msg, type: "Error", dict: "na" }); + this.addItemToList({ data: result.msg, type: 'Error', dict: 'na' }); } else if (q.search(/(H|G)[0-9]/i) !== -1) { @@ -168,48 +179,48 @@ export class SearchPage if (dict.search(/h/i) !== -1) { - dict = "heb"; + dict = 'heb'; } else { - dict = "grk"; + dict = 'grk'; } q = q.substring(1, q.length); let result = this.strongsService.getResult(parseInt(q), dict); - if (result.status == -1) - this.addItemToList({ data: result.msg, type: "Error", dict: "na" }); + if (result.status === -1) + this.addItemToList({ data: result.msg, type: 'Error', dict: 'na' }); else { if (this.userProfile.user.strongs_modal) this.presentStrongsModal(result); else - this.addItemToList({ data: result, type: "Strongs", dict: "na" }); + this.addItemToList({ data: result, type: 'Strongs', dict: 'na' }); } } else { // its a verse reference. - if (q.trim() !== "") + if (q.trim() !== '') { let myref = new Reference(q.trim()); let r = this.bibleService.getResult(myref.Section); r.ref = myref.toString(); - if (r.status == 0) - this.addItemToList({ data: r, type: "Passage", dict: r.testament == 'new' ? "G" : "H" }); + if (r.status === 0) + this.addItemToList({ data: r, type: 'Passage', dict: r.testament === 'new' ? 'G' : 'H' }); else - this.addItemToList({ data: r.msg, type: "Error", dict: "na" }); + this.addItemToList({ data: r.msg, type: 'Error', dict: 'na' }); } } } } } if (this.userProfile.user.clear_search_after_query) - $(".searchbar-input").val(""); + $('.searchbar-input').val(''); this.userProfile.save(this.local); } catch (error) { - this.addItemToList({ data: error, type: "Error", dict: "na" }); + this.addItemToList({ data: error, type: 'Error', dict: 'na' }); console.log(error); } finally @@ -220,3 +231,15 @@ export class SearchPage ); } } + +export type OpenData = { card: CardItem, qry: string } + +export type CardItem = { data: any, type: string, dict: string } + +class Item +{ + id: number; + data: any; + type: Type; + dict: string; +} \ No newline at end of file diff --git a/DynamicBibleIonic/src/pages/settings/settings.html b/DynamicBibleIonic/src/pages/settings/settings.html index 8c7f4436..fd440506 100644 --- a/DynamicBibleIonic/src/pages/settings/settings.html +++ b/DynamicBibleIonic/src/pages/settings/settings.html @@ -38,5 +38,15 @@ + + + Manage Pages +
+ + {{p.title}} + + +
+
\ No newline at end of file diff --git a/DynamicBibleIonic/src/pages/settings/settings.ts b/DynamicBibleIonic/src/pages/settings/settings.ts index e420d219..7272e205 100644 --- a/DynamicBibleIonic/src/pages/settings/settings.ts +++ b/DynamicBibleIonic/src/pages/settings/settings.ts @@ -1,9 +1,8 @@ -/// /// import { Component } from '@angular/core'; import { NavController } from 'ionic-angular'; import { Storage } from '@ionic/storage'; -import { UserProfile } from '../../UserProfile'; +import { SavedPage, UserProfile } from '../../libs/UserProfile'; @Component({ selector: 'settings', @@ -48,4 +47,13 @@ export class SettingsPage { this.userProfile.reset(this.local); } + + removePage(page: SavedPage) + { + let idx = this.userProfile.user.saved_pages.indexOf(page); + this.userProfile.user.saved_pages.splice(idx, 1); + + // save the users settings. + this.userProfile.save(this.local); + } } \ No newline at end of file diff --git a/DynamicBibleIonic/src/bible-service.spec.ts b/DynamicBibleIonic/src/services/bible-service.spec.ts similarity index 94% rename from DynamicBibleIonic/src/bible-service.spec.ts rename to DynamicBibleIonic/src/services/bible-service.spec.ts index cec6c977..272f00b5 100644 --- a/DynamicBibleIonic/src/bible-service.spec.ts +++ b/DynamicBibleIonic/src/services/bible-service.spec.ts @@ -1,5 +1,5 @@ -import {getTestBed, TestBed, inject} from '@angular/core/testing'; -import {XHRBackend, BaseRequestOptions, HttpModule, Http,} from '@angular/http'; +import {getTestBed, TestBed} from '@angular/core/testing'; +import {BaseRequestOptions, HttpModule, Http,} from '@angular/http'; import {MockBackend} from '@angular/http/testing'; import {BibleService} from './bible-service'; import {Reference} from './Reference'; diff --git a/DynamicBibleIonic/src/bible-service.ts b/DynamicBibleIonic/src/services/bible-service.ts similarity index 84% rename from DynamicBibleIonic/src/bible-service.ts rename to DynamicBibleIonic/src/services/bible-service.ts index 64647b30..0cb15b49 100644 --- a/DynamicBibleIonic/src/bible-service.ts +++ b/DynamicBibleIonic/src/services/bible-service.ts @@ -1,8 +1,7 @@ -/// -/// +/// import { Injectable } from "@angular/core"; import { Http } from "@angular/http"; -import { Reference } from "./Reference"; +import { Section, Reference } from "../libs/Reference"; @Injectable() export class BibleService @@ -15,7 +14,7 @@ export class BibleService constructor(private http: Http) { } - + getResult(section: Section): BiblePassageResult { try @@ -34,7 +33,7 @@ export class BibleService 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", @@ -92,13 +91,35 @@ export class BibleService this.result.testament = "new"; else this.result.testament = "old"; - + return this.result; - } + } catch (error) { console.log(error); } return null; } +} + +export type BiblePassageResult = { + cs: BiblePassage[], + testament: string, + ref: string, + status: number, + msg: string +} + +type BiblePassage = { + ch: number, + vss: BibleVerse[] +} + +type BibleVerse = { + v: number, + w: [ + { + t: string, s: string + } + ] } \ No newline at end of file diff --git a/DynamicBibleIonic/src/services/pages-service.ts b/DynamicBibleIonic/src/services/pages-service.ts new file mode 100644 index 00000000..e71df034 --- /dev/null +++ b/DynamicBibleIonic/src/services/pages-service.ts @@ -0,0 +1,42 @@ +import { Injectable } from "@angular/core"; +import { Storage } from '@ionic/storage'; +import { SearchPage } from "../pages/search/search"; +import { SettingsPage } from "../pages/settings/settings"; +import { SavedPage } from "../libs/UserProfile"; + +@Injectable() +export class PagesService +{ + pages: Array<{ title: string, component: any, params: any }>; + + constructor(public local: Storage) + { + this.pages = [ + { title: 'Search', component: SearchPage, params: { queries: []} }, + { title: 'Settings', component: SettingsPage, params: {} } + ]; + } + + getResult(): Array<{ title: string, component: any }> + { + return this.pages; + } + + addPage(page: SavedPage) + { + this.pages.push({ title: page.title, component: SearchPage, params: { queries: page.queries } }); + } + + initializePages(page_array: SavedPage[]) + { + this.pages = [ + { title: 'Search', component: SearchPage, params: { queries: [] } }, + { title: 'Settings', component: SettingsPage, params: {} } + ]; + + for (let p of page_array) + { + this.pages.push({ title: p.title, component: SearchPage, params: { queries: p.queries } }); + } + } +} \ No newline at end of file diff --git a/DynamicBibleIonic/src/strongs-service.spec.ts b/DynamicBibleIonic/src/services/strongs-service.spec.ts similarity index 100% rename from DynamicBibleIonic/src/strongs-service.spec.ts rename to DynamicBibleIonic/src/services/strongs-service.spec.ts diff --git a/DynamicBibleIonic/src/strongs-service.ts b/DynamicBibleIonic/src/services/strongs-service.ts similarity index 62% rename from DynamicBibleIonic/src/strongs-service.ts rename to DynamicBibleIonic/src/services/strongs-service.ts index e92b4a4a..cd6f92b8 100644 --- a/DynamicBibleIonic/src/strongs-service.ts +++ b/DynamicBibleIonic/src/services/strongs-service.ts @@ -1,17 +1,19 @@ -/// -/// +/// import { Injectable } from "@angular/core"; import { Http } from "@angular/http"; @Injectable() -export class StrongsService { +export class StrongsService +{ result: StrongsResult; count = 0; - constructor(private http: Http) { + constructor(private http: Http) + { } - getResult(sn: number, dict: string): StrongsResult { + getResult(sn: number, dict: string): StrongsResult + { const self = this; this.result = { prefix: "", @@ -25,15 +27,20 @@ export class StrongsService { msg: ":)" }; let url = dict + Math.ceil(sn / 100) + ".json"; - if (dict === "grk") { + if (dict === "grk") + { self.result.prefix = "G"; - if (sn > 5624 || sn < 1) { + if (sn > 5624 || sn < 1) + { self.result.status = -1; self.result.msg = "Strongs Number G" + sn + " is out of range."; } - } else { + } + else + { self.result.prefix = "H"; - if (sn > 8674 || sn < 1) { + if (sn > 8674 || sn < 1) + { self.result.status = -1; self.result.msg = "Strongs Number H" + sn + " is out of range."; } @@ -48,10 +55,12 @@ export class StrongsService { type: "GET", url: "data/strongs/" + url, dataType: "json", - success: function (d: StrongsDefinition[], t, x) { + success: function (d: StrongsDefinition[], t, x) + { self.result.strongs = d; }, - error: function (request, status, error) { + error: function (request, status, error) + { console.log(error); self.result.status = -1; self.result.msg = "Unable to retrieve Strongs Data for " + self.result.prefix + self.result.sn; @@ -69,15 +78,19 @@ export class StrongsService { type: "GET", url: "data/strongscr/cr" + url, dataType: "json", - success: function (d: StrongsCrossReference[], t, x) { - for (let cr of d) { - if (cr.id.toUpperCase() == self.result.prefix + self.result.sn) { + success: function (d: StrongsCrossReference[], t, x) + { + for (let cr of d) + { + if (cr.id.toUpperCase() == self.result.prefix + self.result.sn) + { self.result.crossrefs = cr; break; } } }, - error: function (request, status, error) { + error: function (request, status, error) + { console.log(error); self.result.status = -1; self.result.msg = "Unable to retrieve Strongs Cross References for " + self.result.prefix + self.result.sn; @@ -87,7 +100,8 @@ export class StrongsService { if (self.result.status === -1) return self.result; - if (dict === "grk") { + if (dict === "grk") + { url = "data/rmac/rs" + (Math.ceil(sn / 1000)) + ".json"; let rmac_cross_references: RMACCrossReference[]; @@ -97,36 +111,43 @@ export class StrongsService { type: "GET", url: url, dataType: "json", - success: function (d: RMACCrossReference[], t, x) { + success: function (d: RMACCrossReference[], t, x) + { rmac_cross_references = d; }, - error: function (request, status, error) { + error: function (request, status, error) + { console.log(error); } }); // deal with RMAC - let tmp = $.grep(rmac_cross_references, (el, i) => { if (el.i == sn + "") { return true; } else { return false; } }); + let tmp = $.grep(rmac_cross_references, (el, i) => { return el.i == sn + "" ? true : false; }); if (tmp.length == 0) return this.result; - + this.result.rmaccode = tmp[0].r; - if (this.result.rmaccode != undefined) { + if (this.result.rmaccode != undefined) + { url = `data/rmac/r-${this.result.rmaccode.substring(0, 1)}.json`; $.ajax({ async: false, type: "GET", url: url, dataType: "json", - success: function (d: RMACDefinition[], t, x) { - for (let rmac of d) { - if (rmac.id.toLowerCase() == self.result.rmaccode) { + success: function (d: RMACDefinition[], t, x) + { + for (let rmac of d) + { + if (rmac.id.toLowerCase() == self.result.rmaccode) + { self.result.rmac = rmac; break; } } }, - error: function (request, status, error) { + error: function (request, status, error) + { console.log(error); } }); @@ -134,4 +155,37 @@ export class StrongsService { } return this.result; } -} \ No newline at end of file +} +export type StrongsResult = + { + prefix: string, + sn: number, + strongs: StrongsDefinition[], + def: StrongsDefinition, + rmac: RMACDefinition, + crossrefs: StrongsCrossReference, + rmaccode: string, + status: number, + msg: string + }; + +type StrongsDefinition = { n: number, i: string, tr: string, de: string, lemma: string, p: string } + +type StrongsCrossReference = + { + id: string, // strongs id H1|G1 + t: string, // strongs testament grk|heb + d: string, // strongs word/data Aaron {ah-ar-ohn'} + ss: [ + { + w: string, + rs: [ + { r: string } + ] + } + ] + } + +type RMACDefinition = { id: string, d: string[] } + +type RMACCrossReference = { i: string, r: string } \ No newline at end of file diff --git a/DynamicBibleIonic/src/word-service.ts b/DynamicBibleIonic/src/services/word-service.ts similarity index 95% rename from DynamicBibleIonic/src/word-service.ts rename to DynamicBibleIonic/src/services/word-service.ts index 35d6bf99..ad7ba58b 100644 --- a/DynamicBibleIonic/src/word-service.ts +++ b/DynamicBibleIonic/src/services/word-service.ts @@ -1,5 +1,4 @@ -/// -/// +/// import { Injectable } from "@angular/core"; import { Http } from "@angular/http"; @@ -34,7 +33,7 @@ export class WordService results.unshift(this.getSearchReferences("data/index/" + words[w] + "idx.json", q)); break; } - } + } else { if (q <= words[w] && q > words[w - 1]) @@ -444,4 +443,16 @@ export class WordService // are identical. return x; } +} + +export type WordLookupResult = { + refs: string[], + word: string, + status: number, + msg: string +} + +type IndexResult = { + refs: string[]; + word: string; } \ No newline at end of file diff --git a/DynamicBibleIonic/src/types.ts b/DynamicBibleIonic/src/types.ts deleted file mode 100644 index 763a48c2..00000000 --- a/DynamicBibleIonic/src/types.ts +++ /dev/null @@ -1,97 +0,0 @@ -type OpenData = { - card: CardItem, - qry: string -} - -type WordLookupResult = { - refs: string[], - word: string, - status: number, - msg: string -} - -type IndexResult = { - refs: string[]; - word: string; -} -type CardItem = { data: any, type: string, dict: string } - -type User = { - strongs_modal: boolean, - clear_search_after_query: boolean, - items: CardItem[], - append_to_bottom: boolean, - insert_next_to_item: boolean, - font_size: number -} - -type BiblePassage = { - ch: number, - vss: BibleVerse[] -} - -type BibleVerse = { - v: number, - w: [ - { - t: string, s: string - } - ] -} - -type BiblePassageResult = { - cs: BiblePassage[], - testament: string, - ref: string, - status: number, - msg: string -} - -type StrongsDefinition = { n: number, i: string, tr: string, de: string, lemma: string, p: string } -type StrongsCrossReference = - { - id: string, // strongs id H1|G1 - t: string, // strongs testament grk|heb - d: string, // strongs word/data Aaron {ah-ar-ohn'} - ss: [ - { - w: string, - rs: [ - { r: string } - ] - } - ] - } -type RMACDefinition = { id: string, d: string[] } -type RMACCrossReference = { i: string, r: string } -type StrongsResult = - { - prefix: string, - sn: number, - strongs: StrongsDefinition[], - def: StrongsDefinition, - rmac: RMACDefinition, - crossrefs: StrongsCrossReference, - rmaccode: string, - status: number, - msg: string - }; - -type Section = { - start: { - book: number, - bookname: string, - longbookname: string, - lastchapter: number, - chapter: string, - verse: string - }, - end: { - book: number, - bookname: string, - longbookname: string, - lastchapter: number, - chapter: string, - verse: string - } -}; \ No newline at end of file