merge master-newdesign

MOE_DEV_NEW_TEMPORARY_DESIGN
Mohamed Mekawy 6 years ago
commit a928d525bc

@ -1252,6 +1252,159 @@
}
}
},
"@ionic/cli-framework": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/@ionic/cli-framework/-/cli-framework-4.1.1.tgz",
"integrity": "sha512-xaq8MrVUPt4NekLUv+A2ckVNi4stfSGdMk3Dpx0hRGLdgA8IHfVEmkpW5dkqYW6TX4CaWFPYTRMDl+U3uO9w+A==",
"dev": true,
"requires": {
"@ionic/utils-array": "2.1.1",
"@ionic/utils-fs": "3.1.1",
"@ionic/utils-object": "2.1.1",
"@ionic/utils-process": "2.1.1",
"@ionic/utils-stream": "3.1.1",
"@ionic/utils-subprocess": "2.1.1",
"@ionic/utils-terminal": "2.1.1",
"chalk": "^3.0.0",
"debug": "^4.0.0",
"lodash": "^4.17.5",
"log-update": "^4.0.0",
"minimist": "^1.2.0",
"rimraf": "^3.0.0",
"slice-ansi": "^4.0.0",
"string-width": "^4.1.0",
"strip-ansi": "^6.0.0",
"tslib": "^1.9.0",
"untildify": "^4.0.0",
"wrap-ansi": "^6.0.0",
"write-file-atomic": "^3.0.0"
},
"dependencies": {
"ansi-regex": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
"integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
"dev": true
},
"ansi-styles": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
"integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
"dev": true,
"requires": {
"@types/color-name": "^1.1.1",
"color-convert": "^2.0.1"
}
},
"chalk": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
"integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
"dev": true,
"requires": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
}
},
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
"color-name": "~1.1.4"
}
},
"debug": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"dev": true,
"requires": {
"ms": "^2.1.1"
}
},
"emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
},
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
},
"is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"dev": true
},
"minimist": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
"dev": true
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
"rimraf": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
"dev": true,
"requires": {
"glob": "^7.1.3"
}
},
"string-width": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
"integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
"dev": true,
"requires": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.0"
}
},
"strip-ansi": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
"integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
"dev": true,
"requires": {
"ansi-regex": "^5.0.0"
}
},
"supports-color": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
"integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
"dev": true,
"requires": {
"has-flag": "^4.0.0"
}
},
"wrap-ansi": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
"integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
"dev": true,
"requires": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
"strip-ansi": "^6.0.0"
}
}
}
},
"@ionic/core": {
"version": "4.11.8",
"resolved": "https://registry.npmjs.org/@ionic/core/-/core-4.11.8.tgz",
@ -1261,6 +1414,322 @@
"tslib": "^1.10.0"
}
},
"@ionic/lab": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/@ionic/lab/-/lab-3.1.2.tgz",
"integrity": "sha512-hHhbgrSERgHgU7l/6DMvZ98Xday0wV2jfxRdmV+CH/n/JBeWisCThLfZTNKpfwrj6nGANHlykRGAXM0pQnc4Rw==",
"dev": true,
"requires": {
"@ionic/cli-framework": "4.1.1",
"@ionic/utils-fs": "3.1.1",
"chalk": "^3.0.0",
"express": "^4.16.2",
"tslib": "^1.9.0"
},
"dependencies": {
"ansi-styles": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
"integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
"dev": true,
"requires": {
"@types/color-name": "^1.1.1",
"color-convert": "^2.0.1"
}
},
"chalk": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
"integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
"dev": true,
"requires": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
}
},
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
"color-name": "~1.1.4"
}
},
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
},
"supports-color": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
"integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
"dev": true,
"requires": {
"has-flag": "^4.0.0"
}
}
}
},
"@ionic/utils-array": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/@ionic/utils-array/-/utils-array-2.1.1.tgz",
"integrity": "sha512-6tdrg0g/w5I2Xn/YeM8khhcKgphNwt9VJ4qJ//nJQrmlwwyV2ULSIBnhEIWfYdWgkSD24JLQzSsoB0ZltCUbNw==",
"dev": true,
"requires": {
"debug": "^4.0.0",
"tslib": "^1.9.0"
},
"dependencies": {
"debug": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"dev": true,
"requires": {
"ms": "^2.1.1"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
}
}
},
"@ionic/utils-fs": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/@ionic/utils-fs/-/utils-fs-3.1.1.tgz",
"integrity": "sha512-LwfziPHkVata/54dcf8sn/LhShUhgdds411M8v4H6+ugQQO9N+a5TDtFtVnnqSy8Q3uxR15SBWMGyII8i730BA==",
"dev": true,
"requires": {
"debug": "^4.0.0",
"fs-extra": "^8.0.1",
"through2": "^3.0.0",
"tslib": "^1.9.0"
},
"dependencies": {
"debug": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"dev": true,
"requires": {
"ms": "^2.1.1"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
"through2": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz",
"integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==",
"dev": true,
"requires": {
"readable-stream": "2 || 3"
}
}
}
},
"@ionic/utils-object": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/@ionic/utils-object/-/utils-object-2.1.1.tgz",
"integrity": "sha512-d9trsuk7EzlgzcoCB3BVkhqG/AEzGVw3QUmsDf+MaAUXTtmXiy8wkIpDFx4sgfEXDTnmJP2HO7ZnDEusLDOWoA==",
"dev": true,
"requires": {
"debug": "^4.0.0",
"tslib": "^1.9.0"
},
"dependencies": {
"debug": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"dev": true,
"requires": {
"ms": "^2.1.1"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
}
}
},
"@ionic/utils-process": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/@ionic/utils-process/-/utils-process-2.1.1.tgz",
"integrity": "sha512-cxQHvoqVEdsAzvI1UmiQNBOzEkag9dHU52L1LsC+FPkiNirNM2tYgKNa3tERcZnZBZwqvKveGIJiiBnFQRnDYw==",
"dev": true,
"requires": {
"@ionic/utils-object": "2.1.1",
"@ionic/utils-terminal": "2.1.1",
"debug": "^4.0.0",
"lodash": "^4.17.5",
"tree-kill": "^1.2.2",
"tslib": "^1.9.0"
},
"dependencies": {
"debug": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"dev": true,
"requires": {
"ms": "^2.1.1"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
"tree-kill": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
"integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
"dev": true
}
}
},
"@ionic/utils-stream": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/@ionic/utils-stream/-/utils-stream-3.1.1.tgz",
"integrity": "sha512-n2oN+UqQpr0kGFE6JSkQpVyrVFJCSHqhlKMTo4dzuUMgLovmAZkz+qxgNw+8MCkIcdlZURs6arsNVZt9KeZCVg==",
"dev": true,
"requires": {
"debug": "^4.0.0",
"tslib": "^1.9.0"
},
"dependencies": {
"debug": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"dev": true,
"requires": {
"ms": "^2.1.1"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
}
}
},
"@ionic/utils-subprocess": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/@ionic/utils-subprocess/-/utils-subprocess-2.1.1.tgz",
"integrity": "sha512-DK/KlRslM5t5ZC7SwOmfqFg53XZklWR79YfpNvKoGjBczJFA83y4QMXqtbi2lVZc9g4ojkYOd0EycmzNSq6Q4A==",
"dev": true,
"requires": {
"@ionic/utils-array": "2.1.1",
"@ionic/utils-fs": "3.1.1",
"@ionic/utils-process": "2.1.1",
"@ionic/utils-stream": "3.1.1",
"@ionic/utils-terminal": "2.1.1",
"cross-spawn": "^7.0.0",
"debug": "^4.0.0",
"tslib": "^1.9.0"
},
"dependencies": {
"cross-spawn": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz",
"integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==",
"dev": true,
"requires": {
"path-key": "^3.1.0",
"shebang-command": "^2.0.0",
"which": "^2.0.1"
}
},
"debug": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"dev": true,
"requires": {
"ms": "^2.1.1"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
"path-key": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
"dev": true
},
"shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
"dev": true,
"requires": {
"shebang-regex": "^3.0.0"
}
},
"shebang-regex": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
"dev": true
},
"which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
"dev": true,
"requires": {
"isexe": "^2.0.0"
}
}
}
},
"@ionic/utils-terminal": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/@ionic/utils-terminal/-/utils-terminal-2.1.1.tgz",
"integrity": "sha512-/7fTr5x3MFL/nm8oV73glyFZ4f4qzHUvV3G/pz/JVoTPokXsDATPkrR3MPbwy2UgCs9awYgaoJ5jBX3IDvQ7bQ==",
"dev": true,
"requires": {
"debug": "^4.0.0",
"tslib": "^1.9.0"
},
"dependencies": {
"debug": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"dev": true,
"requires": {
"ms": "^2.1.1"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
}
}
},
"@ng-bootstrap/ng-bootstrap": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-4.2.2.tgz",
@ -1477,6 +1946,12 @@
"d3-time-format": "^2.1.0"
}
},
"@types/color-name": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
"integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==",
"dev": true
},
"@types/cordova": {
"version": "0.0.34",
"resolved": "https://registry.npmjs.org/@types/cordova/-/cordova-0.0.34.tgz",
@ -2131,6 +2606,12 @@
"integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
"dev": true
},
"astral-regex": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
"integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
"dev": true
},
"async": {
"version": "2.6.3",
"resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
@ -8731,6 +9212,125 @@
"integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=",
"dev": true
},
"log-update": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz",
"integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==",
"dev": true,
"requires": {
"ansi-escapes": "^4.3.0",
"cli-cursor": "^3.1.0",
"slice-ansi": "^4.0.0",
"wrap-ansi": "^6.2.0"
},
"dependencies": {
"ansi-escapes": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz",
"integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==",
"dev": true,
"requires": {
"type-fest": "^0.11.0"
}
},
"ansi-regex": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
"integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
"dev": true
},
"ansi-styles": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
"integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
"dev": true,
"requires": {
"@types/color-name": "^1.1.1",
"color-convert": "^2.0.1"
}
},
"cli-cursor": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
"integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
"dev": true,
"requires": {
"restore-cursor": "^3.1.0"
}
},
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
"color-name": "~1.1.4"
}
},
"emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
},
"is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"dev": true
},
"onetime": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz",
"integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==",
"dev": true,
"requires": {
"mimic-fn": "^2.1.0"
}
},
"restore-cursor": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
"integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
"dev": true,
"requires": {
"onetime": "^5.1.0",
"signal-exit": "^3.0.2"
}
},
"string-width": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
"integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
"dev": true,
"requires": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.0"
}
},
"strip-ansi": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
"integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
"dev": true,
"requires": {
"ansi-regex": "^5.0.0"
}
},
"wrap-ansi": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
"integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
"dev": true,
"requires": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
"strip-ansi": "^6.0.0"
}
}
}
},
"log4js": {
"version": "4.5.1",
"resolved": "https://registry.npmjs.org/log4js/-/log4js-4.5.1.tgz",
@ -14793,6 +15393,44 @@
"integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
"dev": true
},
"slice-ansi": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
"integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
"dev": true,
"requires": {
"ansi-styles": "^4.0.0",
"astral-regex": "^2.0.0",
"is-fullwidth-code-point": "^3.0.0"
},
"dependencies": {
"ansi-styles": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
"integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
"dev": true,
"requires": {
"@types/color-name": "^1.1.1",
"color-convert": "^2.0.1"
}
},
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
"color-name": "~1.1.4"
}
},
"is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"dev": true
}
}
},
"sliced": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz",
@ -16097,6 +16735,12 @@
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
"dev": true
},
"type-fest": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz",
"integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==",
"dev": true
},
"type-func": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/type-func/-/type-func-1.0.3.tgz",
@ -16118,6 +16762,15 @@
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
"dev": true
},
"typedarray-to-buffer": {
"version": "3.1.5",
"resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
"integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
"dev": true,
"requires": {
"is-typedarray": "^1.0.0"
}
},
"typescript": {
"version": "3.1.6",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.1.6.tgz",
@ -16229,6 +16882,12 @@
}
}
},
"untildify": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz",
"integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==",
"dev": true
},
"upath": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
@ -16892,6 +17551,18 @@
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
},
"write-file-atomic": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
"integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
"dev": true,
"requires": {
"imurmurhash": "^0.1.4",
"is-typedarray": "^1.0.0",
"signal-exit": "^3.0.2",
"typedarray-to-buffer": "^3.1.5"
}
},
"ws": {
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz",

@ -129,6 +129,7 @@
"@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",

@ -15,7 +15,7 @@
<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)" />
(change)="onFileSelected($event)" (click)="onFileSelectedclick($event)" />
<label end for="file" class="attachLable">
<ion-icon style="font-size: 22px;" name="add"></ion-icon>
</label></div>

@ -386,19 +386,22 @@ async openSubmitModal() {
});
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');
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);

@ -5,8 +5,9 @@
<ion-content padding>
<ion-item class='dynamicField'>
<ion-label position='floating' class="colBold requiredClass">{{ts.trPK('submitAbsence','absenceType')}} </ion-label>
<ion-select (ionChange)="calcDay()" okText="{{ts.trPK('general','ok')}}" cancelText="{{ts.trPK('general','cancel')}}" [(ngModel)]="absenceType" (ionChange)="onTypeAbsenceChange()" required>
<ion-select (ionChange)="calcDay()" okText="{{ts.trPK('general','ok')}}" cancelText="{{ts.trPK('general','cancel')}}" [(ngModel)]="absenceType" (ionChange)="onTypeAbsenceChange()" required>
<!-- let item of AbsenceType; let i=index; -->
<ion-select-option value= "{{item.ABSENCE_ATTENDANCE_TYPE_ID}}" *ngFor="let item of absenceTypeList; let i=index;">{{item.ABSENCE_ATTENDANCE_TYPE_NAME}} </ion-select-option>
</ion-select>

@ -1,9 +1,9 @@
import { Component, OnInit, ElementRef, ChangeDetectorRef } from "@angular/core";
import { Component, OnInit, ElementRef, ChangeDetectorRef, ViewChild } 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 { MenuService } from "src/app/hmg-common/services/menu/menuservice.service";
import { MenuResponse } from "src/app/hmg-common/services/menu/models/menu-response";
import { ModalController } from "@ionic/angular";
import { ModalController ,IonSelectOption ,IonSelect } from "@ionic/angular";
import { SubmitAbsenceService } from "../service/submit.absence.service";
import { AbsenceAttahcmentResponse } from "../models/abs.attach.response";
import { AbsenceListService } from "../service/service.service";
@ -28,6 +28,9 @@ import {ReplacmentResponse} from "../models/replacment-response";
import { AbsenceResponse } from '../models/absence.response';
import { AbsenceReplacementListComponent } from '../absence-replacement-list/absence-replacement-list.component';
import { AbsenceNotificatonBodyResponse } from 'src/app/notification/models/AbsenceNotificationBodyRes';
@Component({
selector: "app-submit-absence",
templateUrl: "./submit-absence.component.html",
@ -76,6 +79,8 @@ export class SubmitAbsenceComponent implements OnInit {
getPassdirfromNotifiPage: boolean = false;
functionName: string = "";
private submitAbsObjList: any = [];
@ViewChild(IonSelect) select: IonSelect;
// private updatedValues:any=[];
constructor(
public submitAbsService: SubmitAbsenceService,
@ -266,12 +271,12 @@ export class SubmitAbsenceComponent implements OnInit {
}
public onTypeAbsenceChange() {
console.log("this.absenceType: "+ this.absenceType);
if (this.absenceType) {
let obj: any = this.absenceTypeList.find(
s => s.ABSENCE_ATTENDANCE_TYPE_ID == this.absenceType
);
console.log("obj : "+ obj);
if (obj) this.absenceTypeName = obj.DESC_FLEX_CONTEXT_CODE;
else this.absenceTypeName = null;
@ -1152,6 +1157,7 @@ export class SubmitAbsenceComponent implements OnInit {
}
if (this.submitAbsObjList[i].SEGMENT_NAME == "DESC_FLEX_CONTEXT_CODE") {
this.absenceTypeName = val;
this.select.selectedText = this.absenceTypeName;
} else if (this.submitAbsObjList[i].SEGMENT_NAME == "START_DATE") {
this.startDate = moment(val).format("YYYY-MM-DD");
} else if (this.submitAbsObjList[i].SEGMENT_NAME == "END_DATE") {
@ -1170,7 +1176,6 @@ export class SubmitAbsenceComponent implements OnInit {
this.absComments = val;
}
}
this.onTypeAbsenceChange();
}
fillAbsStructure() {

@ -129,8 +129,7 @@ export class AppComponent implements OnInit, AfterViewInit {
this.events.subscribe('myTeamFlag', myTeamFlag => {
this.TeamFlag = myTeamFlag;
});
// this.TeamFlag = this.cs.sharedService.getSharedData("myTeamFlag",false);
// console.log("this.TeamFlag>>>>>>>>>"+ this.TeamFlag);
console.log("this.TeamFlag>>>>>>>>>"+ this.TeamFlag);
}
private initializeDirection() {
this.direction = TranslatorService.getCurrentDirection();
@ -156,6 +155,7 @@ export class AppComponent implements OnInit, AfterViewInit {
this.menu.enable(false);
this.logoutFlage = true;
this.events.publish('logoutFlage', this.logoutFlage);
this.cs.setUpdateImage('', false);
this.TeamFlag = 'false';
this.getLastLoginInfo();

@ -62,8 +62,8 @@
<a>{{ts.trPK('login','signup')}}</a>
</div>
<div class="gridDiv" aria-disabled="true">
<button class="gridBtn" ion-button (click)="changeLanguage('1')" [ngClass]="{'active':this.currentLang ==1}">English</button>
<button class="gridBtn arTxt" ion-button (click)="changeLanguage('2')" [ngClass]="{'active':this.currentLang ==2}">عربي</button>
<button class="gridBtn" ion-button (click)="changeLanguage('2')" [ngClass]="{'active':currentLang ==2}">English</button>
<button class="gridBtn arTxt" ion-button (click)="changeLanguage('1')" [ngClass]="{'active':currentLang ==1}">عربي</button>
<!-- <button class="gridBtn" ion-button (click)="changeLanguage()" style="background: #dcdcdc !important;color: #ccc6c6 !important;margin: 1px;width: 49%">English</button>
<button class="gridBtn arTxt" ion-button (click)="changeLanguage()" style="background: #dcdcdc !important;color: #ccc6c6 !important;margin: 1px;width: 49%">عربي</button> -->
</div>

@ -74,7 +74,7 @@ export class LoginComponent implements OnInit, OnDestroy {
public remeberMe: boolean;
private iosLink: string;
private androidLink: string;
public currentLang: any = 1;
public currentLang = 1;
private patientOutSA: boolean;
private loginTokenID: string;
private isMobileFingerPrint: boolean;
@ -95,15 +95,27 @@ export class LoginComponent implements OnInit, OnDestroy {
private checkUserResult: CheckUserAuthenticationResponse;
ngOnInit() {
<<<<<<< HEAD
this.cs.stopLoading();
// tslint:disable-next-line: triple-equals
if (TranslatorService.CURRENT_LANGUAGE == TranslatorService.EN) {
this.language = 'US';
} else {
this.language = 'AR';
}
this.ts.switchLanguage();
=======
this.currentLang = TranslatorService.getCurrentLanguageCode();
console.log(TranslatorService.CURRENT_LANGUAGE)
console.log(TranslatorService.EN)
if (TranslatorService.CURRENT_LANGUAGE == TranslatorService.EN) {
this.language = "US";
this.changeLanguage('2')
} else {
this.language = "AR";
this.changeLanguage('1')
>>>>>>> master-newdesign
}
console.log("current lang: "+this.currentLang)
//this.ts.switchLanguage();
// this.deviceToken= this.cs.sharedService.getSharedData(AuthenticationService.DEVICE_TOKEN, false);
// console.log("get deviceToken login"+ this.deviceToken)
@ -146,8 +158,10 @@ export class LoginComponent implements OnInit, OnDestroy {
}
public changeLanguage(langNumber) {
// tslint:disable-next-line: triple-equals
if (this.currentLang == langNumber) {
console.log("current lang: "+this.currentLang)
console.log("click lang: "+langNumber)
if(this.currentLang == langNumber){
this.currentLang = langNumber;
return;
} else {
this.ts.switchLanguage();
@ -159,6 +173,7 @@ export class LoginComponent implements OnInit, OnDestroy {
}
this.currentLang = TranslatorService.getCurrentLanguageCode();
}
this.currentLang = langNumber;
}
public forgetPasswordPage() {
this.cs.openUserForgot();

@ -15,7 +15,7 @@
<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)" />
(change)="onFileSelected($event)" (click)="onFileSelectedclick($event)" />
<label end for="file" class="attachLable">
<ion-icon style="font-size: 22px;" name="add"></ion-icon>
</label></div>

@ -482,6 +482,12 @@ export class ConfirmAddEitComponent implements OnInit {
});
onFileSelectedclick(event){
event.target.value = '';
}
onFileSelected(input) {
// this.uploader.onWhenAddingFileFailed = function (item: any, filter: any, options: any){

@ -79,14 +79,14 @@
<ion-row style="margin: 0 -5px;">
<ion-col [size]="4">
<div class="attendance-information">
<span>{{ts.trPK('myTeam','checkIn')}}</span>
<span>{{ts.trPK('myTeam','check-in')}}</span>
<h2 *ngIf="attendanceTrackingList.P_SWIPE_IN !== null">{{attendanceTrackingList.P_SWIPE_IN | slice:0:-3}}</h2>
<h2 *ngIf="attendanceTrackingList.P_SWIPE_IN === null">--:--</h2>
</div>
</ion-col>
<ion-col [size]="4">
<div class="attendance-information">
<span>{{ts.trPK('myTeam','checkOut')}}</span>
<span>{{ts.trPK('myTeam','check-out')}}</span>
<h2 *ngIf="attendanceTrackingList.P_SWIPE_OUT !== null">{{attendanceTrackingList.P_SWIPE_OUT | slice:0:-3}}</h2>
<h2 *ngIf="attendanceTrackingList.P_SWIPE_OUT === null">--:--</h2>
</div>
@ -103,8 +103,9 @@
<div class="header">
<div>
<ion-row>
<ion-col [size]="2" style="text-align: left;">
<ion-icon class="activeArrow" ios="ios-arrow-dropleft-circle" md="md-arrow-dropleft-circle" (click)="previousSlide()"></ion-icon>
<ion-icon [ngClass]="direction == 'en'? 'activeArrow':'activeArrow-ar'" ios="ios-arrow-dropleft-circle" md="md-arrow-dropleft-circle" (click)="previousSlide()"></ion-icon>
</ion-col>
<ion-col [size]="8" style="text-align: center;">
<span class="month-year-span">{{month}} {{year}}</span>

@ -232,13 +232,16 @@ ion-title{
.activeArrow-ar{
height: 20px;
width: 20px;
color: #22c6b3;
width: 20px;
color: #22c6b3;
margin-right: 275px;
}
.disabledArrow-ar{
height: 20px;
width: 20px;
color: gray;
/* margin-left: 136px; */
margin-right: -251px;
}
.result-graph {
position: relative;

@ -58,6 +58,7 @@ export class DetailsComponent implements OnInit {
public yearTitle: string;
public activeMonth: any;
public currentMonthName = this.getMonthName(new Date().getMonth() + 1);
public showData = false;
public currentYear = new Date().getFullYear();
public attendanceTrackingList: any = [];
@ -67,7 +68,7 @@ export class DetailsComponent implements OnInit {
year: any;
preMonth: number;
nextMonth: any;
public direction: string;
public options = {
cutoutPercentage: 80,
tooltips: { enabled: false },
@ -82,6 +83,7 @@ export class DetailsComponent implements OnInit {
public searchEmail = '';
public showEmailInput = false;
public showUserNameOrNameInput = true;
constructor(
public timeCardService: TimeCardService,
@ -93,7 +95,9 @@ export class DetailsComponent implements OnInit {
private location: Location,
public authService: AuthenticationService,
public dashboardService: DashboredService,
) { }
) {
this.direction = TranslatorService.getCurrentLanguageName();
}
ngOnInit() {
this.common.startLoading();
@ -131,7 +135,15 @@ export class DetailsComponent implements OnInit {
this.showData = false;
this.nextMonth = new Date().getMonth() + 2;
this.preMonth = new Date().getMonth();
this.calendarConfig(this.getMonthName(new Date().getMonth() + 1) , new Date().getFullYear());
if(this.direction == 'en'){
this.currentMonthName = this.getMonthName(new Date().getMonth() + 1);
}
else{
this.currentMonthName = this.getMonthNameAr(new Date().getMonth() + 1);
}
this.calendarConfig(this.currentMonthName) , (new Date().getFullYear());
}
calendarConfig(month?, year?) {
@ -167,6 +179,7 @@ export class DetailsComponent implements OnInit {
});
}
nextSlide() {
this.common.startLoading();
if (this.currentMonthName !== this.month) {
@ -310,6 +323,35 @@ export class DetailsComponent implements OnInit {
}
}
public getMonthNameAr(value: any): any {
switch (value) {
case 1:
return "يناير";
case 2:
return " فبراير";
case 3:
return "مارس";
case 4:
return "أبريل";
case 5:
return "مايو";
case 6:
return "يونيو";
case 7:
return "يوليو";
case 8:
return "أغسطس";
case 9:
return "سبتمبر";
case 10:
return " اكتوبر";
case 11:
return " نوفمبر";
case 12:
return "ديسمبر";
}
}
intializeMemberDetail(userID?) {
this.empSubordinate = [];

@ -4,6 +4,7 @@
[headerText]="'myTeam, myTeam-header' | translate">
</app-generic-header>
<ion-content>
<div class="contentBg">
<div class="result-graph">

@ -49,7 +49,7 @@
<ion-row *ngIf='selectedFilter === "ITG"' class="filters-row">
<ion-col>
<ion-slides>
<ion-slides [options]="slideOptsTwo">
<ion-slide class='slideCss' *ngFor="let segment of ITGSegment">
<span [ngClass]="segment.style? 'text-span-active': 'text-span'" (click)="setActive(segment.code)">
{{segment.name}}

@ -150,6 +150,10 @@ export class HomeComponent implements OnInit {
slidesPerView: 4.3,
spaceBetween: 10
};
public slideOptsTwo = {
slidesPerView: 1.3,
spaceBetween: 10
};
constructor(
public common: CommonService,
public ts: TranslatorService,
@ -491,14 +495,19 @@ export class HomeComponent implements OnInit {
Count() {
const datas = [];
const names = [];
this.ITGSegment[0] = {
name: 'All',
code: 'All',
data: null,
style: false
};
this.workListService.getITGCount('', '', this.isPostNoLoad)
this.workListService.getITGCount('', '', this.isPostNoLoad)
.subscribe((result: any) => {
if(result.RequestType.length > 0){
this.ITGSegment[0] = {
name: 'All',
code: 'All',
data: null,
style: false
};
this.ITGSegment[0].data = datas;
this.ITGSegment[0].names = names;
this.setActive(this.ITGSegment[0].code);
}
for (let i = 1; i < result.RequestType.length; i++) {
this.ITGSegment[i] = {
name: result.RequestType[i].RequestTypeName,
@ -509,9 +518,7 @@ export class HomeComponent implements OnInit {
datas[i] = result.RequestType[i].RequestDetails;
names[i] = result.RequestType[i].RequestTypeCode;
}
this.ITGSegment[0].data = datas;
this.ITGSegment[0].names = names;
this.setActive(this.ITGSegment[0].code);
});
}

@ -177,8 +177,10 @@
</ion-grid>
<button ion-button *ngIf="!IsReachEnd" class="itemHISBtn" (click)="loadMoreNotificationBody()">Load
More</button>
<button ion-button *ngIf="!IsReachEnd" class="itemHISBtn" (click)="loadMoreNotificationBody()">
{{ 'general, load-more' | translate}}
</button>
</ion-card-content>
@ -493,7 +495,7 @@
<div *ngIf="checkLines(actionHistory.NOTE)">
<div class="containerNote" [ngClass]="actionHistory.visible ? 'show' : '' ">
Note: {{actionHistory.NOTE}} {{actionHistory.NOTE}}
Note: {{actionHistory.NOTE}}
</div>
@ -519,7 +521,8 @@
</ion-list>
</div>
<button ion-button *ngIf="!IsReachEnd" class="itemHISBtn" (click)="loadMoreActionHistory()">Load More</button>
<button ion-button *ngIf="!IsReachEnd" class="itemHISBtn" (click)="loadMoreActionHistory()"> {{ 'general, load-more' | translate}}
</button>
</ion-card-content>
</ion-card>
@ -658,26 +661,27 @@
<ion-tab-bar class="tabBar" slot="bottom">
<ion-tab-button *ngIf="approveDis" (click)="actionButton('APPROVED')">
<img src="../assets/imgs/action-approve.png">
<ion-label>Approve</ion-label>
<ion-label> {{'worklistMain, approve' | translate}}</ion-label>
</ion-tab-button>
<ion-tab-button *ngIf="rejectDis" (click)="actionButton('REJECTED')">
<img src="../assets/imgs/action-reject.png">
<ion-label>Reject</ion-label>
<ion-label> {{'worklistMain, reject' | translate}}</ion-label>
</ion-tab-button>
<ion-tab-button *ngIf="requestDis" (click)="actionButton('REQUEST_INFO')">
<img src="../assets/imgs/action-info.png">
<ion-label>Request</ion-label>
<ion-label> {{'worklistMain, request' | translate}}</ion-label>
</ion-tab-button>
<ion-tab-button (click)="nextNotfification()">
<img src="../assets/imgs/action-skip.png">
<ion-label>Skip</ion-label>
<ion-label> {{'worklistMain, skip' | translate}}</ion-label>
</ion-tab-button>
<ion-tab-button [disabled]="moreDisabled" (click)="openMoreActions()">
<img src="../assets/imgs/action-more.png">
<ion-label>More</ion-label>
<ion-label> {{'worklistMain, more' | translate}}</ion-label>
</ion-tab-button>
</ion-tab-bar>
</ion-tabs>

@ -77,7 +77,7 @@ export class WorklistMainMRComponent implements OnInit {
attachmentRes: any;
PRHeader: any;//change the tpye later
PRLines: any;//change the tpye later
IsReachEnd: boolean = false;
IsReachEnd: boolean = true;
P_PAGE_NUM: number = 1;
P_PAGE_LIMIT: number = 100;
headerTotal: any;
@ -678,7 +678,7 @@ export class WorklistMainMRComponent implements OnInit {
}
getActionHistory(WorkListActionHistoryObj) {
this.IsReachEnd = false;
this.IsReachEnd = true;
this.worklistService.getActionHistory(WorkListActionHistoryObj).
subscribe((result: WorkListActionHistoryResponse) => {
this.handleWorkListActionHistoryResult(result);

@ -333,7 +333,9 @@
</ion-grid>
<!-- -->
<button ion-button *ngIf="!IsReachEnd" class="itemHISBtn" (click)="loadMoreNotificationBody()">Load More</button>
<button ion-button *ngIf="!IsReachEnd" class="itemHISBtn" (click)="loadMoreNotificationBody()">
{{ 'general, load-more' | translate}}
</button>
</ion-card-content>
@ -633,7 +635,9 @@
</div>
</ion-list>
</div>
<button ion-button *ngIf="!IsReachEnd" class="itemHISBtn" (click)="loadMoreActionHistory()">Load More</button>
<button ion-button *ngIf="!IsReachEnd" class="itemHISBtn" (click)="loadMoreActionHistory()">
{{ 'general, load-more' | translate}}
</button>
</ion-card-content>
@ -774,26 +778,26 @@
<ion-tab-bar class="tabBar" slot="bottom">
<ion-tab-button *ngIf="approveDis" (click)="actionButton('APPROVE')">
<img src="../assets/imgs/action-approve.png">
<ion-label>Approve</ion-label>
</ion-tab-button>
<ion-label> {{'worklistMain, approve' | translate}}</ion-label>
</ion-tab-button>
<ion-tab-button *ngIf="rejectDis" (click)="actionButton('REJECT')">
<img src="../assets/imgs/action-reject.png">
<ion-label>Reject</ion-label>
</ion-tab-button>
<ion-label> {{'worklistMain, reject' | translate}}</ion-label>
</ion-tab-button>
<ion-tab-button *ngIf="requestDis" (click)="actionButton('REQUEST_INFO')">
<img src="../assets/imgs/action-info.png">
<ion-label>Request</ion-label>
</ion-tab-button>
<ion-label> {{'worklistMain, request' | translate}}</ion-label>
</ion-tab-button>
<ion-tab-button (click)="nextNotfification()">
<img src="../assets/imgs/action-skip.png">
<ion-label>Skip</ion-label>
<ion-label> {{'worklistMain, skip' | translate}}</ion-label>
</ion-tab-button>
<ion-tab-button [disabled]="moreDisabled" (click)="openMoreActions()">
<img src="../assets/imgs/action-more.png">
<ion-label>More</ion-label>
<ion-label> {{'worklistMain, more' | translate}}</ion-label>
</ion-tab-button>
</ion-tab-bar>
</ion-tabs>

@ -83,7 +83,7 @@ export class WorklistMainPoComponent implements OnInit {
attachmentRes: any;
PRHeader: any;//change the tpye later
PRLines: any;//change the tpye later
IsReachEnd: boolean = false;
IsReachEnd: boolean = true;
P_PAGE_NUM: number = 1;
P_PAGE_LIMIT: number = 100;
headerTotal: any;
@ -714,7 +714,7 @@ export class WorklistMainPoComponent implements OnInit {
}
getActionHistory(WorkListActionHistoryObj) {
this.IsReachEnd = false;
this.IsReachEnd = true;
this.worklistService.getActionHistory(WorkListActionHistoryObj).
subscribe((result: WorkListActionHistoryResponse) => {
this.handleWorkListActionHistoryResult(result);

@ -163,8 +163,10 @@
</ion-grid>
<button *ngIf="!IsReachEnd" ion-button class="itemHISBtn" (click)="loadMoreNotificationBody()">Load
More</button>
<button *ngIf="!IsReachEnd" ion-button class="itemHISBtn" (click)="loadMoreNotificationBody()">
{{ 'general, load-more' | translate}}
</button>
</ion-card-content>
@ -249,16 +251,16 @@
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','price')}} </label>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','price')}} ({{ 'general, sar' | translate}})</label>
<br />
<ion-label class="labelValue" for="">{{Lines.UNIT_PRICE}} </ion-label>
</ion-col>
</ion-row>
<ion-row>
<ion-row class="rowBorder">
<ion-col class="colItems colBorder ">
<label class="colItemReq" for="">{{ts.trPK('payslip','amount')}} </label>
<label class="colItemReq" for="">{{ts.trPK('payslip','amount')}} ({{ 'general, sar' | translate}})</label>
<br />
<ion-label class="labelValue" for="">{{Lines.LINE_AMOUNT}} </ion-label>
@ -267,13 +269,22 @@
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','quantity')}} </label>
<label class="colItemReq" for="">{{ts.trPK('worklistMain','quantity')}} </label>
<br />
<ion-label class="labelValue" for="">{{Lines.QUANTITY}} </ion-label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','ITEM_AMU')}} </label>
<br />
<ion-label class="labelValue" for="">{{Lines.ITEM_AMU}} </ion-label>
</ion-col>
</ion-row>
</div>
</accordin-tab-custom>
</accordin-custom>
@ -359,8 +370,8 @@
</div>
</ion-list>
</div>
<button ion-button *ngIf="!IsReachEnd" class="itemHISBtn" (click)="loadMoreActionHistory()">Load
More</button>
<button ion-button *ngIf="!IsReachEnd" class="itemHISBtn" (click)="loadMoreActionHistory()">
{{ 'general, load-more' | translate}} </button>
</ion-card-content>
@ -489,26 +500,29 @@
<ion-tab-bar class="tabBar" slot="bottom">
<ion-tab-button *ngIf="approveDis" (click)="actionButton('APPROVE')">
<img src="../assets/imgs/action-approve.png">
<ion-label>Approve</ion-label>
<ion-label> {{'worklistMain, approve' | translate}}</ion-label>
</ion-tab-button>
<ion-tab-button *ngIf="rejectDis" (click)="actionButton('REJECT')">
<img src="../assets/imgs/action-reject.png">
<ion-label>Reject</ion-label>
<ion-label> {{'worklistMain, reject' | translate}}</ion-label>
</ion-tab-button>
<ion-tab-button *ngIf="requestDis" (click)="actionButton('REQUEST_INFO')">
<img src="../assets/imgs/action-info.png">
<ion-label>Request</ion-label>
<ion-label> {{'worklistMain, request' | translate}}</ion-label>
</ion-tab-button>
<ion-tab-button (click)="nextNotfification()">
<img src="../assets/imgs/action-skip.png">
<ion-label>Skip</ion-label>
<ion-label> {{'worklistMain, skip' | translate}}</ion-label>
</ion-tab-button>
<ion-tab-button [disabled]="moreDisabled" (click)="openMoreActions()">
<img src="../assets/imgs/action-more.png">
<ion-label>More</ion-label>
<ion-label> {{'worklistMain, more' | translate}}</ion-label>
</ion-tab-button>
</ion-tab-bar>
</ion-tabs>

@ -75,7 +75,7 @@ export class WorklistMainPRComponent implements OnInit {
attachmentRes: any;
PRHeader: any;//change the tpye later
PRLines: any;//change the tpye later
IsReachEnd: boolean = false;
IsReachEnd: boolean = true;
P_PAGE_NUM: number = 1;
P_PAGE_LIMIT: number = 100;
headerTotal: any;
@ -712,7 +712,7 @@ export class WorklistMainPRComponent implements OnInit {
}
getActionHistory(WorkListActionHistoryObj) {
this.IsReachEnd = false;
this.IsReachEnd = true;
this.worklistService.getActionHistory(WorkListActionHistoryObj).
subscribe((result: WorkListActionHistoryResponse) => {
this.handleWorkListActionHistoryResult(result);

@ -368,8 +368,8 @@
</div>
</div>
<ion-label
[ngClass]="{'bg-blue-txt' : actionHistory.ACTION === 'Submite' || actionHistory.ACTION === 'Submit' ,'bg-orange-txt' : actionHistory.ACTION === 'Pending' ,'bg-red-txt' : actionHistory.ACTION === 'Reject','bg-green-txt' : actionHistory.ACTION != 'Pending' && actionHistory.ACTION != 'Reject' && actionHistory.ACTION != 'Submitted' && actionHistory.ACTION != 'Submit'}"
class=""> {{actionHistory.ACTION}}</ion-label>
[ngClass]="{'bg-blue-txt' : actionHistory.ACTION === 'Submite' || actionHistory.ACTION === 'Submit' ,'bg-orange-txt' : actionHistory.ACTION === 'Pending' ,'bg-red-txt' : actionHistory.ACTION === 'Reject','bg-green-txt' : actionHistory.ACTION != 'Pending' && actionHistory.ACTION != 'Reject' && actionHistory.ACTION != 'Submitted' && actionHistory.ACTION != 'Submit'}"
class=""> {{actionHistory.ACTION}}</ion-label>
<ion-label *ngIf="actionHistory.NOTIFICATION_DATE != ''" class="dateActionHistory">
@ -381,8 +381,9 @@
</ion-list>
</div>
<button ion-button *ngIf="!IsReachEnd" class="itemHISBtn" (click)="loadMoreActionHistory()">Load
More</button>
<button ion-button *ngIf="!IsReachEnd" class="itemHISBtn" (click)="loadMoreActionHistory()">
{{ 'general, load-more' | translate}}
</button>
</ion-card-content>
</ion-card>
@ -507,27 +508,30 @@
<ion-tab-bar class="tabBar" slot="bottom">
<ion-tab-button *ngIf="approveDis" (click)="actionButton('APPROVED')">
<img src="../assets/imgs/action-approve.png">
<ion-label>Approve</ion-label>
<ion-label> {{'worklistMain, approve' | translate}}</ion-label>
</ion-tab-button>
<ion-tab-button *ngIf="rejectDis" (click)="actionButton('REJECTED')">
<img src="../assets/imgs/action-reject.png">
<ion-label>Reject</ion-label>
<ion-label> {{'worklistMain, reject' | translate}}</ion-label>
</ion-tab-button>
<ion-tab-button *ngIf="requestDis" (click)="actionButton('REQUEST_INFO')">
<img src="../assets/imgs/action-info.png">
<ion-label>Request</ion-label>
<ion-label> {{'worklistMain, request' | translate}}</ion-label>
</ion-tab-button>
<ion-tab-button (click)="nextNotfification()">
<img src="../assets/imgs/action-skip.png">
<ion-label>Skip</ion-label>
<ion-label> {{'worklistMain, skip' | translate}}</ion-label>
</ion-tab-button>
<ion-tab-button [disabled]="moreDisabled" (click)="openMoreActions()">
<img src="../assets/imgs/action-more.png">
<ion-label>More</ion-label>
<ion-label> {{'worklistMain, more' | translate}}</ion-label>
</ion-tab-button>
</ion-tab-bar>
</ion-tabs>

@ -81,7 +81,7 @@ export class WorklistMainComponent implements OnInit {
lines_note_limit: any = 24;
attachmentRes: any;
private WorkListActionHistoryObj: WorkListActionHistoryRequest;
IsReachEnd: boolean = false;
IsReachEnd: boolean = true;
notiActionBtnMore: any = [];
messageSuccess: boolean = false;
confirmMsg: string;
@ -719,7 +719,7 @@ export class WorklistMainComponent implements OnInit {
}
getActionHistory(WorkListActionHistoryObj) {
this.IsReachEnd = false;
this.IsReachEnd = true;
this.worklistService.getActionHistory(WorkListActionHistoryObj).
subscribe((result: WorkListActionHistoryResponse) => {
this.handleWorkListActionHistoryResult(result);
@ -979,9 +979,10 @@ export class WorklistMainComponent implements OnInit {
loadMoreActionHistory() {
console.log("doInfinite action history MR");
if (!this.IsReachEnd) {
console.log("doInfinite action history MR");
this.worklistService.getActionHistory(this.WorkListActionHistoryObj).
subscribe((result: any) => {
if (this.common.validResponse(result)) {
@ -1009,6 +1010,8 @@ export class WorklistMainComponent implements OnInit {
});
} else {
console.log("no doInfinite action history MR");
//if (infiniteScroll)
//infiniteScroll.target.complete();
}

@ -21,15 +21,30 @@
<div class="">
<div class="header">
<div >
<!-- <p style="position: absolute; left: 40%; bottom: 65%;">{{currentMonth}}</p> -->
<div>
<ion-row *ngIf="direction == 'ltr'">
<div class="header">
<!-- <ion-row *ngIf="direction == 'ltr'">-->
<ion-row >
<ion-col>
<button ion-button icon-start class="slidBtn" (click)="slidePrev(sliderOne,slideWithNav)">
<ion-icon [ngClass]=" payslipIndex === GetPayslipList.length-1 ? 'disabledArrow' : 'activeArrow'" ios="ios-arrow-dropleft-circle" md="md-arrow-dropleft-circle">
</ion-icon>
<!-- <ion-icon [ngClass]=" payslipIndex === GetPayslipList.length-1 ? 'disabledArrow' : 'activeArrow'" ios="ios-arrow-dropleft-circle" md="md-arrow-dropleft-circle">
</ion-icon> -->
<ion-icon
[ngClass]=" {'disabledArrow-ar' : payslipIndex === GetPayslipList.length-1 && direction != 'en',
'disabledArrow' : payslipIndex === GetPayslipList.length-1 && direction === 'en' ,
'activeArrow-ar' : payslipIndex != GetPayslipList.length-1 && direction != 'en' ,
'activeArrow' : payslipIndex != GetPayslipList.length-1 && direction === 'en' }"
ios="ios-arrow-dropleft-circle" md="md-arrow-dropleft-circle">
</ion-icon>
<!-- <ion-icon [ngClass]="{'disabledArrow-ar' : direction != 'en' ,'disabledArrow' : direction == 'en'}" class="activeArrow" ios="ios-arrow-dropleft-circle" md="md-arrow-dropleft-circle">
</ion-icon> -->
</button>
</ion-col>
<ion-col>
@ -37,13 +52,26 @@
</ion-col>
<ion-col>
<button ion-button icon-end class="slidbtn" (click)="slideNext(sliderOne,slideWithNav)">
<ion-icon [ngClass]=" payslipIndex === 0 ? 'disabledArrow' : 'activeArrow'" ios="ios-arrow-dropright-circle" md="md-arrow-dropright-circle">
</ion-icon>
<ion-icon
[ngClass]=" {
'activeArrow-ar' : payslipIndex != 0 && direction != 'en' ,
'activeArrow' : payslipIndex != 0 && direction === 'en' ,
'disabledArrow-ar' : payslipIndex == 0 && direction != 'en',
'disabledArrow' : payslipIndex == 0 && direction === 'en'
}"
ios="ios-arrow-dropright-circle" md="md-arrow-dropright-circle">
</ion-icon>
<!-- <ion-icon [ngClass]="{'disabledArrow' : payslipIndex === 0 , 'activeArrow' : payslipIndex != 0 , 'disabledArrow-ar' : direction != 'en' ,'disabledArrow' : direction == 'en'}" ios="ios-arrow-dropright-circle" md="md-arrow-dropright-circle">
</ion-icon> -->
</button>
</ion-col>
</ion-row>
<ion-row *ngIf="direction == 'rtl'">
<!-- <ion-row *ngIf="direction == 'rtl'">
<ion-col>
<button ion-button icon-start class="slidBtn" (click)="slidePrev(sliderOne,slideWithNav)">
<ion-icon [ngClass]=" payslipIndex === GetPayslipList.length-1 ? 'disabledArrow-ar' : 'activeArrow-ar'" ios="ios-arrow-dropright-circle" md="md-arrow-dropright-circle">
@ -59,7 +87,7 @@
</ion-icon>
</button>
</ion-col>
</ion-row>
</ion-row> -->
</div>
@ -87,18 +115,15 @@
</div> -->
<div [ngClass]="direction == 'en'? 'result-text-container':'result-text-container-ar'">
<h2>{{GetSummaryOfPaymentList.TOTAL_PAY_AMOUNT}}</h2>
<!-- <span>TOTAL <br> OPEN REQUEST</span> -->
<span>{{ts.trPK('payslip','total')}} <br> {{ts.trPK('payslip','salary')}}</span>
</div>
<p-chart #chart class="today-graph" type="doughnut" [data]="data" [options]="options"></p-chart>
</div>
<div [ngClass]=" direction == 'ltr' ? 'div-green-ar' : 'div-green'">
<div [ngClass]=" direction == 'en' ? 'div-green':'div-green-ar'">
<ion-col>
<ion-row>
<label class="green-label">{{ts.trPK('payslip','earnings-key')}}</label>
@ -108,7 +133,7 @@
</ion-row>
</ion-col>
</div>
<div [ngClass]=" direction == 'ltr' ? 'div-blue-ar' : 'div-blue'">
<div [ngClass]=" direction == 'en' ? 'div-blue' : 'div-blue-ar'">
<ion-col>
<ion-row>
<label class="blue-label">{{ts.trPK('payslip','deductions-key')}}</label>
@ -155,9 +180,7 @@
</ion-col>
<ion-col class="colPayslips">
<label class="label" for="">{{GetSummaryOfPaymentList.TOTAL_DEDUCTIONS_AMOUNT}}</label>
</ion-col>
</ion-col>
</ion-row>

@ -28,6 +28,7 @@
font-size: 15px !important;
text-align: center;
margin-bottom: 1px;
margin-left: 8px;
}
.label-bold{
font-size: 13px !important;
@ -124,8 +125,12 @@
color: white;
background: transparent !important;
--background: transparent !important;
margin-right: 25px;
-webkit-transform: scaleX(-1);
-moz-transform: scaleX(-1);
-o-transform: scaleX(-1);
transform: scaleX(-1);
margin-right: 38px;
margin-left: -45px;
}
.slidbtn{
background: transparent;
@ -147,7 +152,12 @@
background: transparent !important;
--background: transparent !important;
margin-right: 3px;
margin-left: -124px;
// margin-left: -124px;
margin-left: -105px;
-webkit-transform: scaleX(-1);
-moz-transform: scaleX(-1);
-o-transform: scaleX(-1);
transform: scaleX(-1);
}
.result-graph{
@ -326,34 +336,54 @@
padding-right: 5px;
}
.div-green{
// left: 77%;
// width: 20%; height: 6px;
position: relative;
left: 77%;
left: 83%;
bottom: 117px;
color: black;
background-color: #22c6b3;
width: 20%; height: 6px;
width: 16%;
height: 6px;
}
.div-green-ar{
position: relative;
// position: relative;
// left: 77%;
// bottom: 117px;
// color: black;
// background-color: #22c6b3;
// width: 20%; height: 6px;
position: relative;
left: 4%;
bottom: 117px;
color: black;
background-color: #22c6b3;
width: 20%; height: 6px;
width: 15%;
height: 6px;
}
.div-blue{
// left: 77%;
// width: 20%; height: 6px;
position: relative;
left: 77%;
bottom: 67px;
color: black;
background-color: #094875;
width: 20%; height: 6px;
left: 83%;
bottom: 67px;
color: black;
background-color: #094875;
width: 16%;
height: 6px;
}
.div-blue-ar{
position: relative;
//position: relative;
// left: 77%;
// bottom: 67px;
// color: black;
// background-color: #094875;
// width: 20%; height: 6px;
position: relative;
left: 4%;
bottom: 67px;
color: black;
background-color: #094875;
width: 20%; height: 6px;
width: 15%;
height: 6px;
}

@ -30,15 +30,15 @@
<ion-grid *ngIf="personalInfo">
<div class="gridService">
<ion-row>
<ion-col class="columns">
<ion-col [ngClass]=" direction == 'ltr' ? 'columns' : 'columns-ar'">
<label [ngClass]=" direction == 'ltr' ? 'service' : 'service-ar'">{{personalInfo.SERVICE_YEARS}}</label>
<br> <label [ngClass]=" direction == 'ltr' ? 'services' : 'services-ar'">{{ts.trPK('userProfile','years')}}</label>
</ion-col>
<ion-col class="columns">
<ion-col [ngClass]=" direction == 'ltr' ? 'columns' : 'columns-ar'">
<label [ngClass]=" direction == 'ltr' ? 'service' : 'service-ar'">{{personalInfo.SERVICE_MONTHS}}</label>
<br> <label [ngClass]=" direction == 'ltr' ? 'services' : 'services-ar'">{{ts.trPK('userProfile','months')}}</label>
</ion-col>
<ion-col class="columns">
<ion-col [ngClass]=" direction == 'ltr' ? 'columns' : 'columns-ar'">
<label [ngClass]=" direction == 'ltr' ? 'service' : 'service-ar'">{{personalInfo.SERVICE_DAYS}}</label>
<br> <label [ngClass]=" direction == 'ltr' ? 'services' : 'services-ar'">{{ts.trPK('absenceList','days')}}</label>
</ion-col>

@ -95,7 +95,15 @@
padding-top: 19px;
padding-bottom: 26px;
}
.columns-ar{
margin: 10px;
background: #094875;
border-radius: 27px;
padding-left: 7px;
padding-right: 3px;
padding-top: 19px;
padding-bottom: 26px;
}
.service{
font-size: 28px;

@ -1,4 +1,4 @@
import { UiElement } from "./ui-element";
import { UiElement } from './ui-element';
// import { TranslatorService } from '../hmg-common/services/translator/translator.service';
export class TimeInput extends UiElement {
@ -18,39 +18,48 @@ export class TimeInput extends UiElement {
}
formatDate() {
let date = new Date();
const date = new Date();
this.value = date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds();
}
public getTemplate() {
let requiredClass: string = "";
let disaledClass = "";
if (this.required == 'Y')
requiredClass = "requiredClass"
if (this.disabled == "N") { this.disabled = "disabled"; disaledClass = "disabled" } else { this.disabled = ""; disaledClass = "" }
if (this.hidden == "N") { this.hidden = "display:none;" } else { this.hidden = "" }
if (this.value == "currentTime") {
let requiredClass = '';
let disaledClass = '';
// tslint:disable-next-line: triple-equals
if (this.required == 'Y') {
requiredClass = 'requiredClass';
}
// tslint:disable-next-line: max-line-length
if (this.disabled === 'N') { this.disabled = 'disabled'; disaledClass = 'disabled'; } else { this.disabled = ''; disaledClass = ''; }
if (this.hidden === 'N') { this.hidden = 'display:none;'; } else { this.hidden = ''; }
if (this.value === 'currentTime') {
this.formatDate();
}
const template =
"<div class='custom-text-area-element' style='"+this.hidden+"'>" +
" <label class='daynamicForm-Label "+requiredClass+"' id='title' >" + this.label + "</label>" +
// " <input class='daynamicForm-DateTime' type='time' id='" + this.elementId + "' value='" + this.value + "' "+this.disabled+" />"+
" <div class='daynamicForm-DateTime "+disaledClass+"' id='" + this.elementId + "' data-dtvalue='" + this.value + "' "+this.disabled+">"+this.value+"</div>"+
"</div> ";
// "<ion-item>" +
// " <ion-label style='font-size: medium !important;' id='title' >" + this.label + "</ion-label>" +
// // " <div class='daynamicForm-DateTime " + disaledClass + "' id='" + this.elementId + "' data-dtvalue='" + this.value + "' " + this.disabled + ">" + this.value + "</div>" +
// "<ion-datetime displayFormat='hh:mm' value='" + this.value + "' id='" + this.elementId + "' " + this.disabled + "></ion-datetime>" +
// // " <input class='daynamicForm-DateTime' type='text' id='" + this.elementId + "' value='" + this.value + "' "+this.disabled+" (click)='showDateTimePicker()'/>"+
// // " <input class='daynamicForm-DateTime' type='date' id='" + this.elementId + "' value='" + dateValue+ "' "+this.disabled+" />"+
// // " <input class='daynamicForm-DateTime' type='time' id='" + this.elementId + "Time' value='" + timeValue + "' "+this.disabled+" />"+
// "</ion-item>"
'<div class=\'custom-text-area-element\' style=\'' + this.hidden + '\'>' +
' <label class=\'daynamicForm-Label ' + requiredClass + '\' id=\'title\' >' + this.label + '</label>' +
// tslint:disable-next-line: max-line-length
// " <input class='daynamicForm-DateTime' type='time' id='" + this.elementId + "' value='" + this.value + "' "+this.disabled+" />"+
// tslint:disable-next-line: max-line-length
' <div class=\'daynamicForm-DateTime ' + disaledClass + '\' id=\'' + this.elementId + '\' data-dtvalue=\'' + this.value + '\' ' + this.disabled + '>' + this.value + '</div>' +
'</div>';
// "<ion-item>" +
// " <ion-label style='font-size: medium !important;' id='title' >" + this.label + "</ion-label>" +
// tslint:disable-next-line: max-line-length
// // " <div class='daynamicForm-DateTime " + disaledClass + "' id='" + this.elementId + "' data-dtvalue='" + this.value + "' " + this.disabled + ">" + this.value + "</div>" +
// tslint:disable-next-line: max-line-length
// "<ion-datetime displayFormat='hh:mm' value='" + this.value + "' id='" + this.elementId + "' " + this.disabled + "></ion-datetime>" +
// tslint:disable-next-line: max-line-length
// // " <input class='daynamicForm-DateTime' type='text' id='" + this.elementId + "' value='" + this.value + "' "+this.disabled+" (click)='showDateTimePicker()'/>"+
// // " <input class='daynamicForm-DateTime' type='date' id='" + this.elementId + "' value='" + dateValue+ "' "+this.disabled+" />"+
// tslint:disable-next-line: max-line-length
// // " <input class='daynamicForm-DateTime' type='time' id='" + this.elementId + "Time' value='" + timeValue + "' "+this.disabled+" />"+
// "</ion-item>"
return template;
}
}
}

@ -81,8 +81,9 @@
<p [ngClass]="item.RULE_STATUS === 'Inactive' ? 'red-status' : 'green-status' ">{{item.RULE_STATUS}}</p><br/>
<p class="textBold" > {{item.RULE_NAME}} | {{item.ITEM_TYPE_DISPLAY_NAME}}</p><br/>
<p class="label">{{item.BEGIN_DATE | dateString }} - {{item.END_DATE | dateString}}</p><br/>
<p class="createdOn">Created on:</p><br/>
<p class="label">{{item.BEGIN_DATE | dateString }} - {{item.END_DATE | dateString}}</p>
<!-- <br/>
<p class="createdOn">Created on:</p><br/> -->
</ion-label>

@ -120,7 +120,7 @@ ion-card-header {
}
.label{
margin-top: -19px;
border-bottom: #eaeaea solid;
// border-bottom: #eaeaea solid;
padding-bottom: 8px;
color: black !important;
}

@ -24,12 +24,12 @@
</ion-item>
<ion-item lines="none">
<ion-button [ngClass]="direction == 'en'? 'filterBtn':'filterBtn-ar'" button-type="clear" button-type="clear" (click)="SearchReplacementList()">
<ion-icon slot="icon-only" color="white" name="search"></ion-icon>
</ion-button>
<ion-input [ngClass]="direction == 'en'? 'filterInput':'filterInput-ar'" [(ngModel)]="searchKey" placeholder="{{'vacation-rule, search-employee' | translate}}"></ion-input>
</ion-item>
<ion-button [ngClass]="(!searchKeyEnter || !isSelect) ? 'disabledButton' : '' " [disabled]="(!searchKeyEnter || !isSelect) " class="filterBtn" button-type="clear" button-type="clear" (click)="SearchReplacementList()">
<ion-icon slot="icon-only" color="white" name="search"></ion-icon>
</ion-button>
<ion-input (ionChange)="onChangeInput()" class="filterInput" [(ngModel)]="searchKey" placeholder="{{'vacation-rule, search-employee' | translate}}"></ion-input>
</ion-item>

@ -33,7 +33,7 @@
<ion-item class="selectItem">
<ion-label>{{'vacation-rule, itemType' | translate}}</ion-label>
<ion-select okText='{{"general, ok" | translate }}' cancelText='{{"general, cancel" | translate }}'
<ion-select mode="ios" okText='{{"general, ok" | translate }}' cancelText='{{"general, cancel" | translate }}'
[(ngModel)]="index" (ionChange)="vacationRuleSel($event)" required>
<ion-select-option [selected]="x.ITEM_TYPE_DISPLAY_NAME" value="{{i}}"
*ngFor="let x of ruleTypeList; let i=index;">
@ -73,9 +73,9 @@
<ion-row>
<ion-item class="selectItem" *ngIf="notifTypeSelP2=='sel_opt'" >
<ion-item class="selectItem " *ngIf="notifTypeSelP2=='sel_opt'" >
<ion-label>{{'vacation-rule, notification' | translate}}</ion-label>
<ion-select okText='{{"general, ok" | translate }}' cancelText='{{"general, cancel" | translate }}'
<ion-select mode="ios" class="notifiSelect" okText='{{"general, ok" | translate }}' cancelText='{{"general, cancel" | translate }}'
[(ngModel)]="var_notification" (ionChange)="notificationSel($event)" >
<ion-select-option value="{{i}}" *ngFor="let x of notification_list; let i=index">
{{x.NOTIFICATION_DISPLAY_NAME}}

@ -299,7 +299,8 @@ export class VacationTypeComponent implements OnInit {
else{
alert("please select vaction rule");
let msg = this.ts.trPK('vacation-rule', 'fill-vacation-type');
this.cs.presentAlert(msg);
}
}////////////////////////////////
@ -617,16 +618,20 @@ ApplyFunc() {
}
});
let msg: string = "";
if (this.notifTypeSel == undefined) {
if (this.notifTypeSel == undefined ) {
msg = this.ts.trPK('vacation-rule', 'fillAction');
this.cs.presentAlert(msg);
} else if (this.msgVal == undefined) {
} else if (this.msgVal == undefined ) {
msg = this.ts.trPK('vacation-rule', 'fillMsg');
this.cs.presentAlert(msg);
} else if (this.Sdate == undefined) {
} else if (this.Sdate == undefined || this.Sdate == '') {
msg = this.ts.trPK('vacation-rule', 'fillSDate');
this.cs.presentAlert(msg);
}else if (this.Edate == undefined || this.Edate =='') {
msg = this.ts.trPK('vacation-rule', 'fillEDate');
this.cs.presentAlert(msg);
}
// else if (this.selEmployeeID == undefined) {
// msg = this.ts.trPK('vacation-rule', 'fillReplacement');
// this.cs.presentAlert(msg);
@ -730,13 +735,23 @@ updateVacationRule() {
}
});
let msg: string = "";
if (this.notifTypeSel == undefined) {
if (this.notifTypeSel == undefined ) {
msg = this.ts.trPK('vacation-rule', 'fillAction');
this.cs.presentAlert(msg);
} else if (this.msgVal == undefined) {
msg = this.ts.trPK('vacation-rule', 'fillMsg');
} else if (this.Sdate == undefined) {
this.cs.presentAlert(msg);
} else if (this.Sdate == undefined || this.Sdate == '') {
msg = this.ts.trPK('vacation-rule', 'fillSDate');
} else {
this.cs.presentAlert(msg);
}else if (this.Edate == undefined || this.Edate =='') {
msg = this.ts.trPK('vacation-rule', 'fillEDate');
this.cs.presentAlert(msg);
}
else {
var responseAttrDic = this.exampleJsonObject;
this.P_RESPOND_ATTRIBUTES_TBL = [];
for (let key in responseAttrDic) {

@ -202,6 +202,15 @@
"en": "Birth Date",
"ar": "تاريخ الميلاد"
},
"sar": {
"en": "SAR",
"ar": "ريال"
},
"load-more": {
"en": "Load More",
"ar": "إظهار المزيد"
},
"timeout": {
"en": " The connection timeout expired due to an error in the network or servers may be busy!",
"ar": " انتهت مهلة الاتصال بسبب خطأ في الشبكة أو الخوادم قد تكون مشغولة!"
@ -899,7 +908,7 @@
},
"leave-balance":{
"en":"Leave Balance",
"ar":"رصيد الاجزات"
"ar":"رصيد الإجازات"
},
"":{
"en":"",
@ -1275,6 +1284,10 @@
"en": "Please fill start date",
"ar": "يرجى ملء تاريخ البدء"
},
"fillEDate": {
"en": "Please fill End date",
"ar": "يرجى ملء تاريخ النهاية"
},
"fillAction": {
"en": "Please fill action field",
"ar": "يرجى ملء حقل العمل"
@ -1283,6 +1296,11 @@
"en": "Please select a replacement ",
"ar": "يرجى إختيار بديل"
},
"fill-vacation-type": {
"en": "Please select a Vacation Type",
"ar": "يرجى إختيار نوع العطلة"
},
"deliver": {
"en": "Deliver notifications to me regardless of any general rules",
"ar": "تسليم الإخطارات لي بغض النظر عن أي قواعد عامة"
@ -1475,17 +1493,17 @@
"en": "Today's Attendance",
"ar": "حضور اليوم"
},
"checkIn": {
"check-in":{
"en": "Check-In",
"ar": "CheckIn"
"ar":"وقت الدخول"
},
"checkOut": {
"check-out":{
"en": "Check-Out",
"ar": "CheckOut"
"ar":"وقت الخروج"
},
"late": {
"en": "Late",
"ar": "Late"
"ar": "التأخير"
},
"attendance-statistics": {
"en": "Attendance Statistics",
@ -1832,7 +1850,7 @@
},
"title":{
"en": "Replacement Roll",
"ar":"تفويض موظف"
"ar":"البحث عن موظف"
},
"searchForReplacment":{
"en": "Search for an employee",
@ -1946,6 +1964,24 @@
}
},
"worklistMain": {
"more":{
"en": "More",
"ar":"المزيد"
},
"approve":{
"en": "Approve",
"ar":"موافق"
},
"reject":{
"en": "Reject",
"ar":"رفض"
},
"request":{
"en": "Request",
"ar":"طلب"
},
"title":{
"en": "Details",
"ar":"التفاصيل"
@ -2331,8 +2367,11 @@
"request_number":{
"en": "Request Number",
"ar":"Request Number"
}
},
"ITEM_AMU":{
"en": "AMU (Last 3 months)",
"ar":"AMU (Last 3 months)"
}
},
"payslip": {
"title":{
@ -2425,7 +2464,7 @@
},
"payment-information":{
"en": "Payment Information",
"ar":"معلةمات الدفع "
"ar":"معلومات الدفع "
},
"summary-payment":{
"en": "Summary of Payment",

@ -838,7 +838,7 @@ div.daynamicForm-DateTime.disabled{
box-shadow: none;
}
.imgSize{
width: 22px;
width: 22px !important;
height: 22px;
-webkit-box-shadow:none;
-moz-box-shadow: none;

@ -444,6 +444,9 @@ left: 66px;
border-radius: 3px;
width: 85%;
height: 40px;
display: block;
margin: 0 auto;
margin-top: 10px;
}

Loading…
Cancel
Save