mirror of
https://gitlab.com/walljm/dynamicbible.git
synced 2025-07-23 23:39:50 -04:00
* update strongs cross references to pull from kjv source file. there were missing cross references that needed restoring
* fixed display of strongs when there were more than one sn for a given word. * added ability to look up references in the b:ch:v format
This commit is contained in:
parent
b0b7b696e9
commit
4fa1040ea0
4
DynamicBibleIonic/.prettierrc
Normal file
4
DynamicBibleIonic/.prettierrc
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"printWidth": 120,
|
||||||
|
"singleQuote": false
|
||||||
|
}
|
File diff suppressed because one or more lines are too long
@ -1,9 +1,14 @@
|
|||||||
FROM ubuntu:16.04
|
FROM ubuntu:16.04
|
||||||
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive \
|
ENV DEBIAN_FRONTEND=noninteractive \
|
||||||
NODE_VERSION=10.13.0 \
|
ANDROID_HOME=/opt/android-sdk-linux \
|
||||||
NPM_VERSION=6.5.0 \
|
NODE_VERSION=10.13.0 \
|
||||||
IONIC_VERSION=4.6.0
|
NPM_VERSION=6.5.0 \
|
||||||
|
IONIC_VERSION=4.6.0 \
|
||||||
|
CORDOVA_VERSION=8.0.0 \
|
||||||
|
GRADLE_VERSION=4.10.2 \
|
||||||
|
SCMNAME="Jason Wall" \
|
||||||
|
SCMEMAIL="jason@walljm.com"
|
||||||
|
|
||||||
# Install basics
|
# Install basics
|
||||||
RUN apt-get update
|
RUN apt-get update
|
||||||
@ -16,11 +21,53 @@ RUN npm install -g cordova@"$CORDOVA_VERSION" ionic@"$IONIC_VERSION"
|
|||||||
RUN npm cache clear --force
|
RUN npm cache clear --force
|
||||||
RUN gem install sass
|
RUN gem install sass
|
||||||
|
|
||||||
|
RUN git config --global user.email "${SCMEMAIL}" && \
|
||||||
|
git config --global user.name "${SCMNAME}"
|
||||||
|
|
||||||
RUN apt-get install software-properties-common -y
|
RUN apt-get install software-properties-common -y
|
||||||
|
|
||||||
RUN add-apt-repository ppa:mercurial-ppa/releases
|
RUN add-apt-repository ppa:mercurial-ppa/releases
|
||||||
RUN apt-get update
|
RUN apt-get update
|
||||||
RUN apt-get install mercurial -y
|
RUN apt-get install mercurial -y
|
||||||
|
|
||||||
|
# install python-software-properties (so you can do add-apt-repository)
|
||||||
|
RUN apt-get update && apt-get install -y -q python-software-properties software-properties-common && \
|
||||||
|
add-apt-repository ppa:webupd8team/java -y && \
|
||||||
|
echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections && \
|
||||||
|
apt-get update && apt-get -y install oracle-java8-installer
|
||||||
|
|
||||||
|
#ANDROID STUFF
|
||||||
|
RUN echo ANDROID_HOME="${ANDROID_HOME}" >> /etc/environment && \
|
||||||
|
dpkg --add-architecture i386 && \
|
||||||
|
apt-get update && \
|
||||||
|
apt-get install -y --force-yes expect ant wget zipalign libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1 qemu-kvm kmod && \
|
||||||
|
apt-get clean && \
|
||||||
|
apt-get autoclean && \
|
||||||
|
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||||
|
|
||||||
|
# Install Android SDK
|
||||||
|
RUN cd /opt && \
|
||||||
|
wget --output-document=android-sdk.tgz --quiet http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz && \
|
||||||
|
tar xzf android-sdk.tgz && \
|
||||||
|
rm -f android-sdk.tgz && \
|
||||||
|
chown -R root. /opt
|
||||||
|
|
||||||
|
# Install Gradle
|
||||||
|
RUN wget https://services.gradle.org/distributions/gradle-"$GRADLE_VERSION"-bin.zip && \
|
||||||
|
mkdir /opt/gradle && \
|
||||||
|
unzip -d /opt/gradle gradle-"$GRADLE_VERSION"-bin.zip && \
|
||||||
|
rm -rf gradle-"$GRADLE_VERSION"-bin.zip
|
||||||
|
|
||||||
|
# Setup environment
|
||||||
|
|
||||||
|
ENV PATH ${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools:/opt/tools:/opt/gradle/gradle-"$GRADLE_VERSION"/bin
|
||||||
|
|
||||||
|
# Install sdk elements
|
||||||
|
COPY docker /opt/tools
|
||||||
|
|
||||||
|
RUN ["/opt/tools/android-accept-licenses.sh", "android update sdk --all --no-ui --filter platform-tools,tools,build-tools-26.0.2,android-27,android-26,build-tools-25.0.0,android-25,extra-android-support,extra-android-m2repository,extra-google-m2repository"]
|
||||||
|
RUN unzip ${ANDROID_HOME}/temp/*.zip -d ${ANDROID_HOME}
|
||||||
|
|
||||||
# Test First Build so that it will be faster later
|
# Test First Build so that it will be faster later
|
||||||
WORKDIR /db
|
WORKDIR /db
|
||||||
RUN hg clone https://walljm@bitbucket.org/walljm/dynamicbible
|
RUN hg clone https://walljm@bitbucket.org/walljm/dynamicbible
|
||||||
@ -28,6 +75,8 @@ WORKDIR /db/dynamicbible/DynamicBibleIonic
|
|||||||
RUN hg update main
|
RUN hg update main
|
||||||
RUN ls -laF
|
RUN ls -laF
|
||||||
RUN npm install
|
RUN npm install
|
||||||
|
RUN ionic cordova platform add android
|
||||||
|
COPY docker/build_apk.sh /build.sh
|
||||||
|
|
||||||
EXPOSE 8100 35729
|
EXPOSE 8100 35729
|
||||||
CMD ["build.sh"]
|
CMD ["build.sh"]
|
||||||
|
@ -1,82 +0,0 @@
|
|||||||
FROM ubuntu:16.04
|
|
||||||
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive \
|
|
||||||
ANDROID_HOME=/opt/android-sdk-linux \
|
|
||||||
NODE_VERSION=10.13.0 \
|
|
||||||
NPM_VERSION=6.5.0 \
|
|
||||||
IONIC_VERSION=4.6.0 \
|
|
||||||
CORDOVA_VERSION=8.0.0 \
|
|
||||||
GRADLE_VERSION=4.10.2 \
|
|
||||||
SCMNAME="Jason Wall" \
|
|
||||||
SCMEMAIL="jason@walljm.com"
|
|
||||||
|
|
||||||
# Install basics
|
|
||||||
RUN apt-get update
|
|
||||||
RUN apt-get install -y git wget curl unzip build-essential ruby ruby-dev ruby-ffi gcc make
|
|
||||||
RUN curl --retry 3 -SLO "http://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.gz"
|
|
||||||
RUN tar -xzf "node-v$NODE_VERSION-linux-x64.tar.gz" -C /usr/local --strip-components=1
|
|
||||||
RUN rm "node-v$NODE_VERSION-linux-x64.tar.gz"
|
|
||||||
RUN npm install -g npm@"$NPM_VERSION"
|
|
||||||
RUN npm install -g cordova@"$CORDOVA_VERSION" ionic@"$IONIC_VERSION"
|
|
||||||
RUN npm cache clear --force
|
|
||||||
RUN gem install sass
|
|
||||||
|
|
||||||
RUN git config --global user.email "${SCMEMAIL}" && \
|
|
||||||
git config --global user.name "${SCMNAME}"
|
|
||||||
|
|
||||||
RUN apt-get install software-properties-common -y
|
|
||||||
|
|
||||||
RUN add-apt-repository ppa:mercurial-ppa/releases
|
|
||||||
RUN apt-get update
|
|
||||||
RUN apt-get install mercurial -y
|
|
||||||
|
|
||||||
# install python-software-properties (so you can do add-apt-repository)
|
|
||||||
RUN apt-get update && apt-get install -y -q python-software-properties software-properties-common && \
|
|
||||||
add-apt-repository ppa:webupd8team/java -y && \
|
|
||||||
echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections && \
|
|
||||||
apt-get update && apt-get -y install oracle-java8-installer
|
|
||||||
|
|
||||||
#ANDROID STUFF
|
|
||||||
RUN echo ANDROID_HOME="${ANDROID_HOME}" >> /etc/environment && \
|
|
||||||
dpkg --add-architecture i386 && \
|
|
||||||
apt-get update && \
|
|
||||||
apt-get install -y --force-yes expect ant wget zipalign libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1 qemu-kvm kmod && \
|
|
||||||
apt-get clean && \
|
|
||||||
apt-get autoclean && \
|
|
||||||
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
|
||||||
|
|
||||||
# Install Android SDK
|
|
||||||
RUN cd /opt && \
|
|
||||||
wget --output-document=android-sdk.tgz --quiet http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz && \
|
|
||||||
tar xzf android-sdk.tgz && \
|
|
||||||
rm -f android-sdk.tgz && \
|
|
||||||
chown -R root. /opt
|
|
||||||
|
|
||||||
# Install Gradle
|
|
||||||
RUN wget https://services.gradle.org/distributions/gradle-"$GRADLE_VERSION"-bin.zip && \
|
|
||||||
mkdir /opt/gradle && \
|
|
||||||
unzip -d /opt/gradle gradle-"$GRADLE_VERSION"-bin.zip && \
|
|
||||||
rm -rf gradle-"$GRADLE_VERSION"-bin.zip
|
|
||||||
|
|
||||||
# Setup environment
|
|
||||||
|
|
||||||
ENV PATH ${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools:/opt/tools:/opt/gradle/gradle-"$GRADLE_VERSION"/bin
|
|
||||||
|
|
||||||
# Install sdk elements
|
|
||||||
COPY docker /opt/tools
|
|
||||||
|
|
||||||
RUN ["/opt/tools/android-accept-licenses.sh", "android update sdk --all --no-ui --filter platform-tools,tools,build-tools-26.0.2,android-27,android-26,build-tools-25.0.0,android-25,extra-android-support,extra-android-m2repository,extra-google-m2repository"]
|
|
||||||
RUN unzip ${ANDROID_HOME}/temp/*.zip -d ${ANDROID_HOME}
|
|
||||||
|
|
||||||
# Test First Build so that it will be faster later
|
|
||||||
WORKDIR /db
|
|
||||||
RUN hg clone https://walljm@bitbucket.org/walljm/dynamicbible
|
|
||||||
WORKDIR /db/dynamicbible/DynamicBibleIonic
|
|
||||||
RUN hg update main
|
|
||||||
RUN ls -laF
|
|
||||||
RUN npm install
|
|
||||||
RUN ionic cordova platform add android
|
|
||||||
COPY docker/build.sh /build.sh
|
|
||||||
|
|
||||||
EXPOSE 8100 35729
|
|
||||||
CMD ["build.sh"]
|
|
@ -1,58 +1,54 @@
|
|||||||
{
|
{
|
||||||
"project": {
|
"project": {
|
||||||
"version": "3.2.0",
|
"version": "3.2.1",
|
||||||
"name": "Dynamic Bible"
|
"name": "Dynamic Bible"
|
||||||
},
|
},
|
||||||
"apps": [
|
"apps": [
|
||||||
{
|
{
|
||||||
"root": "src",
|
"root": "src",
|
||||||
"outDir": "dist",
|
"outDir": "dist",
|
||||||
"assets": [
|
"assets": ["assets"],
|
||||||
"assets"
|
"index": "index.html",
|
||||||
],
|
"main": "main.ts",
|
||||||
"index": "index.html",
|
"test": "test.ts",
|
||||||
"main": "main.ts",
|
"tsconfig": "tsconfig.test.json",
|
||||||
"test": "test.ts",
|
"prefix": "app",
|
||||||
"tsconfig": "tsconfig.test.json",
|
"mobile": false,
|
||||||
"prefix": "app",
|
"styles": ["styles.css"],
|
||||||
"mobile": false,
|
"scripts": [],
|
||||||
"styles": [
|
"environments": {
|
||||||
"styles.css"
|
"source": "environments/environment.ts",
|
||||||
],
|
"dev": "environments/environment.ts",
|
||||||
"scripts": [],
|
"prod": "environments/environment.prod.ts"
|
||||||
"environments": {
|
}
|
||||||
"source": "environments/environment.ts",
|
}
|
||||||
"dev": "environments/environment.ts",
|
],
|
||||||
"prod": "environments/environment.prod.ts"
|
"addons": [],
|
||||||
}
|
"packages": [],
|
||||||
}
|
"e2e": {
|
||||||
],
|
"protractor": {
|
||||||
"addons": [],
|
"config": "./protractor.conf.js"
|
||||||
"packages": [],
|
}
|
||||||
"e2e": {
|
},
|
||||||
"protractor": {
|
"test": {
|
||||||
"config": "./protractor.conf.js"
|
"karma": {
|
||||||
}
|
"config": "./karma.conf.js"
|
||||||
},
|
}
|
||||||
"test": {
|
},
|
||||||
"karma": {
|
"defaults": {
|
||||||
"config": "./karma.conf.js"
|
"styleExt": "css",
|
||||||
}
|
"prefixInterfaces": false,
|
||||||
},
|
"inline": {
|
||||||
"defaults": {
|
"style": false,
|
||||||
"styleExt": "css",
|
"template": false
|
||||||
"prefixInterfaces": false,
|
},
|
||||||
"inline": {
|
"spec": {
|
||||||
"style": false,
|
"class": false,
|
||||||
"template": false
|
"component": true,
|
||||||
},
|
"directive": true,
|
||||||
"spec": {
|
"module": false,
|
||||||
"class": false,
|
"pipe": true,
|
||||||
"component": true,
|
"service": true
|
||||||
"directive": true,
|
}
|
||||||
"module": false,
|
}
|
||||||
"pipe": true,
|
}
|
||||||
"service": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<?xml version='1.0' encoding='utf-8'?>
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
<widget android-versionCode="302003" id="walljm.dynamicbible" version="3.2.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
|
<widget android-versionCode="302010" id="walljm.dynamicbible" version="3.2.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
|
||||||
<name>Dynamic Bible</name>
|
<name>Dynamic Bible</name>
|
||||||
<description>A bible app designed for bible study</description>
|
<description>A bible app designed for bible study</description>
|
||||||
<author email="jason@walljm.com" href="http://dynamicbible.com/">Jason Wall</author>
|
<author email="jason@walljm.com" href="http://dynamicbible.com/">Jason Wall</author>
|
||||||
@ -54,6 +54,7 @@
|
|||||||
<preference name="UIWebViewBounce" value="false" />
|
<preference name="UIWebViewBounce" value="false" />
|
||||||
<preference name="DisallowOverscroll" value="true" />
|
<preference name="DisallowOverscroll" value="true" />
|
||||||
<preference name="android-minSdkVersion" value="19" />
|
<preference name="android-minSdkVersion" value="19" />
|
||||||
|
<preference name="android-targetSdkVersion" value="28" />
|
||||||
<preference name="BackupWebStorage" value="none" />
|
<preference name="BackupWebStorage" value="none" />
|
||||||
<preference name="SplashMaintainAspectRatio" value="true" />
|
<preference name="SplashMaintainAspectRatio" value="true" />
|
||||||
<preference name="FadeSplashScreenDuration" value="300" />
|
<preference name="FadeSplashScreenDuration" value="300" />
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
version: "3"
|
version: "3"
|
||||||
services:
|
services:
|
||||||
web:
|
web:
|
||||||
image: dynamicbible:3.2.0
|
image: dynamicbible:3.2.1
|
||||||
build:
|
build:
|
||||||
context: ./
|
context: ./
|
||||||
dockerfile: ./Dockerfile
|
dockerfile: ./Dockerfile
|
||||||
@ -9,4 +9,4 @@ services:
|
|||||||
- 8100:8100
|
- 8100:8100
|
||||||
- 35729:35729
|
- 35729:35729
|
||||||
volumes:
|
volumes:
|
||||||
- ./releases:/db/dynamicbible/DynamicBibleIonic/platforms/android/app/build/outputs/apk/release/
|
- ./releases:/db/dynamicbible/DynamicBibleIonic/platforms/android/app/build/outputs/apk/release/
|
||||||
|
4
DynamicBibleIonic/docker/build_apk.sh
Normal file
4
DynamicBibleIonic/docker/build_apk.sh
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
cd /db/dynamicbible/DynamicBibleIonic
|
||||||
|
ionic cordova build android
|
30
DynamicBibleIonic/package-lock.json
generated
30
DynamicBibleIonic/package-lock.json
generated
@ -3060,9 +3060,9 @@
|
|||||||
"integrity": "sha1-Hgf5hy4VRnpQ59FKc/79h0+u1ko="
|
"integrity": "sha1-Hgf5hy4VRnpQ59FKc/79h0+u1ko="
|
||||||
},
|
},
|
||||||
"cordova-plugin-buildinfo": {
|
"cordova-plugin-buildinfo": {
|
||||||
"version": "2.0.2",
|
"version": "2.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/cordova-plugin-buildinfo/-/cordova-plugin-buildinfo-2.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/cordova-plugin-buildinfo/-/cordova-plugin-buildinfo-2.0.3.tgz",
|
||||||
"integrity": "sha512-hrrNZxSiV2KoyJ3cNPkvy/GoaWZbLZuuJMDaEK3OJ4GXgtuqB1lxAUQqJG+L2P2Ak3xwRZizqH32U5gE32I96w=="
|
"integrity": "sha512-98HkcBGdsHILxAbHRKsCkT6OLXNSj5xGmfA6i5GNruNzTbDvFAChngR+Z4hLQskjIjI5s1vx0UQdlLYaCZWdOw=="
|
||||||
},
|
},
|
||||||
"cordova-plugin-compat": {
|
"cordova-plugin-compat": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
@ -3075,9 +3075,9 @@
|
|||||||
"integrity": "sha1-4vusECkBeeRMtyxf28QQpTHBzW0="
|
"integrity": "sha1-4vusECkBeeRMtyxf28QQpTHBzW0="
|
||||||
},
|
},
|
||||||
"cordova-plugin-customurlscheme": {
|
"cordova-plugin-customurlscheme": {
|
||||||
"version": "4.3.0",
|
"version": "4.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/cordova-plugin-customurlscheme/-/cordova-plugin-customurlscheme-4.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/cordova-plugin-customurlscheme/-/cordova-plugin-customurlscheme-4.4.0.tgz",
|
||||||
"integrity": "sha1-Avlod4tAk5kOsEB/P6GxRY1wX5Q="
|
"integrity": "sha512-7VPJnNfvfZQSU1IdhJX7BpDgvC7bEe+Kfg9Cj8guSoZDcTi378qQFb6VOwthT8hwGXx2bZzWf0qnTZdRlLQy+Q=="
|
||||||
},
|
},
|
||||||
"cordova-plugin-device": {
|
"cordova-plugin-device": {
|
||||||
"version": "1.1.7",
|
"version": "1.1.7",
|
||||||
@ -3095,14 +3095,14 @@
|
|||||||
"integrity": "sha1-gQKKt2Q+YVWT0n8q0CRFYR8ZRrY="
|
"integrity": "sha1-gQKKt2Q+YVWT0n8q0CRFYR8ZRrY="
|
||||||
},
|
},
|
||||||
"cordova-plugin-statusbar": {
|
"cordova-plugin-statusbar": {
|
||||||
"version": "2.4.2",
|
"version": "2.4.3",
|
||||||
"resolved": "https://registry.npmjs.org/cordova-plugin-statusbar/-/cordova-plugin-statusbar-2.4.2.tgz",
|
"resolved": "https://registry.npmjs.org/cordova-plugin-statusbar/-/cordova-plugin-statusbar-2.4.3.tgz",
|
||||||
"integrity": "sha1-/B+9wNjXAzp+jh8ff/FnrJvU+vY="
|
"integrity": "sha512-ThmXzl6QIKWFXf4wWw7Q/zpB+VKkz3VM958+5A0sXD4jmR++u7KnGttLksXshVwWr6lvGwUebLYtIyXwS4Ovcg=="
|
||||||
},
|
},
|
||||||
"cordova-plugin-whitelist": {
|
"cordova-plugin-whitelist": {
|
||||||
"version": "1.3.3",
|
"version": "1.3.4",
|
||||||
"resolved": "https://registry.npmjs.org/cordova-plugin-whitelist/-/cordova-plugin-whitelist-1.3.3.tgz",
|
"resolved": "https://registry.npmjs.org/cordova-plugin-whitelist/-/cordova-plugin-whitelist-1.3.4.tgz",
|
||||||
"integrity": "sha1-tehezbv+Wu3tQKG/TuI3LmfZb7Q="
|
"integrity": "sha512-EYC5eQFVkoYXq39l7tYKE6lEjHJ04mvTmKXxGL7quHLdFPfJMNzru/UYpn92AOfpl3PQaZmou78C7EgmFOwFQQ=="
|
||||||
},
|
},
|
||||||
"cordova-universal-links-plugin": {
|
"cordova-universal-links-plugin": {
|
||||||
"version": "git+https://github.com/walteram/cordova-universal-links-plugin.git#c648d3025643731c244f615ff5bbf2e375dea544",
|
"version": "git+https://github.com/walteram/cordova-universal-links-plugin.git#c648d3025643731c244f615ff5bbf2e375dea544",
|
||||||
@ -8252,9 +8252,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node-version-compare": {
|
"node-version-compare": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/node-version-compare/-/node-version-compare-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/node-version-compare/-/node-version-compare-1.0.2.tgz",
|
||||||
"integrity": "sha1-2Fv9IPCsreM1d/VmgscQnDTFUM0="
|
"integrity": "sha512-OVcHSPS3nROlBQXcALptOR0j2lOabC9wE2S+y+Fvr7nSDqoO/LCNzRdVGVovipeHUXs5jAqq7GelWE1X4J1sEw=="
|
||||||
},
|
},
|
||||||
"nopt": {
|
"nopt": {
|
||||||
"version": "4.0.1",
|
"version": "4.0.1",
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"version": "3.2.0",
|
"version": "3.2.1",
|
||||||
"name": "dynamicbible",
|
"name": "dynamicbible",
|
||||||
"author": "Jason Wall",
|
"author": "Jason Wall",
|
||||||
"homepage": "http://dynamicbible.com/",
|
"homepage": "http://dynamicbible.com/",
|
||||||
@ -38,15 +38,15 @@
|
|||||||
"cordova-android-support-gradle-release": "^1.4.7",
|
"cordova-android-support-gradle-release": "^1.4.7",
|
||||||
"cordova-ios": "4.5.5",
|
"cordova-ios": "4.5.5",
|
||||||
"cordova-plugin-browsertab": "^0.2.0",
|
"cordova-plugin-browsertab": "^0.2.0",
|
||||||
"cordova-plugin-buildinfo": "^2.0.2",
|
"cordova-plugin-buildinfo": "^2.0.3",
|
||||||
"cordova-plugin-compat": "^1.2.0",
|
"cordova-plugin-compat": "^1.2.0",
|
||||||
"cordova-plugin-console": "^1.1.0",
|
"cordova-plugin-console": "^1.1.0",
|
||||||
"cordova-plugin-customurlscheme": "^4.3.0",
|
"cordova-plugin-customurlscheme": "^4.4.0",
|
||||||
"cordova-plugin-device": "^1.1.7",
|
"cordova-plugin-device": "^1.1.7",
|
||||||
"cordova-plugin-inappbrowser": "^2.0.2",
|
"cordova-plugin-inappbrowser": "^2.0.2",
|
||||||
"cordova-plugin-splashscreen": "^4.1.0",
|
"cordova-plugin-splashscreen": "^4.1.0",
|
||||||
"cordova-plugin-statusbar": "^2.4.2",
|
"cordova-plugin-statusbar": "^2.4.3",
|
||||||
"cordova-plugin-whitelist": "^1.3.3",
|
"cordova-plugin-whitelist": "^1.3.4",
|
||||||
"cordova-universal-links-plugin": "git+https://github.com/walteram/cordova-universal-links-plugin.git",
|
"cordova-universal-links-plugin": "git+https://github.com/walteram/cordova-universal-links-plugin.git",
|
||||||
"firebase": "^4.8.0",
|
"firebase": "^4.8.0",
|
||||||
"ionic-angular": "3.9.0",
|
"ionic-angular": "3.9.0",
|
||||||
@ -119,11 +119,11 @@
|
|||||||
},
|
},
|
||||||
"cordova-universal-links-plugin": {},
|
"cordova-universal-links-plugin": {},
|
||||||
"cordova-android-support-gradle-release": {
|
"cordova-android-support-gradle-release": {
|
||||||
"ANDROID_SUPPORT_VERSION": "27.+"
|
"ANDROID_SUPPORT_VERSION": "28.+"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"android"
|
"android"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
33
DynamicBibleIonic/run.Dockerfile
Normal file
33
DynamicBibleIonic/run.Dockerfile
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
FROM ubuntu:16.04
|
||||||
|
|
||||||
|
ENV DEBIAN_FRONTEND=noninteractive \
|
||||||
|
NODE_VERSION=10.13.0 \
|
||||||
|
NPM_VERSION=6.5.0 \
|
||||||
|
IONIC_VERSION=4.6.0
|
||||||
|
|
||||||
|
# Install basics
|
||||||
|
RUN apt-get update
|
||||||
|
RUN apt-get install -y git wget curl unzip build-essential ruby ruby-dev ruby-ffi gcc make
|
||||||
|
RUN curl --retry 3 -SLO "http://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.gz"
|
||||||
|
RUN tar -xzf "node-v$NODE_VERSION-linux-x64.tar.gz" -C /usr/local --strip-components=1
|
||||||
|
RUN rm "node-v$NODE_VERSION-linux-x64.tar.gz"
|
||||||
|
RUN npm install -g npm@"$NPM_VERSION"
|
||||||
|
RUN npm install -g cordova@"$CORDOVA_VERSION" ionic@"$IONIC_VERSION"
|
||||||
|
RUN npm cache clear --force
|
||||||
|
RUN gem install sass
|
||||||
|
|
||||||
|
RUN apt-get install software-properties-common -y
|
||||||
|
RUN add-apt-repository ppa:mercurial-ppa/releases
|
||||||
|
RUN apt-get update
|
||||||
|
RUN apt-get install mercurial -y
|
||||||
|
|
||||||
|
# Test First Build so that it will be faster later
|
||||||
|
WORKDIR /db
|
||||||
|
RUN hg clone https://walljm@bitbucket.org/walljm/dynamicbible
|
||||||
|
WORKDIR /db/dynamicbible/DynamicBibleIonic
|
||||||
|
RUN hg update main
|
||||||
|
RUN ls -laF
|
||||||
|
RUN npm install
|
||||||
|
|
||||||
|
EXPOSE 8100 35729
|
||||||
|
CMD ["build.sh"]
|
@ -1,53 +1,68 @@
|
|||||||
<ion-item class="title passage-title" (swipe)="close($event)">
|
<ion-item class="title passage-title" (swipe)="close($event)">
|
||||||
<ion-icon name="book" item-left></ion-icon> <span *ngIf="data !== undefined"><span *ngIf="data.status === -1">Error:</span> {{data.ref}}</span>
|
<ion-icon name="book" item-left></ion-icon>
|
||||||
<button ion-button icon-only item-end large clear (click)="close()">
|
<span *ngIf="data !== undefined"><span *ngIf="data.status === -1">Error:</span> {{ data.ref }}</span>
|
||||||
<ion-icon name="close-circle"></ion-icon>
|
<button ion-button icon-only item-end large clear (click)="close()">
|
||||||
</button>
|
<ion-icon name="close-circle"></ion-icon>
|
||||||
</ion-item>
|
</button>
|
||||||
<ion-card-content *ngIf="data !== undefined && data.status === 0">
|
</ion-item>
|
||||||
<br>
|
<ion-card-content *ngIf="data !== undefined && data.status === 0">
|
||||||
<ng-template [ngIf]="profileService.profile().show_paragraphs"><div class="passage-text" *ngFor="let ch of withParas">
|
<br />
|
||||||
<h2 *ngIf="data.cs.length > 1">
|
<ng-template [ngIf]="profileService.profile().show_paragraphs"
|
||||||
Chapter {{ch.ch}}
|
><div class="passage-text" *ngFor="let ch of withParas">
|
||||||
</h2>
|
<h2 *ngIf="data.cs.length > 1">Chapter {{ ch.ch }}</h2>
|
||||||
<div *ngFor="let para of ch.paras">
|
<div *ngFor="let para of ch.paras">
|
||||||
<h3 *ngIf="profileService.profile().show_paragraph_headings && hasHeader(para.p)">{{para.p.h}}</h3>
|
<h3 *ngIf="profileService.profile().show_paragraph_headings && hasHeader(para.p)">{{ para.p.h }}</h3>
|
||||||
<p>
|
<p>
|
||||||
<ng-template ngFor let-vs [ngForOf]="para.vss">
|
<ng-template ngFor let-vs [ngForOf]="para.vss">
|
||||||
<b *ngIf="profileService.profile().show_verse_numbers">{{vs.v}}.</b> <ng-template ngFor let-w [ngForOf]="vs.w">
|
<b *ngIf="profileService.profile().show_verse_numbers">{{ vs.v }}.</b>
|
||||||
<ng-template [ngIf]="!isPunct(w.t)"> </ng-template><a *ngIf="w.s != null" (click)="openStrongs(w.s)" (press)="openMenu(w.s)">{{w.t}}</a>
|
<ng-template ngFor let-w [ngForOf]="vs.w">
|
||||||
<ng-template [ngIf]="w.s == null">{{w.t}}</ng-template>
|
<ng-template [ngIf]="!isPunct(w.t)"> </ng-template
|
||||||
</ng-template><br *ngIf="profileService.profile().verses_on_new_line">
|
><a *ngIf="w.s != null" (click)="openStrongs(w.s)">{{ w.t }}</a>
|
||||||
</ng-template>
|
<ng-template [ngIf]="w.s == null">{{ w.t }}</ng-template> </ng-template
|
||||||
</p>
|
><br *ngIf="profileService.profile().verses_on_new_line" />
|
||||||
</div>
|
</ng-template>
|
||||||
</div></ng-template>
|
</p>
|
||||||
<ng-template [ngIf]="!profileService.profile().show_paragraphs"><div class="passage-text" *ngFor="let ch of data.cs">
|
</div></div
|
||||||
<h2 *ngIf="data.cs.length > 1">
|
></ng-template>
|
||||||
Chapter {{ch.ch}}
|
<ng-template [ngIf]="!profileService.profile().show_paragraphs"
|
||||||
</h2>
|
><div class="passage-text" *ngFor="let ch of data.cs">
|
||||||
<ng-template ngFor let-vs [ngForOf]="ch.vss">
|
<h2 *ngIf="data.cs.length > 1">Chapter {{ ch.ch }}</h2>
|
||||||
<b *ngIf="profileService.profile().show_verse_numbers">{{vs.v}}.</b> <ng-template ngFor let-w [ngForOf]="vs.w">
|
<ng-template ngFor let-vs [ngForOf]="ch.vss">
|
||||||
<ng-template [ngIf]="!isPunct(w.t)"> </ng-template><a *ngIf="w.s != null" (click)="openStrongs(w.s)" (press)="openMenu(w.s)">{{w.t}}</a>
|
<b *ngIf="profileService.profile().show_verse_numbers">{{ vs.v }}.</b>
|
||||||
<ng-template [ngIf]="w.s == null">{{w.t}}</ng-template>
|
<ng-template ngFor let-w [ngForOf]="vs.w">
|
||||||
</ng-template><br *ngIf="profileService.profile().verses_on_new_line">
|
<ng-template [ngIf]="!isPunct(w.t)"> </ng-template
|
||||||
</ng-template>
|
><a *ngIf="w.s != null" (click)="openStrongs(w.s)">{{ w.t }}</a>
|
||||||
</div></ng-template>
|
<ng-template [ngIf]="w.s == null">{{ w.t }}</ng-template> </ng-template
|
||||||
</ion-card-content>
|
><br *ngIf="profileService.profile().verses_on_new_line" />
|
||||||
<ion-card-content *ngIf="data !== undefined && data.status === -1">
|
</ng-template></div
|
||||||
<error-message [msg]="data.msg"></error-message>
|
></ng-template>
|
||||||
</ion-card-content>
|
</ion-card-content>
|
||||||
<div style="float: right">
|
<ion-card-content *ngIf="data !== undefined && data.status === -1">
|
||||||
<button ion-button icon-center clear (click)="prev()" *ngIf="ref !== undefined && ref.Section.start.chapter !== '1'">
|
<error-message [msg]="data.msg"></error-message>
|
||||||
<ion-icon name="rewind"></ion-icon>
|
</ion-card-content>
|
||||||
</button>
|
<div style="float: right">
|
||||||
<button ion-button icon-center clear (click)="expand()">
|
<button
|
||||||
<ion-icon name="code-working"></ion-icon>
|
ion-button
|
||||||
</button>
|
icon-center
|
||||||
<button ion-button icon-center clear (click)="next()" *ngIf="ref !== undefined && ref.Section.end.chapter !== ref.Section.end.book.last_chapter.toString()">
|
clear
|
||||||
<ion-icon name="fastforward"></ion-icon>
|
(click)="prev()"
|
||||||
</button>
|
*ngIf="ref !== undefined && ref.Section.start.chapter !== '1'"
|
||||||
<button ion-button icon-center clear (click)="contextMenu()">
|
>
|
||||||
<ion-icon name="more"></ion-icon>
|
<ion-icon name="rewind"></ion-icon>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
<button ion-button icon-center clear (click)="expand()">
|
||||||
|
<ion-icon name="code-working"></ion-icon>
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
ion-button
|
||||||
|
icon-center
|
||||||
|
clear
|
||||||
|
(click)="next()"
|
||||||
|
*ngIf="ref !== undefined && ref.Section.end.chapter !== ref.Section.end.book.last_chapter.toString()"
|
||||||
|
>
|
||||||
|
<ion-icon name="fastforward"></ion-icon>
|
||||||
|
</button>
|
||||||
|
<button ion-button icon-center clear (click)="contextMenu()">
|
||||||
|
<ion-icon name="more"></ion-icon>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
@ -1,43 +1,54 @@
|
|||||||
<ion-header>
|
<ion-header>
|
||||||
<ion-toolbar>
|
<ion-toolbar>
|
||||||
<ion-title>
|
<ion-title>
|
||||||
<ion-icon name="paper" item-left></ion-icon> <span *ngIf="item !== undefined"><span *ngIf="item.status === -1">Error:</span> Strongs: {{item.prefix}}{{item.sn}}</span>
|
<ion-icon name="paper" item-left></ion-icon>
|
||||||
</ion-title>
|
Strongs:
|
||||||
<ion-buttons start>
|
<span *ngFor="let item of items"
|
||||||
<button ion-button (click)="dismiss()" large>
|
><span *ngIf="item.status === -1">Error:</span>{{ item.prefix }}{{ item.sn }}
|
||||||
<ion-icon name="md-close"></ion-icon>
|
</span>
|
||||||
</button>
|
</ion-title>
|
||||||
</ion-buttons>
|
<ion-buttons start>
|
||||||
</ion-toolbar>
|
<button ion-button (click)="dismiss()" large>
|
||||||
</ion-header>
|
<ion-icon name="md-close"></ion-icon>
|
||||||
<ion-content padding *ngIf="item !== undefined && item.status === 0">
|
</button>
|
||||||
<br>
|
</ion-buttons>
|
||||||
<h2>Strong's Definitition</h2>
|
</ion-toolbar>
|
||||||
<p>
|
</ion-header>
|
||||||
<b>{{item.def.tr}} <ng-template [ngIf]="item.def.sn != null">({{item.def.sn}})</ng-template></b>
|
<ion-content padding>
|
||||||
- {{item.def.p}} - {{item.def.lemma}} -
|
<div *ngFor="let item of items">
|
||||||
<span *ngFor="let part of item.def.de"><ng-template [ngIf]="part.sn != null"><a (click)="openItem(part.sn)">{{part.sn}}</a></ng-template><ng-template [ngIf]="part.w != null"><span [innerHTML]="part.w"></span></ng-template></span><br>
|
<h2>Strong's Definitition: {{ item.prefix }}{{ item.sn }}</h2>
|
||||||
</p>
|
<p>
|
||||||
<ng-template [ngIf]="item.rmac !== null">
|
<b>{{ item.def.tr }}</b>
|
||||||
<h2>RMAC</h2>
|
- {{ item.def.p }} - {{ item.def.lemma }} -
|
||||||
<b>{{item.rmac.id}}</b>
|
<span *ngFor="let part of item.def.de"
|
||||||
<br>
|
><ng-template [ngIf]="part.sn != null"
|
||||||
<ul>
|
><a (click)="openItem(part.sn)">{{ part.sn }}</a></ng-template
|
||||||
<li *ngFor="let c of item.rmac.d">
|
><ng-template [ngIf]="part.w != null"><span [innerHTML]="part.w"></span></ng-template></span
|
||||||
{{c}}
|
><br />
|
||||||
</li>
|
</p>
|
||||||
</ul>
|
<ng-template [ngIf]="item.rmac !== null">
|
||||||
</ng-template>
|
<h2>RMAC</h2>
|
||||||
<div class="strongs-cross" *ngIf="item.crossrefs != null && item.crossrefs.ss != null">
|
<b>{{ item.rmac.id }}</b>
|
||||||
<h2>Cross References</h2>
|
<br />
|
||||||
Translated as {{item.crossrefs.ss.length}} words
|
<ul>
|
||||||
<dl>
|
<li *ngFor="let c of item.rmac.d">
|
||||||
<dd *ngFor="let wrd of item.crossrefs.ss">
|
{{ c }}
|
||||||
<strong>{{wrd.w}}:</strong> <span *ngFor="let p of wrd.rs"><a (click)="openPassage(p.r)">{{makePassage(p.r)}}</a>, </span>
|
</li>
|
||||||
</dd>
|
</ul>
|
||||||
</dl>
|
</ng-template>
|
||||||
</div>
|
<div class="strongs-cross" *ngIf="item.crossrefs != null && item.crossrefs.ss != null">
|
||||||
</ion-content>
|
<h2>Cross References</h2>
|
||||||
<ion-content *ngIf="item !== undefined && item.status === -1">
|
Translated as {{ item.crossrefs.ss.length }} words
|
||||||
<error-message [msg]="item.msg"></error-message>
|
<dl>
|
||||||
|
<dd *ngFor="let wrd of item.crossrefs.ss">
|
||||||
|
<strong>{{ wrd.w }}, {{ wrd.rs.length }}</strong
|
||||||
|
>:
|
||||||
|
<span *ngFor="let p of wrd.rs"
|
||||||
|
><a (click)="openPassage(p.r)">{{ makePassage(p.r) }}</a
|
||||||
|
>,
|
||||||
|
</span>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</ion-content>
|
</ion-content>
|
||||||
|
@ -1,18 +1,17 @@
|
|||||||
import { EventEmitter, Component, Output, OnInit } from '@angular/core';
|
import { EventEmitter, Component, Output, OnInit } from "@angular/core";
|
||||||
import { NavParams, ViewController } from 'ionic-angular';
|
import { NavParams, ViewController } from "ionic-angular";
|
||||||
import { Reference } from '../../libs/Reference';
|
import { Reference } from "../../libs/Reference";
|
||||||
import { StrongsResult, StrongsService } from '../../services/strongs-service';
|
import { StrongsResult, StrongsService } from "../../services/strongs-service";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'strongs-modal',
|
selector: "strongs-modal",
|
||||||
templateUrl: 'strongs-modal.html',
|
templateUrl: "strongs-modal.html",
|
||||||
providers: [StrongsService]
|
providers: [StrongsService]
|
||||||
})
|
})
|
||||||
export class StrongsModal implements OnInit
|
export class StrongsModal implements OnInit {
|
||||||
{
|
sn: string;
|
||||||
sn: number;
|
|
||||||
dict: string;
|
dict: string;
|
||||||
item: StrongsResult;
|
items: StrongsResult[];
|
||||||
|
|
||||||
@Output()
|
@Output()
|
||||||
onItemClicked = new EventEmitter<string>();
|
onItemClicked = new EventEmitter<string>();
|
||||||
@ -21,40 +20,38 @@ export class StrongsModal implements OnInit
|
|||||||
private _strongsService: StrongsService,
|
private _strongsService: StrongsService,
|
||||||
private _params: NavParams,
|
private _params: NavParams,
|
||||||
private _viewCtrl: ViewController
|
private _viewCtrl: ViewController
|
||||||
)
|
) {
|
||||||
{
|
this.sn = this._params.get("sn") as string;
|
||||||
this.sn = this._params.get('sn') as number;
|
this.dict = this._params.get("dict") as string;
|
||||||
this.dict = this._params.get('dict') as string;
|
this.onItemClicked.subscribe(item => {
|
||||||
this.onItemClicked.subscribe(item =>
|
let pg = this._params.get("onItemClicked");
|
||||||
{
|
pg.updateUIwithItems(item, false);
|
||||||
let pg = this._params.get('onItemClicked');
|
|
||||||
pg.updateUIwithItems(item, false);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit(): void
|
async ngOnInit() {
|
||||||
{
|
this.items = [];
|
||||||
this._strongsService.getResultAsPromise(this.sn, this.dict).then(data => this.item = data);
|
const numbers = this.sn.split(" ");
|
||||||
|
for (const sn of numbers) {
|
||||||
|
let data = await this._strongsService.getResultAsPromise(parseInt(sn), this.dict);
|
||||||
|
this.items.push(data);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dismiss()
|
dismiss() {
|
||||||
{
|
|
||||||
this._viewCtrl.dismiss();
|
this._viewCtrl.dismiss();
|
||||||
}
|
}
|
||||||
|
|
||||||
openItem(p: string)
|
openItem(p: string) {
|
||||||
{
|
|
||||||
this.onItemClicked.emit(p);
|
this.onItemClicked.emit(p);
|
||||||
this.dismiss();
|
this.dismiss();
|
||||||
}
|
}
|
||||||
|
|
||||||
makePassage(p: string)
|
makePassage(p: string) {
|
||||||
{
|
return Reference.bookName(parseInt(p.split(";")[0])).name + " " + p.split(";")[1] + ":" + p.split(";")[2];
|
||||||
return Reference.bookName(parseInt(p.split(';')[0])).name + ' ' + p.split(';')[1] + ':' + p.split(';')[2];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
openPassage(p: string)
|
openPassage(p: string) {
|
||||||
{
|
|
||||||
let ref = this.makePassage(p);
|
let ref = this.makePassage(p);
|
||||||
this.onItemClicked.emit(ref);
|
this.onItemClicked.emit(ref);
|
||||||
}
|
}
|
||||||
|
@ -1,48 +1,58 @@
|
|||||||
<ion-item class="title strongs-title" padding (swipe)="close($event)">
|
<ion-item class="title strongs-title" padding (swipe)="close($event)">
|
||||||
<ion-icon name="paper" item-left></ion-icon> <span *ngIf="data !== undefined"><span *ngIf="data.status === -1">Error:</span> {{data.prefix}}{{data.sn}}</span>
|
<ion-icon name="paper" item-left></ion-icon>
|
||||||
<button ion-button icon-only item-end large clear (click)="close()">
|
<span *ngFor="let data of items"> {{ data.prefix }}{{ data.sn }}</span>
|
||||||
<ion-icon name="close-circle"></ion-icon>
|
<button ion-button icon-only item-end large clear (click)="close()">
|
||||||
</button>
|
<ion-icon name="close-circle"></ion-icon>
|
||||||
</ion-item>
|
</button>
|
||||||
<ion-card-content *ngIf="data !== undefined && data.status === 0">
|
</ion-item>
|
||||||
<br>
|
<ion-card-content>
|
||||||
<div class="strongs-def">
|
<div *ngFor="let data of items">
|
||||||
<h2>Strong's Definitition</h2>
|
<br />
|
||||||
<p >
|
<div class="strongs-def">
|
||||||
<b>{{data.def.tr}} <ng-template [ngIf]="data.def.sn != null">({{data.def.sn}})</ng-template></b>
|
<h2>Strong's Definitition: {{ data.prefix }}{{ data.sn }}</h2>
|
||||||
- {{data.def.p}} - {{data.def.lemma}} -
|
<p>
|
||||||
<span *ngFor="let part of data.def.de"><ng-template [ngIf]="part.sn != null"><a (click)="openItem(part.sn)">{{part.sn}}</a></ng-template><ng-template [ngIf]="part.w != null"><span [innerHTML]="part.w"></span></ng-template></span><br>
|
<b>{{ data.def.tr }}</b>
|
||||||
</p>
|
- {{ data.def.p }} - {{ data.def.lemma }} -
|
||||||
<ng-template [ngIf]="data.rmac !== null">
|
<span *ngFor="let part of data.def.de"
|
||||||
<h2>RMAC</h2>
|
><ng-template [ngIf]="part.sn != null"
|
||||||
<b>{{data.rmac.id}}</b>
|
><a (click)="openItem(part.sn)">{{ part.sn }}</a></ng-template
|
||||||
<br>
|
><ng-template [ngIf]="part.w != null"><span [innerHTML]="part.w"></span></ng-template></span
|
||||||
<ul>
|
><br />
|
||||||
<li *ngFor="let c of data.rmac.d">
|
</p>
|
||||||
{{c}}
|
<ng-template [ngIf]="data.rmac !== null">
|
||||||
</li>
|
<h2>RMAC</h2>
|
||||||
</ul>
|
<b>{{ data.rmac.id }}</b>
|
||||||
</ng-template>
|
<br />
|
||||||
</div>
|
<ul>
|
||||||
<div class="strongs-cross" *ngIf="data.crossrefs != null && data.crossrefs.ss != null">
|
<li *ngFor="let c of data.rmac.d">
|
||||||
<h2>Cross References</h2>
|
{{ c }}
|
||||||
Translated as {{data.crossrefs.ss.length}} words
|
</li>
|
||||||
<ion-scroll scrollY="true">
|
</ul>
|
||||||
<dl>
|
</ng-template>
|
||||||
<dd *ngFor="let wrd of data.crossrefs.ss">
|
</div>
|
||||||
<strong>{{wrd.w}}</strong>: <span *ngFor="let p of wrd.rs"><a (click)="openPassage(p.r)">{{makePassage(p.r)}}</a>, </span>
|
<div class="strongs-cross" *ngIf="data.crossrefs != null && data.crossrefs.ss != null">
|
||||||
</dd>
|
<h2>Cross References</h2>
|
||||||
</dl>
|
Translated as {{ data.crossrefs.ss.length }} words
|
||||||
</ion-scroll>
|
<ion-scroll scrollY="true">
|
||||||
</div>
|
<dl>
|
||||||
<br style="clear: both"> <!-- because you load with a promise, the height of the box doesn't get set properly-->
|
<dd *ngFor="let wrd of data.crossrefs.ss">
|
||||||
</ion-card-content>
|
<strong>{{ wrd.w }}, {{ wrd.rs.length }}</strong
|
||||||
<ion-card-content *ngIf="data !== undefined && data.status === -1">
|
>:
|
||||||
<error-message [msg]="data.msg"></error-message>
|
<span *ngFor="let p of wrd.rs"
|
||||||
</ion-card-content>
|
><a (click)="openPassage(p.r)">{{ makePassage(p.r) }}</a
|
||||||
|
>,
|
||||||
<div style="float: right">
|
</span>
|
||||||
<button ion-button icon-center clear (click)="contextMenu()">
|
</dd>
|
||||||
<ion-icon name="more"></ion-icon>
|
</dl>
|
||||||
</button>
|
</ion-scroll>
|
||||||
</div>
|
</div>
|
||||||
|
<br style="clear: both" />
|
||||||
|
<!-- because you load with a promise, the height of the box doesn't get set properly-->
|
||||||
|
</div>
|
||||||
|
</ion-card-content>
|
||||||
|
|
||||||
|
<div style="float: right">
|
||||||
|
<button ion-button icon-center clear (click)="contextMenu()">
|
||||||
|
<ion-icon name="more"></ion-icon>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
@ -1,76 +1,81 @@
|
|||||||
strongs .button {
|
strongs .button {
|
||||||
color: #307e4b;
|
color: #307e4b;
|
||||||
}
|
}
|
||||||
|
|
||||||
.strongs-title {
|
.strongs-title {
|
||||||
background-color:#a7eebe;
|
background-color: #a7eebe;
|
||||||
}
|
}
|
||||||
strongs {
|
strongs {
|
||||||
font-family: var(--card-font);
|
a {
|
||||||
|
user-select: text !important;
|
||||||
ion-scroll {
|
cursor: pointer;
|
||||||
height: 250px;
|
}
|
||||||
}
|
|
||||||
|
font-family: var(--card-font);
|
||||||
.strongs-def {
|
|
||||||
float: left;
|
ion-scroll {
|
||||||
}
|
height: 250px;
|
||||||
|
}
|
||||||
.strongs-cross {
|
|
||||||
float: left;
|
.strongs-def {
|
||||||
}
|
float: left;
|
||||||
|
}
|
||||||
p {
|
|
||||||
padding-left: 1em;
|
.strongs-cross {
|
||||||
}
|
float: left;
|
||||||
|
}
|
||||||
.scroll-content {
|
|
||||||
padding: 0px !important;
|
p {
|
||||||
}
|
padding-left: 1em;
|
||||||
|
}
|
||||||
dd {
|
|
||||||
-webkit-margin-start: 12px;
|
.scroll-content {
|
||||||
line-height: 1.7em;
|
padding: 0px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
::-webkit-scrollbar {
|
dd {
|
||||||
width: 12px;
|
-webkit-margin-start: 12px;
|
||||||
}
|
line-height: 1.7em;
|
||||||
/* Track */
|
}
|
||||||
::-webkit-scrollbar-track {
|
|
||||||
-webkit-box-shadow: rgba(0,0,0,0.05) 12px 12px inset;
|
::-webkit-scrollbar {
|
||||||
}
|
width: 12px;
|
||||||
/* Handle */
|
}
|
||||||
::-webkit-scrollbar-thumb {
|
/* Track */
|
||||||
background: rgba(0,0,0,0.1);
|
::-webkit-scrollbar-track {
|
||||||
}
|
-webkit-box-shadow: rgba(0, 0, 0, 0.05) 12px 12px inset;
|
||||||
}
|
}
|
||||||
|
/* Handle */
|
||||||
@media screen and (max-width: 749px) {
|
::-webkit-scrollbar-thumb {
|
||||||
strongs {
|
background: rgba(0, 0, 0, 0.1);
|
||||||
.strongs-def {
|
}
|
||||||
width: 100%;
|
}
|
||||||
}
|
|
||||||
|
@media screen and (max-width: 749px) {
|
||||||
.strongs-cross {
|
strongs {
|
||||||
width: 100%;
|
.strongs-def {
|
||||||
}
|
width: 100%;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
.strongs-cross {
|
||||||
@media screen and (min-width: 750px) {
|
width: 100%;
|
||||||
strongs {
|
}
|
||||||
ion-scroll {
|
}
|
||||||
height: 260px;
|
}
|
||||||
}
|
|
||||||
|
@media screen and (min-width: 750px) {
|
||||||
.strongs-def {
|
strongs {
|
||||||
width: 50%;
|
ion-scroll {
|
||||||
padding-right: 12px;
|
height: 260px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.strongs-cross {
|
.strongs-def {
|
||||||
width: 50%;
|
width: 50%;
|
||||||
}
|
padding-right: 12px;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
.strongs-cross {
|
||||||
|
width: 50%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -1,19 +1,27 @@
|
|||||||
import { HostListener, EventEmitter, Component, Input, Output, OnInit, AfterViewChecked, ElementRef } from '@angular/core';
|
import {
|
||||||
import { Reference } from '../../libs/Reference';
|
HostListener,
|
||||||
import { OpenData, CardItem } from '../../pages/search/search';
|
EventEmitter,
|
||||||
import { StrongsResult, StrongsService } from '../../services/strongs-service';
|
Component,
|
||||||
import { cardContextMenu } from '../../libs/Common';
|
Input,
|
||||||
import { ProfileService } from '../../services/profile-service';
|
Output,
|
||||||
import { ActionSheetController, AlertController } from 'ionic-angular';
|
OnInit,
|
||||||
import { PagesService } from '../../services/pages-service';
|
AfterViewChecked,
|
||||||
|
ElementRef
|
||||||
|
} from "@angular/core";
|
||||||
|
import { Reference } from "../../libs/Reference";
|
||||||
|
import { OpenData, CardItem } from "../../pages/search/search";
|
||||||
|
import { StrongsResult, StrongsService } from "../../services/strongs-service";
|
||||||
|
import { cardContextMenu } from "../../libs/Common";
|
||||||
|
import { ProfileService } from "../../services/profile-service";
|
||||||
|
import { ActionSheetController, AlertController } from "ionic-angular";
|
||||||
|
import { PagesService } from "../../services/pages-service";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'strongs',
|
selector: "strongs",
|
||||||
templateUrl: 'strongs.html',
|
templateUrl: "strongs.html",
|
||||||
providers: [StrongsService]
|
providers: [StrongsService]
|
||||||
})
|
})
|
||||||
export class Strongs implements AfterViewChecked, OnInit
|
export class Strongs implements AfterViewChecked, OnInit {
|
||||||
{
|
|
||||||
@Output()
|
@Output()
|
||||||
onClose = new EventEmitter<CardItem>();
|
onClose = new EventEmitter<CardItem>();
|
||||||
|
|
||||||
@ -23,81 +31,75 @@ export class Strongs implements AfterViewChecked, OnInit
|
|||||||
@Input()
|
@Input()
|
||||||
cardItem: CardItem;
|
cardItem: CardItem;
|
||||||
|
|
||||||
data: StrongsResult;
|
items: StrongsResult[];
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private _elementRef: ElementRef,
|
private _elementRef: ElementRef,
|
||||||
private _strongsService: StrongsService,
|
private _strongsService: StrongsService,
|
||||||
private _profileService: ProfileService,
|
private _profileService: ProfileService,
|
||||||
private _actionSheet: ActionSheetController,
|
private _actionSheet: ActionSheetController,
|
||||||
private _pagesSvc: PagesService,
|
private _pagesSvc: PagesService,
|
||||||
private _alertCtrl: AlertController)
|
private _alertCtrl: AlertController
|
||||||
{
|
) {}
|
||||||
}
|
|
||||||
|
|
||||||
contextMenu() {
|
contextMenu() {
|
||||||
cardContextMenu(this._profileService, this._actionSheet, this._pagesSvc, this._alertCtrl, this.cardItem);
|
cardContextMenu(this._profileService, this._actionSheet, this._pagesSvc, this._alertCtrl, this.cardItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
@HostListener('window:resize', ['$event'])
|
@HostListener("window:resize", ["$event"])
|
||||||
onResize(evt)
|
onResize(evt) {
|
||||||
{
|
$("strongs ion-scroll").each((i, el) => {
|
||||||
$('strongs ion-scroll').each((i, el) =>
|
let len = $(el).find(".scroll-content .scroll-zoom-wrapper dl span").length;
|
||||||
{
|
len += $(el).find(".scroll-content .scroll-zoom-wrapper dl dd").length;
|
||||||
let len = $(el).find('.scroll-content .scroll-zoom-wrapper dl span').length;
|
|
||||||
len += $(el).find('.scroll-content .scroll-zoom-wrapper dl dd').length;
|
|
||||||
|
|
||||||
if (len < 20)
|
if (len < 20) $(el).css("height", Math.ceil(len / 3) * 30 + 30);
|
||||||
$(el).css('height', Math.ceil(len / 3) * 30 + 30);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
ngAfterViewChecked(): void
|
ngAfterViewChecked(): void {
|
||||||
{
|
|
||||||
this.onResize(null);
|
this.onResize(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit(): void
|
async ngOnInit() {
|
||||||
{
|
this.items = [];
|
||||||
this._strongsService.getResultAsPromise(parseInt(this.cardItem.qry), this.cardItem.dict)
|
const numbers = this.cardItem.qry.split(" ");
|
||||||
.then(data =>
|
for (const sn of numbers) {
|
||||||
{
|
let data = await this._strongsService.getResultAsPromise(parseInt(sn), this.cardItem.dict);
|
||||||
this.data = data;
|
this.items.push(data);
|
||||||
}
|
}
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
close(ev) {
|
close(ev) {
|
||||||
let translate = 'translate3d(110%, 0, 0)';
|
let translate = "translate3d(110%, 0, 0)";
|
||||||
if (ev != null && ev.direction === 2) {
|
if (ev != null && ev.direction === 2) {
|
||||||
translate = 'translate3d(-110%, 0, 0)';
|
translate = "translate3d(-110%, 0, 0)";
|
||||||
}
|
}
|
||||||
let d = 250;
|
let d = 250;
|
||||||
this._elementRef.nativeElement.parentElement.animate({
|
this._elementRef.nativeElement.parentElement.animate(
|
||||||
transform: ['none', translate]
|
{
|
||||||
}, {
|
transform: ["none", translate]
|
||||||
fill: 'forwards',
|
},
|
||||||
|
{
|
||||||
|
fill: "forwards",
|
||||||
duration: d,
|
duration: d,
|
||||||
iterations: 1,
|
iterations: 1,
|
||||||
easing: 'ease-in-out'
|
easing: "ease-in-out"
|
||||||
});
|
}
|
||||||
|
);
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
this.onClose.emit(this.cardItem);
|
this.onClose.emit(this.cardItem);
|
||||||
}, d);
|
}, d);
|
||||||
}
|
}
|
||||||
|
|
||||||
openItem(p: string)
|
openItem(p: string) {
|
||||||
{
|
|
||||||
this.onItemClicked.emit({ card: this.cardItem, qry: p, from_search_bar: false });
|
this.onItemClicked.emit({ card: this.cardItem, qry: p, from_search_bar: false });
|
||||||
}
|
}
|
||||||
|
|
||||||
makePassage(p: string)
|
makePassage(p: string) {
|
||||||
{
|
return Reference.bookName(parseInt(p.split(";")[0])).name + " " + p.split(";")[1] + ":" + p.split(";")[2];
|
||||||
return Reference.bookName(parseInt(p.split(';')[0])).name + ' ' + p.split(';')[1] + ':' + p.split(';')[2];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
openPassage(p: string)
|
openPassage(p: string) {
|
||||||
{
|
|
||||||
const ref = this.makePassage(p);
|
const ref = this.makePassage(p);
|
||||||
this.onItemClicked.emit({ card: this.cardItem, qry: ref, from_search_bar: false });
|
this.onItemClicked.emit({ card: this.cardItem, qry: ref, from_search_bar: false });
|
||||||
}
|
}
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,14 @@
|
|||||||
import { Type, Component, OnInit, ViewChild } from "@angular/core";
|
import { Type, Component, OnInit, ViewChild } from "@angular/core";
|
||||||
import { Loading, LoadingController, ModalController, NavParams, AlertController, MenuController, TextInput, Searchbar } from "ionic-angular";
|
import {
|
||||||
|
Loading,
|
||||||
|
LoadingController,
|
||||||
|
ModalController,
|
||||||
|
NavParams,
|
||||||
|
AlertController,
|
||||||
|
MenuController,
|
||||||
|
TextInput,
|
||||||
|
Searchbar
|
||||||
|
} from "ionic-angular";
|
||||||
import { AutoCompleteComponent } from "ionic2-auto-complete";
|
import { AutoCompleteComponent } from "ionic2-auto-complete";
|
||||||
|
|
||||||
import { StrongsModal } from "../../components/strongs-modal/strongs-modal";
|
import { StrongsModal } from "../../components/strongs-modal/strongs-modal";
|
||||||
@ -297,7 +306,7 @@ export class SearchPage implements OnInit {
|
|||||||
for (let item of lst) {
|
for (let item of lst) {
|
||||||
if (item.type === "Strongs" && this.profileService.profile().strongs_modal && !from_search_bar) {
|
if (item.type === "Strongs" && this.profileService.profile().strongs_modal && !from_search_bar) {
|
||||||
const modal = this.modalCtrl.create(StrongsModal, {
|
const modal = this.modalCtrl.create(StrongsModal, {
|
||||||
sn: parseInt(item.qry),
|
sn: item.qry,
|
||||||
dict: item.dict,
|
dict: item.dict,
|
||||||
onItemClicked: this
|
onItemClicked: this
|
||||||
});
|
});
|
||||||
|
3
DynamicBibleIonic/typings/cordova-typings.d.ts
vendored
Normal file
3
DynamicBibleIonic/typings/cordova-typings.d.ts
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
|
||||||
|
/// <reference path="..\.vscode\typings\cordova-ionic\plugins\keyboard.d.ts"/>
|
||||||
|
/// <reference path="..\.vscode\typings\jquery\jquery.d.ts"/>
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
|||||||
[{"id":"G3201","t":"grk","d":"memphomai {mem'-fom-ahee}","ss":[{"w":"fault, 3","rs":[{"r":"41;7;2"},{"r":"45;9;19"},{"r":"58;8;8"}]}]},{"id":"G3202","t":"grk","d":"mempsimoiros {mem-psim'-oy-ros}","ss":[{"w":"complainers, 1","rs":[{"r":"65;1;16"}]}]},{"id":"G3303","t":"grk","d":"men {men}","ss":[{"w":"And, 1","rs":[{"r":"44;17;30"}]},{"w":"as, 1","rs":[{"r":"45;11;13"}]},{"w":"behind, 1","rs":[{"r":"50;3;13"}]},{"w":"even, 1","rs":[{"r":"52;2;18"}]},{"w":"first, 2","rs":[{"r":"58;7;2"},{"r":"59;3;17"}]},{"w":"he, 1","rs":[{"r":"48;4;23"}]},{"w":"here, 1","rs":[{"r":"58;7;8"}]},{"w":"indeed, 14","rs":[{"r":"40;3;11"},{"r":"41;1;8"},{"r":"42;3;16"},{"r":"42;23;41"},{"r":"44;4;16"},{"r":"44;22;9"},{"r":"45;6;11"},{"r":"45;14;20"},{"r":"46;11;7"},{"r":"47;8;17"},{"r":"50;1;15"},{"r":"50;3;1"},{"r":"51;2;23"},{"r":"60;2;4"}]},{"w":"man, 1","rs":[{"r":"45;14;5"}]},{"w":"one, 9","rs":[{"r":"42;23;33"},{"r":"45;9;21"},{"r":"45;14;2"},{"r":"46;7;7"},{"r":"46;11;21"},{"r":"46;12;8"},{"r":"47;2;16"},{"r":"48;4;24"},{"r":"50;1;16"}]},{"w":"part, 1","rs":[{"r":"44;14;4"}]},{"w":"Partly, 1","rs":[{"r":"58;10;33"}]},{"w":"so, 1","rs":[{"r":"44;16;5"}]},{"w":"some, 7","rs":[{"r":"43;7;12"},{"r":"44;17;32"},{"r":"44;28;24"},{"r":"46;12;28"},{"r":"49;4;11"},{"r":"55;2;20"},{"r":"65;1;22"}]},{"w":"then, 1","rs":[{"r":"41;16;19"}]},{"w":"thing, 1","rs":[{"r":"44;19;32"}]},{"w":"truly, 6","rs":[{"r":"43;20;30"},{"r":"44;3;22"},{"r":"44;5;23"},{"r":"47;12;12"},{"r":"58;7;23"},{"r":"58;11;15"}]},{"w":"verily, 13","rs":[{"r":"44;19;4"},{"r":"44;22;3"},{"r":"44;26;9"},{"r":"45;2;25"},{"r":"46;5;3"},{"r":"46;14;17"},{"r":"58;3;5"},{"r":"58;6;16"},{"r":"58;7;5"},{"r":"58;7;18"},{"r":"58;9;1"},{"r":"58;12;10"},{"r":"60;1;20"}]}]}]
|
[{"id":"G3201","t":"grk","d":"","ss":[{"w":"fault","rs":[{"r":"41;7;2"},{"r":"45;9;19"},{"r":"58;8;8"}]}]},{"id":"G3202","t":"grk","d":"","ss":[{"w":"complainers","rs":[{"r":"65;1;16"}]}]},{"id":"G3303","t":"grk","d":"","ss":[{"w":"a","rs":[{"r":"44;9;7"},{"r":"46;1;23"}]},{"w":"all","rs":[{"r":"46;9;24"}]},{"w":"am","rs":[{"r":"47;10;1"}]},{"w":"an","rs":[{"r":"50;1;28"}]},{"w":"and","rs":[{"r":"44;17;30"}]},{"w":"another","rs":[{"r":"40;22;5"}]},{"w":"are","rs":[{"r":"56;1;15"}]},{"w":"as","rs":[{"r":"44;28;22"},{"r":"45;11;13"}]},{"w":"barnabas","rs":[{"r":"44;14;12"}]},{"w":"behind","rs":[{"r":"50;3;13"}]},{"w":"being","rs":[{"r":"44;13;4"},{"r":"44;15;3"}]},{"w":"concerning","rs":[{"r":"45;11;28"}]},{"w":"desire","rs":[{"r":"45;10;1"}]},{"w":"even","rs":[{"r":"52;2;18"}]},{"w":"every","rs":[{"r":"58;10;11"}]},{"w":"first","rs":[{"r":"58;7;2"},{"r":"59;3;17"}]},{"w":"from","rs":[{"r":"55;4;4"}]},{"w":"have","rs":[{"r":"44;1;1"},{"r":"44;27;21"}]},{"w":"he","rs":[{"r":"44;13;36"},{"r":"44;17;17"},{"r":"44;23;18"},{"r":"48;4;23"},{"r":"58;8;4"},{"r":"60;4;14"}]},{"w":"here","rs":[{"r":"58;7;8"}]},{"w":"i","rs":[{"r":"44;25;11"},{"r":"45;1;8"},{"r":"46;1;12"},{"r":"46;3;4"}]},{"w":"indeed","rs":[{"r":"40;3;11"},{"r":"40;13;32"},{"r":"40;20;23"},{"r":"40;23;27"},{"r":"40;26;41"},{"r":"41;1;8"},{"r":"41;10;39"},{"r":"41;14;21"},{"r":"42;3;16"},{"r":"42;11;48"},{"r":"42;23;41"},{"r":"44;4;16"},{"r":"44;11;16"},{"r":"44;22;9"},{"r":"45;6;11"},{"r":"45;14;20"},{"r":"46;11;7"},{"r":"47;8;17"},{"r":"50;1;15"},{"r":"50;3;1"},{"r":"51;2;23"},{"r":"60;2;4"}]},{"w":"is","rs":[{"r":"45;8;10"},{"r":"46;15;40"}]},{"w":"it","rs":[{"r":"40;26;24"},{"r":"42;13;9"},{"r":"44;18;14"},{"r":"46;9;25"}]},{"w":"kind","rs":[{"r":"46;15;39"}]},{"w":"letters","rs":[{"r":"47;10;10"}]},{"w":"man","rs":[{"r":"45;14;5"}]},{"w":"myself","rs":[{"r":"45;7;25"}]},{"w":"obey","rs":[{"r":"45;2;8"}]},{"w":"of","rs":[{"r":"45;8;17"},{"r":"60;2;14"}]},{"w":"on","rs":[{"r":"45;11;22"}]},{"w":"one","rs":[{"r":"40;21;35"},{"r":"40;22;5"},{"r":"40;25;15"},{"r":"42;23;33"},{"r":"45;9;21"},{"r":"45;14;2"},{"r":"46;7;7"},{"r":"46;11;21"},{"r":"46;12;8"},{"r":"47;2;16"},{"r":"48;4;24"},{"r":"50;1;16"}]},{"w":"outwardly","rs":[{"r":"40;23;28"}]},{"w":"part","rs":[{"r":"44;14;4"}]},{"w":"partly","rs":[{"r":"58;10;33"}]},{"w":"say","rs":[{"r":"40;16;14"}]},{"w":"so","rs":[{"r":"44;16;5"}]},{"w":"some","rs":[{"r":"40;13;4"},{"r":"40;13;8"},{"r":"40;13;23"},{"r":"41;4;4"},{"r":"41;12;5"},{"r":"42;8;5"},{"r":"43;7;12"},{"r":"44;17;32"},{"r":"44;28;24"},{"r":"46;12;28"},{"r":"49;4;11"},{"r":"55;2;20"},{"r":"65;1;22"}]},{"w":"the","rs":[{"r":"40;16;3"},{"r":"44;23;8"},{"r":"45;5;16"},{"r":"60;3;18"}]},{"w":"then","rs":[{"r":"41;16;19"},{"r":"44;23;22"}]},{"w":"therefore","rs":[{"r":"43;16;22"}]},{"w":"they","rs":[{"r":"44;8;25"},{"r":"65;1;10"}]},{"w":"thing","rs":[{"r":"44;19;32"}]},{"w":"truly","rs":[{"r":"40;9;37"},{"r":"40;17;11"},{"r":"41;14;38"},{"r":"42;10;2"},{"r":"42;22;22"},{"r":"43;20;30"},{"r":"44;1;5"},{"r":"44;3;22"},{"r":"44;5;23"},{"r":"47;12;12"},{"r":"58;7;23"},{"r":"58;11;15"}]},{"w":"verily","rs":[{"r":"41;9;12"},{"r":"44;19;4"},{"r":"44;22;3"},{"r":"44;26;9"},{"r":"45;2;25"},{"r":"46;5;3"},{"r":"46;14;17"},{"r":"58;3;5"},{"r":"58;6;16"},{"r":"58;7;5"},{"r":"58;7;18"},{"r":"58;9;1"},{"r":"58;12;10"},{"r":"60;1;20"}]},{"w":"was","rs":[{"r":"44;12;5"}]},{"w":"wedding","rs":[{"r":"40;22;8"}]},{"w":"were","rs":[{"r":"44;15;30"}]},{"w":"when","rs":[{"r":"46;11;18"},{"r":"48;4;8"}]},{"w":"which","rs":[{"r":"44;21;39"}]},{"w":"who","rs":[{"r":"45;2;7"}]},{"w":"ye","rs":[{"r":"46;6;4"}]}]}]
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user