From 6a8df64691ab55b7bf4800ffac0b9f7ed51fd4f0 Mon Sep 17 00:00:00 2001 From: Jason Kulatunga Date: Thu, 8 Sep 2022 19:36:33 -0700 Subject: [PATCH] using Azia theme --- frontend/angular.json | 2 - frontend/package-lock.json | 618 +++++++---- frontend/package.json | 7 +- frontend/src/app/app-routing.module.ts | 36 +- frontend/src/app/app.component.html | 8 +- frontend/src/app/app.component.ts | 16 +- frontend/src/app/app.module.ts | 17 +- .../components-sidebar.component.html | 26 + .../components-sidebar.component.scss} | 0 .../components-sidebar.component.spec.ts | 25 + .../components-sidebar.component.ts | 15 + .../src/app/components/components.module.ts | 15 - .../components/footer/footer.component.html | 31 +- .../footer.component.scss} | 0 .../footer/footer.component.spec.ts | 13 +- .../app/components/footer/footer.component.ts | 15 +- .../components/header/header.component.html | 90 ++ .../header.component.scss} | 0 .../header/header.component.spec.ts | 25 + .../app/components/header/header.component.ts | 25 + .../components/navbar/navbar.component.html | 137 --- .../navbar/navbar.component.spec.ts | 24 - .../app/components/navbar/navbar.component.ts | 196 ---- frontend/src/app/components/shared.module.ts | 20 + .../components/sidebar/sidebar.component.html | 24 - .../sidebar/sidebar.component.spec.ts | 24 - .../components/sidebar/sidebar.component.ts | 115 -- .../utilities-sidebar.component.html | 19 + .../utilities-sidebar.component.scss} | 0 .../utilities-sidebar.component.spec.ts | 25 + .../utilities-sidebar.component.ts | 15 + .../admin-layout/admin-layout.component.html | 44 - .../admin-layout.component.spec.ts | 24 - .../admin-layout/admin-layout.component.ts | 35 - .../admin-layout/admin-layout.module.ts | 29 - .../admin-layout/admin-layout.routing.ts | 11 - .../pages/dashboard/dashboard.component.html | 762 +++++++------- .../pages/dashboard/dashboard.component.scss | 5 + .../dashboard/dashboard.component.spec.ts | 8 +- .../pages/dashboard/dashboard.component.ts | 888 ++++++++-------- .../medical-providers.component.html | 62 -- .../medical-providers.component.spec.ts | 23 - .../medical-sources.component.html | 160 +++ .../medical-sources.component.scss} | 0 .../medical-sources.component.spec.ts | 23 + .../medical-sources.component.ts} | 8 +- frontend/src/assets/css/nucleo-icons.css | 543 ---------- frontend/src/assets/demo/demo.css | 77 -- frontend/src/assets/fonts/nucleo.eot | Bin 26524 -> 0 bytes frontend/src/assets/fonts/nucleo.ttf | Bin 26364 -> 0 bytes frontend/src/assets/fonts/nucleo.woff | Bin 15168 -> 0 bytes frontend/src/assets/fonts/nucleo.woff2 | Bin 12616 -> 0 bytes frontend/src/assets/images/azia-social.png | Bin 0 -> 160055 bytes frontend/src/assets/images/eight.jpg | Bin 0 -> 64527 bytes frontend/src/assets/images/eight.png | Bin 0 -> 154022 bytes frontend/src/assets/images/five.jpg | Bin 0 -> 53055 bytes frontend/src/assets/images/five.png | Bin 0 -> 202450 bytes frontend/src/assets/images/four.jpg | Bin 0 -> 62106 bytes frontend/src/assets/images/four.png | Bin 0 -> 231228 bytes .../src/assets/images/img-dashboard-eight.png | Bin 0 -> 136624 bytes .../src/assets/images/img-dashboard-five.png | Bin 0 -> 191753 bytes .../src/assets/images/img-dashboard-four.png | Bin 0 -> 167065 bytes .../src/assets/images/img-dashboard-nine.png | Bin 0 -> 198121 bytes .../src/assets/images/img-dashboard-one.png | Bin 0 -> 148332 bytes .../src/assets/images/img-dashboard-seven.png | Bin 0 -> 142898 bytes .../src/assets/images/img-dashboard-six.png | Bin 0 -> 151072 bytes .../src/assets/images/img-dashboard-ten.png | Bin 0 -> 211494 bytes .../src/assets/images/img-dashboard-three.png | Bin 0 -> 175332 bytes .../src/assets/images/img-dashboard-two.png | Bin 0 -> 140535 bytes frontend/src/assets/images/img1.jpg | Bin 0 -> 76394 bytes frontend/src/assets/images/img10.jpg | Bin 0 -> 24965 bytes frontend/src/assets/images/img11.jpg | Bin 0 -> 86142 bytes frontend/src/assets/images/img12.jpg | Bin 0 -> 116735 bytes frontend/src/assets/images/img13.jpg | Bin 0 -> 62935 bytes frontend/src/assets/images/img14.jpg | Bin 0 -> 70272 bytes frontend/src/assets/images/img15.jpg | Bin 0 -> 95754 bytes frontend/src/assets/images/img16.jpg | Bin 0 -> 26667 bytes frontend/src/assets/images/img17.jpg | Bin 0 -> 65244 bytes frontend/src/assets/images/img18.jpg | Bin 0 -> 71669 bytes frontend/src/assets/images/img19.jpg | Bin 0 -> 64681 bytes frontend/src/assets/images/img2.jpg | Bin 0 -> 67261 bytes frontend/src/assets/images/img20.jpg | Bin 0 -> 176925 bytes frontend/src/assets/images/img21.jpg | Bin 0 -> 72642 bytes frontend/src/assets/images/img22.jpg | Bin 0 -> 33712 bytes frontend/src/assets/images/img23.jpg | Bin 0 -> 49670 bytes frontend/src/assets/images/img24.jpg | Bin 0 -> 93489 bytes frontend/src/assets/images/img3.jpg | Bin 0 -> 57891 bytes frontend/src/assets/images/img4.jpg | Bin 0 -> 66185 bytes frontend/src/assets/images/img5.jpg | Bin 0 -> 30526 bytes frontend/src/assets/images/img6.jpg | Bin 0 -> 34336 bytes frontend/src/assets/images/img7.jpg | Bin 0 -> 23191 bytes frontend/src/assets/images/img8.jpg | Bin 0 -> 32270 bytes frontend/src/assets/images/img9.jpg | Bin 0 -> 17807 bytes frontend/src/assets/images/mastercard.png | Bin 0 -> 2381 bytes frontend/src/assets/images/nine.jpg | Bin 0 -> 52321 bytes frontend/src/assets/images/nine.png | Bin 0 -> 204642 bytes frontend/src/assets/images/one.jpg | Bin 0 -> 179070 bytes frontend/src/assets/images/one.png | Bin 0 -> 211912 bytes frontend/src/assets/images/seven.jpg | Bin 0 -> 176402 bytes frontend/src/assets/images/seven.png | Bin 0 -> 204696 bytes frontend/src/assets/images/six.jpg | Bin 0 -> 47454 bytes frontend/src/assets/images/six.png | Bin 0 -> 176328 bytes frontend/src/assets/images/temple.svg | 1 + frontend/src/assets/images/ten.jpg | Bin 0 -> 61450 bytes frontend/src/assets/images/ten.png | Bin 0 -> 247173 bytes frontend/src/assets/images/three.jpg | Bin 0 -> 42556 bytes frontend/src/assets/images/three.png | Bin 0 -> 176053 bytes frontend/src/assets/images/two.jpg | Bin 0 -> 50489 bytes frontend/src/assets/images/two.png | Bin 0 -> 165510 bytes frontend/src/assets/images/visa.png | Bin 0 -> 1756 bytes frontend/src/assets/img/angular.jpg | Bin 22527 -> 0 bytes frontend/src/assets/img/angular2-logo-red.png | Bin 2385 -> 0 bytes .../src/assets/img/angular2-logo-white.png | Bin 21005 -> 0 bytes frontend/src/assets/img/anime3.png | Bin 37930 -> 0 bytes frontend/src/assets/img/anime6.png | Bin 39891 -> 0 bytes frontend/src/assets/img/apple-icon.png | Bin 2446 -> 0 bytes frontend/src/assets/img/argon-white.png | Bin 28934 -> 0 bytes frontend/src/assets/img/bg5.jpg | Bin 213199 -> 0 bytes frontend/src/assets/img/default-avatar.png | Bin 2864 -> 0 bytes frontend/src/assets/img/emilyz.jpg | Bin 86218 -> 0 bytes frontend/src/assets/img/favicon.png | Bin 2761 -> 0 bytes frontend/src/assets/img/header.jpg | Bin 670266 -> 0 bytes frontend/src/assets/img/img_3115.jpg | Bin 38381 -> 0 bytes frontend/src/assets/img/james.jpg | Bin 74556 -> 0 bytes frontend/src/assets/img/mike.jpg | Bin 76654 -> 0 bytes frontend/src/assets/scss/azia.scss | 207 ++++ frontend/src/assets/scss/black-dashboard.scss | 103 -- .../_angular-differences.scss | 5 - .../angular-differences/_card-user.scss | 21 - .../angular-differences/_charts.scss | 3 - .../angular-differences/_nucleo-icons.scss | 6 - .../angular-differences/_rtl.scss | 13 - .../_sidebar-and-main-panel.scss | 45 - .../plugins/_ngx-toastr.scss | 104 -- .../black-dashboard/bootstrap/_alert.scss | 51 - .../black-dashboard/bootstrap/_badge.scss | 47 - .../bootstrap/_breadcrumb.scss | 41 - .../bootstrap/_button-group.scss | 172 --- .../black-dashboard/bootstrap/_buttons.scss | 143 --- .../scss/black-dashboard/bootstrap/_card.scss | 301 ------ .../black-dashboard/bootstrap/_carousel.scss | 236 ----- .../black-dashboard/bootstrap/_close.scss | 35 - .../scss/black-dashboard/bootstrap/_code.scss | 48 - .../bootstrap/_custom-forms.scss | 433 -------- .../black-dashboard/bootstrap/_dropdown.scss | 166 --- .../black-dashboard/bootstrap/_forms.scss | 333 ------ .../black-dashboard/bootstrap/_functions.scss | 86 -- .../scss/black-dashboard/bootstrap/_grid.scss | 52 - .../black-dashboard/bootstrap/_images.scss | 42 - .../bootstrap/_input-group.scss | 173 --- .../black-dashboard/bootstrap/_jumbotron.scss | 16 - .../bootstrap/_list-group.scss | 115 -- .../black-dashboard/bootstrap/_media.scss | 8 - .../black-dashboard/bootstrap/_mixins.scss | 41 - .../black-dashboard/bootstrap/_modal.scss | 180 ---- .../scss/black-dashboard/bootstrap/_nav.scss | 118 --- .../black-dashboard/bootstrap/_navbar.scss | 299 ------ .../bootstrap/_pagination.scss | 78 -- .../black-dashboard/bootstrap/_popover.scss | 183 ---- .../black-dashboard/bootstrap/_print.scss | 141 --- .../black-dashboard/bootstrap/_progress.scss | 34 - .../black-dashboard/bootstrap/_reboot.scss | 483 --------- .../scss/black-dashboard/bootstrap/_root.scss | 19 - .../black-dashboard/bootstrap/_tables.scss | 187 ---- .../black-dashboard/bootstrap/_tooltip.scss | 115 -- .../bootstrap/_transitions.scss | 22 - .../scss/black-dashboard/bootstrap/_type.scss | 125 --- .../black-dashboard/bootstrap/_utilities.scss | 15 - .../black-dashboard/bootstrap/_variables.scss | 952 ----------------- .../bootstrap/mixins/_alert.scss | 13 - .../bootstrap/mixins/_background-variant.scss | 21 - .../bootstrap/mixins/_badge.scss | 12 - .../bootstrap/mixins/_border-radius.scss | 35 - .../bootstrap/mixins/_box-shadow.scss | 5 - .../bootstrap/mixins/_breakpoints.scss | 123 --- .../bootstrap/mixins/_buttons.scss | 109 -- .../bootstrap/mixins/_caret.scss | 66 -- .../bootstrap/mixins/_clearfix.scss | 7 - .../bootstrap/mixins/_float.scss | 11 - .../bootstrap/mixins/_forms.scss | 147 --- .../bootstrap/mixins/_gradients.scss | 45 - .../bootstrap/mixins/_grid-framework.scss | 67 -- .../bootstrap/mixins/_grid.scss | 52 - .../bootstrap/mixins/_hover.scss | 37 - .../bootstrap/mixins/_image.scss | 36 - .../bootstrap/mixins/_list-group.scss | 21 - .../bootstrap/mixins/_lists.scss | 7 - .../bootstrap/mixins/_nav-divider.scss | 10 - .../bootstrap/mixins/_pagination.scss | 22 - .../bootstrap/mixins/_reset-text.scss | 17 - .../bootstrap/mixins/_resize.scss | 6 - .../bootstrap/mixins/_screen-reader.scss | 33 - .../bootstrap/mixins/_size.scss | 6 - .../bootstrap/mixins/_table-row.scss | 30 - .../bootstrap/mixins/_text-emphasis.scss | 14 - .../bootstrap/mixins/_text-hide.scss | 13 - .../bootstrap/mixins/_text-truncate.scss | 8 - .../bootstrap/mixins/_transition.scss | 13 - .../bootstrap/mixins/_visibility.scss | 7 - .../bootstrap/utilities/_align.scss | 8 - .../bootstrap/utilities/_background.scss | 19 - .../bootstrap/utilities/_borders.scss | 59 -- .../bootstrap/utilities/_clearfix.scss | 3 - .../bootstrap/utilities/_display.scss | 38 - .../bootstrap/utilities/_embed.scss | 52 - .../bootstrap/utilities/_flex.scss | 51 - .../bootstrap/utilities/_float.scss | 9 - .../bootstrap/utilities/_position.scss | 37 - .../bootstrap/utilities/_screenreaders.scss | 11 - .../bootstrap/utilities/_shadows.scss | 6 - .../bootstrap/utilities/_sizing.scss | 12 - .../bootstrap/utilities/_spacing.scss | 51 - .../bootstrap/utilities/_text.scss | 58 - .../bootstrap/utilities/_visibility.scss | 11 - .../scss/black-dashboard/custom/_alerts.scss | 89 -- .../scss/black-dashboard/custom/_buttons.scss | 238 ----- .../scss/black-dashboard/custom/_card.scss | 232 ---- .../custom/_checkboxes-radio.scss | 154 --- .../black-dashboard/custom/_dropdown.scss | 359 ------- .../black-dashboard/custom/_fixed-plugin.scss | 324 ------ .../scss/black-dashboard/custom/_footer.scss | 94 -- .../scss/black-dashboard/custom/_forms.scss | 133 --- .../black-dashboard/custom/_functions.scss | 23 - .../scss/black-dashboard/custom/_images.scss | 7 - .../black-dashboard/custom/_input-group.scss | 343 ------ .../scss/black-dashboard/custom/_misc.scss | 229 ---- .../scss/black-dashboard/custom/_mixins.scss | 15 - .../scss/black-dashboard/custom/_modal.scss | 161 --- .../scss/black-dashboard/custom/_navbar.scss | 413 -------- .../scss/black-dashboard/custom/_rtl.scss | 215 ---- .../custom/_sidebar-and-main-panel.scss | 732 ------------- .../scss/black-dashboard/custom/_tables.scss | 191 ---- .../scss/black-dashboard/custom/_type.scss | 174 --- .../black-dashboard/custom/_utilities.scss | 9 - .../black-dashboard/custom/_variables.scss | 994 ------------------ .../custom/_white-content.scss | 299 ------ .../custom/cards/_card-chart.scss | 73 -- .../custom/cards/_card-map.scss | 3 - .../custom/cards/_card-plain.scss | 16 - .../custom/cards/_card-task.scss | 30 - .../custom/cards/_card-user.scss | 77 -- .../black-dashboard/custom/mixins/_alert.scss | 14 - .../custom/mixins/_background-variant.scss | 18 - .../custom/mixins/_badges.scss | 15 - .../custom/mixins/_buttons.scss | 343 ------ .../custom/mixins/_dropdown.scss | 26 - .../black-dashboard/custom/mixins/_forms.scss | 127 --- .../black-dashboard/custom/mixins/_icon.scss | 4 - .../custom/mixins/_inputs.scss | 234 ----- .../custom/mixins/_modals.scss | 15 - .../custom/mixins/_page-header.scss | 7 - .../custom/mixins/_popovers.scss | 41 - .../custom/mixins/_vendor-prefixes.scss | 202 ---- .../custom/mixins/_wizard.scss | 26 - .../custom/mixins/opacity.scss | 8 - .../custom/utilities/_backgrounds.scss | 42 - .../custom/utilities/_floating.scss | 54 - .../custom/utilities/_helper.scss | 62 -- .../custom/utilities/_position.scss | 19 - .../custom/utilities/_shadows.scss | 10 - .../custom/utilities/_sizing.scss | 5 - .../custom/utilities/_spacing.scss | 105 -- .../custom/utilities/_text.scss | 40 - .../custom/utilities/_transform.scss | 8 - .../plugins/_plugin-perfect-scrollbar.scss | 116 -- .../src/assets/scss/bootstrap/_accordion.scss | 55 + .../src/assets/scss/bootstrap/_alerts.scss | 48 + .../src/assets/scss/bootstrap/_badge.scss | 15 + .../assets/scss/bootstrap/_breadcrumb.scss | 47 + .../src/assets/scss/bootstrap/_buttons.scss | 44 + .../src/assets/scss/bootstrap/_cards.scss | 34 + .../src/assets/scss/bootstrap/_carousel.scss | 20 + .../src/assets/scss/bootstrap/_dropdown.scss | 18 + .../src/assets/scss/bootstrap/_forms.scss | 32 + frontend/src/assets/scss/bootstrap/_grid.scss | 55 + .../assets/scss/bootstrap/_input-group.scss | 15 + .../src/assets/scss/bootstrap/_mixins.scss | 111 ++ .../src/assets/scss/bootstrap/_modal.scss | 39 + frontend/src/assets/scss/bootstrap/_nav.scss | 63 ++ .../assets/scss/bootstrap/_pagination.scss | 89 ++ .../src/assets/scss/bootstrap/_popover.scss | 52 + .../src/assets/scss/bootstrap/_progress.scss | 17 + .../src/assets/scss/bootstrap/_table.scss | 42 + .../src/assets/scss/bootstrap/_toast.scss | 17 + .../src/assets/scss/bootstrap/_tooltip.scss | 11 + .../src/assets/scss/bootstrap/_variables.scss | 40 + .../src/assets/scss/custom/_accordion.scss | 46 + frontend/src/assets/scss/custom/_buttons.scss | 41 + frontend/src/assets/scss/custom/_charts.scss | 25 + frontend/src/assets/scss/custom/_forms.scss | 234 +++++ frontend/src/assets/scss/custom/_image.scss | 136 +++ frontend/src/assets/scss/custom/_list.scss | 34 + frontend/src/assets/scss/custom/_mixins.scss | 102 ++ frontend/src/assets/scss/custom/_modal.scss | 6 + frontend/src/assets/scss/custom/_nav.scss | 269 +++++ .../src/assets/scss/custom/_variables.scss | 28 + frontend/src/assets/scss/layout/_content.scss | 177 ++++ frontend/src/assets/scss/layout/_footer.scss | 34 + frontend/src/assets/scss/layout/_global.scss | 59 ++ frontend/src/assets/scss/layout/_header.scss | 840 +++++++++++++++ frontend/src/assets/scss/layout/_iconbar.scss | 303 ++++++ .../assets/scss/layout/_navbar-variant.scss | 111 ++ frontend/src/assets/scss/layout/_navbar.scss | 454 ++++++++ frontend/src/assets/scss/layout/_sidebar.scss | 285 +++++ .../src/assets/scss/lib/_angular2-wizard.scss | 22 + frontend/src/assets/scss/lib/_datatables.scss | 196 ++++ frontend/src/assets/scss/lib/_datepicker.scss | 161 +++ .../src/assets/scss/lib/_datetimepicker.scss | 259 +++++ .../src/assets/scss/lib/_jquery-steps.scss | 400 +++++++ frontend/src/assets/scss/lib/_jqvmap.scss | 91 ++ frontend/src/assets/scss/lib/_morris.scss | 2 + frontend/src/assets/scss/lib/_parsley.scss | 94 ++ frontend/src/assets/scss/lib/_quill.scss | 208 ++++ .../src/assets/scss/lib/_rangeslider.scss | 158 +++ frontend/src/assets/scss/lib/_scrollbar.scss | 31 + frontend/src/assets/scss/lib/_select2.scss | 77 ++ frontend/src/assets/scss/lib/_spectrum.scss | 89 ++ .../src/assets/scss/template/_calendar.scss | 728 +++++++++++++ frontend/src/assets/scss/template/_chat.scss | 440 ++++++++ .../src/assets/scss/template/_contacts.scss | 340 ++++++ .../scss/template/_dashboard-eight.scss | 547 ++++++++++ .../scss/template/_dashboard-eleven.scss | 1 + .../assets/scss/template/_dashboard-five.scss | 140 +++ .../assets/scss/template/_dashboard-four.scss | 647 ++++++++++++ .../assets/scss/template/_dashboard-nine.scss | 568 ++++++++++ .../assets/scss/template/_dashboard-one.scss | 594 +++++++++++ .../scss/template/_dashboard-seven.scss | 725 +++++++++++++ .../assets/scss/template/_dashboard-six.scss | 370 +++++++ .../assets/scss/template/_dashboard-ten.scss | 507 +++++++++ .../scss/template/_dashboard-three.scss | 268 +++++ .../assets/scss/template/_dashboard-two.scss | 390 +++++++ frontend/src/assets/scss/template/_demo.scss | 757 +++++++++++++ frontend/src/assets/scss/template/_error.scss | 36 + .../src/assets/scss/template/_invoice.scss | 207 ++++ .../src/assets/scss/template/_mail-two.scss | 52 + frontend/src/assets/scss/template/_mail.scss | 452 ++++++++ .../src/assets/scss/template/_profile.scss | 277 +++++ .../src/assets/scss/template/_signin.scss | 74 ++ .../src/assets/scss/template/_signup.scss | 145 +++ .../src/assets/scss/util/_background.scss | 41 + frontend/src/assets/scss/util/_border.scss | 123 +++ frontend/src/assets/scss/util/_height.scss | 105 ++ frontend/src/assets/scss/util/_margin.scss | 125 +++ frontend/src/assets/scss/util/_misc.scss | 60 ++ frontend/src/assets/scss/util/_padding.scss | 105 ++ frontend/src/assets/scss/util/_position.scss | 76 ++ .../src/assets/scss/util/_typography.scss | 225 ++++ frontend/src/assets/scss/util/_width.scss | 101 ++ frontend/src/assets/sources/aetna.png | Bin 0 -> 11825 bytes frontend/src/assets/sources/anthem.png | Bin 0 -> 29697 bytes frontend/src/assets/sources/cigna.png | Bin 0 -> 25715 bytes frontend/src/assets/sources/humana.png | Bin 0 -> 16924 bytes frontend/src/assets/sources/kaiser.png | Bin 0 -> 45150 bytes .../src/assets/sources/unitedhealthcare.png | Bin 0 -> 66871 bytes frontend/src/styles.scss | 207 ++++ 355 files changed, 17292 insertions(+), 16846 deletions(-) create mode 100644 frontend/src/app/components/components-sidebar/components-sidebar.component.html rename frontend/src/app/components/{footer/footer.component.css => components-sidebar/components-sidebar.component.scss} (100%) create mode 100644 frontend/src/app/components/components-sidebar/components-sidebar.component.spec.ts create mode 100644 frontend/src/app/components/components-sidebar/components-sidebar.component.ts delete mode 100644 frontend/src/app/components/components.module.ts rename frontend/src/app/components/{navbar/navbar.component.css => footer/footer.component.scss} (100%) create mode 100644 frontend/src/app/components/header/header.component.html rename frontend/src/app/components/{sidebar/sidebar.component.css => header/header.component.scss} (100%) create mode 100644 frontend/src/app/components/header/header.component.spec.ts create mode 100644 frontend/src/app/components/header/header.component.ts delete mode 100644 frontend/src/app/components/navbar/navbar.component.html delete mode 100644 frontend/src/app/components/navbar/navbar.component.spec.ts delete mode 100644 frontend/src/app/components/navbar/navbar.component.ts create mode 100644 frontend/src/app/components/shared.module.ts delete mode 100644 frontend/src/app/components/sidebar/sidebar.component.html delete mode 100644 frontend/src/app/components/sidebar/sidebar.component.spec.ts delete mode 100644 frontend/src/app/components/sidebar/sidebar.component.ts create mode 100644 frontend/src/app/components/utilities-sidebar/utilities-sidebar.component.html rename frontend/src/app/{layouts/admin-layout/admin-layout.component.scss => components/utilities-sidebar/utilities-sidebar.component.scss} (100%) create mode 100644 frontend/src/app/components/utilities-sidebar/utilities-sidebar.component.spec.ts create mode 100644 frontend/src/app/components/utilities-sidebar/utilities-sidebar.component.ts delete mode 100644 frontend/src/app/layouts/admin-layout/admin-layout.component.html delete mode 100644 frontend/src/app/layouts/admin-layout/admin-layout.component.spec.ts delete mode 100644 frontend/src/app/layouts/admin-layout/admin-layout.component.ts delete mode 100644 frontend/src/app/layouts/admin-layout/admin-layout.module.ts delete mode 100644 frontend/src/app/layouts/admin-layout/admin-layout.routing.ts delete mode 100644 frontend/src/app/pages/medical-providers/medical-providers.component.html delete mode 100644 frontend/src/app/pages/medical-providers/medical-providers.component.spec.ts create mode 100644 frontend/src/app/pages/medical-sources/medical-sources.component.html rename frontend/src/app/pages/{medical-providers/medical-providers.component.scss => medical-sources/medical-sources.component.scss} (100%) create mode 100644 frontend/src/app/pages/medical-sources/medical-sources.component.spec.ts rename frontend/src/app/pages/{medical-providers/medical-providers.component.ts => medical-sources/medical-sources.component.ts} (97%) delete mode 100644 frontend/src/assets/css/nucleo-icons.css delete mode 100644 frontend/src/assets/demo/demo.css delete mode 100644 frontend/src/assets/fonts/nucleo.eot delete mode 100644 frontend/src/assets/fonts/nucleo.ttf delete mode 100644 frontend/src/assets/fonts/nucleo.woff delete mode 100644 frontend/src/assets/fonts/nucleo.woff2 create mode 100644 frontend/src/assets/images/azia-social.png create mode 100644 frontend/src/assets/images/eight.jpg create mode 100644 frontend/src/assets/images/eight.png create mode 100644 frontend/src/assets/images/five.jpg create mode 100644 frontend/src/assets/images/five.png create mode 100644 frontend/src/assets/images/four.jpg create mode 100644 frontend/src/assets/images/four.png create mode 100644 frontend/src/assets/images/img-dashboard-eight.png create mode 100644 frontend/src/assets/images/img-dashboard-five.png create mode 100644 frontend/src/assets/images/img-dashboard-four.png create mode 100644 frontend/src/assets/images/img-dashboard-nine.png create mode 100644 frontend/src/assets/images/img-dashboard-one.png create mode 100644 frontend/src/assets/images/img-dashboard-seven.png create mode 100644 frontend/src/assets/images/img-dashboard-six.png create mode 100644 frontend/src/assets/images/img-dashboard-ten.png create mode 100644 frontend/src/assets/images/img-dashboard-three.png create mode 100644 frontend/src/assets/images/img-dashboard-two.png create mode 100644 frontend/src/assets/images/img1.jpg create mode 100644 frontend/src/assets/images/img10.jpg create mode 100644 frontend/src/assets/images/img11.jpg create mode 100644 frontend/src/assets/images/img12.jpg create mode 100644 frontend/src/assets/images/img13.jpg create mode 100644 frontend/src/assets/images/img14.jpg create mode 100644 frontend/src/assets/images/img15.jpg create mode 100644 frontend/src/assets/images/img16.jpg create mode 100644 frontend/src/assets/images/img17.jpg create mode 100644 frontend/src/assets/images/img18.jpg create mode 100644 frontend/src/assets/images/img19.jpg create mode 100644 frontend/src/assets/images/img2.jpg create mode 100644 frontend/src/assets/images/img20.jpg create mode 100644 frontend/src/assets/images/img21.jpg create mode 100644 frontend/src/assets/images/img22.jpg create mode 100644 frontend/src/assets/images/img23.jpg create mode 100644 frontend/src/assets/images/img24.jpg create mode 100644 frontend/src/assets/images/img3.jpg create mode 100644 frontend/src/assets/images/img4.jpg create mode 100644 frontend/src/assets/images/img5.jpg create mode 100644 frontend/src/assets/images/img6.jpg create mode 100644 frontend/src/assets/images/img7.jpg create mode 100644 frontend/src/assets/images/img8.jpg create mode 100644 frontend/src/assets/images/img9.jpg create mode 100644 frontend/src/assets/images/mastercard.png create mode 100644 frontend/src/assets/images/nine.jpg create mode 100644 frontend/src/assets/images/nine.png create mode 100644 frontend/src/assets/images/one.jpg create mode 100644 frontend/src/assets/images/one.png create mode 100644 frontend/src/assets/images/seven.jpg create mode 100644 frontend/src/assets/images/seven.png create mode 100644 frontend/src/assets/images/six.jpg create mode 100644 frontend/src/assets/images/six.png create mode 100644 frontend/src/assets/images/temple.svg create mode 100644 frontend/src/assets/images/ten.jpg create mode 100644 frontend/src/assets/images/ten.png create mode 100644 frontend/src/assets/images/three.jpg create mode 100644 frontend/src/assets/images/three.png create mode 100644 frontend/src/assets/images/two.jpg create mode 100644 frontend/src/assets/images/two.png create mode 100644 frontend/src/assets/images/visa.png delete mode 100644 frontend/src/assets/img/angular.jpg delete mode 100644 frontend/src/assets/img/angular2-logo-red.png delete mode 100644 frontend/src/assets/img/angular2-logo-white.png delete mode 100644 frontend/src/assets/img/anime3.png delete mode 100644 frontend/src/assets/img/anime6.png delete mode 100644 frontend/src/assets/img/apple-icon.png delete mode 100644 frontend/src/assets/img/argon-white.png delete mode 100644 frontend/src/assets/img/bg5.jpg delete mode 100644 frontend/src/assets/img/default-avatar.png delete mode 100644 frontend/src/assets/img/emilyz.jpg delete mode 100644 frontend/src/assets/img/favicon.png delete mode 100644 frontend/src/assets/img/header.jpg delete mode 100644 frontend/src/assets/img/img_3115.jpg delete mode 100644 frontend/src/assets/img/james.jpg delete mode 100644 frontend/src/assets/img/mike.jpg create mode 100755 frontend/src/assets/scss/azia.scss delete mode 100644 frontend/src/assets/scss/black-dashboard.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/angular-differences/_angular-differences.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/angular-differences/_card-user.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/angular-differences/_charts.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/angular-differences/_nucleo-icons.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/angular-differences/_rtl.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/angular-differences/_sidebar-and-main-panel.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/angular-differences/plugins/_ngx-toastr.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/_alert.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/_badge.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/_breadcrumb.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/_button-group.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/_buttons.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/_card.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/_carousel.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/_close.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/_code.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/_custom-forms.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/_dropdown.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/_forms.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/_functions.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/_grid.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/_images.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/_input-group.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/_jumbotron.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/_list-group.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/_media.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/_mixins.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/_modal.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/_nav.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/_navbar.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/_pagination.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/_popover.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/_print.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/_progress.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/_reboot.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/_root.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/_tables.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/_tooltip.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/_transitions.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/_type.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/_utilities.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/_variables.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/mixins/_alert.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/mixins/_background-variant.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/mixins/_badge.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/mixins/_border-radius.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/mixins/_box-shadow.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/mixins/_breakpoints.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/mixins/_buttons.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/mixins/_caret.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/mixins/_clearfix.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/mixins/_float.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/mixins/_forms.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/mixins/_gradients.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/mixins/_grid-framework.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/mixins/_grid.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/mixins/_hover.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/mixins/_image.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/mixins/_list-group.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/mixins/_lists.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/mixins/_nav-divider.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/mixins/_pagination.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/mixins/_reset-text.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/mixins/_resize.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/mixins/_screen-reader.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/mixins/_size.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/mixins/_table-row.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/mixins/_text-emphasis.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/mixins/_text-hide.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/mixins/_text-truncate.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/mixins/_transition.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/mixins/_visibility.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/utilities/_align.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/utilities/_background.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/utilities/_borders.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/utilities/_clearfix.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/utilities/_display.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/utilities/_embed.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/utilities/_flex.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/utilities/_float.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/utilities/_position.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/utilities/_screenreaders.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/utilities/_shadows.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/utilities/_sizing.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/utilities/_spacing.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/utilities/_text.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/bootstrap/utilities/_visibility.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/_alerts.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/_buttons.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/_card.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/_checkboxes-radio.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/_dropdown.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/_fixed-plugin.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/_footer.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/_forms.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/_functions.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/_images.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/_input-group.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/_misc.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/_mixins.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/_modal.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/_navbar.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/_rtl.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/_sidebar-and-main-panel.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/_tables.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/_type.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/_utilities.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/_variables.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/_white-content.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/cards/_card-chart.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/cards/_card-map.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/cards/_card-plain.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/cards/_card-task.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/cards/_card-user.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/mixins/_alert.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/mixins/_background-variant.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/mixins/_badges.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/mixins/_buttons.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/mixins/_dropdown.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/mixins/_forms.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/mixins/_icon.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/mixins/_inputs.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/mixins/_modals.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/mixins/_page-header.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/mixins/_popovers.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/mixins/_vendor-prefixes.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/mixins/_wizard.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/mixins/opacity.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/utilities/_backgrounds.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/utilities/_floating.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/utilities/_helper.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/utilities/_position.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/utilities/_shadows.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/utilities/_sizing.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/utilities/_spacing.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/utilities/_text.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/custom/utilities/_transform.scss delete mode 100644 frontend/src/assets/scss/black-dashboard/plugins/_plugin-perfect-scrollbar.scss create mode 100755 frontend/src/assets/scss/bootstrap/_accordion.scss create mode 100755 frontend/src/assets/scss/bootstrap/_alerts.scss create mode 100755 frontend/src/assets/scss/bootstrap/_badge.scss create mode 100755 frontend/src/assets/scss/bootstrap/_breadcrumb.scss create mode 100755 frontend/src/assets/scss/bootstrap/_buttons.scss create mode 100755 frontend/src/assets/scss/bootstrap/_cards.scss create mode 100755 frontend/src/assets/scss/bootstrap/_carousel.scss create mode 100755 frontend/src/assets/scss/bootstrap/_dropdown.scss create mode 100755 frontend/src/assets/scss/bootstrap/_forms.scss create mode 100755 frontend/src/assets/scss/bootstrap/_grid.scss create mode 100755 frontend/src/assets/scss/bootstrap/_input-group.scss create mode 100755 frontend/src/assets/scss/bootstrap/_mixins.scss create mode 100755 frontend/src/assets/scss/bootstrap/_modal.scss create mode 100755 frontend/src/assets/scss/bootstrap/_nav.scss create mode 100755 frontend/src/assets/scss/bootstrap/_pagination.scss create mode 100755 frontend/src/assets/scss/bootstrap/_popover.scss create mode 100755 frontend/src/assets/scss/bootstrap/_progress.scss create mode 100755 frontend/src/assets/scss/bootstrap/_table.scss create mode 100755 frontend/src/assets/scss/bootstrap/_toast.scss create mode 100755 frontend/src/assets/scss/bootstrap/_tooltip.scss create mode 100755 frontend/src/assets/scss/bootstrap/_variables.scss create mode 100755 frontend/src/assets/scss/custom/_accordion.scss create mode 100755 frontend/src/assets/scss/custom/_buttons.scss create mode 100755 frontend/src/assets/scss/custom/_charts.scss create mode 100755 frontend/src/assets/scss/custom/_forms.scss create mode 100755 frontend/src/assets/scss/custom/_image.scss create mode 100755 frontend/src/assets/scss/custom/_list.scss create mode 100755 frontend/src/assets/scss/custom/_mixins.scss create mode 100755 frontend/src/assets/scss/custom/_modal.scss create mode 100755 frontend/src/assets/scss/custom/_nav.scss create mode 100755 frontend/src/assets/scss/custom/_variables.scss create mode 100755 frontend/src/assets/scss/layout/_content.scss create mode 100755 frontend/src/assets/scss/layout/_footer.scss create mode 100755 frontend/src/assets/scss/layout/_global.scss create mode 100755 frontend/src/assets/scss/layout/_header.scss create mode 100755 frontend/src/assets/scss/layout/_iconbar.scss create mode 100755 frontend/src/assets/scss/layout/_navbar-variant.scss create mode 100755 frontend/src/assets/scss/layout/_navbar.scss create mode 100755 frontend/src/assets/scss/layout/_sidebar.scss create mode 100644 frontend/src/assets/scss/lib/_angular2-wizard.scss create mode 100755 frontend/src/assets/scss/lib/_datatables.scss create mode 100755 frontend/src/assets/scss/lib/_datepicker.scss create mode 100755 frontend/src/assets/scss/lib/_datetimepicker.scss create mode 100755 frontend/src/assets/scss/lib/_jquery-steps.scss create mode 100755 frontend/src/assets/scss/lib/_jqvmap.scss create mode 100755 frontend/src/assets/scss/lib/_morris.scss create mode 100755 frontend/src/assets/scss/lib/_parsley.scss create mode 100755 frontend/src/assets/scss/lib/_quill.scss create mode 100755 frontend/src/assets/scss/lib/_rangeslider.scss create mode 100755 frontend/src/assets/scss/lib/_scrollbar.scss create mode 100755 frontend/src/assets/scss/lib/_select2.scss create mode 100755 frontend/src/assets/scss/lib/_spectrum.scss create mode 100755 frontend/src/assets/scss/template/_calendar.scss create mode 100755 frontend/src/assets/scss/template/_chat.scss create mode 100755 frontend/src/assets/scss/template/_contacts.scss create mode 100755 frontend/src/assets/scss/template/_dashboard-eight.scss create mode 100755 frontend/src/assets/scss/template/_dashboard-eleven.scss create mode 100755 frontend/src/assets/scss/template/_dashboard-five.scss create mode 100755 frontend/src/assets/scss/template/_dashboard-four.scss create mode 100755 frontend/src/assets/scss/template/_dashboard-nine.scss create mode 100755 frontend/src/assets/scss/template/_dashboard-one.scss create mode 100755 frontend/src/assets/scss/template/_dashboard-seven.scss create mode 100755 frontend/src/assets/scss/template/_dashboard-six.scss create mode 100755 frontend/src/assets/scss/template/_dashboard-ten.scss create mode 100755 frontend/src/assets/scss/template/_dashboard-three.scss create mode 100755 frontend/src/assets/scss/template/_dashboard-two.scss create mode 100755 frontend/src/assets/scss/template/_demo.scss create mode 100755 frontend/src/assets/scss/template/_error.scss create mode 100755 frontend/src/assets/scss/template/_invoice.scss create mode 100755 frontend/src/assets/scss/template/_mail-two.scss create mode 100755 frontend/src/assets/scss/template/_mail.scss create mode 100755 frontend/src/assets/scss/template/_profile.scss create mode 100755 frontend/src/assets/scss/template/_signin.scss create mode 100755 frontend/src/assets/scss/template/_signup.scss create mode 100755 frontend/src/assets/scss/util/_background.scss create mode 100755 frontend/src/assets/scss/util/_border.scss create mode 100755 frontend/src/assets/scss/util/_height.scss create mode 100755 frontend/src/assets/scss/util/_margin.scss create mode 100755 frontend/src/assets/scss/util/_misc.scss create mode 100755 frontend/src/assets/scss/util/_padding.scss create mode 100755 frontend/src/assets/scss/util/_position.scss create mode 100755 frontend/src/assets/scss/util/_typography.scss create mode 100755 frontend/src/assets/scss/util/_width.scss create mode 100644 frontend/src/assets/sources/aetna.png create mode 100644 frontend/src/assets/sources/anthem.png create mode 100644 frontend/src/assets/sources/cigna.png create mode 100644 frontend/src/assets/sources/humana.png create mode 100644 frontend/src/assets/sources/kaiser.png create mode 100644 frontend/src/assets/sources/unitedhealthcare.png diff --git a/frontend/angular.json b/frontend/angular.json index 1c089039..cdf012ba 100644 --- a/frontend/angular.json +++ b/frontend/angular.json @@ -30,8 +30,6 @@ ], "styles": [ "src/styles.scss", - "src/assets/scss/black-dashboard.scss", - "src/assets/css/nucleo-icons.css" ], "scripts": [ "node_modules/@panva/oauth4webapi/build/index.js" diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 757ce356..2da42bec 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -9,17 +9,21 @@ "version": "0.0.0", "dependencies": { "@angular/animations": "^14.1.3", + "@angular/cdk": "^14.1.3", "@angular/common": "^14.1.3", "@angular/compiler": "^14.1.3", "@angular/core": "^14.1.3", "@angular/forms": "^14.1.3", + "@angular/localize": "^14.1.3", "@angular/platform-browser": "^14.1.3", "@angular/platform-browser-dynamic": "^14.1.3", "@angular/router": "^14.1.3", "@ng-bootstrap/ng-bootstrap": "10.0.0", "@panva/oauth4webapi": "^1.1.3", + "bootstrap": "^4.4.1", "chart.js": "2.9.4", "fhirclient": "^2.5.1", + "ng2-charts": "^2.3.0", "rxjs": "~6.5.4", "tslib": "^2.0.0", "zone.js": "~0.11.8" @@ -50,7 +54,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.1.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -451,6 +454,28 @@ "@angular/core": "14.1.3" } }, + "node_modules/@angular/cdk": { + "version": "14.2.1", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.2.1.tgz", + "integrity": "sha512-saLFOZeyYQ6ELvPYqePsC8yXzDYjrCXGKGLtwAG/1mUlXcVTC0V1c3SabU4JR7Z+Zo1tOmzkWxuUkrw7uvaJHA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "optionalDependencies": { + "parse5": "^5.0.0" + }, + "peerDependencies": { + "@angular/common": "^14.0.0 || ^15.0.0", + "@angular/core": "^14.0.0 || ^15.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/cdk/node_modules/parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "optional": true + }, "node_modules/@angular/cli": { "version": "14.1.3", "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.1.3.tgz", @@ -670,6 +695,153 @@ "node": "^14.15.0 || >=16.10.0" } }, + "node_modules/@angular/localize": { + "version": "14.2.1", + "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-14.2.1.tgz", + "integrity": "sha512-ZCFbOSPS99V2k66YTwcZnlYcqoektowdDEjZwVxEB21OmQ7azRoiSKO9QYNvlwnm1LKpBocz3cs1KEc3Tw+wMw==", + "dependencies": { + "@babel/core": "7.18.9", + "glob": "8.0.3", + "yargs": "^17.2.1" + }, + "bin": { + "localize-extract": "tools/bundles/src/extract/cli.js", + "localize-migrate": "tools/bundles/src/migrate/cli.js", + "localize-translate": "tools/bundles/src/translate/cli.js" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/compiler": "14.2.1", + "@angular/compiler-cli": "14.2.1" + } + }, + "node_modules/@angular/localize/node_modules/@babel/core": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.9.tgz", + "integrity": "sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g==", + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.9", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.9", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@angular/localize/node_modules/@babel/generator": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.0.tgz", + "integrity": "sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==", + "dependencies": { + "@babel/types": "^7.19.0", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@angular/localize/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@angular/localize/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@angular/localize/node_modules/glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@angular/localize/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@angular/localize/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@angular/localize/node_modules/yargs": { + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular/localize/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" + } + }, "node_modules/@angular/platform-browser": { "version": "14.1.3", "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.1.3.tgz", @@ -735,7 +907,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, "dependencies": { "@babel/highlight": "^7.18.6" }, @@ -747,7 +918,6 @@ "version": "7.18.13", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.13.tgz", "integrity": "sha512-5yUzC5LqyTFp2HLmDoxGQelcdYgSpP9xsnMWBphAscOdFrHSAVbLNzWiy32sVNDqJRDiJK6klfDnAgu6PAGSHw==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -848,7 +1018,6 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", - "dev": true, "dependencies": { "@babel/compat-data": "^7.18.8", "@babel/helper-validator-option": "^7.18.6", @@ -866,7 +1035,6 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, "bin": { "semver": "bin/semver.js" } @@ -938,7 +1106,6 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -959,7 +1126,6 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", - "dev": true, "dependencies": { "@babel/template": "^7.18.6", "@babel/types": "^7.18.9" @@ -972,7 +1138,6 @@ "version": "7.18.10", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.18.6", "@babel/parser": "^7.18.10", @@ -986,7 +1151,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "dev": true, "dependencies": { "@babel/types": "^7.18.6" }, @@ -1010,7 +1174,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, "dependencies": { "@babel/types": "^7.18.6" }, @@ -1022,7 +1185,6 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", - "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-module-imports": "^7.18.6", @@ -1041,7 +1203,6 @@ "version": "7.18.10", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.18.6", "@babel/parser": "^7.18.10", @@ -1110,7 +1271,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", - "dev": true, "dependencies": { "@babel/types": "^7.18.6" }, @@ -1134,7 +1294,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "dev": true, "dependencies": { "@babel/types": "^7.18.6" }, @@ -1146,7 +1305,6 @@ "version": "7.18.10", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -1155,7 +1313,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -1164,7 +1321,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -1202,7 +1358,6 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz", "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==", - "dev": true, "dependencies": { "@babel/template": "^7.18.6", "@babel/traverse": "^7.18.9", @@ -1216,7 +1371,6 @@ "version": "7.18.10", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.18.6", "@babel/parser": "^7.18.10", @@ -1230,7 +1384,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", @@ -1244,7 +1397,6 @@ "version": "7.18.13", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.13.tgz", "integrity": "sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg==", - "dev": true, "bin": { "parser": "bin/babel-parser.js" }, @@ -2392,7 +2544,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.18.6", "@babel/parser": "^7.18.6", @@ -2406,7 +2557,6 @@ "version": "7.18.13", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.13.tgz", "integrity": "sha512-N6kt9X1jRMLPxxxPYWi7tgvJRH/rtoU+dbKAPDM44RFHiMH8igdsaSBgFeskhSl/kLWLDUvIh1RXCrTmg0/zvA==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.18.6", "@babel/generator": "^7.18.13", @@ -2427,7 +2577,6 @@ "version": "7.18.13", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.13.tgz", "integrity": "sha512-CkPg8ySSPuHTYPJYo7IRALdqyjM9HCbt/3uOBEFbzyGVP6Mn8bwFPB0jX6982JVNBlYzM1nnPkfjuXSOPtQeEQ==", - "dev": true, "dependencies": { "@babel/types": "^7.18.13", "@jridgewell/gen-mapping": "^0.3.2", @@ -2441,7 +2590,6 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -2452,10 +2600,9 @@ } }, "node_modules/@babel/types": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.13.tgz", - "integrity": "sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ==", - "dev": true, + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.0.tgz", + "integrity": "sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==", "dependencies": { "@babel/helper-string-parser": "^7.18.10", "@babel/helper-validator-identifier": "^7.18.6", @@ -2761,7 +2908,6 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, "dependencies": { "@jridgewell/set-array": "^1.0.0", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -2774,7 +2920,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -2783,7 +2928,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -2815,14 +2959,12 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.14", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.15", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", - "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -3150,6 +3292,14 @@ "@types/node": "*" } }, + "node_modules/@types/chart.js": { + "version": "2.9.37", + "resolved": "https://registry.npmjs.org/@types/chart.js/-/chart.js-2.9.37.tgz", + "integrity": "sha512-9bosRfHhkXxKYfrw94EmyDQcdjMaQPkU1fH2tDxu8DWXxf1mjzWQAV4laJF51ZbC2ycYwNDvIm1rGez8Bug0vg==", + "dependencies": { + "moment": "^2.10.2" + } + }, "node_modules/@types/component-emitter": { "version": "1.2.11", "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.11.tgz", @@ -3775,7 +3925,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "engines": { "node": ">=8" } @@ -3784,7 +3933,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -4153,8 +4301,7 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/base-64": { "version": "0.1.0", @@ -4320,6 +4467,25 @@ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, + "node_modules/bootstrap": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz", + "integrity": "sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "peerDependencies": { + "jquery": "1.9.1 - 3", + "popper.js": "^1.16.1" + } + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -4346,7 +4512,6 @@ "version": "4.21.3", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", - "dev": true, "funding": [ { "type": "opencollective", @@ -4561,7 +4726,6 @@ "version": "1.0.30001383", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001383.tgz", "integrity": "sha512-swMpEoTp5vDoGBZsYZX7L7nXHe6dsHxi9o6/LKf/f0LukVtnrxly5GVb/fWdCDTqi/yw6Km6tiJ0pmBacm0gbg==", - "dev": true, "funding": [ { "type": "opencollective", @@ -4583,7 +4747,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -4716,7 +4879,6 @@ "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -5000,7 +5162,6 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, "dependencies": { "safe-buffer": "~5.1.1" } @@ -5842,14 +6003,12 @@ "node_modules/electron-to-chromium": { "version": "1.4.230", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.230.tgz", - "integrity": "sha512-3pwjAK0qHSDN9+YAF4fJknsSruP7mpjdWzUSruIJD/JCH77pEh0SorEyb3xVaKkfwk2tzjOt2D8scJ0KAdfXLA==", - "dev": true + "integrity": "sha512-3pwjAK0qHSDN9+YAF4fJknsSruP7mpjdWzUSruIJD/JCH77pEh0SorEyb3xVaKkfwk2tzjOt2D8scJ0KAdfXLA==" }, "node_modules/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 + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/emojis-list": { "version": "3.0.0", @@ -6380,7 +6539,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, "engines": { "node": ">=6" } @@ -6395,7 +6553,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, "engines": { "node": ">=0.8.0" } @@ -7137,8 +7294,7 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/fsevents": { "version": "2.3.2", @@ -7183,7 +7339,6 @@ "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -7192,7 +7347,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -7283,7 +7437,6 @@ "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, "engines": { "node": ">=4" } @@ -7379,7 +7532,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, "engines": { "node": ">=4" } @@ -7802,7 +7954,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -7811,8 +7962,7 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/ini": { "version": "1.3.6", @@ -8010,7 +8160,6 @@ "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, "engines": { "node": ">=8" } @@ -8463,8 +8612,7 @@ "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "devOptional": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { "version": "3.14.1", @@ -8489,7 +8637,6 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, "bin": { "jsesc": "bin/jsesc" }, @@ -8525,7 +8672,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "dev": true, "bin": { "json5": "lib/cli.js" }, @@ -8920,6 +9066,11 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -9581,6 +9732,22 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, + "node_modules/ng2-charts": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/ng2-charts/-/ng2-charts-2.4.3.tgz", + "integrity": "sha512-tPrhHSS2DfVyipXQ0gykOPc8zFNnj2b7sAebUVty392vHnEGYCwsP6YbFfpr1iXu4yBSRm4Gt5lffR5w0uyYSw==", + "dependencies": { + "@types/chart.js": "^2.9.24", + "lodash-es": "^4.17.15", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/common": ">=7.2.0", + "@angular/core": ">=7.2.0", + "chart.js": "^2.9.3", + "rxjs": "^6.3.3" + } + }, "node_modules/nice-napi": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", @@ -9685,8 +9852,7 @@ "node_modules/node-releases": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "dev": true + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" }, "node_modules/nopt": { "version": "5.0.0", @@ -10002,7 +10168,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "dependencies": { "wrappy": "1" } @@ -10427,8 +10592,7 @@ "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "node_modules/picomatch": { "version": "2.3.1", @@ -11897,7 +12061,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -12092,8 +12255,7 @@ "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/safer-buffer": { "version": "2.1.2", @@ -12877,7 +13039,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -12891,7 +13052,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -12953,7 +13113,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -13138,7 +13297,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, "engines": { "node": ">=4" } @@ -13443,7 +13601,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", - "dev": true, "funding": [ { "type": "opencollective", @@ -14107,7 +14264,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -14124,7 +14280,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -14139,7 +14294,6 @@ "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, "dependencies": { "color-name": "~1.1.4" }, @@ -14150,14 +14304,12 @@ "node_modules/wrap-ansi/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/ws": { "version": "8.2.3", @@ -14206,7 +14358,6 @@ "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, "engines": { "node": ">=10" } @@ -14288,7 +14439,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, "requires": { "@jridgewell/gen-mapping": "^0.1.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -14583,6 +14733,23 @@ "tslib": "^2.3.0" } }, + "@angular/cdk": { + "version": "14.2.1", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.2.1.tgz", + "integrity": "sha512-saLFOZeyYQ6ELvPYqePsC8yXzDYjrCXGKGLtwAG/1mUlXcVTC0V1c3SabU4JR7Z+Zo1tOmzkWxuUkrw7uvaJHA==", + "requires": { + "parse5": "^5.0.0", + "tslib": "^2.3.0" + }, + "dependencies": { + "parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "optional": true + } + } + }, "@angular/cli": { "version": "14.1.3", "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.1.3.tgz", @@ -14728,6 +14895,112 @@ "integrity": "sha512-7XEvRFzApFr6TtyCysGrleerClcU9ldCGoZsDL5SOUEL+3IEPC5L3uJYExLon30pu9jne9Sxq0w8u4cv/rYIeA==", "dev": true }, + "@angular/localize": { + "version": "14.2.1", + "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-14.2.1.tgz", + "integrity": "sha512-ZCFbOSPS99V2k66YTwcZnlYcqoektowdDEjZwVxEB21OmQ7azRoiSKO9QYNvlwnm1LKpBocz3cs1KEc3Tw+wMw==", + "requires": { + "@babel/core": "7.18.9", + "glob": "8.0.3", + "yargs": "^17.2.1" + }, + "dependencies": { + "@babel/core": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.9.tgz", + "integrity": "sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g==", + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.9", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.9", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + } + }, + "@babel/generator": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.0.tgz", + "integrity": "sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==", + "requires": { + "@babel/types": "^7.19.0", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "yargs": { + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" + } + } + }, "@angular/platform-browser": { "version": "14.1.3", "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.1.3.tgz", @@ -14762,7 +15035,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, "requires": { "@babel/highlight": "^7.18.6" } @@ -14770,8 +15042,7 @@ "@babel/compat-data": { "version": "7.18.13", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.13.tgz", - "integrity": "sha512-5yUzC5LqyTFp2HLmDoxGQelcdYgSpP9xsnMWBphAscOdFrHSAVbLNzWiy32sVNDqJRDiJK6klfDnAgu6PAGSHw==", - "dev": true + "integrity": "sha512-5yUzC5LqyTFp2HLmDoxGQelcdYgSpP9xsnMWBphAscOdFrHSAVbLNzWiy32sVNDqJRDiJK6klfDnAgu6PAGSHw==" }, "@babel/core": { "version": "7.18.6", @@ -14851,7 +15122,6 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", - "dev": true, "requires": { "@babel/compat-data": "^7.18.8", "@babel/helper-validator-option": "^7.18.6", @@ -14862,8 +15132,7 @@ "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" } } }, @@ -14917,8 +15186,7 @@ "@babel/helper-environment-visitor": { "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" }, "@babel/helper-explode-assignable-expression": { "version": "7.18.6", @@ -14933,7 +15201,6 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", - "dev": true, "requires": { "@babel/template": "^7.18.6", "@babel/types": "^7.18.9" @@ -14943,7 +15210,6 @@ "version": "7.18.10", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", - "dev": true, "requires": { "@babel/code-frame": "^7.18.6", "@babel/parser": "^7.18.10", @@ -14956,7 +15222,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "dev": true, "requires": { "@babel/types": "^7.18.6" } @@ -14974,7 +15239,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, "requires": { "@babel/types": "^7.18.6" } @@ -14983,7 +15247,6 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", - "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-module-imports": "^7.18.6", @@ -14999,7 +15262,6 @@ "version": "7.18.10", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", - "dev": true, "requires": { "@babel/code-frame": "^7.18.6", "@babel/parser": "^7.18.10", @@ -15052,7 +15314,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", - "dev": true, "requires": { "@babel/types": "^7.18.6" } @@ -15070,7 +15331,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "dev": true, "requires": { "@babel/types": "^7.18.6" } @@ -15078,20 +15338,17 @@ "@babel/helper-string-parser": { "version": "7.18.10", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", - "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", - "dev": true + "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==" }, "@babel/helper-validator-identifier": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", - "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", - "dev": true + "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==" }, "@babel/helper-validator-option": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "dev": true + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==" }, "@babel/helper-wrap-function": { "version": "7.18.11", @@ -15122,7 +15379,6 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz", "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==", - "dev": true, "requires": { "@babel/template": "^7.18.6", "@babel/traverse": "^7.18.9", @@ -15133,7 +15389,6 @@ "version": "7.18.10", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", - "dev": true, "requires": { "@babel/code-frame": "^7.18.6", "@babel/parser": "^7.18.10", @@ -15146,7 +15401,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", @@ -15156,8 +15410,7 @@ "@babel/parser": { "version": "7.18.13", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.13.tgz", - "integrity": "sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg==", - "dev": true + "integrity": "sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg==" }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.18.6", @@ -15928,7 +16181,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", - "dev": true, "requires": { "@babel/code-frame": "^7.18.6", "@babel/parser": "^7.18.6", @@ -15939,7 +16191,6 @@ "version": "7.18.13", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.13.tgz", "integrity": "sha512-N6kt9X1jRMLPxxxPYWi7tgvJRH/rtoU+dbKAPDM44RFHiMH8igdsaSBgFeskhSl/kLWLDUvIh1RXCrTmg0/zvA==", - "dev": true, "requires": { "@babel/code-frame": "^7.18.6", "@babel/generator": "^7.18.13", @@ -15957,7 +16208,6 @@ "version": "7.18.13", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.13.tgz", "integrity": "sha512-CkPg8ySSPuHTYPJYo7IRALdqyjM9HCbt/3uOBEFbzyGVP6Mn8bwFPB0jX6982JVNBlYzM1nnPkfjuXSOPtQeEQ==", - "dev": true, "requires": { "@babel/types": "^7.18.13", "@jridgewell/gen-mapping": "^0.3.2", @@ -15968,7 +16218,6 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, "requires": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -15978,10 +16227,9 @@ } }, "@babel/types": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.13.tgz", - "integrity": "sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ==", - "dev": true, + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.0.tgz", + "integrity": "sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==", "requires": { "@babel/helper-string-parser": "^7.18.10", "@babel/helper-validator-identifier": "^7.18.6", @@ -16145,7 +16393,6 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, "requires": { "@jridgewell/set-array": "^1.0.0", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -16154,14 +16401,12 @@ "@jridgewell/resolve-uri": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" }, "@jridgewell/set-array": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" }, "@jridgewell/source-map": { "version": "0.3.2", @@ -16189,14 +16434,12 @@ "@jridgewell/sourcemap-codec": { "version": "1.4.14", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" }, "@jridgewell/trace-mapping": { "version": "0.3.15", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", - "dev": true, "requires": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -16436,6 +16679,14 @@ "@types/node": "*" } }, + "@types/chart.js": { + "version": "2.9.37", + "resolved": "https://registry.npmjs.org/@types/chart.js/-/chart.js-2.9.37.tgz", + "integrity": "sha512-9bosRfHhkXxKYfrw94EmyDQcdjMaQPkU1fH2tDxu8DWXxf1mjzWQAV4laJF51ZbC2ycYwNDvIm1rGez8Bug0vg==", + "requires": { + "moment": "^2.10.2" + } + }, "@types/component-emitter": { "version": "1.2.11", "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.11.tgz", @@ -16997,14 +17248,12 @@ "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -17298,8 +17547,7 @@ "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "base-64": { "version": "0.1.0", @@ -17433,6 +17681,11 @@ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, + "bootstrap": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz", + "integrity": "sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==" + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -17456,7 +17709,6 @@ "version": "4.21.3", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", - "dev": true, "requires": { "caniuse-lite": "^1.0.30001370", "electron-to-chromium": "^1.4.202", @@ -17606,8 +17858,7 @@ "caniuse-lite": { "version": "1.0.30001383", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001383.tgz", - "integrity": "sha512-swMpEoTp5vDoGBZsYZX7L7nXHe6dsHxi9o6/LKf/f0LukVtnrxly5GVb/fWdCDTqi/yw6Km6tiJ0pmBacm0gbg==", - "dev": true + "integrity": "sha512-swMpEoTp5vDoGBZsYZX7L7nXHe6dsHxi9o6/LKf/f0LukVtnrxly5GVb/fWdCDTqi/yw6Km6tiJ0pmBacm0gbg==" }, "caseless": { "version": "0.12.0", @@ -17619,7 +17870,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -17717,7 +17967,6 @@ "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -17951,7 +18200,6 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, "requires": { "safe-buffer": "~5.1.1" } @@ -18580,14 +18828,12 @@ "electron-to-chromium": { "version": "1.4.230", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.230.tgz", - "integrity": "sha512-3pwjAK0qHSDN9+YAF4fJknsSruP7mpjdWzUSruIJD/JCH77pEh0SorEyb3xVaKkfwk2tzjOt2D8scJ0KAdfXLA==", - "dev": true + "integrity": "sha512-3pwjAK0qHSDN9+YAF4fJknsSruP7mpjdWzUSruIJD/JCH77pEh0SorEyb3xVaKkfwk2tzjOt2D8scJ0KAdfXLA==" }, "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 + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "emojis-list": { "version": "3.0.0", @@ -18899,8 +19145,7 @@ "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" }, "escape-html": { "version": "1.0.3", @@ -18911,8 +19156,7 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" }, "eslint-scope": { "version": "5.1.1", @@ -19463,8 +19707,7 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "fsevents": { "version": "2.3.2", @@ -19498,14 +19741,12 @@ "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, "get-intrinsic": { "version": "1.1.2", @@ -19571,8 +19812,7 @@ "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, "globby": { "version": "13.1.2", @@ -19644,8 +19884,7 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" }, "has-property-descriptors": { "version": "1.0.0", @@ -19973,7 +20212,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -19982,8 +20220,7 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { "version": "1.3.6", @@ -20134,8 +20371,7 @@ "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 + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "is-glob": { "version": "4.0.3", @@ -20482,8 +20718,7 @@ "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "devOptional": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "js-yaml": { "version": "3.14.1", @@ -20504,8 +20739,7 @@ "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" }, "json-parse-even-better-errors": { "version": "2.3.1", @@ -20534,8 +20768,7 @@ "json5": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "dev": true + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" }, "jsonc-parser": { "version": "3.1.0", @@ -20832,6 +21065,11 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -21338,6 +21576,16 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, + "ng2-charts": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/ng2-charts/-/ng2-charts-2.4.3.tgz", + "integrity": "sha512-tPrhHSS2DfVyipXQ0gykOPc8zFNnj2b7sAebUVty392vHnEGYCwsP6YbFfpr1iXu4yBSRm4Gt5lffR5w0uyYSw==", + "requires": { + "@types/chart.js": "^2.9.24", + "lodash-es": "^4.17.15", + "tslib": "^2.0.0" + } + }, "nice-napi": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", @@ -21409,8 +21657,7 @@ "node-releases": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "dev": true + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" }, "nopt": { "version": "5.0.0", @@ -21650,7 +21897,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "requires": { "wrappy": "1" } @@ -21972,8 +22218,7 @@ "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "picomatch": { "version": "2.3.1", @@ -22972,8 +23217,7 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" }, "require-from-string": { "version": "2.0.2", @@ -23112,8 +23356,7 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "safer-buffer": { "version": "2.1.2", @@ -23741,7 +23984,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -23752,7 +23994,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "requires": { "ansi-regex": "^5.0.1" } @@ -23791,7 +24032,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -23915,8 +24155,7 @@ "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" }, "to-regex-range": { "version": "5.0.1", @@ -24135,7 +24374,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", - "dev": true, "requires": { "escalade": "^3.1.1", "picocolors": "^1.0.0" @@ -24622,7 +24860,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -24633,7 +24870,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -24642,7 +24878,6 @@ "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" } @@ -24650,16 +24885,14 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" } } }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "ws": { "version": "8.2.3", @@ -24686,8 +24919,7 @@ "y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" }, "yallist": { "version": "4.0.0", diff --git a/frontend/package.json b/frontend/package.json index c808f409..c50c1a7d 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -13,20 +13,25 @@ "private": true, "dependencies": { "@angular/animations": "^14.1.3", + "@angular/cdk": "^14.1.3", "@angular/common": "^14.1.3", "@angular/compiler": "^14.1.3", "@angular/core": "^14.1.3", "@angular/forms": "^14.1.3", + "@angular/localize": "^14.1.3", "@angular/platform-browser": "^14.1.3", "@angular/platform-browser-dynamic": "^14.1.3", "@angular/router": "^14.1.3", "@panva/oauth4webapi": "^1.1.3", "@ng-bootstrap/ng-bootstrap": "10.0.0", "fhirclient": "^2.5.1", + "bootstrap": "^4.4.1", + "chart.js": "2.9.4", "rxjs": "~6.5.4", "tslib": "^2.0.0", - "zone.js": "~0.11.8" + "zone.js": "~0.11.8", + "ng2-charts": "^2.3.0" }, "devDependencies": { "@angular-devkit/build-angular": "^14.1.3", diff --git a/frontend/src/app/app-routing.module.ts b/frontend/src/app/app-routing.module.ts index dd779517..3e0c8a96 100644 --- a/frontend/src/app/app-routing.module.ts +++ b/frontend/src/app/app-routing.module.ts @@ -2,38 +2,26 @@ import { NgModule } from "@angular/core"; import { CommonModule } from "@angular/common"; import { BrowserModule } from "@angular/platform-browser"; import { Routes, RouterModule } from "@angular/router"; - -import { AdminLayoutComponent } from "./layouts/admin-layout/admin-layout.component"; +import { DashboardComponent } from './pages/dashboard/dashboard.component'; +import { MedicalSourcesComponent } from './pages/medical-sources/medical-sources.component'; const routes: Routes = [ - { - path: "", - redirectTo: "dashboard", - pathMatch: "full" - }, - { - path: "", - component: AdminLayoutComponent, - children: [ - { - path: "", - loadChildren: () => import ("./layouts/admin-layout/admin-layout.module").then(m => m.AdminLayoutModule) - } - ] - }, - { - path: "**", - redirectTo: "dashboard" - } + { path: '', redirectTo: '/dashboard', pathMatch: 'full' }, + { path: 'dashboard', component: DashboardComponent }, + { path: 'sources', component: MedicalSourcesComponent }, + // { path: 'general-pages', loadChildren: () => import('./general-pages/general-pages.module').then(m => m.GeneralPagesModule) }, + // { path: 'ui-elements', loadChildren: () => import('./ui-elements/ui-elements.module').then(m => m.UiElementsModule) }, + // { path: 'form', loadChildren: () => import('./form/form.module').then(m => m.FormModule) }, + // { path: 'charts', loadChildren: () => import('./charts/charts.module').then(m => m.ChartsDemoModule) }, + // { path: 'tables', loadChildren: () => import('./tables/tables.module').then(m => m.TablesModule) }, + { path: '**', redirectTo: 'dashboard' }, ]; @NgModule({ imports: [ + RouterModule.forRoot(routes), CommonModule, BrowserModule, - RouterModule.forRoot(routes, { - useHash: true - }) ], exports: [RouterModule] }) diff --git a/frontend/src/app/app.component.html b/frontend/src/app/app.component.html index 0680b43f..a1d78821 100644 --- a/frontend/src/app/app.component.html +++ b/frontend/src/app/app.component.html @@ -1 +1,7 @@ - +
+ +
+ +
+ +
diff --git a/frontend/src/app/app.component.ts b/frontend/src/app/app.component.ts index 957feeb1..b9caa3f3 100644 --- a/frontend/src/app/app.component.ts +++ b/frontend/src/app/app.component.ts @@ -1,12 +1,24 @@ -import { Component } from '@angular/core'; +import { Component, OnInit } from '@angular/core'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.scss'] }) -export class AppComponent { +export class AppComponent implements OnInit { title = 'fastenhealth'; + + public layoutOption: string; + showHeader:boolean = true; + showFooter:boolean = true; + + ngOnInit() { + + // navbar backdrop for mobile only + const navbarBackdrop = document.createElement('div'); + navbarBackdrop.classList.add('az-navbar-backdrop'); + document.querySelector('body').appendChild(navbarBackdrop); + } } diff --git a/frontend/src/app/app.module.ts b/frontend/src/app/app.module.ts index 4c2b55cf..7cd3e98d 100644 --- a/frontend/src/app/app.module.ts +++ b/frontend/src/app/app.module.ts @@ -4,22 +4,29 @@ import { NgModule } from '@angular/core'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; import { HttpClientModule } from '@angular/common/http'; -import { AdminLayoutComponent } from "./layouts/admin-layout/admin-layout.component"; import { NgbModule } from "@ng-bootstrap/ng-bootstrap"; -import { ComponentsModule } from "./components/components.module"; - +import { HeaderComponent } from './components/header/header.component'; +import { FooterComponent } from './components/footer/footer.component'; +import { DashboardComponent } from './pages/dashboard/dashboard.component'; +import { MedicalSourcesComponent } from './pages/medical-sources/medical-sources.component'; +import { ChartsModule } from 'ng2-charts'; +import {SharedModule} from './components/shared.module'; @NgModule({ declarations: [ AppComponent, - AdminLayoutComponent, + HeaderComponent, + FooterComponent, + DashboardComponent, + MedicalSourcesComponent, ], imports: [ BrowserModule, + SharedModule, AppRoutingModule, HttpClientModule, NgbModule, - ComponentsModule + ChartsModule ], providers: [], bootstrap: [AppComponent] diff --git a/frontend/src/app/components/components-sidebar/components-sidebar.component.html b/frontend/src/app/components/components-sidebar/components-sidebar.component.html new file mode 100644 index 00000000..1287cc4e --- /dev/null +++ b/frontend/src/app/components/components-sidebar/components-sidebar.component.html @@ -0,0 +1,26 @@ +
+
+ + + + + + + + + + + +
+ +
\ No newline at end of file diff --git a/frontend/src/app/components/footer/footer.component.css b/frontend/src/app/components/components-sidebar/components-sidebar.component.scss similarity index 100% rename from frontend/src/app/components/footer/footer.component.css rename to frontend/src/app/components/components-sidebar/components-sidebar.component.scss diff --git a/frontend/src/app/components/components-sidebar/components-sidebar.component.spec.ts b/frontend/src/app/components/components-sidebar/components-sidebar.component.spec.ts new file mode 100644 index 00000000..45c6862d --- /dev/null +++ b/frontend/src/app/components/components-sidebar/components-sidebar.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ComponentsSidebarComponent } from './components-sidebar.component'; + +describe('ComponentsSidebarComponent', () => { + let component: ComponentsSidebarComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ComponentsSidebarComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ComponentsSidebarComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/frontend/src/app/components/components-sidebar/components-sidebar.component.ts b/frontend/src/app/components/components-sidebar/components-sidebar.component.ts new file mode 100644 index 00000000..95d79eeb --- /dev/null +++ b/frontend/src/app/components/components-sidebar/components-sidebar.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-components-sidebar', + templateUrl: './components-sidebar.component.html', + styleUrls: ['./components-sidebar.component.scss'] +}) +export class ComponentsSidebarComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/frontend/src/app/components/components.module.ts b/frontend/src/app/components/components.module.ts deleted file mode 100644 index da676e10..00000000 --- a/frontend/src/app/components/components.module.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { NgModule } from "@angular/core"; -import { CommonModule } from "@angular/common"; -import { RouterModule } from "@angular/router"; -import { NgbModule } from "@ng-bootstrap/ng-bootstrap"; - -import { FooterComponent } from "./footer/footer.component"; -import { NavbarComponent } from "./navbar/navbar.component"; -import { SidebarComponent } from "./sidebar/sidebar.component"; - -@NgModule({ - imports: [CommonModule, RouterModule, NgbModule], - declarations: [FooterComponent, NavbarComponent, SidebarComponent], - exports: [FooterComponent, NavbarComponent, SidebarComponent] -}) -export class ComponentsModule {} diff --git a/frontend/src/app/components/footer/footer.component.html b/frontend/src/app/components/footer/footer.component.html index 14ba7a17..40293519 100644 --- a/frontend/src/app/components/footer/footer.component.html +++ b/frontend/src/app/components/footer/footer.component.html @@ -1,25 +1,8 @@ - + + \ No newline at end of file diff --git a/frontend/src/app/components/navbar/navbar.component.css b/frontend/src/app/components/footer/footer.component.scss similarity index 100% rename from frontend/src/app/components/navbar/navbar.component.css rename to frontend/src/app/components/footer/footer.component.scss diff --git a/frontend/src/app/components/footer/footer.component.spec.ts b/frontend/src/app/components/footer/footer.component.spec.ts index a9e34885..2ca6c454 100644 --- a/frontend/src/app/components/footer/footer.component.spec.ts +++ b/frontend/src/app/components/footer/footer.component.spec.ts @@ -1,15 +1,16 @@ -import { async, ComponentFixture, TestBed } from "@angular/core/testing"; +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { FooterComponent } from "./footer.component"; +import { FooterComponent } from './footer.component'; -describe("FooterComponent", () => { +describe('FooterComponent', () => { let component: FooterComponent; let fixture: ComponentFixture; beforeEach(async(() => { TestBed.configureTestingModule({ - declarations: [FooterComponent] - }).compileComponents(); + declarations: [ FooterComponent ] + }) + .compileComponents(); })); beforeEach(() => { @@ -18,7 +19,7 @@ describe("FooterComponent", () => { fixture.detectChanges(); }); - it("should create", () => { + it('should create', () => { expect(component).toBeTruthy(); }); }); diff --git a/frontend/src/app/components/footer/footer.component.ts b/frontend/src/app/components/footer/footer.component.ts index c19f5477..da17d824 100644 --- a/frontend/src/app/components/footer/footer.component.ts +++ b/frontend/src/app/components/footer/footer.component.ts @@ -1,14 +1,15 @@ -import { Component, OnInit } from "@angular/core"; +import { Component, OnInit } from '@angular/core'; @Component({ - selector: "app-footer", - templateUrl: "./footer.component.html", - styleUrls: ["./footer.component.css"] + selector: 'app-footer', + templateUrl: './footer.component.html', + styleUrls: ['./footer.component.scss'] }) export class FooterComponent implements OnInit { - test: Date = new Date(); - constructor() {} + constructor() { } + + ngOnInit() { + } - ngOnInit() {} } diff --git a/frontend/src/app/components/header/header.component.html b/frontend/src/app/components/header/header.component.html new file mode 100644 index 00000000..4c29aca3 --- /dev/null +++ b/frontend/src/app/components/header/header.component.html @@ -0,0 +1,90 @@ +
+
+
+ + +
+
+
+ + × +
+ +
+
+ +
+ +
+ + +
+
+
diff --git a/frontend/src/app/components/sidebar/sidebar.component.css b/frontend/src/app/components/header/header.component.scss similarity index 100% rename from frontend/src/app/components/sidebar/sidebar.component.css rename to frontend/src/app/components/header/header.component.scss diff --git a/frontend/src/app/components/header/header.component.spec.ts b/frontend/src/app/components/header/header.component.spec.ts new file mode 100644 index 00000000..2d0479d7 --- /dev/null +++ b/frontend/src/app/components/header/header.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { HeaderComponent } from './header.component'; + +describe('HeaderComponent', () => { + let component: HeaderComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ HeaderComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(HeaderComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/frontend/src/app/components/header/header.component.ts b/frontend/src/app/components/header/header.component.ts new file mode 100644 index 00000000..b531ca97 --- /dev/null +++ b/frontend/src/app/components/header/header.component.ts @@ -0,0 +1,25 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-header', + templateUrl: './header.component.html', + styleUrls: ['./header.component.scss'] +}) +export class HeaderComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + + closeMenu(e) { + e.target.closest('.dropdown').classList.remove('show'); + e.target.closest('.dropdown .dropdown-menu').classList.remove('show'); + } + + toggleHeaderMenu(event) { + event.preventDefault(); + document.querySelector('body').classList.toggle('az-header-menu-show'); + } + +} diff --git a/frontend/src/app/components/navbar/navbar.component.html b/frontend/src/app/components/navbar/navbar.component.html deleted file mode 100644 index 4776a0e4..00000000 --- a/frontend/src/app/components/navbar/navbar.component.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - diff --git a/frontend/src/app/components/navbar/navbar.component.spec.ts b/frontend/src/app/components/navbar/navbar.component.spec.ts deleted file mode 100644 index f9dedaf4..00000000 --- a/frontend/src/app/components/navbar/navbar.component.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { async, ComponentFixture, TestBed } from "@angular/core/testing"; - -import { NavbarComponent } from "./navbar.component"; - -describe("NavbarComponent", () => { - let component: NavbarComponent; - let fixture: ComponentFixture; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [NavbarComponent] - }).compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(NavbarComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it("should create", () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/frontend/src/app/components/navbar/navbar.component.ts b/frontend/src/app/components/navbar/navbar.component.ts deleted file mode 100644 index ea778fa5..00000000 --- a/frontend/src/app/components/navbar/navbar.component.ts +++ /dev/null @@ -1,196 +0,0 @@ -import { Component, OnInit, ElementRef, OnDestroy } from "@angular/core"; -import { ROUTES } from "../sidebar/sidebar.component"; -import { Location } from "@angular/common"; -import { Router } from "@angular/router"; -import { NgbModal, ModalDismissReasons } from '@ng-bootstrap/ng-bootstrap'; - -@Component({ - selector: "app-navbar", - templateUrl: "./navbar.component.html", - styleUrls: ["./navbar.component.css"] -}) -export class NavbarComponent implements OnInit, OnDestroy { - private listTitles: any[]; - location: Location; - mobile_menu_visible: any = 0; - private toggleButton: any; - private sidebarVisible: boolean; - - public isCollapsed = true; - - closeResult: string; - - constructor( - location: Location, - private element: ElementRef, - private router: Router, - private modalService: NgbModal - ) { - this.location = location; - this.sidebarVisible = false; - } - // function that adds color white/transparent to the navbar on resize (this is for the collapse) - updateColor = () => { - var navbar = document.getElementsByClassName('navbar')[0]; - if (window.innerWidth < 993 && !this.isCollapsed) { - navbar.classList.add('bg-white'); - navbar.classList.remove('navbar-transparent'); - } else { - navbar.classList.remove('bg-white'); - navbar.classList.add('navbar-transparent'); - } - }; - ngOnInit() { - window.addEventListener("resize", this.updateColor); - this.listTitles = ROUTES.filter(listTitle => listTitle); - const navbar: HTMLElement = this.element.nativeElement; - this.toggleButton = navbar.getElementsByClassName("navbar-toggler")[0]; - this.router.events.subscribe(event => { - this.sidebarClose(); - var $layer: any = document.getElementsByClassName("close-layer")[0]; - if ($layer) { - $layer.remove(); - this.mobile_menu_visible = 0; - } - }); - } - - collapse() { - this.isCollapsed = !this.isCollapsed; - const navbar = document.getElementsByTagName("nav")[0]; - if (!this.isCollapsed) { - navbar.classList.remove("navbar-transparent"); - navbar.classList.add("bg-white"); - } else { - navbar.classList.add("navbar-transparent"); - navbar.classList.remove("bg-white"); - } - } - - sidebarOpen() { - const toggleButton = this.toggleButton; - const mainPanel = ( - document.getElementsByClassName("main-panel")[0] - ); - const html = document.getElementsByTagName("html")[0]; - if (window.innerWidth < 991) { - mainPanel.style.position = "fixed"; - } - - setTimeout(function() { - toggleButton.classList.add("toggled"); - }, 500); - - html.classList.add("nav-open"); - - this.sidebarVisible = true; - } - sidebarClose() { - const html = document.getElementsByTagName("html")[0]; - this.toggleButton.classList.remove("toggled"); - const mainPanel = ( - document.getElementsByClassName("main-panel")[0] - ); - - if (window.innerWidth < 991) { - setTimeout(function() { - mainPanel.style.position = ""; - }, 500); - } - this.sidebarVisible = false; - html.classList.remove("nav-open"); - } - sidebarToggle() { - // const toggleButton = this.toggleButton; - // const html = document.getElementsByTagName('html')[0]; - var $toggle = document.getElementsByClassName("navbar-toggler")[0]; - - if (this.sidebarVisible === false) { - this.sidebarOpen(); - } else { - this.sidebarClose(); - } - const html = document.getElementsByTagName("html")[0]; - - if (this.mobile_menu_visible == 1) { - // $('html').removeClass('nav-open'); - html.classList.remove("nav-open"); - if ($layer) { - $layer.remove(); - } - setTimeout(function() { - $toggle.classList.remove("toggled"); - }, 400); - - this.mobile_menu_visible = 0; - } else { - setTimeout(function() { - $toggle.classList.add("toggled"); - }, 430); - - var $layer = document.createElement("div"); - $layer.setAttribute("class", "close-layer"); - - if (html.querySelectorAll(".main-panel")) { - document.getElementsByClassName("main-panel")[0].appendChild($layer); - } else if (html.classList.contains("off-canvas-sidebar")) { - document - .getElementsByClassName("wrapper-full-page")[0] - .appendChild($layer); - } - - setTimeout(function() { - $layer.classList.add("visible"); - }, 100); - - $layer.onclick = function() { - //asign a function - html.classList.remove("nav-open"); - this.mobile_menu_visible = 0; - $layer.classList.remove("visible"); - setTimeout(function() { - $layer.remove(); - $toggle.classList.remove("toggled"); - }, 400); - }.bind(this); - - html.classList.add("nav-open"); - this.mobile_menu_visible = 1; - } - } - - getTitle() { - var titlee = this.location.prepareExternalUrl(this.location.path()); - if (titlee.charAt(0) === "#") { - titlee = titlee.slice(1); - } - - for (var item = 0; item < this.listTitles.length; item++) { - if (this.listTitles[item].path === titlee) { - return this.listTitles[item].title; - } - } - return "Dashboard"; - } - - open(content) { - this.modalService.open(content, {windowClass: 'modal-search'}).result.then((result) => { - this.closeResult = `Closed with: ${result}`; - }, (reason) => { - this.closeResult = `Dismissed ${this.getDismissReason(reason)}`; - }); - } - - private getDismissReason(reason: any): string { - if (reason === ModalDismissReasons.ESC) { - return 'by pressing ESC'; - } else if (reason === ModalDismissReasons.BACKDROP_CLICK) { - return 'by clicking on a backdrop'; - } else { - return `with: ${reason}`; - } - } - ngOnDestroy(){ - window.removeEventListener("resize", this.updateColor); - } -} diff --git a/frontend/src/app/components/shared.module.ts b/frontend/src/app/components/shared.module.ts new file mode 100644 index 00000000..9557d7f5 --- /dev/null +++ b/frontend/src/app/components/shared.module.ts @@ -0,0 +1,20 @@ +import { NgModule } from '@angular/core'; +import { ComponentsSidebarComponent } from './components-sidebar/components-sidebar.component'; +import { RouterModule } from '@angular/router'; +import { UtilitiesSidebarComponent } from './utilities-sidebar/utilities-sidebar.component'; + +@NgModule({ + imports: [ + RouterModule + ], + declarations: [ + ComponentsSidebarComponent, + UtilitiesSidebarComponent + ], + exports: [ + ComponentsSidebarComponent, + UtilitiesSidebarComponent + ] +}) + +export class SharedModule { } \ No newline at end of file diff --git a/frontend/src/app/components/sidebar/sidebar.component.html b/frontend/src/app/components/sidebar/sidebar.component.html deleted file mode 100644 index e4a3466f..00000000 --- a/frontend/src/app/components/sidebar/sidebar.component.html +++ /dev/null @@ -1,24 +0,0 @@ - - diff --git a/frontend/src/app/components/sidebar/sidebar.component.spec.ts b/frontend/src/app/components/sidebar/sidebar.component.spec.ts deleted file mode 100644 index 9f2dfc67..00000000 --- a/frontend/src/app/components/sidebar/sidebar.component.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { async, ComponentFixture, TestBed } from "@angular/core/testing"; - -import { SidebarComponent } from "./sidebar.component"; - -describe("SidebarComponent", () => { - let component: SidebarComponent; - let fixture: ComponentFixture; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [SidebarComponent] - }).compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(SidebarComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it("should create", () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/frontend/src/app/components/sidebar/sidebar.component.ts b/frontend/src/app/components/sidebar/sidebar.component.ts deleted file mode 100644 index 3689e624..00000000 --- a/frontend/src/app/components/sidebar/sidebar.component.ts +++ /dev/null @@ -1,115 +0,0 @@ -import { Component, OnInit } from "@angular/core"; - -declare interface RouteInfo { - path: string; - title: string; - icon: string; - class: string; -} -export const ROUTES: RouteInfo[] = [ - { - path: "/dashboard", - title: "Dashboard", - icon: "icon-chart-pie-36", - class: "" - }, - { - path: "/providers", - title: "Medical Providers", - icon: "icon-cloud-download-93", - class: "" - }, - { - path: "/patient", - title: "Patient Profile", - icon: "icon-single-02", - class: "" - }, - { - path: "/allergies", - title: "Allergies", - icon: "icon-puzzle-10", - class: "" - }, - { - path: "/encounters", - title: "Encounters", - icon: "icon-align-center", - class: "" - }, - { - path: "/immunizations", - title: "Immunizations", - icon: "icon-align-center", - class: "" - }, - { - path: "/instructions", - title: "Instructions", - icon: "icon-align-center", - class: "" - }, - { - path: "/medications", - title: "Medications", - icon: "icon-align-center", - class: "" - }, - { - path: "/organizations", - title: "Organizations", - icon: "icon-align-center", - class: "" - }, - { - path: "/problems", - title: "Problems", - icon: "icon-align-center", - class: "" - }, - { - path: "/procedures", - title: "Procedures", - icon: "icon-align-center", - class: "" - }, - { - path: "/test_results", - title: "Test Results", - icon: "icon-align-center", - class: "" - }, - { - path: "/vitals", - title: "Vitals", - icon: "icon-align-center", - class: "" - }, - { - path: "/demographics", - title: "Demographics", - icon: "icon-align-center", - class: "" - } -]; - -@Component({ - selector: "app-sidebar", - templateUrl: "./sidebar.component.html", - styleUrls: ["./sidebar.component.css"] -}) -export class SidebarComponent implements OnInit { - menuItems: any[]; - - constructor() {} - - ngOnInit() { - this.menuItems = ROUTES.filter(menuItem => menuItem); - } - isMobileMenu() { - if (window.innerWidth > 991) { - return false; - } - return true; - } -} diff --git a/frontend/src/app/components/utilities-sidebar/utilities-sidebar.component.html b/frontend/src/app/components/utilities-sidebar/utilities-sidebar.component.html new file mode 100644 index 00000000..11e0b16b --- /dev/null +++ b/frontend/src/app/components/utilities-sidebar/utilities-sidebar.component.html @@ -0,0 +1,19 @@ +
+ + +
\ No newline at end of file diff --git a/frontend/src/app/layouts/admin-layout/admin-layout.component.scss b/frontend/src/app/components/utilities-sidebar/utilities-sidebar.component.scss similarity index 100% rename from frontend/src/app/layouts/admin-layout/admin-layout.component.scss rename to frontend/src/app/components/utilities-sidebar/utilities-sidebar.component.scss diff --git a/frontend/src/app/components/utilities-sidebar/utilities-sidebar.component.spec.ts b/frontend/src/app/components/utilities-sidebar/utilities-sidebar.component.spec.ts new file mode 100644 index 00000000..a0e5cd4d --- /dev/null +++ b/frontend/src/app/components/utilities-sidebar/utilities-sidebar.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { UtilitiesSidebarComponent } from './utilities-sidebar.component'; + +describe('UtilitiesSidebarComponent', () => { + let component: UtilitiesSidebarComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ UtilitiesSidebarComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(UtilitiesSidebarComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/frontend/src/app/components/utilities-sidebar/utilities-sidebar.component.ts b/frontend/src/app/components/utilities-sidebar/utilities-sidebar.component.ts new file mode 100644 index 00000000..1fcbd0b7 --- /dev/null +++ b/frontend/src/app/components/utilities-sidebar/utilities-sidebar.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-utilities-sidebar', + templateUrl: './utilities-sidebar.component.html', + styleUrls: ['./utilities-sidebar.component.scss'] +}) +export class UtilitiesSidebarComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/frontend/src/app/layouts/admin-layout/admin-layout.component.html b/frontend/src/app/layouts/admin-layout/admin-layout.component.html deleted file mode 100644 index 18bf39f1..00000000 --- a/frontend/src/app/layouts/admin-layout/admin-layout.component.html +++ /dev/null @@ -1,44 +0,0 @@ -
- -
- - - -
-
-
-
- - - - -
-
diff --git a/frontend/src/app/layouts/admin-layout/admin-layout.component.spec.ts b/frontend/src/app/layouts/admin-layout/admin-layout.component.spec.ts deleted file mode 100644 index 4499ffec..00000000 --- a/frontend/src/app/layouts/admin-layout/admin-layout.component.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { async, ComponentFixture, TestBed } from "@angular/core/testing"; - -import { AdminLayoutComponent } from "./admin-layout.component"; - -describe("AdminLayoutComponent", () => { - let component: AdminLayoutComponent; - let fixture: ComponentFixture; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [AdminLayoutComponent] - }).compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(AdminLayoutComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it("should create", () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/frontend/src/app/layouts/admin-layout/admin-layout.component.ts b/frontend/src/app/layouts/admin-layout/admin-layout.component.ts deleted file mode 100644 index 0aa4bd5b..00000000 --- a/frontend/src/app/layouts/admin-layout/admin-layout.component.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { Component, OnInit } from "@angular/core"; - -@Component({ - selector: "app-admin-layout", - templateUrl: "./admin-layout.component.html", - styleUrls: ["./admin-layout.component.scss"] -}) -export class AdminLayoutComponent implements OnInit { - public sidebarColor: string = "red"; - - constructor() {} - changeSidebarColor(color){ - var sidebar = document.getElementsByClassName('sidebar')[0]; - var mainPanel = document.getElementsByClassName('main-panel')[0]; - - this.sidebarColor = color; - - if(sidebar != undefined){ - sidebar.setAttribute('data',color); - } - if(mainPanel != undefined){ - mainPanel.setAttribute('data',color); - } - } - changeDashboardColor(color){ - var body = document.getElementsByTagName('body')[0]; - if (body && color === 'white-content') { - body.classList.add(color); - } - else if(body.classList.contains('white-content')) { - body.classList.remove('white-content'); - } - } - ngOnInit() {} -} diff --git a/frontend/src/app/layouts/admin-layout/admin-layout.module.ts b/frontend/src/app/layouts/admin-layout/admin-layout.module.ts deleted file mode 100644 index f4b36ab2..00000000 --- a/frontend/src/app/layouts/admin-layout/admin-layout.module.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { NgModule } from "@angular/core"; -import { HttpClientModule } from "@angular/common/http"; -import { RouterModule } from "@angular/router"; -import { CommonModule } from "@angular/common"; -import { FormsModule } from "@angular/forms"; - -import { AdminLayoutRoutes } from "./admin-layout.routing"; -import { DashboardComponent } from "../../pages/dashboard/dashboard.component"; -import { PatientComponent } from "../../pages/patient/patient.component"; -import { MedicalProvidersComponent } from "../../pages/medical-providers/medical-providers.component"; - - -import { NgbModule } from "@ng-bootstrap/ng-bootstrap"; - -@NgModule({ - imports: [ - CommonModule, - RouterModule.forChild(AdminLayoutRoutes), - FormsModule, - HttpClientModule, - NgbModule, - ], - declarations: [ - DashboardComponent, - PatientComponent, - MedicalProvidersComponent - ] -}) -export class AdminLayoutModule {} diff --git a/frontend/src/app/layouts/admin-layout/admin-layout.routing.ts b/frontend/src/app/layouts/admin-layout/admin-layout.routing.ts deleted file mode 100644 index 3de94084..00000000 --- a/frontend/src/app/layouts/admin-layout/admin-layout.routing.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Routes } from "@angular/router"; - -import { DashboardComponent } from "../../pages/dashboard/dashboard.component"; -import { PatientComponent } from "../../pages/patient/patient.component"; -import {MedicalProvidersComponent} from '../../pages/medical-providers/medical-providers.component'; - -export const AdminLayoutRoutes: Routes = [ - { path: "dashboard", component: DashboardComponent }, - { path: "patient", component: PatientComponent }, - { path: "providers", component: MedicalProvidersComponent }, -]; diff --git a/frontend/src/app/pages/dashboard/dashboard.component.html b/frontend/src/app/pages/dashboard/dashboard.component.html index 51ef0c27..581396aa 100644 --- a/frontend/src/app/pages/dashboard/dashboard.component.html +++ b/frontend/src/app/pages/dashboard/dashboard.component.html @@ -1,384 +1,392 @@ -
-
-
-
-
-
-
-
Total Shipments
-

Performance

-
-
-
-
+ +
+
+
+
+
Page Views by Page Title
+

This report is based on 100% of sessions.

+
+
+
+
+
Admin Home
+ /demo/admin/index.html +
+
+
7,755
+ 31.74% (-100.00%) +
+
+
+
+
Form Elements
+ /demo/admin/forms.html +
+
+
5,215
+ 28.53% (-100.00%) +
+
+
+
+
Utilities
+ /demo/admin/util.html +
+
+
4,848
+ 25.35% (-100.00%) +
+
+
+
+
Form Validation
+ /demo/admin/validation.html +
+
+
3,275
+ 23.17% (-100.00%) +
+
+
+
+
Modals
+ /demo/admin/modals.html +
+
+
3,003
+ 22.21% (-100.00%) +
+
+
+
+ +
+
+
+
+
Sessions by Channel
+
+
+
+
+ +
+
+
+
+
+ Organic Search + 1,320 (25%) +
+
+
+
+
+
+
+ Email + 987 (20%) +
+
+
+
+
+
+
+ Referral + 2,010 (30%) +
+
+
+
+
+
+
+ Social + 654 (15%) +
+
+
+
+
+
+
+ Other + 400 (10%) +
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
Acquisition
+ Tells you where your visitors originated from, such as search engines, social networks or website referrals. +
+
+
+
+ +
+
+ +

33.50%

+
+
+
+
+ +
+
+ +

9,065

+
+
+
+
+
+
+
+
+
Sessions
+ A session is the period time a user is actively engaged with your website, app, etc. +
+
+
+
+
+ +
+
+ +

26.80%

+
+
+
+
+
+
+ +
+
+ +

1,005

+
+
+
+
+
+
+
+
+
+
+
What pages do your users visit
+

Part of this date range occurs before the new users metric had been calculated, so the old users metric is displayed.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 CountryEntrancesBounce RateExits
United States134 (1.51%)33.58%15.47%
United Kingdom290 (3.30%)9.22%7.99%
India250 (3.00%)20.75%2.40%
Canada216 (2.79%)32.07%15.09%
France216 (2.79%)32.07%15.09%
Philippines197 (2.12%)32.07%15.09%
+
+
+
+ +
+
-
-
-
-
-
Total Shipments
-

- 763,215 -

-
-
-
-
-
-
-
-
-
-
Daily Sales
-

- 3,500€ -

-
-
-
-
-
-
-
-
-
-
Completed Tasks
-

- 12,100K -

-
-
-
-
-
-
-
-
-
-
-
-
Tasks(5)
-

today

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
-
-

Update the Documentation

-

- Dwuamish Head, Seattle, WA 8:47 AM -

-
- -
-
- -
-
-

GDPR Compliance

-

- The GDPR is a regulation that requires businesses to - protect the personal data and privacy of Europe citizens - for transactions that occur within EU member states. -

-
- -
-
- -
-
-

Solve the issues

-

- Fifty percent of all respondents said they would be more - likely to shop at a company -

-
- -
-
- -
-
-

Release v2.0.0

-

- Ra Ave SW, Seattle, WA 98116, SUA 11:19 AM -

-
- -
-
- -
-
-

Export the processed files

-

- The report also shows that consumers will not easily - forgive a company once a breach exposing their personal - data occurs. -

-
- -
-
- -
-
-

Arival at export process

-

- Capitol Hill, Seattle, WA 12:34 AM -

-
- -
-
-
-
-
-
-
-
-

Simple Table

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameCountryCitySalary
Dakota RiceNigerOud-Turnhout$36,738
Minerva HooperCuraçaoSinaai-Waas$23,789
Sage RodriguezNetherlandsBaileux$56,142
Philip ChaneyKorea, SouthOverland Park$38,735
Doris GreeneMalawiFeldkirchen in Kärnten$63,542
Mason PorterChileGloucester$78,615
Jon PorterPortugalGloucester$98,615
-
-
-
-
-
-
+
diff --git a/frontend/src/app/pages/dashboard/dashboard.component.scss b/frontend/src/app/pages/dashboard/dashboard.component.scss index e69de29b..9b6570a7 100644 --- a/frontend/src/app/pages/dashboard/dashboard.component.scss +++ b/frontend/src/app/pages/dashboard/dashboard.component.scss @@ -0,0 +1,5 @@ +.page-view-chart-wrapper { + canvas { + width: 100%; + } +} diff --git a/frontend/src/app/pages/dashboard/dashboard.component.spec.ts b/frontend/src/app/pages/dashboard/dashboard.component.spec.ts index 6e4dcd89..9c996c37 100644 --- a/frontend/src/app/pages/dashboard/dashboard.component.spec.ts +++ b/frontend/src/app/pages/dashboard/dashboard.component.spec.ts @@ -1,4 +1,4 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { DashboardComponent } from './dashboard.component'; @@ -6,12 +6,14 @@ describe('DashboardComponent', () => { let component: DashboardComponent; let fixture: ComponentFixture; - beforeEach(async () => { - await TestBed.configureTestingModule({ + beforeEach(async(() => { + TestBed.configureTestingModule({ declarations: [ DashboardComponent ] }) .compileComponents(); + })); + beforeEach(() => { fixture = TestBed.createComponent(DashboardComponent); component = fixture.componentInstance; fixture.detectChanges(); diff --git a/frontend/src/app/pages/dashboard/dashboard.component.ts b/frontend/src/app/pages/dashboard/dashboard.component.ts index 6e427f07..e033e4be 100644 --- a/frontend/src/app/pages/dashboard/dashboard.component.ts +++ b/frontend/src/app/pages/dashboard/dashboard.component.ts @@ -1,470 +1,482 @@ -import { Component, OnInit } from "@angular/core"; -import Chart from 'chart.js'; +import { Component, OnInit } from '@angular/core'; @Component({ - selector: "app-dashboard", - templateUrl: "dashboard.component.html" + selector: 'app-dashboard', + templateUrl: './dashboard.component.html', + styleUrls: ['./dashboard.component.scss'] }) export class DashboardComponent implements OnInit { - public canvas : any; - public ctx; - public datasets: any; - public data: any; - public myChartData; - public clicked: boolean = true; - public clicked1: boolean = false; - public clicked2: boolean = false; - constructor() {} + constructor() { } ngOnInit() { - var gradientChartOptionsConfigurationWithTooltipBlue: any = { - maintainAspectRatio: false, - legend: { - display: false - }, + } - tooltips: { - backgroundColor: '#f5f5f5', - titleFontColor: '#333', - bodyFontColor: '#666', - bodySpacing: 4, - xPadding: 12, - mode: "nearest", - intersect: 0, - position: "nearest" - }, - responsive: true, - scales: { - yAxes: [{ - barPercentage: 1.6, - gridLines: { - drawBorder: false, - color: 'rgba(29,140,248,0.0)', - zeroLineColor: "transparent", - }, - ticks: { - suggestedMin: 60, - suggestedMax: 125, - padding: 20, - fontColor: "#2380f7" - } - }], - xAxes: [{ - barPercentage: 1.6, - gridLines: { - drawBorder: false, - color: 'rgba(29,140,248,0.1)', - zeroLineColor: "transparent", - }, - ticks: { - padding: 20, - fontColor: "#2380f7" - } - }] + pageViewChartData = [{ + label: 'This week', + data: [36.57, 38.9, 42.3, 41.8, 37.4, 32.5, 28.1, 24.7, 23.4, 20.4, 16.5, 12.1, 9.2, 5.1, 9.6, 10.8, 13.2, 18.2, 13.9, 18.7, 13.7, 11.3, 13.7, 15.8, 12.9, 17.5, 21.9, 18.2, 14.3, 18.2, 14.8, 13.01, 14.5, 15.4, 16.6, 19.4, 14.5, 17.7, 13.8, 9.4, 11.9, 9.7, 6.1, 1.4, 2.3, 2.3, 4.5, 3.7, 5.7, 5.08, 1.9, 8.2, + 7.9, 5.02, 2.8, 6.8, 6.2, 9.8, 9.3, 11.9, 10, 9, 6, 4.5, 2.7, 4.3, 3.6, 4.2, 2, 1.4, 3.7, 1.5, 5.7, 4.9, 1, 4.7, 6.3, 4.2, 5.1, 5.2, 3.8, 8.2, 7.2, 6.5, 1.7, 11.4, 10.5, 3.8, 4.7, 8.5, 10.2, 11, 15.6, 19.7, 18.1, 13.5, 12, 7.5, 3.7, 9.7, 9.2, 13.4, 18.4, 22.4, 18.7, 15.2, 14.5, 14.4, 12, 13.7, 13.3, 15.4, + 15.8, 17.7, 14.3, 10.6, 12.7, 14.7, 18.6, 22.9, 18, 22.8, 23.8, 27.1, 24.7, 20, 22.7, 20.9, 16.6, 15.1, 13.1, 10.7, 11.4, 13.1, 10.1, 9.2, 9.2, 10.3, 15.2, 12.5, 14, 18.2, 16.3, 17.7, 18.9, 15.3, 18.1, 16.3, 14.8, 10 ], + borderWidth: 2, + fill: true + }, + { + label: 'Current week', + data: [53, 50.3, 49.4, 47.7, 49, 50.6, 48.7, 48.8, 53.5, 52.9, 49, 50.2, 48.3, 44.8, 40.7, 41.2, 45.6, 44.6, 41.3, 38.2, 39.6, 41, 39.4, 35.6, 38.5, 38.5, 40.6, 38.7, 42.9, 46.3, 43.5, 40.6, 36.5, 31.7, 28.9, 29.6, 29.5, 33.1, 37, 35.8, 37.6, 39.6, 39, 34.1, 37.4, 39.2, 38.4, 37.7, 40.1, 35.8, 31.5, 31.8, + 30.5, 25.7, 28.2, 28.4, 30, 32.1, 32.9, 37.6, 35.2, 39.1, 41.3, 41.4, 43.7, 39.4, 39.2, 43.8, 42.4, 43.6, 38.7 , 43.5, 41.8, 44.8, 46.1, 47.6, 49, 46.4, 51.2, 50.1, 53.6, 56, 52.7, 56.6, 60.2, 58.3, 56.5, 55.7, 54.7, 54.2, 58.6, 57, 60.5, 57.6, 56.1, 55.1, 54.3, 52.3, 54.5, 54.1, 51.9, 51.1, 46.3, 48.3, + 45.8, 48.2, 43.3, 45.8, 43.4, 41.3, 40.9, 38.4, 40.1, 44.8, 44, 41.4, 37.8, 39.2, 35.2, 32.1, 35.6, 38, 37.9, 38.7, 37.4, 37.5, 33.1, 35, 33.1, 31.8, 29.1, 31.9, 34.3, 32.9, 33.1, 37.1, 32.6, 36.9, 35.9, 38.1, 42.5, 41.5, 45.5, 46.3, 45.7, 45.4, 42.5, 44.4, 39.7, 44.7], + borderWidth: 2, + fill: true + }]; + + pageViewChartLabels = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', + '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', + '100', '101', '102', '103', '104', '105', '106', '107', '108', '109', '110', '111', '112', '113', '114', '115', '116', '117', '118', '119', '120', '121', '122', '123', '124', '125', '126', '127', '128', '129', '130', '131', '132', '133', '134', '135', '136', '137', '138', '139', '140', '141', '142', '143', '144', '145', '146', '147', '148', '149']; + + pageViewChartOptions = { + + responsive: true, + maintainAspectRatio: false, + scales: { + yAxes: [{ + display: true, + gridLines: { + drawBorder: false, + display: true, + drawTicks: false, + color: '#eef0fa', + zeroLineColor: 'rgba(90, 113, 208, 0)', + }, + ticks: { + display: false, + beginAtZero: true, + min: 0, + max: 100, + stepSize: 32, + padding: 10, + } + }], + xAxes: [{ + display: false, + position: 'bottom', + gridLines: { + drawBorder: false, + display: false, + drawTicks: false, + }, + ticks: { + beginAtZero: true, + stepSize: 10, + fontColor: "#a7afb7", + padding: 10, + } + }], + }, + legend: { + display: false, + }, + elements: { + point: { + radius: 0 + }, + line: { + tension: 0 } - }; + }, + tooltips: { + backgroundColor: 'rgba(2, 171, 254, 1)', + }, + }; - var gradientChartOptionsConfigurationWithTooltipPurple: any = { - maintainAspectRatio: false, - legend: { - display: false + pageViewChartColors = [ + { + backgroundColor: [ + 'rgba(255, 255, 255, 1)', + ], + borderColor: [ + 'rgb(0, 123, 255)' + ] + }, + { + backgroundColor: [ + 'rgba(86, 11, 208, .05)', + ], + borderColor: [ + 'rgb(86, 11, 208)' + ], + } + ]; + + + + bounceRateChartData = [{ + label: 'This week', + data: [27.2, 29.9, 29.6, 25.7, 25.9, 29.3, 31.1, 27.9, 28.4, 25.4, 23.2, 18.2, 14, 12.7, 11, 13.7, 9.7, 12.6, 10.9, 12.7, 13.8, 12.9, 13.8, 10.2, 5.8, 7.6, 8.8, 5.6, 5.6, 6.3, 4.2, 3.6, 5.4, 6.5, 8.1, 10.9, 7.6, 9.7, 10.9, 9.5, 5.4, 4.9, .7, 2.3, 5.5, 10, 10.6, 8.3, 8.4, 8.5, 5.8 ], + borderWidth: 2, + fill: true + }]; + + bounceRateChartLabels = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '50', '51']; + + bounceRateChartOptions = { + + responsive:true, + maintainAspectRatio:false, + scales: { + yAxes: [{ + display: false, + gridLines: { + drawBorder: false, + display: true, + drawTicks: false, + }, + ticks: { + display: false, + beginAtZero: true, + min: 0, + max: 40, + stepSize: 10, + } + }], + xAxes: [{ + display: false, + position: 'bottom', + gridLines: { + drawBorder: false, + display: false, + drawTicks: false, + }, + ticks: { + beginAtZero: true, + stepSize: 10, + fontColor: "#a7afb7", + padding: 10, + } + }], + }, + legend: { + display: false, + }, + elements: { + point: { + radius: 0 }, - - tooltips: { - backgroundColor: '#f5f5f5', - titleFontColor: '#333', - bodyFontColor: '#666', - bodySpacing: 4, - xPadding: 12, - mode: "nearest", - intersect: 0, - position: "nearest" - }, - responsive: true, - scales: { - yAxes: [{ - barPercentage: 1.6, - gridLines: { - drawBorder: false, - color: 'rgba(29,140,248,0.0)', - zeroLineColor: "transparent", - }, - ticks: { - suggestedMin: 60, - suggestedMax: 125, - padding: 20, - fontColor: "#9a9a9a" - } - }], - - xAxes: [{ - barPercentage: 1.6, - gridLines: { - drawBorder: false, - color: 'rgba(225,78,202,0.1)', - zeroLineColor: "transparent", - }, - ticks: { - padding: 20, - fontColor: "#9a9a9a" - } - }] + line: { + tension: 0 } - }; + }, + tooltips: { + backgroundColor: 'rgba(2, 171, 254, 1)', + }, + }; - var gradientChartOptionsConfigurationWithTooltipRed: any = { - maintainAspectRatio: false, - legend: { - display: false - }, - - tooltips: { - backgroundColor: '#f5f5f5', - titleFontColor: '#333', - bodyFontColor: '#666', - bodySpacing: 4, - xPadding: 12, - mode: "nearest", - intersect: 0, - position: "nearest" - }, - responsive: true, - scales: { - yAxes: [{ - barPercentage: 1.6, - gridLines: { - drawBorder: false, - color: 'rgba(29,140,248,0.0)', - zeroLineColor: "transparent", - }, - ticks: { - suggestedMin: 60, - suggestedMax: 125, - padding: 20, - fontColor: "#9a9a9a" - } - }], - - xAxes: [{ - barPercentage: 1.6, - gridLines: { - drawBorder: false, - color: 'rgba(233,32,16,0.1)', - zeroLineColor: "transparent", - }, - ticks: { - padding: 20, - fontColor: "#9a9a9a" - } - }] - } - }; - - var gradientChartOptionsConfigurationWithTooltipOrange: any = { - maintainAspectRatio: false, - legend: { - display: false - }, - - tooltips: { - backgroundColor: '#f5f5f5', - titleFontColor: '#333', - bodyFontColor: '#666', - bodySpacing: 4, - xPadding: 12, - mode: "nearest", - intersect: 0, - position: "nearest" - }, - responsive: true, - scales: { - yAxes: [{ - barPercentage: 1.6, - gridLines: { - drawBorder: false, - color: 'rgba(29,140,248,0.0)', - zeroLineColor: "transparent", - }, - ticks: { - suggestedMin: 50, - suggestedMax: 110, - padding: 20, - fontColor: "#ff8a76" - } - }], - - xAxes: [{ - barPercentage: 1.6, - gridLines: { - drawBorder: false, - color: 'rgba(220,53,69,0.1)', - zeroLineColor: "transparent", - }, - ticks: { - padding: 20, - fontColor: "#ff8a76" - } - }] - } - }; - - var gradientChartOptionsConfigurationWithTooltipGreen: any = { - maintainAspectRatio: false, - legend: { - display: false - }, - - tooltips: { - backgroundColor: '#f5f5f5', - titleFontColor: '#333', - bodyFontColor: '#666', - bodySpacing: 4, - xPadding: 12, - mode: "nearest", - intersect: 0, - position: "nearest" - }, - responsive: true, - scales: { - yAxes: [{ - barPercentage: 1.6, - gridLines: { - drawBorder: false, - color: 'rgba(29,140,248,0.0)', - zeroLineColor: "transparent", - }, - ticks: { - suggestedMin: 50, - suggestedMax: 125, - padding: 20, - fontColor: "#9e9e9e" - } - }], - - xAxes: [{ - barPercentage: 1.6, - gridLines: { - drawBorder: false, - color: 'rgba(0,242,195,0.1)', - zeroLineColor: "transparent", - }, - ticks: { - padding: 20, - fontColor: "#9e9e9e" - } - }] - } - }; + bounceRateChartColors = [ + { + backgroundColor: [ + 'rgba(0, 204, 212, .2)', + ], + borderColor: [ + 'rgb(0, 204, 212)' + ] + } + ]; - var gradientBarChartConfiguration: any = { - maintainAspectRatio: false, - legend: { - display: false - }, + // Total users chart + usersBarChartData = [{ + label: '# of Votes', + data: [27.2, 29.9, 29.6, 25.7, 25.9, 29.3, 31.1, 27.9, 28.4, 25.4, 23.2, 18.2, 14, 12.7, 11, 13.7, 9.7, 12.6, 10.9, 12.7, 13.8], + borderWidth: 1, + fill: false + }]; - tooltips: { - backgroundColor: '#f5f5f5', - titleFontColor: '#333', - bodyFontColor: '#666', - bodySpacing: 4, - xPadding: 12, - mode: "nearest", - intersect: 0, - position: "nearest" - }, - responsive: true, - scales: { - yAxes: [{ + usersBarChartLabels = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18']; - gridLines: { - drawBorder: false, - color: 'rgba(29,140,248,0.1)', - zeroLineColor: "transparent", - }, - ticks: { - suggestedMin: 60, - suggestedMax: 120, - padding: 20, - fontColor: "#9e9e9e" - } - }], + usersBarChartOptions = { - xAxes: [{ - - gridLines: { - drawBorder: false, - color: 'rgba(29,140,248,0.1)', - zeroLineColor: "transparent", - }, - ticks: { - padding: 20, - fontColor: "#9e9e9e" - } - }] - } - }; - - this.canvas = document.getElementById("chartLineRed"); - this.ctx = this.canvas.getContext("2d"); - - var gradientStroke = this.ctx.createLinearGradient(0, 230, 0, 50); - - gradientStroke.addColorStop(1, 'rgba(233,32,16,0.2)'); - gradientStroke.addColorStop(0.4, 'rgba(233,32,16,0.0)'); - gradientStroke.addColorStop(0, 'rgba(233,32,16,0)'); //red colors - - var data = { - labels: ['JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC'], - datasets: [{ - label: "Data", - fill: true, - backgroundColor: gradientStroke, - borderColor: '#ec250d', - borderWidth: 2, - borderDash: [], - borderDashOffset: 0.0, - pointBackgroundColor: '#ec250d', - pointBorderColor: 'rgba(255,255,255,0)', - pointHoverBackgroundColor: '#ec250d', - pointBorderWidth: 20, - pointHoverRadius: 4, - pointHoverBorderWidth: 15, - pointRadius: 4, - data: [80, 100, 70, 80, 120, 80], + responsive:true, + maintainAspectRatio:false, + scales: { + yAxes: [{ + display: false, + ticks: { + display: false, + }, + gridLines: { + drawBorder: false, + display: false + } + }], + xAxes: [{ + display: false, + barThickness: 5.5, + ticks: { + display: false, + }, + gridLines: { + drawBorder: false, + display: false + } }] - }; - var myChart = new Chart(this.ctx, { - type: 'line', - data: data, - options: gradientChartOptionsConfigurationWithTooltipRed - }); + }, + legend: { + display: false + }, + elements: { + point: { + radius: 0 + } + } + }; + + usersBarChartColors = [ + { + backgroundColor: '#007bff', + borderColor: '#007bff' + } + ]; - this.canvas = document.getElementById("chartLineGreen"); - this.ctx = this.canvas.getContext("2d"); + // Total users chart + sessionsChartData = [{ + label: '# of Votes', + data: [2, 4, 10, 20, 45, 40, 35, 18], + borderWidth: 1, + fill: false + }, + { + label: '# of Rate', + data: [3, 6, 15, 35, 50, 45, 35, 25], + borderWidth: 1, + fill: false + }]; + sessionsChartLabels = [0,1,2,3,4,5,6,7]; - var gradientStroke = this.ctx.createLinearGradient(0, 230, 0, 50); + sessionsChartOptions = { - gradientStroke.addColorStop(1, 'rgba(66,134,121,0.15)'); - gradientStroke.addColorStop(0.4, 'rgba(66,134,121,0.0)'); //green colors - gradientStroke.addColorStop(0, 'rgba(66,134,121,0)'); //green colors - - var data = { - labels: ['JUL', 'AUG', 'SEP', 'OCT', 'NOV'], - datasets: [{ - label: "My First dataset", - fill: true, - backgroundColor: gradientStroke, - borderColor: '#00d6b4', - borderWidth: 2, - borderDash: [], - borderDashOffset: 0.0, - pointBackgroundColor: '#00d6b4', - pointBorderColor: 'rgba(255,255,255,0)', - pointHoverBackgroundColor: '#00d6b4', - pointBorderWidth: 20, - pointHoverRadius: 4, - pointHoverBorderWidth: 15, - pointRadius: 4, - data: [90, 27, 60, 12, 80], + responsive:true, + maintainAspectRatio:false, + scales: { + yAxes: [{ + display: false, + ticks: { + beginAtZero:true, + fontSize: 11, + max: 80 + }, + gridLines: { + drawBorder: false, + } + }], + xAxes: [{ + barPercentage: 0.6, + gridLines: { + color: 'rgba(0,0,0,0.08)', + drawBorder: false + }, + ticks: { + beginAtZero:true, + fontSize: 11, + display: false + } }] + + }, + legend: { + display: false + }, + elements: { + point: { + radius: 0 + } + } + }; + + sessionsChartColors = [ + { + backgroundColor: '#560bd0' + }, + { + backgroundColor: '#cad0e8' + } + ]; + + + // Sessions by channel doughnut chart + sessionsByChannelChartData = [{ + data: [25,20,30,15,10], + backgroundColor: ['#6f42c1', '#007bff','#17a2b8','#00cccc','#adb2bd'], + }]; + + sessionsByChannelChartLabels: ['Search', 'Email', 'Referral', 'Social', 'Other']; + sessionsByChannelChartOptions = { + cutoutPercentage: 50, + maintainAspectRatio: false, + responsive: true, + legend: { + display: false, + }, + animation: { + animateScale: true, + animateRotate: true + } + }; + + + // Sessions by channel doughnut chart + sessionsChartOneData = [{ + data: [40,60], + backgroundColor: ['#007bff', '#cad0e8'], + borderColor: ['#007bff', '#cad0e8'], + }]; + + sessionsChartOneLabels: ['Search', 'Email']; + sessionsChartOneOptions = { + cutoutPercentage: 78, + maintainAspectRatio: false, + responsive: true, + legend: { + display: false, + }, + animation: { + animateScale: true, + animateRotate: true + } + }; + + // Sessions by channel doughnut chart + sessionsChartTwoData = [{ + data: [25,75], + backgroundColor: ['#00cccc', '#cad0e8'], + borderColor: ['#00cccc', '#cad0e8'] + }]; + + sessionsChartTwoLabels: ['Search', 'Email']; + sessionsChartTwoOptions = { + cutoutPercentage: 78, + maintainAspectRatio: false, + responsive: true, + legend: { + display: false, + }, + animation: { + animateScale: true, + animateRotate: true + } + }; + + + // Acquisition chart one + acquisitionOneChartData = [{ + label: '# of Votes', + data: [4,2.5,5,3,5], + borderWidth: 1, + fill: false + }]; + + acquisitionOneChartLabels = ['1', '2', '3', '4', '5']; + + acquisitionOneChartOptions = { + + responsive:true, + maintainAspectRatio:false, + scales: { + yAxes: [{ + display: false, + ticks: { + display: false, + }, + gridLines: { + drawBorder: false, + display: false + } + }], + xAxes: [{ + display: false, + barThickness: 5.5, + ticks: { + display: false, + }, + gridLines: { + drawBorder: false, + display: false + } + }] + + }, + legend: { + display: false + }, + elements: { + point: { + radius: 0 + } + } + }; + + acquisitionOneChartColors = [ + { + backgroundColor: '#fff', + borderColor: '#fff' + } + ]; + + // Acquisition chart two + acquisitionTwoChartData = [{ + label: '# of Votes', + data: [5,2,3,5,1.5], + borderWidth: 1, + fill: false + }]; + + acquisitionTwoChartLabels = ['1', '2', '3', '4', '5']; + + acquisitionTwoChartOptions = { + + responsive:true, + maintainAspectRatio:false, + scales: { + yAxes: [{ + display: false, + ticks: { + display: false, + }, + gridLines: { + drawBorder: false, + display: false + } + }], + xAxes: [{ + display: false, + barThickness: 5.5, + ticks: { + display: false, + }, + gridLines: { + drawBorder: false, + display: false + } + }] + + }, + legend: { + display: false + }, + elements: { + point: { + radius: 0 + } + } }; - var myChart = new Chart(this.ctx, { - type: 'line', - data: data, - options: gradientChartOptionsConfigurationWithTooltipGreen - - }); - - - - var chart_labels = ['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC']; - this.datasets = [ - [100, 70, 90, 70, 85, 60, 75, 60, 90, 80, 110, 100], - [80, 120, 105, 110, 95, 105, 90, 100, 80, 95, 70, 120], - [60, 80, 65, 130, 80, 105, 90, 130, 70, 115, 60, 130] + acquisitionTwoChartColors = [ + { + backgroundColor: '#fff', + borderColor: '#fff' + } ]; - this.data = this.datasets[0]; - - - this.canvas = document.getElementById("chartBig1"); - this.ctx = this.canvas.getContext("2d"); - - var gradientStroke = this.ctx.createLinearGradient(0, 230, 0, 50); - - gradientStroke.addColorStop(1, 'rgba(233,32,16,0.2)'); - gradientStroke.addColorStop(0.4, 'rgba(233,32,16,0.0)'); - gradientStroke.addColorStop(0, 'rgba(233,32,16,0)'); //red colors - - var config = { - type: 'line', - data: { - labels: chart_labels, - datasets: [{ - label: "My First dataset", - fill: true, - backgroundColor: gradientStroke, - borderColor: '#ec250d', - borderWidth: 2, - borderDash: [], - borderDashOffset: 0.0, - pointBackgroundColor: '#ec250d', - pointBorderColor: 'rgba(255,255,255,0)', - pointHoverBackgroundColor: '#ec250d', - pointBorderWidth: 20, - pointHoverRadius: 4, - pointHoverBorderWidth: 15, - pointRadius: 4, - data: this.data, - }] - }, - options: gradientChartOptionsConfigurationWithTooltipRed - }; - this.myChartData = new Chart(this.ctx, config); - - - this.canvas = document.getElementById("CountryChart"); - this.ctx = this.canvas.getContext("2d"); - var gradientStroke = this.ctx.createLinearGradient(0, 230, 0, 50); - - gradientStroke.addColorStop(1, 'rgba(29,140,248,0.2)'); - gradientStroke.addColorStop(0.4, 'rgba(29,140,248,0.0)'); - gradientStroke.addColorStop(0, 'rgba(29,140,248,0)'); //blue colors - - - var myChart = new Chart(this.ctx, { - type: 'bar', - responsive: true, - legend: { - display: false - }, - data: { - labels: ['USA', 'GER', 'AUS', 'UK', 'RO', 'BR'], - datasets: [{ - label: "Countries", - fill: true, - backgroundColor: gradientStroke, - hoverBackgroundColor: gradientStroke, - borderColor: '#1f8ef1', - borderWidth: 2, - borderDash: [], - borderDashOffset: 0.0, - data: [53, 20, 10, 80, 100, 45], - }] - }, - options: gradientBarChartConfiguration - }); - - } - public updateOptions() { - this.myChartData.data.datasets[0].data = this.data; - this.myChartData.update(); - } } diff --git a/frontend/src/app/pages/medical-providers/medical-providers.component.html b/frontend/src/app/pages/medical-providers/medical-providers.component.html deleted file mode 100644 index 79e2e9ff..00000000 --- a/frontend/src/app/pages/medical-providers/medical-providers.component.html +++ /dev/null @@ -1,62 +0,0 @@ -
-
-
-
-
-
Medical Providers
-

- The following medical providers have API's which Fasten can use to retrieve your medical history. - Please click the logos below to initiate the connection. -

-
-
-
- -
- -
- - -
- -
- -
- -
- -
- -
- -
- -
- -
- -
-
-
-
-
-
-
diff --git a/frontend/src/app/pages/medical-providers/medical-providers.component.spec.ts b/frontend/src/app/pages/medical-providers/medical-providers.component.spec.ts deleted file mode 100644 index f9ca6bed..00000000 --- a/frontend/src/app/pages/medical-providers/medical-providers.component.spec.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { MedicalProvidersComponent } from './medical-providers.component'; - -describe('MedicalProvidersComponent', () => { - let component: MedicalProvidersComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ MedicalProvidersComponent ] - }) - .compileComponents(); - - fixture = TestBed.createComponent(MedicalProvidersComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/frontend/src/app/pages/medical-sources/medical-sources.component.html b/frontend/src/app/pages/medical-sources/medical-sources.component.html new file mode 100644 index 00000000..4de3f40f --- /dev/null +++ b/frontend/src/app/pages/medical-sources/medical-sources.component.html @@ -0,0 +1,160 @@ +
+
+ +
+
+ Medical Sources +
+

Medical Sources

+ + +

The following medical insurance companies have API's which Fasten can use to retrieve your medical history. + Please click the logos below to initiate the connection.

+ +
+
+ +
+
+ +
+
+ +
+
+ +
+ + +

The following medical insurance companies have API's which Fasten can use to retrieve your medical history. + Please click the logos below to initiate the connection.

+ +
+
+
+ Image +
+

Aetna

+
+
+
+ +
+
+ Image +
+

Anthem

+
+
+
+ +
+
+ Image +
+

Cigna

+
+
+
+ +
+
+ Image +
+

Humana

+
+
+
+ +
+
+ Image +
+

Kaiser

+
+
+
+ +
+
+ Image +
+

United Healthcare

+
+
+
+ + +
+ + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/src/app/pages/medical-providers/medical-providers.component.scss b/frontend/src/app/pages/medical-sources/medical-sources.component.scss similarity index 100% rename from frontend/src/app/pages/medical-providers/medical-providers.component.scss rename to frontend/src/app/pages/medical-sources/medical-sources.component.scss diff --git a/frontend/src/app/pages/medical-sources/medical-sources.component.spec.ts b/frontend/src/app/pages/medical-sources/medical-sources.component.spec.ts new file mode 100644 index 00000000..fe99f88c --- /dev/null +++ b/frontend/src/app/pages/medical-sources/medical-sources.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MedicalSourcesComponent } from './medical-sources.component'; + +describe('MedicalSourcesComponent', () => { + let component: MedicalSourcesComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ MedicalSourcesComponent ] + }) + .compileComponents(); + + fixture = TestBed.createComponent(MedicalSourcesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/frontend/src/app/pages/medical-providers/medical-providers.component.ts b/frontend/src/app/pages/medical-sources/medical-sources.component.ts similarity index 97% rename from frontend/src/app/pages/medical-providers/medical-providers.component.ts rename to frontend/src/app/pages/medical-sources/medical-sources.component.ts index 79a5c171..78dd7729 100644 --- a/frontend/src/app/pages/medical-providers/medical-providers.component.ts +++ b/frontend/src/app/pages/medical-sources/medical-sources.component.ts @@ -15,11 +15,11 @@ export const retryCount = 24; //wait 2 minutes (5 * 24 = 120) export const retryWaitMilliSeconds = 5000; //wait 5 seconds @Component({ - selector: 'app-medical-providers', - templateUrl: './medical-providers.component.html', - styleUrls: ['./medical-providers.component.scss'] + selector: 'app-medical-sources', + templateUrl: './medical-sources.component.html', + styleUrls: ['./medical-sources.component.scss'] }) -export class MedicalProvidersComponent implements OnInit { +export class MedicalSourcesComponent implements OnInit { constructor( private passportApi: PassportService, diff --git a/frontend/src/assets/css/nucleo-icons.css b/frontend/src/assets/css/nucleo-icons.css deleted file mode 100644 index 8cc67654..00000000 --- a/frontend/src/assets/css/nucleo-icons.css +++ /dev/null @@ -1,543 +0,0 @@ -/* -------------------------------- - -Nucleo Outline Web Font - nucleoapp.com/ -License - nucleoapp.com/license/ -Created using IcoMoon - icomoon.io - --------------------------------- */ - -@font-face { - font-family: 'Nucleo'; - src: url('../fonts/nucleo.eot'); - src: url('../fonts/nucleo.eot') format('embedded-opentype'), url('../fonts/nucleo.woff2') format('woff2'), url('../fonts/nucleo.woff') format('woff'), url('../fonts/nucleo.ttf') format('truetype'); - font-weight: normal; - font-style: normal; -} - -/*------------------------ - base class definition --------------------------*/ - -.tim-icons { - display: inline-block; - font: normal normal normal 1em/1 'Nucleo'; - vertical-align: middle; - speak: none; - text-transform: none; - /* Better Font Rendering */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.font-icon-detail { - text-align: center; - padding: 45px 0 30px; - border: 1px solid #e44cc4; - border-radius: .1875rem; - margin: 15px 0; - min-height: 168px; -} - -.font-icon-detail i { - color: #FFFFFF; - font-size: 1.5em; -} - -.font-icon-detail p { - color: #e44cc4 !important; - margin-top: 30px; - padding: 0 10px; - font-size: .7142em; -} - -/*------------------------ - change icon size --------------------------*/ - -.tim-icons-sm { - font-size: 0.8em; -} - -.tim-icons-lg { - font-size: 1.2em; -} - -/* absolute units */ - -.tim-icons-16 { - font-size: 16px; -} - -.tim-icons-32 { - font-size: 32px; -} - -/*---------------------------------- - add a square/circle background ------------------------------------*/ - -.tim-icons-bg-square, -.tim-icons-bg-circle { - padding: 0.35em; -} - -.tim-icons-bg-circle { - border-radius: 50%; -} - -/*------------------------ - list icons --------------------------*/ - -/*------------------------ - spinning icons --------------------------*/ - -.tim-icons-is-spinning { - -webkit-animation: tim-icons-spin 2s infinite linear; - -moz-animation: tim-icons-spin 2s infinite linear; - animation: tim-icons-spin 2s infinite linear; -} - -@-webkit-keyframes tim-icons-spin { - 0% { - -webkit-transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(360deg); - } -} - -@-moz-keyframes tim-icons-spin { - 0% { - -moz-transform: rotate(0deg); - } - 100% { - -moz-transform: rotate(360deg); - } -} - -@keyframes tim-icons-spin { - 0% { - -webkit-transform: rotate(0deg); - -moz-transform: rotate(0deg); - -ms-transform: rotate(0deg); - -o-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(360deg); - -moz-transform: rotate(360deg); - -ms-transform: rotate(360deg); - -o-transform: rotate(360deg); - transform: rotate(360deg); - } -} - -/*------------------------ - rotated/flipped icons --------------------------*/ - -/*------------------------ - icons --------------------------*/ - -.icon-alert-circle-exc::before { - content: "\ea02"; -} - -.icon-align-center::before { - content: "\ea03"; -} - -.icon-align-left-2::before { - content: "\ea04"; -} - -.icon-app::before { - content: "\ea05"; -} - -.icon-atom::before { - content: "\ea06"; -} - -.icon-attach-87::before { - content: "\ea07"; -} - -.icon-badge::before { - content: "\ea08"; -} - -.icon-bag-16::before { - content: "\ea09"; -} - -.icon-bank::before { - content: "\ea0a"; -} - -.icon-basket-simple::before { - content: "\ea0b"; -} - -.icon-bell-55::before { - content: "\ea0c"; -} - -.icon-bold::before { - content: "\ea0d"; -} - -.icon-book-bookmark::before { - content: "\ea0e"; -} - -.icon-bulb-63::before { - content: "\ea0f"; -} - -.icon-bullet-list-67::before { - content: "\ea10"; -} - -.icon-bus-front-12::before { - content: "\ea11"; -} - -.icon-button-pause::before { - content: "\ea12"; -} - -.icon-button-power::before { - content: "\ea13"; -} - -.icon-calendar-60::before { - content: "\ea14"; -} - -.icon-camera-18::before { - content: "\ea15"; -} - -.icon-caps-small::before { - content: "\ea16"; -} - -.icon-cart::before { - content: "\ea17"; -} - -.icon-chart-bar-32::before { - content: "\ea18"; -} - -.icon-chart-pie-36::before { - content: "\ea19"; -} - -.icon-chat-33::before { - content: "\ea1a"; -} - -.icon-check-2::before { - content: "\ea1b"; -} - -.icon-cloud-download-93::before { - content: "\ea1c"; -} - -.icon-cloud-upload-94::before { - content: "\ea1d"; -} - -.icon-coins::before { - content: "\ea1e"; -} - -.icon-compass-05::before { - content: "\ea1f"; -} - -.icon-controller::before { - content: "\ea20"; -} - -.icon-credit-card::before { - content: "\ea21"; -} - -.icon-delivery-fast::before { - content: "\ea22"; -} - -.icon-double-left::before { - content: "\ea23"; -} - -.icon-double-right::before { - content: "\ea24"; -} - -.icon-email-85::before { - content: "\ea25"; -} - -.icon-gift-2::before { - content: "\ea26"; -} - -.icon-globe-2::before { - content: "\ea27"; -} - -.icon-headphones::before { - content: "\ea28"; -} - -.icon-heart-2::before { - content: "\ea29"; -} - -.icon-html5::before { - content: "\ea2a"; -} - -.icon-image-02::before { - content: "\ea2b"; -} - -.icon-istanbul::before { - content: "\ea2c"; -} - -.icon-key-25::before { - content: "\ea2d"; -} - -.icon-laptop::before { - content: "\ea2e"; -} - -.icon-light-3::before { - content: "\ea2f"; -} - -.icon-link-72::before { - content: "\ea30"; -} - -.icon-lock-circle::before { - content: "\ea31"; -} - -.icon-map-big::before { - content: "\ea32"; -} - -.icon-minimal-down::before { - content: "\ea33"; -} - -.icon-minimal-left::before { - content: "\ea34"; -} - -.icon-minimal-right::before { - content: "\ea35"; -} - -.icon-minimal-up::before { - content: "\ea36"; -} - -.icon-mobile::before { - content: "\ea37"; -} - -.icon-molecule-40::before { - content: "\ea38"; -} - -.icon-money-coins::before { - content: "\ea39"; -} - -.icon-notes::before { - content: "\ea3a"; -} - -.icon-palette::before { - content: "\ea3b"; -} - -.icon-paper::before { - content: "\ea3c"; -} - -.icon-pencil::before { - content: "\ea3d"; -} - -.icon-pin::before { - content: "\ea3e"; -} - -.icon-planet::before { - content: "\ea3f"; -} - -.icon-puzzle-10::before { - content: "\ea40"; -} - -.icon-satisfied::before { - content: "\ea41"; -} - -.icon-scissors::before { - content: "\ea42"; -} - -.icon-send::before { - content: "\ea43"; -} - -.icon-settings-gear-63::before { - content: "\ea44"; -} - -.icon-settings::before { - content: "\ea45"; -} - -.icon-simple-add::before { - content: "\ea46"; -} - -.icon-simple-delete::before { - content: "\ea47"; -} - -.icon-simple-remove::before { - content: "\ea48"; -} - -.icon-single-02::before { - content: "\ea49"; -} - -.icon-single-copy-04::before { - content: "\ea4a"; -} - -.icon-sound-wave::before { - content: "\ea4b"; -} - -.icon-spaceship::before { - content: "\ea4c"; -} - -.icon-square-pin::before { - content: "\ea4d"; -} - -.icon-support-17::before { - content: "\ea4e"; -} - -.icon-tablet-2::before { - content: "\ea4f"; -} - -.icon-tag::before { - content: "\ea50"; -} - -.icon-tap-02::before { - content: "\ea51"; -} - -.icon-tie-bow::before { - content: "\ea52"; -} - -.icon-time-alarm::before { - content: "\ea53"; -} - -.icon-trash-simple::before { - content: "\ea54"; -} - -.icon-triangle-right-17::before { - content: "\ea55"; -} - -.icon-trophy::before { - content: "\ea56"; -} - -.icon-tv-2::before { - content: "\ea57"; -} - -.icon-upload::before { - content: "\ea58"; -} - -.icon-user-run::before { - content: "\ea59"; -} - -.icon-vector::before { - content: "\ea5a"; -} - -.icon-video-66::before { - content: "\ea5b"; -} - -.icon-volume-98::before { - content: "\ea5c"; -} - -.icon-wallet-43::before { - content: "\ea5d"; -} - -.icon-watch-time::before { - content: "\ea5e"; -} - -.icon-wifi::before { - content: "\ea5f"; -} - -.icon-world::before { - content: "\ea60"; -} - -.icon-zoom-split::before { - content: "\ea61"; -} - -.icon-refresh-01::before { - content: "\ea62"; -} - -.icon-refresh-02::before { - content: "\ea63"; -} - -.icon-shape-star::before { - content: "\ea64"; -} - -.icon-components::before { - content: "\ea65"; -} diff --git a/frontend/src/assets/demo/demo.css b/frontend/src/assets/demo/demo.css deleted file mode 100644 index 3c5fdb36..00000000 --- a/frontend/src/assets/demo/demo.css +++ /dev/null @@ -1,77 +0,0 @@ -/* - ========================================================= - * Black Dashboard Angular - v1.2.0 - ========================================================= - - * Product Page: https://www.creative-tim.com/product/black-dashboard-angular - * Copyright 2020 Creative Tim (https://www.creative-tim.com) - * Licensed under MIT (https://github.com/creativetimofficial/argon-dashboard/blob/master/LICENSE.md) - - ========================================================= - -* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -*/ -.tim-row { - margin-bottom: 20px; -} - -.tim-white-buttons { - background-color: #777777; -} - -.typography-line { - padding-left: 25%; - margin-bottom: 35px; - position: relative; - display: block; - width: 100%; -} - -.typography-line span { - bottom: 10px; - color: #c0c1c2; - display: block; - font-weight: 400; - font-size: 13px; - line-height: 13px; - left: 0; - position: absolute; - width: 260px; - text-transform: none; -} - -.tim-row { - padding-top: 60px; -} - -.tim-row h3 { - margin-top: 0; -} - -.offline-doc .page-header { - display: flex; - align-items: center; -} - -.offline-doc .footer { - position: absolute; - width: 100%; - background: transparent; - bottom: 0; - color: #fff; - z-index: 1; -} - -@media all and (min-width: 992px) { - .sidebar .nav>li.active-pro { - position: absolute; - width: 100%; - bottom: 10px; - } -} - -.card.card-upgrade .card-category { - max-width: 530px; - margin: 0 auto; -} diff --git a/frontend/src/assets/fonts/nucleo.eot b/frontend/src/assets/fonts/nucleo.eot deleted file mode 100644 index 8609095550154362574be44b0f2cc5834d525c9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26524 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 Sx4;|gl1b4=E1Mgnwf;YFur9Lz diff --git a/frontend/src/assets/fonts/nucleo.woff b/frontend/src/assets/fonts/nucleo.woff deleted file mode 100644 index 20fecf0d558c8cb40bd5ffa718c0b3cf2e6f2632..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15168 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