├── .editorconfig
├── .gitignore
├── LICENSE
├── README.md
├── config.xml
├── ionic.config.json
├── package-lock.json
├── package.json
├── readme
├── action1.png
├── action2.png
├── action3.png
├── history.png
├── home.png
├── home2.png
├── list.png
├── logo.png
├── push.png
├── splashscreen.png
├── 스크린샷 2018-11-09 오전 12.50.59.png
└── 스크린샷 2018-11-09 오전 12.51.02.png
├── resources
├── README.md
├── android
│ ├── icon
│ │ ├── drawable-hdpi-icon.png
│ │ ├── drawable-ldpi-icon.png
│ │ ├── drawable-mdpi-icon.png
│ │ ├── drawable-xhdpi-icon.png
│ │ ├── drawable-xxhdpi-icon.png
│ │ └── drawable-xxxhdpi-icon.png
│ └── splash
│ │ ├── drawable-land-hdpi-screen.png
│ │ ├── drawable-land-ldpi-screen.png
│ │ ├── drawable-land-mdpi-screen.png
│ │ ├── drawable-land-xhdpi-screen.png
│ │ ├── drawable-land-xxhdpi-screen.png
│ │ ├── drawable-land-xxxhdpi-screen.png
│ │ ├── drawable-port-hdpi-screen.png
│ │ ├── drawable-port-ldpi-screen.png
│ │ ├── drawable-port-mdpi-screen.png
│ │ ├── drawable-port-xhdpi-screen.png
│ │ ├── drawable-port-xxhdpi-screen.png
│ │ └── drawable-port-xxxhdpi-screen.png
├── icon.png
├── ios
│ ├── icon
│ │ ├── icon-1024.png
│ │ ├── icon-40.png
│ │ ├── icon-40@2x.png
│ │ ├── icon-40@3x.png
│ │ ├── icon-50.png
│ │ ├── icon-50@2x.png
│ │ ├── icon-60.png
│ │ ├── icon-60@2x.png
│ │ ├── icon-60@3x.png
│ │ ├── icon-72.png
│ │ ├── icon-72@2x.png
│ │ ├── icon-76.png
│ │ ├── icon-76@2x.png
│ │ ├── icon-83.5@2x.png
│ │ ├── icon-small.png
│ │ ├── icon-small@2x.png
│ │ ├── icon-small@3x.png
│ │ ├── icon.png
│ │ └── icon@2x.png
│ └── splash
│ │ ├── Default-568h@2x~iphone.png
│ │ ├── Default-667h.png
│ │ ├── Default-736h.png
│ │ ├── Default-Landscape-736h.png
│ │ ├── Default-Landscape@2x~ipad.png
│ │ ├── Default-Landscape@~ipadpro.png
│ │ ├── Default-Landscape~ipad.png
│ │ ├── Default-Portrait@2x~ipad.png
│ │ ├── Default-Portrait@~ipadpro.png
│ │ ├── Default-Portrait~ipad.png
│ │ ├── Default@2x~iphone.png
│ │ ├── Default@2x~universal~anyany.png
│ │ └── Default~iphone.png
└── splash.png
├── src
├── app
│ ├── app.component.ts
│ ├── app.html
│ ├── app.module.ts
│ ├── app.scss
│ └── main.ts
├── assets
│ ├── icon
│ │ ├── 5@2x.png
│ │ ├── Group 3.png
│ │ ├── Group 3@1x.png
│ │ ├── Group 3@3x.png
│ │ ├── bottomBar.png
│ │ ├── favicon.ico
│ │ ├── giphy.gif
│ │ ├── group5.png
│ │ ├── group5@2x.png
│ │ ├── group5@3x.png
│ │ ├── icCancel.png
│ │ ├── icGps.png
│ │ ├── icGps@2x.png
│ │ ├── icGps@3x.png
│ │ ├── icMarker.png
│ │ ├── icMarker@2x.png
│ │ ├── icMarker@3x.png
│ │ ├── ic_GPS2.png
│ │ ├── ic_GPS2@2x.png
│ │ ├── ic_eq_history.png
│ │ ├── ic_eq_history@2x.png
│ │ ├── ic_search.png
│ │ ├── ic_survival-book.png
│ │ ├── logo.png
│ │ ├── logo@2x.png
│ │ └── logo@3x.png
│ ├── imgs
│ │ ├── currentMarkerImage.png
│ │ ├── group.png
│ │ ├── guide10.png
│ │ ├── guide10@2x.png
│ │ ├── guide10@3x.png
│ │ ├── guide11.png
│ │ ├── guide11@2x.png
│ │ ├── guide11@3x.png
│ │ ├── guide9.png
│ │ ├── guide9@2x.png
│ │ ├── guide9@3x.png
│ │ ├── icMarker.png
│ │ ├── logo.png
│ │ └── shelterMarkerImage.png
│ └── shelter.json
├── components
│ ├── components.module.ts
│ └── google-map
│ │ ├── google-map.html
│ │ ├── google-map.scss
│ │ └── google-map.ts
├── index.html
├── key
│ └── firebaseKey.ts
├── manifest.json
├── pages
│ ├── eq-behavior
│ │ ├── eq-behavior.html
│ │ ├── eq-behavior.module.ts
│ │ ├── eq-behavior.scss
│ │ └── eq-behavior.ts
│ ├── eq-detail
│ │ ├── eq-detail.html
│ │ ├── eq-detail.module.ts
│ │ ├── eq-detail.scss
│ │ └── eq-detail.ts
│ ├── eq-history
│ │ ├── eq-history.html
│ │ ├── eq-history.module.ts
│ │ ├── eq-history.scss
│ │ └── eq-history.ts
│ ├── find-shelter
│ │ ├── find-shelter.html
│ │ ├── find-shelter.module.ts
│ │ ├── find-shelter.scss
│ │ └── find-shelter.ts
│ ├── home
│ │ ├── home.html
│ │ ├── home.scss
│ │ ├── home.ts
│ │ └── json-typings.d.ts
│ ├── list
│ │ ├── list.html
│ │ ├── list.module.ts
│ │ ├── list.scss
│ │ └── list.ts
│ ├── setting
│ │ ├── setting.html
│ │ ├── setting.module.ts
│ │ ├── setting.scss
│ │ └── setting.ts
│ └── tabs
│ │ ├── tabs.html
│ │ └── tabs.ts
├── pipes
│ ├── date
│ │ └── date.ts
│ ├── distance
│ │ └── distance.ts
│ └── pipes.module.ts
├── providers
│ └── alert
│ │ └── alert.ts
├── service-worker.js
└── theme
│ └── variables.scss
├── tsconfig.json
└── tslint.json
/.editorconfig:
--------------------------------------------------------------------------------
1 | # EditorConfig helps developers define and maintain consistent coding styles between different editors and IDEs
2 | # editorconfig.org
3 |
4 | root = true
5 |
6 | [*]
7 | indent_style = space
8 | indent_size = 2
9 |
10 | # We recommend you to keep these unchanged
11 | end_of_line = lf
12 | charset = utf-8
13 | trim_trailing_whitespace = true
14 | insert_final_newline = true
15 |
16 | [*.md]
17 | trim_trailing_whitespace = false
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Specifies intentionally untracked files to ignore when using Git
2 | # http://git-scm.com/docs/gitignore
3 |
4 | *~
5 | *.sw[mnpcod]
6 | *.log
7 | *.tmp
8 | *.tmp.*
9 | log.txt
10 | *.sublime-project
11 | *.sublime-workspace
12 | .vscode/
13 | npm-debug.log*
14 |
15 | .idea/
16 | .sourcemaps/
17 | .sass-cache/
18 | .tmp/
19 | .versions/
20 | coverage/
21 | dist/
22 | node_modules/
23 | tmp/
24 | temp/
25 | hooks/
26 | platforms/
27 | plugins/
28 | plugins/android.json
29 | plugins/ios.json
30 | www/
31 | $RECYCLE.BIN/
32 |
33 | .DS_Store
34 | Thumbs.db
35 | UserInterfaceState.xcuserstate
36 |
37 | serviceAccountKey.json
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2018 esquake
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | # ESQUAKE: 지진에서 탈출하라!!
6 | ## Introduction
7 | #### 🏃♀️ Escape+Earthquake : 지진에서 탈출하라! 🏃♂️
8 |
9 |
10 | ESQUAKE는 지진 발생 알림과 동시에 가장 가까운 대피소를 알려주는 어플리케이션입니다.
11 |
12 | 강진이 발생했을 경우, 아무것도 생각이 나지 않는 혼란 속에 빠지게 됩니다.
13 |
14 | 만약 혼자 낯선 곳에서 강한 지진을 겪게 된다면 의지할 곳은 스마트폰 밖에 없겠죠.
15 |
16 | 그러나, 공포에 떨고 두려움이 가득한 상황 속에서 침착하게 주변 대피소를 찾는 것은 사실상 불가능에 가깝습니다.
17 |
18 | 그래서 저희 어플리케이션은 지진 발생 시 푸쉬 알림을 제공함과 동시에, **가장 가까운 대피소**를 바로 알려줍니다.
19 |
20 | ## Overview
21 | ### 메인화면
22 | > 앱을 켜자마자 GPS 주소 혹은 입력된 주소를 기준으로 가까운 대피소를 하단 카드 형식으로 볼 수 있습니다.
23 |
24 |
25 |
26 |
27 |
28 | ### 지진 푸시를 통해 들어왔을 경우
29 | > 현재 온 지진에 대한 정보와 함께 GPS 주소 혹은 입력 주소 기준 가까운 대피소를 하단 카드 형식으로 볼 수 있습니다.
30 |
31 |
32 |
33 |
34 |
35 | ### 대피소 리스트
36 | > 하단 카드를 누르면 총 인원, 전화번호를 포함한 대피소의 더 자세한 정보를 리스트 형식으로 볼 수 있습니다.
37 |
38 |
39 |
40 |
41 |
42 | ### 지진행동지침
43 | > 앱 내 데이터베이스에 저장된 지진행동지침 핸드북을 볼 수 있습니다. 인터넷 연결이 안되는 상황에도 열람이 가능합니다.
44 |
45 |
46 |
47 |
48 |
49 |
50 | ## License
51 | Copyright (C) 2018-present, OpenHackEsquake
52 |
53 | ```
54 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
55 |
56 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
57 |
58 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
59 |
--------------------------------------------------------------------------------
/config.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | ESQUAKE
4 | The project from openHack 2018
5 | Esquake Team
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
--------------------------------------------------------------------------------
/ionic.config.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "google",
3 | "integrations": {
4 | "cordova": {}
5 | },
6 | "type": "ionic-angular"
7 | }
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "esquake",
3 | "version": "0.0.1",
4 | "author": "Esquake team",
5 | "homepage": "https://github.com/esquake/esquake",
6 | "private": true,
7 | "scripts": {
8 | "start": "ionic-app-scripts serve",
9 | "clean": "ionic-app-scripts clean",
10 | "build": "ionic-app-scripts build",
11 | "lint": "ionic-app-scripts lint"
12 | },
13 | "dependencies": {
14 | "@angular/animations": "5.2.11",
15 | "@angular/common": "5.2.11",
16 | "@angular/compiler": "5.2.11",
17 | "@angular/compiler-cli": "5.2.11",
18 | "@angular/core": "5.2.11",
19 | "@angular/forms": "5.2.11",
20 | "@angular/http": "5.2.11",
21 | "@angular/platform-browser": "5.2.11",
22 | "@angular/platform-browser-dynamic": "5.2.11",
23 | "@ionic-native/core": "~4.15.0",
24 | "@ionic-native/onesignal": "^4.17.0",
25 | "@ionic-native/splash-screen": "~4.15.0",
26 | "@ionic-native/status-bar": "~4.15.0",
27 | "@types/google-maps": "^3.2.0",
28 | "@ionic-native/geolocation": "^4.17.0",
29 | "@ionic-native/native-geocoder": "^4.17.0",
30 | "@ionic/storage": "2.2.0",
31 | "angularfire2": "5.0.0-rc.4",
32 | "cordova-android": "^7.1.1",
33 | "cordova-plugin-device": "^2.0.2",
34 | "cordova-plugin-ionic-keyboard": "^2.1.3",
35 | "cordova-plugin-ionic-webview": "^2.2.0",
36 | "cordova-plugin-splashscreen": "^5.0.2",
37 | "cordova-plugin-statusbar": "^2.4.2",
38 | "cordova-plugin-whitelist": "^1.3.3",
39 | "cordova-plugin-geolocation": "^4.0.1",
40 | "cordova-plugin-nativegeocoder": "^3.1.2",
41 | "firebase": "^4.9.0",
42 | "ionic-angular": "3.9.2",
43 | "ionicons": "3.0.0",
44 | "onesignal-cordova-plugin": "^2.4.5",
45 | "rxjs": "5.5.11",
46 | "sw-toolbox": "3.6.0",
47 | "zone.js": "0.8.26"
48 | },
49 | "devDependencies": {
50 | "@ionic/app-scripts": "3.2.0",
51 | "@ionic/lab": "1.0.13",
52 | "typescript": "~2.6.2"
53 | },
54 | "description": "esquake, from openhack project",
55 | "cordova": {
56 | "plugins": {
57 | "onesignal-cordova-plugin": {},
58 | "cordova-plugin-whitelist": {},
59 | "cordova-plugin-statusbar": {},
60 | "cordova-plugin-device": {},
61 | "cordova-plugin-splashscreen": {},
62 | "cordova-plugin-ionic-webview": {
63 | "ANDROID_SUPPORT_ANNOTATIONS_VERSION": "27.+"
64 | },
65 | "cordova-plugin-ionic-keyboard": {},
66 | "cordova-plugin-nativegeocoder": {},
67 | "cordova-plugin-geolocation": {
68 | "GEOLOCATION_USAGE_DESCRIPTION": "To locate you"
69 | }
70 | },
71 | "platforms": [
72 | "android"
73 | ]
74 | }
75 | }
76 |
--------------------------------------------------------------------------------
/readme/action1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/readme/action1.png
--------------------------------------------------------------------------------
/readme/action2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/readme/action2.png
--------------------------------------------------------------------------------
/readme/action3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/readme/action3.png
--------------------------------------------------------------------------------
/readme/history.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/readme/history.png
--------------------------------------------------------------------------------
/readme/home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/readme/home.png
--------------------------------------------------------------------------------
/readme/home2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/readme/home2.png
--------------------------------------------------------------------------------
/readme/list.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/readme/list.png
--------------------------------------------------------------------------------
/readme/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/readme/logo.png
--------------------------------------------------------------------------------
/readme/push.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/readme/push.png
--------------------------------------------------------------------------------
/readme/splashscreen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/readme/splashscreen.png
--------------------------------------------------------------------------------
/readme/스크린샷 2018-11-09 오전 12.50.59.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/readme/스크린샷 2018-11-09 오전 12.50.59.png
--------------------------------------------------------------------------------
/readme/스크린샷 2018-11-09 오전 12.51.02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/readme/스크린샷 2018-11-09 오전 12.51.02.png
--------------------------------------------------------------------------------
/resources/README.md:
--------------------------------------------------------------------------------
1 | These are Cordova resources. You can replace icon.png and splash.png and run
2 | `ionic cordova resources` to generate custom icons and splash screens for your
3 | app. See `ionic cordova resources --help` for details.
4 |
5 | Cordova reference documentation:
6 |
7 | - Icons: https://cordova.apache.org/docs/en/latest/config_ref/images.html
8 | - Splash Screens: https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-splashscreen/
9 |
--------------------------------------------------------------------------------
/resources/android/icon/drawable-hdpi-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/android/icon/drawable-hdpi-icon.png
--------------------------------------------------------------------------------
/resources/android/icon/drawable-ldpi-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/android/icon/drawable-ldpi-icon.png
--------------------------------------------------------------------------------
/resources/android/icon/drawable-mdpi-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/android/icon/drawable-mdpi-icon.png
--------------------------------------------------------------------------------
/resources/android/icon/drawable-xhdpi-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/android/icon/drawable-xhdpi-icon.png
--------------------------------------------------------------------------------
/resources/android/icon/drawable-xxhdpi-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/android/icon/drawable-xxhdpi-icon.png
--------------------------------------------------------------------------------
/resources/android/icon/drawable-xxxhdpi-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/android/icon/drawable-xxxhdpi-icon.png
--------------------------------------------------------------------------------
/resources/android/splash/drawable-land-hdpi-screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/android/splash/drawable-land-hdpi-screen.png
--------------------------------------------------------------------------------
/resources/android/splash/drawable-land-ldpi-screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/android/splash/drawable-land-ldpi-screen.png
--------------------------------------------------------------------------------
/resources/android/splash/drawable-land-mdpi-screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/android/splash/drawable-land-mdpi-screen.png
--------------------------------------------------------------------------------
/resources/android/splash/drawable-land-xhdpi-screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/android/splash/drawable-land-xhdpi-screen.png
--------------------------------------------------------------------------------
/resources/android/splash/drawable-land-xxhdpi-screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/android/splash/drawable-land-xxhdpi-screen.png
--------------------------------------------------------------------------------
/resources/android/splash/drawable-land-xxxhdpi-screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/android/splash/drawable-land-xxxhdpi-screen.png
--------------------------------------------------------------------------------
/resources/android/splash/drawable-port-hdpi-screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/android/splash/drawable-port-hdpi-screen.png
--------------------------------------------------------------------------------
/resources/android/splash/drawable-port-ldpi-screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/android/splash/drawable-port-ldpi-screen.png
--------------------------------------------------------------------------------
/resources/android/splash/drawable-port-mdpi-screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/android/splash/drawable-port-mdpi-screen.png
--------------------------------------------------------------------------------
/resources/android/splash/drawable-port-xhdpi-screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/android/splash/drawable-port-xhdpi-screen.png
--------------------------------------------------------------------------------
/resources/android/splash/drawable-port-xxhdpi-screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/android/splash/drawable-port-xxhdpi-screen.png
--------------------------------------------------------------------------------
/resources/android/splash/drawable-port-xxxhdpi-screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/android/splash/drawable-port-xxxhdpi-screen.png
--------------------------------------------------------------------------------
/resources/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/icon.png
--------------------------------------------------------------------------------
/resources/ios/icon/icon-1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/ios/icon/icon-1024.png
--------------------------------------------------------------------------------
/resources/ios/icon/icon-40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/ios/icon/icon-40.png
--------------------------------------------------------------------------------
/resources/ios/icon/icon-40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/ios/icon/icon-40@2x.png
--------------------------------------------------------------------------------
/resources/ios/icon/icon-40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/ios/icon/icon-40@3x.png
--------------------------------------------------------------------------------
/resources/ios/icon/icon-50.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/ios/icon/icon-50.png
--------------------------------------------------------------------------------
/resources/ios/icon/icon-50@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/ios/icon/icon-50@2x.png
--------------------------------------------------------------------------------
/resources/ios/icon/icon-60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/ios/icon/icon-60.png
--------------------------------------------------------------------------------
/resources/ios/icon/icon-60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/ios/icon/icon-60@2x.png
--------------------------------------------------------------------------------
/resources/ios/icon/icon-60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/ios/icon/icon-60@3x.png
--------------------------------------------------------------------------------
/resources/ios/icon/icon-72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/ios/icon/icon-72.png
--------------------------------------------------------------------------------
/resources/ios/icon/icon-72@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/ios/icon/icon-72@2x.png
--------------------------------------------------------------------------------
/resources/ios/icon/icon-76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/ios/icon/icon-76.png
--------------------------------------------------------------------------------
/resources/ios/icon/icon-76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/ios/icon/icon-76@2x.png
--------------------------------------------------------------------------------
/resources/ios/icon/icon-83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/ios/icon/icon-83.5@2x.png
--------------------------------------------------------------------------------
/resources/ios/icon/icon-small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/ios/icon/icon-small.png
--------------------------------------------------------------------------------
/resources/ios/icon/icon-small@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/ios/icon/icon-small@2x.png
--------------------------------------------------------------------------------
/resources/ios/icon/icon-small@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/ios/icon/icon-small@3x.png
--------------------------------------------------------------------------------
/resources/ios/icon/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/ios/icon/icon.png
--------------------------------------------------------------------------------
/resources/ios/icon/icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/ios/icon/icon@2x.png
--------------------------------------------------------------------------------
/resources/ios/splash/Default-568h@2x~iphone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/ios/splash/Default-568h@2x~iphone.png
--------------------------------------------------------------------------------
/resources/ios/splash/Default-667h.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/ios/splash/Default-667h.png
--------------------------------------------------------------------------------
/resources/ios/splash/Default-736h.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/ios/splash/Default-736h.png
--------------------------------------------------------------------------------
/resources/ios/splash/Default-Landscape-736h.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/ios/splash/Default-Landscape-736h.png
--------------------------------------------------------------------------------
/resources/ios/splash/Default-Landscape@2x~ipad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/ios/splash/Default-Landscape@2x~ipad.png
--------------------------------------------------------------------------------
/resources/ios/splash/Default-Landscape@~ipadpro.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/ios/splash/Default-Landscape@~ipadpro.png
--------------------------------------------------------------------------------
/resources/ios/splash/Default-Landscape~ipad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/ios/splash/Default-Landscape~ipad.png
--------------------------------------------------------------------------------
/resources/ios/splash/Default-Portrait@2x~ipad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/ios/splash/Default-Portrait@2x~ipad.png
--------------------------------------------------------------------------------
/resources/ios/splash/Default-Portrait@~ipadpro.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/ios/splash/Default-Portrait@~ipadpro.png
--------------------------------------------------------------------------------
/resources/ios/splash/Default-Portrait~ipad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/ios/splash/Default-Portrait~ipad.png
--------------------------------------------------------------------------------
/resources/ios/splash/Default@2x~iphone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/ios/splash/Default@2x~iphone.png
--------------------------------------------------------------------------------
/resources/ios/splash/Default@2x~universal~anyany.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/ios/splash/Default@2x~universal~anyany.png
--------------------------------------------------------------------------------
/resources/ios/splash/Default~iphone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/ios/splash/Default~iphone.png
--------------------------------------------------------------------------------
/resources/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/resources/splash.png
--------------------------------------------------------------------------------
/src/app/app.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { Platform } from 'ionic-angular';
3 | import { StatusBar } from '@ionic-native/status-bar';
4 | import { SplashScreen } from '@ionic-native/splash-screen';
5 |
6 | import { TabsPage } from '../pages/tabs/tabs';
7 |
8 | import { OneSignal as OneSignalNative } from '@ionic-native/onesignal';
9 |
10 | @Component({
11 | templateUrl: 'app.html'
12 | })
13 | export class MyApp {
14 | rootPage:any = TabsPage;
15 |
16 | constructor(platform: Platform, statusBar: StatusBar, splashScreen: SplashScreen,
17 | private oneSignalNative: OneSignalNative) {
18 | platform.ready().then(() => {
19 | // Okay, so the platform is ready and our plugins are available.
20 | // Here you can do any higher level native things you might need.
21 | statusBar.styleDefault();
22 | splashScreen.hide();
23 |
24 | if (platform.is('cordova')) {
25 | if(!platform.is('ios')) statusBar.overlaysWebView(false);
26 | this.oneSignalNative.startInit('21519cdf-0edf-4a14-a8e8-03d3fed6116b', '461474507874');
27 | this.oneSignalNative.enableVibrate(true);
28 | this.oneSignalNative.enableSound(true);
29 | this.oneSignalNative.inFocusDisplaying(this.oneSignalNative.OSInFocusDisplayOption.None);
30 | this.oneSignalNative.endInit();
31 | }
32 | });
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/app/app.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/app/app.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule, ErrorHandler } from '@angular/core';
2 | import { BrowserModule } from '@angular/platform-browser';
3 | import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular';
4 | import { HttpModule } from '@angular/http';
5 | import { MyApp } from './app.component';
6 |
7 | // Pages
8 | import { HomePage } from '../pages/home/home';
9 | import { TabsPage } from '../pages/tabs/tabs';
10 | import { EqBehaviorPage } from '../pages/eq-behavior/eq-behavior';
11 | import { EqHistoryPage } from '../pages/eq-history/eq-history';
12 | import { SettingPage } from '../pages/setting/setting';
13 | import { ListPage } from '../pages/list/list';
14 | import { EqDetailPage } from '../pages/eq-detail/eq-detail';
15 | import { FindShelterPage } from '../pages/find-shelter/find-shelter';
16 |
17 | import { StatusBar } from '@ionic-native/status-bar';
18 | import { SplashScreen } from '@ionic-native/splash-screen';
19 | import { OneSignal } from '@ionic-native/onesignal';
20 |
21 | import { AngularFireModule } from 'angularfire2';
22 | import { AngularFirestoreModule } from 'angularfire2/firestore';
23 | import { firebaseKey } from '../key/firebaseKey';
24 |
25 | import { GoogleMapComponent } from '../components/google-map/google-map'
26 | import { Geolocation } from '@ionic-native/geolocation';
27 | import { NativeGeocoder } from '@ionic-native/native-geocoder';
28 |
29 | import { PipesModule } from '../pipes/pipes.module';
30 | import { AlertProvider } from '../providers/alert/alert';
31 |
32 | export const firebaseConfig = {
33 | apiKey: firebaseKey['apiKey'],
34 | authDomain: firebaseKey['authDomain'],
35 | databaseURL: firebaseKey['databaseURL'],
36 | projectId: firebaseKey['projectId'],
37 | storageBucket: firebaseKey['storageBucket'],
38 | messagingSenderId: firebaseKey['messagingSenderId']
39 | };
40 |
41 | @NgModule({
42 | declarations: [
43 | MyApp,
44 | HomePage,
45 | TabsPage,
46 | EqBehaviorPage,
47 | EqHistoryPage,
48 | EqDetailPage,
49 | FindShelterPage,
50 | SettingPage,
51 | ListPage,
52 | GoogleMapComponent
53 | ],
54 | imports: [
55 | BrowserModule,
56 | IonicModule.forRoot(MyApp, {
57 | iconMode: 'md',
58 | menuType: 'overlay',
59 | statusbarPadding: false,
60 | }),
61 | AngularFireModule.initializeApp(firebaseConfig),
62 | AngularFirestoreModule,
63 | PipesModule,
64 | HttpModule
65 | ],
66 | bootstrap: [IonicApp],
67 | entryComponents: [
68 | MyApp,
69 | HomePage,
70 | TabsPage,
71 | EqBehaviorPage,
72 | EqHistoryPage,
73 | EqDetailPage,
74 | FindShelterPage,
75 | SettingPage,
76 | ListPage,
77 | GoogleMapComponent
78 | ],
79 | providers: [
80 | StatusBar,
81 | SplashScreen,
82 | {provide: ErrorHandler, useClass: IonicErrorHandler},
83 | OneSignal,
84 | NativeGeocoder,
85 | Geolocation,
86 | AlertProvider
87 | ]
88 | })
89 | export class AppModule {}
90 |
--------------------------------------------------------------------------------
/src/app/app.scss:
--------------------------------------------------------------------------------
1 | // http://ionicframework.com/docs/theming/
2 |
3 |
4 | // App Global Sass
5 | // --------------------------------------------------
6 | // Put style rules here that you want to apply globally. These
7 | // styles are for the entire app and not just one component.
8 | // Additionally, this file can be also used as an entry point
9 | // to import other Sass files to be included in the output CSS.
10 | //
11 | // Shared Sass variables, which can be used to adjust Ionic's
12 | // default Sass variables, belong in "theme/variables.scss".
13 | //
14 | // To declare rules for a specific mode, create a child rule
15 | // for the .md, .ios, or .wp mode classes. The mode class is
16 | // automatically applied to the element in the app.
17 |
--------------------------------------------------------------------------------
/src/app/main.ts:
--------------------------------------------------------------------------------
1 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
2 |
3 | import { AppModule } from './app.module';
4 |
5 | platformBrowserDynamic().bootstrapModule(AppModule);
6 |
--------------------------------------------------------------------------------
/src/assets/icon/5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/icon/5@2x.png
--------------------------------------------------------------------------------
/src/assets/icon/Group 3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/icon/Group 3.png
--------------------------------------------------------------------------------
/src/assets/icon/Group 3@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/icon/Group 3@1x.png
--------------------------------------------------------------------------------
/src/assets/icon/Group 3@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/icon/Group 3@3x.png
--------------------------------------------------------------------------------
/src/assets/icon/bottomBar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/icon/bottomBar.png
--------------------------------------------------------------------------------
/src/assets/icon/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/icon/favicon.ico
--------------------------------------------------------------------------------
/src/assets/icon/giphy.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/icon/giphy.gif
--------------------------------------------------------------------------------
/src/assets/icon/group5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/icon/group5.png
--------------------------------------------------------------------------------
/src/assets/icon/group5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/icon/group5@2x.png
--------------------------------------------------------------------------------
/src/assets/icon/group5@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/icon/group5@3x.png
--------------------------------------------------------------------------------
/src/assets/icon/icCancel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/icon/icCancel.png
--------------------------------------------------------------------------------
/src/assets/icon/icGps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/icon/icGps.png
--------------------------------------------------------------------------------
/src/assets/icon/icGps@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/icon/icGps@2x.png
--------------------------------------------------------------------------------
/src/assets/icon/icGps@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/icon/icGps@3x.png
--------------------------------------------------------------------------------
/src/assets/icon/icMarker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/icon/icMarker.png
--------------------------------------------------------------------------------
/src/assets/icon/icMarker@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/icon/icMarker@2x.png
--------------------------------------------------------------------------------
/src/assets/icon/icMarker@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/icon/icMarker@3x.png
--------------------------------------------------------------------------------
/src/assets/icon/ic_GPS2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/icon/ic_GPS2.png
--------------------------------------------------------------------------------
/src/assets/icon/ic_GPS2@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/icon/ic_GPS2@2x.png
--------------------------------------------------------------------------------
/src/assets/icon/ic_eq_history.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/icon/ic_eq_history.png
--------------------------------------------------------------------------------
/src/assets/icon/ic_eq_history@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/icon/ic_eq_history@2x.png
--------------------------------------------------------------------------------
/src/assets/icon/ic_search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/icon/ic_search.png
--------------------------------------------------------------------------------
/src/assets/icon/ic_survival-book.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/icon/ic_survival-book.png
--------------------------------------------------------------------------------
/src/assets/icon/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/icon/logo.png
--------------------------------------------------------------------------------
/src/assets/icon/logo@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/icon/logo@2x.png
--------------------------------------------------------------------------------
/src/assets/icon/logo@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/icon/logo@3x.png
--------------------------------------------------------------------------------
/src/assets/imgs/currentMarkerImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/imgs/currentMarkerImage.png
--------------------------------------------------------------------------------
/src/assets/imgs/group.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/imgs/group.png
--------------------------------------------------------------------------------
/src/assets/imgs/guide10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/imgs/guide10.png
--------------------------------------------------------------------------------
/src/assets/imgs/guide10@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/imgs/guide10@2x.png
--------------------------------------------------------------------------------
/src/assets/imgs/guide10@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/imgs/guide10@3x.png
--------------------------------------------------------------------------------
/src/assets/imgs/guide11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/imgs/guide11.png
--------------------------------------------------------------------------------
/src/assets/imgs/guide11@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/imgs/guide11@2x.png
--------------------------------------------------------------------------------
/src/assets/imgs/guide11@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/imgs/guide11@3x.png
--------------------------------------------------------------------------------
/src/assets/imgs/guide9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/imgs/guide9.png
--------------------------------------------------------------------------------
/src/assets/imgs/guide9@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/imgs/guide9@2x.png
--------------------------------------------------------------------------------
/src/assets/imgs/guide9@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/imgs/guide9@3x.png
--------------------------------------------------------------------------------
/src/assets/imgs/icMarker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/imgs/icMarker.png
--------------------------------------------------------------------------------
/src/assets/imgs/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/imgs/logo.png
--------------------------------------------------------------------------------
/src/assets/imgs/shelterMarkerImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Esquake/esquake-client/bdafb3d8ade20163f532b306f0da37cbbdf465aa/src/assets/imgs/shelterMarkerImage.png
--------------------------------------------------------------------------------
/src/components/components.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { GoogleMapComponent } from './google-map/google-map';
3 | @NgModule({
4 | declarations: [GoogleMapComponent],
5 | imports: [],
6 | exports: [GoogleMapComponent]
7 | })
8 | export class ComponentsModule {}
9 |
--------------------------------------------------------------------------------
/src/components/google-map/google-map.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/components/google-map/google-map.scss:
--------------------------------------------------------------------------------
1 | google-map {
2 | scroll-content{
3 | padding: 0px !important;
4 | }
5 | #map {
6 | height: 100%;
7 | width: 100%;
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/components/google-map/google-map.ts:
--------------------------------------------------------------------------------
1 | import { Component, ViewChild } from '@angular/core';
2 | import { Geolocation } from '@ionic-native/geolocation';
3 | import { Platform } from 'ionic-angular';
4 | import * as products from "../../assets/shelter.json";
5 | import { NativeGeocoder, NativeGeocoderReverseResult, NativeGeocoderForwardResult, NativeGeocoderOptions } from '@ionic-native/native-geocoder';
6 |
7 | @Component({
8 | selector: 'google-map',
9 | templateUrl: 'google-map.html'
10 | })
11 |
12 | export class GoogleMapComponent {
13 |
14 | @ViewChild("map") mapElement;
15 | map: any;
16 | coords: any;
17 | address: any;
18 | private shelter: any;
19 | constructor(private geolocation: Geolocation,
20 | private platform: Platform,
21 | private nativeGeocoder: NativeGeocoder) {
22 | this.coords = {
23 | lat: null,
24 | lng: null
25 | }
26 | }
27 |
28 | search() {
29 | let options: NativeGeocoderOptions = {
30 | useLocale: true,
31 | maxResults: 5
32 | };
33 |
34 | this.nativeGeocoder.forwardGeocode(this.address);
35 |
36 | }
37 |
38 | ngOnInit() {
39 | this.platform.ready().then(() => {
40 | this.geolocation.getCurrentPosition().then(pos => {
41 | this.coords.lat = pos.coords.latitude
42 | this.coords.lng = pos.coords.longitude
43 | console.log(this.coords.lat, this.coords.lng)
44 | this.getNearestShelter(5);
45 | this.initMap();
46 | }).catch((error) => {
47 | console.log(error);
48 | console.log(JSON.stringify(error));
49 | console.log("error");
50 | })
51 | })
52 | console.log(this.coords)
53 | }
54 |
55 | getNearestShelter(max) {
56 | var local_shelter = this.getNearShelter(20);
57 | // console.log(local_shelter);
58 | for (let index = 0; index < local_shelter.length; index++) {
59 | local_shelter[index]["dist"] = this.getDistance(this.coords, local_shelter[index]);
60 | // console.log(this.getDistance(this.coords, local_shelter[index]))
61 | // console.log("shel"+local_shelter[index]);
62 | }
63 |
64 | var rShelter = local_shelter.sort(function (a, b) {
65 | return a.dist - b.dist;
66 | }).slice(0, max);
67 | this.shelter = rShelter;
68 | return rShelter;
69 | }
70 |
71 | getNearShelter(key) {
72 | return products["records"];
73 | }
74 |
75 | getDistance(from, to) {
76 | var theta = from.lng - to.lng;
77 | var dist = Math.sin(this.deg2rad(from.lat)) * Math.sin(this.deg2rad(to.lat))
78 | + Math.cos(this.deg2rad(from.lat)) * Math.cos(this.deg2rad(to.lat))
79 | * Math.cos(this.deg2rad(theta));
80 |
81 | dist = Math.acos(dist);
82 | dist = this.rad2deg(dist);
83 | dist *= 60 * 1852;
84 | return dist;
85 | }
86 |
87 | deg2rad(deg) {
88 | return (deg * Math.PI / 180.0);
89 | }
90 |
91 | rad2deg(rad) {
92 | return (rad * 180.0 / Math.PI);
93 | }
94 |
95 | initMap() {
96 | console.log(this.shelter)
97 | let mapOptions: google.maps.MapOptions = {
98 | center: this.coords,
99 | zoom: 13,
100 | mapTypeId: google.maps.MapTypeId.ROADMAP
101 | }
102 | this.map = new google.maps.Map(this.mapElement.nativeElement, mapOptions)
103 | //현 위치 마커
104 | let marker: google.maps.Marker = new google.maps.Marker({
105 | map: this.map,
106 | position: this.coords,
107 | icon: { url : '../../assets/imgs/currentMarkerImage.png'}
108 | });
109 |
110 | var service = new google.maps.places.PlacesService(this.map);
111 |
112 |
113 | var otherMarker, i;
114 | var infowindow = new google.maps.InfoWindow();
115 |
116 | for (i = 0; i < this.shelter.length; i++) {
117 | console.log(this.shelter[i]['dist'])
118 | otherMarker = new google.maps.Marker({
119 | position: new google.maps.LatLng(this.shelter[i]['lat'], this.shelter[i]['lng']),
120 | map: this.map,
121 | icon: { url : '../../assets/imgs/icMarker.png'}
122 | });
123 |
124 | google.maps.event.addListener(otherMarker, 'click', (function (otherMarker,i) {
125 | return function () {
126 | infowindow.setContent(this.shelter[i]['name']);
127 | infowindow.open(this.map, this);
128 | }
129 | })(marker, i));
130 | }
131 | }
132 |
133 | }
134 |
135 |
136 |
--------------------------------------------------------------------------------
/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ESQUAKE
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/src/key/firebaseKey.ts:
--------------------------------------------------------------------------------
1 | export const firebaseKey = {
2 | //"apiKey": "AIzaSyB7Qe9SIzfB7tMQOQqAHxE7vgs4LhWVy8U",
3 | "apiKey": "AIzaSyBQ3M0MISy5O49CCqOOqYEAEoppYWm1DxQ",
4 | "authDomain": "esquake-d87b2.firebaseapp.com",
5 | "databaseURL": "https://esquake-d87b2.firebaseio.com",
6 | "projectId": "esquake-d87b2",
7 | "storageBucket": "esquake-d87b2.appspot.com",
8 | "messagingSenderId": "461474507874"
9 | }
--------------------------------------------------------------------------------
/src/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Ionic",
3 | "short_name": "Ionic",
4 | "start_url": "index.html",
5 | "display": "standalone",
6 | "icons": [{
7 | "src": "assets/imgs/logo.png",
8 | "sizes": "512x512",
9 | "type": "image/png"
10 | }],
11 | "background_color": "#4e8ef7",
12 | "theme_color": "#4e8ef7"
13 | }
--------------------------------------------------------------------------------
/src/pages/eq-behavior/eq-behavior.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/pages/eq-behavior/eq-behavior.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { IonicPageModule } from 'ionic-angular';
3 | import { EqBehaviorPage } from './eq-behavior';
4 |
5 | @NgModule({
6 | declarations: [
7 | EqBehaviorPage,
8 | ],
9 | imports: [
10 | IonicPageModule.forChild(EqBehaviorPage),
11 | ],
12 | })
13 | export class EqBehaviorPageModule {}
14 |
--------------------------------------------------------------------------------
/src/pages/eq-behavior/eq-behavior.scss:
--------------------------------------------------------------------------------
1 | page-eq-behavior {
2 | font-family: "Noto Sans", "Noto Sans CJK KR";
3 | }
4 |
5 | .toolbar-background{
6 | background-color: white;
7 | }
8 |
9 | .no-scroll .scroll-content{
10 | overflow: hidden;
11 | }
12 |
--------------------------------------------------------------------------------
/src/pages/eq-behavior/eq-behavior.ts:
--------------------------------------------------------------------------------
1 | import { Component, ViewChild } from '@angular/core';
2 | import { IonicPage, NavController, NavParams, ViewController, Slides } from 'ionic-angular';
3 |
4 | /**
5 | * Generated class for the EqBehaviorPage page.
6 | *
7 | * See https://ionicframework.com/docs/components/#navigation for more info on
8 | * Ionic pages and navigation.
9 | */
10 |
11 | @IonicPage()
12 | @Component({
13 | selector: 'page-eq-behavior',
14 | templateUrl: 'eq-behavior.html',
15 | })
16 | export class EqBehaviorPage {
17 |
18 | constructor(public navCtrl: NavController, public navParams: NavParams,
19 | public viewCtrl: ViewController) {
20 | }
21 |
22 | slides = [
23 | {
24 | image: "../../assets/imgs/guide9.png",
25 | },
26 | {
27 | image: "../../assets/imgs/guide10.png",
28 | },
29 | {
30 | image: "../../assets/imgs/guide11.png",
31 | }
32 | ];
33 |
34 | ionViewDidLoad() {
35 | // console.log('ionViewDidLoad EqBehaviorPage');
36 | }
37 |
38 | dismiss(){
39 | this.viewCtrl.dismiss();
40 | }
41 | slideChanged(){
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/src/pages/eq-detail/eq-detail.html:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
10 | eq-detail
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/pages/eq-detail/eq-detail.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { IonicPageModule } from 'ionic-angular';
3 | import { EqDetailPage } from './eq-detail';
4 |
5 | @NgModule({
6 | declarations: [
7 | EqDetailPage,
8 | ],
9 | imports: [
10 | IonicPageModule.forChild(EqDetailPage),
11 | ],
12 | })
13 | export class EqDetailPageModule {}
14 |
--------------------------------------------------------------------------------
/src/pages/eq-detail/eq-detail.scss:
--------------------------------------------------------------------------------
1 | page-eq-detail {
2 |
3 | }
4 |
--------------------------------------------------------------------------------
/src/pages/eq-detail/eq-detail.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { IonicPage, NavController, NavParams } from 'ionic-angular';
3 |
4 | /**
5 | * Generated class for the EqDetailPage page.
6 | *
7 | * See https://ionicframework.com/docs/components/#navigation for more info on
8 | * Ionic pages and navigation.
9 | */
10 |
11 | @IonicPage()
12 | @Component({
13 | selector: 'page-eq-detail',
14 | templateUrl: 'eq-detail.html',
15 | })
16 | export class EqDetailPage {
17 |
18 | constructor(public navCtrl: NavController, public navParams: NavParams) {
19 | }
20 |
21 | ionViewDidLoad() {
22 | // console.log('ionViewDidLoad EqDetailPage');
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/src/pages/eq-history/eq-history.html:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
11 |
12 |
13 | {{item.tmEqk | DatePipe}}
14 |
15 |
16 |
17 | 규모 {{ item.mt }}
18 |
19 |
20 |
21 | {{ item.loc }}
22 |
23 |
24 |
42 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/src/pages/eq-history/eq-history.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { IonicPageModule } from 'ionic-angular';
3 | import { EqHistoryPage } from './eq-history';
4 |
5 | @NgModule({
6 | declarations: [
7 | EqHistoryPage,
8 | ],
9 | imports: [
10 | IonicPageModule.forChild(EqHistoryPage),
11 | ],
12 | })
13 | export class EqHistoryPageModule {}
14 |
--------------------------------------------------------------------------------
/src/pages/eq-history/eq-history.scss:
--------------------------------------------------------------------------------
1 | page-eq-history {
2 | font-family: "Noto Sans", "Noto Sans CJK KR";
3 | }
4 |
5 | .toolbar-background{
6 | background-color: white;
7 | }
8 |
9 |
10 | .no-scroll .scroll-content{
11 | overflow: hidden;
12 | margin:0;
13 | // background-color: #fbfbfb;
14 | background-color: rgb(245, 245, 245);
15 | }
16 |
17 |
18 | .container{
19 | display:flex;
20 | flex-direction: column;
21 | align-items: center;
22 | background-color: rgb(248, 248, 248);
23 | }
24 |
25 | .eq-item{
26 | background-color: white;
27 | width: 100%;
28 | // height: 130px;
29 | margin-top: 20px;
30 | padding: 10px;
31 | }
32 | .item-time{
33 | margin-left:8px;
34 | font-weight:500;
35 | font-size: 14px;
36 | }
37 |
38 | .item-mag{
39 | margin-left: 8px;
40 | font-weight: 800;
41 | color: #0f997b;
42 | font-size: 20px;
43 | width: 30%;
44 | }
45 |
46 | .item-effect{
47 | font-size: 12px;
48 | font-weight: 300;
49 | }
50 | .item-info {
51 | margin-bottom: 14px;
52 | }
53 |
54 | .item-location{
55 | margin-left: 8px;
56 | font-size: 14px;
57 | font-weight: 300;
58 | margin-right:8px;
59 | width:100%;
60 | }
61 |
--------------------------------------------------------------------------------
/src/pages/eq-history/eq-history.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { IonicPage, NavController, NavParams, ViewController } from 'ionic-angular';
3 | import { AngularFirestore, AngularFirestoreCollection } from 'angularfire2/firestore';
4 |
5 | import { Observable } from 'rxjs/Observable';
6 |
7 | @IonicPage()
8 | @Component({
9 | selector: 'page-eq-history',
10 | templateUrl: 'eq-history.html',
11 | })
12 | export class EqHistoryPage {
13 |
14 | history: Observable;
15 | earthquake: any;
16 | constructor(public navCtrl: NavController, public navParams: NavParams,
17 | public viewCtrl:ViewController, public afs: AngularFirestore
18 | ) {
19 | this.afs.collection('earthquake', ref => ref.orderBy('tmEqk', 'desc')).valueChanges().subscribe(data => {
20 | // console.log(data);
21 | this.earthquake = data ;
22 | })
23 | }
24 |
25 | ionViewDidLoad() {
26 | // console.log('ionViewDidLoad EqHistoryPage');
27 | }
28 |
29 | dismiss(){
30 | this.viewCtrl.dismiss();
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/pages/find-shelter/find-shelter.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | 주소 검색
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | Search
22 | dismiss
23 |
24 |
25 |
찾으시는 주소가 없습니다.
26 |
27 |
28 |
29 |
30 | {{recent}}
31 |
32 |
33 |
34 |
35 | {{road}}
36 |
37 |
--------------------------------------------------------------------------------
/src/pages/find-shelter/find-shelter.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { IonicPageModule } from 'ionic-angular';
3 | import { FindShelterPage } from './find-shelter';
4 |
5 | @NgModule({
6 | declarations: [
7 | FindShelterPage,
8 | ],
9 | imports: [
10 | IonicPageModule.forChild(FindShelterPage),
11 | ],
12 | })
13 | export class FindShelterPageModule {}
14 |
--------------------------------------------------------------------------------
/src/pages/find-shelter/find-shelter.scss:
--------------------------------------------------------------------------------
1 | page-find-shelter {
2 |
3 | }
4 |
--------------------------------------------------------------------------------
/src/pages/find-shelter/find-shelter.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { IonicPage, NavController, NavParams, ViewController } from 'ionic-angular';
3 | import { Http } from '@angular/http';
4 |
5 | @IonicPage()
6 | @Component({
7 | selector: 'page-find-shelter',
8 | templateUrl: 'find-shelter.html',
9 | })
10 | export class FindShelterPage {
11 | Searchse : any = 'road';
12 | srchwrd : any = '';
13 | roads = []; // 주소 검색 결과
14 | recents = []; // 최근 검색 내역
15 | recentflag : boolean = false; // 최근 검색 내역이 없는 경우
16 | searchflag : boolean = false; // 검색 여부
17 | nthflag : boolean = false; // 찾는 주소 없을 경우
18 | selectedaddress : string; // user가 검색한 주소 선택한 경우
19 |
20 | constructor(public navCtrl: NavController, public navParams: NavParams,
21 | public viewCtrl: ViewController, private http : Http) {
22 | // empty road array 안해주면 계속 전에 검색했던 주소들 다 프린트 됨
23 | this.nthflag = false;
24 | this.roads = [];
25 |
26 | // 여기서는 default 로 최근검색기록 확인, print
27 | // console.log(this.recents.length);
28 | // if (this.recents.length == 0) this.recentflag = false;
29 | // else this.recentflag = true;
30 | }
31 |
32 | ionViewDidLoad() {
33 | // console.log('ionViewDidLoad FindShelterPage');
34 | }
35 |
36 | setLocation(data) {
37 | this.selectedaddress = data;
38 | this.viewCtrl.dismiss(this.selectedaddress);
39 | }
40 | dismissModal(){
41 | this.viewCtrl.dismiss(this.selectedaddress);
42 | }
43 | datapassing(){
44 | // search 버튼 누르면 검색했다는 뜻 && datapassing() 실행
45 | // => datapassing() 실행하면 this.recents에 push
46 | // push 할 때, 이미 recents array 에 있으면 추가 하지 않음
47 | var _j = 0;
48 | for(_j = 0; _j < this.recents.length; _j++){
49 | if (this.recents[_j] == this.srchwrd) break;
50 | }
51 | if (_j == this.recents.length) this.recents.push(this.srchwrd)
52 |
53 | // recentflag 바꿔서 최근검색기록은 print 안되도록
54 | this.recentflag = false;
55 |
56 | // nthflag 바꿔서 찾으시는 주소 없다고 안 뜨도록
57 | this.nthflag = false;
58 |
59 | // 새로운 검색기록 roads에 push 하기 전에 empty roads array
60 | this.roads = [];
61 |
62 | this.getMessages(this.Searchse, this.srchwrd).subscribe((data) => {
63 | // console.log(data)
64 | // console.log(JSON.parse(data['_body'])['NewAddressListResponse']['newAddressListAreaCd'])
65 | // console.log(JSON.parse(data['_body'])['NewAddressListResponse']['cmmMsgHeader']['totalCount']) 얘가 반환값이 있는지 없는지를, 몇개인지를 알려주는 element임!
66 |
67 | if (JSON.parse(data['_body'])['NewAddressListResponse']['cmmMsgHeader']['totalCount'] == ""){
68 | // 반환 값이 아예 없는 애들 -> exception 처리
69 | // console.log('length error')
70 | this.nthflag = true;
71 | }
72 | else if (JSON.parse(data['_body'])['NewAddressListResponse']['cmmMsgHeader']['totalCount'] == "1"){
73 | // 반환 값이 하나인 애들
74 | console.log('접근방식 다른 애들 (결과가 하나 뿐인 애들)')
75 | this.roads.push(JSON.parse(data['_body'])['NewAddressListResponse']['newAddressListAreaCd']['lnmAdres'])
76 | }
77 | else {
78 | // 반환 값이 2 이상인 애들
79 | for (var _i = 0; _i < JSON.parse(data['_body'])['NewAddressListResponse']['newAddressListAreaCd'].length; _i++) {
80 | // console.log('for loop')
81 | this.roads.push(JSON.parse(data['_body'])['NewAddressListResponse']['newAddressListAreaCd'][_i]['lnmAdres'])
82 | }
83 | }
84 | });
85 | }
86 |
87 | // gototest() {
88 | // this.navCtrl.push(TestPage);
89 | // }
90 |
91 | getMessages(par1, par2) {
92 | // var headers = new Headers();
93 | // headers.append('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
94 | // console.log('get message');
95 | // console.log(par1, par2)
96 | var url = `http://openapi.epost.go.kr/postal/retrieveNewAdressAreaCdService/retrieveNewAdressAreaCdService/getNewAddressListAreaCd?ServiceKey=CTwTNEheKCyHIBYx4sz7Lxkf4vg%2Bkh6f2G%2BvypL6qqZk2j90baTIMesmZNhoIcM4%2FSUio%2FJ3xEMe3xZ6JSn7Lg%3D%3D&searchSe=${par1}&srchwrd=${par2}`;
97 | return this.http.get(url);
98 | }
99 |
100 | findLocation() {
101 | var url = `http://www.juso.go.kr/addrlink/addrCoordApiJsonp.do`
102 | }
103 | }
104 |
--------------------------------------------------------------------------------
/src/pages/home/home.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {{ title }}
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
{{ data.name }}
23 |
{{ data.dist | DistancePipe}}m
24 |
25 | {{ data.road_address }}
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/src/pages/home/home.scss:
--------------------------------------------------------------------------------
1 | // page-home {
2 | // #map {
3 | // height: 50%;
4 | // width: 50%;
5 | // }
6 | // }
7 |
8 | page-home {
9 | font-family: "Noto Sans", "Noto Sans CJK KR";
10 |
11 | ion-slides {
12 | height: 96px;
13 | padding: 0;
14 | margin: 0;
15 | }
16 | }
17 |
18 | // ion-sliders {
19 | // height: 96px !important;
20 | // }
21 |
22 | .scroll-content {
23 | padding: 0 !important;
24 | }
25 |
26 | .shelter-location-slide .slides {
27 | // height : 30% !important;
28 | }
29 |
30 | .shelter-location-slide {
31 | position: fixed;
32 | bottom: 5%;
33 | z-index: 3;
34 | }
35 |
36 | .shelter-location {
37 |
38 | box-shadow: 0 5px 5px rgba(0, 0, 0, 0.05);
39 | // top: 80%;
40 | // z-index: 1;
41 |
42 | height: 96px !important;
43 | width: 100%;
44 | padding-right: 5%;
45 | padding-left: 5%;
46 |
47 | .slide-zoom {
48 | height: 100%;
49 | background-color: white;
50 | padding: 14px;
51 | }
52 |
53 | #shelter-info {
54 | display: flex;
55 |
56 | div {
57 | width: 50%;
58 | }
59 |
60 | #shelter-name {
61 | font-size: 18px;
62 | font-weight: bold;
63 | text-align: left;
64 | }
65 |
66 | #shelter-distance {
67 | font-size: 16px;
68 | color: rgb(16, 102, 230);
69 | text-align: right;
70 | }
71 | }
72 |
73 | #shelter-address {
74 | margin-top: 10px;
75 | font-size: 12px;
76 | text-align: left;
77 | color: rgb(51, 51, 51);
78 | }
79 |
80 | }
81 |
82 | .map {
83 | background-color: #d8d3d3;
84 | }
85 |
86 | #map {
87 | height: 100%;
88 | width: 100%;
89 | position: relative;
90 |
91 | .gm-control-active.gm-fullscreen-control, .gmnoprint {
92 | display: none;
93 | }
94 | }
95 |
96 | div.loading-wrapper {
97 | background-color: transparent !important;
98 | -webkit-box-shadow: rgba(0, 0, 0, 0) !important;
99 | box-shadow: rgba(0, 0, 0, 0) !important;
100 | }
--------------------------------------------------------------------------------
/src/pages/home/home.ts:
--------------------------------------------------------------------------------
1 | import { LoadingController, ModalController, Slides } from 'ionic-angular';
2 | import { Component, ViewChild } from '@angular/core';
3 | import { Geolocation } from '@ionic-native/geolocation';
4 | import { Platform } from 'ionic-angular';
5 | import * as products from "../../assets/shelter.json";
6 | import { NativeGeocoder, NativeGeocoderReverseResult, NativeGeocoderForwardResult, NativeGeocoderOptions } from '@ionic-native/native-geocoder';
7 |
8 | // Pages
9 | import { FindShelterPage } from '../find-shelter/find-shelter';
10 |
11 |
12 | @Component({
13 | selector: 'page-home',
14 | templateUrl: 'home.html'
15 | })
16 | export class HomePage {
17 | @ViewChild(Slides) slides: Slides;
18 | @ViewChild("map") mapElement;
19 | map: any;
20 | coords: any;
21 | address: any;
22 | temps:any[] = [];
23 | title: string = '현재 위치';
24 |
25 | changeLocation:any;
26 |
27 | private shelter: any;
28 | constructor(private geolocation: Geolocation, private platform: Platform,
29 | public loadingCtrl: LoadingController, private nativeGeocoder: NativeGeocoder,
30 | public modalCtrl : ModalController) {
31 |
32 | this.coords = {
33 | lat: null,
34 | lng: null
35 | }
36 | }
37 |
38 | search() {
39 | let options: NativeGeocoderOptions = {
40 | useLocale: true,
41 | maxResults: 5
42 | };
43 |
44 | this.nativeGeocoder.forwardGeocode(this.address);
45 |
46 | }
47 |
48 | ngOnInit() {
49 | let loading = this.loadingCtrl.create({
50 | spinner: 'hide',
51 | content: `
52 |
53 |
54 |
55 |
56 |
`,
57 | });
58 | loading.present();
59 | this.platform.ready().then(() => {
60 | this.geolocation.getCurrentPosition().then(pos => {
61 | this.coords.lat = pos.coords.latitude
62 | this.coords.lng = pos.coords.longitude
63 | // this.coords.lat = 36.1028648
64 | // this.coords.lng = 129.3898267
65 | // console.log(this.coords.lat, this.coords.lng)
66 |
67 | this.getNearestShelter(5);
68 | this.initMap();
69 | loading.dismiss();
70 | // console.log('아마..')
71 | }).catch((error) => {
72 | console.log(error);
73 | // console.log(JSON.stringify(error));
74 | // console.log("error");
75 | })
76 | })
77 | // console.log(this.coords)
78 | }
79 |
80 | getNearestShelter(max) {
81 | var local_shelter = this.getNearShelter(20);
82 | // console.log(local_shelter);
83 | for (let index = 0; index < local_shelter.length; index++) {
84 | local_shelter[index]["dist"] = this.getDistance(this.coords, local_shelter[index]);
85 | // console.log(this.getDistance(this.coords, local_shelter[index]))
86 | // console.log("shel"+local_shelter[index]);
87 | }
88 |
89 | var rShelter = local_shelter.sort(function (a, b) {
90 | return a.dist - b.dist;
91 | }).slice(0, max);
92 |
93 | this.shelter = rShelter;
94 | return rShelter;
95 | }
96 |
97 | getNearShelter(key) {
98 | return products["records"];
99 | }
100 |
101 | getDistance(from, to) {
102 | var theta = from.lng - to.lng;
103 | var dist = Math.sin(this.deg2rad(from.lat)) * Math.sin(this.deg2rad(to.lat))
104 | + Math.cos(this.deg2rad(from.lat)) * Math.cos(this.deg2rad(to.lat))
105 | * Math.cos(this.deg2rad(theta));
106 |
107 | dist = Math.acos(dist);
108 | dist = this.rad2deg(dist);
109 | dist *= 60 * 1852;
110 | return dist;
111 | }
112 |
113 | deg2rad(deg) {
114 | return (deg * Math.PI / 180.0);
115 | }
116 |
117 | rad2deg(rad) {
118 | return (rad * 180.0 / Math.PI);
119 | }
120 |
121 | slideChanged() {
122 | let currentIndex = this.slides.getActiveIndex();
123 | // console.log('Current index is', currentIndex);
124 | // console.log(this.shelter[currentIndex]);
125 | // console.log(this.shelter[currentIndex]['lat']);
126 | // console.log(this.shelter[currentIndex]['lng']);
127 |
128 | this.map.setCenter({
129 | lat:parseFloat(this.shelter[currentIndex]['lat']),
130 | lng:parseFloat(this.shelter[currentIndex]['lng'])
131 | })
132 | }
133 |
134 | getCurrent() {
135 | this.ngOnInit();
136 | }
137 |
138 | initMap() {
139 | // console.log(this.shelter)
140 | let mapOptions: google.maps.MapOptions = {
141 | center: this.coords,
142 | zoom: 16,
143 | mapTypeId: google.maps.MapTypeId.ROADMAP
144 | }
145 | this.map = new google.maps.Map(this.mapElement.nativeElement, mapOptions)
146 | //현 위치 마커
147 | let marker: google.maps.Marker = new google.maps.Marker({
148 | map: this.map,
149 | position: this.coords,
150 | icon: { url : '../../assets/imgs/currentMarkerImage.png'}
151 | });
152 |
153 | // var service = new google.maps.places.PlacesService(this.map);
154 |
155 |
156 | var otherMarker, i;
157 | var infowindow = new google.maps.InfoWindow();
158 |
159 | for (i = 0; i < this.shelter.length; i++) {
160 | // console.log("`_~");
161 | // console.log(this.shelter[i]['dist']);
162 | this.temps.push(this.shelter[i])
163 | otherMarker = new google.maps.Marker({
164 | position: new google.maps.LatLng(this.shelter[i]['lat'], this.shelter[i]['lng']),
165 | map: this.map,
166 | icon: { url : '../../assets/imgs/icMarker.png'}
167 | });
168 |
169 | // google.maps.event.addListener(otherMarker, 'click', (function (otherMarker,i) {
170 | // return function () {
171 | // console.log("멀까임")
172 | // infowindow.setContent(this.shelter[i]['name']);
173 | // infowindow.open(this.map, this);
174 | // }
175 | // })(marker, i));
176 | }
177 | // console.log(this.temps)
178 | }
179 | showModal() {
180 | let profileModal = this.modalCtrl.create(FindShelterPage);
181 |
182 | profileModal.onDidDismiss(data => { this.title = data; });
183 |
184 | profileModal.present();
185 | }
186 | }
187 |
188 |
189 |
--------------------------------------------------------------------------------
/src/pages/home/json-typings.d.ts:
--------------------------------------------------------------------------------
1 | declare module "*.json" {
2 | const value: any;
3 | export default value;
4 | }
--------------------------------------------------------------------------------
/src/pages/list/list.html:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
10 | list
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/pages/list/list.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { IonicPageModule } from 'ionic-angular';
3 | import { ListPage } from './list';
4 |
5 | @NgModule({
6 | declarations: [
7 | ListPage,
8 | ],
9 | imports: [
10 | IonicPageModule.forChild(ListPage),
11 | ],
12 | })
13 | export class ListPageModule {}
14 |
--------------------------------------------------------------------------------
/src/pages/list/list.scss:
--------------------------------------------------------------------------------
1 | page-list {
2 |
3 | }
4 |
--------------------------------------------------------------------------------
/src/pages/list/list.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { IonicPage, NavController, NavParams } from 'ionic-angular';
3 |
4 | /**
5 | * Generated class for the ListPage page.
6 | *
7 | * See https://ionicframework.com/docs/components/#navigation for more info on
8 | * Ionic pages and navigation.
9 | */
10 |
11 | @IonicPage()
12 | @Component({
13 | selector: 'page-list',
14 | templateUrl: 'list.html',
15 | })
16 | export class ListPage {
17 |
18 | constructor(public navCtrl: NavController, public navParams: NavParams) {
19 | }
20 |
21 | ionViewDidLoad() {
22 | // console.log('ionViewDidLoad ListPage');
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/src/pages/setting/setting.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 환경설정
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | 규모 2.0 이상
16 |
17 |
18 | 규모 3.0 이상
19 |
20 |
21 | 규모 4.0 이상
22 |
23 |
24 |
25 | 지진 알림의 최소 규모를 설정합니다
26 |
27 |
28 |
--------------------------------------------------------------------------------
/src/pages/setting/setting.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { IonicPageModule } from 'ionic-angular';
3 | import { SettingPage } from './setting';
4 |
5 | @NgModule({
6 | declarations: [
7 | SettingPage,
8 | ],
9 | imports: [
10 | IonicPageModule.forChild(SettingPage),
11 | ],
12 | })
13 | export class SettingPageModule {}
14 |
--------------------------------------------------------------------------------
/src/pages/setting/setting.scss:
--------------------------------------------------------------------------------
1 | page-setting {
2 | font-family: "Noto Sans", "Noto Sans CJK KR";
3 | ion-range {
4 | margin: 0 20px;
5 | }
6 | .setting-info {
7 | text-align: center;
8 | }
9 | .setting-notification {
10 | margin: 0 10%;
11 | }
12 | .setting-image {
13 | text-align: center;
14 | margin: 20%;
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/pages/setting/setting.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { IonicPage, NavController, NavParams } from 'ionic-angular';
3 | import { AlertProvider } from '../../providers/alert/alert';
4 | /**
5 | * Generated class for the SettingPage page.
6 | *
7 | * See https://ionicframework.com/docs/components/#navigation for more info on
8 | * Ionic pages and navigation.
9 | */
10 |
11 | @IonicPage()
12 | @Component({
13 | selector: 'page-setting',
14 | templateUrl: 'setting.html',
15 | })
16 | export class SettingPage {
17 |
18 | minNotification: any = 2;
19 |
20 | constructor(public navCtrl: NavController, public navParams: NavParams,
21 | public AlertProvider:AlertProvider,) {
22 | }
23 |
24 | ionViewDidLoad() {
25 | // console.log('ionViewDidLoad SettingPage');
26 | }
27 | changet() {
28 | // console.log(this.minNotification);
29 | this.AlertProvider.presentToast(`${this.minNotification}이상의 지진만 알림받습니다.`)
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/src/pages/tabs/tabs.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/pages/tabs/tabs.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | // Pages
4 | import { HomePage } from '../home/home';
5 | import { EqBehaviorPage } from '../eq-behavior/eq-behavior';
6 | import { SettingPage } from '../setting/setting';
7 | import { EqHistoryPage } from '../eq-history/eq-history';
8 |
9 | @Component({
10 | templateUrl: 'tabs.html'
11 | })
12 | export class TabsPage {
13 |
14 | tab1Root = HomePage;
15 | tab2Root = EqHistoryPage;
16 | tab3Root = EqBehaviorPage;
17 | tab4Root = SettingPage;
18 |
19 | constructor() {
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/src/pipes/date/date.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from '@angular/core';
2 |
3 | /**
4 | * Generated class for the DatePipe pipe.
5 | *
6 | * See https://angular.io/api/core/Pipe for more info on Angular Pipes.
7 | */
8 | @Pipe({
9 | name: 'DatePipe',
10 | })
11 | export class DatePipe implements PipeTransform {
12 | /**
13 | * Takes a value and makes it lowercase.
14 | */
15 | transform(date: string) {
16 | // console.log(date.length);
17 | if (date.length == 14) {
18 | return `${date.slice(2,4)}/${date.slice(4,6)}/${date.slice(6,8)} ${date.slice(8,10)}:${date.slice(10,12)}:${date.slice(12,)}`;
19 | }
20 | else {
21 | return date;
22 | }
23 | // ex) 20181102071951
24 | // console.log(date.slice(0,4))
25 | // console.log(date.slice(4,6))
26 | // console.log(date.slice(6,8))
27 | // console.log(date.slice(8,10))
28 | // console.log(date.slice(10,12))
29 | // console.log(date.slice(12,))
30 |
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/pipes/distance/distance.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from '@angular/core';
2 |
3 | /**
4 | * Generated class for the DistancePipe pipe.
5 | *
6 | * See https://angular.io/api/core/Pipe for more info on Angular Pipes.
7 | */
8 | @Pipe({
9 | name: 'DistancePipe',
10 | })
11 | export class DistancePipe implements PipeTransform {
12 | /**
13 | * Takes a value and makes it lowercase.
14 | */
15 | transform(value: string) {
16 |
17 |
18 | return parseInt(value)
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/pipes/pipes.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { DatePipe } from './date/date';
3 | import { DistancePipe } from './distance/distance';
4 | @NgModule({
5 | declarations: [DatePipe,
6 | DistancePipe],
7 | imports: [],
8 | exports: [DatePipe,
9 | DistancePipe]
10 | })
11 | export class PipesModule {}
12 |
--------------------------------------------------------------------------------
/src/providers/alert/alert.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@angular/core';
2 | import { ToastController} from 'ionic-angular';
3 |
4 | @Injectable()
5 | export class AlertProvider {
6 | constructor(public toastCtrl: ToastController) {}
7 |
8 | presentToast(text) {
9 | let toast = this.toastCtrl.create({
10 | message: text,
11 | duration: 3000,
12 | position: 'bottom'
13 | });
14 | toast.present();
15 | }
16 | }
--------------------------------------------------------------------------------
/src/service-worker.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Check out https://googlechromelabs.github.io/sw-toolbox/ for
3 | * more info on how to use sw-toolbox to custom configure your service worker.
4 | */
5 |
6 |
7 | 'use strict';
8 | importScripts('./build/sw-toolbox.js');
9 |
10 | self.toolbox.options.cache = {
11 | name: 'ionic-cache'
12 | };
13 |
14 | // pre-cache our key assets
15 | self.toolbox.precache(
16 | [
17 | './build/main.js',
18 | './build/vendor.js',
19 | './build/main.css',
20 | './build/polyfills.js',
21 | 'index.html',
22 | 'manifest.json'
23 | ]
24 | );
25 |
26 | // dynamically cache any other local assets
27 | self.toolbox.router.any('/*', self.toolbox.fastest);
28 |
29 | // for any other requests go to the network, cache,
30 | // and then only use that cached resource if your user goes offline
31 | self.toolbox.router.default = self.toolbox.networkFirst;
32 |
--------------------------------------------------------------------------------
/src/theme/variables.scss:
--------------------------------------------------------------------------------
1 | // Ionic Variables and Theming. For more info, please see:
2 | // http://ionicframework.com/docs/theming/
3 |
4 | // Font path is used to include ionicons,
5 | // roboto, and noto sans fonts
6 | $font-path: "../assets/fonts";
7 |
8 |
9 | // The app direction is used to include
10 | // rtl styles in your app. For more info, please see:
11 | // http://ionicframework.com/docs/theming/rtl-support/
12 | $app-direction: ltr;
13 |
14 |
15 | @import "ionic.globals";
16 |
17 |
18 | // Shared Variables
19 | // --------------------------------------------------
20 | // To customize the look and feel of this app, you can override
21 | // the Sass variables found in Ionic's source scss files.
22 | // To view all the possible Ionic variables, see:
23 | // http://ionicframework.com/docs/theming/overriding-ionic-variables/
24 |
25 | $loading-ios-background : trasparent;
26 | $loading-md-background : transparent;
27 | $loading-md-box-shadow-color : rgba(0, 0, 0, 0);
28 |
29 | $cordova-ios-statusbar-padding: 0px;
30 |
31 | $range-ios-knob-background-color: rgb(16, 102, 230);
32 | $range-ios-knob-width: 35px;
33 | $range-ios-bar-height: 5px;
34 | $range-ios-tick-height: 15px;
35 | $range-ios-tick-width: 15px;
36 | $range-ios-tick-border-radius: 15px;
37 |
38 | $range-md-knob-background-color: rgb(16, 102, 230);
39 | $range-md-knob-width: 35px;
40 | $range-md-bar-height: 5px;
41 | $range-md-tick-height: 15px;
42 | $range-md-tick-width: 15px;
43 | $range-md-tick-border-radius: 15px;
44 | $range-md-tick-background-color: #bdbdbd;
45 | $range-md-tick-active-background-color: rgb(16, 102, 230);
46 |
47 | ion-navbar.toolbar {
48 | text-align: center;
49 | .toolbar-title-ios, .toolbar-title-md {
50 | font-size: 1.7rem !important;
51 | font-weight: 400 !important;
52 | }
53 | }
54 | .header-ios{
55 | padding-top: 20px;
56 | }
57 | // Named Color Variables
58 | // --------------------------------------------------
59 | // Named colors makes it easy to reuse colors on various components.
60 | // It's highly recommended to change the default colors
61 | // to match your app's branding. Ionic uses a Sass map of
62 | // colors so you can add, rename and remove colors as needed.
63 | // The "primary" color is the only required color in the map.
64 |
65 | $colors: (
66 | primary: #488aff,
67 | secondary: #32db64,
68 | danger: #f53d3d,
69 | light: #f4f4f4,
70 | dark: #222,
71 | main: rgb(16, 102, 230),
72 | );
73 |
74 |
75 | // App iOS Variables
76 | // --------------------------------------------------
77 | // iOS only Sass variables can go here
78 |
79 |
80 |
81 |
82 | // App Material Design Variables
83 | // --------------------------------------------------
84 | // Material Design only Sass variables can go here
85 |
86 |
87 |
88 |
89 | // App Windows Variables
90 | // --------------------------------------------------
91 | // Windows only Sass variables can go here
92 |
93 |
94 |
95 |
96 | // App Theme
97 | // --------------------------------------------------
98 | // Ionic apps can have different themes applied, which can
99 | // then be future customized. This import comes last
100 | // so that the above variables are used and Ionic's
101 | // default are overridden.
102 |
103 | @import "ionic.theme.default";
104 |
105 |
106 | // Ionicons
107 | // --------------------------------------------------
108 | // The premium icon font for Ionic. For more info, please see:
109 | // http://ionicframework.com/docs/ionicons/
110 |
111 | @import "ionic.ionicons";
112 |
113 |
114 | // Fonts
115 | // --------------------------------------------------
116 |
117 | @import "roboto";
118 | @import "noto-sans";
119 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "allowSyntheticDefaultImports": true,
4 | "declaration": false,
5 | "emitDecoratorMetadata": true,
6 | "experimentalDecorators": true,
7 | "lib": [
8 | "dom",
9 | "es2015"
10 | ],
11 | "module": "es2015",
12 | "moduleResolution": "node",
13 | "sourceMap": true,
14 | "target": "es5"
15 | },
16 | "include": [
17 | "src/**/*.ts"
18 | ],
19 | "exclude": [
20 | "node_modules",
21 | "src/**/*.spec.ts",
22 | "src/**/__tests__/*.ts"
23 | ],
24 | "compileOnSave": false,
25 | "atom": {
26 | "rewriteTsconfig": false
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "rules": {
3 | "no-duplicate-variable": true,
4 | "no-unused-variable": [
5 | true
6 | ]
7 | },
8 | "rulesDirectory": [
9 | "node_modules/tslint-eslint-rules/dist/rules"
10 | ]
11 | }
12 |
--------------------------------------------------------------------------------