Initial Commit

This commit is contained in:
bitbucket 2023-07-04 09:59:38 +05:30
parent e67b0b0192
commit 3b23565c04
313 changed files with 29572 additions and 39 deletions

15
.browserslistrc Normal file
View File

@ -0,0 +1,15 @@
# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.
# For additional information regarding the format and rule options, please see:
# https://github.com/browserslist/browserslist#queries
# For the full list of supported browsers by the Angular framework, please see:
# https://angular.io/guide/browser-support
# You can see what browsers were selected by your queries by running:
# npx browserslist
Chrome >=60
Firefox >=63
Edge >=79
Safari >=13
iOS >=13

16
.editorconfig Normal file
View File

@ -0,0 +1,16 @@
# Editor configuration, see https://editorconfig.org
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true
[*.ts]
quote_type = single
[*.md]
max_line_length = off
trim_trailing_whitespace = false

46
.eslintrc.json Normal file
View File

@ -0,0 +1,46 @@
{
"root": true,
"ignorePatterns": ["projects/**/*"],
"overrides": [
{
"files": ["*.ts"],
"parserOptions": {
"project": ["tsconfig.json"],
"createDefaultProgram": true
},
"extends": [
"plugin:@angular-eslint/recommended",
"plugin:@angular-eslint/template/process-inline-templates"
],
"rules": {
"@angular-eslint/component-class-suffix": [
"error",
{
"suffixes": ["Page", "Component"]
}
],
"@angular-eslint/component-selector": [
"error",
{
"type": "element",
"prefix": "app",
"style": "kebab-case"
}
],
"@angular-eslint/directive-selector": [
"error",
{
"type": "attribute",
"prefix": "app",
"style": "camelCase"
}
]
}
},
{
"files": ["*.html"],
"extends": ["plugin:@angular-eslint/template/recommended"],
"rules": {}
}
]
}

96
.gitignore vendored
View File

@ -1,50 +1,68 @@
# These are some examples of commonly ignored file patterns. # Specifies intentionally untracked files to ignore when using Git
# You should customize this list as applicable to your project. # http://git-scm.com/docs/gitignore
# Learn more about .gitignore:
# https://www.atlassian.com/git/tutorials/saving-changes/gitignore
# Node artifact files *~
node_modules/ *.sw[mnpcod]
dist/ .tmp
*.tmp
*.tmp.*
UserInterfaceState.xcuserstate
$RECYCLE.BIN/
# Compiled Java class files
*.class
# Compiled Python bytecode
*.py[cod]
# Log files
*.log *.log
log.txt
# Package files
*.jar
# Maven /.sourcemaps
target/ /.versions
dist/ /coverage
# JetBrains IDE # Ionic
/.ionic
/www
/platforms
/plugins
# Compiled output
/dist
/tmp
/out-tsc
/bazel-out
# Node
/node_modules
npm-debug.log
yarn-error.log
# IDEs and editors
.idea/ .idea/
.project
.classpath
.c9/
*.launch
.settings/
*.sublime-project
*.sublime-workspace
# Unit test reports # Visual Studio Code
TEST*.xml .vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
.history/*
# Generated by MacOS
# Miscellaneous
/.angular
/.angular/cache
.sass-cache/
/connect.lock
/coverage
/libpeerconnection.log
testem.log
/typings
# System files
.DS_Store .DS_Store
# Generated by Windows
Thumbs.db Thumbs.db
# Applications
*.app
*.exe
*.war
# Large media files
*.mp4
*.tiff
*.avi
*.flv
*.mov
*.wmv

181
angular.json Normal file
View File

@ -0,0 +1,181 @@
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"app": {
"projectType": "application",
"schematics": {},
"root": "",
"sourceRoot": "src",
"prefix": "app",
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"outputPath": "www",
"index": "src/index.html",
"main": "src/main.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "tsconfig.app.json",
"inlineStyleLanguage": "scss",
"assets": [
{
"glob": "**/*",
"input": "src/assets",
"output": "assets"
},
{
"glob": "**/*.svg",
"input": "node_modules/ionicons/dist/ionicons/svg",
"output": "./svg"
}
],
"styles": [
"src/theme/variables.scss",
"src/global.scss"
],
"scripts": []
},
"configurations": {
"production": {
"budgets": [
{
"type": "initial",
"maximumWarning": "2mb",
"maximumError": "5mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "2kb",
"maximumError": "4kb"
}
],
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
],
"outputHashing": "all"
},
"development": {
"buildOptimizer": false,
"optimization": false,
"vendorChunk": true,
"extractLicenses": false,
"sourceMap": true,
"namedChunks": true
},
"ci": {
"progress": false
}
},
"defaultConfiguration": "production"
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"configurations": {
"production": {
"browserTarget": "app:build:production"
},
"development": {
"browserTarget": "app:build:development"
},
"ci": {
"progress": false
}
},
"defaultConfiguration": "development"
},
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n",
"options": {
"browserTarget": "app:build"
}
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "src/test.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "tsconfig.spec.json",
"karmaConfig": "karma.conf.js",
"inlineStyleLanguage": "scss",
"assets": [
{
"glob": "**/*",
"input": "src/assets",
"output": "assets"
},
{
"glob": "**/*.svg",
"input": "node_modules/ionicons/dist/ionicons/svg",
"output": "./svg"
}
],
"styles": [
"src/theme/variables.scss",
"src/global.scss"
],
"scripts": []
},
"configurations": {
"ci": {
"progress": false,
"watch": false
}
}
},
"lint": {
"builder": "@angular-eslint/builder:lint",
"options": {
"lintFilePatterns": [
"src/**/*.ts",
"src/**/*.html"
]
}
},
"ionic-cordova-serve": {
"builder": "@ionic/cordova-builders:cordova-serve",
"options": {
"cordovaBuildTarget": "app:ionic-cordova-build",
"devServerTarget": "app:serve"
},
"configurations": {
"production": {
"cordovaBuildTarget": "app:ionic-cordova-build:production",
"devServerTarget": "app:serve:production"
}
}
},
"ionic-cordova-build": {
"builder": "@ionic/cordova-builders:cordova-build",
"options": {
"browserTarget": "app:build"
},
"configurations": {
"production": {
"browserTarget": "app:build:production"
}
}
}
}
}
},
"cli": {
"schematicCollections": [
"@ionic/angular-toolkit"
],
"analytics": false
},
"schematics": {
"@ionic/angular-toolkit:component": {
"styleext": "scss"
},
"@ionic/angular-toolkit:page": {
"styleext": "scss"
}
}
}

121
config.xml Normal file
View File

@ -0,0 +1,121 @@
<?xml version='1.0' encoding='utf-8'?>
<widget id="io.ionic.starter" version="0.0.10" xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>vnms-app</name>
<description>An awesome Ionic/Cordova app.</description>
<author email="hi@ionicframework.com" href="http://ionicframework.com/">Ionic Framework Team</author>
<content src="index.html" />
<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<preference name="ScrollEnabled" value="false" />
<preference name="BackupWebStorage" value="none" />
<preference name="SplashMaintainAspectRatio" value="true" />
<preference name="FadeSplashScreenDuration" value="300" />
<preference name="SplashShowOnlyFirstTime" value="false" />
<preference name="SplashScreen" value="screen" />
<preference name="SplashScreenDelay" value="3000" />
<preference name="android-minSdkVersion" value="22" />
<preference name="android-targetSdkVersion" value="33" />
<preference name="AndroidXEnabled" value="true" />
<preference name="android-compileSdkVersion" value="33" />
<preference name="ShowSplashScreenSpinner" value="false" />
<preference name="AndroidLaunchMode" value="singleTask" />
<platform name="android">
<preference name="Scheme" value="http" />
<config-file parent="/manifest" target="AndroidManifest.xml">
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-feature android:name="android.hardware.camera2.full" />
<uses-feature android:name="android.hardware.camera2.autofocus" />
<uses-permission android:name="android.webkit.PermissionRequest" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-feature android:name="android.hardware.camera" android:required="true" />
</config-file>
<resource-file src="resources/android/xml/network_security_config.xml" target="app/src/main/res/xml/network_security_config.xml" />
<allow-intent href="market:*" />
<icon density="ldpi" src="resources/android/icon/drawable-ldpi-icon.png" />
<icon density="mdpi" src="resources/android/icon/drawable-mdpi-icon.png" />
<icon density="hdpi" src="resources/android/icon/drawable-hdpi-icon.png" />
<icon density="xhdpi" src="resources/android/icon/drawable-xhdpi-icon.png" />
<icon density="xxhdpi" src="resources/android/icon/drawable-xxhdpi-icon.png" />
<icon density="xxxhdpi" src="resources/android/icon/drawable-xxxhdpi-icon.png" />
<splash density="land-ldpi" src="resources/android/splash/drawable-land-ldpi-screen.png" />
<splash density="land-mdpi" src="resources/android/splash/drawable-land-mdpi-screen.png" />
<splash density="land-hdpi" src="resources/android/splash/drawable-land-hdpi-screen.png" />
<splash density="land-xhdpi" src="resources/android/splash/drawable-land-xhdpi-screen.png" />
<splash density="land-xxhdpi" src="resources/android/splash/drawable-land-xxhdpi-screen.png" />
<splash density="land-xxxhdpi" src="resources/android/splash/drawable-land-xxxhdpi-screen.png" />
<splash density="port-ldpi" src="resources/android/splash/drawable-port-ldpi-screen.png" />
<splash density="port-mdpi" src="resources/android/splash/drawable-port-mdpi-screen.png" />
<splash density="port-hdpi" src="resources/android/splash/drawable-port-hdpi-screen.png" />
<splash density="port-xhdpi" src="resources/android/splash/drawable-port-xhdpi-screen.png" />
<splash density="port-xxhdpi" src="resources/android/splash/drawable-port-xxhdpi-screen.png" />
<splash density="port-xxxhdpi" src="resources/android/splash/drawable-port-xxxhdpi-screen.png" />
</platform>
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
<icon height="57" src="resources/ios/icon/icon.png" width="57" />
<icon height="114" src="resources/ios/icon/icon@2x.png" width="114" />
<icon height="29" src="resources/ios/icon/icon-small.png" width="29" />
<icon height="58" src="resources/ios/icon/icon-small@2x.png" width="58" />
<icon height="87" src="resources/ios/icon/icon-small@3x.png" width="87" />
<icon height="20" src="resources/ios/icon/icon-20.png" width="20" />
<icon height="40" src="resources/ios/icon/icon-20@2x.png" width="40" />
<icon height="60" src="resources/ios/icon/icon-20@3x.png" width="60" />
<icon height="48" src="resources/ios/icon/icon-24@2x.png" width="48" />
<icon height="55" src="resources/ios/icon/icon-27.5@2x.png" width="55" />
<icon height="29" src="resources/ios/icon/icon-29.png" width="29" />
<icon height="58" src="resources/ios/icon/icon-29@2x.png" width="58" />
<icon height="87" src="resources/ios/icon/icon-29@3x.png" width="87" />
<icon height="40" src="resources/ios/icon/icon-40.png" width="40" />
<icon height="80" src="resources/ios/icon/icon-40@2x.png" width="80" />
<icon height="120" src="resources/ios/icon/icon-40@3x.png" width="120" />
<icon height="88" src="resources/ios/icon/icon-44@2x.png" width="88" />
<icon height="50" src="resources/ios/icon/icon-50.png" width="50" />
<icon height="100" src="resources/ios/icon/icon-50@2x.png" width="100" />
<icon height="60" src="resources/ios/icon/icon-60.png" width="60" />
<icon height="120" src="resources/ios/icon/icon-60@2x.png" width="120" />
<icon height="180" src="resources/ios/icon/icon-60@3x.png" width="180" />
<icon height="72" src="resources/ios/icon/icon-72.png" width="72" />
<icon height="144" src="resources/ios/icon/icon-72@2x.png" width="144" />
<icon height="76" src="resources/ios/icon/icon-76.png" width="76" />
<icon height="152" src="resources/ios/icon/icon-76@2x.png" width="152" />
<icon height="167" src="resources/ios/icon/icon-83.5@2x.png" width="167" />
<icon height="172" src="resources/ios/icon/icon-86@2x.png" width="172" />
<icon height="196" src="resources/ios/icon/icon-98@2x.png" width="196" />
<icon height="1024" src="resources/ios/icon/icon-1024.png" width="1024" />
<splash height="480" src="resources/ios/splash/Default~iphone.png" width="320" />
<splash height="960" src="resources/ios/splash/Default@2x~iphone.png" width="640" />
<splash height="1024" src="resources/ios/splash/Default-Portrait~ipad.png" width="768" />
<splash height="768" src="resources/ios/splash/Default-Landscape~ipad.png" width="1024" />
<splash height="1125" src="resources/ios/splash/Default-Landscape-2436h.png" width="2436" />
<splash height="1242" src="resources/ios/splash/Default-Landscape-736h.png" width="2208" />
<splash height="2048" src="resources/ios/splash/Default-Portrait@2x~ipad.png" width="1536" />
<splash height="1536" src="resources/ios/splash/Default-Landscape@2x~ipad.png" width="2048" />
<splash height="2732" src="resources/ios/splash/Default-Portrait@~ipadpro.png" width="2048" />
<splash height="2048" src="resources/ios/splash/Default-Landscape@~ipadpro.png" width="2732" />
<splash height="1136" src="resources/ios/splash/Default-568h@2x~iphone.png" width="640" />
<splash height="1334" src="resources/ios/splash/Default-667h.png" width="750" />
<splash height="2208" src="resources/ios/splash/Default-736h.png" width="1242" />
<splash height="2436" src="resources/ios/splash/Default-2436h.png" width="1125" />
<splash height="2732" src="resources/ios/splash/Default@2x~universal~anyany.png" width="2732" />
</platform>
<plugin name="cordova-plugin-statusbar" spec="2.4.2" />
<plugin name="cordova-plugin-device" spec="2.0.2" />
<plugin name="cordova-plugin-camera" spec="^6.0.0" />
<plugin name="cordova-plugin-splashscreen" spec="5.0.2" />
<plugin name="cordova-plugin-ionic-webview" spec="^5.0.0" />
<plugin name="cordova-plugin-ionic-keyboard" spec="^2.0.5" />
</widget>

7
ionic.config.json Normal file
View File

@ -0,0 +1,7 @@
{
"name": "vnms-app",
"integrations": {
"cordova": {}
},
"type": "angular"
}

44
karma.conf.js Normal file
View File

@ -0,0 +1,44 @@
// Karma configuration file, see link for more information
// https://karma-runner.github.io/1.0/config/configuration-file.html
module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['jasmine', '@angular-devkit/build-angular'],
plugins: [
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-jasmine-html-reporter'),
require('karma-coverage'),
require('@angular-devkit/build-angular/plugins/karma')
],
client: {
jasmine: {
// you can add configuration options for Jasmine here
// the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html
// for example, you can disable the random execution with `random: false`
// or set a specific seed with `seed: 4321`
},
clearContext: false // leave Jasmine Spec Runner output visible in browser
},
jasmineHtmlReporter: {
suppressAll: true // removes the duplicated traces
},
coverageReporter: {
dir: require('path').join(__dirname, './coverage/app'),
subdir: '.',
reporters: [
{ type: 'html' },
{ type: 'text-summary' }
]
},
reporters: ['progress', 'kjhtml'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
singleRun: false,
restartOnFileChange: true
});
};

18665
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

89
package.json Normal file
View File

@ -0,0 +1,89 @@
{
"name": "sts-school-app",
"version": "0.0.1",
"author": "Ionic Framework",
"homepage": "https://ionicframework.com/",
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"watch": "ng build --watch --configuration development",
"test": "ng test",
"lint": "ng lint"
},
"private": true,
"dependencies": {
"@angular/common": "^15.0.0",
"@angular/core": "^15.0.0",
"@angular/forms": "^15.0.0",
"@angular/material": "^15.0.0",
"@angular/platform-browser": "^15.0.0",
"@angular/platform-browser-dynamic": "^15.0.0",
"@angular/router": "^15.0.0",
"@awesome-cordova-plugins/camera": "^6.2.0",
"@awesome-cordova-plugins/splash-screen": "^6.2.0",
"@awesome-cordova-plugins/status-bar": "^6.2.0",
"@ionic/angular": "^6.1.9",
"@ionic/cli": "^7.1.1",
"@ionic/cordova-builders": "^7.0.0",
"@ionic/storage-angular": "^3.0.6",
"ionicons": "^6.0.3",
"ng2-charts": "^4.1.1",
"rxjs": "~7.5.0",
"tslib": "^2.3.0",
"zone.js": "~0.11.4"
},
"devDependencies": {
"@angular-devkit/build-angular": "^15.0.0",
"@angular-eslint/builder": "^14.0.0",
"@angular-eslint/eslint-plugin": "^14.0.0",
"@angular-eslint/eslint-plugin-template": "^14.0.0",
"@angular-eslint/template-parser": "^14.0.0",
"@angular/cli": "^15.0.0",
"@angular/compiler": "^15.0.0",
"@angular/compiler-cli": "^15.0.0",
"@angular/language-service": "^15.0.0",
"@ionic/angular-toolkit": "^6.0.0",
"@types/jasmine": "~4.0.0",
"@types/node": "^12.11.1",
"@typescript-eslint/eslint-plugin": "5.3.0",
"@typescript-eslint/parser": "5.3.0",
"cordova-android": "^12.0.0",
"cordova-plugin-camera": "^6.0.0",
"cordova-plugin-device": "^2.0.2",
"cordova-plugin-ionic-keyboard": "^2.0.5",
"cordova-plugin-ionic-webview": "^5.0.0",
"cordova-plugin-splashscreen": "5.0.2",
"cordova-plugin-statusbar": "^2.4.2",
"eslint": "^7.6.0",
"eslint-plugin-import": "2.22.1",
"eslint-plugin-jsdoc": "30.7.6",
"eslint-plugin-prefer-arrow": "1.2.2",
"jasmine-core": "~4.3.0",
"jasmine-spec-reporter": "~5.0.0",
"karma": "~6.4.0",
"karma-chrome-launcher": "~3.1.0",
"karma-coverage": "~2.2.0",
"karma-coverage-istanbul-reporter": "~3.0.2",
"karma-jasmine": "~5.1.0",
"karma-jasmine-html-reporter": "~2.0.0",
"ts-node": "~8.3.0",
"typescript": "~4.8.4"
},
"description": "An Ionic project",
"cordova": {
"plugins": {
"cordova-plugin-statusbar": {},
"cordova-plugin-device": {},
"cordova-plugin-splashscreen": {},
"cordova-plugin-ionic-webview": {},
"cordova-plugin-ionic-keyboard": {},
"cordova-plugin-camera": {
"ANDROIDX_CORE_VERSION": "1.6.+"
}
},
"platforms": [
"android"
]
}
}

8
resources/README.md Normal file
View File

@ -0,0 +1,8 @@
These are Cordova resources. You can replace icon.png and splash.png and run
`ionic cordova resources` to generate custom icons and splash screens for your
app. See `ionic cordova resources --help` for details.
Cordova reference documentation:
- Icons: https://cordova.apache.org/docs/en/latest/config_ref/images.html
- Splash Screens: https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-splashscreen/

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">localhost</domain>
</domain-config>
</network-security-config>

BIN
resources/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 686 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

BIN
resources/ios/icon/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
resources/splash.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

View File

@ -0,0 +1,55 @@
import { NgModule } from '@angular/core';
import { PreloadAllModules, RouterModule, Routes } from '@angular/router';
import { AuthenticationComponent } from './pages/authentication/authentication.component';
import { vnmsComponent } from './pages/vnms/vnms/vnms.component';
import { AuthGuard } from './guard/auth.guard';
const routes: Routes = [
// {
// path: 'home',
// loadChildren: () => import('./home/home.module').then( m => m.HomePageModule)
// },
// {
// path: '',
// redirectTo: 'home',
// pathMatch: 'full'
// },
{
path: '',
redirectTo: 'authentication',
pathMatch: 'full'
},
{
path : '',
component:vnmsComponent,
canActivate:[AuthGuard],
children :[
{
path:'vnms',
loadChildren: () => import('./pages/vnms/vnms.module').then(m=>m.vnmsModule),
}
]
},
{
path : '',
component:AuthenticationComponent,
children:[
{
path : 'authentication',
loadChildren:()=> import('./pages/authentication/authentication.module').then(m=>m.AuthenticationModule)
}
]
},
{
path: 'home',
loadChildren: () => import('./home/home.module').then(m => m.HomePageModule)
},
];
@NgModule({
imports: [
RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules })
],
exports: [RouterModule]
})
export class AppRoutingModule { }

140
src/app/app.component.html Normal file
View File

@ -0,0 +1,140 @@
<ion-app>
<ion-split-pane contentId="main-content">
<ion-menu contentId="main-content" type="overlay" class="full-width-menu">
<ion-header>
<ion-toolbar color="dark" class="user-profile">
<!-- <ion-item margin-bottom> -->
<!-- <ion-avatar slot="start" class="user-avatar">
<img src="assets/img/avatar.png">
</ion-avatar> -->
<ion-grid>
<ion-row>
<ion-col size="2" > <img src="assets/assets/icon/arrow-square-right.png"></ion-col>
<ion-col size="10" style="padding-left: 4rem;"> <ion-text color="medium" >
<span class="t-title" style="text-transform: capitalize;">My Account</span>
</ion-text></ion-col>
</ion-row>
</ion-grid>
<ion-label >
<!-- <ion-text color="secondary">
<h3>
{{user_role}}
</h3>
</ion-text> -->
<!-- <ion-menu-toggle class="mto" auto-hide="false">
<a class="text08" tappable (click)="goToEditProgile()">
<ion-text color="medium">
<ion-icon name="cog-outline"></ion-icon>
<strong>Edit profile</strong>
</ion-text>
</a> <ion-text color="secondary"> | </ion-text>
<a class="text08" tappable (click)="logout()">
<ion-text color="medium">
<ion-icon name="log-out"></ion-icon>
<strong>Logout</strong>
</ion-text>
</a>
</ion-menu-toggle> -->
</ion-label>
<!-- </ion-item> -->
</ion-toolbar>
</ion-header>
<ion-content class="menu_content">
<div class="menu-header" style="text-align:center !important;" >
<!--material-design-background-->
<!-- <img class="user-avatar round" style="height:111px;max-width:111px;" [src]="userDetails.profilepic" onerror="this.src='assets/img/avatar/girl-avatar.png'"
/> -->
<!-- <p class="name">{{userDetails.user_first_name}} {{userDetails.user_last_name}}</p>
<span>({{userDetails.role_name}})</span> -->
</div>
<!-- <div class="menu-header" style="text-align:center !important;" >
material-design-background-->
<!-- <img class="user-avatar round" style="height:111px;max-width:111px;" src="../../../../assets/img/avatar/girl-avatar.png" onerror="this.src='assets/img/avatar/girl-avatar.png'"
/>
<p class="name">Sineedge PD Officer</p>
</div> -->
<div class="hr"></div>
<ion-grid class="grid-content">
<ion-row>
<ion-col > <span class="content">
Gopikrishnan<br />
<span class="content-min content-sm">
gopikrishnan@gmail.com</span>
</span></ion-col>
</ion-row>
</ion-grid>
<ion-card *ngFor="let item of appPages; let i = index" (click)="getImg(i,item.title)" style=" margin-top: 1rem;" [routerLink]="[item.url]" >
<ion-card-header>
<ion-card-title>
<ion-grid>
<ion-row>
<ion-col size="2" style=" padding-left: 1rem;"> <img [src]="i === imgVal ? item.src2 : item.src"></ion-col>
<ion-col size="8" >
<span style="text-transform: capitalize;"> {{ item.title }}</span>
</ion-col>
<ion-col size="2" style=" padding-left: 1rem;" >
<!-- <img src="assets/assets/icon/menu/arrow-col.png"> -->
<img [src]="i != imgVal ? 'assets/assets/icon/menu/arrow-col.png' : 'assets/assets/icon/menu/arrow.png'">
</ion-col>
</ion-row>
</ion-grid>
</ion-card-title>
</ion-card-header>
<!-- <ion-card-content>
{{ item.content }}
</ion-card-content> -->
</ion-card>
<ion-card style=" margin-top: 6rem;" (click)="logout()">
<ion-card-header>
<ion-card-title>
<ion-grid>
<ion-row>
<ion-col size="2" > <img src="assets/assets/icon/menu/logout-col.png"></ion-col>
<ion-col size="8" >
<span style="text-transform: capitalize;"> Log Out</span>
</ion-col>
<ion-col size="2" >
<!-- <img src="assets/assets/icon/menu/logout-col.png"> -->
</ion-col>
</ion-row>
</ion-grid>
</ion-card-title>
</ion-card-header>
</ion-card>
<ion-row>
<ion-col style="text-align: center;"> v1.0</ion-col>
</ion-row>
</ion-content>
</ion-menu>
<ion-router-outlet id="main-content"></ion-router-outlet>
</ion-split-pane>
<!-- <div class="body-container"> -->
<!-- <ion-router-outlet id="main-content"></ion-router-outlet> -->
<!-- </div> -->
</ion-app>

130
src/app/app.component.scss Normal file
View File

@ -0,0 +1,130 @@
:host {
// ion-content {
// //--background: linear-gradient(135deg, var(--ion-color-dark), var(--ion-color-primary));
// }
// ion-list {
// &.list-md {
// padding: 0;
// }
// }
ion-card-header{
padding: 1px;
}
ion-content{
padding: 2rem;
}
ion-card{
margin-left: 1.5rem;
margin-right: 1.5rem;
}
}
.full-width-menu {
--width: 100%;
}
.t-title{
color: #FFF;
font-size: 18px;
font-family: Roboto;
font-style: normal;
font-weight: 500;
line-height: 16px;text-align: center;
}
ion-toolbar {
//text-align: center;
}
.content{
color: var(--text-4, #3A3A3A);
font-size: 20px;
font-family: Roboto;
font-style: normal;
font-weight: 500;
line-height: 16px;
}
.content-sm{
color: var(--text-4, #3A3A3A);
font-size: 16px;
font-family: Roboto;
font-style: normal;
font-weight: 400;
line-height: 16px;
}
.grid-content{
// padding: 7.5px;
margin: 2rem;
}
ion-card {
margin-bottom: 10px;
border-radius: 10px;
background: var(--white, #FFF);
/* white */
box-shadow: 0px 2px 5px 0px rgba(0, 0, 0, 0.15);
}
ion-card-header {
ion-card-title {
color: #3A3A3A;
font-size: 16px;
font-family: Roboto;
font-style: normal;
font-weight: 400;
line-height: normal;
}
}
ion-card-content {
padding: 15px;
}
ion-card-content:hover {
background-color: #043FB9; /* Set the desired hover background color */
ion-card-title{
color: #fff;
}
}
ion-card-content:hover {
background-color: #043FB9; /* Set the desired hover background color */
ion-card-title{
color: #fff;
}
}
/* Add hover effects to the card content */
ion-card:hover ion-card-content:hover{
ion-card-title{
color: #fff;
}
color: #fff; /* Set the desired hover text color */
}
/* Add hover effects to the card header */
ion-card:hover ion-card-header:hover {
background-color: #043FB9; /* Set the desired hover header background color */
ion-card-title{
color: #fff;
}
}
ion-card-content:hover {
color: #fff; /* Set the desired hover text color */
ion-card-title{
color: #fff;
}
}

View File

@ -0,0 +1,21 @@
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { TestBed } from '@angular/core/testing';
import { AppComponent } from './app.component';
describe('AppComponent', () => {
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [AppComponent],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
}).compileComponents();
});
it('should create the app', () => {
const fixture = TestBed.createComponent(AppComponent);
const app = fixture.componentInstance;
expect(app).toBeTruthy();
});
});

249
src/app/app.component.ts Normal file
View File

@ -0,0 +1,249 @@
import { Component } from '@angular/core';
import { Platform, NavController, MenuController } from '@ionic/angular';
import { SplashScreen } from '@awesome-cordova-plugins/splash-screen/ngx';
import { StatusBar } from '@awesome-cordova-plugins/status-bar/ngx';
import { Pages } from './interfaces/pages';
import { VnmsService } from './pages/vnms/vnms.service';
@Component({
selector: 'app-root',
templateUrl: 'app.component.html',
styleUrls: ['app.component.scss'],
})
export class AppComponent {
public appPages: Array<Pages>;
user:any =[];
user_role:any =[];
imgVal:any=-10;;
constructor(
private platform: Platform,private menuCtrl: MenuController,
private splashScreen: SplashScreen,
private statusBar: StatusBar,
public navCtrl: NavController,public _api:VnmsService,
) {
this._api.sideDetails_observable$.subscribe((res:any) => {
console.log('menu', res);
if(res.length != 0){
localStorage.setItem('user_name',res.userName)
localStorage.setItem('user_role',res.role)
this.user = res.userName
this.user_role = res.role
if( this.user_role == 'DRIVER'){
//this.appPages.filter((arr:any)=>{return arr.title == 'Delivery list'})
}else{
//this.appPages.filter((arr:any)=>{return arr.title == 'Orders'})
}
}
})
this.user = localStorage.getItem('user_name')
this.user_role = localStorage.getItem('user_role')
this.appPages = [
{
title: 'Home',
url: '/home-results',
direct: 'root',
icon: 'home',
src:'assets/assets/icon/menu/home-col.png',
src2:'assets/assets/icon/menu/home.png'
},
{
title: 'My Orders',
url: '/view-report',
direct: 'forward',
icon: 'list',
src:'assets/assets/icon/menu/list-col.png',
src2:'assets/assets/icon/menu/list.png'
},
{
title: 'Orders',
url: '/driver-list',
direct: 'forward',
icon: 'list',
src:'assets/assets/icon/dark-box.png',
src2:'assets/assets/icon/box.png'
},
{
title: 'Order Summary',
url: '/driver-list/list/return/summary',
direct: 'forward',
icon: 'list',
src:'assets/assets/icon/menu/list-col.png',
src2:'assets/assets/icon/menu/list.png'
},
{
title: 'My Profile',
url: '/edit-profile',
direct: 'forward',
icon: 'list',
src:'assets/assets/icon/menu/profile-col.png',
src2:'assets/assets/icon/menu/profile.png'
},
{
title: 'Our Services',
url: '/settings',
direct: 'forward',
icon: 'cog',
src:'assets/assets/icon/menu/service-col.png',
src2:'assets/assets/icon/menu/service.png'
},
{
title: 'Contact Us',
url: '/contact',
direct: 'forward',
icon: 'information-circle-outline',
src:'assets/assets/icon/menu/contact-col.png',
src2:'assets/assets/icon/menu/contact.png'
}
];
if( this.user_role == 'DRIVER'){
this.appPages = [
{
title: 'Home',
url: '/home-results',
direct: 'root',
icon: 'home',
src:'assets/assets/icon/menu/home-col.png',
src2:'assets/assets/icon/menu/home.png'
},
{
title: 'Orders',
url: '/driver-list',
direct: 'forward',
icon: 'list',
src:'assets/assets/icon/dark-box.png',
src2:'assets/assets/icon/box.png'
},
{
title: 'Order Summary',
url: '/driver-list/summary',
direct: 'forward',
icon: 'list',
src:'assets/assets/icon/menu/list-col.png',
src2:'assets/assets/icon/menu/list.png'
},
{
title: 'My Profile',
url: '/edit-profile',
direct: 'forward',
icon: 'list',
src:'assets/assets/icon/menu/profile-col.png',
src2:'assets/assets/icon/menu/profile.png'
},
{
title: 'Contact Us',
url: '/contact',
direct: 'forward',
icon: 'information-circle-outline',
src:'assets/assets/icon/menu/contact-col.png',
src2:'assets/assets/icon/menu/contact.png'
}
];
}else{
this.appPages = [
{
title: 'Home',
url: '/home-results',
direct: 'root',
icon: 'home',
src:'assets/assets/icon/menu/home-col.png',
src2:'assets/assets/icon/menu/home.png'
},
{
title: 'My Orders',
url: '/view-report',
direct: 'forward',
icon: 'list',
src:'assets/assets/icon/menu/list-col.png',
src2:'assets/assets/icon/menu/list.png'
},
{
title: 'My Profile',
url: '/edit-profile',
direct: 'forward',
icon: 'list',
src:'assets/assets/icon/menu/profile-col.png',
src2:'assets/assets/icon/menu/profile.png'
},
{
title: 'Our Services',
url: '/settings',
direct: 'forward',
icon: 'cog',
src:'assets/assets/icon/menu/service-col.png',
src2:'assets/assets/icon/menu/service.png'
},
{
title: 'Contact Us',
url: '/contact',
direct: 'forward',
icon: 'information-circle-outline',
src:'assets/assets/icon/menu/contact-col.png',
src2:'assets/assets/icon/menu/contact.png'
}
];
}
this.initializeApp();
console.log(this.user_role, this.appPages)
}
initializeApp() {
this.platform.ready().then(() => {
this.statusBar.styleDefault();
this.splashScreen.hide();
}).catch(() => {});
}
goToEditProgile() {
this.navCtrl.navigateForward('edit-profile');
}
logout() {
localStorage.clear();
this.navCtrl.navigateRoot('/');
}
getImg(i:any,title:any){
this.imgVal = i
this.closeMenu()
}
closeMenu() {
this.menuCtrl.close(); // Close the menu
}
}

65
src/app/app.module.ts Normal file
View File

@ -0,0 +1,65 @@
// import { NgModule } from '@angular/core';
// import { BrowserModule } from '@angular/platform-browser';
// import { RouteReuseStrategy } from '@angular/router';
// import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
// import { AppComponent } from './app.component';
// import { AppRoutingModule } from './app-routing.module';
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouteReuseStrategy } from '@angular/router';
import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';
import { AppComponent } from './app.component';
import { AppRoutingModule } from './app-routing.module';
import { FormsModule } from '@angular/forms';
import { CommonModule, HashLocationStrategy, LocationStrategy } from '@angular/common';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { MatButtonModule } from '@angular/material/button';
import { MatIconModule, } from '@angular/material/icon';
// import { IonicStorageModule } from '@ionic/storage';
import { IonicStorageModule } from '@ionic/storage-angular';
//import { CacheModule } from 'ionic-cache';
import { LoginModule } from './pages/authentication/login/login.module';
import { AuthenticationComponent } from './pages/authentication/authentication.component';
import { vnmsComponent } from './pages/vnms/vnms/vnms.component';
import { SplashScreen } from '@awesome-cordova-plugins/splash-screen/ngx';
import { StatusBar } from '@awesome-cordova-plugins/status-bar/ngx';
import { vnmsModule } from './pages/vnms/vnms.module';
import { AuthGuard } from './guard/auth.guard';
import { TokenInterceptor } from './guard/token.interceptor';
@NgModule({
declarations: [AppComponent,AuthenticationComponent,vnmsComponent],
imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule,
BrowserModule,
FormsModule,
CommonModule,
IonicModule.forRoot(),
AppRoutingModule,
vnmsModule,
BrowserAnimationsModule,
HttpClientModule,
IonicStorageModule.forRoot({
name: '_mydb',
driverOrder: ['indexeddb', 'sqlite', 'websql'],
}),
// CacheModule.forRoot(),
// ImageNameModule,
LoginModule,
//SocketIoModule.forRoot(socketConfig),
MatIconModule,
MatButtonModule,
],
providers: [ StatusBar,AuthGuard, {
provide: HTTP_INTERCEPTORS,
useClass: TokenInterceptor,
multi: true
},{provide: LocationStrategy, useClass: HashLocationStrategy},
SplashScreen,{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy }],
bootstrap: [AppComponent],
})
export class AppModule {}

View File

@ -0,0 +1,71 @@
import { Injectable } from '@angular/core';
import { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, CanActivateChild } from '@angular/router';
import { Observable , of } from 'rxjs';
// import { CognitoService } from '../AwsService/cognito.service';
@Injectable()
export class AuthGuard implements CanActivate, CanActivateChild {
constructor(private router: Router) { }
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
const token = localStorage.getItem('user_token');
if(token != '' && token != undefined && token != null){
return true
}else{
// alert("else");
// this.router.navigate(['auth/login']);
this.router.navigate(['/authentication/login'])
return false;
}
// if (this.shared.getToken()) {
// alert("if");
// // this.router.navigate(['']);
// return true
// } else {
// alert("else");
// this.router.navigate(['/login']);
// return false;
// }
}
canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
const token = localStorage.getItem('user_token');
console.log(token)
if(token != '' && token != undefined && token != null){
return true
}else{
// setTimeout(() => {
this.router.navigate(['/authentication/login']);
return false;
// },1000);
}
// if (this.shared.getCurrentUser() != null && this.shared.getToken()) {
// // alert("if");
// return true;
// } else {
// // alert("else");
// setTimeout(() => {
// this.router.navigate(['authentication/login']);
// return false;
// },1000);
// }
}
// public getToken(): string {
// return localStorage.getItem('token');
// }
// public logOut() {
// localStorage.clear();
// if(localStorage.getItem('token') === null){
// this.router.navigate(['/login']);
// }
// }
}

View File

@ -0,0 +1,16 @@
import { TestBed } from '@angular/core/testing';
import { TokenInterceptor } from './token.interceptor';
describe('TokenInterceptor', () => {
beforeEach(() => TestBed.configureTestingModule({
providers: [
TokenInterceptor
]
}));
it('should be created', () => {
const interceptor: TokenInterceptor = TestBed.inject(TokenInterceptor);
expect(interceptor).toBeTruthy();
});
});

View File

@ -0,0 +1,39 @@
import { Injectable } from '@angular/core';
import {
HttpRequest,
HttpHandler,
HttpEvent,
HttpInterceptor
} from '@angular/common/http';
import { Observable } from 'rxjs';
@Injectable()
export class TokenInterceptor implements HttpInterceptor {
constructor() {}
// intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<unknown>> {
// return next.handle(request);
// }
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
// const tokenUrl = 'http://example.com/token'; // replace with your token url
const token = localStorage.getItem('user_token');
let authReq:any; // get the token from local storage
if(token != '' && token != undefined && token != null){
authReq = req.clone({
setHeaders: {
// 'Authorization': environment.authorization,
'x-access-token': token
}
// headers: req.headers.set('x-access-token', token).set('Content-Type', 'multipart/form-data')
});
}else{
authReq = req;
}
return next.handle(authReq);
}
}

View File

@ -0,0 +1,16 @@
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { HomePage } from './home.page';
const routes: Routes = [
{
path: '',
component: HomePage,
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class HomePageRoutingModule {}

View File

@ -0,0 +1,19 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { IonicModule } from '@ionic/angular';
import { FormsModule } from '@angular/forms';
import { HomePage } from './home.page';
import { HomePageRoutingModule } from './home-routing.module';
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
HomePageRoutingModule
],
declarations: [HomePage]
})
export class HomePageModule {}

View File

@ -0,0 +1,20 @@
<ion-header [translucent]="true">
<ion-toolbar>
<ion-title>
Blank
</ion-title>
</ion-toolbar>
</ion-header>
<ion-content [fullscreen]="true">
<ion-header collapse="condense">
<ion-toolbar>
<ion-title size="large">Blank</ion-title>
</ion-toolbar>
</ion-header>
<div id="container">
<strong>Ready to create an app?</strong>
<p>Start with Ionic <a target="_blank" rel="noopener noreferrer" href="https://ionicframework.com/docs/components">UI Components</a></p>
</div>
</ion-content>

View File

@ -0,0 +1,27 @@
#container {
text-align: center;
position: absolute;
left: 0;
right: 0;
top: 50%;
transform: translateY(-50%);
}
#container strong {
font-size: 20px;
line-height: 26px;
}
#container p {
font-size: 16px;
line-height: 22px;
color: #8c8c8c;
margin: 0;
}
#container a {
text-decoration: none;
}

View File

@ -0,0 +1,24 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { IonicModule } from '@ionic/angular';
import { HomePage } from './home.page';
describe('HomePage', () => {
let component: HomePage;
let fixture: ComponentFixture<HomePage>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [HomePage],
imports: [IonicModule.forRoot()]
}).compileComponents();
fixture = TestBed.createComponent(HomePage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

12
src/app/home/home.page.ts Normal file
View File

@ -0,0 +1,12 @@
import { Component } from '@angular/core';
@Component({
selector: 'app-home',
templateUrl: 'home.page.html',
styleUrls: ['home.page.scss'],
})
export class HomePage {
constructor() {}
}

View File

@ -0,0 +1,8 @@
export interface Pages {
title: string;
url: any;
direct?: string;
icon?: string;
src?:string;
src2?:string;
}

View File

@ -0,0 +1,3 @@
<p>
myaccount works!
</p>

View File

@ -0,0 +1,24 @@
import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
import { IonicModule } from '@ionic/angular';
import { MyaccountComponent } from './myaccount.component';
describe('MyaccountComponent', () => {
let component: MyaccountComponent;
let fixture: ComponentFixture<MyaccountComponent>;
beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({
declarations: [ MyaccountComponent ],
imports: [IonicModule.forRoot()]
}).compileComponents();
fixture = TestBed.createComponent(MyaccountComponent);
component = fixture.componentInstance;
fixture.detectChanges();
}));
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@ -0,0 +1,14 @@
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-myaccount',
templateUrl: './myaccount.component.html',
styleUrls: ['./myaccount.component.scss'],
})
export class MyaccountComponent implements OnInit {
constructor() { }
ngOnInit() {}
}

View File

@ -0,0 +1,16 @@
import { TestBed } from '@angular/core/testing';
import { AuthService } from './auth.service';
describe('AuthService', () => {
let service: AuthService;
beforeEach(() => {
TestBed.configureTestingModule({});
service = TestBed.inject(AuthService);
});
it('should be created', () => {
expect(service).toBeTruthy();
});
});

View File

@ -0,0 +1,21 @@
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { BehaviorSubject, Observable, of } from 'rxjs';
import { catchError } from 'rxjs/operators';
import { environment } from '../../../environments/environment';
@Injectable({
providedIn: 'root'
})
export class AuthService {
private apiUrl = environment.apiEndpoint;
constructor(private _http: HttpClient) { }
getLoginToken(params:any): Observable<any> {
console.log(params.email)
return this._http.post<any>(this.apiUrl + "loginapp",{'email':params.email,'password':params.password})
}
}

View File

@ -0,0 +1 @@
<h1>safe</h1>

Some files were not shown because too many files have changed in this diff Show More