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
+
+
+
+ Close
+
\ 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}}
@@ -6,11 +6,23 @@
-
+
-
1">Chapter {{ch.ch}}
+ 1">
+ Chapter {{ch.ch}}
- {{vs.v}}.
-{{w.t}}{{w.t}}
+
+ {{vs.v}}.
+
+ {{w.t}}
+
+ {{w.t}}
+
+
+
+
+
+ Close
+
\ 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
+
+
+
+ Close
+
\ 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
+
+
+
+ Close
+
\ 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 @@
+
-
+
+
+
+
+
+ Save
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
-
- Close
-
+
\ 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 @@
Reset Settings
+
+
+ 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