dashboard pie chart
This commit is contained in:
parent
0f96f84e0c
commit
e4f27db995
Binary file not shown.
440
ng-seed/package-lock.json
generated
440
ng-seed/package-lock.json
generated
@ -19,16 +19,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"@ampproject/remapping": {
|
||||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
|
||||
"integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jridgewell/gen-mapping": "^0.3.0",
|
||||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
}
|
||||
},
|
||||
"@angular-devkit/architect": {
|
||||
"version": "0.1102.19",
|
||||
"resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1102.19.tgz",
|
||||
@ -160,6 +150,35 @@
|
||||
"source-map": "^0.5.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/helper-module-transforms": {
|
||||
"version": "7.21.5",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.5.tgz",
|
||||
"integrity": "sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/helper-environment-visitor": "^7.21.5",
|
||||
"@babel/helper-module-imports": "^7.21.4",
|
||||
"@babel/helper-simple-access": "^7.21.5",
|
||||
"@babel/helper-split-export-declaration": "^7.18.6",
|
||||
"@babel/helper-validator-identifier": "^7.19.1",
|
||||
"@babel/template": "^7.20.7",
|
||||
"@babel/traverse": "^7.21.5",
|
||||
"@babel/types": "^7.21.5"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/template": {
|
||||
"version": "7.21.9",
|
||||
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.21.9.tgz",
|
||||
"integrity": "sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/code-frame": "^7.21.4",
|
||||
"@babel/parser": "^7.21.9",
|
||||
"@babel/types": "^7.21.5"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"semver": {
|
||||
"version": "5.7.1",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
|
||||
@ -654,6 +673,18 @@
|
||||
"gensync": "^1.0.0-beta.2",
|
||||
"json5": "^2.2.2",
|
||||
"semver": "^6.3.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@ampproject/remapping": {
|
||||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
|
||||
"integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jridgewell/gen-mapping": "^0.3.0",
|
||||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"semver": {
|
||||
@ -921,19 +952,74 @@
|
||||
}
|
||||
},
|
||||
"@babel/helper-module-transforms": {
|
||||
"version": "7.21.5",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.5.tgz",
|
||||
"integrity": "sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw==",
|
||||
"version": "7.22.1",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.1.tgz",
|
||||
"integrity": "sha512-dxAe9E7ySDGbQdCVOY/4+UcD8M9ZFqZcZhSPsPacvCG4M+9lwtDDQfI2EoaSvmf7W/8yCBkGU0m7Pvt1ru3UZw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/helper-environment-visitor": "^7.21.5",
|
||||
"@babel/helper-environment-visitor": "^7.22.1",
|
||||
"@babel/helper-module-imports": "^7.21.4",
|
||||
"@babel/helper-simple-access": "^7.21.5",
|
||||
"@babel/helper-split-export-declaration": "^7.18.6",
|
||||
"@babel/helper-validator-identifier": "^7.19.1",
|
||||
"@babel/template": "^7.20.7",
|
||||
"@babel/traverse": "^7.21.5",
|
||||
"@babel/types": "^7.21.5"
|
||||
"@babel/template": "^7.21.9",
|
||||
"@babel/traverse": "^7.22.1",
|
||||
"@babel/types": "^7.22.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/generator": {
|
||||
"version": "7.22.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.3.tgz",
|
||||
"integrity": "sha512-C17MW4wlk//ES/CJDL51kPNwl+qiBQyN7b9SKyVp11BLGFeSPoVaHrv+MNt8jwQFhQWowW88z1eeBx3pFz9v8A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/types": "^7.22.3",
|
||||
"@jridgewell/gen-mapping": "^0.3.2",
|
||||
"@jridgewell/trace-mapping": "^0.3.17",
|
||||
"jsesc": "^2.5.1"
|
||||
}
|
||||
},
|
||||
"@babel/helper-environment-visitor": {
|
||||
"version": "7.22.1",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.1.tgz",
|
||||
"integrity": "sha512-Z2tgopurB/kTbidvzeBrc2To3PUP/9i5MUe+fU6QJCQDyPwSH2oRapkLw3KGECDYSjhQZCNxEvNvZlLw8JjGwA==",
|
||||
"dev": true
|
||||
},
|
||||
"@babel/parser": {
|
||||
"version": "7.22.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.4.tgz",
|
||||
"integrity": "sha512-VLLsx06XkEYqBtE5YGPwfSGwfrjnyPP5oiGty3S8pQLFDFLaS8VwWSIxkTXpcvr5zeYLE6+MBNl2npl/YnfofA==",
|
||||
"dev": true
|
||||
},
|
||||
"@babel/traverse": {
|
||||
"version": "7.22.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.4.tgz",
|
||||
"integrity": "sha512-Tn1pDsjIcI+JcLKq1AVlZEr4226gpuAQTsLMorsYg9tuS/kG7nuwwJ4AB8jfQuEgb/COBwR/DqJxmoiYFu5/rQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/code-frame": "^7.21.4",
|
||||
"@babel/generator": "^7.22.3",
|
||||
"@babel/helper-environment-visitor": "^7.22.1",
|
||||
"@babel/helper-function-name": "^7.21.0",
|
||||
"@babel/helper-hoist-variables": "^7.18.6",
|
||||
"@babel/helper-split-export-declaration": "^7.18.6",
|
||||
"@babel/parser": "^7.22.4",
|
||||
"@babel/types": "^7.22.4",
|
||||
"debug": "^4.1.0",
|
||||
"globals": "^11.1.0"
|
||||
}
|
||||
},
|
||||
"@babel/types": {
|
||||
"version": "7.22.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.4.tgz",
|
||||
"integrity": "sha512-Tx9x3UBHTTsMSW85WB2kphxYQVvrZ/t1FxD88IpSgIjiUJlCm9z+xWIDwyo1vffTwSqteqyznB8ZE9vYYk16zA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/helper-string-parser": "^7.21.5",
|
||||
"@babel/helper-validator-identifier": "^7.19.1",
|
||||
"to-fast-properties": "^2.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@babel/helper-optimise-call-expression": {
|
||||
@ -2068,11 +2154,6 @@
|
||||
"yargs": "^17.7.2"
|
||||
}
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "20.2.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.2.3.tgz",
|
||||
"integrity": "sha512-pg9d0yC4rVNWQzX8U7xb4olIOFuuVL9za3bzMT2pu2SU0SNEi66i2qrvhE2qt0HvkhuCaWJu7pLNOt/Pj8BIrw=="
|
||||
},
|
||||
"cliui": {
|
||||
"version": "8.0.1",
|
||||
"resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
|
||||
@ -2116,11 +2197,6 @@
|
||||
"yargs": "^16.2.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@types/node": {
|
||||
"version": "20.2.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.2.3.tgz",
|
||||
"integrity": "sha512-pg9d0yC4rVNWQzX8U7xb4olIOFuuVL9za3bzMT2pu2SU0SNEi66i2qrvhE2qt0HvkhuCaWJu7pLNOt/Pj8BIrw=="
|
||||
},
|
||||
"protobufjs": {
|
||||
"version": "6.11.3",
|
||||
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz",
|
||||
@ -2938,8 +3014,7 @@
|
||||
"@types/node": {
|
||||
"version": "14.18.47",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.47.tgz",
|
||||
"integrity": "sha512-OuJi8bIng4wYHHA3YpKauL58dZrPxro3d0tabPHyiNF8rKfGKuVfr83oFlPLmKri1cX+Z3cJP39GXmnqkP11Gw==",
|
||||
"dev": true
|
||||
"integrity": "sha512-OuJi8bIng4wYHHA3YpKauL58dZrPxro3d0tabPHyiNF8rKfGKuVfr83oFlPLmKri1cX+Z3cJP39GXmnqkP11Gw=="
|
||||
},
|
||||
"@types/nvd3": {
|
||||
"version": "1.8.42",
|
||||
@ -4794,15 +4869,6 @@
|
||||
"integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==",
|
||||
"dev": true
|
||||
},
|
||||
"content-disposition": {
|
||||
"version": "0.5.4",
|
||||
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
|
||||
"integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"safe-buffer": "5.2.1"
|
||||
}
|
||||
},
|
||||
"content-type": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
|
||||
@ -5110,6 +5176,14 @@
|
||||
"nanoid": "^3.3.6",
|
||||
"picocolors": "^1.0.0",
|
||||
"source-map-js": "^1.0.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"source-map-js": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
|
||||
"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"supports-color": {
|
||||
@ -5699,6 +5773,11 @@
|
||||
"integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==",
|
||||
"dev": true
|
||||
},
|
||||
"dayjs": {
|
||||
"version": "1.11.7",
|
||||
"resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz",
|
||||
"integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ=="
|
||||
},
|
||||
"debug": {
|
||||
"version": "4.3.4",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
|
||||
@ -6245,9 +6324,9 @@
|
||||
}
|
||||
},
|
||||
"engine.io-parser": {
|
||||
"version": "5.0.6",
|
||||
"resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.6.tgz",
|
||||
"integrity": "sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw==",
|
||||
"version": "5.0.7",
|
||||
"resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.7.tgz",
|
||||
"integrity": "sha512-P+jDFbvK6lE3n1OL+q9KuzdOFWkkZ/cMV9gol/SbVfpyqfvrfrFTOFJ6fQm2VC3PZHlU3QPhVwmbsCnauHF2MQ==",
|
||||
"dev": true
|
||||
},
|
||||
"enhanced-resolve": {
|
||||
@ -6376,12 +6455,6 @@
|
||||
"integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
|
||||
"dev": true
|
||||
},
|
||||
"etag": {
|
||||
"version": "1.8.1",
|
||||
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
|
||||
"integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
|
||||
"dev": true
|
||||
},
|
||||
"eventemitter3": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz",
|
||||
@ -6723,17 +6796,17 @@
|
||||
}
|
||||
},
|
||||
"finalhandler": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
|
||||
"integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
|
||||
"integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"debug": "2.6.9",
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"on-finished": "2.4.1",
|
||||
"on-finished": "~2.3.0",
|
||||
"parseurl": "~1.3.3",
|
||||
"statuses": "2.0.1",
|
||||
"statuses": "~1.5.0",
|
||||
"unpipe": "~1.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
@ -6751,6 +6824,21 @@
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
|
||||
"dev": true
|
||||
},
|
||||
"on-finished": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
|
||||
"integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ee-first": "1.1.1"
|
||||
}
|
||||
},
|
||||
"statuses": {
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
|
||||
"integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -8707,21 +8795,6 @@
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
},
|
||||
"finalhandler": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
|
||||
"integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"debug": "2.6.9",
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"on-finished": "~2.3.0",
|
||||
"parseurl": "~1.3.3",
|
||||
"statuses": "~1.5.0",
|
||||
"unpipe": "~1.0.0"
|
||||
}
|
||||
},
|
||||
"glob": {
|
||||
"version": "7.2.3",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
|
||||
@ -8748,15 +8821,6 @@
|
||||
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
|
||||
"dev": true
|
||||
},
|
||||
"on-finished": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
|
||||
"integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ee-first": "1.1.1"
|
||||
}
|
||||
},
|
||||
"range-parser": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
|
||||
@ -8769,12 +8833,6 @@
|
||||
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
|
||||
"dev": true
|
||||
},
|
||||
"statuses": {
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
|
||||
"integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
|
||||
"dev": true
|
||||
},
|
||||
"tmp": {
|
||||
"version": "0.2.1",
|
||||
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
|
||||
@ -9350,12 +9408,6 @@
|
||||
"trim-newlines": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"merge-descriptors": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
|
||||
"integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==",
|
||||
"dev": true
|
||||
},
|
||||
"merge-source-map": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz",
|
||||
@ -9843,6 +9895,15 @@
|
||||
"tslib": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"ngx-daterangepicker-material": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/ngx-daterangepicker-material/-/ngx-daterangepicker-material-5.0.1.tgz",
|
||||
"integrity": "sha512-vbxsiRqyBgXExRBPxuCodLlOOsVEZJ20nTPZks/7z943gZcb2XKwRuQ9hi43MG0xl7RVzDKZdsNKU8bzB86g7g==",
|
||||
"requires": {
|
||||
"dayjs": "^1.10.4",
|
||||
"tslib": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"ngx-perfect-scrollbar": {
|
||||
"version": "10.1.0",
|
||||
"resolved": "https://registry.npmjs.org/ngx-perfect-scrollbar/-/ngx-perfect-scrollbar-10.1.0.tgz",
|
||||
@ -11003,12 +11064,6 @@
|
||||
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
|
||||
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
|
||||
},
|
||||
"path-to-regexp": {
|
||||
"version": "0.1.7",
|
||||
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
|
||||
"integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==",
|
||||
"dev": true
|
||||
},
|
||||
"path-type": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
|
||||
@ -11611,11 +11666,6 @@
|
||||
"long": "^5.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@types/node": {
|
||||
"version": "20.2.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.2.3.tgz",
|
||||
"integrity": "sha512-pg9d0yC4rVNWQzX8U7xb4olIOFuuVL9za3bzMT2pu2SU0SNEi66i2qrvhE2qt0HvkhuCaWJu7pLNOt/Pj8BIrw=="
|
||||
},
|
||||
"long": {
|
||||
"version": "5.2.3",
|
||||
"resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz",
|
||||
@ -11928,6 +11978,14 @@
|
||||
"which-module": "^2.0.0",
|
||||
"y18n": "^4.0.0",
|
||||
"yargs-parser": "^18.1.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"which-module": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz",
|
||||
"integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"yargs-parser": {
|
||||
@ -11942,16 +12000,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"proxy-addr": {
|
||||
"version": "2.0.7",
|
||||
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
|
||||
"integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"forwarded": "0.2.0",
|
||||
"ipaddr.js": "1.9.1"
|
||||
}
|
||||
},
|
||||
"prr": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
|
||||
@ -12839,6 +12887,14 @@
|
||||
"which-module": "^2.0.0",
|
||||
"y18n": "^4.0.0",
|
||||
"yargs-parser": "^13.1.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"which-module": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz",
|
||||
"integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"yargs-parser": {
|
||||
@ -13116,82 +13172,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"serve-static": {
|
||||
"version": "1.15.0",
|
||||
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
|
||||
"integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"parseurl": "~1.3.3",
|
||||
"send": "0.18.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
"version": "2.6.9",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
||||
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"ms": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"fresh": {
|
||||
"version": "0.5.2",
|
||||
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
|
||||
"integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
|
||||
"dev": true
|
||||
},
|
||||
"mime": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
|
||||
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
|
||||
"dev": true
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
|
||||
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
|
||||
"dev": true
|
||||
},
|
||||
"range-parser": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
|
||||
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
|
||||
"dev": true
|
||||
},
|
||||
"send": {
|
||||
"version": "0.18.0",
|
||||
"resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
|
||||
"integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"debug": "2.6.9",
|
||||
"depd": "2.0.0",
|
||||
"destroy": "1.2.0",
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"etag": "~1.8.1",
|
||||
"fresh": "0.5.2",
|
||||
"http-errors": "2.0.0",
|
||||
"mime": "1.6.0",
|
||||
"ms": "2.1.3",
|
||||
"on-finished": "2.4.1",
|
||||
"range-parser": "~1.2.1",
|
||||
"statuses": "2.0.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"set-blocking": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
|
||||
@ -13571,12 +13551,6 @@
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
|
||||
"integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ=="
|
||||
},
|
||||
"source-map-js": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
|
||||
"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
|
||||
"dev": true
|
||||
},
|
||||
"source-map-loader": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-1.1.3.tgz",
|
||||
@ -15927,6 +15901,15 @@
|
||||
"vary": "~1.1.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"content-disposition": {
|
||||
"version": "0.5.4",
|
||||
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
|
||||
"integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"safe-buffer": "5.2.1"
|
||||
}
|
||||
},
|
||||
"debug": {
|
||||
"version": "2.6.9",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
||||
@ -15936,11 +15919,66 @@
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
},
|
||||
"etag": {
|
||||
"version": "1.8.1",
|
||||
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
|
||||
"integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
|
||||
"dev": true
|
||||
},
|
||||
"finalhandler": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
|
||||
"integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"debug": "2.6.9",
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"on-finished": "2.4.1",
|
||||
"parseurl": "~1.3.3",
|
||||
"statuses": "2.0.1",
|
||||
"unpipe": "~1.0.0"
|
||||
}
|
||||
},
|
||||
"merge-descriptors": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
|
||||
"integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==",
|
||||
"dev": true
|
||||
},
|
||||
"path-to-regexp": {
|
||||
"version": "0.1.7",
|
||||
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
|
||||
"integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==",
|
||||
"dev": true
|
||||
},
|
||||
"proxy-addr": {
|
||||
"version": "2.0.7",
|
||||
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
|
||||
"integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"forwarded": "0.2.0",
|
||||
"ipaddr.js": "1.9.1"
|
||||
}
|
||||
},
|
||||
"safe-buffer": {
|
||||
"version": "5.2.1",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
|
||||
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
|
||||
"dev": true
|
||||
},
|
||||
"serve-static": {
|
||||
"version": "1.15.0",
|
||||
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
|
||||
"integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"parseurl": "~1.3.3",
|
||||
"send": "0.18.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -16214,6 +16252,12 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"etag": {
|
||||
"version": "1.8.1",
|
||||
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
|
||||
"integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
|
||||
"dev": true
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
|
||||
@ -16337,6 +16381,14 @@
|
||||
"which-module": "^2.0.0",
|
||||
"y18n": "^4.0.0",
|
||||
"yargs-parser": "^13.1.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"which-module": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz",
|
||||
"integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"yargs-parser": {
|
||||
@ -16468,12 +16520,6 @@
|
||||
"isexe": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"which-module": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz",
|
||||
"integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==",
|
||||
"dev": true
|
||||
},
|
||||
"wide-align": {
|
||||
"version": "1.1.5",
|
||||
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
|
||||
|
||||
@ -55,6 +55,7 @@
|
||||
"ng2-file-upload": "^1.4.0",
|
||||
"ngx-bootstrap": "^10.2.0",
|
||||
"ngx-color-picker": "^11.0.0",
|
||||
"ngx-daterangepicker-material": "^5.0.1",
|
||||
"ngx-perfect-scrollbar": "10.1.0",
|
||||
"ngx-scrollbar": "^7.5.6",
|
||||
"ngx-sortablejs": "^3.1.4",
|
||||
|
||||
@ -79,15 +79,18 @@
|
||||
<mat-label>Time</mat-label>
|
||||
<input matInput placeholder="Select Time" name="week" formControlName="appoinmentTime" readonly>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field appearance="outline" class="mat-pane" *ngIf="form.controls.service.value">
|
||||
<mat-label>Fees</mat-label>
|
||||
<input matInput placeholder="Fess" name="week" formControlName="fees" readonly>
|
||||
</mat-form-field>
|
||||
<mat-card class="cardDesign" *ngIf="form.controls.service.value">
|
||||
<div class="innerdivs navStyle" fxLayoutAlign="center center">
|
||||
<button type="button" mat-raised-button (click)="goToSlotBooking2()" style="background-color: #7fffd400;box-shadow: none;color:#fff" ><mat-icon style="cursor: pointer;">keyboard_arrow_left</mat-icon></button><span style="width: 150px;text-align: center;">{{check(days) | date:'longDate'}}</span><button mat-raised-button type="button" (click)="goToSlotBooking()" *ngIf="clicks < advanced_slot_days" style="background-color: #7fffd400;box-shadow: none;color:#fff" ><mat-icon style="cursor: pointer;">keyboard_arrow_right</mat-icon></button>
|
||||
</div>
|
||||
<div class="innerdivs2" >
|
||||
<div *ngIf="slots.length != 0" [ngStyle]="{ 'height.px': slotslength * 12 }">
|
||||
<div *ngIf="slots.length != 0" >
|
||||
<!-- <div *ngIf="slots.length != 0" [ngStyle]="{ 'height.px': slots.length * 12 }"> -->
|
||||
<!-- <ng-scrollbar class="scrollHV2" *ngIf="slots.length != 0"> -->
|
||||
<ng-scrollbar class="scrollHV2">
|
||||
<span *ngFor="let slot1 of slots;let j=index">
|
||||
<!-- <button *ngFor="let slot of slot1;let i=index" mat-raised-button mat-button-sm class="mr-1 mt-1 hoverButton" [ngClass]="{'primary':slotIndex != i && checkSlotDur(slot,i)==1,'clickedSlot':slotIndex == i && checkSlotDur(slot,i)==1 }" (click)="toggleActive($event,slot,i)" ><span *ngIf="checkSlotDur(slot,i)==1">{{slot | date:'shortTime'}}</span></button> -->
|
||||
<a *ngFor="let slot of slot1;let i=index">
|
||||
@ -95,7 +98,7 @@
|
||||
</a>
|
||||
</span>
|
||||
<!-- <button type="button" *ngFor="let slot of slots;let i=index" mat-raised-button mat-button-sm class="mr-1 mt-1 hoverButton" [ngClass]="{'primary':slotIndex != i && checkSlotDur(slot,i)==1,'clickedSlot':slotIndex == i && checkSlotDur(slot,i)==1 }" (click)="toggleActive($event,slot,i)"><span *ngIf="checkSlotDur(slot,i)==1">{{slot | date:'shortTime'}}</span></button> -->
|
||||
<!-- </ng-scrollbar> -->
|
||||
</ng-scrollbar>
|
||||
</div>
|
||||
<div *ngIf="slots.length == 0">
|
||||
<div fxLayout="row" class="flexCard">
|
||||
@ -144,7 +147,7 @@
|
||||
</mat-form-field>
|
||||
|
||||
<div style="margin-top: 5px;margin-bottom: 15px;">
|
||||
<mat-radio-group aria-label="Select an option" formControlName="paymentStatus">
|
||||
<mat-radio-group aria-label="Select an option" formControlName="paymentStatus" required>
|
||||
<mat-radio-button value="1">Paid</mat-radio-button>
|
||||
<mat-radio-button value="0" style="margin-left: 10px;">Not Paid</mat-radio-button>
|
||||
</mat-radio-group>
|
||||
|
||||
@ -113,6 +113,7 @@ export class DialogBoxComponent implements OnInit {
|
||||
selectedRadioValue: any;
|
||||
slotIndex_group:any=[];
|
||||
slotslength:any=[];
|
||||
fees: any = [];
|
||||
constructor(private notifierService: NotifierService,private router: Router,private formBuilder: FormBuilder, public _cus:CustomersService,
|
||||
public dialogRef: MatDialogRef<DialogBoxComponent>,public _api:ConsultantService, public _con:ConsultantService,
|
||||
@Inject(MAT_DIALOG_DATA) public data: UsersData,public _app:AppointmentsService,public end_user:EndUserService) {
|
||||
@ -217,8 +218,8 @@ export class DialogBoxComponent implements OnInit {
|
||||
appoinmentTime: new FormControl('',null),
|
||||
customer: new FormControl('', [Validators.required]),
|
||||
// note: new FormControl('', [Validators.required]),
|
||||
status: new FormControl('', null),
|
||||
|
||||
status: new FormControl('', null),
|
||||
fees: new FormControl('',null),
|
||||
appoinmentSlots: new FormControl(''),
|
||||
});
|
||||
console.log(this.local_data, this.selects)
|
||||
@ -228,13 +229,16 @@ export class DialogBoxComponent implements OnInit {
|
||||
|
||||
|
||||
if(this.local_data.action != 'Add'){
|
||||
|
||||
this.local_data.service = this.local_data['ServicesMapDetail.serviceId']
|
||||
this.ServiceId = this.local_data.service
|
||||
this.local_data.customer = this.local_data.customer[0].id
|
||||
this.customerId = this.local_data.customer
|
||||
this.slotsResult =this.local_data.appoinmentSlots
|
||||
this.local_data.appoinmentTime = new DatePipe('en-US').transform(this.local_data['appoinmentSlots'][0], 'shortTime')
|
||||
console.log(this.servicesList_array)
|
||||
this.local_data.appoinmentTime = new DatePipe('en-US').transform(this.local_data['appoinmentSlots'][0], 'shortTime')
|
||||
console.log(this.servicesList_array)
|
||||
this.local_data.paymentStatus = ""+this.local_data.paymentStatus+""
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -479,7 +483,8 @@ export class DialogBoxComponent implements OnInit {
|
||||
"appoinmentSlots": JSON.stringify(this.slotsResult),
|
||||
//"servicemap" :this.bookedAppointment_servicemap
|
||||
"paymentStatus": this.form.value.paymentStatus,
|
||||
"paymentMode": this.form.value.paymentMode
|
||||
"paymentMode": this.form.value.paymentMode,
|
||||
"fees": this.fees
|
||||
}
|
||||
if(this.local_data.hasOwnProperty('id')){
|
||||
paramsData.id =this.local_data.id
|
||||
@ -708,7 +713,8 @@ console.log(params)
|
||||
});
|
||||
// this.assignService = this.checkedArray
|
||||
}
|
||||
serviceData(data){
|
||||
serviceData(data){
|
||||
console.log(data)
|
||||
this.ServiceId = data.serviceId
|
||||
this.duration = data.duration
|
||||
|
||||
@ -716,10 +722,12 @@ console.log(params)
|
||||
console.log(serviceDetails)
|
||||
if(serviceDetails[0].duration.length>0 ){
|
||||
this.duration = serviceDetails[0].duration[0].durationNew
|
||||
this.fees = serviceDetails[0].duration[0].fees
|
||||
} else{
|
||||
this.duration = this.servicesList_array[0].duration
|
||||
this.fees = this.servicesList_array[0].fees
|
||||
}
|
||||
|
||||
this.form.controls['fees'].setValue(this.fees)
|
||||
this.clicks = 0
|
||||
this.getSlots()
|
||||
this.slotIndex= null
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<!-- <mat-card class="settings-panel" > -->
|
||||
<h5 mat-dialog-title>
|
||||
<strong>{{serviceName}} Service</strong>
|
||||
<strong>{{serviceName}}</strong>
|
||||
<button mat-icon-button type="button" matTooltip="Close" class="button" matTooltipPosition="above" (click)="closeDialog()">
|
||||
<mat-icon>close</mat-icon>
|
||||
</button>
|
||||
@ -16,6 +16,9 @@
|
||||
<mat-form-field appearance="outline" class="mat-pane">
|
||||
<mat-label>Fees</mat-label>
|
||||
<input placeholder="Fees" matInput appMobileNumberPattern formControlName="fees">
|
||||
<div matSuffix>
|
||||
<span><b>{{currencySymbol}}</b></span>
|
||||
</div>
|
||||
<mat-error *ngIf="myError('fees', 'required')">Fees is required</mat-error>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
@ -11,13 +11,15 @@ export class AssignServiceComponent implements OnInit {
|
||||
form: FormGroup;
|
||||
local_data: any;
|
||||
serviceName: any = [];
|
||||
currencySymbol: any;
|
||||
|
||||
constructor(public dialogRef: MatDialogRef<AssignServiceComponent>,@Optional() @Inject(MAT_DIALOG_DATA) public data) {
|
||||
console.log(data)
|
||||
this.serviceName = data.servicesName
|
||||
this.local_data = data
|
||||
this.currencySymbol = localStorage.getItem('currency')
|
||||
if(this.local_data.hasOwnProperty('durationNew')){
|
||||
this.local_data.duration = this.local_data.durationNew
|
||||
this.local_data.duration = this.local_data.durationNew
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -44,12 +44,12 @@
|
||||
<div class="card-block text-center">
|
||||
<div class="row">
|
||||
<div>
|
||||
<h2>{{count.monthly_earning_count}}</h2>
|
||||
<h2>{{count.monthly_earning_count | currency:currency}}</h2>
|
||||
<p class="text-muted">Monthly</p>
|
||||
</div>
|
||||
<hr>
|
||||
<div>
|
||||
<h2>{{count.today_earning_count}}</h2>
|
||||
<h2>{{count.today_earning_count | currency:currency}}</h2>
|
||||
<p class="text-muted">Today</p>
|
||||
</div>
|
||||
</div>
|
||||
@ -163,37 +163,33 @@
|
||||
</mat-card>
|
||||
</div>
|
||||
</div> -->
|
||||
<div fxLayout="row wrap">
|
||||
<div fxFlex.xs="100" fxFlex.sm="100" fxFlex.md="50" fxFlex.lg="50" fxFlex.xl="50" class="m-gap p-gap">
|
||||
<mat-form-field class="mat-pane">
|
||||
<input class="fx-date-range" type="text" matInput
|
||||
ngxDaterangepickerMd
|
||||
[locale]="{applyLabel: 'okay', format: 'MM/DD/YY'}"
|
||||
[drops]="'down'"
|
||||
[opens]="'right'"
|
||||
[ranges]="ranges"
|
||||
[showCustomRangeLabel]="true"
|
||||
[alwaysShowCalendars]="true"
|
||||
[keepCalendarOpeningWithRange]="true"
|
||||
[showCancel]="true"
|
||||
autocomplete="off"
|
||||
[(ngModel)]="selectedDateRange"
|
||||
name="daterange" placeholder="Fliter Chart Date Wise" (change)="dateWiseFilter()"/>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div fxLayout="row wrap">
|
||||
<div fxFlex.xs="100" fxFlex.sm="100" fxFlex.md="50" fxFlex.lg="50" fxFlex.xl="50" class="m-gap p-gap">
|
||||
<mat-card class="pie">
|
||||
<mat-card-title fxLayout="row" fxLayoutAlign="start center">
|
||||
Practitioner
|
||||
<span fxFlex></span>
|
||||
<button mat-icon-button mat-button-sm [mat-menu-trigger-for]="card1" aria-label="Open card menu">
|
||||
<mat-icon class="filter_menu">more_vert</mat-icon>
|
||||
</button>
|
||||
</mat-card-title>
|
||||
<mat-menu #card1="matMenu" x-position="before">
|
||||
<button mat-menu-item>
|
||||
<!-- <mat-icon>settings</mat-icon> -->
|
||||
Monthly
|
||||
</button>
|
||||
<hr>
|
||||
<button mat-menu-item>
|
||||
<!-- <mat-icon>more</mat-icon> -->
|
||||
This Week
|
||||
</button>
|
||||
<hr>
|
||||
<button mat-menu-item>
|
||||
<!-- <mat-icon>notifications_off</mat-icon> -->
|
||||
Today
|
||||
</button>
|
||||
<hr>
|
||||
<button mat-menu-item>
|
||||
<!-- <mat-icon>exit_to_app</mat-icon> -->
|
||||
Last 7 Days
|
||||
</button>
|
||||
</mat-menu>
|
||||
<span fxFlex></span>
|
||||
</mat-card-title>
|
||||
<hr>
|
||||
<mat-card-content>
|
||||
<canvas height="200" baseChart class="chart"
|
||||
@ -210,32 +206,8 @@
|
||||
<mat-card class="pie">
|
||||
<mat-card-title fxLayout="row" fxLayoutAlign="start center">
|
||||
Practitioner wise Revenue
|
||||
<span fxFlex></span>
|
||||
<button mat-icon-button mat-button-sm [mat-menu-trigger-for]="card2" aria-label="Open card menu">
|
||||
<mat-icon class="filter_menu">more_vert</mat-icon>
|
||||
</button>
|
||||
</mat-card-title>
|
||||
<mat-menu #card2="matMenu" x-position="before">
|
||||
<button mat-menu-item>
|
||||
<!-- <mat-icon>settings</mat-icon> -->
|
||||
Monthly
|
||||
</button>
|
||||
<hr>
|
||||
<button mat-menu-item>
|
||||
<!-- <mat-icon>more</mat-icon> -->
|
||||
This Week
|
||||
</button>
|
||||
<hr>
|
||||
<button mat-menu-item>
|
||||
<!-- <mat-icon>notifications_off</mat-icon> -->
|
||||
Today
|
||||
</button>
|
||||
<hr>
|
||||
<button mat-menu-item>
|
||||
<!-- <mat-icon>exit_to_app</mat-icon> -->
|
||||
Last 7 Days
|
||||
</button>
|
||||
</mat-menu>
|
||||
<span fxFlex></span>
|
||||
</mat-card-title>
|
||||
<hr>
|
||||
<mat-card-content>
|
||||
<canvas height="200" baseChart class="chart"
|
||||
@ -253,32 +225,8 @@
|
||||
<mat-card class="pie">
|
||||
<mat-card-title fxLayout="row" fxLayoutAlign="start center">
|
||||
Service Appointment
|
||||
<span fxFlex></span>
|
||||
<button mat-icon-button mat-button-sm [mat-menu-trigger-for]="card3" aria-label="Open card menu">
|
||||
<mat-icon class="filter_menu">more_vert</mat-icon>
|
||||
</button>
|
||||
</mat-card-title>
|
||||
<mat-menu #card3="matMenu" x-position="before">
|
||||
<button mat-menu-item>
|
||||
<!-- <mat-icon>settings</mat-icon> -->
|
||||
Monthly
|
||||
</button>
|
||||
<hr>
|
||||
<button mat-menu-item>
|
||||
<!-- <mat-icon>more</mat-icon> -->
|
||||
This Week
|
||||
</button>
|
||||
<hr>
|
||||
<button mat-menu-item>
|
||||
<!-- <mat-icon>notifications_off</mat-icon> -->
|
||||
Today
|
||||
</button>
|
||||
<hr>
|
||||
<button mat-menu-item>
|
||||
<!-- <mat-icon>exit_to_app</mat-icon> -->
|
||||
Last 7 Days
|
||||
</button>
|
||||
</mat-menu>
|
||||
<span fxFlex></span>
|
||||
</mat-card-title>
|
||||
<hr>
|
||||
<mat-card-content>
|
||||
<canvas height="200" baseChart class="chart"
|
||||
@ -294,32 +242,8 @@
|
||||
<mat-card class="pie">
|
||||
<mat-card-title fxLayout="row" fxLayoutAlign="start center">
|
||||
Service Wise Revenue
|
||||
<span fxFlex></span>
|
||||
<button mat-icon-button mat-button-sm [mat-menu-trigger-for]="card4" aria-label="Open card menu">
|
||||
<mat-icon class="filter_menu">more_vert</mat-icon>
|
||||
</button>
|
||||
</mat-card-title>
|
||||
<mat-menu #card4="matMenu" x-position="before">
|
||||
<button mat-menu-item>
|
||||
<!-- <mat-icon>settings</mat-icon> -->
|
||||
Monthly
|
||||
</button>
|
||||
<hr>
|
||||
<button mat-menu-item>
|
||||
<!-- <mat-icon>more</mat-icon> -->
|
||||
This Week
|
||||
</button>
|
||||
<hr>
|
||||
<button mat-menu-item>
|
||||
<!-- <mat-icon>notifications_off</mat-icon> -->
|
||||
Today
|
||||
</button>
|
||||
<hr>
|
||||
<button mat-menu-item>
|
||||
<!-- <mat-icon>exit_to_app</mat-icon> -->
|
||||
Last 7 Days
|
||||
</button>
|
||||
</mat-menu>
|
||||
<span fxFlex></span>
|
||||
</mat-card-title>
|
||||
<hr>
|
||||
<mat-card-content>
|
||||
<canvas height="200" baseChart class="chart"
|
||||
@ -332,24 +256,43 @@
|
||||
</mat-card>
|
||||
</div>
|
||||
</div>
|
||||
<div fxLayout="row wrap">
|
||||
<div fxFlex.gt-sm="100" fxFlex.gt-xs="100" fxFlex="100" class="m-gap p-gap">
|
||||
<div fxLayout="row wrap" *ngIf="user_role == 'BIZADMIN'">
|
||||
<div fxFlex.gt-sm="100" fxFlex.gt-xs="100" fxFlex="100" class="m-gap p-gap">
|
||||
<mat-card>
|
||||
<mat-card-title fxLayout="row" fxLayoutAlign="start center">
|
||||
Total Sales
|
||||
<span fxFlex></span>
|
||||
<!-- <button mat-icon-button mat-button-sm [mat-menu-trigger-for]="card2" aria-label="Open card menu">
|
||||
<mat-icon>more_vert</mat-icon>
|
||||
</button> -->
|
||||
</mat-card-title>
|
||||
<hr>
|
||||
<mat-card-content>
|
||||
<div class="w-100 h-300px">
|
||||
<ngx-charts-area-chart [scheme]="colorScheme" [results]="multi" [gradient]="gradient" [xAxis]="showXAxis" [yAxis]="showYAxis" [legend]="showLegend" [showXAxisLabel]="showXAxisLabel" [showYAxisLabel]="showYAxisLabel" [xAxisLabel]="xAxisLabel" [yAxisLabel]="yAxisLabel" [autoScale]="autoScale" (select)="onSelect($event)">
|
||||
</ngx-charts-area-chart>
|
||||
</div>
|
||||
</mat-card-content>
|
||||
</mat-card>
|
||||
<mat-card-title fxLayout="row">
|
||||
<div fxFlex.xs="100" fxFlex.sm="100" fxFlex.md="50" fxFlex.lg="50" fxFlex.xl="50" class="p-gap" fxLayoutAlign="start center">
|
||||
Booking Trends
|
||||
</div>
|
||||
<div fxFlex.xs="100" fxFlex.sm="100" fxFlex.md="50" fxFlex.lg="50" fxFlex.xl="50" class="p-gap" fxLayoutAlign="end center">
|
||||
Count of Appointment <mat-slide-toggle class="example-margin"
|
||||
(change)="onToggleChange($event.checked)"></mat-slide-toggle> Revenue
|
||||
</div>
|
||||
|
||||
|
||||
<span fxFlex></span>
|
||||
</mat-card-title>
|
||||
<hr>
|
||||
<mat-card-content *ngIf="countAndRevenue == false">
|
||||
<canvas height="120" baseChart class="chart" [datasets]="ComboChartData" [labels]="comboChartLabels" [options]="ComboChartOptions" [colors]="chartColors" [legend]="comboChartLegend" [chartType]="barChartType"></canvas>
|
||||
</mat-card-content>
|
||||
<mat-card-content *ngIf="countAndRevenue == true">
|
||||
<canvas height="120" baseChart class="chart" [datasets]="ComboChartData2" [labels]="comboChartLabels" [options]="ComboChartOptions" [colors]="chartColors" [legend]="comboChartLegend" [chartType]="chartColors2"></canvas>
|
||||
</mat-card-content>
|
||||
</mat-card>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div fxLayout="row wrap" *ngIf="user_role == 'BIZADMIN'">
|
||||
<div fxFlex.gt-sm="100" fxFlex.gt-xs="100" fxFlex="100" class="m-gap p-gap">
|
||||
<mat-card>
|
||||
<mat-card-title fxLayout="row" fxLayoutAlign="start center">
|
||||
Booking Trends
|
||||
<span fxFlex></span>
|
||||
</mat-card-title>
|
||||
<hr>
|
||||
<mat-card-content>
|
||||
<canvas height="120" baseChart class="chart" [datasets]="ComboChartData2" [labels]="comboChartLabels" [options]="ComboChartOptions" [colors]="chartColors" [legend]="comboChartLegend" [chartType]="barChartType"></canvas>
|
||||
</mat-card-content>
|
||||
</mat-card>
|
||||
</div>
|
||||
</div> -->
|
||||
</ng-scrollbar>
|
||||
@ -565,4 +565,28 @@ mat-icon{
|
||||
.filter_menu{
|
||||
font-size: 20px !important;
|
||||
}
|
||||
}
|
||||
|
||||
.mat-pane{
|
||||
width: 65% !important;
|
||||
}
|
||||
|
||||
::ng-deep .md-drppicker .btn, .md-drppicker .btn:focus, .md-drppicker .btn:hover {
|
||||
background-color: #4caf50 !important;
|
||||
margin-left: 10px !important;
|
||||
}
|
||||
|
||||
::ng-deep .md-drppicker .btn.btn-default{
|
||||
color: #000 !important;
|
||||
background-color: #dcdcdc !important;
|
||||
}
|
||||
|
||||
::ng-deep .md-drppicker td.active{
|
||||
background-color: #1f7f6f !important;
|
||||
}
|
||||
::ng-deep .md-drppicker .ranges ul li button.active {
|
||||
background-color: #1f7f6f !important;
|
||||
}
|
||||
::ng-deep .md-drppicker.double {
|
||||
width: 640px !important;
|
||||
}
|
||||
@ -3,12 +3,17 @@ import { single, multi } from './charts.data';
|
||||
import { DashboardService } from './dashboard.service';
|
||||
import { MatIconRegistry } from '@angular/material/icon';
|
||||
import { DomSanitizer } from '@angular/platform-browser';
|
||||
import * as moment from 'moment';
|
||||
import { CurrencyPipe, DatePipe } from '@angular/common';
|
||||
@Component({
|
||||
selector: 'app-dashboard',
|
||||
templateUrl: './dashboard.component.html',
|
||||
styleUrls: ['./dashboard.component.scss']
|
||||
styleUrls: ['./dashboard.component.scss'],
|
||||
providers:[CurrencyPipe],
|
||||
})
|
||||
export class DashboardComponent {
|
||||
private currencyPipe1:CurrencyPipe
|
||||
|
||||
public single: any[];
|
||||
public multi: any[];
|
||||
public showXAxis = true;
|
||||
@ -66,9 +71,9 @@ export class DashboardComponent {
|
||||
}
|
||||
}
|
||||
}, this.globalChartOptions2);
|
||||
pieChartData2: number[] = [300,200,100];
|
||||
pieChartData2: number[] = [];
|
||||
doughnutChartColors2: any[] = [{
|
||||
backgroundColor: ['#f44336', '#009688 ', '#2196f3']
|
||||
backgroundColor: []
|
||||
}];
|
||||
pieChartLabels2: string[] = [];
|
||||
pieChartType2 = 'pie';
|
||||
@ -90,11 +95,11 @@ export class DashboardComponent {
|
||||
}
|
||||
}
|
||||
}, this.globalChartOptions3);
|
||||
pieChartData3: number[] = [500,600,700];
|
||||
pieChartData3: number[] = [];
|
||||
doughnutChartColors3: any[] = [{
|
||||
backgroundColor: ['#f44336', '#009688 ', '#2196f3']
|
||||
backgroundColor: []
|
||||
}];
|
||||
pieChartLabels3: string[] = ['Customer', 'Services', 'Practitioner'];
|
||||
pieChartLabels3: string[] = [];
|
||||
pieChartType3 = 'pie';
|
||||
|
||||
|
||||
@ -114,11 +119,11 @@ export class DashboardComponent {
|
||||
}
|
||||
}
|
||||
}, this.globalChartOptions4);
|
||||
pieChartData4: number[] = [100,200,500];
|
||||
pieChartData4: number[] = [];
|
||||
doughnutChartColors4: any[] = [{
|
||||
backgroundColor: ['#f44336', '#009688 ', '#2196f3']
|
||||
backgroundColor: []
|
||||
}];
|
||||
pieChartLabels4: string[] = ['Customer', 'Services', 'Practitioner'];
|
||||
pieChartLabels4: string[] = [];
|
||||
pieChartType4 = 'pie';
|
||||
|
||||
// Bar
|
||||
@ -201,42 +206,69 @@ bubbleChartData: Array <any> = [{
|
||||
bubbleChartType = 'bubble';
|
||||
|
||||
// combo chart
|
||||
comboChartLabels: Array <any> = ['1', '2', '3', '4', '5', '6', '7'];
|
||||
chartColors: Array <any> = [{ // red
|
||||
backgroundColor: '#f44336',
|
||||
borderColor: '#f44336',
|
||||
pointBackgroundColor: '#f44336',
|
||||
comboChartLabels: Array <any> = [];
|
||||
chartColors2: Array <any> = [
|
||||
{ // grey
|
||||
backgroundColor: '#5fc983',
|
||||
borderColor: '#5fc983',
|
||||
pointBackgroundColor: '#5fc983',
|
||||
pointBorderColor: '#fff',
|
||||
pointHoverBackgroundColor: '#fff',
|
||||
pointHoverBorderColor: '#5fc983'
|
||||
}
|
||||
];
|
||||
chartColors: Array <any> = [
|
||||
// { // red
|
||||
// backgroundColor: '#f44336',
|
||||
// borderColor: '#f44336',
|
||||
// pointBackgroundColor: '#f44336',
|
||||
// pointBorderColor: '#fff',
|
||||
// pointHoverBackgroundColor: '#fff',
|
||||
// pointHoverBorderColor: 'rgba(148,159,177,0.8)'
|
||||
// },
|
||||
// { // grey
|
||||
// backgroundColor: '#5fc983',
|
||||
// borderColor: '#5fc983',
|
||||
// pointBackgroundColor: '#5fc983',
|
||||
// pointBorderColor: '#fff',
|
||||
// pointHoverBackgroundColor: '#fff',
|
||||
// pointHoverBorderColor: '#5fc983'
|
||||
// },
|
||||
{ // blue
|
||||
backgroundColor: '#76b0a6',
|
||||
borderColor: '#1f7f6f',
|
||||
pointBackgroundColor: '#1f7f6f',
|
||||
pointBorderColor: '#fff',
|
||||
pointHoverBackgroundColor: '#fff',
|
||||
pointHoverBorderColor: 'rgba(148,159,177,0.8)'
|
||||
}, { // blue
|
||||
backgroundColor: '#7986cb',
|
||||
borderColor: '#3f51b5',
|
||||
pointBackgroundColor: '#3f51b5',
|
||||
pointBorderColor: '#fff',
|
||||
pointHoverBackgroundColor: '#fff',
|
||||
pointHoverBorderColor: 'rgba(148,159,177,0.8)'
|
||||
}, { // grey
|
||||
backgroundColor: 'rgba(148,159,177,0.2)',
|
||||
borderColor: 'rgba(148,159,177,1)',
|
||||
pointBackgroundColor: 'rgba(148,159,177,1)',
|
||||
pointBorderColor: '#fff',
|
||||
pointHoverBackgroundColor: '#fff',
|
||||
pointHoverBorderColor: 'rgba(148,159,177,0.8)'
|
||||
}];
|
||||
},
|
||||
// { // grey
|
||||
// backgroundColor: '#5fc983',
|
||||
// borderColor: '#5fc983',
|
||||
// pointBackgroundColor: '#5fc983',
|
||||
// pointBorderColor: '#fff',
|
||||
// pointHoverBackgroundColor: '#fff',
|
||||
// pointHoverBorderColor: '#5fc983'
|
||||
// }
|
||||
];
|
||||
comboChartLegend = true;
|
||||
ComboChartData: Array <any> = [{
|
||||
data: [6, 5, 8, 8, 5, 5, 4],
|
||||
label: 'Series A',
|
||||
data: [],
|
||||
label: 'Count of Appointment',
|
||||
borderWidth: 1,
|
||||
type: 'line',
|
||||
fill: false
|
||||
}, {
|
||||
data: [5, 4, 4, 2, 6, 2, 5],
|
||||
label: 'Series B',
|
||||
}
|
||||
|
||||
];
|
||||
ComboChartData2: Array <any> = [{
|
||||
data: [],
|
||||
label: 'Revenue',
|
||||
borderWidth: 1,
|
||||
type: 'bar',
|
||||
}];
|
||||
type: 'line',
|
||||
fill: false
|
||||
}
|
||||
];
|
||||
ComboChartOptions: any = Object.assign({
|
||||
animation: false,
|
||||
scales: {
|
||||
@ -277,15 +309,37 @@ messages: Object[] = [{
|
||||
subject: 'Onsectetur adipisic',
|
||||
}, ];
|
||||
finalChartPie: any = [];
|
||||
practitionerPieChart: any = [];
|
||||
servicePieChart: any = [];
|
||||
|
||||
|
||||
constructor(public _dash:DashboardService,private matIconRegistry: MatIconRegistry,private domSanitizer: DomSanitizer) {
|
||||
ranges: any = {
|
||||
'Today': [moment(), moment()],
|
||||
'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
|
||||
'Last 7 Days': [moment().subtract(6, 'days'), moment()],
|
||||
'Last 30 Days': [moment().subtract(29, 'days'), moment()],
|
||||
'This Month': [moment().startOf('month'), moment().endOf('month')],
|
||||
'Last Month': [
|
||||
moment().subtract(1, 'month').startOf('month'),
|
||||
moment().subtract(1, 'month').endOf('month')
|
||||
]
|
||||
};
|
||||
selectedDateRange: {startDate: moment.Moment, endDate: moment.Moment};
|
||||
currentDate: Date;
|
||||
lineChart: any = [];
|
||||
user_role: any;
|
||||
currency: any;
|
||||
countAndRevenue: boolean = false;
|
||||
constructor(private currencySymbol: CurrencyPipe,public _dash:DashboardService,private matIconRegistry: MatIconRegistry,private domSanitizer: DomSanitizer) {
|
||||
// this.fetch((data) => { this.rows = data; });
|
||||
Object.assign(this, {single, multi})
|
||||
this.matIconRegistry.addSvgIcon(
|
||||
'service',
|
||||
this.domSanitizer.bypassSecurityTrustResourceUrl('assets/images/service_icon.svg')
|
||||
);
|
||||
this.user_role = localStorage.getItem('user_role')
|
||||
|
||||
this.currency = localStorage.getItem('currency')
|
||||
console.log(this.currency)
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
@ -298,69 +352,249 @@ messages: Object[] = [{
|
||||
}
|
||||
|
||||
this.getCount(param)
|
||||
|
||||
//Start Line Chart
|
||||
this.currentDate = new Date();
|
||||
let startDate = new DatePipe('en-US').transform(this.currentDate, 'yyyy-MM-dd')
|
||||
let EndDate = new DatePipe('en-US').transform(this.currentDate, 'yyyy-MM-dd')
|
||||
console.log(startDate,EndDate);
|
||||
let lineParams
|
||||
if(user_role == 'BIZADMIN'){
|
||||
lineParams = {'busId':localStorage.getItem('busId'),'fromDate':startDate,'toDate':EndDate}
|
||||
this.getLineChartData(lineParams)
|
||||
}
|
||||
|
||||
//End Line Chart
|
||||
|
||||
}
|
||||
|
||||
getCount(param){
|
||||
console.log(param)
|
||||
this._dash.getCountDetails(param).subscribe(res => {
|
||||
if (res.status == 200) {
|
||||
if (res.status == 200) {
|
||||
console.log(res)
|
||||
this.count = res['data']
|
||||
this.finalChartPie = this.count.finalchart
|
||||
console.log(this.finalChartPie)
|
||||
|
||||
let piePratitionerName = this.finalChartPie.map(val => val.doctor_name)
|
||||
this.pieChartLabels = piePratitionerName
|
||||
this.pieChartLabels2 = piePratitionerName
|
||||
// Start Pie Chart 1
|
||||
let appointmentSum = this.finalChartPie.map(val => val.service.map(v => v.appoinments_count))
|
||||
appointmentSum.forEach(element => {
|
||||
if(element.length==0){
|
||||
element.push(0)
|
||||
}
|
||||
// element = element.reduce((a,b)=>a+b,0)
|
||||
});
|
||||
let appointmentSumValue=[];
|
||||
appointmentSum.forEach(element => {
|
||||
appointmentSumValue.push(element.reduce((a,b)=>a+b,0))
|
||||
});
|
||||
console.log(appointmentSumValue)
|
||||
this.pieChartData = appointmentSumValue
|
||||
// End Pie Chart 1
|
||||
this.count = res['data']
|
||||
|
||||
// Start Pie Chart 2
|
||||
let appointmentSum2 = this.finalChartPie.map(val => val.service.map(v => v.feesRevenue))
|
||||
appointmentSum2.forEach(element => {
|
||||
if(element.length==0){
|
||||
element.push(0)
|
||||
}
|
||||
// element = element.reduce((a,b)=>a+b,0)
|
||||
});
|
||||
let appointmentSumValue2=[];
|
||||
appointmentSum2.forEach(element => {
|
||||
appointmentSumValue2.push(element.reduce((a,b)=>a+b,0))
|
||||
});
|
||||
console.log(appointmentSumValue2)
|
||||
this.pieChartData2 = appointmentSumValue2
|
||||
// End Pie Chart 2
|
||||
|
||||
this.random_bg_color()
|
||||
this.currentDate = new Date();
|
||||
let startDate = new DatePipe('en-US').transform(this.currentDate, 'yyyy-MM-dd')
|
||||
let EndDate = new DatePipe('en-US').transform(this.currentDate, 'yyyy-MM-dd')
|
||||
console.log(startDate,EndDate);
|
||||
let user_role = localStorage.getItem('user_role')
|
||||
let pieChartParams
|
||||
if(user_role == 'PRACTITIONER'){
|
||||
pieChartParams = {'user_id':localStorage.getItem('user_id'),'busId':localStorage.getItem('busId'),'fromDate':startDate,'toDate':EndDate}
|
||||
}else{
|
||||
pieChartParams = {'busId':localStorage.getItem('busId'),'fromDate':startDate,'toDate':EndDate}
|
||||
}
|
||||
console.log(pieChartParams)
|
||||
this.getPieChartData(pieChartParams)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
random_bg_color() {
|
||||
for(let id of this.pieChartData){
|
||||
var x = Math.floor(Math.random() * 256);
|
||||
var y = Math.floor(Math.random() * 256);
|
||||
var z = Math.floor(Math.random() * 256);
|
||||
console.log(this.doughnutChartColors)
|
||||
this.doughnutChartColors[0].backgroundColor.push("rgb(" + x + "," + y + "," + z + ")");
|
||||
getPieChartData(param){
|
||||
console.log(param)
|
||||
this._dash.getPieChartDetails(param).subscribe(res => {
|
||||
if (res.status == 200) {
|
||||
console.log(res)
|
||||
this.practitionerPieChart = res['data'].finalchart
|
||||
console.log(this.practitionerPieChart)
|
||||
let practitionerName = this.practitionerPieChart.map(val => val.doctor_name)
|
||||
this.pieChartLabels = practitionerName
|
||||
this.pieChartLabels2 = practitionerName
|
||||
let practiAppointCount = this.practitionerPieChart.map(val => val.appoinments_count)
|
||||
this.pieChartData = practiAppointCount
|
||||
for(let id of practitionerName){
|
||||
var x = Math.floor(Math.random() * 245);
|
||||
var y = Math.floor(Math.random() * 245);
|
||||
var z = Math.floor(Math.random() * 245);
|
||||
console.log(this.doughnutChartColors)
|
||||
this.doughnutChartColors[0].backgroundColor.push("rgb(" + x + "," + y + "," + z + ")");
|
||||
}
|
||||
let practiRevenue = this.practitionerPieChart.map(val => val.amount)
|
||||
console.log(practiRevenue)
|
||||
// practiRevenue.forEach(element => {
|
||||
// console.log(element)
|
||||
// let amount = this.currencySymbol.transform(element,this.currency, 'symbol');
|
||||
// console.log(amount)
|
||||
// element = amount
|
||||
// console.log(element)
|
||||
// this.pieChartData2.push(element)
|
||||
// });
|
||||
// console.log(this.pieChartData2)
|
||||
this.pieChartData2 = practiRevenue
|
||||
|
||||
for(let id of practiRevenue){
|
||||
var x = Math.floor(Math.random() * 256);
|
||||
var y = Math.floor(Math.random() * 256);
|
||||
var z = Math.floor(Math.random() * 256);
|
||||
console.log(this.doughnutChartColors)
|
||||
this.doughnutChartColors2[0].backgroundColor.push("rgb(" + x + "," + y + "," + z + ")");
|
||||
}
|
||||
// this.random_bg_color()
|
||||
|
||||
this.getPieChartServiceData(param)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
getPieChartServiceData(param){
|
||||
console.log(param)
|
||||
this._dash.getPieChartServiceDetails(param).subscribe(res => {
|
||||
if (res.status == 200) {
|
||||
console.log(res)
|
||||
this.servicePieChart = res['data'].finalchart
|
||||
console.log(this.servicePieChart)
|
||||
let serviceName = this.servicePieChart.map(val => val.service_name)
|
||||
this.pieChartLabels3 = serviceName
|
||||
this.pieChartLabels4 = serviceName
|
||||
let serviceAppointCount = this.servicePieChart.map(val => val.appoinments_count)
|
||||
this.pieChartData3 = serviceAppointCount
|
||||
for(let id of serviceAppointCount){
|
||||
var x = Math.floor(Math.random() * 266);
|
||||
var y = Math.floor(Math.random() * 266);
|
||||
var z = Math.floor(Math.random() * 266);
|
||||
console.log(this.doughnutChartColors3)
|
||||
this.doughnutChartColors3[0].backgroundColor.push("rgb(" + x + "," + y + "," + z + ")");
|
||||
}
|
||||
let serviceRevenue = this.servicePieChart.map(val => val.amount)
|
||||
this.pieChartData4 = serviceRevenue
|
||||
for(let id of serviceRevenue){
|
||||
var x = Math.floor(Math.random() * 276);
|
||||
var y = Math.floor(Math.random() * 276);
|
||||
var z = Math.floor(Math.random() * 276);
|
||||
console.log(this.doughnutChartColors4)
|
||||
this.doughnutChartColors4[0].backgroundColor.push("rgb(" + x + "," + y + "," + z + ")");
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
getLineChartData(param){
|
||||
console.log(param)
|
||||
this._dash.getLineChart(param).subscribe(res => {
|
||||
if (res.status == 200) {
|
||||
console.log(res)
|
||||
this.lineChart = res['data']
|
||||
console.log(this.lineChart)
|
||||
this.lineChart.sort((a, b) => {
|
||||
const dateA:any = new Date(a.date);
|
||||
const dateB:any = new Date(b.date);
|
||||
return dateA - dateB;
|
||||
});
|
||||
let linecount = this.lineChart.map(val => val.count)
|
||||
let lineMonth = this.lineChart.map(val => val.date)
|
||||
let lineFees = this.lineChart.map(val => val.fees)
|
||||
this.comboChartLabels = lineMonth
|
||||
console.log(linecount,lineMonth,lineFees)
|
||||
console.log(this.ComboChartData)
|
||||
this.ComboChartData[0].data = linecount
|
||||
this.ComboChartData2[0].data = lineFees
|
||||
// this.ComboChartData.forEach(element => {
|
||||
// console.log(element)
|
||||
// if(element.type == 'line'){
|
||||
// element.data = linecount
|
||||
// }
|
||||
// if(element.type == 'bar') {
|
||||
// element.data = lineFees
|
||||
// }
|
||||
// });
|
||||
console.log(this.ComboChartData)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
// random_bg_color() {
|
||||
// for(let id of this.practitionerPieChart){
|
||||
// var x = Math.floor(Math.random() * 245);
|
||||
// var y = Math.floor(Math.random() * 235);
|
||||
// var z = Math.floor(Math.random() * 256);
|
||||
// console.log(this.doughnutChartColors)
|
||||
// this.doughnutChartColors[0].backgroundColor.push("rgb(" + x + "," + y + "," + z + ")");
|
||||
// this.doughnutChartColors2[0].backgroundColor.push("rgb(" + x + "," + y + "," + z + ")");
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
onSelect(event) {
|
||||
console.log(event);
|
||||
}
|
||||
|
||||
|
||||
// open(e) {
|
||||
// console.log(e);
|
||||
// // this.pickerDirective.open(e);
|
||||
// }
|
||||
|
||||
// // Function to call when the input value changes.
|
||||
// onChange = () => {
|
||||
// }
|
||||
|
||||
// // Function to call when the input is touched.
|
||||
// onTouched = () => {
|
||||
// }
|
||||
|
||||
// // Allows Angular to update the model (rating).
|
||||
// // Update the model and changes needed for the view here.
|
||||
// writeValue(obj: any): void {
|
||||
// console.log(obj);
|
||||
// }
|
||||
|
||||
// // Allows Angular to register a function to call when the model (rating) changes.
|
||||
// // Save the function as a property to call later here.
|
||||
// registerOnChange(fn: any): void {
|
||||
// console.log(fn);
|
||||
// // this.onChange = fn;
|
||||
// }
|
||||
|
||||
// // Allows Angular to register a function to call when the input has been touched.
|
||||
// // Save the function as a property to call later here.
|
||||
// registerOnTouched(fn: () => void): void {
|
||||
// this.onTouched = fn;
|
||||
// }
|
||||
|
||||
// // Allows Angular to disable the input.
|
||||
// setDisabledState(isDisabled: boolean): void {
|
||||
// // this.disabled = isDisabled;
|
||||
// }
|
||||
|
||||
// onInputChange() {
|
||||
// console.log('Input value changed:', this.selectedDateRange);
|
||||
// // Perform your desired logic here
|
||||
// }
|
||||
|
||||
dateWiseFilter() {
|
||||
// if(this.selectedDateRange.startDate != null && this.selectedDateRange.endDate != null){
|
||||
|
||||
console.log('Input value changed:', this.selectedDateRange);
|
||||
let startDate = new DatePipe('en-US').transform(this.selectedDateRange.startDate['$d'], 'yyyy-MM-dd')
|
||||
let EndDate = new DatePipe('en-US').transform(this.selectedDateRange.endDate['$d'], 'yyyy-MM-dd')
|
||||
console.log(startDate,EndDate);
|
||||
let user_role = localStorage.getItem('user_role')
|
||||
let param
|
||||
if(user_role == 'PRACTITIONER'){
|
||||
param = {'user_id':localStorage.getItem('user_id'),'busId':localStorage.getItem('busId'),'fromDate':startDate,'toDate':EndDate}
|
||||
}else{
|
||||
param = {'busId':localStorage.getItem('busId'),'fromDate':startDate,'toDate':EndDate}
|
||||
}
|
||||
console.log(param);
|
||||
// Perform your desired logic here
|
||||
this.getPieChartData(param)
|
||||
|
||||
//Start Line Chart
|
||||
let lineParams
|
||||
if(user_role == 'BIZADMIN'){
|
||||
lineParams = {'busId':localStorage.getItem('busId'),'fromDate':startDate,'toDate':EndDate}
|
||||
}
|
||||
this.getLineChartData(lineParams)
|
||||
//End Line Chart
|
||||
}
|
||||
|
||||
// }
|
||||
|
||||
onToggleChange(event){
|
||||
console.log(event)
|
||||
this.countAndRevenue = event
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { RouterModule } from '@angular/router';
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { CommonModule, CurrencyPipe } from '@angular/common';
|
||||
import { MatButtonModule } from '@angular/material/button';
|
||||
import { MatCardModule } from '@angular/material/card';
|
||||
import { MatIconModule } from '@angular/material/icon';
|
||||
@ -17,6 +17,7 @@ import { DashboardComponent } from './dashboard.component';
|
||||
import { DashboardRoutes } from './dashboard.routing';
|
||||
import { NgScrollbarModule } from 'ngx-scrollbar';
|
||||
import { DemoMaterialModule } from 'app/shared/demo.module';
|
||||
import { NgxDaterangepickerMd } from 'ngx-daterangepicker-material';
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
@ -34,8 +35,10 @@ import { DemoMaterialModule } from 'app/shared/demo.module';
|
||||
FlexLayoutModule,
|
||||
NgScrollbarModule,
|
||||
DemoMaterialModule,
|
||||
NgxDaterangepickerMd.forRoot()
|
||||
],
|
||||
declarations: [ DashboardComponent ]
|
||||
declarations: [ DashboardComponent ],
|
||||
providers:[CurrencyPipe],
|
||||
})
|
||||
|
||||
export class DashboardModule {}
|
||||
|
||||
@ -20,4 +20,16 @@ export class DashboardService {
|
||||
return this._http.post(this.apiUrl + 'getcount', param)
|
||||
}
|
||||
|
||||
getPieChartDetails(param): Observable<any> {
|
||||
return this._http.post(this.apiUrl + 'getAppointmentChart', param)
|
||||
}
|
||||
|
||||
getPieChartServiceDetails(param): Observable<any> {
|
||||
return this._http.post(this.apiUrl + 'getServiceChart', param)
|
||||
}
|
||||
|
||||
getLineChart(param): Observable<any> {
|
||||
return this._http.post(this.apiUrl + 'getChartListYear', param)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -3,7 +3,8 @@ export const environment = {
|
||||
environmentName: 'Production Environment',//Localhost Environment.
|
||||
// apiEndpoint:'http://venbainfotech.com:5000/',
|
||||
// apiEndpoint:'https://192.168.159.24:8080/api/',
|
||||
apiEndpoint:'https://api.venbait.in/api/',
|
||||
// apiEndpoint:'https://api.venbait.in/api/',
|
||||
apiEndpoint:'https://dev.venbait.in/appointment/api/',
|
||||
|
||||
//EndUser URL
|
||||
endUserUrl: window.location.origin+'/#/booking/',
|
||||
|
||||
@ -6,9 +6,9 @@
|
||||
export const environment = {
|
||||
production: false,
|
||||
environmentName: 'Testing Environment',//Localhost Environment.
|
||||
// apiEndpoint:'http://venbainfotech.com:5000/api/',
|
||||
apiEndpoint:'http://192.168.1.11:8080/api/',
|
||||
// apiEndpoint:'https://api.venbait.in/api/',
|
||||
// apiEndpoint:'http://venbainfotech.com:5000/api/',
|
||||
apiEndpoint:'http://192.168.1.32:8080/api/',
|
||||
// apiEndpoint:'https://dev.venbait.in/appointments/api/',
|
||||
|
||||
//EndUser URL
|
||||
endUserUrl: window.location.origin+'/#/booking/',
|
||||
|
||||
Loading…
Reference in New Issue
Block a user