Compare commits
No commits in common. 'NEW-SFH-2022' and 'main' have entirely different histories.
NEW-SFH-20
...
main
@ -1,36 +0,0 @@
|
|||||||
# Specifies intentionally untracked files to ignore when using Git
|
|
||||||
# http://git-scm.com/docs/gitignore
|
|
||||||
|
|
||||||
*~
|
|
||||||
*.sw[mnpcod]
|
|
||||||
*.log
|
|
||||||
*.tmp
|
|
||||||
*.tmp.*
|
|
||||||
log.txt
|
|
||||||
*.sublime-project
|
|
||||||
*.sublime-workspace
|
|
||||||
.vscode/
|
|
||||||
npm-debug.log*
|
|
||||||
package-lock.json
|
|
||||||
package.json
|
|
||||||
|
|
||||||
.idea/
|
|
||||||
.ionic/
|
|
||||||
.sourcemaps/
|
|
||||||
.sass-cache/
|
|
||||||
.tmp/
|
|
||||||
.versions/
|
|
||||||
coverage/
|
|
||||||
www/
|
|
||||||
node_modules/
|
|
||||||
tmp/
|
|
||||||
temp/
|
|
||||||
platforms/
|
|
||||||
plugins/
|
|
||||||
plugins/android.json
|
|
||||||
plugins/ios.json
|
|
||||||
$RECYCLE.BIN/
|
|
||||||
|
|
||||||
.DS_Store
|
|
||||||
Thumbs.db
|
|
||||||
UserInterfaceState.xcuserstate
|
|
||||||
@ -1,36 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
||||||
<plist version="1.0">
|
|
||||||
<dict>
|
|
||||||
<key>CLIENT_ID</key>
|
|
||||||
<string>679409052782-3teqf8vdh9e1suvnhddj3pgmna7vg5rt.apps.googleusercontent.com</string>
|
|
||||||
<key>REVERSED_CLIENT_ID</key>
|
|
||||||
<string>com.googleusercontent.apps.679409052782-3teqf8vdh9e1suvnhddj3pgmna7vg5rt</string>
|
|
||||||
<key>API_KEY</key>
|
|
||||||
<string>AIzaSyCjMjhbeS7qilBoP4SH0t3SgkkHryf34JA</string>
|
|
||||||
<key>GCM_SENDER_ID</key>
|
|
||||||
<string>679409052782</string>
|
|
||||||
<key>PLIST_VERSION</key>
|
|
||||||
<string>1</string>
|
|
||||||
<key>BUNDLE_ID</key>
|
|
||||||
<string>com.cloudsolutions.mohemm</string>
|
|
||||||
<key>PROJECT_ID</key>
|
|
||||||
<string>mohemm-dce93</string>
|
|
||||||
<key>STORAGE_BUCKET</key>
|
|
||||||
<string>mohemm-dce93.appspot.com</string>
|
|
||||||
<key>IS_ADS_ENABLED</key>
|
|
||||||
<false></false>
|
|
||||||
<key>IS_ANALYTICS_ENABLED</key>
|
|
||||||
<false></false>
|
|
||||||
<key>IS_APPINVITE_ENABLED</key>
|
|
||||||
<true></true>
|
|
||||||
<key>IS_GCM_ENABLED</key>
|
|
||||||
<true></true>
|
|
||||||
<key>IS_SIGNIN_ENABLED</key>
|
|
||||||
<true></true>
|
|
||||||
<key>GOOGLE_APP_ID</key>
|
|
||||||
<string>1:679409052782:ios:ace07cf8ba043b48a78a7f</string>
|
|
||||||
<key>DATABASE_URL</key>
|
|
||||||
<string>https://mohemm-dce93.firebaseio.com</string>
|
|
||||||
</dict>
|
|
||||||
</plist>
|
|
||||||
@ -1,200 +0,0 @@
|
|||||||
{
|
|
||||||
"$schema": "./node_modules/@angular-devkit/core/src/workspace/workspace-schema.json",
|
|
||||||
"version": 1,
|
|
||||||
"defaultProject": "app",
|
|
||||||
"newProjectRoot": "projects",
|
|
||||||
"projects": {
|
|
||||||
"app": {
|
|
||||||
"root": "",
|
|
||||||
"sourceRoot": "src",
|
|
||||||
"projectType": "application",
|
|
||||||
"prefix": "app",
|
|
||||||
"schematics": {},
|
|
||||||
"architect": {
|
|
||||||
"build": {
|
|
||||||
"builder": "@angular-devkit/build-angular:browser",
|
|
||||||
"options": {
|
|
||||||
"outputPath": "www",
|
|
||||||
"index": "src/index.html",
|
|
||||||
"main": "src/main.ts",
|
|
||||||
"polyfills": "src/polyfills.ts",
|
|
||||||
"tsConfig": "src/tsconfig.app.json",
|
|
||||||
"assets": [
|
|
||||||
{
|
|
||||||
"glob": "**/*",
|
|
||||||
"input": "src/assets",
|
|
||||||
"output": "assets"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"glob": "**/*.svg",
|
|
||||||
"input": "node_modules/ionicons/dist/ionicons/svg",
|
|
||||||
"output": "./svg"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"styles": [
|
|
||||||
{
|
|
||||||
"input": "src/theme/variables.scss"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"input": "src/global.scss"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"input": "src/app/app.scss"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"scripts": ["node_modules/chart.js/dist/Chart.js"],
|
|
||||||
"es5BrowserSupport": true
|
|
||||||
},
|
|
||||||
"configurations": {
|
|
||||||
"production": {
|
|
||||||
"fileReplacements": [
|
|
||||||
{
|
|
||||||
"replace": "src/environments/environment.ts",
|
|
||||||
"with": "src/environments/environment.prod.ts"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"optimization": true,
|
|
||||||
"outputHashing": "all",
|
|
||||||
"sourceMap": false,
|
|
||||||
"extractCss": true,
|
|
||||||
"namedChunks": false,
|
|
||||||
"aot": true,
|
|
||||||
"extractLicenses": true,
|
|
||||||
"vendorChunk": false,
|
|
||||||
"buildOptimizer": true,
|
|
||||||
"budgets": [
|
|
||||||
{
|
|
||||||
"type": "initial",
|
|
||||||
"maximumWarning": "2mb",
|
|
||||||
"maximumError": "5mb"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"ci": {
|
|
||||||
"progress": false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"serve": {
|
|
||||||
"builder": "@angular-devkit/build-angular:dev-server",
|
|
||||||
"options": {
|
|
||||||
"browserTarget": "app:build"
|
|
||||||
},
|
|
||||||
"configurations": {
|
|
||||||
"production": {
|
|
||||||
"browserTarget": "app:build:production"
|
|
||||||
},
|
|
||||||
"ci": {
|
|
||||||
"progress": false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"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": "src/tsconfig.spec.json",
|
|
||||||
"karmaConfig": "src/karma.conf.js",
|
|
||||||
"styles": [],
|
|
||||||
"scripts": [],
|
|
||||||
"assets": [
|
|
||||||
{
|
|
||||||
"glob": "favicon.ico",
|
|
||||||
"input": "src/",
|
|
||||||
"output": "/"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"glob": "**/*",
|
|
||||||
"input": "src/assets",
|
|
||||||
"output": "/assets"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"configurations": {
|
|
||||||
"ci": {
|
|
||||||
"progress": false,
|
|
||||||
"watch": false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"lint": {
|
|
||||||
"builder": "@angular-devkit/build-angular:tslint",
|
|
||||||
"options": {
|
|
||||||
"tsConfig": ["src/tsconfig.app.json", "src/tsconfig.spec.json"],
|
|
||||||
"exclude": ["**/node_modules/**"]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ionic-cordova-build": {
|
|
||||||
"builder": "@ionic/angular-toolkit:cordova-build",
|
|
||||||
"options": {
|
|
||||||
"browserTarget": "app:build"
|
|
||||||
},
|
|
||||||
"configurations": {
|
|
||||||
"production": {
|
|
||||||
"browserTarget": "app:build:production"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ionic-cordova-serve": {
|
|
||||||
"builder": "@ionic/angular-toolkit:cordova-serve",
|
|
||||||
"options": {
|
|
||||||
"cordovaBuildTarget": "app:ionic-cordova-build",
|
|
||||||
"devServerTarget": "app:serve"
|
|
||||||
},
|
|
||||||
"configurations": {
|
|
||||||
"production": {
|
|
||||||
"cordovaBuildTarget": "app:ionic-cordova-build:production",
|
|
||||||
"devServerTarget": "app:serve:production"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"app-e2e": {
|
|
||||||
"root": "e2e/",
|
|
||||||
"projectType": "application",
|
|
||||||
"architect": {
|
|
||||||
"e2e": {
|
|
||||||
"builder": "@angular-devkit/build-angular:protractor",
|
|
||||||
"options": {
|
|
||||||
"protractorConfig": "e2e/protractor.conf.js",
|
|
||||||
"devServerTarget": "app:serve"
|
|
||||||
},
|
|
||||||
"configurations": {
|
|
||||||
"production": {
|
|
||||||
"devServerTarget": "app:serve:production"
|
|
||||||
},
|
|
||||||
"ci": {
|
|
||||||
"devServerTarget": "app:serve:ci"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"lint": {
|
|
||||||
"builder": "@angular-devkit/build-angular:tslint",
|
|
||||||
"options": {
|
|
||||||
"tsConfig": "e2e/tsconfig.e2e.json",
|
|
||||||
"exclude": ["**/node_modules/**"]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"cli": {
|
|
||||||
"defaultCollection": "@ionic/angular-toolkit"
|
|
||||||
},
|
|
||||||
"schematics": {
|
|
||||||
"@ionic/angular-toolkit:component": {
|
|
||||||
"styleext": "scss"
|
|
||||||
},
|
|
||||||
"@ionic/angular-toolkit:page": {
|
|
||||||
"styleext": "scss"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,145 +0,0 @@
|
|||||||
<?xml version='1.0' encoding='utf-8'?>
|
|
||||||
<widget id="com.cloudsolutions.mohemm" version="3.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
|
|
||||||
<name>MOHEMM</name>
|
|
||||||
<description>an app created by cloud Solutions</description>
|
|
||||||
<author email="eservicescs@cloudsolution-sa.com" href="http://cloudsolution-sa.com">Cloud Solutions</author>
|
|
||||||
<content src="index.html" />
|
|
||||||
<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="KeyboardResize" value="true" />
|
|
||||||
<preference name="KeyboardResizeMode" value="native" />
|
|
||||||
<preference name="HideKeyboardFormAccessoryBar" value="false" />
|
|
||||||
<preference name="BackupWebStorage" value="none" />
|
|
||||||
<preference name="SplashMaintainAspectRatio" value="true" />
|
|
||||||
<preference name="FadeSplashScreenDuration" value="1000" />
|
|
||||||
<preference name="SplashShowOnlyFirstTime" value="false" />
|
|
||||||
<preference name="SplashScreen" value="screen" />
|
|
||||||
<preference name="fullscreen" value="false" />
|
|
||||||
<preference name="FadeSplashScreen" value="false" />
|
|
||||||
<preference name="AutoHideSplashScreen" value="false" />
|
|
||||||
<preference name="ShowSplashScreenSpinner" value="false" />
|
|
||||||
<preference name="orientation" value="portrait" />
|
|
||||||
<platform name="android">
|
|
||||||
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
<application android:networkSecurityConfig="@xml/network_security_config" />
|
|
||||||
</edit-config>
|
|
||||||
<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" />
|
|
||||||
<feature name="SocialSharing">
|
|
||||||
<param name="android-package" value="nl.xservices.plugins.SocialSharing" />
|
|
||||||
</feature>
|
|
||||||
</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="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="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="1024" src="resources/ios/icon/icon-1024.png" width="1024" />
|
|
||||||
<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="1242" src="resources/ios/splash/Default-Landscape-736h.png" width="2208" />
|
|
||||||
<splash height="1536" src="resources/ios/splash/Default-Landscape@2x~ipad.png" width="2048" />
|
|
||||||
<splash height="2048" src="resources/ios/splash/Default-Landscape@~ipadpro.png" width="2732" />
|
|
||||||
<splash height="768" src="resources/ios/splash/Default-Landscape~ipad.png" width="1024" />
|
|
||||||
<splash height="2048" src="resources/ios/splash/Default-Portrait@2x~ipad.png" width="1536" />
|
|
||||||
<splash height="2732" src="resources/ios/splash/Default-Portrait@~ipadpro.png" width="2048" />
|
|
||||||
<splash height="1024" src="resources/ios/splash/Default-Portrait~ipad.png" width="768" />
|
|
||||||
<splash height="960" src="resources/ios/splash/Default@2x~iphone.png" width="640" />
|
|
||||||
<splash height="480" src="resources/ios/splash/Default~iphone.png" width="320" />
|
|
||||||
<splash height="2732" src="resources/ios/splash/Default@2x~universal~anyany.png" width="2732" />
|
|
||||||
<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="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="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="88" src="resources/ios/icon/icon-44@2x.png" width="88" />
|
|
||||||
<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="216" src="resources/ios/icon/icon-108@2x.png" width="216" />
|
|
||||||
<splash height="2688" src="resources/ios/splash/Default-2688h~iphone.png" width="1242" />
|
|
||||||
<splash height="1242" src="resources/ios/splash/Default-Landscape-2688h~iphone.png" width="2688" />
|
|
||||||
<splash height="1792" src="resources/ios/splash/Default-1792h~iphone.png" width="828" />
|
|
||||||
<splash height="828" src="resources/ios/splash/Default-Landscape-1792h~iphone.png" width="1792" />
|
|
||||||
<splash height="2436" src="resources/ios/splash/Default-2436h.png" width="1125" />
|
|
||||||
<splash height="1125" src="resources/ios/splash/Default-Landscape-2436h.png" width="2436" />
|
|
||||||
</platform>
|
|
||||||
<platform name="android">
|
|
||||||
<preference name="android-minSdkVersion" value="22" />
|
|
||||||
<preference name="android-targetSdkVersion" value="30" />
|
|
||||||
</platform>
|
|
||||||
<plugin name="cordova-plugin-whitelist" spec="1.3.3" />
|
|
||||||
<plugin name="cordova-plugin-statusbar" spec="2.4.2" />
|
|
||||||
<plugin name="cordova-plugin-splashscreen" spec="5.0.2" />
|
|
||||||
<plugin name="cordova-plugin-geolocation" spec="~4.0.1" />
|
|
||||||
<plugin name="cordova-plugin-datepicker" spec="~0.9.3" />
|
|
||||||
<plugin name="cordova-plugin-ionic-webview" spec="4.1.0">
|
|
||||||
<variable name="ANDROID_SUPPORT_ANNOTATIONS_VERSION" value="27.+" />
|
|
||||||
</plugin>
|
|
||||||
<plugin name="cordova-sqlite-storage" spec="^3.4.0" />
|
|
||||||
<plugin name="cordova-plugin-nativestorage" spec="^2.3.2" />
|
|
||||||
<plugin name="cordova-plugin-ble-central" spec="^1.2.4" />
|
|
||||||
<plugin name="uk.co.workingedge.phonegap.plugin.launchnavigator" spec="^3.2.2" />
|
|
||||||
<plugin name="cordova-plugin-themeablebrowser" spec="^0.2.18" />
|
|
||||||
<plugin name="cordova-plugin-globalization" spec="^1.11.0" />
|
|
||||||
<plugin name="cordova-plugin-android-permissions" spec="^1.0.2" />
|
|
||||||
<plugin name="cordova-plugin-device" spec="^2.0.3" />
|
|
||||||
<plugin name="cordova-plugin-local-notification" spec="^0.9.0-beta.2" />
|
|
||||||
<plugin name="cordova-plugin-badge" spec="^0.8.8" />
|
|
||||||
<plugin name="cordova.plugins.diagnostic" spec="^5.0.1" />
|
|
||||||
<plugin name="phonegap-plugin-barcodescanner" spec="^8.1.0">
|
|
||||||
<variable name="ANDROID_SUPPORT_V4_VERSION" value="27.+" />
|
|
||||||
</plugin>
|
|
||||||
<plugin name="cordova-plugin-camera" spec="^4.1.0" />
|
|
||||||
<plugin name="cordova-plugin-ionic-keyboard" spec="^2.2.0" />
|
|
||||||
<plugin name="cordova-plugin-appavailability" spec="^0.4.2" />
|
|
||||||
<plugin name="cordova-plugin-apprate" spec="^1.4.0" />
|
|
||||||
<plugin name="cordova-plugin-file" spec="^6.0.2" />
|
|
||||||
<plugin name="cordova-plugin-filepath" spec="^1.5.6" />
|
|
||||||
<plugin name="com-badrit-base64" spec="^0.2.0" />
|
|
||||||
<plugin name="cordova-plugin-fingerprint-aio" spec="^3.0.0">
|
|
||||||
<variable name="FACEID_USAGE_DESCRIPTION" value="User Authentication" />
|
|
||||||
</plugin>
|
|
||||||
<allow-navigation href="http://localhost:8100" sessionid="ccddd6d3" />
|
|
||||||
</widget>
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
// Protractor configuration file, see link for more information
|
|
||||||
// https://github.com/angular/protractor/blob/master/lib/config.ts
|
|
||||||
|
|
||||||
const { SpecReporter } = require('jasmine-spec-reporter');
|
|
||||||
|
|
||||||
exports.config = {
|
|
||||||
allScriptsTimeout: 11000,
|
|
||||||
specs: [
|
|
||||||
'./src/**/*.e2e-spec.ts'
|
|
||||||
],
|
|
||||||
capabilities: {
|
|
||||||
'browserName': 'chrome'
|
|
||||||
},
|
|
||||||
directConnect: true,
|
|
||||||
baseUrl: 'http://localhost:4200/',
|
|
||||||
framework: 'jasmine',
|
|
||||||
jasmineNodeOpts: {
|
|
||||||
showColors: true,
|
|
||||||
defaultTimeoutInterval: 30000,
|
|
||||||
print: function() {}
|
|
||||||
},
|
|
||||||
onPrepare() {
|
|
||||||
require('ts-node').register({
|
|
||||||
project: require('path').join(__dirname, './tsconfig.e2e.json')
|
|
||||||
});
|
|
||||||
jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
@ -1,14 +0,0 @@
|
|||||||
import { AppPage } from './app.po';
|
|
||||||
|
|
||||||
describe('new App', () => {
|
|
||||||
let page: AppPage;
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
page = new AppPage();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should be blank', () => {
|
|
||||||
page.navigateTo();
|
|
||||||
expect(page.getParagraphText()).toContain('The world is your oyster.');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@ -1,11 +0,0 @@
|
|||||||
import { browser, by, element } from 'protractor';
|
|
||||||
|
|
||||||
export class AppPage {
|
|
||||||
navigateTo() {
|
|
||||||
return browser.get('/');
|
|
||||||
}
|
|
||||||
|
|
||||||
getParagraphText() {
|
|
||||||
return element(by.deepCss('app-root ion-content')).getText();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
"extends": "../tsconfig.json",
|
|
||||||
"compilerOptions": {
|
|
||||||
"outDir": "../out-tsc/app",
|
|
||||||
"module": "commonjs",
|
|
||||||
"target": "es5",
|
|
||||||
"types": [
|
|
||||||
"jasmine",
|
|
||||||
"jasminewd2",
|
|
||||||
"node"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,40 +0,0 @@
|
|||||||
{
|
|
||||||
"project_info": {
|
|
||||||
"project_number": "679409052782",
|
|
||||||
"firebase_url": "https://mohemm-dce93.firebaseio.com",
|
|
||||||
"project_id": "mohemm-dce93",
|
|
||||||
"storage_bucket": "mohemm-dce93.appspot.com"
|
|
||||||
},
|
|
||||||
"client": [
|
|
||||||
{
|
|
||||||
"client_info": {
|
|
||||||
"mobilesdk_app_id": "1:679409052782:android:dba155ac0859d7fea78a7f",
|
|
||||||
"android_client_info": {
|
|
||||||
"package_name": "hmg.cloudSolutions.mohem"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"oauth_client": [
|
|
||||||
{
|
|
||||||
"client_id": "679409052782-mtd6d8rjltucnm9uatn6g7et08sm6lbv.apps.googleusercontent.com",
|
|
||||||
"client_type": 3
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"api_key": [
|
|
||||||
{
|
|
||||||
"current_key": "AIzaSyDgWjuSBIKGghWxYg_KGBRIZTi-O_UA8mU"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"services": {
|
|
||||||
"appinvite_service": {
|
|
||||||
"other_platform_oauth_client": [
|
|
||||||
{
|
|
||||||
"client_id": "679409052782-mtd6d8rjltucnm9uatn6g7et08sm6lbv.apps.googleusercontent.com",
|
|
||||||
"client_type": 3
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"configuration_version": "1"
|
|
||||||
}
|
|
||||||
@ -1,162 +0,0 @@
|
|||||||
@echo start installing required native and 3rd party plugins
|
|
||||||
|
|
||||||
@echo to update angular -> npm install -g @angular/cli
|
|
||||||
@echo to update ionic -> npm install -g ionic
|
|
||||||
|
|
||||||
@echo add browser, android , ios platforms commit non required
|
|
||||||
@echo to add browser -> call ionic cordova platform add browser
|
|
||||||
@echo to add ios -> call ionic cordova platform add ios
|
|
||||||
|
|
||||||
call ionic cordova platform add android
|
|
||||||
|
|
||||||
|
|
||||||
@echo copying android FCM google servcie file
|
|
||||||
call cp ./google-services.json ./platforms/android/
|
|
||||||
|
|
||||||
call npm i @angular/animations
|
|
||||||
call npm i @swimlane/ngx-charts --save
|
|
||||||
|
|
||||||
@echo primeng framework [angular]
|
|
||||||
|
|
||||||
call npm install primeng --save
|
|
||||||
call npm install primeicons --save
|
|
||||||
|
|
||||||
@echo add css links for primeng in global.scss
|
|
||||||
@echo @import "../node_modules/primeng/resources/themes/nova-light/theme.css";
|
|
||||||
@echo @import "../node_modules/primeng/resources/primeng.min.css";
|
|
||||||
@echo @import "../node_modules/primeicons/primeicons.css";
|
|
||||||
|
|
||||||
@echo install chartjs as dependency for primeng chartjs
|
|
||||||
call npm install chart.js --save
|
|
||||||
@echo add reference in [angular.json] in [scripts] array add (node_modules/chart.js/dist/Chart.js)
|
|
||||||
|
|
||||||
|
|
||||||
@echo calendar https://mattlewis92.github.io/angular-calendar/#/kitchen-sink
|
|
||||||
call npm install --save @ng-bootstrap/ng-bootstrap
|
|
||||||
call npm install --save angular-calendar date-fns
|
|
||||||
|
|
||||||
@echo install android support gradle release because of barcode scanner to install missing android attributes
|
|
||||||
call ionic cordova plugin add cordova-android-support-gradle-release --fetch
|
|
||||||
|
|
||||||
@echo sqlite storage
|
|
||||||
call ionic cordova plugin add cordova-sqlite-storage
|
|
||||||
call npm install @ionic-native/sqlite
|
|
||||||
|
|
||||||
|
|
||||||
@echo native storage
|
|
||||||
call ionic cordova plugin add cordova-plugin-nativestorage
|
|
||||||
call npm install @ionic-native/native-storage
|
|
||||||
|
|
||||||
|
|
||||||
@echo bluetooth ble centeral //check interface assets/js/bletooth.js
|
|
||||||
call ionic cordova plugin add cordova-plugin-ble-central
|
|
||||||
call npm install @ionic-native/ble
|
|
||||||
|
|
||||||
|
|
||||||
@echo launch navigator
|
|
||||||
@echo warning : for now we stick with launch navigator 3 since 5 has issue
|
|
||||||
REM call ionic cordova plugin add uk.co.workingedge.phonegap.plugin.launchnavigator --variable GOOGLE_API_KEY_FOR_ANDROID="AIzaSyC-XbzwGMyAVCnspof0cqiO4iLfKmeEYVA"
|
|
||||||
call ionic cordova plugin add uk.co.workingedge.phonegap.plugin.launchnavigator@3
|
|
||||||
call npm install @ionic-native/launch-navigator
|
|
||||||
|
|
||||||
@echo themeablebrowser
|
|
||||||
|
|
||||||
call ionic cordova plugin add cordova-plugin-themeablebrowser
|
|
||||||
call npm install @ionic-native/themeable-browser
|
|
||||||
|
|
||||||
@echo in app browser
|
|
||||||
call ionic cordova plugin add cordova-plugin-inappbrowser
|
|
||||||
call npm install @ionic-native/in-app-browser
|
|
||||||
|
|
||||||
@echo globalization
|
|
||||||
|
|
||||||
call ionic cordova plugin add cordova-plugin-globalization
|
|
||||||
call npm install @ionic-native/globalization
|
|
||||||
|
|
||||||
|
|
||||||
@echo android permissions plugin
|
|
||||||
call ionic cordova plugin add cordova-plugin-android-permissions
|
|
||||||
call npm install @ionic-native/android-permissions
|
|
||||||
|
|
||||||
@echo sms reader https://www.npmjs.com/package/cordova-plugin-sms-receive
|
|
||||||
call npm i cordova-plugin-sms-receive
|
|
||||||
call cordova plugin add cordova-plugin-sms-receive
|
|
||||||
|
|
||||||
@echo device information
|
|
||||||
call ionic cordova plugin add cordova-plugin-device
|
|
||||||
call npm install @ionic-native/device
|
|
||||||
|
|
||||||
@echo local notifications
|
|
||||||
call ionic cordova plugin add cordova-plugin-local-notification
|
|
||||||
call npm install @ionic-native/local-notifications
|
|
||||||
|
|
||||||
@echo badge
|
|
||||||
call ionic cordova plugin add cordova-plugin-badge
|
|
||||||
call npm install @ionic-native/badge
|
|
||||||
|
|
||||||
|
|
||||||
@echo biometric features
|
|
||||||
call ionic cordova plugin add cordova-plugin-fingerprint-aio --variable FACEID_USAGE_DESCRIPTION="User Authentication"
|
|
||||||
call npm install @ionic-native/fingerprint-aio
|
|
||||||
|
|
||||||
@echo install diagnostic
|
|
||||||
call ionic cordova plugin add cordova.plugins.diagnostic
|
|
||||||
call npm install @ionic-native/diagnostic
|
|
||||||
|
|
||||||
|
|
||||||
@echo install barcode plugin
|
|
||||||
call ionic cordova plugin add phonegap-plugin-barcodescanner
|
|
||||||
call npm install @ionic-native/barcode-scanner
|
|
||||||
|
|
||||||
@echo install camera plugin
|
|
||||||
call ionic cordova plugin add cordova-plugin-camera
|
|
||||||
call npm install @ionic-native/camera
|
|
||||||
|
|
||||||
@echo install keyboard plugin
|
|
||||||
call ionic cordova plugin add cordova-plugin-ionic-keyboard
|
|
||||||
call npm install @ionic-native/keyboard
|
|
||||||
|
|
||||||
@echo install opentok required permissions
|
|
||||||
call ionic cordova plugin add cordova-opentok-android-permissions
|
|
||||||
|
|
||||||
@echo install App Availability Plugin
|
|
||||||
call ionic cordova plugin add cordova-plugin-appavailability
|
|
||||||
call npm install @ionic-native/app-availability
|
|
||||||
|
|
||||||
@echo install rate plugin
|
|
||||||
call ionic cordova plugin add cordova-plugin-apprate
|
|
||||||
call npm install @ionic-native/app-rate
|
|
||||||
|
|
||||||
@echo install file plugin
|
|
||||||
call ionic cordova plugin add cordova-plugin-file
|
|
||||||
call npm install @ionic-native/file
|
|
||||||
|
|
||||||
@echo install filePath plugin
|
|
||||||
call ionic cordova plugin add cordova-plugin-filepath
|
|
||||||
call npm install @ionic-native/file-path
|
|
||||||
|
|
||||||
@echo install Base64 plugin
|
|
||||||
call ionic cordova plugin add com-badrit-base64
|
|
||||||
call npm install @ionic-native/base64
|
|
||||||
|
|
||||||
@echo install Firebasex plugin
|
|
||||||
call ionic cordova plugin add cordova-plugin-firebasex
|
|
||||||
call npm install @ionic-native/firebase-x
|
|
||||||
|
|
||||||
@echo reinitializing git repository
|
|
||||||
@echo git init
|
|
||||||
@echo git remote add origin https://enas_yaghi@hmg.git.cloudforge.com/patientappionic.git
|
|
||||||
@echo git push -f origin master
|
|
||||||
|
|
||||||
|
|
||||||
@echo update project from package.js change if necessary
|
|
||||||
@echo to install all dependencies in package.json
|
|
||||||
|
|
||||||
@echo npm cache clean --force
|
|
||||||
@echo exact version -> npm install --save --save-exact react
|
|
||||||
@echo latest versions based on package.json rules -> npm install
|
|
||||||
|
|
||||||
@echo to build or serve for (( production ))
|
|
||||||
@echo export NODE_OPTIONS=--max-old-space-size=4096
|
|
||||||
@echo ionic cordova build android --release --aot --minifyjs --optimizejs --minifycss
|
|
||||||
@echo ionic cordova build ios --release --aot --minifyjs --optimizejs --minifycss
|
|
||||||
@ -1,158 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
echo start installing required native and 3rd party plugins
|
|
||||||
|
|
||||||
echo to update angular -> npm install -g @angular/cli
|
|
||||||
echo to update ionic -> npm install -g ionic
|
|
||||||
|
|
||||||
echo add browser, android , ios platforms commit non required
|
|
||||||
echo to add browser -> call ionic cordova platform add browser
|
|
||||||
echo to add ios -> call ionic cordova platform add ios
|
|
||||||
|
|
||||||
ionic cordova platform add android
|
|
||||||
|
|
||||||
echo copying android FCM google servcie file
|
|
||||||
cp ./google-services.json ./platforms/android/
|
|
||||||
|
|
||||||
npm i @angular/animations
|
|
||||||
npm i @swimlane/ngx-charts --save
|
|
||||||
|
|
||||||
echo primeng framework [angular]
|
|
||||||
|
|
||||||
npm install primeng --save
|
|
||||||
npm install primeicons --save
|
|
||||||
|
|
||||||
echo add css links for primeng in global.scss
|
|
||||||
echo @import "../node_modules/primeng/resources/themes/nova-light/theme.css";
|
|
||||||
echo @import "../node_modules/primeng/resources/primeng.min.css";
|
|
||||||
echo @import "../node_modules/primeicons/primeicons.css";
|
|
||||||
|
|
||||||
echo install chartjs as dependency for primeng chartjs
|
|
||||||
npm install chart.js --save
|
|
||||||
# echo add reference in [angular.json] in [scripts] array add (node_modules/chart.js/dist/Chart.js)
|
|
||||||
|
|
||||||
|
|
||||||
echo calendar https://mattlewis92.github.io/angular-calendar/#/kitchen-sink
|
|
||||||
npm install --save @ng-bootstrap/ng-bootstrap
|
|
||||||
npm install --save angular-calendar date-fns
|
|
||||||
|
|
||||||
echo install android support gradle release because of barcode scanner to install missing android attributes
|
|
||||||
ionic cordova plugin add cordova-android-support-gradle-release --fetch
|
|
||||||
|
|
||||||
|
|
||||||
echo sqlite storage
|
|
||||||
ionic cordova plugin add cordova-sqlite-storage
|
|
||||||
npm install @ionic-native/sqlite
|
|
||||||
|
|
||||||
|
|
||||||
echo native storage
|
|
||||||
ionic cordova plugin add cordova-plugin-nativestorage
|
|
||||||
npm install @ionic-native/native-storage
|
|
||||||
|
|
||||||
|
|
||||||
echo bluetooth ble centeral //check interface assets/js/bletooth.js
|
|
||||||
ionic cordova plugin add cordova-plugin-ble-central
|
|
||||||
npm install @ionic-native/ble
|
|
||||||
|
|
||||||
|
|
||||||
echo launch navigator
|
|
||||||
echo warning : for now we stick with launch navigator 3 since 5 has issue
|
|
||||||
# call ionic cordova plugin add uk.co.workingedge.phonegap.plugin.launchnavigator --variable GOOGLE_API_KEY_FOR_ANDROID="AIzaSyC-XbzwGMyAVCnspof0cqiO4iLfKmeEYVA"
|
|
||||||
ionic cordova plugin add uk.co.workingedge.phonegap.plugin.launchnavigator@3
|
|
||||||
npm install @ionic-native/launch-navigator
|
|
||||||
|
|
||||||
echo themeablebrowser
|
|
||||||
|
|
||||||
ionic cordova plugin add cordova-plugin-themeablebrowser
|
|
||||||
npm install @ionic-native/themeable-browser
|
|
||||||
|
|
||||||
echo in app browser
|
|
||||||
ionic cordova plugin add cordova-plugin-inappbrowser
|
|
||||||
npm install @ionic-native/in-app-browser
|
|
||||||
|
|
||||||
|
|
||||||
echo globalization
|
|
||||||
|
|
||||||
ionic cordova plugin add cordova-plugin-globalization
|
|
||||||
npm install @ionic-native/globalization
|
|
||||||
|
|
||||||
|
|
||||||
echo android permissions plugin
|
|
||||||
ionic cordova plugin add cordova-plugin-android-permissions
|
|
||||||
npm install @ionic-native/android-permissions
|
|
||||||
|
|
||||||
echo sms reader https://www.npmjs.com/package/cordova-plugin-sms-receive
|
|
||||||
npm i cordova-plugin-sms-receive
|
|
||||||
cordova plugin add cordova-plugin-sms-receive
|
|
||||||
|
|
||||||
echo device information§
|
|
||||||
ionic cordova plugin add cordova-plugin-device
|
|
||||||
npm install @ionic-native/device
|
|
||||||
|
|
||||||
echo local notifications
|
|
||||||
ionic cordova plugin add cordova-plugin-local-notification
|
|
||||||
npm install @ionic-native/local-notifications
|
|
||||||
|
|
||||||
echo badge
|
|
||||||
ionic cordova plugin add cordova-plugin-badge
|
|
||||||
npm install @ionic-native/badge
|
|
||||||
|
|
||||||
|
|
||||||
echo biometric features
|
|
||||||
ionic cordova plugin add cordova-plugin-fingerprint-aio --variable FACEID_USAGE_DESCRIPTION="User Authentication"
|
|
||||||
npm install @ionic-native/fingerprint-aio
|
|
||||||
|
|
||||||
echo install diagnostic
|
|
||||||
ionic cordova plugin add cordova.plugins.diagnostic
|
|
||||||
npm install @ionic-native/diagnostic
|
|
||||||
|
|
||||||
echo install background-geolocation
|
|
||||||
ionic cordova plugin add cordova-plugin-mauron85-background-geolocation@alpha --variable GOOGLE_PLAY_SERVICES_VERSION="16.0.0"
|
|
||||||
npm install @ionic-native/background-geolocation
|
|
||||||
|
|
||||||
echo install barcode plugin
|
|
||||||
ionic cordova plugin add phonegap-plugin-barcodescanner
|
|
||||||
npm install @ionic-native/barcode-scanner
|
|
||||||
|
|
||||||
echo install camera plugin
|
|
||||||
ionic cordova plugin add cordova-plugin-camera
|
|
||||||
npm install @ionic-native/camera
|
|
||||||
|
|
||||||
echo install keyboard plugin
|
|
||||||
ionic cordova plugin add cordova-plugin-ionic-keyboard
|
|
||||||
npm install @ionic-native/keyboard
|
|
||||||
|
|
||||||
echo install opentok required permissions
|
|
||||||
ionic cordova plugin add cordova-opentok-android-permissions
|
|
||||||
|
|
||||||
echo install health plugin
|
|
||||||
ionic cordova plugin add cordova-plugin-health --variable HEALTH_READ_PERMISSION="App needs read access to read heart rate" --variable HEALTH_WRITE_PERMISSION="App needs write access for heart rate" --variable GMS_VERSION="16.0.1"
|
|
||||||
npm install @ionic-native/health
|
|
||||||
|
|
||||||
echo install App Availability Plugin
|
|
||||||
ionic cordova plugin add cordova-plugin-appavailability
|
|
||||||
npm install @ionic-native/app-availability
|
|
||||||
|
|
||||||
echo install rate plugin
|
|
||||||
ionic cordova plugin add cordova-plugin-apprate
|
|
||||||
npm install @ionic-native/app-rate
|
|
||||||
|
|
||||||
|
|
||||||
echo reinitializing git repository
|
|
||||||
echo git init
|
|
||||||
echo git remote add origin https://enas_yaghi@hmg.git.cloudforge.com/patientappionic.git
|
|
||||||
echo git push -f origin master
|
|
||||||
|
|
||||||
|
|
||||||
echo update project from package.js change if necessary
|
|
||||||
echo to install all dependencies in package.json
|
|
||||||
|
|
||||||
echo npm cache clean --force
|
|
||||||
echo exact version -> npm install --save --save-exact react
|
|
||||||
echo latest versions based on package.json rules -> npm install
|
|
||||||
|
|
||||||
echo to build or serve for (( production ))
|
|
||||||
echo export NODE_OPTIONS=--max-old-space-size=4096
|
|
||||||
echo ionic serve --prod -> for serving in production
|
|
||||||
echo ionic cordova build android --release --aot --minifyjs --optimizejs --minifycss
|
|
||||||
echo ionic cordova build ios --release --aot --minifyjs --optimizejs --minifycss
|
|
||||||
@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Mohem",
|
|
||||||
"integrations": {
|
|
||||||
"cordova": {}
|
|
||||||
},
|
|
||||||
"type": "angular"
|
|
||||||
}
|
|
||||||
@ -1 +0,0 @@
|
|||||||
latest versions based on package.json rules - install
|
|
||||||
@ -1,250 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "MOHEM",
|
|
||||||
"version": "0.0.1",
|
|
||||||
"author": "Cloud Solutions",
|
|
||||||
"homepage": "http://www.cloudsolution-sa.com/",
|
|
||||||
"private": true,
|
|
||||||
"scripts": {
|
|
||||||
"ng": "ng",
|
|
||||||
"start": "ng serve",
|
|
||||||
"build": "ng build",
|
|
||||||
"test": "ng test",
|
|
||||||
"lint": "ng lint",
|
|
||||||
"e2e": "ng e2e"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"@angular/animations": "^7.2.15",
|
|
||||||
"@angular/common": "^7.2.2",
|
|
||||||
"@angular/core": "^7.2.2",
|
|
||||||
"@angular/forms": "^7.2.2",
|
|
||||||
"@angular/http": "^7.2.2",
|
|
||||||
"@angular/platform-browser": "^7.2.2",
|
|
||||||
"@angular/platform-browser-dynamic": "^7.2.2",
|
|
||||||
"@angular/router": "^7.2.2",
|
|
||||||
"@ionic-native/android-permissions": "^5.18.0",
|
|
||||||
"@ionic-native/app-availability": "^5.18.0",
|
|
||||||
"@ionic-native/app-rate": "^5.18.0",
|
|
||||||
"@ionic-native/background-geolocation": "^5.30.0",
|
|
||||||
"@ionic-native/badge": "^5.18.0",
|
|
||||||
"@ionic-native/barcode-scanner": "^5.18.0",
|
|
||||||
"@ionic-native/base64": "^5.18.0",
|
|
||||||
"@ionic-native/ble": "^5.18.0",
|
|
||||||
"@ionic-native/camera": "^5.18.0",
|
|
||||||
"@ionic-native/core": "^5.8.0",
|
|
||||||
"@ionic-native/date-picker": "^5.10.0",
|
|
||||||
"@ionic-native/device": "^5.18.0",
|
|
||||||
"@ionic-native/diagnostic": "^5.18.0",
|
|
||||||
"@ionic-native/file": "^5.18.0",
|
|
||||||
"@ionic-native/file-chooser": "^5.36.0",
|
|
||||||
"@ionic-native/file-opener": "^5.36.0",
|
|
||||||
"@ionic-native/file-path": "^5.18.0",
|
|
||||||
"@ionic-native/file-picker": "^5.36.0",
|
|
||||||
"@ionic-native/fingerprint-aio": "^5.18.0",
|
|
||||||
"@ionic-native/firebase-x": "^5.34.0",
|
|
||||||
"@ionic-native/geolocation": "^5.10.0",
|
|
||||||
"@ionic-native/globalization": "^5.18.0",
|
|
||||||
"@ionic-native/health": "^5.4.0",
|
|
||||||
"@ionic-native/in-app-browser": "^5.17.0",
|
|
||||||
"@ionic-native/keyboard": "^5.17.0",
|
|
||||||
"@ionic-native/launch-navigator": "^5.17.0",
|
|
||||||
"@ionic-native/local-notifications": "^5.17.0",
|
|
||||||
"@ionic-native/native-storage": "^5.17.0",
|
|
||||||
"@ionic-native/nfc": "^5.30.0",
|
|
||||||
"@ionic-native/open-native-settings": "^5.14.0",
|
|
||||||
"@ionic-native/sms-retriever": "^5.36.0",
|
|
||||||
"@ionic-native/social-sharing": "^5.34.0",
|
|
||||||
"@ionic-native/splash-screen": "^5.0.0",
|
|
||||||
"@ionic-native/sqlite": "^5.18.0",
|
|
||||||
"@ionic-native/status-bar": "^5.0.0",
|
|
||||||
"@ionic-native/themeable-browser": "^5.18.0",
|
|
||||||
"@ionic-native/wifi-wizard-2": "^5.31.1",
|
|
||||||
"@ionic-native/zbar": "^5.10.0",
|
|
||||||
"@ionic/angular": "^4.1.0",
|
|
||||||
"@ng-bootstrap/ng-bootstrap": "^4.2.2",
|
|
||||||
"@swimlane/ngx-charts": "^10.1.0",
|
|
||||||
"angular-calendar": "^0.26.11",
|
|
||||||
"app": "0.1.0",
|
|
||||||
"chart.js": "^2.9.3",
|
|
||||||
"com-badrit-base64": "^0.2.0",
|
|
||||||
"cordova-android": "^8.1.0",
|
|
||||||
"cordova-android-support-gradle-release": "^3.0.1",
|
|
||||||
"cordova-open-native-settings": "^1.5.2",
|
|
||||||
"cordova-plugin-actionsheet": "^2.3.3",
|
|
||||||
"cordova-plugin-add-swift-support": "^2.0.2",
|
|
||||||
"cordova-plugin-android-permissions": "^1.0.2",
|
|
||||||
"cordova-plugin-androidx": "^1.0.2",
|
|
||||||
"cordova-plugin-androidx-adapter": "^1.1.0",
|
|
||||||
"cordova-plugin-appavailability": "^0.4.2",
|
|
||||||
"cordova-plugin-apprate": "^1.4.0",
|
|
||||||
"cordova-plugin-badge": "^0.8.8",
|
|
||||||
"cordova-plugin-ble-central": "^1.2.4",
|
|
||||||
"cordova-plugin-camera": "^4.1.0",
|
|
||||||
"cordova-plugin-datepicker": "^0.9.3",
|
|
||||||
"cordova-plugin-device": "^2.0.3",
|
|
||||||
"cordova-plugin-dialogs": "^2.0.2",
|
|
||||||
"cordova-plugin-file": "^6.0.2",
|
|
||||||
"cordova-plugin-file-opener2": "^3.0.5",
|
|
||||||
"cordova-plugin-filechooser": "^1.2.0",
|
|
||||||
"cordova-plugin-filepath": "^1.5.6",
|
|
||||||
"cordova-plugin-filepicker": "^1.1.6",
|
|
||||||
"cordova-plugin-fingerprint-aio": "^3.0.0",
|
|
||||||
"cordova-plugin-firebasex": "^13.0.0",
|
|
||||||
"cordova-plugin-geolocation": "^4.0.2",
|
|
||||||
"cordova-plugin-globalization": "^1.11.0",
|
|
||||||
"cordova-plugin-ionic-keyboard": "^2.2.0",
|
|
||||||
"cordova-plugin-ionic-webview": "^4.1.0",
|
|
||||||
"cordova-plugin-local-notification": "^0.9.0-beta.2",
|
|
||||||
"cordova-plugin-nativestorage": "^2.3.2",
|
|
||||||
"cordova-plugin-sms-retriever-manager": "^1.0.3",
|
|
||||||
"cordova-plugin-splashscreen": "^5.0.3",
|
|
||||||
"cordova-plugin-statusbar": "^2.4.3",
|
|
||||||
"cordova-plugin-themeablebrowser": "^0.2.18",
|
|
||||||
"cordova-plugin-whitelist": "^1.3.4",
|
|
||||||
"cordova-plugin-wifiwizard2": "^3.1.1",
|
|
||||||
"cordova-plugin-x-socialsharing": "^6.0.3",
|
|
||||||
"cordova-sqlite-storage": "^3.4.0",
|
|
||||||
"cordova-support-google-services": "^1.3.2",
|
|
||||||
"cordova.plugins.diagnostic": "^5.0.1",
|
|
||||||
"core-js": "^2.5.4",
|
|
||||||
"date-fns": "^1.30.1",
|
|
||||||
"es6-promise-plugin": "^4.1.0",
|
|
||||||
"ionic2-calendar": "^0.5.8",
|
|
||||||
"ionic4-rating": "^1.0.9",
|
|
||||||
"ng-circle-progress": "^1.5.1",
|
|
||||||
"ng2-file-upload": "^1.3.0",
|
|
||||||
"ng2-pdf-viewer": "^3.0.8",
|
|
||||||
"ngx-gauge": "^1.0.0-beta.10",
|
|
||||||
"npm": "^6.14.11",
|
|
||||||
"phonegap-nfc": "^1.2.0",
|
|
||||||
"phonegap-plugin-barcodescanner": "^8.1.0",
|
|
||||||
"phonegap-plugin-multidex": "^1.0.0",
|
|
||||||
"primeicons": "^1.0.0",
|
|
||||||
"primeng": "^7.1.3",
|
|
||||||
"run": "1.4.0",
|
|
||||||
"rxjs": "~6.3.3",
|
|
||||||
"tslib": "^1.10.0",
|
|
||||||
"uk.co.workingedge.phonegap.plugin.launchnavigator": "^3.2.2",
|
|
||||||
"xlsx": "^0.14.3",
|
|
||||||
"xml-js": "^1.6.11",
|
|
||||||
"zone.js": "~0.8.29"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@angular-devkit/architect": "~0.12.3",
|
|
||||||
"@angular-devkit/build-angular": "^0.13.9",
|
|
||||||
"@angular-devkit/core": "~7.2.3",
|
|
||||||
"@angular-devkit/schematics": "~7.2.3",
|
|
||||||
"@angular/cli": "^7.3.6",
|
|
||||||
"@angular/compiler": "~7.2.2",
|
|
||||||
"@angular/compiler-cli": "~7.2.2",
|
|
||||||
"@angular/language-service": "~7.2.2",
|
|
||||||
"@ionic/angular-toolkit": "~1.4.0",
|
|
||||||
"@ionic/lab": "3.1.2",
|
|
||||||
"@types/jasmine": "~2.8.8",
|
|
||||||
"@types/jasminewd2": "~2.0.3",
|
|
||||||
"@types/node": "~10.12.0",
|
|
||||||
"codelyzer": "~4.5.0",
|
|
||||||
"cordova-ios": "^5.1.1",
|
|
||||||
"cordova-plugin-wifiwizard2": "^3.1.1",
|
|
||||||
"es6-promise-plugin": "^4.1.0",
|
|
||||||
"jasmine-core": "~2.99.1",
|
|
||||||
"jasmine-spec-reporter": "~4.2.1",
|
|
||||||
"karma": "^4.0.1",
|
|
||||||
"karma-chrome-launcher": "~2.2.0",
|
|
||||||
"karma-coverage-istanbul-reporter": "~2.0.1",
|
|
||||||
"karma-jasmine": "~1.1.2",
|
|
||||||
"karma-jasmine-html-reporter": "^0.2.2",
|
|
||||||
"node-sass": "^4.13.1",
|
|
||||||
"protractor": "^5.4.3",
|
|
||||||
"ts-node": "~8.0.0",
|
|
||||||
"tslint": "~5.12.0",
|
|
||||||
"typescript": "3.1.6"
|
|
||||||
},
|
|
||||||
"description": "An Ionic project",
|
|
||||||
"cordova": {
|
|
||||||
"plugins": {
|
|
||||||
"cordova-plugin-whitelist": {},
|
|
||||||
"cordova-plugin-statusbar": {},
|
|
||||||
"cordova-plugin-device": {},
|
|
||||||
"cordova-plugin-splashscreen": {},
|
|
||||||
"cordova-plugin-nativestorage": {},
|
|
||||||
"cordova-plugin-globalization": {},
|
|
||||||
"cordova-plugin-android-permissions": {},
|
|
||||||
"cordova-plugin-badge": {},
|
|
||||||
"cordova-plugin-ionic-keyboard": {},
|
|
||||||
"cordova-plugin-datepicker": {},
|
|
||||||
"cordova-plugin-geolocation": {},
|
|
||||||
"phonegap-plugin-barcodescanner": {
|
|
||||||
"ANDROID_SUPPORT_V4_VERSION": "27.+"
|
|
||||||
},
|
|
||||||
"cordova-plugin-ionic-webview": {
|
|
||||||
"ANDROID_SUPPORT_ANNOTATIONS_VERSION": "27.+"
|
|
||||||
},
|
|
||||||
"cordova.plugins.diagnostic": {
|
|
||||||
"ANDROID_SUPPORT_VERSION": "28.+"
|
|
||||||
},
|
|
||||||
"cordova-open-native-settings": {},
|
|
||||||
"cordova-plugin-camera": {
|
|
||||||
"ANDROID_SUPPORT_V4_VERSION": "27.+"
|
|
||||||
},
|
|
||||||
"cordova-plugin-file": {},
|
|
||||||
"cordova-plugin-filepath": {},
|
|
||||||
"com-badrit-base64": {},
|
|
||||||
"cordova-sqlite-storage": {},
|
|
||||||
"cordova-plugin-ble-central": {},
|
|
||||||
"uk.co.workingedge.phonegap.plugin.launchnavigator": {},
|
|
||||||
"cordova-plugin-themeablebrowser": {},
|
|
||||||
"cordova-plugin-local-notification": {},
|
|
||||||
"cordova-plugin-appavailability": {},
|
|
||||||
"cordova-plugin-apprate": {},
|
|
||||||
"cordova-plugin-fingerprint-aio": {
|
|
||||||
"FACEID_USAGE_DESCRIPTION": "User Authentication"
|
|
||||||
},
|
|
||||||
"cordova-plugin-androidx": {},
|
|
||||||
"cordova-plugin-androidx-adapter": {},
|
|
||||||
"cordova-plugin-background-geolocation": {
|
|
||||||
"GOOGLE_PLAY_SERVICES_VERSION": "+"
|
|
||||||
},
|
|
||||||
"phonegap-nfc": {},
|
|
||||||
"wifiwizard2": {},
|
|
||||||
"cordova-plugin-x-socialsharing": {},
|
|
||||||
"cordova-plugin-firebasex": {
|
|
||||||
"FIREBASE_ANALYTICS_COLLECTION_ENABLED": "true",
|
|
||||||
"FIREBASE_PERFORMANCE_COLLECTION_ENABLED": "true",
|
|
||||||
"FIREBASE_CRASHLYTICS_COLLECTION_ENABLED": "true",
|
|
||||||
"ANDROID_ICON_ACCENT": "#FF00FFFF",
|
|
||||||
"ANDROID_FIREBASE_PERFORMANCE_MONITORING": "false",
|
|
||||||
"ANDROID_PLAY_SERVICES_TAGMANAGER_VERSION": "17.0.0",
|
|
||||||
"ANDROID_PLAY_SERVICES_AUTH_VERSION": "19.0.0",
|
|
||||||
"ANDROID_FIREBASE_ANALYTICS_VERSION": "19.0.0",
|
|
||||||
"ANDROID_FIREBASE_MESSAGING_VERSION": "22.0.0",
|
|
||||||
"ANDROID_FIREBASE_CONFIG_VERSION": "21.0.0",
|
|
||||||
"ANDROID_FIREBASE_PERF_VERSION": "20.0.1",
|
|
||||||
"ANDROID_FIREBASE_AUTH_VERSION": "21.0.1",
|
|
||||||
"ANDROID_FIREBASE_INAPPMESSAGING_VERSION": "20.0.0",
|
|
||||||
"ANDROID_FIREBASE_FIRESTORE_VERSION": "23.0.1",
|
|
||||||
"ANDROID_FIREBASE_FUNCTIONS_VERSION": "20.0.0",
|
|
||||||
"ANDROID_FIREBASE_IID_VERSION": "21.1.0",
|
|
||||||
"ANDROID_FIREBASE_INSTALLATIONS_VERSION": "17.0.0",
|
|
||||||
"ANDROID_FIREBASE_CRASHLYTICS_VERSION": "18.0.1",
|
|
||||||
"ANDROID_FIREBASE_CRASHLYTICS_NDK_VERSION": "18.0.1",
|
|
||||||
"ANDROID_GSON_VERSION": "2.8.7",
|
|
||||||
"ANDROID_FIREBASE_PERF_GRADLE_PLUGIN_VERSION": "1.4.0"
|
|
||||||
},
|
|
||||||
"cordova-android-support-gradle-release": {
|
|
||||||
"ANDROID_SUPPORT_VERSION": "27.+"
|
|
||||||
},
|
|
||||||
"cordova-plugin-sms-retriever-manager": {
|
|
||||||
"PLAY_SERVICES_VERSION": "15.0.1"
|
|
||||||
},
|
|
||||||
"cordova-plugin-file-opener2": {
|
|
||||||
"ANDROID_SUPPORT_V4_VERSION": "27.+"
|
|
||||||
},
|
|
||||||
"cordova-plugin-filepicker": {},
|
|
||||||
"cordova-plugin-filechooser": {}
|
|
||||||
},
|
|
||||||
"platforms": [
|
|
||||||
"ios",
|
|
||||||
"android"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
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/
|
|
||||||
|
Before Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 949 B |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 3.4 KiB |
|
Before Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 7.5 KiB |
|
Before Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 7.2 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 93 KiB |
|
Before Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 7.3 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 89 KiB |
|
Before Width: | Height: | Size: 123 KiB |
@ -1,6 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<network-security-config>
|
|
||||||
<domain-config cleartextTrafficPermitted="true">
|
|
||||||
<domain includeSubdomains="true">localhost</domain>
|
|
||||||
</domain-config>
|
|
||||||
</network-security-config>
|
|
||||||
|
Before Width: | Height: | Size: 75 KiB |
|
Before Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 8.8 KiB |
|
Before Width: | Height: | Size: 438 B |
|
Before Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 692 B |
|
Before Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 7.3 KiB |
|
Before Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 6.0 KiB |
|
Before Width: | Height: | Size: 6.5 KiB |
|
Before Width: | Height: | Size: 6.9 KiB |
|
Before Width: | Height: | Size: 7.8 KiB |
|
Before Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 105 KiB |
|
Before Width: | Height: | Size: 181 KiB |
|
Before Width: | Height: | Size: 216 KiB |
|
Before Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 156 KiB |
|
Before Width: | Height: | Size: 111 KiB |
|
Before Width: | Height: | Size: 193 KiB |
|
Before Width: | Height: | Size: 230 KiB |
|
Before Width: | Height: | Size: 164 KiB |
|
Before Width: | Height: | Size: 146 KiB |
|
Before Width: | Height: | Size: 236 KiB |
|
Before Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 145 KiB |
|
Before Width: | Height: | Size: 234 KiB |
|
Before Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 243 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 204 KiB |
@ -1,56 +0,0 @@
|
|||||||
<ion-header>
|
|
||||||
<ion-toolbar class="header-toolbar">
|
|
||||||
<ion-title color="light"> {{ts.trPK('addAttach','title')}}</ion-title>
|
|
||||||
<ion-buttons slot="primary">
|
|
||||||
<ion-button style="background: none !important;" (click)="closeBtnModal()">
|
|
||||||
<ion-icon slot="icon-only" name="close"></ion-icon>
|
|
||||||
</ion-button>
|
|
||||||
</ion-buttons>
|
|
||||||
</ion-toolbar>
|
|
||||||
</ion-header>
|
|
||||||
<ion-content>
|
|
||||||
|
|
||||||
<ion-card>
|
|
||||||
<ion-card-header class="boxHdr">
|
|
||||||
<div class="hrTitle"> {{ts.trPK('addAttach','title')}}</div>
|
|
||||||
<div class="fileDiv"> <input end class="inputfile" type="file" ng2FileSelect [uploader]="uploader"
|
|
||||||
(change)="onFileSelected($event)" />
|
|
||||||
<label end for="file">
|
|
||||||
<ion-icon name="add"></ion-icon>
|
|
||||||
</label></div>
|
|
||||||
</ion-card-header>
|
|
||||||
<ion-card-content>
|
|
||||||
<ion-grid class=" gridAH" *ngIf="uploader?.queue?.length > 0">
|
|
||||||
<ion-row class="rowAH titleH">
|
|
||||||
<ion-col size="4">
|
|
||||||
<label class="Header" for=""> {{ts.trPK('addAttach','name')}}</label>
|
|
||||||
</ion-col>
|
|
||||||
<ion-col size="4">
|
|
||||||
<label class="Header" for="">{{ts.trPK('addAttach','size')}} </label>
|
|
||||||
</ion-col>
|
|
||||||
<ion-col size="4">
|
|
||||||
<label class="Header" for=""> {{ts.trPK('addAttach','remove')}} </label>
|
|
||||||
</ion-col>
|
|
||||||
</ion-row>
|
|
||||||
<ion-row class="rowAH" *ngFor="let item of uploader.queue">
|
|
||||||
<ion-col size="4">
|
|
||||||
<label for="">{{ item?.file?.name }}</label>
|
|
||||||
</ion-col>
|
|
||||||
<ion-col size="4">
|
|
||||||
<label *ngIf="uploader.options.isHTML5">{{ item?.file?.size/1024/1024 | number:'.2' }}
|
|
||||||
MB</label>
|
|
||||||
</ion-col>
|
|
||||||
<ion-col size="4">
|
|
||||||
<button class="iconButton" ion-button (click)="removeFile(item)"> <img class="imgSize"
|
|
||||||
src="../assets/imgs/deletegray.png"></button>
|
|
||||||
</ion-col>
|
|
||||||
</ion-row>
|
|
||||||
</ion-grid>
|
|
||||||
</ion-card-content>
|
|
||||||
</ion-card>
|
|
||||||
</ion-content>
|
|
||||||
<ion-footer>
|
|
||||||
<div class="centerDiv">
|
|
||||||
<ion-button color="customnavy" (click)="OkBtnModal()">{{ts.trPK('general','ok')}} </ion-button>
|
|
||||||
</div>
|
|
||||||
</ion-footer>
|
|
||||||
@ -1,103 +0,0 @@
|
|||||||
.col {
|
|
||||||
//border: #dedede solid 1px;
|
|
||||||
padding: 2px !important;
|
|
||||||
text-align: center;
|
|
||||||
font-size: 15px;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.item-md.item-block .item-inner,
|
|
||||||
.item-ios.item-block .item-inner {
|
|
||||||
padding: 0px !important;
|
|
||||||
}
|
|
||||||
.iconButton .imgSize{
|
|
||||||
width:22px !important;
|
|
||||||
}
|
|
||||||
.itemAH {
|
|
||||||
padding: 0px !important;
|
|
||||||
font-size: 13px;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.gridAH {
|
|
||||||
text-align: center;
|
|
||||||
padding: 5px 5px !important;
|
|
||||||
border-radius: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.rowAH {
|
|
||||||
white-space: normal;
|
|
||||||
|
|
||||||
.col {
|
|
||||||
border: 1px solid var(--cusgray);
|
|
||||||
|
|
||||||
label {
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.Header {
|
|
||||||
font-weight: bold;
|
|
||||||
color: var(--customnavy);
|
|
||||||
font-size: 14px;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.titleH {
|
|
||||||
font-size: 15px;
|
|
||||||
border: 1px solid var(--cusgray);
|
|
||||||
border-top-right-radius: 5px;
|
|
||||||
border-top-left-radius: 5px;
|
|
||||||
border-bottom: 0px;
|
|
||||||
|
|
||||||
.col {
|
|
||||||
border: 0px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ion-label.label.label-md,
|
|
||||||
ion-label.label.label-ios {
|
|
||||||
margin: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fileDiv .inputfile {
|
|
||||||
width: 0.1px;
|
|
||||||
height: 0.1px;
|
|
||||||
opacity: 0;
|
|
||||||
overflow: hidden;
|
|
||||||
position: absolute;
|
|
||||||
width: 40px;
|
|
||||||
height: 40px;
|
|
||||||
top: 0;
|
|
||||||
z-index: 100;
|
|
||||||
// z-index: -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.inputfile+label {
|
|
||||||
display: inline-block;
|
|
||||||
color: var(--light);
|
|
||||||
}
|
|
||||||
|
|
||||||
.fileDiv {
|
|
||||||
padding: 10px;
|
|
||||||
position: absolute;
|
|
||||||
right:0;
|
|
||||||
top:0;
|
|
||||||
:root[dir="ltr"] {
|
|
||||||
float: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
:root[dir="rtl"] {
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ion-icon{
|
|
||||||
font-size: 28px;
|
|
||||||
}
|
|
||||||
|
|
||||||
button.iconButton.button.button-ios.button-default.button-default-ios,
|
|
||||||
button.iconButton.button.button-md.button-default.button-default-md {
|
|
||||||
padding: 0px;
|
|
||||||
}
|
|
||||||
@ -1,27 +0,0 @@
|
|||||||
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
|
||||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
|
||||||
|
|
||||||
import { AbsenceAttachmentComponent } from './absence-attachment.component';
|
|
||||||
|
|
||||||
describe('AbsenceAttachmentComponent', () => {
|
|
||||||
let component: AbsenceAttachmentComponent;
|
|
||||||
let fixture: ComponentFixture<AbsenceAttachmentComponent>;
|
|
||||||
|
|
||||||
beforeEach(async(() => {
|
|
||||||
TestBed.configureTestingModule({
|
|
||||||
declarations: [ AbsenceAttachmentComponent ],
|
|
||||||
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
||||||
})
|
|
||||||
.compileComponents();
|
|
||||||
}));
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
fixture = TestBed.createComponent(AbsenceAttachmentComponent);
|
|
||||||
component = fixture.componentInstance;
|
|
||||||
fixture.detectChanges();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should create', () => {
|
|
||||||
expect(component).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@ -1,168 +0,0 @@
|
|||||||
import { Component, EventEmitter, OnInit } from "@angular/core";
|
|
||||||
import { CommonService } from "src/app/hmg-common/services/common/common.service";
|
|
||||||
import { TranslatorService } from "src/app/hmg-common/services/translator/translator.service";
|
|
||||||
import { FileUploader } from "ng2-file-upload";
|
|
||||||
import { AddAttachService } from "../service/add-attach-service";
|
|
||||||
import { AddEitResponse } from "src/app/eit/models/add.eit.response";
|
|
||||||
import { ModalController } from '@ionic/angular';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Generated class for the AddAttachPage page.
|
|
||||||
*
|
|
||||||
* See https://ionicframework.com/docs/components/#navigation for more info on
|
|
||||||
* Ionic pages and navigation.
|
|
||||||
*/
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: "absence-attachment",
|
|
||||||
templateUrl: "absence-attachment.component.html",
|
|
||||||
styleUrls: ["./absence-attachment.component.scss"]
|
|
||||||
})
|
|
||||||
export class AbsenceAttachmentComponent implements OnInit {
|
|
||||||
private eitResponse: any; //AddEitResponse=new AddEitResponse();
|
|
||||||
isUpload: boolean = false;
|
|
||||||
inQueue: boolean = false;
|
|
||||||
addAttachmentListReq: any;
|
|
||||||
attachmentID: number = 0;
|
|
||||||
addAttachRequest: any = [];
|
|
||||||
fileData: any;
|
|
||||||
fileType: any;
|
|
||||||
index: any = 1;
|
|
||||||
dirPage: any;
|
|
||||||
TransactionID: any;
|
|
||||||
indexLastObj: any;
|
|
||||||
filterAllowedType: any = [
|
|
||||||
"application/pdf",
|
|
||||||
"image/jpeg",
|
|
||||||
"image/png",
|
|
||||||
"text/plain",
|
|
||||||
"image/jpg",
|
|
||||||
"application/vnd.ms-excel",
|
|
||||||
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
|
|
||||||
];
|
|
||||||
|
|
||||||
constructor(
|
|
||||||
public common: CommonService,
|
|
||||||
public AddAttachService: AddAttachService,
|
|
||||||
public modalCtrl: ModalController,
|
|
||||||
public ts: TranslatorService
|
|
||||||
) {
|
|
||||||
this.eitResponse = this.common.sharedService.getSharedData(
|
|
||||||
AddEitResponse.SHARED_DATA,
|
|
||||||
true
|
|
||||||
);
|
|
||||||
// this.TransactionID = this.navParams.get("TransactionID");
|
|
||||||
// this.indexLastObj = this.navParams.get("indexLastObj");
|
|
||||||
|
|
||||||
// console.log("this.TransactionID : "+ this.TransactionID);
|
|
||||||
this.isUpload = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public uploader: FileUploader = new FileUploader({
|
|
||||||
allowedMimeType: [
|
|
||||||
"application/pdf",
|
|
||||||
"image/jpeg",
|
|
||||||
"image/png",
|
|
||||||
"text/plain",
|
|
||||||
"image/jpg",
|
|
||||||
"application/vnd.ms-excel",
|
|
||||||
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
|
|
||||||
],
|
|
||||||
maxFileSize: 10 * 1024 * 1024,
|
|
||||||
formatDataFunctionIsAsync: true,
|
|
||||||
formatDataFunction: async item => {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
resolve({
|
|
||||||
name: item._file.name,
|
|
||||||
length: item._file.size,
|
|
||||||
contentType: item._file.type,
|
|
||||||
date: new Date()
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
public hasBaseDropZoneOver: boolean = false;
|
|
||||||
public hasAnotherDropZoneOver: boolean = false;
|
|
||||||
ngOnInit() {}
|
|
||||||
public fileOverBase(e: any): void {
|
|
||||||
this.hasBaseDropZoneOver = e;
|
|
||||||
}
|
|
||||||
|
|
||||||
public fileOverAnother(e: any): void {
|
|
||||||
this.hasAnotherDropZoneOver = e;
|
|
||||||
}
|
|
||||||
|
|
||||||
OkBtnModal() {
|
|
||||||
let fileCount: number = this.uploader.queue.length;
|
|
||||||
if (fileCount > 0) {
|
|
||||||
let data: any = this.addAttachRequest;
|
|
||||||
this.modalCtrl.dismiss(data);
|
|
||||||
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
let msg: string = "";
|
|
||||||
msg = this.ts.trPK("general", "noFileSelect");
|
|
||||||
this.common.presentAlert(msg);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} // end ok button
|
|
||||||
|
|
||||||
closeBtnModal() {
|
|
||||||
this.modalCtrl.dismiss();
|
|
||||||
}
|
|
||||||
|
|
||||||
onFileSelected(input) {
|
|
||||||
if (!(this.filterAllowedType.indexOf(input.target.files[0].type) > -1)) {
|
|
||||||
let msg: string = "";
|
|
||||||
msg = this.ts.trPK("general", "noFileSelect");
|
|
||||||
this.common.presentAlert(msg);
|
|
||||||
return;
|
|
||||||
} // todo: show alert that you tried uploading wrong files
|
|
||||||
else {
|
|
||||||
const file = input.target.files[0];
|
|
||||||
|
|
||||||
// console.log(file);
|
|
||||||
|
|
||||||
this.getBase64(file).then(data =>
|
|
||||||
this.pushObject(data, file.name, file.type)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
getBase64(file) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
const reader = new FileReader();
|
|
||||||
reader.readAsDataURL(file);
|
|
||||||
reader.onload = () => resolve(reader.result);
|
|
||||||
reader.onerror = error => reject(error);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
pushObject(fileData, name, type) {
|
|
||||||
// console.log("before push: "+ this.index);
|
|
||||||
this.indexLastObj++;
|
|
||||||
try {
|
|
||||||
let array = name.split(".");
|
|
||||||
let attachType: string = array[array.length - 1];
|
|
||||||
|
|
||||||
this.addAttachRequest.push({
|
|
||||||
AttachmentID: this.indexLastObj,
|
|
||||||
P_FILE_CONTENT_TYPE: attachType, //type.split('/')[1],
|
|
||||||
P_FILE_DATA: fileData.split(",")[1],
|
|
||||||
P_FILE_NAME: name, //.split('.')[0],
|
|
||||||
P_TRANSACTION_ID: this.TransactionID
|
|
||||||
});
|
|
||||||
} catch (e) {}
|
|
||||||
}
|
|
||||||
|
|
||||||
removeFile(objectitem) {
|
|
||||||
let objIndex1 = this.uploader.queue.findIndex(item => item == objectitem);
|
|
||||||
this.uploader.queue.splice(objIndex1, 1);
|
|
||||||
let objIndex = this.addAttachRequest.findIndex(
|
|
||||||
item => item.AttachmentID == objectitem.AttachmentID
|
|
||||||
);
|
|
||||||
this.addAttachRequest.splice(objIndex, 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,261 +0,0 @@
|
|||||||
<app-generic-header
|
|
||||||
showBack="true"
|
|
||||||
[headerText]="'submitAbsenceConfirm, submitAbsenceConfirm' | translate">
|
|
||||||
</app-generic-header>
|
|
||||||
|
|
||||||
<ion-content>
|
|
||||||
|
|
||||||
|
|
||||||
<!-------------------------------Start New design ---------------------------------------->
|
|
||||||
<ion-grid>
|
|
||||||
<ion-row style="margin-top: 20px;margin-left: 12px;">
|
|
||||||
<ion-col>
|
|
||||||
<div size="10" [ngClass]=" direction === 'en' ? 'approvalTitle' : 'approvalTitle-ar'">{{'general, addAttach' | translate}}</div>
|
|
||||||
</ion-col>
|
|
||||||
<ion-col style="padding-left: 7%;" size="2">
|
|
||||||
<div class="fileDiv">
|
|
||||||
<input end class="inputfile" style="margin-top: 10px;z-index: 99999;position: absolute;opacity: 0;" type="file" ng2FileSelect [uploader]="uploader"
|
|
||||||
(change)="onFileSelected($event)" (click)="onFileSelectedclick($event)" />
|
|
||||||
<label end for="file" class="attachLable">
|
|
||||||
<ion-icon style="font-size: 22px;" name="add"></ion-icon>
|
|
||||||
</label></div>
|
|
||||||
</ion-col>
|
|
||||||
</ion-row>
|
|
||||||
<ion-item class="attachmentDiv" *ngIf="attachListOver?.length == 0">
|
|
||||||
<ion-img style="height: 26px;width:100%;margin-top:12px" src="../assets/imgs/attach-icon.png"></ion-img>
|
|
||||||
<ion-label style="margin-top: -24px;" position="floating" class="boldTxtNav">{{ 'general, notAttch' | translate}}</ion-label>
|
|
||||||
</ion-item>
|
|
||||||
</ion-grid>
|
|
||||||
|
|
||||||
<ion-grid class="attachmentDiv" *ngIf="attachListOver?.length > 0">
|
|
||||||
<div *ngFor="let attachList of attachListOver ; let i = index">
|
|
||||||
<ion-row>
|
|
||||||
<ion-col size="1">
|
|
||||||
<ion-label style="color: black !important;">
|
|
||||||
{{attachList.AttachmentID +1 }} .
|
|
||||||
</ion-label>
|
|
||||||
</ion-col>
|
|
||||||
<ion-col style="text-align: left;" size="10">
|
|
||||||
<ion-label style="color: blue !important;" (click)="OpenAttachFiles(attachList.P_FILE_DATA,attachList.P_FILE_CONTENT_TYPE)">
|
|
||||||
{{attachList.P_FILE_NAME }}
|
|
||||||
</ion-label>
|
|
||||||
</ion-col>
|
|
||||||
<ion-col size="1">
|
|
||||||
<!-- <button float-end class="attachImgBtn"
|
|
||||||
(click)="OpenAttachFiles(attachList.P_FILE_DATA,attachList.P_FILE_CONTENT_TYPE)">
|
|
||||||
<img class="attachImg" src="../assets/imgs/view.png">
|
|
||||||
</button> -->
|
|
||||||
<button float-end [disabled]="attachList.isSuccess" class="attachImgBtn removeLable"
|
|
||||||
(click)="removeFile(attachList)">
|
|
||||||
<ion-icon style="font-size:22px;margin-left:-7px;margin-top:-2px;" name="close"></ion-icon>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
</ion-col>
|
|
||||||
</ion-row>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</ion-grid>
|
|
||||||
<ion-grid *ngIf="attachmentRes?.length > 0">
|
|
||||||
<div *ngFor="let attachRes of attachmentRes">
|
|
||||||
<ion-row>
|
|
||||||
<ion-col col-8>
|
|
||||||
<div> <img float-start class="attachImg" src="../assets/imgs/file.png">
|
|
||||||
</div>
|
|
||||||
<ion-label>
|
|
||||||
{{attachRes.FILE_NAME }} </ion-label>
|
|
||||||
|
|
||||||
</ion-col>
|
|
||||||
<ion-col col-4>
|
|
||||||
<button float-end class="attachImgBtn"
|
|
||||||
(click)="OpenAttachFiles(attachRes.FILE_DATA,attachRes.FILE_CONTENT_TYPE)">
|
|
||||||
<img class="attachImg" src="../assets/imgs/view.png">
|
|
||||||
</button>
|
|
||||||
<button float-end class="attachImgBtn" (click)="delelteFile(attachRes)"><img
|
|
||||||
class="attachImg" src="../assets/imgs/deletegray.png"></button>
|
|
||||||
</ion-col>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- <button [disabled]="!isResubmitEIT" class="iconButton" (click)="addAttachment(false,attachRes)"><img
|
|
||||||
class="imgSize" src="../assets/imgs/editIcon.png"></button>
|
|
||||||
<button (click)="delelteFile(attachRes)" class="iconButton" [disabled]="!isResubmitEIT"><img
|
|
||||||
class="imgSize" src="../assets/imgs/cancel.png"></button> -->
|
|
||||||
</ion-row>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</ion-grid>
|
|
||||||
|
|
||||||
|
|
||||||
<ion-grid class="">
|
|
||||||
<div [ngClass]=" direction === 'en' ? 'approvalTitle' : 'approvalTitle-ar'">{{'confirmAddEit, comment' | translate}}</div>
|
|
||||||
<ion-item class="submitNote" lines="none">
|
|
||||||
<!-- <ion-label position="floating" class="boldTxtNav">{{'confirmAddEit, comment' | translate}}</ion-label> -->
|
|
||||||
<ion-textarea type="text" [(ngModel)]="absComments"></ion-textarea>
|
|
||||||
</ion-item>
|
|
||||||
</ion-grid>
|
|
||||||
|
|
||||||
<ion-grid class="approvalList">
|
|
||||||
<div [ngClass]=" direction === 'en' ? 'approvalTitle' : 'approvalTitle-ar'">{{'confirmAddEit, approverList' | translate}}</div>
|
|
||||||
<div class="noDataDiv" *ngIf="approversList.length == 0">
|
|
||||||
<p>{{ 'general, empty' | translate}}</p>
|
|
||||||
</div>
|
|
||||||
<div style="background-color: white;border-radius: 32px;border: 1px solid #c8c4c4;" *ngIf="approversList?.length > 0">
|
|
||||||
<ion-list class="notification-list ">
|
|
||||||
<div class="timeline">
|
|
||||||
<ion-item style="padding-left: 4%;" *ngFor="let employee of approversList">
|
|
||||||
|
|
||||||
<div class="timeline-item" slot="start">
|
|
||||||
<div [class]="direction == 'en'? 'timeline-thumb-en timeline-icon': 'timeline-thumb-ar timeline-icon'">
|
|
||||||
<img *ngIf="employee.EMPLOYEE_IMAGE" class="empImge"
|
|
||||||
[src]="'data:image/png;base64,'+employee.EMPLOYEE_IMAGE">
|
|
||||||
<img *ngIf="employee.EMPLOYEE_IMAGE == null" class="empImge"
|
|
||||||
src="../assets/imgs/profile.png"> </div>
|
|
||||||
</div>
|
|
||||||
<ion-col>
|
|
||||||
<ion-label style="color:black !important ;font-weight: bold;padding-top: 0%;">
|
|
||||||
{{employee.APPROVER}}
|
|
||||||
</ion-label>
|
|
||||||
<ion-label style="color:black !important ;padding-top: 4%;">
|
|
||||||
{{employee.POSITION_TITLE}}
|
|
||||||
</ion-label>
|
|
||||||
|
|
||||||
</ion-col>
|
|
||||||
<div class="line"></div>
|
|
||||||
</ion-item>
|
|
||||||
</div>
|
|
||||||
</ion-list>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</ion-grid>
|
|
||||||
<!-------------------------------End New design ---------------------------------------->
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- <ion-card>
|
|
||||||
<ion-card-header class="boxHdr">
|
|
||||||
<div class="hrTitle"> {{ts.trPK('confirmAddEit','approverList')}}</div>
|
|
||||||
</ion-card-header>
|
|
||||||
<ion-card-content class="confirm-details">
|
|
||||||
|
|
||||||
<ion-grid class=" gridAH" *ngIf="approversList?.length > 0">
|
|
||||||
<ion-row class="rowAH titleH">
|
|
||||||
<ion-col size="1" >
|
|
||||||
<label class="Header" for="">{{ts.trPK('confirmAddEit','no')}}</label>
|
|
||||||
</ion-col>
|
|
||||||
<ion-col size="3">
|
|
||||||
<label class="Header" for="">{{ts.trPK('confirmAddEit','approver')}}</label>
|
|
||||||
</ion-col>
|
|
||||||
<ion-col size="3">
|
|
||||||
<label class="Header" for="">{{ts.trPK('confirmAddEit','approverCategory')}} </label>
|
|
||||||
</ion-col>
|
|
||||||
<ion-col size="3">
|
|
||||||
<label class="Header" for="">{{ts.trPK('confirmAddEit','approverType')}}</label>
|
|
||||||
</ion-col>
|
|
||||||
<ion-col size="2">
|
|
||||||
<label class="Header" for="">{{ts.trPK('confirmAddEit','status')}}</label>
|
|
||||||
</ion-col>
|
|
||||||
</ion-row>
|
|
||||||
|
|
||||||
<ion-row class="rowAH" *ngFor="let item of approversList">
|
|
||||||
<ion-col size="1">
|
|
||||||
<label for="">{{item.APPROVER_ORDER_NUMBER}}</label>
|
|
||||||
</ion-col>
|
|
||||||
<ion-col size="3">
|
|
||||||
<label for="">{{item.APPROVER}}</label>
|
|
||||||
</ion-col>
|
|
||||||
<ion-col size="3">
|
|
||||||
<label for="">{{item.APPROVER_CATEGORY}}</label>
|
|
||||||
</ion-col>
|
|
||||||
<ion-col size="3">
|
|
||||||
<label for="">{{item.APPROVER_TYPE}}</label>
|
|
||||||
</ion-col>
|
|
||||||
<ion-col size="2">
|
|
||||||
<label for="">{{item.APPROVAL_STATUS}}</label>
|
|
||||||
</ion-col>
|
|
||||||
</ion-row>
|
|
||||||
</ion-grid>
|
|
||||||
|
|
||||||
|
|
||||||
</ion-card-content>
|
|
||||||
</ion-card>
|
|
||||||
|
|
||||||
<ion-item padding>
|
|
||||||
<ion-label class="boldTxtNav">{{ts.trPK('confirmAddEit','comment')}}</ion-label>
|
|
||||||
<ion-textarea type="text" [(ngModel)]="absComments"></ion-textarea>
|
|
||||||
</ion-item>
|
|
||||||
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<ion-card>
|
|
||||||
|
|
||||||
<ion-card-header class="boxHdr">
|
|
||||||
<div class="hrTitle">{{ts.trPK('absenceList','attachList')}}</div>
|
|
||||||
|
|
||||||
<img class="imgSize" src="../assets/imgs/attachment.png" (click)="addAttachment(true,-1)">
|
|
||||||
|
|
||||||
</ion-card-header>
|
|
||||||
<ion-card-content >
|
|
||||||
<ion-grid *ngIf="attachListOver?.length > 0">
|
|
||||||
<div *ngFor="let attachList of attachListOver ; let i = index">
|
|
||||||
<ion-row>
|
|
||||||
<ion-col size="8">
|
|
||||||
<div> <img float-start class="attachImg" src="../assets/imgs/file.png">
|
|
||||||
</div>
|
|
||||||
<ion-label>
|
|
||||||
{{attachList.P_FILE_NAME }} </ion-label>
|
|
||||||
|
|
||||||
</ion-col>
|
|
||||||
<ion-col size="4">
|
|
||||||
<button float-end class="attachImgBtn"
|
|
||||||
(click)="OpenAttachFiles(attachList.P_FILE_DATA,attachList.P_FILE_CONTENT_TYPE)">
|
|
||||||
<img class="attachImg" src="../assets/imgs/view.png">
|
|
||||||
</button>
|
|
||||||
<button float-end [disabled]="attachList.isSuccess" class="attachImgBtn"
|
|
||||||
(click)="removeFile(attachList)"><img class="attachImg"
|
|
||||||
src="../assets/imgs/deletegray.png"></button>
|
|
||||||
</ion-col>
|
|
||||||
</ion-row>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</ion-grid>
|
|
||||||
<ion-grid *ngIf="attachmentRes?.length > 0">
|
|
||||||
<div *ngFor="let attachRes of attachmentRes">
|
|
||||||
<ion-row>
|
|
||||||
<ion-col size="8">
|
|
||||||
<div> <img float-start class="attachImg" src="../assets/imgs/file.png">
|
|
||||||
</div>
|
|
||||||
<ion-label>
|
|
||||||
{{attachRes.FILE_NAME }} </ion-label>
|
|
||||||
|
|
||||||
</ion-col>
|
|
||||||
<ion-col size="4">
|
|
||||||
<button float-end class="attachImgBtn"
|
|
||||||
(click)="OpenAttachFiles(attachRes.FILE_DATA,attachRes.FILE_CONTENT_TYPE)">
|
|
||||||
<img class="attachImg" src="../assets/imgs/view.png">
|
|
||||||
</button>
|
|
||||||
<button float-end [disabled]="!isResubmitAbs" class="attachImgBtn"
|
|
||||||
(click)="delelteFile(attachRes)"><img class="attachImg"
|
|
||||||
src="../assets/imgs/deletegray.png"></button>
|
|
||||||
</ion-col>
|
|
||||||
|
|
||||||
</ion-row>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</ion-grid>
|
|
||||||
</ion-card-content>
|
|
||||||
</ion-card> -->
|
|
||||||
|
|
||||||
<!-- </div> -->
|
|
||||||
|
|
||||||
</ion-content>
|
|
||||||
<ion-footer>
|
|
||||||
<div class="centerDiv">
|
|
||||||
<ion-button class="confirmEitOkButton" (click)="openSubmitModal()">{{ts.trPK('confirmAddEit','start')}}</ion-button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</ion-footer>
|
|
||||||
@ -1,285 +0,0 @@
|
|||||||
.imgSize{
|
|
||||||
position: absolute;
|
|
||||||
right: 15px;
|
|
||||||
top: 0;
|
|
||||||
bottom: 0;
|
|
||||||
margin: auto;
|
|
||||||
height:20px;
|
|
||||||
width:20px;
|
|
||||||
}
|
|
||||||
.rowAH ion-col {
|
|
||||||
border: 1px solid #d9d9d9;
|
|
||||||
font-size: 13px;
|
|
||||||
}
|
|
||||||
.titleH {
|
|
||||||
font-size: 13px;
|
|
||||||
border: 1px solid #d9d9d9;
|
|
||||||
border-top-right-radius: 5px;
|
|
||||||
border-top-left-radius: 5px;
|
|
||||||
border-bottom: 0px;
|
|
||||||
}
|
|
||||||
.gridAH {
|
|
||||||
text-align: center;
|
|
||||||
padding: 5px 5px !important;
|
|
||||||
border-radius: 5px;
|
|
||||||
}
|
|
||||||
ion-card-content.confirm-details{
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
.confirm-details label{
|
|
||||||
font-size: 13px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/****************** NEW Design ***************************************/
|
|
||||||
.footer-button {
|
|
||||||
border-radius: 2px;
|
|
||||||
padding: 0 1.1em;
|
|
||||||
min-height: 45px;
|
|
||||||
min-width: 200px;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.Header {
|
|
||||||
font-weight: bold;
|
|
||||||
color: #1a586d !important;
|
|
||||||
font-size: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tbData {
|
|
||||||
font-size: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btnBack {
|
|
||||||
background: transparent;
|
|
||||||
float: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
.attachmentDiv{
|
|
||||||
background: #ffffff;
|
|
||||||
height: auto;
|
|
||||||
text-align: center;
|
|
||||||
padding-top: 1px;
|
|
||||||
margin: 10px;
|
|
||||||
border-radius: 15px;
|
|
||||||
border: 1px solid grey;
|
|
||||||
}
|
|
||||||
|
|
||||||
.noDataDiv{
|
|
||||||
background: #ffffff;
|
|
||||||
height: 11%;
|
|
||||||
text-align: center;
|
|
||||||
padding-top: 1px;
|
|
||||||
border-radius: 10px;
|
|
||||||
margin: 10px;
|
|
||||||
border-radius: 5px;
|
|
||||||
}
|
|
||||||
.submitNote{
|
|
||||||
background: #ffffff;
|
|
||||||
height: 80px;
|
|
||||||
padding-top: 1px;
|
|
||||||
margin: 10px;
|
|
||||||
border-radius: 15px;
|
|
||||||
border: 1px solid grey;
|
|
||||||
}
|
|
||||||
|
|
||||||
.approvalList{
|
|
||||||
--background: #f0efef;
|
|
||||||
height: auto;
|
|
||||||
text-align: center;
|
|
||||||
padding-top: 1px;
|
|
||||||
border-radius: 10px;
|
|
||||||
margin: 10px;
|
|
||||||
border-radius: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/************************New Design**********************************/
|
|
||||||
.notification-list{
|
|
||||||
background: none;
|
|
||||||
background: none;
|
|
||||||
border-radius: 32px;
|
|
||||||
ion-item{
|
|
||||||
// margin-top: 5px;
|
|
||||||
// margin-bottom: 5px;
|
|
||||||
|
|
||||||
background-color: transparent;
|
|
||||||
.item-date{
|
|
||||||
width: 100%;
|
|
||||||
font-size: 16px;
|
|
||||||
font-weight: bold;
|
|
||||||
|
|
||||||
text-align: start;
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
|
|
||||||
position: absolute;
|
|
||||||
left: 0;
|
|
||||||
top: 12%;
|
|
||||||
}
|
|
||||||
ion-label , [item-end]{
|
|
||||||
|
|
||||||
white-space: normal;
|
|
||||||
font-size: 14px;
|
|
||||||
padding-top: 15%;
|
|
||||||
// :root[dir="ltr"]{
|
|
||||||
// margin-left: 10px;
|
|
||||||
// }
|
|
||||||
// :root[dir="rtl"]{
|
|
||||||
// margin-right: 10px;
|
|
||||||
// }
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.timeline {
|
|
||||||
position: relative;
|
|
||||||
margin: 15px 0 0 0;
|
|
||||||
// border-bottom: solid 1px var(--cusgray);
|
|
||||||
}
|
|
||||||
|
|
||||||
.timeline:before {
|
|
||||||
|
|
||||||
content: '';
|
|
||||||
position: inherit !important;
|
|
||||||
top: 0;
|
|
||||||
bottom: 0;
|
|
||||||
width: 4px;
|
|
||||||
// background: #e4e4e4;
|
|
||||||
z-index: 1;
|
|
||||||
left: 35px;
|
|
||||||
/* margin-left: -10px; */
|
|
||||||
/* z-index: 1; */
|
|
||||||
}
|
|
||||||
|
|
||||||
.timeline .timeline-thumb {
|
|
||||||
|
|
||||||
border-radius: 500px;
|
|
||||||
width: 70px !important;
|
|
||||||
z-index: 2;
|
|
||||||
position: absolute;
|
|
||||||
left: 0px;
|
|
||||||
// :root[dir="ltr"]{
|
|
||||||
// left: 37px;
|
|
||||||
// }
|
|
||||||
// :root[dir="rtl"]{
|
|
||||||
// right: 37px;
|
|
||||||
// }
|
|
||||||
float: right;
|
|
||||||
top: 9px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.timeline .timeline-thumb.timeline-icon {
|
|
||||||
height: 70px;
|
|
||||||
// text-align: center;
|
|
||||||
// color: white;
|
|
||||||
// border: 5px solid #CBD0D3;
|
|
||||||
// transform: scale(0.2);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.timeline .timeline-item {
|
|
||||||
// width: 40px;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.timeline .timeline-stats {
|
|
||||||
position: relative;
|
|
||||||
font-size: 12px;
|
|
||||||
color: var(--darkgray);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.empImge{
|
|
||||||
border-radius: 50%;
|
|
||||||
width:60px;
|
|
||||||
height: 60px;
|
|
||||||
border: #dedede solid 1px;
|
|
||||||
|
|
||||||
}
|
|
||||||
.empImgeRep {
|
|
||||||
border-radius: 50% !important;
|
|
||||||
width: 80px;
|
|
||||||
height: 80px;
|
|
||||||
border: #dedede solid 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.line{
|
|
||||||
padding-bottom:87px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.attachLable{
|
|
||||||
position: absolute;
|
|
||||||
top: 0px;
|
|
||||||
z-index: 0;
|
|
||||||
background: #30b8c6;
|
|
||||||
color: #fff;
|
|
||||||
border-radius: 50%;
|
|
||||||
border: 0px;
|
|
||||||
width: 24px;
|
|
||||||
height: 24px;
|
|
||||||
text-align: center;
|
|
||||||
font-size: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.removeLable{
|
|
||||||
top: 0px;
|
|
||||||
z-index: 0;
|
|
||||||
background: #d8252d;
|
|
||||||
color: #fff;
|
|
||||||
border-radius: 50%;
|
|
||||||
border: 0px;
|
|
||||||
width: 20px;
|
|
||||||
height: 20px;
|
|
||||||
text-align: center;
|
|
||||||
font-size: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.note-modal {
|
|
||||||
// width: 90%;
|
|
||||||
// height: 50%;
|
|
||||||
// top: 20%;
|
|
||||||
// left: 5%;
|
|
||||||
// right: 5%;
|
|
||||||
// bottom: 5%;
|
|
||||||
background: rgba(0, 0, 0, 0.5) !important;
|
|
||||||
padding: 30% 10% !important;
|
|
||||||
--height: 12cm !important;
|
|
||||||
// --width: 80% !important;
|
|
||||||
--border-radius:20px;
|
|
||||||
|
|
||||||
}
|
|
||||||
.header-toolbar-new{
|
|
||||||
--background: #29B5BF;
|
|
||||||
}
|
|
||||||
|
|
||||||
.confirmEitOkButton{
|
|
||||||
white-space: normal !important;
|
|
||||||
text-transform: capitalize !important;
|
|
||||||
min-height: 45px !important;
|
|
||||||
min-width: 5px !important;
|
|
||||||
margin: 8px !important;
|
|
||||||
--background: #29B5BF;
|
|
||||||
width: 80% !important;
|
|
||||||
color: white!important;
|
|
||||||
border-radius: 16px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.approvalTitle-ar{
|
|
||||||
font-weight: bold;
|
|
||||||
font-size: 16px;
|
|
||||||
text-align: right;
|
|
||||||
|
|
||||||
}
|
|
||||||
.approvalTitle{
|
|
||||||
font-weight: bold;
|
|
||||||
font-size: 16px;
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
@ -1,27 +0,0 @@
|
|||||||
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
|
||||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
|
||||||
|
|
||||||
import { AbsenceConfirmComponent } from './absence-confirm.component';
|
|
||||||
|
|
||||||
describe('AbsenceConfirmComponent', () => {
|
|
||||||
let component: AbsenceConfirmComponent;
|
|
||||||
let fixture: ComponentFixture<AbsenceConfirmComponent>;
|
|
||||||
|
|
||||||
beforeEach(async(() => {
|
|
||||||
TestBed.configureTestingModule({
|
|
||||||
declarations: [ AbsenceConfirmComponent ],
|
|
||||||
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
||||||
})
|
|
||||||
.compileComponents();
|
|
||||||
}));
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
fixture = TestBed.createComponent(AbsenceConfirmComponent);
|
|
||||||
component = fixture.componentInstance;
|
|
||||||
fixture.detectChanges();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should create', () => {
|
|
||||||
expect(component).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@ -1,464 +0,0 @@
|
|||||||
import { Component, OnInit } from '@angular/core';
|
|
||||||
import { CommonService } from 'src/app/hmg-common/services/common/common.service';
|
|
||||||
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';
|
|
||||||
import { ApproversList } from '../models/approvers';
|
|
||||||
import { MenuResponse } from 'src/app/hmg-common/services/menu/models/menu-response';
|
|
||||||
import { WorkListButtonRequest } from 'src/app/eit/models/NotificationButtonReq';
|
|
||||||
import { ModalController } from '@ionic/angular';
|
|
||||||
import { NotificationGetAttachResponse } from 'src/app/eit/models/NotificationGetAttachRes';
|
|
||||||
import { AbsenceResponse } from '../models/absence.response';
|
|
||||||
import { SubmitAbConfirmService } from '../service/submit-absence-confirm.service';
|
|
||||||
import { WorklistAttachService } from '../service/work-list-attach.service';
|
|
||||||
import { ConfirmAddEitService } from '../service/confirm-add-eit-service';
|
|
||||||
import { AbsenceNotificatonBodyResponse } from '../models/AbsenceNotificationBodyRes';
|
|
||||||
import { AbsenceAttachmentComponent } from '../absence-attachment/absence-attachment.component';
|
|
||||||
import { WorkListAttachViewComponent } from 'src/app/notification/work-list-attach-view/work-list-attach-view.component';
|
|
||||||
import { FileUploader } from 'ng2-file-upload';
|
|
||||||
import { SubmitAbsenceModalComponent } from '../submit-absence-modal/submit-absence-modal.component';
|
|
||||||
import { HomeComponent } from "src/app/notification/home/home.component";
|
|
||||||
@Component({
|
|
||||||
selector: 'app-absence-confirm',
|
|
||||||
templateUrl: './absence-confirm.component.html',
|
|
||||||
styleUrls: ['./absence-confirm.component.scss']
|
|
||||||
})
|
|
||||||
export class AbsenceConfirmComponent implements OnInit {
|
|
||||||
direction: string;
|
|
||||||
P_TransactionID: number;
|
|
||||||
approversList = [];
|
|
||||||
selEmp: string = '';
|
|
||||||
respID: number;
|
|
||||||
absComments: string = '';
|
|
||||||
selMenu: MenuResponse;
|
|
||||||
attachItems: any;
|
|
||||||
attachListDisplay: any;
|
|
||||||
isTrue: any = 0;
|
|
||||||
getPassNotificationDetails: any;
|
|
||||||
menuType: string = '';
|
|
||||||
attachmentRes: any;
|
|
||||||
objIndex1: any;
|
|
||||||
attachListOver: any = [];
|
|
||||||
index: any = 0;
|
|
||||||
attachReqObj: WorkListButtonRequest = new WorkListButtonRequest();
|
|
||||||
private isResubmitAbs: boolean = false;
|
|
||||||
private isSubmitBtnClicked: boolean;
|
|
||||||
filterAllowedType: any = ['application/pdf', 'image/jpeg', 'image/png', 'text/plain', 'image/jpg', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'];
|
|
||||||
|
|
||||||
|
|
||||||
constructor(
|
|
||||||
public common: CommonService,
|
|
||||||
public ts: TranslatorService,
|
|
||||||
public modalCtrl: ModalController,
|
|
||||||
public ConfirmAddEitService: ConfirmAddEitService,
|
|
||||||
public submitConService: SubmitAbConfirmService,
|
|
||||||
public WorklistAttachService: WorklistAttachService
|
|
||||||
) {
|
|
||||||
this.isSubmitBtnClicked = false;
|
|
||||||
this.direction = TranslatorService.getCurrentLanguageName()
|
|
||||||
// this.isResubmitAbs = this.navParams.get("isResubmit");
|
|
||||||
if (this.isResubmitAbs) {
|
|
||||||
this.P_TransactionID = this.common.sharedService.getSharedData(
|
|
||||||
AbsenceResponse.SHARED_DATA
|
|
||||||
);
|
|
||||||
this.getPassNotificationDetails = this.common.sharedService.getSharedData(
|
|
||||||
AbsenceNotificatonBodyResponse.NOT_WORKLIST,
|
|
||||||
true
|
|
||||||
);
|
|
||||||
this.selEmp = this.getPassNotificationDetails.SELECTED_EMPLOYEE_NUMBER;
|
|
||||||
this.menuType = 'E';
|
|
||||||
this.respID = -999;
|
|
||||||
// this.getApproversList();
|
|
||||||
// console.log("this.getPassNotificationDetails.P_NOTIFICATION_ID :"+this.getPassNotificationDetails.NOTIFICATION_ID);
|
|
||||||
this.getAttachment(this.getPassNotificationDetails.NOTIFICATION_ID);
|
|
||||||
} else {
|
|
||||||
this.selMenu = this.common.sharedService.getSharedData(
|
|
||||||
MenuResponse.SHARED_DATA,
|
|
||||||
true
|
|
||||||
);
|
|
||||||
this.selEmp = this.common.sharedService.getSharedData(
|
|
||||||
MenuResponse.SHARED_SEL_EMP,
|
|
||||||
true
|
|
||||||
);
|
|
||||||
this.respID = this.common.sharedService.getSharedData(
|
|
||||||
MenuResponse.SHARED_SEL_RESP_ID,
|
|
||||||
true
|
|
||||||
);
|
|
||||||
this.P_TransactionID = this.common.sharedService.getSharedData(
|
|
||||||
AbsenceResponse.SHARED_DATA
|
|
||||||
);
|
|
||||||
this.menuType = this.selMenu.List_Menu.MENU_TYPE;
|
|
||||||
}
|
|
||||||
this.getApproversList();
|
|
||||||
}
|
|
||||||
|
|
||||||
ngOnInit() { }
|
|
||||||
startAbApproval() {
|
|
||||||
if (this.attachListOver) {
|
|
||||||
//first call add attach inside success call submit
|
|
||||||
let request = {
|
|
||||||
AddAttachmentList: this.attachListOver
|
|
||||||
};
|
|
||||||
this.ConfirmAddEitService.addAttachment(request).subscribe(
|
|
||||||
(result: any) => {
|
|
||||||
this.handleAddAttachmentResults(result);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
this.startAbsApprovalProcess();
|
|
||||||
}
|
|
||||||
} //end
|
|
||||||
|
|
||||||
handleAddAttachmentResults(result) {
|
|
||||||
if (this.common.validResponse(result)) {
|
|
||||||
//this.isUpload=true;
|
|
||||||
this.isTrue = 0;
|
|
||||||
for (let i = 0; i < result.AddAttSuccessList.length; i++) {
|
|
||||||
if (!result.AddAttSuccessList[i].AddSuccess) {
|
|
||||||
this.attachListOver[i].isSuccess = false;
|
|
||||||
// if false display cancel button with waring icon or design
|
|
||||||
} // end if
|
|
||||||
else {
|
|
||||||
// if true remove cancel and set isSuccess = true
|
|
||||||
this.attachListOver[i].isSuccess = true;
|
|
||||||
this.isTrue = this.isTrue + 1; //count flag of attach status
|
|
||||||
} // end else
|
|
||||||
} // end for
|
|
||||||
|
|
||||||
if (this.isTrue == result.AddAttSuccessList.length) {
|
|
||||||
this.startAbsApprovalProcess();
|
|
||||||
} else {
|
|
||||||
//stope
|
|
||||||
let filtered = this.attachListOver.filter(function (el) {
|
|
||||||
return el.isSuccess == true;
|
|
||||||
});
|
|
||||||
this.attachListOver = filtered;
|
|
||||||
let msg: string = '';
|
|
||||||
// msg = this.translate.translate("addAttach.errorMsg");
|
|
||||||
//this.common.showAlert(msg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
startAbsApprovalProcess() {
|
|
||||||
let request: any = {};
|
|
||||||
request.P_SELECTED_EMPLOYEE_NUMBER = this.selEmp;
|
|
||||||
request.P_MENU_TYPE = this.menuType;
|
|
||||||
request.P_SELECTED_RESP_ID = this.respID;
|
|
||||||
request.P_TRANSACTION_ID = this.P_TransactionID;
|
|
||||||
request.P_COMMENTS = this.absComments;
|
|
||||||
this.submitConService
|
|
||||||
.startAbApprovalProcess(request)
|
|
||||||
.subscribe((result: any) => {
|
|
||||||
this.handleResults(result);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
cancelAbProcess() {
|
|
||||||
let body: any = {
|
|
||||||
P_TRANSACTION_ID: this.P_TransactionID
|
|
||||||
};
|
|
||||||
this.submitConService.cancelHRTransaction(body).subscribe((result: any) => {
|
|
||||||
this.handleCancelResults(result);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
handleCancelResults(result) {
|
|
||||||
if (this.common.validResponse(result)) {
|
|
||||||
this.isSubmitBtnClicked = false;
|
|
||||||
// this.navCtrl.popToRoot();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
handleResults(result) {
|
|
||||||
if (this.common.validResponse(result)) {
|
|
||||||
this.isSubmitBtnClicked = true;
|
|
||||||
//if(this.isResubmitAbs==false){
|
|
||||||
// let msg: string = this.ts.trPK('general', 'messageSuccess');
|
|
||||||
// this.common.presentAlert(msg);
|
|
||||||
this.common.greenToastPK("eit", "approval-message-success")
|
|
||||||
// }
|
|
||||||
// this.navCtrl.popToRoot();
|
|
||||||
this.common.sharedService.setSharedData(true, HomeComponent.COUNT_CHANGED);
|
|
||||||
this.common.openNotificationPage();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
getApproversList() {
|
|
||||||
let body: any = {
|
|
||||||
P_TRANSACTION_ID: this.P_TransactionID,
|
|
||||||
P_AME_TRANSACTION_TYPE: 'SSHRMS',
|
|
||||||
P_PAGE_NUM: 1,
|
|
||||||
P_PAGE_LIMIT: 1000
|
|
||||||
};
|
|
||||||
this.submitConService.getApproversList(body).subscribe((result: any) => {
|
|
||||||
this.handleApproversResult(result);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
handleApproversResult(result) {
|
|
||||||
if (this.common.validResponse(result)) {
|
|
||||||
this.approversList = result.GetApprovesList;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async addAttachment(str: boolean, attachItems: any) {
|
|
||||||
let attachDocID = attachItems.ATTACHED_DOCUMENT_ID;
|
|
||||||
// var modalPage = this.modalCtrl.create("AddAttachPage", {
|
|
||||||
// indexLastObj: this.attachListOver.length,
|
|
||||||
// TransactionID: this.P_TransactionID,
|
|
||||||
// enableBackdropDismiss: false
|
|
||||||
// });
|
|
||||||
const modal = await this.modalCtrl.create({
|
|
||||||
component: AbsenceAttachmentComponent,
|
|
||||||
componentProps: { indexLastObj: this.attachListOver.length, TransactionID: this.P_TransactionID },
|
|
||||||
keyboardClose: true,
|
|
||||||
animated: false
|
|
||||||
});
|
|
||||||
modal.onDidDismiss()
|
|
||||||
.then((data) => {
|
|
||||||
if (data == 'cancel' || data == 'undefined') {
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
if (!str) {
|
|
||||||
this.updateFile(data, attachDocID);
|
|
||||||
} else {
|
|
||||||
this.attachListDisplay = data.data;
|
|
||||||
this.attachItems = this.attachListDisplay.map(function (el) {
|
|
||||||
var o = Object.assign({}, el);
|
|
||||||
o.isSuccess = false;
|
|
||||||
return o;
|
|
||||||
});
|
|
||||||
this.attachListOver = this.attachListOver ? this.attachListOver.concat(this.attachItems) : this.attachItems;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return await modal.present();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*****submit modal********/
|
|
||||||
async openSubmitModal() {
|
|
||||||
this.common.sharedService.setSharedData(this.attachListOver, 'submitAbsAttachmentList');
|
|
||||||
this.common.sharedService.setSharedData(this.absComments, 'absComments');
|
|
||||||
const modal = await this.modalCtrl.create({
|
|
||||||
component: SubmitAbsenceModalComponent,
|
|
||||||
backdropDismiss: false,
|
|
||||||
|
|
||||||
});
|
|
||||||
modal.cssClass = 'note-modal';
|
|
||||||
|
|
||||||
modal.onDidDismiss()
|
|
||||||
.then((data) => {
|
|
||||||
console.log(data.data);
|
|
||||||
|
|
||||||
if (data.data == 'cancel' || data.data == undefined) {
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
this.startAbApproval();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return await modal.present();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
removeFile(objectitem) {
|
|
||||||
|
|
||||||
if (this.attachListOver) {
|
|
||||||
let index2 = this.attachListOver.findIndex(item => item == objectitem);
|
|
||||||
if (index2 > -1) {
|
|
||||||
this.attachListOver.splice(index2, 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (this.attachmentRes) {
|
|
||||||
let index3 = this.attachmentRes.findIndex(item => item == objectitem);
|
|
||||||
if (index3 > -1) {
|
|
||||||
this.attachmentRes.splice(index3, 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
getAttachment(NotificationID) {
|
|
||||||
this.attachReqObj.P_NOTIFICATION_ID = NotificationID;
|
|
||||||
|
|
||||||
this.WorklistAttachService.getAttach(this.attachReqObj).subscribe(
|
|
||||||
(result: NotificationGetAttachResponse) => {
|
|
||||||
this.handleWorkListAttachResult(result);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
handleWorkListAttachResult(result) {
|
|
||||||
if (this.common.validResponse(result)) {
|
|
||||||
// this.sharedData.setSharedData(result, WorKListResponse.SHARED_DATA);
|
|
||||||
if (result.GetAttachementList != null) {
|
|
||||||
this.attachmentRes = result.GetAttachementList;
|
|
||||||
} // if result == null
|
|
||||||
} // valid it
|
|
||||||
}
|
|
||||||
|
|
||||||
async OpenAttachFiles(value, Type) {
|
|
||||||
this.common.sharedService.setSharedData({ displayData: value, TypeData: Type }, 'WorkListAttachViewPage');
|
|
||||||
const modal = await this.modalCtrl.create({
|
|
||||||
component: WorkListAttachViewComponent
|
|
||||||
});
|
|
||||||
|
|
||||||
modal.onDidDismiss()
|
|
||||||
.then((data) => {
|
|
||||||
});
|
|
||||||
|
|
||||||
return await modal.present();
|
|
||||||
}
|
|
||||||
|
|
||||||
updateFile(attachList, attachDocID) {
|
|
||||||
|
|
||||||
let req = {
|
|
||||||
P_ATTACHED_DOCUMENT_ID: attachDocID,
|
|
||||||
P_FILE_DATA: attachList[0].P_FILE_DATA,
|
|
||||||
P_FILE_NAME: attachList[0].P_FILE_NAME,
|
|
||||||
P_FILE_CONTENT_TYPE: attachList[0].P_FILE_CONTENT_TYPE
|
|
||||||
};
|
|
||||||
this.submitConService.updateAttach(req).subscribe((result: any) => {
|
|
||||||
if (this.common.validResponse(result)) {
|
|
||||||
if (result.MessageStatus == 1) {
|
|
||||||
let msg: string = '';
|
|
||||||
// msg = this.translate.translate("addAttach.attachUpdate");
|
|
||||||
// this.common.showAlert(msg);
|
|
||||||
|
|
||||||
this.getAttachment(this.getPassNotificationDetails.NOTIFICATION_ID);
|
|
||||||
}
|
|
||||||
} // val
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
delelteFile(attach) {
|
|
||||||
// let alert = this.common.showConfirmMsg(
|
|
||||||
// this.translate.translate("general.deletePerm")
|
|
||||||
// );
|
|
||||||
// alert.onDidDismiss(data => {
|
|
||||||
// if (data == true) {
|
|
||||||
// this.continueDelete(attach);
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
}
|
|
||||||
continueDelete(attach) {
|
|
||||||
|
|
||||||
let req = {
|
|
||||||
P_ATTACHED_DOCUMENT_ID: attach.ATTACHED_DOCUMENT_ID
|
|
||||||
};
|
|
||||||
this.submitConService.delteAttach(req).subscribe((result: any) => {
|
|
||||||
if (this.common.validResponse(result)) {
|
|
||||||
if (result.DeleteAttachmentList.P_RETURN_STATUS === 'S') {
|
|
||||||
this.getAttachment(this.getPassNotificationDetails.NOTIFICATION_ID);
|
|
||||||
// let msg: string = "";
|
|
||||||
// msg = this.translate.translate("addAttach.deleteAttach");
|
|
||||||
// this.common.showAlert(msg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
ionViewWillLeave() {
|
|
||||||
if (this.P_TransactionID && this.isSubmitBtnClicked == false)
|
|
||||||
this.cancelAbProcess();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************Add attchement Functions*************/
|
|
||||||
|
|
||||||
public uploader: FileUploader = new FileUploader({
|
|
||||||
allowedMimeType: ['application/pdf', 'image/jpeg', 'image/png', 'text/plain', 'image/jpg', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'],
|
|
||||||
maxFileSize: 10 * 1024 * 1024,
|
|
||||||
formatDataFunctionIsAsync: true,
|
|
||||||
formatDataFunction: async (item) => {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
resolve({
|
|
||||||
name: item._file.name,
|
|
||||||
length: item._file.size,
|
|
||||||
contentType: item._file.type,
|
|
||||||
date: new Date()
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
onFileSelectedclick(event) {
|
|
||||||
event.target.value = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
onFileSelected(input) {
|
|
||||||
|
|
||||||
// this.uploader.onWhenAddingFileFailed = function (item: any, filter: any, options: any){
|
|
||||||
if (!(this.filterAllowedType.indexOf(input.target.files[0].type) > -1)) {
|
|
||||||
let msg: string = "";
|
|
||||||
msg = this.ts.trPK("general", "notSupport");
|
|
||||||
this.common.presentAlert(msg);
|
|
||||||
return
|
|
||||||
} // todo: show alert that you tried uploading wrong files
|
|
||||||
|
|
||||||
else {
|
|
||||||
const file = input.target.files[0];
|
|
||||||
|
|
||||||
// console.log(file);
|
|
||||||
|
|
||||||
//var encoded = Base64.encode(file);
|
|
||||||
this.getBase64(file).then(
|
|
||||||
data => this.pushObject(data, file.name, file.type)
|
|
||||||
);
|
|
||||||
|
|
||||||
// }
|
|
||||||
// };
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
getBase64(file) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
const reader = new FileReader();
|
|
||||||
reader.readAsDataURL(file);
|
|
||||||
reader.onload = () => resolve(reader.result);
|
|
||||||
reader.onerror = error => reject(error);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
pushObject(fileData, name, type) {
|
|
||||||
|
|
||||||
console.log('before push: ' + this.index);
|
|
||||||
//this.attachListOver.length++;
|
|
||||||
try {
|
|
||||||
let array = name.split('.');
|
|
||||||
let attachType: string = array[array.length - 1];
|
|
||||||
|
|
||||||
this.attachListOver.push(
|
|
||||||
{
|
|
||||||
AttachmentID: this.attachListOver.length,
|
|
||||||
P_FILE_CONTENT_TYPE: attachType,//type.split('/')[1],
|
|
||||||
P_FILE_DATA: fileData.split(',')[1],
|
|
||||||
P_FILE_NAME: name,//.split('.')[0],
|
|
||||||
P_TRANSACTION_ID: this.P_TransactionID
|
|
||||||
})
|
|
||||||
|
|
||||||
} catch (e) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//console.log("after push: "+ this.index);
|
|
||||||
// return this.addAttachRequest
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,132 +0,0 @@
|
|||||||
<ion-header>
|
|
||||||
<ion-toolbar>
|
|
||||||
<!-- class="header-toolbar" <nav-buttons></nav-buttons> -->
|
|
||||||
<ion-title color="dark">{{ 'replacementRoll, title' | translate}}</ion-title>
|
|
||||||
</ion-toolbar>
|
|
||||||
</ion-header>
|
|
||||||
|
|
||||||
<ion-content >
|
|
||||||
|
|
||||||
<ion-list syle="margin-bottom:2px !important" [hidden]="isAnswer==true">
|
|
||||||
<ion-item>
|
|
||||||
<ion-label class="boldTxtNav">{{'replacementRoll, searchBy' | translate}}</ion-label>
|
|
||||||
<ion-select okText='{{"general, ok" | translate }}' cancelText='{{"general, cancel" | translate }}'
|
|
||||||
[(ngModel)]="searchBy">
|
|
||||||
<ion-select-option value="1" selected="true">{{'addAttach, name' | translate}}</ion-select-option>
|
|
||||||
<ion-select-option value="2">{{'login, username' | translate}}</ion-select-option>
|
|
||||||
<ion-select-option value="3">{{'general, email' | translate}}</ion-select-option>
|
|
||||||
</ion-select>
|
|
||||||
</ion-item>
|
|
||||||
|
|
||||||
<ion-item lines="none">
|
|
||||||
<ion-button [ngClass]="direction == 'en'? 'filterBtn':'filterBtn-ar'" button-type="clear" (click)="getreplacmentemployee()" item-end>
|
|
||||||
<ion-icon slot="icon-only" color="white" name="search"></ion-icon>
|
|
||||||
</ion-button>
|
|
||||||
|
|
||||||
<ion-input [ngClass]="direction == 'en'? 'filterInput':'filterInput-ar'" [(ngModel)]="inputSearch" placeholder='{{"general, search" | translate}}'></ion-input>
|
|
||||||
|
|
||||||
<!-- <button ion-button icon-only (click)="getreplacmentemployee()" clear type="button" item-end>
|
|
||||||
<ion-icon name="search"></ion-icon>
|
|
||||||
</button> -->
|
|
||||||
|
|
||||||
|
|
||||||
</ion-item>
|
|
||||||
|
|
||||||
<!-- <ion-item>
|
|
||||||
<ion-label>
|
|
||||||
{{selEmpName}}
|
|
||||||
</ion-label>
|
|
||||||
</ion-item> -->
|
|
||||||
<!-- <div class="centerDiv">
|
|
||||||
<button ion-button (click)="closePage()">{{'general.save' | translate}}</button>
|
|
||||||
</div> -->
|
|
||||||
</ion-list>
|
|
||||||
|
|
||||||
<!-- <div class="noteInput">
|
|
||||||
<ion-label [hidden]="isAnswer==false" class="boldTxtNav" padding>{{"replacementRoll, question" | translate}} :
|
|
||||||
{{pQuestion}} ?</ion-label>
|
|
||||||
<ion-label [hidden]="isAnswer==false" class="boldTxtNav" padding>{{"replacementRoll, answer" | translate}}
|
|
||||||
</ion-label>
|
|
||||||
<ion-label [hidden]="isAnswer==true" class="boldTxtNav" padding>{{"replacementRoll, enterNote" | translate}}
|
|
||||||
</ion-label>
|
|
||||||
<ion-item>
|
|
||||||
<ion-textarea [(ngModel)]="userNote"></ion-textarea>
|
|
||||||
</ion-item>
|
|
||||||
</div> -->
|
|
||||||
|
|
||||||
<ion-item [hidden]="isAnswer==true">
|
|
||||||
<!-- <ion-list *ngIf="ReplacementList"> -->
|
|
||||||
<!-- <ion-list *ngIf="ReplacementList">
|
|
||||||
-->
|
|
||||||
<!-- <ion-radio-group mode="md" [(ngModel)]="selEmp"> -->
|
|
||||||
<!-- <ion-grid fixed>
|
|
||||||
<ion-row justify-content-end>
|
|
||||||
<ion-col [ngClass]="{'activated': (active == i),'deactivated': (active != i)}" (click)="select(employee,i)"
|
|
||||||
*ngFor="let employee of demoeAttach;let i=index;"
|
|
||||||
size-xs="6" size-sm="6" size-md="6" size-lg="6" align-self-stretch>
|
|
||||||
<div class="profileImageDiv"> <img class="profileImage" src="../assets/imgs/profile.png"></div>
|
|
||||||
<div *ngIf="active == i" class="selIEmpDiv"> <img class="selIEmpImage" src="../assets/imgs/green.png"></div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<br/>
|
|
||||||
<div class="repContentDiv">
|
|
||||||
<ion-label style="color:var(--dark) !important">
|
|
||||||
<span style="font-weight: bold !important">{{employee.EMPLOYEE_DISPLAY_NAME}}</span>
|
|
||||||
<br>{{employee.USER_NAME}}<br>
|
|
||||||
{{employee.EMAIL_ADDRESS}}</ion-label>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</ion-col>
|
|
||||||
</ion-row>
|
|
||||||
</ion-grid> -->
|
|
||||||
|
|
||||||
|
|
||||||
<!-- </ion-radio-group> -->
|
|
||||||
<!--
|
|
||||||
</ion-list> -->
|
|
||||||
|
|
||||||
<div class="square-container">
|
|
||||||
<div (click)="select(employee,i)" *ngFor="let employee of ReplacementList;let i=index;" class="square">
|
|
||||||
<div class="profileImageDiv">
|
|
||||||
<!-- <img class="profileImage" src="../assets/imgs/profile.png"> -->
|
|
||||||
|
|
||||||
<img *ngIf="employee.EMPLOYEE_IMAGE" class="empImgeRep" [src]="'data:image/png;base64,'+employee.EMPLOYEE_IMAGE">
|
|
||||||
<img *ngIf="employee.EMPLOYEE_IMAGE == null" class="empImgeRep" src="../assets/imgs/profile.png">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div *ngIf="active == i" class="selIEmpDiv">
|
|
||||||
<img class="selIEmpImage" src="../assets/imgs/green.png">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div [ngClass]="{'activated': (active == i),'deactivated': (active != i)}"
|
|
||||||
class="content">
|
|
||||||
<ion-label>
|
|
||||||
|
|
||||||
<span style="font-weight: bold !important">{{employee.EMPLOYEE_DISPLAY_NAME}}</span>
|
|
||||||
<br>{{employee.USER_NAME}}<br>
|
|
||||||
{{employee.EMAIL_ADDRESS}}
|
|
||||||
</ion-label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</ion-item>
|
|
||||||
<ion-infinite-scroll (ionInfinite)="doInfinite($event)">
|
|
||||||
<ion-infinite-scroll-content></ion-infinite-scroll-content>
|
|
||||||
</ion-infinite-scroll>
|
|
||||||
</ion-content>
|
|
||||||
|
|
||||||
<ion-footer>
|
|
||||||
<div class="centerDiv">
|
|
||||||
<ion-button class="footer-button" style="background: var(--newgreen)!important;border-radius: 10px; --background: transparent; " ion-button (click)="submitAction()">
|
|
||||||
{{'general, submit' | translate}}</ion-button>
|
|
||||||
|
|
||||||
<ion-button class="footer-button" style="background: var(--darkblue)!important;border-radius: 10px; --background: transparent; " ion-button (click)="closeModal()">
|
|
||||||
{{'general, cancel' | translate}}</ion-button>
|
|
||||||
</div>
|
|
||||||
</ion-footer>
|
|
||||||
@ -1,159 +0,0 @@
|
|||||||
button.item-button.button.button-md.button-clear.button-clear-md {
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.footer-button {
|
|
||||||
border-radius: 3px;
|
|
||||||
padding: 0 1.1em;
|
|
||||||
min-height: 45px;
|
|
||||||
min-width: 200px;
|
|
||||||
}
|
|
||||||
|
|
||||||
// ion-item {
|
|
||||||
// margin-top: 5%;
|
|
||||||
// margin-right: 7%;
|
|
||||||
// width: 100%;
|
|
||||||
// }
|
|
||||||
.ionItem{
|
|
||||||
border: #e4e4e4 solid;
|
|
||||||
/* margin: 6px; */
|
|
||||||
/* padding: 11px; */
|
|
||||||
height: 85px;
|
|
||||||
width: 164px;
|
|
||||||
border-radius: 5px;
|
|
||||||
text-align: center;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.profileImageDiv{
|
|
||||||
text-align: center;
|
|
||||||
margin-bottom: -27px;
|
|
||||||
z-index: 3;
|
|
||||||
position: relative;
|
|
||||||
top: 0;
|
|
||||||
|
|
||||||
}
|
|
||||||
.profileImage{
|
|
||||||
width:60px !important;
|
|
||||||
// margin-left: -25px;
|
|
||||||
// margin-right: 22px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.activated{
|
|
||||||
border: #209a83 0.02cm solid ;
|
|
||||||
}
|
|
||||||
.deactivated{ border: #e4e4e4 0.02cm solid;
|
|
||||||
}
|
|
||||||
.repContentDiv{
|
|
||||||
text-align: center;
|
|
||||||
width: 85%;
|
|
||||||
font-size: 14px;
|
|
||||||
border: #e4e4e4 solid;
|
|
||||||
border-radius: 5px;
|
|
||||||
padding: 20px 8px 8px 8px;
|
|
||||||
margin-top: -9px;
|
|
||||||
margin-right: -35px
|
|
||||||
|
|
||||||
}
|
|
||||||
.selIEmpDiv{
|
|
||||||
text-align: right;
|
|
||||||
margin-bottom: -26px;
|
|
||||||
margin-right: 0px;
|
|
||||||
z-index: 3;
|
|
||||||
position: relative;
|
|
||||||
top: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.selIEmpImage{
|
|
||||||
width:22px !important
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.noteInput{
|
|
||||||
border: solid var(--gray) 1px;
|
|
||||||
border-radius: 15px;
|
|
||||||
margin: 8px 17px 0px 17px;
|
|
||||||
padding: 10px 2px 10px 2px;
|
|
||||||
}
|
|
||||||
.filterInput{
|
|
||||||
border: solid var(--gray) 1px;
|
|
||||||
border-radius: 21px;
|
|
||||||
padding-left: 10px !important;
|
|
||||||
|
|
||||||
}
|
|
||||||
.filterInput-ar{
|
|
||||||
// border: solid var(--gray) 1px;
|
|
||||||
// border-radius: 21px;
|
|
||||||
// padding-left: 10px !important;
|
|
||||||
border: solid var(--gray) 1px;
|
|
||||||
border-radius: 21px;
|
|
||||||
// padding-left: 145px !important;
|
|
||||||
margin-left: 115px;
|
|
||||||
// padding-right: 129px;
|
|
||||||
// margin-right: -143px;
|
|
||||||
margin-right: -136px;
|
|
||||||
}
|
|
||||||
// {padding-left: unset;
|
|
||||||
// padding-right: unset;
|
|
||||||
// -webkit-padding-start: var(--padding-start);
|
|
||||||
// padding-inline-start: var(--padding-start);
|
|
||||||
// -webkit-padding-end: var(--padding-end);
|
|
||||||
// padding-inline-end: var(--padding-end);
|
|
||||||
|
|
||||||
// margin-left: -53x;
|
|
||||||
// margin-right: 37px;}
|
|
||||||
|
|
||||||
.filterBtn{
|
|
||||||
background: var(--newgreen);
|
|
||||||
--background: var (--newgreen);
|
|
||||||
border-radius: 50%;
|
|
||||||
height: 60px;
|
|
||||||
width: 60px;
|
|
||||||
|
|
||||||
}
|
|
||||||
.filterBtn-ar{
|
|
||||||
// background: var(--newgreen);
|
|
||||||
// --background: var (--newgreen);
|
|
||||||
// border-radius: 50%;
|
|
||||||
// height: 60px;
|
|
||||||
// width: 60px;
|
|
||||||
background: var(--newgreen);
|
|
||||||
--background: var (--newgreen);
|
|
||||||
border-radius: 50%;
|
|
||||||
height: 60px;
|
|
||||||
width: 60px;
|
|
||||||
margin-left: -181px;
|
|
||||||
margin-right: 259px;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
*{
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
.square-container{
|
|
||||||
// padding: 8px;
|
|
||||||
width:100%;
|
|
||||||
}
|
|
||||||
.square{
|
|
||||||
// width:calc(100% / 2);
|
|
||||||
width:50%;
|
|
||||||
float:left;
|
|
||||||
position: relative;
|
|
||||||
// padding-bottom: calc(100% / 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
.square .content{
|
|
||||||
width: calc(100% - 16px) !important;
|
|
||||||
height: calc(100% - 16px) !important;
|
|
||||||
margin: 8px;
|
|
||||||
padding: 16px;
|
|
||||||
// position: absolute;
|
|
||||||
color: white;
|
|
||||||
border-radius: 9px;
|
|
||||||
text-align: center;
|
|
||||||
// background-color: #0095ff;
|
|
||||||
// box-shadow: 0 2px 5px rgba(0, 0, 0, 0.26);
|
|
||||||
}
|
|
||||||
@ -1,27 +0,0 @@
|
|||||||
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
|
||||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
|
||||||
|
|
||||||
import { AbsenceReplacementListComponent } from './absence-replacement-list.component';
|
|
||||||
|
|
||||||
describe('AbsenceReplacementListComponent', () => {
|
|
||||||
let component: AbsenceReplacementListComponent;
|
|
||||||
let fixture: ComponentFixture<AbsenceReplacementListComponent>;
|
|
||||||
|
|
||||||
beforeEach(async(() => {
|
|
||||||
TestBed.configureTestingModule({
|
|
||||||
declarations: [ AbsenceReplacementListComponent ],
|
|
||||||
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
||||||
})
|
|
||||||
.compileComponents();
|
|
||||||
}));
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
fixture = TestBed.createComponent(AbsenceReplacementListComponent);
|
|
||||||
component = fixture.componentInstance;
|
|
||||||
fixture.detectChanges();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should create', () => {
|
|
||||||
expect(component).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@ -1,343 +0,0 @@
|
|||||||
import { ModalController } from '@ionic/angular';
|
|
||||||
import { Component, OnInit } from '@angular/core';
|
|
||||||
import { CommonService } from 'src/app/hmg-common/services/common/common.service';
|
|
||||||
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';
|
|
||||||
import { WorKListReplacmentEmployeeResponse } from 'src/app/notification/models/ReplacmentEmployeeRes';
|
|
||||||
import { WorkListReplacmentEmployeeRequest } from 'src/app/notification/models/ReplacmentEmployeeReq';
|
|
||||||
import { WorkListActionRequest } from 'src/app/notification/models/NotificationActionReq';
|
|
||||||
import { WorklistMainService } from 'src/app/notification/service/work-list.main.service';
|
|
||||||
import { ViewReplacementModalComponent } from 'src/app/notification/view-replacement-modal/view-replacement-modal.component';
|
|
||||||
import { WorklistService } from 'src/app/notification/service/worklist.service';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'app-absence-replacement-list',
|
|
||||||
templateUrl: './absence-replacement-list.component.html',
|
|
||||||
styleUrls: ['./absence-replacement-list.component.scss'],
|
|
||||||
})
|
|
||||||
export class AbsenceReplacementListComponent implements OnInit {
|
|
||||||
|
|
||||||
P_SEARCH_EMPLOYEE_DISPLAY_NAME: string = "";
|
|
||||||
P_SEARCH_EMAIL_ADDRESS: string = "";
|
|
||||||
getPassActionMode: any;
|
|
||||||
selectedValue: any;
|
|
||||||
inputSearch: any;
|
|
||||||
selEmpName: any;
|
|
||||||
selectedReplacedEmp: any;
|
|
||||||
selectedUserInf: any;
|
|
||||||
userNote: any;
|
|
||||||
getPassNotificationDetails: any;
|
|
||||||
isAnswer: boolean = false;
|
|
||||||
pQuestion: string = "";
|
|
||||||
selEmp: any;
|
|
||||||
P_PAGE_NUM: number;
|
|
||||||
P_PAGE_LIMIT: number;
|
|
||||||
ReplacementList: any = [];
|
|
||||||
searchBy: string = "2";
|
|
||||||
IsReachEnd: boolean = false;
|
|
||||||
ReplacmentListRes: WorKListReplacmentEmployeeResponse;
|
|
||||||
private WorkListReplacmentEmployeeObj: WorkListReplacmentEmployeeRequest = new WorkListReplacmentEmployeeRequest();
|
|
||||||
private WorkListActionObj: WorkListActionRequest;
|
|
||||||
getpassResAttr: any = [];
|
|
||||||
active: any;
|
|
||||||
demoeAttach:any=[];
|
|
||||||
public direction: string;
|
|
||||||
constructor(public worklistService: WorklistService, private cs: CommonService, private ts: TranslatorService, public workListMainService: WorklistMainService, public modalCtrl: ModalController) {
|
|
||||||
this.P_PAGE_NUM = 1;
|
|
||||||
this.P_PAGE_LIMIT = 50;
|
|
||||||
// this.getPassActionMode = this.cs.sharedService.getSharedData('passActionMode', false);
|
|
||||||
// this.getPassNotificationDetails = this.cs.sharedService.getSharedData('passNotificationInfo', false);
|
|
||||||
// this.getpassResAttr = this.cs.sharedService.getSharedData('passResAttr', false);
|
|
||||||
// this.pQuestion = this.cs.sharedService.getSharedData('pQuestion', false);
|
|
||||||
// if (this.getPassActionMode == "ANSWER_INFO") {
|
|
||||||
// this.isAnswer = true;
|
|
||||||
// }
|
|
||||||
this.WorkListReplacmentEmployeeObj.P_PAGE_NUM = this.P_PAGE_NUM;
|
|
||||||
this.WorkListReplacmentEmployeeObj.P_PAGE_LIMIT = this.P_PAGE_LIMIT;
|
|
||||||
this.direction = TranslatorService.getCurrentLanguageName();
|
|
||||||
// this.WorkListActionObj = new WorkListActionRequest();
|
|
||||||
// this.WorkListActionObj.P_NOTIFICATION_ID = this.getPassNotificationDetails.NOTIFICATION_ID;//26919060;
|
|
||||||
// this.WorkListActionObj.P_FORWARD_TO_USER_NAME = "";
|
|
||||||
// this.WorkListActionObj.P_ACTION_MODE = "";
|
|
||||||
// this.WorkListActionObj.P_COMMENTS = "";
|
|
||||||
// this.WorkListActionObj.RespondAttributeList =[];// this.getpassResAttr;
|
|
||||||
// this.WorkListActionObj.P_APPROVER_INDEX = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
ngOnInit() {
|
|
||||||
this.selectedReplacedEmp = this.cs.sharedService.getSharedData('selectedReplacedEmp');
|
|
||||||
this.demoeAttach = [{
|
|
||||||
USER_NAME: '18888',
|
|
||||||
EMPLOYEE_DISPLAY_NAME: "AAA fgfhfhfhf hyutyututut ",
|
|
||||||
EMAIL_ADDRESS: "test@yuyuu.hjj",
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
},
|
|
||||||
{
|
|
||||||
|
|
||||||
USER_NAME: '18888',
|
|
||||||
EMPLOYEE_DISPLAY_NAME: "AAA fgfhfhfhf hyutyututut ",
|
|
||||||
EMAIL_ADDRESS: "test@yuyuu.hjj"
|
|
||||||
|
|
||||||
},
|
|
||||||
{
|
|
||||||
USER_NAME: '18888',
|
|
||||||
EMPLOYEE_DISPLAY_NAME: "AAA fgfhfhfhf hyutyututut ",
|
|
||||||
EMAIL_ADDRESS: "test@yuyuu.hjj"
|
|
||||||
|
|
||||||
},
|
|
||||||
{
|
|
||||||
USER_NAME: '18888',
|
|
||||||
EMPLOYEE_DISPLAY_NAME: "AAA fgfhfhfhf hyutyututut ",
|
|
||||||
EMAIL_ADDRESS: "test@yuyuu.hjj"
|
|
||||||
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
getreplacmentemployee() {
|
|
||||||
this.ReplacementList = [];
|
|
||||||
this.IsReachEnd = false;
|
|
||||||
this.P_PAGE_NUM = 1;
|
|
||||||
if (this.inputSearch) {
|
|
||||||
switch (this.searchBy) {
|
|
||||||
case '1': {
|
|
||||||
|
|
||||||
this.WorkListReplacmentEmployeeObj.P_SEARCH_EMPLOYEE_DISPLAY_NAME = this.inputSearch;
|
|
||||||
this.WorkListReplacmentEmployeeObj.P_SEARCH_USER_NAME = "";
|
|
||||||
this.WorkListReplacmentEmployeeObj.P_SEARCH_EMAIL_ADDRESS = "";
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case '2': {
|
|
||||||
this.WorkListReplacmentEmployeeObj.P_SEARCH_USER_NAME = this.inputSearch;
|
|
||||||
this.WorkListReplacmentEmployeeObj.P_SEARCH_EMPLOYEE_DISPLAY_NAME = "";
|
|
||||||
this.WorkListReplacmentEmployeeObj.P_SEARCH_EMAIL_ADDRESS = "";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case '3': {
|
|
||||||
this.WorkListReplacmentEmployeeObj.P_SEARCH_EMAIL_ADDRESS = this.inputSearch;
|
|
||||||
this.WorkListReplacmentEmployeeObj.P_SEARCH_USER_NAME = "";
|
|
||||||
this.WorkListReplacmentEmployeeObj.P_SEARCH_EMPLOYEE_DISPLAY_NAME = "";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default: {
|
|
||||||
this.WorkListReplacmentEmployeeObj.P_SEARCH_USER_NAME = "";
|
|
||||||
this.WorkListReplacmentEmployeeObj.P_SEARCH_EMPLOYEE_DISPLAY_NAME = "";
|
|
||||||
this.WorkListReplacmentEmployeeObj.P_SEARCH_EMAIL_ADDRESS = "";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
this.WorkListReplacmentEmployeeObj.P_SEARCH_USER_NAME = "";
|
|
||||||
this.WorkListReplacmentEmployeeObj.P_SEARCH_EMPLOYEE_DISPLAY_NAME = "";
|
|
||||||
this.WorkListReplacmentEmployeeObj.P_SEARCH_EMAIL_ADDRESS = "";
|
|
||||||
}
|
|
||||||
// if(this.selectedValue =="1"){
|
|
||||||
// this.WorkListReplacmentEmployeeObj.P_SEARCH_USER_NAME=this.inputSearch;
|
|
||||||
// this.WorkListReplacmentEmployeeObj.P_SEARCH_EMPLOYEE_DISPLAY_NAME="";
|
|
||||||
// this.WorkListReplacmentEmployeeObj.P_SEARCH_EMAIL_ADDRESS="";
|
|
||||||
// }
|
|
||||||
// else if(this.selectedValue =="2"){
|
|
||||||
// this.WorkListReplacmentEmployeeObj.P_SEARCH_USER_NAME="";
|
|
||||||
// this.WorkListReplacmentEmployeeObj.P_SEARCH_EMPLOYEE_DISPLAY_NAME=this.inputSearch;
|
|
||||||
// this.WorkListReplacmentEmployeeObj.P_SEARCH_EMAIL_ADDRESS="";
|
|
||||||
// }
|
|
||||||
// else if(this.selectedValue =="3"){
|
|
||||||
// this.WorkListReplacmentEmployeeObj.P_SEARCH_USER_NAME="";
|
|
||||||
// this.WorkListReplacmentEmployeeObj.P_SEARCH_EMPLOYEE_DISPLAY_NAME="";
|
|
||||||
// this.WorkListReplacmentEmployeeObj.P_SEARCH_EMAIL_ADDRESS=this.inputSearch;
|
|
||||||
// }
|
|
||||||
this.WorkListReplacmentEmployeeObj.P_SELECTED_EMPLOYEE_NUMBER =this.selectedReplacedEmp;
|
|
||||||
this.worklistService.getReplacmentEmployeeList(this.WorkListReplacmentEmployeeObj).
|
|
||||||
subscribe((result: WorKListReplacmentEmployeeResponse) => {
|
|
||||||
this.handleWorkListReplacmentEmployeeResult(result);
|
|
||||||
});
|
|
||||||
|
|
||||||
}//End replacment Employee
|
|
||||||
|
|
||||||
handleWorkListReplacmentEmployeeResult(result) {
|
|
||||||
|
|
||||||
if (this.cs.validResponse(result)) {
|
|
||||||
// this.sharedData.setSharedData(result, WorKListResponse.SHARED_DATA);
|
|
||||||
if (this.cs.hasData(result.ReplacementList)) {
|
|
||||||
//this.ReplacmentListRes =result.ReplacementList;
|
|
||||||
this.ReplacementList = result.ReplacementList;
|
|
||||||
this.P_PAGE_NUM++;
|
|
||||||
let lastItemIndex = this.ReplacementList.length - 1;
|
|
||||||
if (result.ReplacementList[lastItemIndex]) {
|
|
||||||
let lastitem = result.ReplacementList[lastItemIndex];
|
|
||||||
if (lastitem.NO_OF_ROWS == lastitem.ROW_NUM) {
|
|
||||||
this.IsReachEnd = true;
|
|
||||||
} else {
|
|
||||||
this.IsReachEnd = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
let msg: string = this.ts.trPK('general', 'noResult');
|
|
||||||
this.cs.presentAlert(msg);
|
|
||||||
}
|
|
||||||
// if(result.ReplacementList.length == 0){
|
|
||||||
|
|
||||||
// }
|
|
||||||
|
|
||||||
// else if(result.ReplacementList != null)
|
|
||||||
// {
|
|
||||||
// this.ReplacmentListRes =result.ReplacementList;
|
|
||||||
// //open modal
|
|
||||||
// this.openModale(this.ReplacmentListRes);
|
|
||||||
|
|
||||||
|
|
||||||
// } // if result == null
|
|
||||||
|
|
||||||
} // valid it
|
|
||||||
}
|
|
||||||
|
|
||||||
getValueSelected(Value) {
|
|
||||||
|
|
||||||
this.selectedValue = Value;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
select(selectEmp,index){
|
|
||||||
console.log(selectEmp.EMPLOYEE_DISPLAY_NAME);
|
|
||||||
this.selEmp=selectEmp
|
|
||||||
this.active=index;
|
|
||||||
}
|
|
||||||
clear() {
|
|
||||||
this.selEmpName = "";
|
|
||||||
this.selectedUserInf = null;
|
|
||||||
|
|
||||||
}
|
|
||||||
async openModale(ReplacmentListRes) {
|
|
||||||
const modal = await this.modalCtrl.create({
|
|
||||||
component: ViewReplacementModalComponent
|
|
||||||
});
|
|
||||||
|
|
||||||
modal.onDidDismiss()
|
|
||||||
.then((data) => {
|
|
||||||
if (data == "cancel" || data == "undefined") {
|
|
||||||
//this.selEmpName="";
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
this.selectedUserInf = data;
|
|
||||||
this.selEmpName = this.selectedUserInf.EMPLOYEE_DISPLAY_NAME;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return await modal.present();
|
|
||||||
}
|
|
||||||
|
|
||||||
submitAction() {
|
|
||||||
this.selEmp
|
|
||||||
if( this.selEmp){
|
|
||||||
let data = this.selEmp;
|
|
||||||
this.modalCtrl.dismiss(data);
|
|
||||||
}else{
|
|
||||||
let msg: string = this.ts.trPK("replacementRoll", "msg");
|
|
||||||
this.cs.showErrorMessageDialog(() => {
|
|
||||||
}, this.ts.trPK('general', 'ok'), msg);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// if (this.selEmp && this.isAnswer == false) {
|
|
||||||
// // this.selectedUserInf = this.ReplacementList[this.selEmp];
|
|
||||||
// this.selectedUserInf = this.selEmp;
|
|
||||||
// console.log("selEmp "+ this.selEmp.USER_NAME);
|
|
||||||
|
|
||||||
// if (this.selectedUserInf && this.selectedUserInf.USER_NAME) {
|
|
||||||
// console.log("userInfo "+this.selectedUserInf.USER_NAME);
|
|
||||||
// if (this.userNote) {
|
|
||||||
// this.WorkListActionObj.P_FORWARD_TO_USER_NAME = this.selectedUserInf.USER_NAME;
|
|
||||||
// this.WorkListActionObj.P_ACTION_MODE = this.getPassActionMode;
|
|
||||||
// this.WorkListActionObj.P_COMMENTS = this.userNote;// response Attr
|
|
||||||
|
|
||||||
// this.workListMainService.actionButton(this.WorkListActionObj).
|
|
||||||
// subscribe((result: any) => {
|
|
||||||
// this.handleApplayActionResult(result);
|
|
||||||
// });
|
|
||||||
// } else {
|
|
||||||
// let msg: string = this.ts.trPK("replacementRoll", "enterNote");
|
|
||||||
// this.cs.showErrorMessageDialog(() => {
|
|
||||||
// }, this.ts.trPK('general', 'ok'), msg);
|
|
||||||
|
|
||||||
// }
|
|
||||||
// } else {
|
|
||||||
// let msg: string = this.ts.trPK("replacementRoll", "msg");
|
|
||||||
// this.cs.showErrorMessageDialog(() => {
|
|
||||||
// }, this.ts.trPK('general', 'ok'), msg);
|
|
||||||
// }
|
|
||||||
// } else if (this.isAnswer == true) {
|
|
||||||
// if (this.userNote) {
|
|
||||||
// this.WorkListActionObj.P_FORWARD_TO_USER_NAME = null;
|
|
||||||
// this.WorkListActionObj.P_ACTION_MODE = this.getPassActionMode;
|
|
||||||
// this.WorkListActionObj.P_COMMENTS = this.userNote;// response Attr
|
|
||||||
|
|
||||||
// this.workListMainService.actionButton(this.WorkListActionObj).
|
|
||||||
// subscribe((result: any) => {
|
|
||||||
// this.handleApplayActionResult(result);
|
|
||||||
// });
|
|
||||||
// } else {
|
|
||||||
// let msg: string = this.ts.trPK("replacementRoll", "enterNote");
|
|
||||||
// this.cs.showErrorMessageDialog(() => {
|
|
||||||
// }, this.ts.trPK('general', 'ok'), msg);
|
|
||||||
// }
|
|
||||||
// } else {
|
|
||||||
// let msg: string = this.ts.trPK("replacementRoll", "msg");
|
|
||||||
// this.cs.showErrorMessageDialog(() => {
|
|
||||||
// }, this.ts.trPK('general', 'ok'), msg);
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
doInfinite(infiniteScroll) {
|
|
||||||
if (!this.IsReachEnd) {
|
|
||||||
//const request =new WorkListActionRequest();
|
|
||||||
// request.WorkListReplacmentEmployeeObj.P_SEARCH_USER_NAME=this.P_SEARCH_USER_NAME;
|
|
||||||
// request.WorkListReplacmentEmployeeObj.P_SEARCH_EMPLOYEE_DISPLAY_NAME=this.P_SEARCH_EMPLOYEE_DISPLAY_NAME;
|
|
||||||
// request.P_SEARCH_EMAIL_ADDRESS=this.P_SEARCH_EMAIL_ADDRESS;
|
|
||||||
this.WorkListReplacmentEmployeeObj.P_PAGE_NUM = this.P_PAGE_NUM;
|
|
||||||
this.WorkListReplacmentEmployeeObj.P_PAGE_LIMIT = this.P_PAGE_LIMIT;
|
|
||||||
// request.P_SELECTED_EMPLOYEE_NUMBER=this.selEmp;
|
|
||||||
|
|
||||||
this.worklistService.getReplacmentEmployeeList(this.WorkListReplacmentEmployeeObj).
|
|
||||||
subscribe((result: any) => {
|
|
||||||
if (this.cs.validResponse(result)) {
|
|
||||||
if (this.cs.hasData(result.ReplacementList)) {
|
|
||||||
this.P_PAGE_NUM++;
|
|
||||||
result.ReplacementList.forEach(vr => {
|
|
||||||
if (vr.ROW_NUM == vr.NO_OF_ROWS) {
|
|
||||||
this.IsReachEnd = true;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
this.IsReachEnd = false;
|
|
||||||
}
|
|
||||||
this.ReplacementList.push(vr);
|
|
||||||
// this.pro.GetVacationRulesList.push(vr);
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
this.IsReachEnd = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//this.P_PAGE_NUM++;
|
|
||||||
if (infiniteScroll)
|
|
||||||
infiniteScroll.target.complete();
|
|
||||||
|
|
||||||
|
|
||||||
// console.log(resFlag);
|
|
||||||
}, (Error) => console.log(Error), () => infiniteScroll.target.complete());
|
|
||||||
} else {
|
|
||||||
if (infiniteScroll)
|
|
||||||
infiniteScroll.target.complete();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
closeModal() {
|
|
||||||
this.modalCtrl.dismiss();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@ -1,103 +0,0 @@
|
|||||||
import { NgModule } from "@angular/core";
|
|
||||||
import { CommonModule } from "@angular/common";
|
|
||||||
import { FormsModule } from "@angular/forms";
|
|
||||||
import { Routes, RouterModule } from "@angular/router";
|
|
||||||
import { AbsenceListService } from "./service/service.service";
|
|
||||||
import { IonicModule } from "@ionic/angular";
|
|
||||||
import { SubmitAbsenceService } from "./service/submit.absence.service";
|
|
||||||
import { AbsencePage } from "./absence.page";
|
|
||||||
import { DatePicker } from "@ionic-native/date-picker/ngx";
|
|
||||||
import { HomeComponent } from "./home/home.component";
|
|
||||||
import { SubmitAbsenceComponent } from "./submit-absence/submit-absence.component";
|
|
||||||
import { replacmentListService } from "./service/replacement-list.service";
|
|
||||||
import { HmgCommonModule } from "./../hmg-common/hmg-common.module";
|
|
||||||
import { ReplacementListComponent } from "../vacation-rule/replacement-list/replacement-list.component";
|
|
||||||
import { AbsenceConfirmComponent } from "./absence-confirm/absence-confirm.component";
|
|
||||||
import { ConfirmAddEitService } from "./service/confirm-add-eit-service";
|
|
||||||
import { SubmitAbConfirmService } from "./service/submit-absence-confirm.service";
|
|
||||||
import { WorklistAttachService } from "./service/work-list-attach.service";
|
|
||||||
import { AbsenceAttachmentComponent } from "./absence-attachment/absence-attachment.component";
|
|
||||||
import { AddAttachService } from "./service/add-attach-service";
|
|
||||||
import { WorkListAttachViewComponent } from "src/app/notification/work-list-attach-view/work-list-attach-view.component";
|
|
||||||
import { ViewAttachmentsComponent } from './view-attachments/view-attachments.component';
|
|
||||||
import { SubmitAbsenceModalComponent } from './submit-absence-modal/submit-absence-modal.component';
|
|
||||||
import { AbsenceReplacementListComponent } from './absence-replacement-list/absence-replacement-list.component';
|
|
||||||
import { WorklistService } from 'src/app/notification/service/worklist.service';
|
|
||||||
import { WorklistMainService } from 'src/app/notification/service/work-list.main.service';
|
|
||||||
const routes: Routes = [
|
|
||||||
{
|
|
||||||
path: "",
|
|
||||||
component: AbsencePage,
|
|
||||||
children: [
|
|
||||||
{
|
|
||||||
path: "home",
|
|
||||||
component: HomeComponent
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: "submit-absence",
|
|
||||||
component: SubmitAbsenceComponent
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: "replacement-list",
|
|
||||||
component: ReplacementListComponent
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: "confirm-absence",
|
|
||||||
component: AbsenceConfirmComponent
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: "absence-attachment",
|
|
||||||
component: AbsenceAttachmentComponent
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: "worklist-attachment",
|
|
||||||
component: WorkListAttachViewComponent
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path:'view-attachements',
|
|
||||||
component:ViewAttachmentsComponent
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path:'absence-submit-modal',
|
|
||||||
component:SubmitAbsenceModalComponent
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path:'absence-replacment-modal',
|
|
||||||
component:AbsenceReplacementListComponent
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [
|
|
||||||
CommonModule,
|
|
||||||
FormsModule,
|
|
||||||
IonicModule,
|
|
||||||
HmgCommonModule,
|
|
||||||
RouterModule.forChild(routes)
|
|
||||||
],
|
|
||||||
providers: [
|
|
||||||
AbsenceListService,
|
|
||||||
SubmitAbsenceService,
|
|
||||||
replacmentListService,
|
|
||||||
WorklistAttachService,
|
|
||||||
SubmitAbConfirmService,
|
|
||||||
DatePicker,
|
|
||||||
ConfirmAddEitService,
|
|
||||||
AddAttachService,
|
|
||||||
WorklistService,
|
|
||||||
WorklistMainService
|
|
||||||
],
|
|
||||||
declarations: [
|
|
||||||
AbsencePage,
|
|
||||||
HomeComponent,
|
|
||||||
SubmitAbsenceComponent,
|
|
||||||
AbsenceConfirmComponent,
|
|
||||||
AbsenceAttachmentComponent,
|
|
||||||
ViewAttachmentsComponent,
|
|
||||||
SubmitAbsenceModalComponent,
|
|
||||||
AbsenceReplacementListComponent
|
|
||||||
]
|
|
||||||
})
|
|
||||||
export class AbsencePageModule {}
|
|
||||||
@ -1,6 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
<ion-content>
|
|
||||||
<ion-router-outlet></ion-router-outlet>
|
|
||||||
</ion-content>
|
|
||||||