From 683fea59eb51e4d9d5e209fa8ec5fcfeac155d3b Mon Sep 17 00:00:00 2001 From: hyojong-song Date: Wed, 19 Sep 2018 15:46:13 +0900 Subject: [PATCH] [#4640] Update new UI source --- NOTICE | 1065 +- web/pom.xml | 93 +- web/src/main/webapp/WEB-INF/rewrite.config | 2 + web/src/main/webapp/v2/angular.json | 127 + web/src/main/webapp/v2/e2e/app.e2e-spec.ts | 14 + web/src/main/webapp/v2/e2e/app.po.ts | 11 + web/src/main/webapp/v2/e2e/tsconfig.e2e.json | 19 + web/src/main/webapp/v2/karma.conf.js | 50 + web/src/main/webapp/v2/package-lock.json | 17877 ++++++++++++++++ web/src/main/webapp/v2/package.json | 81 + web/src/main/webapp/v2/protractor.conf.js | 31 + web/src/main/webapp/v2/proxy.conf.json | 191 + .../main/webapp/v2/src/app/app.component.css | 3 + .../main/webapp/v2/src/app/app.component.html | 1 + .../main/webapp/v2/src/app/app.component.ts | 29 + web/src/main/webapp/v2/src/app/app.module.ts | 115 + .../agent-admin-chart-container.component.css | 6 + ...agent-admin-chart-container.component.html | 18 + .../agent-admin-chart-container.component.ts | 56 + .../agent-admin-chart.component.css | 6 + .../agent-admin-chart.component.html | 1 + .../agent-admin-chart.component.ts | 105 + .../components/agent-admin-chart/index.ts | 20 + .../agent-event-view-container.component.css | 4 + .../agent-event-view-container.component.html | 6 + .../agent-event-view-container.component.ts | 53 + .../agent-event-view.component.css | 25 + .../agent-event-view.component.html | 23 + .../agent-event-view.component.ts | 23 + .../agent-events-data.service.ts | 39 + .../core/components/agent-event-view/index.ts | 23 + .../agent-info-container.component.css | 21 + .../agent-info-container.component.html | 11 + .../agent-info-container.component.ts | 91 + .../agent-info/agent-info-data.service.ts | 22 + .../agent-info/agent-info.component.css | 96 + .../agent-info/agent-info.component.html | 84 + .../agent-info/agent-info.component.ts | 70 + .../app/core/components/agent-info/index.ts | 26 + ...inspector-contents-container.component.css | 23 + ...nspector-contents-container.component.html | 24 + ...-inspector-contents-container.component.ts | 11 + .../agent-inspector-contents/index.ts | 28 + .../agent-list-container.component.css | 4 + .../agent-list-container.component.html | 5 + .../agent-list-container.component.ts | 92 + .../agent-list/agent-list.component.css | 0 .../agent-list/agent-list.component.html | 8 + .../agent-list/agent-list.component.ts | 102 + .../app/core/components/agent-list/index.ts | 22 + ...anagement-contents-container.component.css | 3 + ...nagement-contents-container.component.html | 1 + ...management-contents-container.component.ts | 29 + .../agent-management-contents/index.ts | 22 + .../agent-manager-container.component.css | 30 + .../agent-manager-container.component.html | 21 + .../agent-manager-container.component.ts | 86 + .../agent-manager-data.service.ts | 52 + .../agent-manager/agent-manager.component.css | 62 + .../agent-manager.component.html | 17 + .../agent-manager/agent-manager.component.ts | 49 + .../core/components/agent-manager/index.ts | 26 + ...agent-search-input-container.component.css | 41 + ...gent-search-input-container.component.html | 11 + .../agent-search-input-container.component.ts | 56 + .../components/agent-search-input/index.ts | 21 + .../agent-list-data.service.ts | 24 + ...gent-stat-contents-container.component.css | 0 ...ent-stat-contents-container.component.html | 2 + ...agent-stat-contents-container.component.ts | 33 + .../components/agent-stat-contents/index.ts | 26 + ...alarm-rule-create-and-update.component.css | 88 + ...larm-rule-create-and-update.component.html | 56 + .../alarm-rule-create-and-update.component.ts | 118 + .../alarm-rule-data.service.ts | 93 + .../alarm-rule-list-container.component.css | 80 + .../alarm-rule-list-container.component.html | 54 + .../alarm-rule-list-container.component.ts | 218 + .../alarm-rule-list.component.css | 52 + .../alarm-rule-list.component.html | 12 + .../alarm-rule-list.component.ts | 45 + .../core/components/alarm-rule-list/index.ts | 29 + .../components/angular-split/angular-split.ts | 4 + .../components/split.component.ts | 594 + .../components/splitArea.directive.ts | 176 + .../components/splitGutter.directive.ts | 139 + .../angular-split/interface/IArea.ts | 7 + .../angular-split/interface/IPoint.ts | 4 + .../modules/angularSplit.module.ts | 38 + ...inspector-contents-container.component.css | 24 + ...nspector-contents-container.component.html | 27 + ...-inspector-contents-container.component.ts | 21 + .../application-inspector-contents/index.ts | 28 + ...on-inspector-title-container.component.css | 25 + ...n-inspector-title-container.component.html | 3 + ...ion-inspector-title-container.component.ts | 74 + .../application-inspector-title/index.ts | 20 + ...pector-usage-guide-container.component.css | 31 + ...ector-usage-guide-container.component.html | 4 + ...spector-usage-guide-container.component.ts | 20 + .../index.ts | 18 + .../application-list-data.service.ts | 30 + ...onfiguration-alarm-container.component.css | 32 + ...nfiguration-alarm-container.component.html | 37 + ...configuration-alarm-container.component.ts | 164 + ...-for-configuration-container.component.css | 3 + ...for-configuration-container.component.html | 7 + ...t-for-configuration-container.component.ts | 60 + ...ation-list-for-configuration.component.css | 46 + ...tion-list-for-configuration.component.html | 8 + ...cation-list-for-configuration.component.ts | 29 + ...on-list-for-header-container.component.css | 87 + ...n-list-for-header-container.component.html | 46 + ...ion-list-for-header-container.component.ts | 267 + .../application-list-for-header.component.css | 39 + ...application-list-for-header.component.html | 12 + .../application-list-for-header.component.ts | 73 + ...t-interaction-for-configuration.service.ts | 16 + ...t-for-configuration-container.component.ts | 46 + .../core/components/application-list/index.ts | 39 + ...n-name-issue-popup-container.component.css | 5 + ...-name-issue-popup-container.component.html | 6 + ...on-name-issue-popup-container.component.ts | 83 + ...application-name-issue-popup.component.css | 51 + ...pplication-name-issue-popup.component.html | 12 + .../application-name-issue-popup.component.ts | 18 + .../application-name-issue-popup/index.ts | 21 + ...uthentication-list-container.component.css | 25 + ...thentication-list-container.component.html | 28 + ...authentication-list-container.component.ts | 11 + .../authentication-list.component.css | 22 + .../authentication-list.component.html | 15 + .../authentication-list.component.ts | 11 + .../components/authentication-list/index.ts | 21 + .../call-tree-container.component.css | 0 .../call-tree-container.component.html | 11 + .../call-tree-container.component.ts | 194 + .../call-tree/call-tree.component.css | 97 + .../call-tree/call-tree.component.html | 8 + .../call-tree/call-tree.component.ts | 344 + .../app/core/components/call-tree/index.ts | 27 + .../command-group-container.component.css | 3 + .../command-group-container.component.html | 3 + .../command-group-container.component.ts | 25 + .../command-group/command-group.component.css | 21 + .../command-group.component.html | 4 + .../command-group/command-group.component.ts | 21 + .../core/components/command-group/index.ts | 23 + .../configuration-popup-alarm.component.css | 11 + .../configuration-popup-alarm.component.html | 8 + .../configuration-popup-alarm.component.ts | 12 + ...onfiguration-popup-container.component.css | 18 + ...nfiguration-popup-container.component.html | 1 + ...configuration-popup-container.component.ts | 31 + ...tion-popup-general-container.component.css | 78 + ...ion-popup-general-container.component.html | 68 + ...ation-popup-general-container.component.ts | 24 + ...uration-popup-help-container.component.css | 88 + ...ration-popup-help-container.component.html | 45 + ...guration-popup-help-container.component.ts | 11 + ...popup-installation-container.component.css | 14 + ...opup-installation-container.component.html | 12 + ...-popup-installation-container.component.ts | 65 + ...uration-popup-installation-data.service.ts | 25 + ...p-installation-download-link.component.css | 17 + ...-installation-download-link.component.html | 2 + ...up-installation-download-link.component.ts | 13 + ...stallation-jvm-argument-info.component.css | 61 + ...tallation-jvm-argument-info.component.html | 8 + ...nstallation-jvm-argument-info.component.ts | 33 + ...onfiguration-popup-usergroup.component.css | 11 + ...nfiguration-popup-usergroup.component.html | 11 + ...configuration-popup-usergroup.component.ts | 11 + .../configuration-popup.component.css | 82 + .../configuration-popup.component.html | 14 + .../configuration-popup.component.ts | 124 + .../components/configuration-popup/index.ts | 68 + ...r-for-filtered-map-container.component.css | 8 + ...-for-filtered-map-container.component.html | 10 + ...or-for-filtered-map-container.component.ts | 58 + ...r-transaction-list-container.component.css | 8 + ...-transaction-list-container.component.html | 10 + ...or-transaction-list-container.component.ts | 58 + .../components/data-load-indicator/index.ts | 23 + .../date-format-container.component.css | 3 + .../date-format-container.component.html | 6 + .../date-format-container.component.ts | 41 + .../date-format/date-format.component.css | 26 + .../date-format/date-format.component.html | 5 + .../date-format/date-format.component.ts | 27 + .../app/core/components/date-format/index.ts | 21 + ...d-duplication-check-container.component.ts | 99 + ...agent-id-duplication-check-data.service.ts | 32 + ...d-duplication-check-interaction.service.ts | 15 + ...e-duplication-check-container.component.ts | 99 + ...ion-name-duplication-check-data.service.ts | 31 + ...e-duplication-check-interaction.service.ts | 15 + .../duplication-check-container.component.css | 3 + ...duplication-check-container.component.html | 7 + .../duplication-check.component.css | 86 + .../duplication-check.component.html | 7 + .../duplication-check.component.ts | 37 + .../components/duplication-check/index.ts | 32 + ...inspector-contents-container.component.css | 12 + ...nspector-contents-container.component.html | 3 + ...-inspector-contents-container.component.ts | 21 + .../empty-inspector-contents/index.ts | 18 + ...filter-information-container.component.css | 42 + ...ilter-information-container.component.html | 17 + .../filter-information-container.component.ts | 91 + .../components/filter-information/index.ts | 1 + ...ction-wizard-popup-container.component.css | 18 + ...tion-wizard-popup-container.component.html | 7 + ...action-wizard-popup-container.component.ts | 96 + ...ter-transaction-wizard-popup.component.css | 241 + ...er-transaction-wizard-popup.component.html | 95 + ...lter-transaction-wizard-popup.component.ts | 120 + .../filter-transaction-wizard-popup/index.ts | 24 + ...tered-map-contents-container.component.css | 17 + ...ered-map-contents-container.component.html | 6 + ...ltered-map-contents-container.component.ts | 30 + .../components/filtered-map-contents/index.ts | 27 + ...fixed-period-mover-container.component.css | 0 ...ixed-period-mover-container.component.html | 8 + .../fixed-period-mover-container.component.ts | 69 + .../fixed-period-mover.component.css | 17 + .../fixed-period-mover.component.html | 5 + .../fixed-period-mover.component.ts | 42 + .../components/fixed-period-mover/index.ts | 20 + .../group-member-container.component.css | 49 + .../group-member-container.component.html | 18 + .../group-member-container.component.ts | 149 + .../group-member/group-member-data.service.ts | 62 + .../group-member-interaction.service.ts | 16 + .../group-member/group-member.component.css | 31 + .../group-member/group-member.component.html | 12 + .../group-member/group-member.component.ts | 28 + .../app/core/components/group-member/index.ts | 29 + .../help-viewer-popup-container.component.css | 86 + ...help-viewer-popup-container.component.html | 8 + .../help-viewer-popup-container.component.ts | 212 + .../help-viewer-popup.component.css | 72 + .../help-viewer-popup.component.html | 17 + .../help-viewer-popup.component.ts | 13 + .../components/help-viewer-popup/index.ts | 21 + ...und-range-selector-container.component.css | 4 + ...nd-range-selector-container.component.html | 8 + ...ound-range-selector-container.component.ts | 75 + ...onfiguration-popup-container.component.css | 4 + ...nfiguration-popup-container.component.html | 7 + ...configuration-popup-container.component.ts | 33 + ...ound-outbound-range-selector.component.css | 108 + ...und-outbound-range-selector.component.html | 21 + ...bound-outbound-range-selector.component.ts | 63 + .../inbound-outbound-range-selector/index.ts | 23 + .../core/components/info-per-server/index.ts | 31 + .../info-per-server-container.component.css | 116 + .../info-per-server-container.component.html | 29 + .../info-per-server-container.component.ts | 138 + ...r-for-filtered-map-container.component.css | 113 + ...-for-filtered-map-container.component.html | 29 + ...er-for-filtered-map-container.component.ts | 133 + ...ctive-thread-chart-container.component.css | 25 + ...tive-thread-chart-container.component.html | 10 + ...active-thread-chart-container.component.ts | 250 + .../agent-active-thread-chart-data.service.ts | 24 + .../agent-cpu-chart-container.component.css | 25 + .../agent-cpu-chart-container.component.html | 10 + .../agent-cpu-chart-container.component.ts | 213 + .../agent-cpu-chart-data.service.ts | 24 + ...-data-source-chart-container.component.css | 29 + ...data-source-chart-container.component.html | 26 + ...t-data-source-chart-container.component.ts | 275 + .../agent-data-source-chart-data.service.ts | 31 + ...-data-source-chart-infotable.component.css | 24 + ...data-source-chart-infotable.component.html | 35 + ...t-data-source-chart-infotable.component.ts | 14 + ...a-source-chart-select-source.component.css | 40 + ...-source-chart-select-source.component.html | 12 + ...ta-source-chart-select-source.component.ts | 49 + .../agent-direct-buffer-chart-data.service.ts | 24 + ...buffer-count-chart-container.component.css | 25 + ...uffer-count-chart-container.component.html | 10 + ...-buffer-count-chart-container.component.ts | 178 + ...uffer-memory-chart-container.component.css | 25 + ...ffer-memory-chart-container.component.html | 10 + ...buffer-memory-chart-container.component.ts | 190 + ...ent-jvm-heap-chart-container.component.css | 25 + ...nt-jvm-heap-chart-container.component.html | 10 + ...gent-jvm-heap-chart-container.component.ts | 282 + ...jvm-non-heap-chart-container.component.css | 25 + ...vm-non-heap-chart-container.component.html | 10 + ...-jvm-non-heap-chart-container.component.ts | 282 + ...buffer-count-chart-container.component.css | 25 + ...uffer-count-chart-container.component.html | 10 + ...-buffer-count-chart-container.component.ts | 171 + ...uffer-memory-chart-container.component.css | 25 + ...ffer-memory-chart-container.component.html | 10 + ...buffer-memory-chart-container.component.ts | 187 + .../agent-memory-chart-data.service.ts | 24 + ...e-descriptor-chart-container.component.css | 25 + ...-descriptor-chart-container.component.html | 10 + ...le-descriptor-chart-container.component.ts | 171 + ...open-file-descriptor-chart-data.service.ts | 24 + ...esponse-time-chart-container.component.css | 25 + ...sponse-time-chart-container.component.html | 10 + ...response-time-chart-container.component.ts | 214 + .../agent-response-time-chart-data.service.ts | 24 + .../agent-tps-chart-container.component.css | 25 + .../agent-tps-chart-container.component.html | 10 + .../agent-tps-chart-container.component.ts | 251 + .../agent-tps-chart-data.service.ts | 24 + ...ctive-thread-chart-container.component.css | 25 + ...tive-thread-chart-container.component.html | 10 + ...active-thread-chart-container.component.ts | 237 + ...cation-active-thread-chart-data.service.ts | 24 + .../application-cpu-chart-data.service.ts | 24 + ...-data-source-chart-container.component.css | 25 + ...data-source-chart-container.component.html | 20 + ...n-data-source-chart-container.component.ts | 227 + ...lication-data-source-chart-data.service.ts | 29 + ...-data-source-chart-soucelist.component.css | 55 + ...data-source-chart-soucelist.component.html | 14 + ...n-data-source-chart-soucelist.component.ts | 45 + ...cation-direct-buffer-chart-data.service.ts | 24 + ...buffer-count-chart-container.component.css | 25 + ...uffer-count-chart-container.component.html | 10 + ...-buffer-count-chart-container.component.ts | 201 + ...uffer-memory-chart-container.component.css | 25 + ...ffer-memory-chart-container.component.html | 10 + ...buffer-memory-chart-container.component.ts | 217 + ...tion-jvm-cpu-chart-container.component.css | 25 + ...ion-jvm-cpu-chart-container.component.html | 10 + ...ation-jvm-cpu-chart-container.component.ts | 224 + ...ion-jvm-heap-chart-container.component.css | 25 + ...on-jvm-heap-chart-container.component.html | 10 + ...tion-jvm-heap-chart-container.component.ts | 239 + ...jvm-non-heap-chart-container.component.css | 25 + ...vm-non-heap-chart-container.component.html | 10 + ...-jvm-non-heap-chart-container.component.ts | 237 + ...buffer-count-chart-container.component.css | 25 + ...uffer-count-chart-container.component.html | 10 + ...-buffer-count-chart-container.component.ts | 201 + ...uffer-memory-chart-container.component.css | 25 + ...ffer-memory-chart-container.component.html | 10 + ...buffer-memory-chart-container.component.ts | 217 + .../application-memory-chart-data.service.ts | 24 + ...e-descriptor-chart-container.component.css | 25 + ...-descriptor-chart-container.component.html | 10 + ...le-descriptor-chart-container.component.ts | 201 + ...open-file-descriptor-chart-data.service.ts | 24 + ...esponse-time-chart-container.component.css | 25 + ...sponse-time-chart-container.component.html | 10 + ...response-time-chart-container.component.ts | 237 + ...cation-response-time-chart-data.service.ts | 24 + ...n-system-cpu-chart-container.component.css | 25 + ...-system-cpu-chart-container.component.html | 10 + ...on-system-cpu-chart-container.component.ts | 224 + ...lication-tps-chart-container.component.css | 25 + ...ication-tps-chart-container.component.html | 10 + ...plication-tps-chart-container.component.ts | 237 + .../application-tps-chart-data.service.ts | 24 + .../inspector-chart/chart-data.service.ts | 17 + .../core/components/inspector-chart/index.ts | 153 + .../inspector-chart-container.ts | 161 + .../inspector-chart.component.css | 25 + .../inspector-chart.component.html | 6 + .../inspector-chart.component.ts | 188 + .../inspector-chart/no-data.component.css | 16 + .../inspector-chart/no-data.component.html | 1 + .../inspector-chart/no-data.component.ts | 25 + .../inspector-chart/retry.component.css | 9 + .../inspector-chart/retry.component.html | 4 + .../inspector-chart/retry.component.ts | 30 + .../transaction-view-chart-container.ts | 148 + ...ion-view-cpu-chart-container.component.css | 8 + ...on-view-cpu-chart-container.component.html | 11 + ...tion-view-cpu-chart-container.component.ts | 189 + ...transaction-view-cpu-chart-data.service.ts | 33 + ...iew-jvm-heap-chart-container.component.css | 8 + ...ew-jvm-heap-chart-container.component.html | 11 + ...view-jvm-heap-chart-container.component.ts | 265 + ...jvm-non-heap-chart-container.component.css | 9 + ...vm-non-heap-chart-container.component.html | 11 + ...-jvm-non-heap-chart-container.component.ts | 265 + ...nsaction-view-memory-chart-data.service.ts | 33 + .../components/link-context-popup/index.ts | 23 + ...link-context-popup-container.component.css | 3 + ...ink-context-popup-container.component.html | 5 + .../link-context-popup-container.component.ts | 78 + .../link-context-popup.component.css | 37 + .../link-context-popup.component.html | 4 + .../link-context-popup.component.ts | 21 + .../app/core/components/load-chart/index.ts | 29 + ...tered-map-side-bar-container.component.css | 34 + ...ered-map-side-bar-container.component.html | 20 + ...ltered-map-side-bar-container.component.ts | 157 + ...or-info-per-server-container.component.css | 29 + ...r-info-per-server-container.component.html | 19 + ...for-info-per-server-container.component.ts | 102 + ...chart-for-side-bar-container.component.css | 34 + ...hart-for-side-bar-container.component.html | 20 + ...-chart-for-side-bar-container.component.ts | 163 + .../load-chart/load-chart.component.css | 6 + .../load-chart/load-chart.component.html | 1 + .../load-chart/load-chart.component.ts | 138 + .../core/components/main-contents/index.ts | 27 + .../main-contents-container.component.css | 17 + .../main-contents-container.component.html | 6 + .../main-contents-container.component.ts | 28 + .../core/components/message-popup/index.ts | 22 + .../message-popup-container.component.css | 18 + .../message-popup-container.component.html | 4 + .../message-popup-container.component.ts | 24 + .../message-popup/message-popup.component.css | 75 + .../message-popup.component.html | 13 + .../message-popup/message-popup.component.ts | 18 + .../src/app/core/components/notice/index.ts | 18 + .../notice/notice-container.component.css | 22 + .../notice/notice-container.component.html | 4 + .../notice/notice-container.component.ts | 41 + .../core/components/period-selector/index.ts | 27 + .../period-selector-container.component.css | 0 .../period-selector-container.component.html | 14 + .../period-selector-container.component.ts | 119 + ...riod-selector-using-calendar.component.css | 145 + ...iod-selector-using-calendar.component.html | 70 + ...eriod-selector-using-calendar.component.ts | 122 + ...selector-using-reserved-time.component.css | 28 + ...elector-using-reserved-time.component.html | 8 + ...-selector-using-reserved-time.component.ts | 28 + .../period-selector.component.css | 59 + .../period-selector.component.html | 27 + .../period-selector.component.ts | 72 + .../core/components/pinpoint-user/index.ts | 36 + .../pinpoint-user-container.component.css | 56 + .../pinpoint-user-container.component.html | 41 + .../pinpoint-user-container.component.ts | 261 + ...point-user-create-and-update.component.css | 50 + ...oint-user-create-and-update.component.html | 41 + ...npoint-user-create-and-update.component.ts | 101 + .../pinpoint-user-data.service.ts | 67 + .../pinpoint-user-interaction.service.ts | 29 + .../pinpoint-user/pinpoint-user.component.css | 33 + .../pinpoint-user.component.html | 13 + .../pinpoint-user/pinpoint-user.component.ts | 49 + .../app/core/components/real-time/index.ts | 38 + .../real-time-agent-chart.component.css | 55 + .../real-time-agent-chart.component.html | 17 + .../real-time-agent-chart.component.ts | 23 + .../real-time/real-time-chart.component.css | 52 + .../real-time/real-time-chart.component.html | 13 + .../real-time/real-time-chart.component.ts | 204 + .../real-time-container.component.css | 118 + .../real-time-container.component.html | 40 + .../real-time-container.component.ts | 329 + .../real-time-paging-container.component.css | 77 + .../real-time-paging-container.component.html | 26 + .../real-time-paging-container.component.ts | 182 + .../real-time-total-chart.component.css | 93 + .../real-time-total-chart.component.html | 39 + .../real-time-total-chart.component.ts | 23 + .../real-time/real-time-websocket.service.ts | 242 + .../real-time/resize-top.directive.ts | 61 + .../response-summary-chart/index.ts | 28 + ...tered-map-side-bar-container.component.css | 34 + ...ered-map-side-bar-container.component.html | 20 + ...ltered-map-side-bar-container.component.ts | 156 + ...or-info-per-server-container.component.css | 33 + ...r-info-per-server-container.component.html | 20 + ...for-info-per-server-container.component.ts | 93 + ...chart-for-side-bar-container.component.css | 30 + ...hart-for-side-bar-container.component.html | 20 + ...-chart-for-side-bar-container.component.ts | 161 + .../response-summary-chart.component.css | 6 + .../response-summary-chart.component.html | 1 + .../response-summary-chart.component.ts | 135 + .../scatter-chart-axis-renderer.class.ts | 250 + .../class/scatter-chart-data-block.class.ts | 183 + .../scatter-chart-data-load-manager.class.ts | 142 + .../scatter-chart-grid-renderer.class.ts | 96 + .../scatter-chart-mouse-manager.class.ts | 332 + .../scatter-chart-renderer-manager.class.ts | 247 + ...ter-chart-size-coordinate-manager.class.ts | 123 + ...er-chart-transaction-type-manager.class.ts | 53 + .../class/scatter-chart.class.ts | 520 + .../core/components/scatter-chart/index.ts | 45 + .../scatter-chart-container.component.css | 19 + .../scatter-chart-container.component.html | 42 + .../scatter-chart-container.component.ts | 291 + .../scatter-chart-data.service.ts | 144 + .../scatter-chart-download-plugin.ts | 52 + ...ap-info-per-server-container.component.css | 19 + ...p-info-per-server-container.component.html | 42 + ...map-info-per-server-container.component.ts | 227 + ...tered-map-side-bar-container.component.css | 19 + ...ered-map-side-bar-container.component.html | 42 + ...ltered-map-side-bar-container.component.ts | 238 + ...r-full-screen-mode-container.component.css | 17 + ...-full-screen-mode-container.component.html | 42 + ...or-full-screen-mode-container.component.ts | 236 + ...or-info-per-server-container.component.css | 19 + ...r-info-per-server-container.component.html | 42 + ...for-info-per-server-container.component.ts | 222 + .../scatter-chart-interaction.service.ts | 86 + .../scatter-chart-message-plugin.ts | 46 + .../scatter-chart-options.component.css | 21 + .../scatter-chart-options.component.html | 6 + .../scatter-chart-options.component.ts | 20 + .../scatter-chart-setting-popup.component.css | 58 + ...scatter-chart-setting-popup.component.html | 17 + .../scatter-chart-setting-popup.component.ts | 32 + .../scatter-chart-state-view.component.css | 36 + .../scatter-chart-state-view.component.html | 8 + .../scatter-chart-state-view.component.ts | 53 + .../scatter-chart/scatter-chart-util.ts | 45 + .../scatter-chart/scatter-chart.component.css | 30 + .../scatter-chart.component.html | 5 + .../scatter-chart/scatter-chart.component.ts | 175 + .../core/components/search-period/index.ts | 21 + .../search-period-container.component.css | 5 + .../search-period-container.component.html | 5 + .../search-period-container.component.ts | 31 + .../search-period/search-period.component.css | 25 + .../search-period.component.html | 4 + .../search-period/search-period.component.ts | 24 + .../components/server-and-agent-list/index.ts | 27 + ...ver-and-agent-list-container.component.css | 0 ...er-and-agent-list-container.component.html | 7 + ...rver-and-agent-list-container.component.ts | 114 + .../server-and-agent-list-data.service.ts | 25 + .../server-and-agent-list.component.css | 68 + .../server-and-agent-list.component.html | 18 + .../server-and-agent-list.component.ts | 37 + .../app/core/components/server-list/index.ts | 24 + .../server-list-container.component.css | 0 .../server-list-container.component.html | 8 + .../server-list-container.component.ts | 47 + .../server-list/server-list.component.css | 97 + .../server-list/server-list.component.html | 17 + .../server-list/server-list.component.ts | 36 + .../server-map-context-popup/index.ts | 21 + ...-map-context-popup-container.component.css | 3 + ...map-context-popup-container.component.html | 6 + ...r-map-context-popup-container.component.ts | 44 + .../server-map-context-popup.component.css | 40 + .../server-map-context-popup.component.html | 11 + .../server-map-context-popup.component.ts | 42 + .../components/server-map-options/index.ts | 20 + ...server-map-options-container.component.css | 4 + ...erver-map-options-container.component.html | 11 + .../server-map-options-container.component.ts | 91 + .../server-map-options.component.css | 130 + .../server-map-options.component.html | 36 + .../server-map-options.component.ts | 92 + .../server-map-search-result-viewer/index.ts | 20 + ...arch-result-viewer-container.component.css | 0 ...rch-result-viewer-container.component.html | 7 + ...earch-result-viewer-container.component.ts | 72 + ...ver-map-search-result-viewer.component.css | 81 + ...er-map-search-result-viewer.component.html | 13 + ...rver-map-search-result-viewer.component.ts | 47 + .../core/components/server-map/class/index.ts | 10 + .../server-map/class/link-group.class.ts | 40 + .../class/merge-server-map-data.class.ts | 134 + .../class/multi-connect-node-group.class.ts | 120 + .../server-map/class/node-group.class.ts | 99 + .../server-map/class/server-map-data.class.ts | 382 + .../server-map-diagram-with-gojs.class.ts | 262 + .../server-map-diagram-with-visjs.class.ts | 299 + .../class/server-map-diagram.class.ts | 51 + .../server-map/class/server-map-factory.ts | 26 + .../server-map-template-with-gojs.class.ts | 635 + .../server-map/class/server-map-template.ts | 111 + .../server-map/class/server-map-theme.ts | 122 + .../app/core/components/server-map/index.ts | 44 + .../server-map-container.component.css | 56 + .../server-map-container.component.html | 27 + .../server-map-container.component.ts | 215 + .../server-map/server-map-data.service.ts | 35 + ...p-for-filtered-map-container.component.css | 56 + ...-for-filtered-map-container.component.html | 28 + ...ap-for-filtered-map-container.component.ts | 258 + ...erver-map-for-filtered-map-data.service.ts | 83 + ...r-transaction-list-container.component.css | 0 ...-transaction-list-container.component.html | 16 + ...or-transaction-list-container.component.ts | 96 + ...r-transaction-view-container.component.css | 0 ...-transaction-view-container.component.html | 18 + ...or-transaction-view-container.component.ts | 61 + .../server-map-interaction.service.ts | 48 + .../server-map-overview.component.css | 10 + .../server-map-overview.component.html | 1 + .../server-map-overview.component.ts | 47 + .../server-map/server-map.component.css | 14 + .../server-map/server-map.component.html | 1 + .../server-map/server-map.component.ts | 129 + .../server-map/server-map.interface.ts | 18 + .../core/components/server-status/index.ts | 1 + .../server-status-container.component.css | 41 + .../server-status-container.component.html | 8 + .../server-status-container.component.ts | 91 + .../core/components/side-bar-title/index.ts | 24 + .../side-bar-title-container.component.css | 5 + .../side-bar-title-container.component.html | 8 + .../side-bar-title-container.component.ts | 121 + .../side-bar-title.component.css | 45 + .../side-bar-title.component.html | 18 + .../side-bar-title.component.ts | 33 + .../src/app/core/components/side-bar/index.ts | 37 + .../side-bar/side-bar-container.component.css | 40 + .../side-bar-container.component.html | 21 + .../side-bar/side-bar-container.component.ts | 75 + ...r-for-filtered-map-container.component.css | 40 + ...-for-filtered-map-container.component.html | 22 + ...ar-for-filtered-map-container.component.ts | 58 + .../app/core/components/state-button/index.ts | 25 + ...n-for-filtered-map-container.component.css | 3 + ...-for-filtered-map-container.component.html | 7 + ...on-for-filtered-map-container.component.ts | 53 + ...r-transaction-list-container.component.css | 3 + ...-transaction-list-container.component.html | 7 + ...or-transaction-list-container.component.ts | 33 + .../state-button/state-button.component.css | 4 + .../state-button/state-button.component.html | 3 + .../state-button/state-button.component.ts | 64 + .../syntax-highlight-popup/index.ts | 31 + .../syntax-highlight-data.service.ts | 35 + ...ax-highlight-popup-container.component.css | 18 + ...x-highlight-popup-container.component.html | 6 + ...tax-highlight-popup-container.component.ts | 42 + .../syntax-highlight-popup.component.css | 81 + .../syntax-highlight-popup.component.html | 27 + .../syntax-highlight-popup.component.ts | 33 + .../app/core/components/target-list/index.ts | 23 + .../target-list-container.component.css | 63 + .../target-list-container.component.html | 23 + .../target-list-container.component.ts | 172 + .../target-list/target-list.component.css | 42 + .../target-list/target-list.component.html | 8 + .../target-list/target-list.component.ts | 28 + .../active-thread-dump-list-data.service.ts | 52 + .../core/components/thread-dump-list/index.ts | 24 + .../thread-dump-list-container.component.css | 17 + .../thread-dump-list-container.component.html | 21 + .../thread-dump-list-container.component.ts | 93 + .../thread-dump-list.component.css | 76 + .../thread-dump-list.component.html | 8 + .../thread-dump-list.component.ts | 147 + ...ve-thread-dump-detail-info-data.service.ts | 55 + .../core/components/thread-dump-log/index.ts | 23 + .../thread-dump-log-container.component.css | 9 + .../thread-dump-log-container.component.html | 2 + .../thread-dump-log-container.component.ts | 66 + .../thread-dump-log-interaction.service.ts | 20 + .../timeline-command-group/index.ts | 22 + ...line-command-group-container.component.css | 6 + ...ine-command-group-container.component.html | 3 + ...eline-command-group-container.component.ts | 43 + .../timeline-command-group.component.css | 42 + .../timeline-command-group.component.html | 12 + .../timeline-command-group.component.ts | 28 + ...inspector-timeline-container.component.css | 4 + ...nspector-timeline-container.component.html | 13 + ...-inspector-timeline-container.component.ts | 149 + .../timeline/agent-timeline-data.service.ts | 42 + ...inspector-timeline-container.component.css | 4 + ...nspector-timeline-container.component.html | 13 + ...-inspector-timeline-container.component.ts | 152 + .../core/components/timeline/class/index.ts | 13 + .../class/timeline-background.class.ts | 17 + .../timeline/class/timeline-data.class.ts | 88 + .../timeline/class/timeline-events.class.ts | 127 + .../timeline/class/timeline-handler.class.ts | 87 + .../class/timeline-loading-indicator.class.ts | 52 + .../class/timeline-position-manager.class.ts | 254 + .../class/timeline-selection-manager.class.ts | 179 + .../class/timeline-selection-point.class.ts | 24 + .../class/timeline-selection-zone.class.ts | 36 + .../class/timeline-signboard.class.ts | 45 + .../class/timeline-state-line.class.ts | 119 + .../timeline/class/timeline-ui-event.ts | 46 + .../timeline/class/timeline-x-axis.class.ts | 40 + .../timeline/class/timeline.class.ts | 386 + .../src/app/core/components/timeline/index.ts | 28 + .../timeline/timeline-interaction.service.ts | 64 + .../timeline/timeline.component.css | 91 + .../timeline/timeline.component.html | 1 + .../components/timeline/timeline.component.ts | 103 + .../src/app/core/components/timezone/index.ts | 21 + .../timezone-select-container.component.css | 3 + .../timezone-select-container.component.html | 5 + .../timezone-select-container.component.ts | 43 + .../timezone/timezone-select.component.css | 26 + .../timezone/timezone-select.component.html | 5 + .../timezone/timezone-select.component.ts | 24 + .../transaction-detail-contents/index.ts | 35 + ...on-detail-contents-container.component.css | 24 + ...n-detail-contents-container.component.html | 15 + ...ion-detail-contents-container.component.ts | 40 + .../transaction-detail-menu/index.ts | 26 + ...action-detail-menu-container.component.css | 0 ...ction-detail-menu-container.component.html | 8 + ...saction-detail-menu-container.component.ts | 110 + ...il-menu-for-detail-container.component.css | 0 ...l-menu-for-detail-container.component.html | 8 + ...ail-menu-for-detail-container.component.ts | 79 + .../transaction-detail-menu.component.css | 38 + .../transaction-detail-menu.component.html | 10 + .../transaction-detail-menu.component.ts | 59 + .../transaction-list-bottom-contents/index.ts | 37 + ...st-bottom-contents-container.component.css | 26 + ...t-bottom-contents-container.component.html | 21 + ...ist-bottom-contents-container.component.ts | 103 + .../components/transaction-search/index.ts | 23 + ...transaction-search-container.component.css | 3 + ...ransaction-search-container.component.html | 6 + .../transaction-search-container.component.ts | 73 + .../transaction-search-interaction.service.ts | 34 + .../transaction-search.component.css | 60 + .../transaction-search.component.html | 13 + .../transaction-search.component.ts | 37 + .../transaction-short-info/index.ts | 21 + ...saction-short-info-container.component.css | 22 + ...action-short-info-container.component.html | 6 + ...nsaction-short-info-container.component.ts | 41 + .../transaction-table-grid/index.ts | 28 + .../transaction-meta-data.service.ts | 191 + ...saction-table-grid-container.component.css | 8 + ...action-table-grid-container.component.html | 10 + ...nsaction-table-grid-container.component.ts | 156 + .../transaction-table-grid.component.css | 78 + .../transaction-table-grid.component.html | 8 + .../transaction-table-grid.component.ts | 190 + .../components/transaction-timeline/index.ts | 20 + ...ansaction-timeline-container.component.css | 6 + ...nsaction-timeline-container.component.html | 10 + ...ransaction-timeline-container.component.ts | 125 + .../transaction-timeline.component.css | 50 + .../transaction-timeline.component.html | 14 + .../transaction-timeline.component.ts | 102 + .../transaction-view-bottom-contents/index.ts | 32 + ...ew-bottom-contents-container.component.css | 5 + ...w-bottom-contents-container.component.html | 5 + ...iew-bottom-contents-container.component.ts | 11 + .../transaction-view-top-contents/index.ts | 22 + ...-view-top-contents-container.component.css | 55 + ...view-top-contents-container.component.html | 11 + ...n-view-top-contents-container.component.ts | 79 + .../app/core/components/user-group/index.ts | 34 + .../user-group-container.component.css | 57 + .../user-group-container.component.html | 35 + .../user-group-container.component.ts | 139 + ...user-group-create-and-update.component.css | 50 + ...ser-group-create-and-update.component.html | 15 + .../user-group-create-and-update.component.ts | 41 + .../user-group/user-group-data.service.ts | 67 + .../user-group-interaction.service.ts | 16 + .../user-group/user-group.component.css | 31 + .../user-group/user-group.component.html | 12 + .../user-group/user-group.component.ts | 42 + .../v2/src/app/core/httpInterceptor/index.ts | 7 + .../httpInterceptor/marking-interceptor.ts | 40 + .../v2/src/app/core/models/application.ts | 30 + .../webapp/v2/src/app/core/models/end-time.ts | 34 + .../webapp/v2/src/app/core/models/filter.ts | 129 + .../webapp/v2/src/app/core/models/index.ts | 4 + .../webapp/v2/src/app/core/models/period.ts | 68 + .../app/core/utils/chart-data-param-maker.ts | 21 + .../src/app/core/utils/filter-param-maker.ts | 23 + .../v2/src/app/core/utils/hint-param-maker.ts | 93 + web/src/main/webapp/v2/src/app/index.ts | 2 + .../admin-page/admin-page.component.css | 28 + .../admin-page/admin-page.component.html | 11 + .../routes/admin-page/admin-page.component.ts | 14 + .../routes/admin-page/admin-page.routing.ts | 29 + .../v2/src/app/routes/admin-page/index.ts | 23 + .../browser-support-page.component.css | 60 + .../browser-support-page.component.html | 14 + .../browser-support-page.component.ts | 66 + .../browser-support-page.routing.ts | 21 + .../app/routes/browser-support-page/index.ts | 17 + .../filtered-map-page.component.css | 29 + .../filtered-map-page.component.html | 17 + .../filtered-map-page.component.ts | 13 + .../filtered-map-page.routing.ts | 143 + .../src/app/routes/filtered-map-page/index.ts | 34 + .../v2/src/app/routes/inspector-page/index.ts | 43 + .../inspector-page.component.css | 42 + .../inspector-page.component.html | 22 + .../inspector-page.component.ts | 63 + .../inspector-page/inspector-page.routing.ts | 55 + .../v2/src/app/routes/main-page/index.ts | 39 + .../routes/main-page/main-page.component.css | 37 + .../routes/main-page/main-page.component.html | 20 + .../routes/main-page/main-page.component.ts | 45 + .../app/routes/main-page/main-page.routing.ts | 170 + .../v2/src/app/routes/real-time-page/index.ts | 21 + .../real-time-page.component.css | 32 + .../real-time-page.component.html | 13 + .../real-time-page.component.ts | 37 + .../real-time-page/real-time-page.routing.ts | 38 + .../scatter-full-screen-mode-page/index.ts | 26 + ...catter-full-screen-mode-page.component.css | 28 + ...atter-full-screen-mode-page.component.html | 14 + ...scatter-full-screen-mode-page.component.ts | 40 + .../scatter-full-screen-mode-page.routing.ts | 56 + .../src/app/routes/thread-dump-page/index.ts | 25 + .../thread-dump-page.component.css | 43 + .../thread-dump-page.component.html | 18 + .../thread-dump-page.component.ts | 39 + .../thread-dump-page.routing.ts | 45 + .../routes/transaction-detail-page/index.ts | 27 + .../transaction-detail-page.component.css | 34 + .../transaction-detail-page.component.html | 14 + .../transaction-detail-page.component.ts | 43 + .../transaction-detail-page.routing.ts | 68 + .../app/routes/transaction-list-page/index.ts | 38 + .../transaction-list-empty.component.ts | 32 + .../transaction-list-page.component.css | 17 + .../transaction-list-page.component.html | 19 + .../transaction-list-page.component.ts | 27 + .../transaction-list-page.routing.ts | 70 + .../app/routes/transaction-view-page/index.ts | 35 + .../transaction-view-page.component.css | 10 + .../transaction-view-page.component.html | 18 + .../transaction-view-page.component.ts | 54 + .../transaction-view-page.routing.ts | 55 + .../empty-contents.component.css | 11 + .../empty-contents.component.html | 3 + .../empty-contents.component.spec.ts | 25 + .../empty-contents.component.ts | 25 + .../shared/components/empty-contents/index.ts | 2 + .../empty-contents/none.component.ts | 10 + .../film-for-disable.component.css | 7 + .../film-for-disable.component.html | 1 + .../film-for-disable.component.ts | 21 + .../components/film-for-disable/index.ts | 1 + .../header-logo/header-logo.component.css | 14 + .../header-logo/header-logo.component.html | 5 + .../header-logo/header-logo.component.ts | 18 + .../shared/components/header-logo/index.ts | 1 + .../v2/src/app/shared/components/index.ts | 5 + .../app/shared/components/loading/index.ts | 1 + .../components/loading/loading.component.css | 5 + .../components/loading/loading.component.html | 1 + .../components/loading/loading.component.ts | 30 + .../shared/components/page-not-found/index.ts | 1 + .../page-not-found.component.css | 0 .../page-not-found.component.html | 5 + .../page-not-found.component.ts | 15 + .../simple-progress-slider/index.ts | 1 + .../simple-progress-slider.component.css | 132 + .../simple-progress-slider.component.html | 19 + .../simple-progress-slider.component.ts | 145 + .../shared/components/url-redirector/index.ts | 1 + .../url-redirector.component.ts | 59 + .../directives/context-popup.directive.ts | 8 + .../v2/src/app/shared/directives/index.ts | 9 + .../directives/search-input.directive.ts | 83 + .../directives/setting-height.directive.ts | 38 + .../shared/directives/splitter.directive.ts | 20 + .../main/webapp/v2/src/app/shared/index.ts | 107 + .../v2/src/app/shared/models/app-state.ts | 4 + .../webapp/v2/src/app/shared/models/index.ts | 3 + .../v2/src/app/shared/models/url-path-id.ts | 142 + .../v2/src/app/shared/models/url-path.ts | 31 + .../v2/src/app/shared/models/url-query.ts | 54 + .../webapp/v2/src/app/shared/pipes/index.ts | 7 + .../app/shared/pipes/json-text-parser.pipe.ts | 45 + .../v2/src/app/shared/pipes/safe-html.pipe.ts | 13 + .../services/agent-histogram-data.service.ts | 117 + .../ajax-exception-checker.service.ts | 11 + .../app/shared/services/analytics.service.ts | 110 + .../application-list-resolver.service.ts | 14 + .../services/browser-support-check.service.ts | 55 + .../component-default-setting-data.service.ts | 86 + .../shared/services/dynamic-popup.service.ts | 118 + .../shared/services/gutter-event.service.ts | 30 + .../v2/src/app/shared/services/index.ts | 23 + .../new-url-state-notification.service.ts | 182 + .../services/route-info-collector.service.ts | 42 + .../services/server-time-data.service.ts | 24 + .../services/server-time-resolver.service.ts | 14 + .../shared/services/split-ratio.service.ts | 20 + .../shared/services/store-helper.service.ts | 178 + .../system-configuration-data.service.ts | 46 + .../system-configuration-resolver.service.ts | 12 + .../transaction-detail-data.service.ts | 61 + .../services/transaction-view-type.service.ts | 70 + .../services/translate-replace.service.ts | 13 + .../services/url-route-manager.service.ts | 139 + .../app/shared/services/url-validate.guard.ts | 90 + .../services/web-app-setting-data.service.ts | 227 + .../app/shared/services/window-ref.service.ts | 12 + .../v2/src/app/shared/store/admin.reducer.ts | 16 + .../app/shared/store/agent-info.reducer.ts | 17 + ...t-selection-for-info-per-server.reducer.ts | 17 + .../agent-selection-for-side-bar.reducer.ts | 17 + .../shared/store/application-list.reducer.ts | 17 + .../app/shared/store/date-format.reducer.ts | 16 + .../favorite-application-list.reducer.ts | 31 + .../webapp/v2/src/app/shared/store/index.ts | 163 + .../store/inspector-chart-hover.reducer.ts | 16 + .../app/shared/store/load-chart.reducer.ts | 18 + .../store/response-summary-chart.reducer.ts | 18 + .../store/scatter-chart-real-time.reducer.ts | 20 + .../app/shared/store/scatter-chart.reducer.ts | 17 + .../shared/store/server-and-agent.reducer.ts | 16 + .../app/shared/store/server-list.reducer.ts | 17 + .../store/server-map-loading-state.reducer.ts | 16 + .../server-map-selected-target.reducer.ts | 32 + .../app/shared/store/server-map.reducer.ts | 17 + .../app/shared/store/target-list.reducer.ts | 20 + .../src/app/shared/store/timeline.reducer.ts | 74 + .../src/app/shared/store/timezone.reducer.ts | 16 + .../store/transaction-detail-data.reducer.ts | 21 + .../shared/store/transaction-info.reducer.ts | 22 + .../src/app/shared/store/ui-state.reducer.ts | 43 + web/src/main/webapp/v2/src/assets/.gitkeep | 0 .../css/fontawesome-all.css | 2861 +++ .../css/fontawesome-all.min.css | 5 + .../less/_animated.less | 19 + .../less/_bordered-pulled.less | 16 + .../fontawesome-free-5.0.10/less/_core.less | 12 + .../less/_fixed-width.less | 6 + .../fontawesome-free-5.0.10/less/_icons.less | 878 + .../fontawesome-free-5.0.10/less/_larger.less | 27 + .../fontawesome-free-5.0.10/less/_list.less | 18 + .../fontawesome-free-5.0.10/less/_mixins.less | 57 + .../less/_rotated-flipped.less | 23 + .../less/_screen-reader.less | 5 + .../less/_stacked.less | 22 + .../less/_variables.less | 887 + .../less/fa-brands.less | 21 + .../less/fa-regular.less | 22 + .../less/fa-solid.less | 23 + .../less/fontawesome.less | 16 + .../scss/_animated.scss | 20 + .../scss/_bordered-pulled.scss | 20 + .../fontawesome-free-5.0.10/scss/_core.scss | 16 + .../scss/_fixed-width.scss | 6 + .../fontawesome-free-5.0.10/scss/_icons.scss | 878 + .../fontawesome-free-5.0.10/scss/_larger.scss | 23 + .../fontawesome-free-5.0.10/scss/_list.scss | 18 + .../fontawesome-free-5.0.10/scss/_mixins.scss | 57 + .../scss/_rotated-flipped.scss | 23 + .../scss/_screen-reader.scss | 5 + .../scss/_stacked.scss | 31 + .../scss/_variables.scss | 891 + .../scss/fa-brands.scss | 21 + .../scss/fa-regular.scss | 22 + .../scss/fa-solid.scss | 23 + .../scss/fontawesome.scss | 16 + .../webfonts/fa-brands-400.eot | Bin 0 -> 99704 bytes .../webfonts/fa-brands-400.svg | 1017 + .../webfonts/fa-brands-400.ttf | Bin 0 -> 99468 bytes .../webfonts/fa-brands-400.woff | Bin 0 -> 64392 bytes .../webfonts/fa-brands-400.woff2 | Bin 0 -> 55144 bytes .../webfonts/fa-regular-400.eot | Bin 0 -> 30788 bytes .../webfonts/fa-regular-400.svg | 366 + .../webfonts/fa-regular-400.ttf | Bin 0 -> 30560 bytes .../webfonts/fa-regular-400.woff | Bin 0 -> 14672 bytes .../webfonts/fa-regular-400.woff2 | Bin 0 -> 12216 bytes .../webfonts/fa-solid-900.eot | Bin 0 -> 115148 bytes .../webfonts/fa-solid-900.svg | 1644 ++ .../webfonts/fa-solid-900.ttf | Bin 0 -> 114928 bytes .../webfonts/fa-solid-900.woff | Bin 0 -> 55484 bytes .../webfonts/fa-solid-900.woff2 | Bin 0 -> 44068 bytes .../main/webapp/v2/src/assets/fonts/fonts.css | 70 + .../nanum/nanum-gothic-v8-korean-700.eot | Bin 0 -> 458074 bytes .../nanum/nanum-gothic-v8-korean-700.svg | 488 + .../nanum/nanum-gothic-v8-korean-700.ttf | Bin 0 -> 1249028 bytes .../nanum/nanum-gothic-v8-korean-700.woff | Bin 0 -> 609732 bytes .../nanum/nanum-gothic-v8-korean-700.woff2 | Bin 0 -> 434408 bytes .../nanum/nanum-gothic-v8-korean-800.eot | Bin 0 -> 437129 bytes .../nanum/nanum-gothic-v8-korean-800.svg | 498 + .../nanum/nanum-gothic-v8-korean-800.ttf | Bin 0 -> 1261632 bytes .../nanum/nanum-gothic-v8-korean-800.woff | Bin 0 -> 597164 bytes .../nanum/nanum-gothic-v8-korean-800.woff2 | Bin 0 -> 417148 bytes .../nanum/nanum-gothic-v8-korean-regular.eot | Bin 0 -> 453792 bytes .../nanum/nanum-gothic-v8-korean-regular.svg | 483 + .../nanum/nanum-gothic-v8-korean-regular.ttf | Bin 0 -> 1378264 bytes .../nanum/nanum-gothic-v8-korean-regular.woff | Bin 0 -> 621768 bytes .../nanum-gothic-v8-korean-regular.woff2 | Bin 0 -> 430316 bytes .../opensans/open-sans-v15-latin-600.eot | Bin 0 -> 15599 bytes .../opensans/open-sans-v15-latin-600.svg | 336 + .../opensans/open-sans-v15-latin-600.ttf | Bin 0 -> 27496 bytes .../opensans/open-sans-v15-latin-600.woff | Bin 0 -> 18296 bytes .../opensans/open-sans-v15-latin-600.woff2 | Bin 0 -> 14544 bytes .../opensans/open-sans-v15-latin-700.eot | Bin 0 -> 15667 bytes .../opensans/open-sans-v15-latin-700.svg | 334 + .../opensans/open-sans-v15-latin-700.ttf | Bin 0 -> 28192 bytes .../opensans/open-sans-v15-latin-700.woff | Bin 0 -> 18476 bytes .../opensans/open-sans-v15-latin-700.woff2 | Bin 0 -> 14720 bytes .../opensans/open-sans-v15-latin-800.eot | Bin 0 -> 15742 bytes .../opensans/open-sans-v15-latin-800.svg | 336 + .../opensans/open-sans-v15-latin-800.ttf | Bin 0 -> 28160 bytes .../opensans/open-sans-v15-latin-800.woff | Bin 0 -> 18644 bytes .../opensans/open-sans-v15-latin-800.woff2 | Bin 0 -> 14740 bytes .../opensans/open-sans-v15-latin-regular.eot | Bin 0 -> 15050 bytes .../opensans/open-sans-v15-latin-regular.svg | 336 + .../opensans/open-sans-v15-latin-regular.ttf | Bin 0 -> 26488 bytes .../opensans/open-sans-v15-latin-regular.woff | Bin 0 -> 17704 bytes .../open-sans-v15-latin-regular.woff2 | Bin 0 -> 14048 bytes .../main/webapp/v2/src/assets/i18n/en.json | 768 + .../main/webapp/v2/src/assets/i18n/ko.json | 767 + .../v2/src/assets/img/bg-title-group3.png | Bin 0 -> 1009 bytes .../webapp/v2/src/assets/img/bidirect_off.png | Bin 0 -> 1031 bytes .../webapp/v2/src/assets/img/bidirect_on.png | Bin 0 -> 1112 bytes .../src/assets/img/card-btn-arrow-right.png | Bin 0 -> 972 bytes .../main/webapp/v2/src/assets/img/chart1.gif | Bin 0 -> 2254 bytes .../main/webapp/v2/src/assets/img/chart2.gif | Bin 0 -> 2071 bytes .../main/webapp/v2/src/assets/img/chart3.gif | Bin 0 -> 7716 bytes .../main/webapp/v2/src/assets/img/chart4.gif | Bin 0 -> 2778 bytes .../main/webapp/v2/src/assets/img/chart5.gif | Bin 0 -> 5817 bytes .../main/webapp/v2/src/assets/img/chrome.png | Bin 0 -> 2456 bytes .../main/webapp/v2/src/assets/img/edge.png | Bin 0 -> 2322 bytes .../main/webapp/v2/src/assets/img/firefox.png | Bin 0 -> 2825 bytes .../main/webapp/v2/src/assets/img/handle.png | Bin 0 -> 20145 bytes .../v2/src/assets/img/icon-ABX-WEB-ALPHA.png | Bin 0 -> 3680 bytes .../v2/src/assets/img/icon-UNKNOWN-GROUP.png | Bin 0 -> 1723 bytes .../webapp/v2/src/assets/img/icon-alert.png | Bin 0 -> 1011 bytes .../v2/src/assets/img/icon-app-select1.png | Bin 0 -> 2402 bytes .../v2/src/assets/img/icon-app-select2.png | Bin 0 -> 2192 bytes .../webapp/v2/src/assets/img/icon-arrow.png | Bin 0 -> 1075 bytes .../v2/src/assets/img/icon-calendar-arrow.png | Bin 0 -> 947 bytes .../webapp/v2/src/assets/img/icon-close.png | Bin 0 -> 1043 bytes .../v2/src/assets/img/icon-disconnect.png | Bin 0 -> 1277 bytes .../webapp/v2/src/assets/img/icon-down.png | Bin 0 -> 1342 bytes .../webapp/v2/src/assets/img/icon-error.png | Bin 0 -> 1225 bytes .../v2/src/assets/img/icon-file-glass.png | Bin 0 -> 1306 bytes .../src/assets/img/icon-header-tool-group.png | Bin 0 -> 1127 bytes .../src/assets/img/icons/ACTIVEMQ_CLIENT.png | Bin 0 -> 2464 bytes .../img/icons/ACTIVEMQ_CLIENT_GROUP.png | Bin 0 -> 2464 bytes .../src/assets/img/icons/AKKA_HTTP_SERVER.png | Bin 0 -> 1392 bytes .../webapp/v2/src/assets/img/icons/APACHE.png | Bin 0 -> 2486 bytes .../webapp/v2/src/assets/img/icons/ARCUS.png | Bin 0 -> 1351 bytes .../v2/src/assets/img/icons/BACKEND.png | Bin 0 -> 2842 bytes .../webapp/v2/src/assets/img/icons/BLOC.png | Bin 0 -> 1224 bytes .../v2/src/assets/img/icons/CASSANDRA.png | Bin 0 -> 3048 bytes .../webapp/v2/src/assets/img/icons/CLIENT.png | Bin 0 -> 3447 bytes .../webapp/v2/src/assets/img/icons/CUBRID.png | Bin 0 -> 2103 bytes .../v2/src/assets/img/icons/CUBRID_GROUP.png | Bin 0 -> 2103 bytes .../src/assets/img/icons/DUBBO_PROVIDER.png | Bin 0 -> 2750 bytes .../assets/img/icons/DUBBO_PROVIDER_GROUP.png | Bin 0 -> 2750 bytes .../webapp/v2/src/assets/img/icons/ETC.png | Bin 0 -> 856 bytes .../webapp/v2/src/assets/img/icons/JBOSS.png | Bin 0 -> 1519 bytes .../webapp/v2/src/assets/img/icons/JETTY.png | Bin 0 -> 3195 bytes .../webapp/v2/src/assets/img/icons/JEUS.png | Bin 0 -> 3576 bytes .../v2/src/assets/img/icons/JEUS_GROUP.png | Bin 0 -> 3576 bytes .../v2/src/assets/img/icons/MARIADB.png | Bin 0 -> 2647 bytes .../v2/src/assets/img/icons/MARIADB_GROUP.png | Bin 0 -> 2647 bytes .../v2/src/assets/img/icons/MEMCACHED.png | Bin 0 -> 2641 bytes .../v2/src/assets/img/icons/MONGODB.png | Bin 0 -> 1542 bytes .../v2/src/assets/img/icons/MONGODB_GROUP.png | Bin 0 -> 1542 bytes .../v2/src/assets/img/icons/MSSQLSERVER.png | Bin 0 -> 2254 bytes .../assets/img/icons/MSSQLSERVER_GROUP.png | Bin 0 -> 2247 bytes .../webapp/v2/src/assets/img/icons/MYSQL.png | Bin 0 -> 2113 bytes .../v2/src/assets/img/icons/MYSQL_GROUP.png | Bin 0 -> 2090 bytes .../webapp/v2/src/assets/img/icons/NBASE.png | Bin 0 -> 1159 bytes .../v2/src/assets/img/icons/NBASE_ARC.png | Bin 0 -> 2899 bytes .../src/assets/img/icons/NBASE_ARC_GROUP.png | Bin 0 -> 2899 bytes .../v2/src/assets/img/icons/NBASE_T.png | Bin 0 -> 1159 bytes .../webapp/v2/src/assets/img/icons/NGINX.png | Bin 0 -> 1441 bytes .../src/assets/img/icons/NO_IMAGE_FOUND.png | Bin 0 -> 596 bytes .../webapp/v2/src/assets/img/icons/ORACLE.png | Bin 0 -> 1968 bytes .../v2/src/assets/img/icons/ORACLE_GROUP.png | Bin 0 -> 1968 bytes .../webapp/v2/src/assets/img/icons/OWFS.png | Bin 0 -> 2533 bytes .../v2/src/assets/img/icons/OWFS_GROUP.png | Bin 0 -> 2533 bytes .../webapp/v2/src/assets/img/icons/PHP.png | Bin 0 -> 2326 bytes .../v2/src/assets/img/icons/POSTGRESQL.png | Bin 0 -> 2310 bytes .../src/assets/img/icons/POSTGRESQL_GROUP.png | Bin 0 -> 2310 bytes .../webapp/v2/src/assets/img/icons/QUEUE.png | Bin 0 -> 159 bytes .../src/assets/img/icons/RABBITMQ_CLIENT.png | Bin 0 -> 3407 bytes .../img/icons/RABBITMQ_CLIENT_GROUP.png | Bin 0 -> 3407 bytes .../webapp/v2/src/assets/img/icons/REDIS.png | Bin 0 -> 2265 bytes .../webapp/v2/src/assets/img/icons/RESIN.png | Bin 0 -> 2322 bytes .../v2/src/assets/img/icons/RESIN_GROUP.png | Bin 0 -> 2322 bytes .../v2/src/assets/img/icons/SPRING_BOOT.png | Bin 0 -> 2099 bytes .../v2/src/assets/img/icons/STAND_ALONE.png | Bin 0 -> 2142 bytes .../webapp/v2/src/assets/img/icons/TOMCAT.png | Bin 0 -> 3769 bytes .../v2/src/assets/img/icons/UNAUTHORIZED.png | Bin 0 -> 1638 bytes .../v2/src/assets/img/icons/UNDEFINED.png | Bin 0 -> 1436 bytes .../src/assets/img/icons/UNDEFINED_GROUP.png | Bin 0 -> 1436 bytes .../v2/src/assets/img/icons/UNKNOWN.png | Bin 0 -> 1532 bytes .../v2/src/assets/img/icons/UNKNOWN_CLOUD.png | Bin 0 -> 2211 bytes .../v2/src/assets/img/icons/UNKNOWN_GROUP.png | Bin 0 -> 1786 bytes .../webapp/v2/src/assets/img/icons/USER.png | Bin 0 -> 1517 bytes .../webapp/v2/src/assets/img/icons/USER1.png | Bin 0 -> 3223 bytes .../webapp/v2/src/assets/img/icons/VERTX.png | Bin 0 -> 1699 bytes .../v2/src/assets/img/icons/WEBLOGIC.png | Bin 0 -> 4627 bytes .../v2/src/assets/img/icons/WEBSPHERE.png | Bin 0 -> 2941 bytes .../webapp/v2/src/assets/img/icons/filter.png | Bin 0 -> 1098 bytes .../webapp/v2/src/assets/img/icons/ng.png | Bin 0 -> 3325 bytes .../webapp/v2/src/assets/img/icons/sq.png | Bin 0 -> 2116 bytes .../main/webapp/v2/src/assets/img/logo.png | Bin 0 -> 1861 bytes .../main/webapp/v2/src/assets/img/safari.png | Bin 0 -> 6094 bytes .../v2/src/assets/img/select-down-arrow.png | Bin 0 -> 968 bytes .../assets/img/servermap/ACTIVEMQ_CLIENT.png | Bin 0 -> 5279 bytes .../img/servermap/ACTIVEMQ_CLIENT_GROUP.png | Bin 0 -> 10390 bytes .../assets/img/servermap/AKKA_HTTP_SERVER.png | Bin 0 -> 2274 bytes .../v2/src/assets/img/servermap/APACHE.png | Bin 0 -> 7606 bytes .../src/assets/img/servermap/APACHE_GROUP.png | Bin 0 -> 13294 bytes .../v2/src/assets/img/servermap/ARCUS.png | Bin 0 -> 3678 bytes .../src/assets/img/servermap/ARCUS_GROUP.png | Bin 0 -> 4157 bytes .../v2/src/assets/img/servermap/BACKEND.png | Bin 0 -> 2842 bytes .../assets/img/servermap/BACKEND_GROUP.png | Bin 0 -> 2842 bytes .../v2/src/assets/img/servermap/BLOC.png | Bin 0 -> 2293 bytes .../src/assets/img/servermap/BLOC_GROUP.png | Bin 0 -> 1876 bytes .../v2/src/assets/img/servermap/CASSANDRA.png | Bin 0 -> 8313 bytes .../assets/img/servermap/CASSANDRA_GROUP.png | Bin 0 -> 14854 bytes .../v2/src/assets/img/servermap/CUBRID.png | Bin 0 -> 2868 bytes .../src/assets/img/servermap/CUBRID_GROUP.png | Bin 0 -> 3750 bytes .../v2/src/assets/img/servermap/DUBBO.png | Bin 0 -> 7976 bytes .../src/assets/img/servermap/DUBBO_GROUP.png | Bin 0 -> 25610 bytes .../v2/src/assets/img/servermap/ERROR.png | Bin 0 -> 2541 bytes .../v2/src/assets/img/servermap/ERROR_s.png | Bin 0 -> 2725 bytes .../v2/src/assets/img/servermap/FILTER.png | Bin 0 -> 1324 bytes .../v2/src/assets/img/servermap/FILTER_s.png | Bin 0 -> 2940 bytes .../v2/src/assets/img/servermap/JAVA.png | Bin 0 -> 5816 bytes .../src/assets/img/servermap/JAVA_GROUP.png | Bin 0 -> 12836 bytes .../v2/src/assets/img/servermap/JBOSS.png | Bin 0 -> 3739 bytes .../src/assets/img/servermap/JBOSS_GROUP.png | Bin 0 -> 2435 bytes .../v2/src/assets/img/servermap/JETTY.png | Bin 0 -> 4343 bytes .../src/assets/img/servermap/JETTY_GROUP.png | Bin 0 -> 13002 bytes .../v2/src/assets/img/servermap/JEUS.png | Bin 0 -> 9993 bytes .../src/assets/img/servermap/JEUS_GROUP.png | Bin 0 -> 9993 bytes .../v2/src/assets/img/servermap/MARIADB.png | Bin 0 -> 4610 bytes .../assets/img/servermap/MARIADB_GROUP.png | Bin 0 -> 8432 bytes .../v2/src/assets/img/servermap/MEMCACHED.png | Bin 0 -> 4895 bytes .../assets/img/servermap/MEMCACHED_GROUP.png | Bin 0 -> 6316 bytes .../v2/src/assets/img/servermap/MONGODB.png | Bin 0 -> 3829 bytes .../assets/img/servermap/MONGODB_GROUP.png | Bin 0 -> 6954 bytes .../src/assets/img/servermap/MSSQLSERVER.png | Bin 0 -> 7993 bytes .../img/servermap/MSSQLSERVER_GROUP.png | Bin 0 -> 10723 bytes .../v2/src/assets/img/servermap/MYSQL.png | Bin 0 -> 10628 bytes .../src/assets/img/servermap/MYSQL_GROUP.png | Bin 0 -> 10628 bytes .../v2/src/assets/img/servermap/NBASE.png | Bin 0 -> 2452 bytes .../v2/src/assets/img/servermap/NBASE_ARC.png | Bin 0 -> 2405 bytes .../assets/img/servermap/NBASE_ARC_GROUP.png | Bin 0 -> 28831 bytes .../src/assets/img/servermap/NBASE_GROUP.png | Bin 0 -> 2092 bytes .../v2/src/assets/img/servermap/NBASE_T.png | Bin 0 -> 2452 bytes .../assets/img/servermap/NBASE_T_GROUP.png | Bin 0 -> 2092 bytes .../v2/src/assets/img/servermap/NGINX.png | Bin 0 -> 3309 bytes .../src/assets/img/servermap/NGINX_GROUP.png | Bin 0 -> 4245 bytes .../assets/img/servermap/NO_IMAGE_FOUND.png | Bin 0 -> 1874 bytes .../v2/src/assets/img/servermap/ORACLE.png | Bin 0 -> 3664 bytes .../src/assets/img/servermap/ORACLE_GROUP.png | Bin 0 -> 5806 bytes .../v2/src/assets/img/servermap/OWFS.png | Bin 0 -> 11135 bytes .../src/assets/img/servermap/OWFS_GROUP.png | Bin 0 -> 11135 bytes .../v2/src/assets/img/servermap/PHP.png | Bin 0 -> 4672 bytes .../src/assets/img/servermap/POSTGRESQL.png | Bin 0 -> 7110 bytes .../assets/img/servermap/POSTGRESQL_GROUP.png | Bin 0 -> 42763 bytes .../v2/src/assets/img/servermap/QUEUE.png | Bin 0 -> 159 bytes .../src/assets/img/servermap/QUEUE_GROUP.png | Bin 0 -> 159 bytes .../assets/img/servermap/RABBITMQ_CLIENT.png | Bin 0 -> 18421 bytes .../img/servermap/RABBITMQ_CLIENT_GROUP.png | Bin 0 -> 18421 bytes .../v2/src/assets/img/servermap/REDIS.png | Bin 0 -> 2890 bytes .../src/assets/img/servermap/REDIS_GROUP.png | Bin 0 -> 2801 bytes .../v2/src/assets/img/servermap/RESIN.png | Bin 0 -> 34460 bytes .../src/assets/img/servermap/RESIN_GROUP.png | Bin 0 -> 34460 bytes .../src/assets/img/servermap/SPRING_BOOT.png | Bin 0 -> 2226 bytes .../img/servermap/SPRING_BOOT_GROUP.png | Bin 0 -> 5897 bytes .../src/assets/img/servermap/STAND_ALONE.png | Bin 0 -> 4131 bytes .../src/assets/img/servermap/STAND_ALONE2.png | Bin 0 -> 6805 bytes .../img/servermap/STAND_ALONE_GROUP.png | Bin 0 -> 8821 bytes .../v2/src/assets/img/servermap/TOMCAT.png | Bin 0 -> 4131 bytes .../src/assets/img/servermap/TOMCAT_GROUP.png | Bin 0 -> 9614 bytes .../src/assets/img/servermap/UNAUTHORIZED.png | Bin 0 -> 2140 bytes .../img/servermap/UNAUTHORIZED_GROUP.png | Bin 0 -> 1879 bytes .../v2/src/assets/img/servermap/UNDEFINED.png | Bin 0 -> 2677 bytes .../assets/img/servermap/UNDEFINED_GROUP.png | Bin 0 -> 4305 bytes .../v2/src/assets/img/servermap/UNKNOWN.png | Bin 0 -> 2234 bytes .../assets/img/servermap/UNKNOWN_GROUP.png | Bin 0 -> 2599 bytes .../v2/src/assets/img/servermap/USER.png | Bin 0 -> 2293 bytes .../src/assets/img/servermap/USER_GROUP.png | Bin 0 -> 2899 bytes .../v2/src/assets/img/servermap/VERTX.png | Bin 0 -> 3736 bytes .../src/assets/img/servermap/VERTX_GROUP.png | Bin 0 -> 3736 bytes .../v2/src/assets/img/servermap/WEBLOGIC.png | Bin 0 -> 3304 bytes .../v2/src/assets/img/servermap/WEBSPHERE.png | Bin 0 -> 28574 bytes .../v2/src/assets/img/text-layer-arrow.png | Bin 0 -> 1062 bytes .../v2/src/assets/lib/hljs/highlight.pack.js | 2 + .../v2/src/assets/lib/hljs/styles/agate.css | 108 + .../assets/lib/hljs/styles/androidstudio.css | 66 + .../assets/lib/hljs/styles/arduino-light.css | 88 + .../v2/src/assets/lib/hljs/styles/arta.css | 73 + .../v2/src/assets/lib/hljs/styles/ascetic.css | 45 + .../lib/hljs/styles/atelier-cave-dark.css | 83 + .../lib/hljs/styles/atelier-cave-light.css | 85 + .../lib/hljs/styles/atelier-dune-dark.css | 69 + .../lib/hljs/styles/atelier-dune-light.css | 69 + .../lib/hljs/styles/atelier-estuary-dark.css | 84 + .../lib/hljs/styles/atelier-estuary-light.css | 84 + .../lib/hljs/styles/atelier-forest-dark.css | 69 + .../lib/hljs/styles/atelier-forest-light.css | 69 + .../lib/hljs/styles/atelier-heath-dark.css | 69 + .../lib/hljs/styles/atelier-heath-light.css | 69 + .../lib/hljs/styles/atelier-lakeside-dark.css | 69 + .../hljs/styles/atelier-lakeside-light.css | 69 + .../lib/hljs/styles/atelier-plateau-dark.css | 84 + .../lib/hljs/styles/atelier-plateau-light.css | 84 + .../lib/hljs/styles/atelier-savanna-dark.css | 84 + .../lib/hljs/styles/atelier-savanna-light.css | 84 + .../lib/hljs/styles/atelier-seaside-dark.css | 69 + .../lib/hljs/styles/atelier-seaside-light.css | 69 + .../hljs/styles/atelier-sulphurpool-dark.css | 69 + .../hljs/styles/atelier-sulphurpool-light.css | 69 + .../assets/lib/hljs/styles/atom-one-dark.css | 96 + .../assets/lib/hljs/styles/atom-one-light.css | 96 + .../assets/lib/hljs/styles/brown-paper.css | 64 + .../assets/lib/hljs/styles/brown-papersq.png | Bin 0 -> 18198 bytes .../assets/lib/hljs/styles/codepen-embed.css | 60 + .../assets/lib/hljs/styles/color-brewer.css | 71 + .../v2/src/assets/lib/hljs/styles/darcula.css | 77 + .../v2/src/assets/lib/hljs/styles/dark.css | 63 + .../v2/src/assets/lib/hljs/styles/darkula.css | 6 + .../v2/src/assets/lib/hljs/styles/default.css | 99 + .../v2/src/assets/lib/hljs/styles/docco.css | 97 + .../v2/src/assets/lib/hljs/styles/dracula.css | 76 + .../v2/src/assets/lib/hljs/styles/far.css | 71 + .../src/assets/lib/hljs/styles/foundation.css | 88 + .../assets/lib/hljs/styles/github-gist.css | 71 + .../v2/src/assets/lib/hljs/styles/github.css | 99 + .../src/assets/lib/hljs/styles/googlecode.css | 89 + .../src/assets/lib/hljs/styles/grayscale.css | 101 + .../assets/lib/hljs/styles/gruvbox-dark.css | 108 + .../assets/lib/hljs/styles/gruvbox-light.css | 108 + .../src/assets/lib/hljs/styles/hopscotch.css | 83 + .../v2/src/assets/lib/hljs/styles/hybrid.css | 102 + .../v2/src/assets/lib/hljs/styles/idea.css | 97 + .../src/assets/lib/hljs/styles/ir-black.css | 73 + .../assets/lib/hljs/styles/kimbie.dark.css | 74 + .../assets/lib/hljs/styles/kimbie.light.css | 74 + .../v2/src/assets/lib/hljs/styles/magula.css | 70 + .../src/assets/lib/hljs/styles/mono-blue.css | 59 + .../lib/hljs/styles/monokai-sublime.css | 83 + .../v2/src/assets/lib/hljs/styles/monokai.css | 70 + .../src/assets/lib/hljs/styles/obsidian.css | 88 + .../v2/src/assets/lib/hljs/styles/ocean.css | 74 + .../assets/lib/hljs/styles/paraiso-dark.css | 72 + .../assets/lib/hljs/styles/paraiso-light.css | 72 + .../src/assets/lib/hljs/styles/pojoaque.css | 83 + .../src/assets/lib/hljs/styles/pojoaque.jpg | Bin 0 -> 1186 bytes .../src/assets/lib/hljs/styles/purebasic.css | 96 + .../assets/lib/hljs/styles/qtcreator_dark.css | 83 + .../lib/hljs/styles/qtcreator_light.css | 83 + .../src/assets/lib/hljs/styles/railscasts.css | 106 + .../v2/src/assets/lib/hljs/styles/rainbow.css | 85 + .../src/assets/lib/hljs/styles/routeros.css | 108 + .../assets/lib/hljs/styles/school-book.css | 72 + .../assets/lib/hljs/styles/school-book.png | Bin 0 -> 486 bytes .../assets/lib/hljs/styles/solarized-dark.css | 84 + .../lib/hljs/styles/solarized-light.css | 84 + .../src/assets/lib/hljs/styles/sunburst.css | 102 + .../lib/hljs/styles/tomorrow-night-blue.css | 75 + .../lib/hljs/styles/tomorrow-night-bright.css | 74 + .../hljs/styles/tomorrow-night-eighties.css | 74 + .../assets/lib/hljs/styles/tomorrow-night.css | 75 + .../src/assets/lib/hljs/styles/tomorrow.css | 72 + .../v2/src/assets/lib/hljs/styles/vs.css | 68 + .../v2/src/assets/lib/hljs/styles/vs2015.css | 115 + .../v2/src/assets/lib/hljs/styles/xcode.css | 93 + .../v2/src/assets/lib/hljs/styles/xt256.css | 92 + .../v2/src/assets/lib/hljs/styles/zenburn.css | 80 + .../v2/src/environments/environment.prod.ts | 3 + .../webapp/v2/src/environments/environment.ts | 8 + web/src/main/webapp/v2/src/favicon.ico | Bin 0 -> 1406 bytes web/src/main/webapp/v2/src/favicon.png | Bin 0 -> 354 bytes web/src/main/webapp/v2/src/globals.d.ts | 324 + web/src/main/webapp/v2/src/index.html | 41 + web/src/main/webapp/v2/src/main.ts | 10 + web/src/main/webapp/v2/src/polyfills.ts | 76 + web/src/main/webapp/v2/src/styles.css | 64 + web/src/main/webapp/v2/src/test.ts | 32 + web/src/main/webapp/v2/src/tsconfig.app.json | 22 + web/src/main/webapp/v2/src/tsconfig.spec.json | 28 + web/src/main/webapp/v2/src/typings.d.ts | 7 + web/src/main/webapp/v2/tsconfig.json | 30 + web/src/main/webapp/v2/tslint.json | 128 + 1280 files changed, 88339 insertions(+), 39 deletions(-) create mode 100644 web/src/main/webapp/WEB-INF/rewrite.config create mode 100644 web/src/main/webapp/v2/angular.json create mode 100644 web/src/main/webapp/v2/e2e/app.e2e-spec.ts create mode 100644 web/src/main/webapp/v2/e2e/app.po.ts create mode 100644 web/src/main/webapp/v2/e2e/tsconfig.e2e.json create mode 100644 web/src/main/webapp/v2/karma.conf.js create mode 100644 web/src/main/webapp/v2/package-lock.json create mode 100644 web/src/main/webapp/v2/package.json create mode 100644 web/src/main/webapp/v2/protractor.conf.js create mode 100644 web/src/main/webapp/v2/proxy.conf.json create mode 100644 web/src/main/webapp/v2/src/app/app.component.css create mode 100644 web/src/main/webapp/v2/src/app/app.component.html create mode 100644 web/src/main/webapp/v2/src/app/app.component.ts create mode 100644 web/src/main/webapp/v2/src/app/app.module.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-admin-chart/agent-admin-chart-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-admin-chart/agent-admin-chart-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-admin-chart/agent-admin-chart-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-admin-chart/agent-admin-chart.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-admin-chart/agent-admin-chart.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-admin-chart/agent-admin-chart.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-admin-chart/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-event-view/agent-event-view-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-event-view/agent-event-view-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-event-view/agent-event-view-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-event-view/agent-event-view.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-event-view/agent-event-view.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-event-view/agent-event-view.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-event-view/agent-events-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-event-view/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-info/agent-info-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-info/agent-info-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-info/agent-info-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-info/agent-info-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-info/agent-info.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-info/agent-info.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-info/agent-info.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-info/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-inspector-contents/agent-inspector-contents-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-inspector-contents/agent-inspector-contents-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-inspector-contents/agent-inspector-contents-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-inspector-contents/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-list/agent-list-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-list/agent-list-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-list/agent-list-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-list/agent-list.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-list/agent-list.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-list/agent-list.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-list/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-management-contents/agent-management-contents-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-management-contents/agent-management-contents-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-management-contents/agent-management-contents-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-management-contents/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-manager/agent-manager-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-manager/agent-manager-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-manager/agent-manager-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-manager/agent-manager-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-manager/agent-manager.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-manager/agent-manager.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-manager/agent-manager.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-manager/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-search-input/agent-search-input-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-search-input/agent-search-input-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-search-input/agent-search-input-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-search-input/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-stat-contents/agent-list-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-stat-contents/agent-stat-contents-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-stat-contents/agent-stat-contents-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-stat-contents/agent-stat-contents-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/agent-stat-contents/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-create-and-update.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-create-and-update.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-create-and-update.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-list-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-list-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-list-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-list.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-list.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-list.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/angular-split/angular-split.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/angular-split/components/split.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/angular-split/components/splitArea.directive.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/angular-split/components/splitGutter.directive.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/angular-split/interface/IArea.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/angular-split/interface/IPoint.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/angular-split/modules/angularSplit.module.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-inspector-contents/application-inspector-contents-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-inspector-contents/application-inspector-contents-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-inspector-contents/application-inspector-contents-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-inspector-contents/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-inspector-title/application-inspector-title-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-inspector-title/application-inspector-title-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-inspector-title/application-inspector-title-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-inspector-title/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-inspector-usage-guide/application-inspector-usage-guide-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-inspector-usage-guide/application-inspector-usage-guide-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-inspector-usage-guide/application-inspector-usage-guide-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-inspector-usage-guide/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-list/application-list-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-configuration-alarm-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-configuration-alarm-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-configuration-alarm-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-configuration-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-configuration-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-configuration-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-configuration.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-configuration.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-configuration.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-header-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-header-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-header-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-header.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-header.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-header.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-list/application-list-interaction-for-configuration.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-list/favorite-application-list-for-configuration-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-list/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-name-issue-popup/application-name-issue-popup-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-name-issue-popup/application-name-issue-popup-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-name-issue-popup/application-name-issue-popup-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-name-issue-popup/application-name-issue-popup.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-name-issue-popup/application-name-issue-popup.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-name-issue-popup/application-name-issue-popup.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/application-name-issue-popup/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/authentication-list/authentication-list-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/authentication-list/authentication-list-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/authentication-list/authentication-list-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/authentication-list/authentication-list.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/authentication-list/authentication-list.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/authentication-list/authentication-list.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/authentication-list/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/call-tree/call-tree-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/call-tree/call-tree-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/call-tree/call-tree-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/call-tree/call-tree.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/call-tree/call-tree.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/call-tree/call-tree.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/call-tree/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/command-group/command-group-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/command-group/command-group-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/command-group/command-group-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/command-group/command-group.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/command-group/command-group.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/command-group/command-group.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/command-group/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-alarm.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-alarm.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-alarm.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-general-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-general-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-general-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-help-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-help-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-help-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-download-link.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-download-link.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-download-link.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-jvm-argument-info.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-jvm-argument-info.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-jvm-argument-info.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-usergroup.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-usergroup.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-usergroup.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/configuration-popup/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/data-load-indicator/data-load-indicator-for-filtered-map-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/data-load-indicator/data-load-indicator-for-filtered-map-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/data-load-indicator/data-load-indicator-for-filtered-map-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/data-load-indicator/data-load-indicator-for-transaction-list-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/data-load-indicator/data-load-indicator-for-transaction-list-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/data-load-indicator/data-load-indicator-for-transaction-list-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/data-load-indicator/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/date-format/date-format-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/date-format/date-format-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/date-format/date-format-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/date-format/date-format.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/date-format/date-format.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/date-format/date-format.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/date-format/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/duplication-check/agent-id-duplication-check-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/duplication-check/agent-id-duplication-check-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/duplication-check/agent-id-duplication-check-interaction.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/duplication-check/application-name-duplication-check-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/duplication-check/application-name-duplication-check-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/duplication-check/application-name-duplication-check-interaction.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/duplication-check/duplication-check-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/duplication-check/duplication-check-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/duplication-check/duplication-check.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/duplication-check/duplication-check.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/duplication-check/duplication-check.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/duplication-check/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/empty-inspector-contents/empty-inspector-contents-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/empty-inspector-contents/empty-inspector-contents-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/empty-inspector-contents/empty-inspector-contents-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/empty-inspector-contents/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/filter-information/filter-information-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/filter-information/filter-information-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/filter-information/filter-information-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/filter-information/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/filter-transaction-wizard-popup/filter-transaction-wizard-popup-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/filter-transaction-wizard-popup/filter-transaction-wizard-popup-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/filter-transaction-wizard-popup/filter-transaction-wizard-popup-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/filter-transaction-wizard-popup/filter-transaction-wizard-popup.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/filter-transaction-wizard-popup/filter-transaction-wizard-popup.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/filter-transaction-wizard-popup/filter-transaction-wizard-popup.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/filter-transaction-wizard-popup/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/filtered-map-contents/filtered-map-contents-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/filtered-map-contents/filtered-map-contents-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/filtered-map-contents/filtered-map-contents-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/filtered-map-contents/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/fixed-period-mover/fixed-period-mover-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/fixed-period-mover/fixed-period-mover-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/fixed-period-mover/fixed-period-mover-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/fixed-period-mover/fixed-period-mover.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/fixed-period-mover/fixed-period-mover.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/fixed-period-mover/fixed-period-mover.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/fixed-period-mover/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/group-member/group-member-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/group-member/group-member-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/group-member/group-member-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/group-member/group-member-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/group-member/group-member-interaction.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/group-member/group-member.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/group-member/group-member.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/group-member/group-member.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/group-member/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/help-viewer-popup/help-viewer-popup-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/help-viewer-popup/help-viewer-popup-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/help-viewer-popup/help-viewer-popup-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/help-viewer-popup/help-viewer-popup.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/help-viewer-popup/help-viewer-popup.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/help-viewer-popup/help-viewer-popup.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/help-viewer-popup/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector-for-configuration-popup-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector-for-configuration-popup-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector-for-configuration-popup-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/info-per-server/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/info-per-server/info-per-server-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/info-per-server/info-per-server-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/info-per-server/info-per-server-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/info-per-server/info-per-server-for-filtered-map-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/info-per-server/info-per-server-for-filtered-map-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/info-per-server/info-per-server-for-filtered-map-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-active-thread-chart-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-active-thread-chart-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-active-thread-chart-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-active-thread-chart-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-cpu-chart-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-cpu-chart-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-cpu-chart-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-cpu-chart-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-infotable.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-infotable.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-infotable.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-select-source.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-select-source.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-select-source.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-direct-buffer-chart-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-direct-buffer-count-chart-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-direct-buffer-count-chart-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-direct-buffer-count-chart-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-direct-buffer-memory-chart-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-direct-buffer-memory-chart-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-direct-buffer-memory-chart-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-jvm-heap-chart-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-jvm-heap-chart-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-jvm-heap-chart-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-jvm-non-heap-chart-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-jvm-non-heap-chart-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-jvm-non-heap-chart-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-mapped-buffer-count-chart-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-mapped-buffer-count-chart-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-mapped-buffer-count-chart-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-mapped-buffer-memory-chart-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-mapped-buffer-memory-chart-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-mapped-buffer-memory-chart-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-memory-chart-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-open-file-descriptor-chart-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-open-file-descriptor-chart-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-open-file-descriptor-chart-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-open-file-descriptor-chart-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-response-time-chart-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-response-time-chart-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-response-time-chart-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-response-time-chart-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-tps-chart-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-tps-chart-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-tps-chart-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-tps-chart-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-active-thread-chart-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-active-thread-chart-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-active-thread-chart-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-active-thread-chart-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-cpu-chart-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-data-source-chart-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-data-source-chart-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-data-source-chart-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-data-source-chart-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-data-source-chart-soucelist.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-data-source-chart-soucelist.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-data-source-chart-soucelist.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-direct-buffer-chart-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-direct-buffer-count-chart-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-direct-buffer-count-chart-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-direct-buffer-count-chart-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-direct-buffer-memory-chart-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-direct-buffer-memory-chart-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-direct-buffer-memory-chart-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-jvm-cpu-chart-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-jvm-cpu-chart-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-jvm-cpu-chart-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-jvm-heap-chart-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-jvm-heap-chart-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-jvm-heap-chart-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-jvm-non-heap-chart-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-jvm-non-heap-chart-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-jvm-non-heap-chart-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-mapped-buffer-count-chart-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-mapped-buffer-count-chart-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-mapped-buffer-count-chart-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-mapped-buffer-memory-chart-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-mapped-buffer-memory-chart-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-mapped-buffer-memory-chart-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-memory-chart-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-open-file-descriptor-chart-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-open-file-descriptor-chart-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-open-file-descriptor-chart-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-open-file-descriptor-chart-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-response-time-chart-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-response-time-chart-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-response-time-chart-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-response-time-chart-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-system-cpu-chart-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-system-cpu-chart-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-system-cpu-chart-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-tps-chart-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-tps-chart-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-tps-chart-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-tps-chart-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/chart-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/inspector-chart-container.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/inspector-chart.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/inspector-chart.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/inspector-chart.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/no-data.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/no-data.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/no-data.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/retry.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/retry.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/retry.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-chart-container.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-cpu-chart-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-cpu-chart-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-cpu-chart-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-cpu-chart-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-jvm-heap-chart-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-jvm-heap-chart-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-jvm-heap-chart-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-jvm-non-heap-chart-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-jvm-non-heap-chart-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-jvm-non-heap-chart-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-memory-chart-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/link-context-popup/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/link-context-popup/link-context-popup-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/link-context-popup/link-context-popup-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/link-context-popup/link-context-popup-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/link-context-popup/link-context-popup.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/link-context-popup/link-context-popup.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/link-context-popup/link-context-popup.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/load-chart/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart-for-filtered-map-side-bar-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart-for-filtered-map-side-bar-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart-for-filtered-map-side-bar-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart-for-info-per-server-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart-for-info-per-server-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart-for-info-per-server-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart-for-side-bar-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart-for-side-bar-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart-for-side-bar-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/main-contents/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/main-contents/main-contents-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/main-contents/main-contents-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/main-contents/main-contents-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/message-popup/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/message-popup/message-popup-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/message-popup/message-popup-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/message-popup/message-popup-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/message-popup/message-popup.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/message-popup/message-popup.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/message-popup/message-popup.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/notice/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/notice/notice-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/notice/notice-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/notice/notice-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/period-selector/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector-using-calendar.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector-using-calendar.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector-using-calendar.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector-using-reserved-time.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector-using-reserved-time.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector-using-reserved-time.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/pinpoint-user/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user-create-and-update.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user-create-and-update.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user-create-and-update.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user-interaction.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/real-time/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/real-time/real-time-agent-chart.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/real-time/real-time-agent-chart.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/real-time/real-time-agent-chart.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/real-time/real-time-chart.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/real-time/real-time-chart.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/real-time/real-time-chart.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/real-time/real-time-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/real-time/real-time-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/real-time/real-time-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/real-time/real-time-paging-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/real-time/real-time-paging-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/real-time/real-time-paging-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/real-time/real-time-total-chart.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/real-time/real-time-total-chart.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/real-time/real-time-total-chart.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/real-time/real-time-websocket.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/real-time/resize-top.directive.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/response-summary-chart/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart-for-filtered-map-side-bar-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart-for-filtered-map-side-bar-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart-for-filtered-map-side-bar-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart-for-info-per-server-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart-for-info-per-server-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart-for-info-per-server-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart-for-side-bar-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart-for-side-bar-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart-for-side-bar-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/class/scatter-chart-axis-renderer.class.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/class/scatter-chart-data-block.class.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/class/scatter-chart-data-load-manager.class.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/class/scatter-chart-grid-renderer.class.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/class/scatter-chart-mouse-manager.class.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/class/scatter-chart-renderer-manager.class.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/class/scatter-chart-size-coordinate-manager.class.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/class/scatter-chart-transaction-type-manager.class.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/class/scatter-chart.class.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-download-plugin.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-filtered-map-info-per-server-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-filtered-map-info-per-server-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-filtered-map-info-per-server-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-filtered-map-side-bar-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-filtered-map-side-bar-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-filtered-map-side-bar-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-full-screen-mode-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-full-screen-mode-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-full-screen-mode-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-info-per-server-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-info-per-server-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-info-per-server-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-interaction.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-message-plugin.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-options.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-options.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-options.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-setting-popup.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-setting-popup.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-setting-popup.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-state-view.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-state-view.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-state-view.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-util.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/search-period/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/search-period/search-period-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/search-period/search-period-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/search-period/search-period-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/search-period/search-period.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/search-period/search-period.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/search-period/search-period.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-and-agent-list/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-and-agent-list/server-and-agent-list-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-and-agent-list/server-and-agent-list-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-and-agent-list/server-and-agent-list-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-and-agent-list/server-and-agent-list-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-and-agent-list/server-and-agent-list.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-and-agent-list/server-and-agent-list.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-and-agent-list/server-and-agent-list.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-list/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-list/server-list-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-list/server-list-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-list/server-list-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-list/server-list.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-list/server-list.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-list/server-list.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map-context-popup/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map-context-popup/server-map-context-popup-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map-context-popup/server-map-context-popup-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map-context-popup/server-map-context-popup-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map-context-popup/server-map-context-popup.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map-context-popup/server-map-context-popup.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map-context-popup/server-map-context-popup.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map-options/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map-options/server-map-options-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map-options/server-map-options-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map-options/server-map-options-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map-options/server-map-options.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map-options/server-map-options.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map-options/server-map-options.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map-search-result-viewer/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map-search-result-viewer/server-map-search-result-viewer-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map-search-result-viewer/server-map-search-result-viewer-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map-search-result-viewer/server-map-search-result-viewer-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map-search-result-viewer/server-map-search-result-viewer.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map-search-result-viewer/server-map-search-result-viewer.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map-search-result-viewer/server-map-search-result-viewer.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map/class/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map/class/link-group.class.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map/class/merge-server-map-data.class.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map/class/multi-connect-node-group.class.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map/class/node-group.class.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map/class/server-map-data.class.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map/class/server-map-diagram-with-gojs.class.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map/class/server-map-diagram-with-visjs.class.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map/class/server-map-diagram.class.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map/class/server-map-factory.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map/class/server-map-template-with-gojs.class.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map/class/server-map-template.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map/class/server-map-theme.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map/server-map-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map/server-map-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map/server-map-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map/server-map-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-filtered-map-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-filtered-map-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-filtered-map-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-filtered-map-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-transaction-list-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-transaction-list-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-transaction-list-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-transaction-view-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-transaction-view-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-transaction-view-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map/server-map-interaction.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map/server-map-overview.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map/server-map-overview.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map/server-map-overview.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map/server-map.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map/server-map.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map/server-map.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-map/server-map.interface.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-status/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-status/server-status-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-status/server-status-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/server-status/server-status-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/side-bar-title/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/side-bar-title/side-bar-title-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/side-bar-title/side-bar-title-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/side-bar-title/side-bar-title-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/side-bar-title/side-bar-title.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/side-bar-title/side-bar-title.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/side-bar-title/side-bar-title.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/side-bar/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/side-bar/side-bar-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/side-bar/side-bar-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/side-bar/side-bar-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/side-bar/side-bar-for-filtered-map-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/side-bar/side-bar-for-filtered-map-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/side-bar/side-bar-for-filtered-map-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/state-button/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/state-button/state-button-for-filtered-map-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/state-button/state-button-for-filtered-map-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/state-button/state-button-for-filtered-map-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/state-button/state-button-for-transaction-list-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/state-button/state-button-for-transaction-list-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/state-button/state-button-for-transaction-list-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/state-button/state-button.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/state-button/state-button.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/state-button/state-button.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/syntax-highlight-popup/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/syntax-highlight-popup/syntax-highlight-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/syntax-highlight-popup/syntax-highlight-popup-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/syntax-highlight-popup/syntax-highlight-popup-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/syntax-highlight-popup/syntax-highlight-popup-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/syntax-highlight-popup/syntax-highlight-popup.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/syntax-highlight-popup/syntax-highlight-popup.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/syntax-highlight-popup/syntax-highlight-popup.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/target-list/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/target-list/target-list-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/target-list/target-list-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/target-list/target-list-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/target-list/target-list.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/target-list/target-list.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/target-list/target-list.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/thread-dump-list/active-thread-dump-list-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/thread-dump-list/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/thread-dump-list/thread-dump-list-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/thread-dump-list/thread-dump-list-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/thread-dump-list/thread-dump-list-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/thread-dump-list/thread-dump-list.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/thread-dump-list/thread-dump-list.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/thread-dump-list/thread-dump-list.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/thread-dump-log/active-thread-dump-detail-info-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/thread-dump-log/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/thread-dump-log/thread-dump-log-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/thread-dump-log/thread-dump-log-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/thread-dump-log/thread-dump-log-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/thread-dump-log/thread-dump-log-interaction.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/timeline-command-group/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/timeline-command-group/timeline-command-group-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/timeline-command-group/timeline-command-group-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/timeline-command-group/timeline-command-group-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/timeline-command-group/timeline-command-group.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/timeline-command-group/timeline-command-group.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/timeline-command-group/timeline-command-group.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/timeline/agent-inspector-timeline-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/timeline/agent-inspector-timeline-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/timeline/agent-inspector-timeline-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/timeline/agent-timeline-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/timeline/application-inspector-timeline-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/timeline/application-inspector-timeline-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/timeline/application-inspector-timeline-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/timeline/class/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-background.class.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-data.class.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-events.class.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-handler.class.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-loading-indicator.class.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-position-manager.class.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-selection-manager.class.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-selection-point.class.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-selection-zone.class.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-signboard.class.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-state-line.class.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-ui-event.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-x-axis.class.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline.class.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/timeline/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/timeline/timeline-interaction.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/timeline/timeline.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/timeline/timeline.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/timeline/timeline.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/timezone/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/timezone/timezone-select-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/timezone/timezone-select-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/timezone/timezone-select-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/timezone/timezone-select.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/timezone/timezone-select.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/timezone/timezone-select.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-detail-contents/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-detail-contents/transaction-detail-contents-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-detail-contents/transaction-detail-contents-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-detail-contents/transaction-detail-contents-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/transaction-detail-menu-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/transaction-detail-menu-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/transaction-detail-menu-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/transaction-detail-menu-for-detail-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/transaction-detail-menu-for-detail-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/transaction-detail-menu-for-detail-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/transaction-detail-menu.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/transaction-detail-menu.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/transaction-detail-menu.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-list-bottom-contents/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-list-bottom-contents/transaction-list-bottom-contents-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-list-bottom-contents/transaction-list-bottom-contents-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-list-bottom-contents/transaction-list-bottom-contents-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-search/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-search/transaction-search-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-search/transaction-search-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-search/transaction-search-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-search/transaction-search-interaction.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-search/transaction-search.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-search/transaction-search.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-search/transaction-search.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-short-info/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-short-info/transaction-short-info-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-short-info/transaction-short-info-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-short-info/transaction-short-info-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-table-grid/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-table-grid/transaction-meta-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-table-grid/transaction-table-grid-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-table-grid/transaction-table-grid-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-table-grid/transaction-table-grid-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-table-grid/transaction-table-grid.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-table-grid/transaction-table-grid.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-table-grid/transaction-table-grid.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-timeline/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-timeline/transaction-timeline-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-timeline/transaction-timeline-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-timeline/transaction-timeline-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-timeline/transaction-timeline.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-timeline/transaction-timeline.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-timeline/transaction-timeline.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-view-bottom-contents/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-view-bottom-contents/transaction-view-bottom-contents-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-view-bottom-contents/transaction-view-bottom-contents-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-view-bottom-contents/transaction-view-bottom-contents-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-view-top-contents/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-view-top-contents/transaction-view-top-contents-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-view-top-contents/transaction-view-top-contents-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/transaction-view-top-contents/transaction-view-top-contents-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/user-group/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/user-group/user-group-container.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/user-group/user-group-container.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/user-group/user-group-container.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/user-group/user-group-create-and-update.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/user-group/user-group-create-and-update.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/user-group/user-group-create-and-update.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/user-group/user-group-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/user-group/user-group-interaction.service.ts create mode 100644 web/src/main/webapp/v2/src/app/core/components/user-group/user-group.component.css create mode 100644 web/src/main/webapp/v2/src/app/core/components/user-group/user-group.component.html create mode 100644 web/src/main/webapp/v2/src/app/core/components/user-group/user-group.component.ts create mode 100644 web/src/main/webapp/v2/src/app/core/httpInterceptor/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/httpInterceptor/marking-interceptor.ts create mode 100644 web/src/main/webapp/v2/src/app/core/models/application.ts create mode 100644 web/src/main/webapp/v2/src/app/core/models/end-time.ts create mode 100644 web/src/main/webapp/v2/src/app/core/models/filter.ts create mode 100644 web/src/main/webapp/v2/src/app/core/models/index.ts create mode 100644 web/src/main/webapp/v2/src/app/core/models/period.ts create mode 100644 web/src/main/webapp/v2/src/app/core/utils/chart-data-param-maker.ts create mode 100644 web/src/main/webapp/v2/src/app/core/utils/filter-param-maker.ts create mode 100644 web/src/main/webapp/v2/src/app/core/utils/hint-param-maker.ts create mode 100644 web/src/main/webapp/v2/src/app/index.ts create mode 100644 web/src/main/webapp/v2/src/app/routes/admin-page/admin-page.component.css create mode 100644 web/src/main/webapp/v2/src/app/routes/admin-page/admin-page.component.html create mode 100644 web/src/main/webapp/v2/src/app/routes/admin-page/admin-page.component.ts create mode 100644 web/src/main/webapp/v2/src/app/routes/admin-page/admin-page.routing.ts create mode 100644 web/src/main/webapp/v2/src/app/routes/admin-page/index.ts create mode 100644 web/src/main/webapp/v2/src/app/routes/browser-support-page/browser-support-page.component.css create mode 100644 web/src/main/webapp/v2/src/app/routes/browser-support-page/browser-support-page.component.html create mode 100644 web/src/main/webapp/v2/src/app/routes/browser-support-page/browser-support-page.component.ts create mode 100644 web/src/main/webapp/v2/src/app/routes/browser-support-page/browser-support-page.routing.ts create mode 100644 web/src/main/webapp/v2/src/app/routes/browser-support-page/index.ts create mode 100644 web/src/main/webapp/v2/src/app/routes/filtered-map-page/filtered-map-page.component.css create mode 100644 web/src/main/webapp/v2/src/app/routes/filtered-map-page/filtered-map-page.component.html create mode 100644 web/src/main/webapp/v2/src/app/routes/filtered-map-page/filtered-map-page.component.ts create mode 100644 web/src/main/webapp/v2/src/app/routes/filtered-map-page/filtered-map-page.routing.ts create mode 100644 web/src/main/webapp/v2/src/app/routes/filtered-map-page/index.ts create mode 100644 web/src/main/webapp/v2/src/app/routes/inspector-page/index.ts create mode 100644 web/src/main/webapp/v2/src/app/routes/inspector-page/inspector-page.component.css create mode 100644 web/src/main/webapp/v2/src/app/routes/inspector-page/inspector-page.component.html create mode 100644 web/src/main/webapp/v2/src/app/routes/inspector-page/inspector-page.component.ts create mode 100644 web/src/main/webapp/v2/src/app/routes/inspector-page/inspector-page.routing.ts create mode 100644 web/src/main/webapp/v2/src/app/routes/main-page/index.ts create mode 100644 web/src/main/webapp/v2/src/app/routes/main-page/main-page.component.css create mode 100644 web/src/main/webapp/v2/src/app/routes/main-page/main-page.component.html create mode 100644 web/src/main/webapp/v2/src/app/routes/main-page/main-page.component.ts create mode 100644 web/src/main/webapp/v2/src/app/routes/main-page/main-page.routing.ts create mode 100644 web/src/main/webapp/v2/src/app/routes/real-time-page/index.ts create mode 100644 web/src/main/webapp/v2/src/app/routes/real-time-page/real-time-page.component.css create mode 100644 web/src/main/webapp/v2/src/app/routes/real-time-page/real-time-page.component.html create mode 100644 web/src/main/webapp/v2/src/app/routes/real-time-page/real-time-page.component.ts create mode 100644 web/src/main/webapp/v2/src/app/routes/real-time-page/real-time-page.routing.ts create mode 100644 web/src/main/webapp/v2/src/app/routes/scatter-full-screen-mode-page/index.ts create mode 100644 web/src/main/webapp/v2/src/app/routes/scatter-full-screen-mode-page/scatter-full-screen-mode-page.component.css create mode 100644 web/src/main/webapp/v2/src/app/routes/scatter-full-screen-mode-page/scatter-full-screen-mode-page.component.html create mode 100644 web/src/main/webapp/v2/src/app/routes/scatter-full-screen-mode-page/scatter-full-screen-mode-page.component.ts create mode 100644 web/src/main/webapp/v2/src/app/routes/scatter-full-screen-mode-page/scatter-full-screen-mode-page.routing.ts create mode 100644 web/src/main/webapp/v2/src/app/routes/thread-dump-page/index.ts create mode 100644 web/src/main/webapp/v2/src/app/routes/thread-dump-page/thread-dump-page.component.css create mode 100644 web/src/main/webapp/v2/src/app/routes/thread-dump-page/thread-dump-page.component.html create mode 100644 web/src/main/webapp/v2/src/app/routes/thread-dump-page/thread-dump-page.component.ts create mode 100644 web/src/main/webapp/v2/src/app/routes/thread-dump-page/thread-dump-page.routing.ts create mode 100644 web/src/main/webapp/v2/src/app/routes/transaction-detail-page/index.ts create mode 100644 web/src/main/webapp/v2/src/app/routes/transaction-detail-page/transaction-detail-page.component.css create mode 100644 web/src/main/webapp/v2/src/app/routes/transaction-detail-page/transaction-detail-page.component.html create mode 100644 web/src/main/webapp/v2/src/app/routes/transaction-detail-page/transaction-detail-page.component.ts create mode 100644 web/src/main/webapp/v2/src/app/routes/transaction-detail-page/transaction-detail-page.routing.ts create mode 100644 web/src/main/webapp/v2/src/app/routes/transaction-list-page/index.ts create mode 100644 web/src/main/webapp/v2/src/app/routes/transaction-list-page/transaction-list-empty.component.ts create mode 100644 web/src/main/webapp/v2/src/app/routes/transaction-list-page/transaction-list-page.component.css create mode 100644 web/src/main/webapp/v2/src/app/routes/transaction-list-page/transaction-list-page.component.html create mode 100644 web/src/main/webapp/v2/src/app/routes/transaction-list-page/transaction-list-page.component.ts create mode 100644 web/src/main/webapp/v2/src/app/routes/transaction-list-page/transaction-list-page.routing.ts create mode 100644 web/src/main/webapp/v2/src/app/routes/transaction-view-page/index.ts create mode 100644 web/src/main/webapp/v2/src/app/routes/transaction-view-page/transaction-view-page.component.css create mode 100644 web/src/main/webapp/v2/src/app/routes/transaction-view-page/transaction-view-page.component.html create mode 100644 web/src/main/webapp/v2/src/app/routes/transaction-view-page/transaction-view-page.component.ts create mode 100644 web/src/main/webapp/v2/src/app/routes/transaction-view-page/transaction-view-page.routing.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/components/empty-contents/empty-contents.component.css create mode 100644 web/src/main/webapp/v2/src/app/shared/components/empty-contents/empty-contents.component.html create mode 100644 web/src/main/webapp/v2/src/app/shared/components/empty-contents/empty-contents.component.spec.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/components/empty-contents/empty-contents.component.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/components/empty-contents/index.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/components/empty-contents/none.component.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/components/film-for-disable/film-for-disable.component.css create mode 100644 web/src/main/webapp/v2/src/app/shared/components/film-for-disable/film-for-disable.component.html create mode 100644 web/src/main/webapp/v2/src/app/shared/components/film-for-disable/film-for-disable.component.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/components/film-for-disable/index.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/components/header-logo/header-logo.component.css create mode 100644 web/src/main/webapp/v2/src/app/shared/components/header-logo/header-logo.component.html create mode 100644 web/src/main/webapp/v2/src/app/shared/components/header-logo/header-logo.component.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/components/header-logo/index.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/components/index.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/components/loading/index.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/components/loading/loading.component.css create mode 100644 web/src/main/webapp/v2/src/app/shared/components/loading/loading.component.html create mode 100644 web/src/main/webapp/v2/src/app/shared/components/loading/loading.component.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/components/page-not-found/index.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/components/page-not-found/page-not-found.component.css create mode 100644 web/src/main/webapp/v2/src/app/shared/components/page-not-found/page-not-found.component.html create mode 100644 web/src/main/webapp/v2/src/app/shared/components/page-not-found/page-not-found.component.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/components/simple-progress-slider/index.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/components/simple-progress-slider/simple-progress-slider.component.css create mode 100644 web/src/main/webapp/v2/src/app/shared/components/simple-progress-slider/simple-progress-slider.component.html create mode 100644 web/src/main/webapp/v2/src/app/shared/components/simple-progress-slider/simple-progress-slider.component.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/components/url-redirector/index.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/components/url-redirector/url-redirector.component.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/directives/context-popup.directive.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/directives/index.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/directives/search-input.directive.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/directives/setting-height.directive.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/directives/splitter.directive.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/index.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/models/app-state.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/models/index.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/models/url-path-id.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/models/url-path.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/models/url-query.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/pipes/index.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/pipes/json-text-parser.pipe.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/pipes/safe-html.pipe.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/services/agent-histogram-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/services/ajax-exception-checker.service.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/services/analytics.service.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/services/application-list-resolver.service.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/services/browser-support-check.service.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/services/component-default-setting-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/services/dynamic-popup.service.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/services/gutter-event.service.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/services/index.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/services/new-url-state-notification.service.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/services/route-info-collector.service.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/services/server-time-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/services/server-time-resolver.service.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/services/split-ratio.service.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/services/store-helper.service.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/services/system-configuration-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/services/system-configuration-resolver.service.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/services/transaction-detail-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/services/transaction-view-type.service.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/services/translate-replace.service.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/services/url-route-manager.service.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/services/url-validate.guard.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/services/web-app-setting-data.service.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/services/window-ref.service.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/store/admin.reducer.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/store/agent-info.reducer.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/store/agent-selection-for-info-per-server.reducer.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/store/agent-selection-for-side-bar.reducer.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/store/application-list.reducer.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/store/date-format.reducer.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/store/favorite-application-list.reducer.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/store/index.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/store/inspector-chart-hover.reducer.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/store/load-chart.reducer.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/store/response-summary-chart.reducer.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/store/scatter-chart-real-time.reducer.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/store/scatter-chart.reducer.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/store/server-and-agent.reducer.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/store/server-list.reducer.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/store/server-map-loading-state.reducer.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/store/server-map-selected-target.reducer.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/store/server-map.reducer.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/store/target-list.reducer.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/store/timeline.reducer.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/store/timezone.reducer.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/store/transaction-detail-data.reducer.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/store/transaction-info.reducer.ts create mode 100644 web/src/main/webapp/v2/src/app/shared/store/ui-state.reducer.ts create mode 100644 web/src/main/webapp/v2/src/assets/.gitkeep create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/css/fontawesome-all.css create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/css/fontawesome-all.min.css create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_animated.less create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_bordered-pulled.less create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_core.less create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_fixed-width.less create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_icons.less create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_larger.less create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_list.less create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_mixins.less create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_rotated-flipped.less create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_screen-reader.less create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_stacked.less create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_variables.less create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/fa-brands.less create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/fa-regular.less create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/fa-solid.less create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/fontawesome.less create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_animated.scss create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_bordered-pulled.scss create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_core.scss create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_fixed-width.scss create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_icons.scss create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_larger.scss create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_list.scss create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_mixins.scss create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_rotated-flipped.scss create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_screen-reader.scss create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_stacked.scss create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_variables.scss create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/fa-brands.scss create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/fa-regular.scss create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/fa-solid.scss create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/fontawesome.scss create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-brands-400.eot create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-brands-400.svg create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-brands-400.ttf create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-brands-400.woff create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-brands-400.woff2 create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-regular-400.eot create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-regular-400.svg create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-regular-400.ttf create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-regular-400.woff create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-regular-400.woff2 create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-solid-900.eot create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-solid-900.svg create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-solid-900.ttf create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-solid-900.woff create mode 100644 web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-solid-900.woff2 create mode 100755 web/src/main/webapp/v2/src/assets/fonts/fonts.css create mode 100644 web/src/main/webapp/v2/src/assets/fonts/nanum/nanum-gothic-v8-korean-700.eot create mode 100644 web/src/main/webapp/v2/src/assets/fonts/nanum/nanum-gothic-v8-korean-700.svg create mode 100644 web/src/main/webapp/v2/src/assets/fonts/nanum/nanum-gothic-v8-korean-700.ttf create mode 100644 web/src/main/webapp/v2/src/assets/fonts/nanum/nanum-gothic-v8-korean-700.woff create mode 100644 web/src/main/webapp/v2/src/assets/fonts/nanum/nanum-gothic-v8-korean-700.woff2 create mode 100644 web/src/main/webapp/v2/src/assets/fonts/nanum/nanum-gothic-v8-korean-800.eot create mode 100644 web/src/main/webapp/v2/src/assets/fonts/nanum/nanum-gothic-v8-korean-800.svg create mode 100644 web/src/main/webapp/v2/src/assets/fonts/nanum/nanum-gothic-v8-korean-800.ttf create mode 100644 web/src/main/webapp/v2/src/assets/fonts/nanum/nanum-gothic-v8-korean-800.woff create mode 100644 web/src/main/webapp/v2/src/assets/fonts/nanum/nanum-gothic-v8-korean-800.woff2 create mode 100644 web/src/main/webapp/v2/src/assets/fonts/nanum/nanum-gothic-v8-korean-regular.eot create mode 100644 web/src/main/webapp/v2/src/assets/fonts/nanum/nanum-gothic-v8-korean-regular.svg create mode 100644 web/src/main/webapp/v2/src/assets/fonts/nanum/nanum-gothic-v8-korean-regular.ttf create mode 100644 web/src/main/webapp/v2/src/assets/fonts/nanum/nanum-gothic-v8-korean-regular.woff create mode 100644 web/src/main/webapp/v2/src/assets/fonts/nanum/nanum-gothic-v8-korean-regular.woff2 create mode 100644 web/src/main/webapp/v2/src/assets/fonts/opensans/open-sans-v15-latin-600.eot create mode 100644 web/src/main/webapp/v2/src/assets/fonts/opensans/open-sans-v15-latin-600.svg create mode 100644 web/src/main/webapp/v2/src/assets/fonts/opensans/open-sans-v15-latin-600.ttf create mode 100644 web/src/main/webapp/v2/src/assets/fonts/opensans/open-sans-v15-latin-600.woff create mode 100644 web/src/main/webapp/v2/src/assets/fonts/opensans/open-sans-v15-latin-600.woff2 create mode 100644 web/src/main/webapp/v2/src/assets/fonts/opensans/open-sans-v15-latin-700.eot create mode 100644 web/src/main/webapp/v2/src/assets/fonts/opensans/open-sans-v15-latin-700.svg create mode 100644 web/src/main/webapp/v2/src/assets/fonts/opensans/open-sans-v15-latin-700.ttf create mode 100644 web/src/main/webapp/v2/src/assets/fonts/opensans/open-sans-v15-latin-700.woff create mode 100644 web/src/main/webapp/v2/src/assets/fonts/opensans/open-sans-v15-latin-700.woff2 create mode 100644 web/src/main/webapp/v2/src/assets/fonts/opensans/open-sans-v15-latin-800.eot create mode 100644 web/src/main/webapp/v2/src/assets/fonts/opensans/open-sans-v15-latin-800.svg create mode 100644 web/src/main/webapp/v2/src/assets/fonts/opensans/open-sans-v15-latin-800.ttf create mode 100644 web/src/main/webapp/v2/src/assets/fonts/opensans/open-sans-v15-latin-800.woff create mode 100644 web/src/main/webapp/v2/src/assets/fonts/opensans/open-sans-v15-latin-800.woff2 create mode 100644 web/src/main/webapp/v2/src/assets/fonts/opensans/open-sans-v15-latin-regular.eot create mode 100644 web/src/main/webapp/v2/src/assets/fonts/opensans/open-sans-v15-latin-regular.svg create mode 100644 web/src/main/webapp/v2/src/assets/fonts/opensans/open-sans-v15-latin-regular.ttf create mode 100644 web/src/main/webapp/v2/src/assets/fonts/opensans/open-sans-v15-latin-regular.woff create mode 100644 web/src/main/webapp/v2/src/assets/fonts/opensans/open-sans-v15-latin-regular.woff2 create mode 100644 web/src/main/webapp/v2/src/assets/i18n/en.json create mode 100644 web/src/main/webapp/v2/src/assets/i18n/ko.json create mode 100755 web/src/main/webapp/v2/src/assets/img/bg-title-group3.png create mode 100644 web/src/main/webapp/v2/src/assets/img/bidirect_off.png create mode 100644 web/src/main/webapp/v2/src/assets/img/bidirect_on.png create mode 100755 web/src/main/webapp/v2/src/assets/img/card-btn-arrow-right.png create mode 100755 web/src/main/webapp/v2/src/assets/img/chart1.gif create mode 100755 web/src/main/webapp/v2/src/assets/img/chart2.gif create mode 100755 web/src/main/webapp/v2/src/assets/img/chart3.gif create mode 100755 web/src/main/webapp/v2/src/assets/img/chart4.gif create mode 100755 web/src/main/webapp/v2/src/assets/img/chart5.gif create mode 100644 web/src/main/webapp/v2/src/assets/img/chrome.png create mode 100644 web/src/main/webapp/v2/src/assets/img/edge.png create mode 100644 web/src/main/webapp/v2/src/assets/img/firefox.png create mode 100644 web/src/main/webapp/v2/src/assets/img/handle.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icon-ABX-WEB-ALPHA.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icon-UNKNOWN-GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icon-alert.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icon-app-select1.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icon-app-select2.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icon-arrow.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icon-calendar-arrow.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icon-close.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icon-disconnect.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icon-down.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icon-error.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icon-file-glass.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icon-header-tool-group.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/ACTIVEMQ_CLIENT.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/ACTIVEMQ_CLIENT_GROUP.png create mode 100644 web/src/main/webapp/v2/src/assets/img/icons/AKKA_HTTP_SERVER.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/APACHE.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/ARCUS.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/BACKEND.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/BLOC.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/CASSANDRA.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/CLIENT.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/CUBRID.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/CUBRID_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/DUBBO_PROVIDER.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/DUBBO_PROVIDER_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/ETC.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/JBOSS.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/JETTY.png create mode 100644 web/src/main/webapp/v2/src/assets/img/icons/JEUS.png create mode 100644 web/src/main/webapp/v2/src/assets/img/icons/JEUS_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/MARIADB.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/MARIADB_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/MEMCACHED.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/MONGODB.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/MONGODB_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/MSSQLSERVER.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/MSSQLSERVER_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/MYSQL.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/MYSQL_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/NBASE.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/NBASE_ARC.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/NBASE_ARC_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/NBASE_T.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/NGINX.png create mode 100644 web/src/main/webapp/v2/src/assets/img/icons/NO_IMAGE_FOUND.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/ORACLE.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/ORACLE_GROUP.png create mode 100644 web/src/main/webapp/v2/src/assets/img/icons/OWFS.png create mode 100644 web/src/main/webapp/v2/src/assets/img/icons/OWFS_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/PHP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/POSTGRESQL.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/POSTGRESQL_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/QUEUE.png create mode 100644 web/src/main/webapp/v2/src/assets/img/icons/RABBITMQ_CLIENT.png create mode 100644 web/src/main/webapp/v2/src/assets/img/icons/RABBITMQ_CLIENT_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/REDIS.png create mode 100644 web/src/main/webapp/v2/src/assets/img/icons/RESIN.png create mode 100644 web/src/main/webapp/v2/src/assets/img/icons/RESIN_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/SPRING_BOOT.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/STAND_ALONE.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/TOMCAT.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/UNAUTHORIZED.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/UNDEFINED.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/UNDEFINED_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/UNKNOWN.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/UNKNOWN_CLOUD.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/UNKNOWN_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/USER.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/USER1.png create mode 100644 web/src/main/webapp/v2/src/assets/img/icons/VERTX.png create mode 100644 web/src/main/webapp/v2/src/assets/img/icons/WEBLOGIC.png create mode 100644 web/src/main/webapp/v2/src/assets/img/icons/WEBSPHERE.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/filter.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/ng.png create mode 100755 web/src/main/webapp/v2/src/assets/img/icons/sq.png create mode 100755 web/src/main/webapp/v2/src/assets/img/logo.png create mode 100644 web/src/main/webapp/v2/src/assets/img/safari.png create mode 100755 web/src/main/webapp/v2/src/assets/img/select-down-arrow.png create mode 100755 web/src/main/webapp/v2/src/assets/img/servermap/ACTIVEMQ_CLIENT.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/ACTIVEMQ_CLIENT_GROUP.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/AKKA_HTTP_SERVER.png create mode 100755 web/src/main/webapp/v2/src/assets/img/servermap/APACHE.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/APACHE_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/servermap/ARCUS.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/ARCUS_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/servermap/BACKEND.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/BACKEND_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/servermap/BLOC.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/BLOC_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/servermap/CASSANDRA.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/CASSANDRA_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/servermap/CUBRID.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/CUBRID_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/servermap/DUBBO.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/DUBBO_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/servermap/ERROR.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/ERROR_s.png create mode 100755 web/src/main/webapp/v2/src/assets/img/servermap/FILTER.png create mode 100755 web/src/main/webapp/v2/src/assets/img/servermap/FILTER_s.png create mode 100755 web/src/main/webapp/v2/src/assets/img/servermap/JAVA.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/JAVA_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/servermap/JBOSS.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/JBOSS_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/servermap/JETTY.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/JETTY_GROUP.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/JEUS.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/JEUS_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/servermap/MARIADB.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/MARIADB_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/servermap/MEMCACHED.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/MEMCACHED_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/servermap/MONGODB.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/MONGODB_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/servermap/MSSQLSERVER.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/MSSQLSERVER_GROUP.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/MYSQL.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/MYSQL_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/servermap/NBASE.png create mode 100755 web/src/main/webapp/v2/src/assets/img/servermap/NBASE_ARC.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/NBASE_ARC_GROUP.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/NBASE_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/servermap/NBASE_T.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/NBASE_T_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/servermap/NGINX.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/NGINX_GROUP.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/NO_IMAGE_FOUND.png create mode 100755 web/src/main/webapp/v2/src/assets/img/servermap/ORACLE.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/ORACLE_GROUP.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/OWFS.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/OWFS_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/servermap/PHP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/servermap/POSTGRESQL.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/POSTGRESQL_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/servermap/QUEUE.png create mode 100755 web/src/main/webapp/v2/src/assets/img/servermap/QUEUE_GROUP.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/RABBITMQ_CLIENT.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/RABBITMQ_CLIENT_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/servermap/REDIS.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/REDIS_GROUP.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/RESIN.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/RESIN_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/servermap/SPRING_BOOT.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/SPRING_BOOT_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/servermap/STAND_ALONE.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/STAND_ALONE2.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/STAND_ALONE_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/servermap/TOMCAT.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/TOMCAT_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/servermap/UNAUTHORIZED.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/UNAUTHORIZED_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/servermap/UNDEFINED.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/UNDEFINED_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/servermap/UNKNOWN.png create mode 100755 web/src/main/webapp/v2/src/assets/img/servermap/UNKNOWN_GROUP.png create mode 100755 web/src/main/webapp/v2/src/assets/img/servermap/USER.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/USER_GROUP.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/VERTX.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/VERTX_GROUP.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/WEBLOGIC.png create mode 100644 web/src/main/webapp/v2/src/assets/img/servermap/WEBSPHERE.png create mode 100755 web/src/main/webapp/v2/src/assets/img/text-layer-arrow.png create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/highlight.pack.js create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/agate.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/androidstudio.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/arduino-light.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/arta.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/ascetic.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/atelier-cave-dark.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/atelier-cave-light.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/atelier-dune-dark.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/atelier-dune-light.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/atelier-estuary-dark.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/atelier-estuary-light.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/atelier-forest-dark.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/atelier-forest-light.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/atelier-heath-dark.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/atelier-heath-light.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/atelier-lakeside-dark.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/atelier-lakeside-light.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/atelier-plateau-dark.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/atelier-plateau-light.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/atelier-savanna-dark.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/atelier-savanna-light.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/atelier-seaside-dark.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/atelier-seaside-light.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/atelier-sulphurpool-dark.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/atelier-sulphurpool-light.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/atom-one-dark.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/atom-one-light.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/brown-paper.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/brown-papersq.png create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/codepen-embed.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/color-brewer.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/darcula.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/dark.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/darkula.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/default.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/docco.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/dracula.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/far.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/foundation.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/github-gist.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/github.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/googlecode.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/grayscale.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/gruvbox-dark.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/gruvbox-light.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/hopscotch.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/hybrid.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/idea.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/ir-black.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/kimbie.dark.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/kimbie.light.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/magula.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/mono-blue.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/monokai-sublime.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/monokai.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/obsidian.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/ocean.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/paraiso-dark.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/paraiso-light.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/pojoaque.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/pojoaque.jpg create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/purebasic.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/qtcreator_dark.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/qtcreator_light.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/railscasts.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/rainbow.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/routeros.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/school-book.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/school-book.png create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/solarized-dark.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/solarized-light.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/sunburst.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/tomorrow-night-blue.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/tomorrow-night-bright.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/tomorrow-night-eighties.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/tomorrow-night.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/tomorrow.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/vs.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/vs2015.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/xcode.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/xt256.css create mode 100644 web/src/main/webapp/v2/src/assets/lib/hljs/styles/zenburn.css create mode 100644 web/src/main/webapp/v2/src/environments/environment.prod.ts create mode 100644 web/src/main/webapp/v2/src/environments/environment.ts create mode 100644 web/src/main/webapp/v2/src/favicon.ico create mode 100644 web/src/main/webapp/v2/src/favicon.png create mode 100644 web/src/main/webapp/v2/src/globals.d.ts create mode 100644 web/src/main/webapp/v2/src/index.html create mode 100644 web/src/main/webapp/v2/src/main.ts create mode 100644 web/src/main/webapp/v2/src/polyfills.ts create mode 100644 web/src/main/webapp/v2/src/styles.css create mode 100644 web/src/main/webapp/v2/src/test.ts create mode 100644 web/src/main/webapp/v2/src/tsconfig.app.json create mode 100644 web/src/main/webapp/v2/src/tsconfig.spec.json create mode 100644 web/src/main/webapp/v2/src/typings.d.ts create mode 100644 web/src/main/webapp/v2/tsconfig.json create mode 100644 web/src/main/webapp/v2/tslint.json diff --git a/NOTICE b/NOTICE index e4bbf1c5992f..ed0c9c10a84e 100644 --- a/NOTICE +++ b/NOTICE @@ -282,20 +282,6 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -======================================================================= -jquery.autotype (https://github.com/mmonteleone/jquery.autotype) -======================================================================= - -Copyright (c) 2009 Michael Monteleone, http://michaelmonteleone.net - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ======================================================================= Bootstrap (http://getbootstrap.com/) ======================================================================= @@ -871,3 +857,1054 @@ HBaseWD (https://github.com/sematext/HBaseWD) See the License for the specific language governing permissions and limitations under the License. + +======================================================================= +Open Sans (https://fonts.google.com/specimen/Open+Sans) +======================================================================= + +This software contains the following license and notice below: + + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +======================================================================= +nanumfont (http://hangeul.naver.com/2016/nanum) +======================================================================= + +Copyright (c) 2010, NAVER Corporation (http://www.nhncorp.com), + +with Reserved Font Name Nanum, Naver Nanum, NanumGothic, Naver NanumGothic, +NanumMyeongjo, Naver NanumMyeongjo, NanumBrush, Naver NanumBrush, NanumPen, +Naver NanumPen, Naver NanumGothicEco, NanumGothicEco, Naver NanumMyeongjoEco, +NanumMyeongjoEco, Naver NanumGothicLight, NanumGothicLight, NanumBarunGothic, +Naver NanumBarunGothic, + +This Font Software is licensed under the SIL Open Font License, Version 1.1. + +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + +SIL OPEN FONT LICENSE +Version 1.1 - 26 February 2007 + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting - in part or in whole - any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. + +======================================================================= +FortAwesome/Font-Awesome (https://fontawesome.com/) +======================================================================= + +Font Awesome Free License +------------------------- + +Font Awesome Free is free, open source, and GPL friendly. You can use it for +commercial projects, open source projects, or really almost whatever you want. +Full Font Awesome Free license: https://fontawesome.com/license. + +# Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/) +In the Font Awesome Free download, the CC BY 4.0 license applies to all icons +packaged as SVG and JS file types. + +# Fonts: SIL OFL 1.1 License (https://scripts.sil.org/OFL) +In the Font Awesome Free download, the SIL OLF license applies to all icons +packaged as web and desktop font files. + +SIL OPEN FONT LICENSE +Version 1.1 - 26 February 2007 + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting - in part or in whole - any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. + +# Code: MIT License (https://opensource.org/licenses/MIT) +In the Font Awesome Free download, the MIT license applies to all non-font and +non-icon files. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +# Attribution +Attribution is required by MIT, SIL OLF, and CC BY licenses. Downloaded Font +Awesome Free files already contain embedded comments with sufficient +attribution, so you shouldn't need to do anything additional when using these +files normally. + +We've kept attribution comments terse, so we ask that you do not actively work +to remove them from files, especially code. They're a great way for folks to +learn about Font Awesome. + +# Brand Icons +All brand icons are trademarks of their respective owners. The use of these +trademarks does not indicate endorsement of the trademark holder by Font +Awesome, nor vice versa. **Please do not use brand logos for any purpose except +to represent the company, product, or service to which they refer.** + +======================================================================= +angular/angular (https://github.com/angular/angular) +======================================================================= + +The MIT License + +Copyright (c) 2014-2017 Google, Inc. http://angular.io + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +======================================================================= +angular/material2 (https://material.angular.io/) +======================================================================= + +The MIT License + +Copyright (c) 2018 Google LLC. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +======================================================================= +ngrx/platform (https://github.com/ngrx/platform) +======================================================================= + +The MIT License (MIT) + +Copyright (c) 2017 Brandon Roberts, Mike Ryan, Victor Savkin, Rob Wormald + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +======================================================================= +ng2-ui/datetime-picker (https://github.com/ng2-ui/datetime-picker) +======================================================================= + +Copyright (c) 2016 Allen Kim allenhwkim@gmail.com + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +======================================================================= +ngx-translate/core (https://github.com/ngx-translate/core) +======================================================================= + +Copyright (c) 2018 Olivier Combe + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +======================================================================= +ngx-translate/http-loader (https://github.com/ngx-translate/http-loader) +======================================================================= + +Copyright (c) 2018 Olivier Combe + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +======================================================================= +ag-grid/ag-grid (https://www.ag-grid.com/) +======================================================================= + +This project is made up of many packages. There are two license types: MIT and Commercial. + +Each package has it's own license file explaining the license for that package. + +The following packages are MIT licensed: ++ ag-grid-community ++ ag-grid-angular ++ ag-grid-angular-cli-example ++ ag-grid-aurelia ++ ag-grid-aurelia-example ++ ag-grid-docs ++ ag-grid-react ++ ag-grid-react-example ++ ag-grid-vue ++ ag-grid-vue-example + +The following packages are Commercial licensed: ++ ag-grid-enterprise + +To view the commercial license for ag-grid-enterprise, +see the file packages/ag-grid-enterprise/LICENSE.md + +=== + +The MIT License + +Copyright (c) 2015-2016 AG GRID LTD + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +======================================================================= +ag-grid/ag-grid-angular (https://github.com/ag-grid/ag-grid-angular) +======================================================================= + +The MIT License + +Copyright (c) 2015-2016 AG GRID LTD + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +======================================================================= +phenomnomnominal/angular-2-local-storage (https://github.com/phenomnomnominal/angular-2-local-storage) +======================================================================= + +MIT License + +Copyright (c) 2018 Craig Spence + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +======================================================================= +lancedikson/bowser (https://github.com/lancedikson/bowser) +======================================================================= + +Copyright 2015, Dustin Diaz (the "Original Author") +All rights reserved. + +MIT License + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +Distributions of all or part of the Software intended to be used +by the recipients as they would use the unmodified Software, +containing modifications that substantially alter, remove, or +disable functionality of the Software, outside of the documented +configuration mechanisms provided by the Software, shall be +modified such that the Original Author's bug reporting email +addresses and urls are either replaced with the contact information +of the parties responsible for the changes, or removed entirely. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + + +Except where noted, this license applies to any and all software +programs and associated documentation files created by the +Original Author, when distributed with the Software. + +======================================================================= +chartjs/Chart.js (https://www.chartjs.org/) +======================================================================= + +The MIT License (MIT) + +Copyright (c) 2018 Chart.js Contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +======================================================================= +nagix/chartjs-plugin-streaming (https://github.com/nagix/chartjs-plugin-streaming) +======================================================================= + +The MIT License (MIT) + +Copyright (c) 2018 Akihiko Kusanagi + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +======================================================================= +hammerjs/hammer.js (https://hammerjs.github.io/) +======================================================================= + +Copyright (C) 2011-2014 by Jorik Tangelder (Eight Media) + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +======================================================================= +arkon/ng-click-outside (https://github.com/arkon/ng-click-outside) +======================================================================= + +The MIT License (MIT) + +Copyright (c) 2016 Eugene Cheung + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +======================================================================= +tb/ng2-nouislider (https://github.com/tb/ng2-nouislider) +======================================================================= + +The MIT License (MIT) + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +======================================================================= +maxisam/ngx-clipboard (https://github.com/maxisam/ngx-clipboard) +======================================================================= + +MIT License + +Copyright (c) 2018 Sam Lin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +======================================================================= +MurhafSousli/ngx-highlightjs (https://github.com/MurhafSousli/ngx-highlightjs) +======================================================================= + +MIT License + +Copyright (c) 2018 Murhaf Sousli + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +======================================================================= +orizens/ngx-infinite-scroll (https://github.com/orizens/ngx-infinite-scroll) +======================================================================= + +MIT License + +Copyright (c) 2017 Roberto Simonetti + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +======================================================================= +leongersen/noUiSlider (https://github.com/leongersen/noUiSlider) +======================================================================= + +MIT License + +Copyright (c) 2018 Léon Gersen + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +======================================================================= +adobe-webplatform/Snap.svg (https://github.com/adobe-webplatform/Snap.svg) +======================================================================= + +// Copyright (c) 2013 - 2015 Adobe Systems Incorporated. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +----- + +Snap.svg is licensed under the Apache license version 2.0, January 2004 (see LICENSE file). + +Snap.svg uses the following third party libraries that may have licenses +differing from that of Snap.svg itself. You can find the libraries and their +respective licenses below. + + - eve ./node_modules/eve + + https://github.com/adobe-webplatform/eve/ + + Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + - Mocha ./node_modules/mocha + + https://github.com/visionmedia/mocha/ + + (The MIT License) + + Copyright (c) 2011-2013 TJ Holowaychuk + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + 'Software'), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + - Expect ./node_modules/expect.js + + https://github.com/LearnBoost/expect.js + + (The MIT License) + + Copyright (c) 2011 Guillermo Rauch + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + 'Software'), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + - Grunt ./node_modules/grunt + + http://gruntjs.com + + Copyright (c) 2013 "Cowboy" Ben Alman + + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation + files (the "Software"), to deal in the Software without + restriction, including without limitation the rights to use, + copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following + conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + + + - Backbone ./demos/animated-game/js/backbone.js + + http://backbonejs.org/ + + (The MIT License) + + Copyright (c) 2010-2013 Jeremy Ashkenas, DocumentCloud + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + 'Software'), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + - Underscore ./demos/animated-game/js/underscore.js + + http://underscorejs.org + + (The MIT License) + + Copyright (c) 2010-2013 Jeremy Ashkenas, DocumentCloud + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + 'Software'), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + - jQuery ./demos/animated-game/js/jquery-1.9.0.min.js + + http://http://jquery.com/ + + (The MIT License) + + Copyright 2013 jQuery Foundation and other contributors + http://jquery.com/ + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + 'Software'), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +======================================================================= +almende/vis (http://visjs.org/) +======================================================================= + +Copyright (C) 2010-2017 Almende B.V. and Contributors + +Vis.js is dual licensed under both + +The Apache 2.0 License http://www.apache.org/licenses/LICENSE-2.0 +and + +The MIT License http://opensource.org/licenses/MIT +Vis.js may be distributed under either license. + +--- + +The MIT License (MIT) + +Copyright (c) 2014-2017 Almende B.V. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + diff --git a/web/pom.xml b/web/pom.xml index 6a690d20a1f3..999bff61e391 100644 --- a/web/pom.xml +++ b/web/pom.xml @@ -1,19 +1,3 @@ - - 4.0.0 @@ -164,7 +148,7 @@ spring-messaging ${spring.version} - + org.springframework.security spring-security-web @@ -372,20 +356,22 @@ prepare-grunt + generate-resources run - generate-resources - + - + - - + + @@ -394,9 +380,8 @@ com.github.eirslett frontend-maven-plugin - 1.6 + 1.5 - ${basedir}/target ${basedir}/target/main/webapp ${basedir}/target/main/webapp target @@ -404,30 +389,36 @@ install node and npm + prepare-package install-node-and-npm v5.11.1 3.9.6 + ${basedir}/target npm install + prepare-package npm install + ${basedir}/target grunt build + prepare-package grunt ${grunt.build.command} + ${basedir}/target @@ -470,5 +461,57 @@ + + + v2 + + + + com.github.eirslett + frontend-maven-plugin + 1.5 + + target + + + + install node and npm v2 + prepare-package + + install-node-and-npm + + + v10.6.0 + 6.1.0 + ${basedir}/target/main/webapp/v2 + + + + npm install v2 + prepare-package + + npm + + + install + ${basedir}/target/main/webapp/v2 + + + + npm run build v2 + prepare-package + + npm + + + run build + ${basedir}/target/main/webapp/v2 + + + + + + + - + \ No newline at end of file diff --git a/web/src/main/webapp/WEB-INF/rewrite.config b/web/src/main/webapp/WEB-INF/rewrite.config new file mode 100644 index 000000000000..cfcf483f7abc --- /dev/null +++ b/web/src/main/webapp/WEB-INF/rewrite.config @@ -0,0 +1,2 @@ +RewriteCond %{REQUEST_URI} ^/v2/(admin|filteredMap|inspector|main|realtime|scatterFullScreenMode|threadDump|transactionDetail|transactionList|transactionView)(/.*)?$ +RewriteRule ^/v2/(admin|filteredMap|inspector|main|realtime|scatterFullScreenMode|threadDump|transactionDetail|transactionList|transactionView)(/.*)?$ /v2/index.html diff --git a/web/src/main/webapp/v2/angular.json b/web/src/main/webapp/v2/angular.json new file mode 100644 index 000000000000..370abbb012cd --- /dev/null +++ b/web/src/main/webapp/v2/angular.json @@ -0,0 +1,127 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 2, + "newProjectRoot": "projects", + "projects": { + "pinpoint": { + "root": "", + "sourceRoot": "src", + "projectType": "application", + "prefix": "pp", + "schematics": {}, + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "outputPath": "../../../../target/deploy/v2", + "index": "src/index.html", + "main": "src/main.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "src/tsconfig.app.json", + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + "./node_modules/@angular/material/prebuilt-themes/deeppurple-amber.css", + "./node_modules/ag-grid/dist/styles/ag-grid.css", + "./node_modules/ag-grid/dist/styles/ag-theme-balham.css", + "./node_modules/nouislider/distribute/nouislider.css", + "src/styles.css" + ], + "scripts": [ + "./node_modules/hammerjs/hammer.min.js" + ] + }, + "configurations": { + "production": { + "fileReplacements": [{ + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.prod.ts" + }], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "extractCss": true, + "namedChunks": false, + "aot": true, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": false + } + } + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "options": { + "browserTarget": "pinpoint:build" + }, + "configurations": { + "production": { + "browserTarget": "pinpoint:build:production" + } + } + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "browserTarget": "pinpoint:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "src/test.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "src/tsconfig.spec.json", + "karmaConfig": "src/karma.conf.js", + "styles": [ + "src/styles.css" + ], + "scripts": [], + "assets": [ + "src/favicon.ico", + "src/assets" + ] + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "src/tsconfig.app.json", + "src/tsconfig.spec.json" + ], + "exclude": [ + "**/node_modules/**", + "**/src/app/core/components/angular-split/**" + ] + } + } + } + }, + "pinpoint-e2e": { + "root": "e2e/", + "projectType": "application", + "architect": { + "e2e": { + "builder": "@angular-devkit/build-angular:protractor", + "options": { + "protractorConfig": "e2e/protractor.conf.js", + "devServerTarget": "pinpoint:serve" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": "e2e/tsconfig.e2e.json", + "exclude": [ + "**/node_modules/**" + ] + } + } + } + } + }, + "defaultProject": "pinpoint" +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/e2e/app.e2e-spec.ts b/web/src/main/webapp/v2/e2e/app.e2e-spec.ts new file mode 100644 index 000000000000..27b1646f793a --- /dev/null +++ b/web/src/main/webapp/v2/e2e/app.e2e-spec.ts @@ -0,0 +1,14 @@ +import { NpuPage } from './app.po'; + +describe('npu App', function() { + let page: NpuPage; + + beforeEach(() => { + page = new NpuPage(); + }); + + it('should display message saying app works', () => { + page.navigateTo(); + expect(page.getParagraphText()).toEqual('app works!'); + }); +}); diff --git a/web/src/main/webapp/v2/e2e/app.po.ts b/web/src/main/webapp/v2/e2e/app.po.ts new file mode 100644 index 000000000000..410477f63a1e --- /dev/null +++ b/web/src/main/webapp/v2/e2e/app.po.ts @@ -0,0 +1,11 @@ +import { browser, element, by } from 'protractor'; + +export class NpuPage { + navigateTo() { + return browser.get('/'); + } + + getParagraphText() { + return element(by.css('app-root h1')).getText(); + } +} diff --git a/web/src/main/webapp/v2/e2e/tsconfig.e2e.json b/web/src/main/webapp/v2/e2e/tsconfig.e2e.json new file mode 100644 index 000000000000..72a2d6d9f369 --- /dev/null +++ b/web/src/main/webapp/v2/e2e/tsconfig.e2e.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "sourceMap": true, + "declaration": false, + "moduleResolution": "node", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "lib": [ + "es2016" + ], + "outDir": "../out-tsc/e2e", + "module": "commonjs", + "target": "es5", + "types":[ + "jasmine", + "node" + ] + } +} diff --git a/web/src/main/webapp/v2/karma.conf.js b/web/src/main/webapp/v2/karma.conf.js new file mode 100644 index 000000000000..6410fd7eeb14 --- /dev/null +++ b/web/src/main/webapp/v2/karma.conf.js @@ -0,0 +1,50 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/0.13/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', 'angular-cli'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-report'), + require('karma-coverage-istanbul-reporter'), + require('@angular/cli/plugins/karma'), + require('karma-html-live-reporter') + ], + client: { + clearContext: false + }, + files: [ + { pattern: './src/test.ts', watched: false } + ], + preprocessors: { + './src/test.ts': ['@angular/cli'] + }, + mime: { + 'text/x-typescript': ['ts', 'tsx'] + }, + coverageIstanbulReporter: { + reports: ['html', 'lcovonly'], + fixWebpackSourcePaths: true + }, + angularCli: { + environment: 'dev' + }, + reporters: config.angularCli && config.angularCli.codeCoverage + ? ['progress', 'live-html', 'converage-istanbul'] + : ['progress', 'live-html', 'kjhtml'], + htmlLiveReporter: { // port: 5060 + colorScheme: 'jasmine', + defaultTab: 'summary', + focusMode: true + }, + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false + }); +}; diff --git a/web/src/main/webapp/v2/package-lock.json b/web/src/main/webapp/v2/package-lock.json new file mode 100644 index 000000000000..9eb0e5fa376f --- /dev/null +++ b/web/src/main/webapp/v2/package-lock.json @@ -0,0 +1,17877 @@ +{ + "name": "pinpoint", + "version": "2.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.7.4.tgz", + "integrity": "sha512-qcxLtA5XhUCqNyyMOD+s7oIVywNnhUNE1qoopnm6MN0FJ1n7iQMU5TPZBTiXDWQVnbGODObi7tGo7gFnEBML5Q==", + "dev": true, + "requires": { + "@angular-devkit/core": "0.7.4", + "rxjs": "^6.0.0" + } + }, + "@angular-devkit/build-angular": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.7.4.tgz", + "integrity": "sha512-aNVhnWHxhx8s8VHn2ixKhrgK/I4h/fyQQd+FtvysvDia5jOb7ckiTeM4I+2hpPI/66Kr2CxSVxuPTlJkRAH+jQ==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.7.4", + "@angular-devkit/build-optimizer": "0.7.4", + "@angular-devkit/build-webpack": "0.7.4", + "@angular-devkit/core": "0.7.4", + "@ngtools/webpack": "6.1.4", + "ajv": "~6.4.0", + "autoprefixer": "^8.4.1", + "circular-dependency-plugin": "^5.0.2", + "clean-css": "^4.1.11", + "copy-webpack-plugin": "^4.5.2", + "file-loader": "^1.1.11", + "glob": "^7.0.3", + "html-webpack-plugin": "^3.0.6", + "istanbul": "^0.4.5", + "istanbul-instrumenter-loader": "^3.0.1", + "karma-source-map-support": "^1.2.0", + "less": "^3.7.1", + "less-loader": "^4.1.0", + "license-webpack-plugin": "^1.3.1", + "loader-utils": "^1.1.0", + "mini-css-extract-plugin": "~0.4.0", + "minimatch": "^3.0.4", + "node-sass": "^4.9.3", + "opn": "^5.1.0", + "parse5": "^4.0.0", + "portfinder": "^1.0.13", + "postcss": "^6.0.22", + "postcss-import": "^11.1.0", + "postcss-loader": "^2.1.5", + "postcss-url": "^7.3.2", + "raw-loader": "^0.5.1", + "rxjs": "^6.0.0", + "sass-loader": "~6.0.7", + "semver": "^5.5.0", + "source-map-loader": "^0.2.3", + "source-map-support": "^0.5.0", + "stats-webpack-plugin": "^0.6.2", + "style-loader": "^0.21.0", + "stylus": "^0.54.5", + "stylus-loader": "^3.0.2", + "tree-kill": "^1.2.0", + "uglifyjs-webpack-plugin": "^1.2.5", + "url-loader": "^1.0.1", + "webpack": "~4.9.2", + "webpack-dev-middleware": "^3.1.3", + "webpack-dev-server": "^3.1.4", + "webpack-merge": "^4.1.2", + "webpack-sources": "^1.1.0", + "webpack-subresource-integrity": "^1.1.0-rc.4" + } + }, + "@angular-devkit/build-optimizer": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.7.4.tgz", + "integrity": "sha512-R+Icu9XjIaKcYFscaMBJ1DyBK2prxK3JQSFi0S//0MdNP4gBFIpCtNdOQsNXovCkpVZ7YlgmdE5+vSb39GVHHA==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "source-map": "^0.5.6", + "typescript": "~2.9.1", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "typescript": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz", + "integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==", + "dev": true + } + } + }, + "@angular-devkit/build-webpack": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.7.4.tgz", + "integrity": "sha512-5oezCFtovcZ8fEkFyNEjs30b/t/DM6HIs3L1bP2xy2SFRNfwcWA0uyb5eag1DytZrzws2GEEmyO9qPtfwKjX7g==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.7.4", + "@angular-devkit/core": "0.7.4", + "rxjs": "^6.0.0" + } + }, + "@angular-devkit/core": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-0.7.4.tgz", + "integrity": "sha512-Blh44vzZVzE8B9xIwjRoo7hXPGSDdlrrax0rntvt3DDGVTjsSGm43qT95aDmXiwJruOCJNC5DsaP3+tTAkAyQQ==", + "dev": true, + "requires": { + "ajv": "~6.4.0", + "chokidar": "^2.0.3", + "rxjs": "^6.0.0", + "source-map": "^0.5.6" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "chokidar": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", + "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.2.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "lodash.debounce": "^4.0.8", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.5" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fsevents": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", + "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.21", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": "^2.1.0" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "minipass": { + "version": "2.2.4", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true, + "dev": true + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "nan": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.0.tgz", + "integrity": "sha512-F4miItu2rGnV2ySkXOQoA8FKz/SR2Q2sWP0sbTxNxz/tuokeC8WxOhPMcwi0qIyGtVn/rrSeLbvVkznqCdwYnw==", + "dev": true, + "optional": true + } + } + }, + "@angular-devkit/schematics": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-0.7.5.tgz", + "integrity": "sha512-E7HkQeJawUskf2gPnogMc+cTdjJ2Iv3QEZOgprh/ExEmBYByWkGDRX5fQOuy8wME8VZqUBvQACZaVkEredn5EA==", + "dev": true, + "requires": { + "@angular-devkit/core": "0.7.5", + "rxjs": "^6.0.0" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-0.7.5.tgz", + "integrity": "sha512-r99BZvvuNAqSRm05jXfx0sb3Ip0zvHPtAM6NReXzWPoqaVFpjVUdj/CKA+9HWG/Zt9meG9pEQt/HKK8UXaZDVA==", + "dev": true, + "requires": { + "ajv": "~6.4.0", + "chokidar": "^2.0.3", + "rxjs": "^6.0.0", + "source-map": "^0.5.6" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "chokidar": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", + "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.2.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "lodash.debounce": "^4.0.8", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.5" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fsevents": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", + "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.21", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": "^2.1.0" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "minipass": { + "version": "2.2.4", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true, + "dev": true + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "nan": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.0.tgz", + "integrity": "sha512-F4miItu2rGnV2ySkXOQoA8FKz/SR2Q2sWP0sbTxNxz/tuokeC8WxOhPMcwi0qIyGtVn/rrSeLbvVkznqCdwYnw==", + "dev": true, + "optional": true + } + } + }, + "@angular/animations": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-6.1.3.tgz", + "integrity": "sha512-uLKq+bdfo+/jLW/C6lkUVsB7m+e8j18MjZGHlphI07jW6KvutX+AXdPUI/RMkkWRjZp11aF727PAQ6y3DyqB+Q==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/cdk": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-6.4.6.tgz", + "integrity": "sha512-XKSoeSP4htpOq2UIyF9KDhIJtEQ3wyhZRjDxyRSNmJ9OsuRZxJAGCAzOX5RpMszOyFZgUNVycOi+1lHDe0JrZg==", + "requires": { + "tslib": "^1.7.1" + } + }, + "@angular/cli": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-6.1.5.tgz", + "integrity": "sha512-QNVUSC8mPdiaxubneqNZISy+wec3gwbKoXjcaQ9/45baOnp662j2iJXwiMh6Atn0YUM4u1iUsz1uHyARMtgZmw==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.7.5", + "@angular-devkit/core": "0.7.5", + "@angular-devkit/schematics": "0.7.5", + "@schematics/angular": "0.7.5", + "@schematics/update": "0.7.5", + "opn": "^5.3.0", + "rxjs": "^6.0.0", + "semver": "^5.1.0", + "symbol-observable": "^1.2.0", + "yargs-parser": "^10.0.0" + }, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.7.5.tgz", + "integrity": "sha512-zwCpGdx3JDE+Y+LiWh9ErRX+fpFPTRHtEd2PDJmfQsdlIWfjxSR5U9vi3+bSRW2n6IFiH2GCYMS31R64rfMwbg==", + "dev": true, + "requires": { + "@angular-devkit/core": "0.7.5", + "rxjs": "^6.0.0" + } + }, + "@angular-devkit/core": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-0.7.5.tgz", + "integrity": "sha512-r99BZvvuNAqSRm05jXfx0sb3Ip0zvHPtAM6NReXzWPoqaVFpjVUdj/CKA+9HWG/Zt9meG9pEQt/HKK8UXaZDVA==", + "dev": true, + "requires": { + "ajv": "~6.4.0", + "chokidar": "^2.0.3", + "rxjs": "^6.0.0", + "source-map": "^0.5.6" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "chokidar": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", + "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.2.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "lodash.debounce": "^4.0.8", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.5" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fsevents": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", + "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.21", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": "^2.1.0" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "minipass": { + "version": "2.2.4", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true, + "dev": true + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "nan": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.0.tgz", + "integrity": "sha512-F4miItu2rGnV2ySkXOQoA8FKz/SR2Q2sWP0sbTxNxz/tuokeC8WxOhPMcwi0qIyGtVn/rrSeLbvVkznqCdwYnw==", + "dev": true, + "optional": true + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "@angular/common": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-6.1.3.tgz", + "integrity": "sha512-1V3pDdEty4hYsdpePlcNUE8rF1w1NP8LW6Q1ICNk86MI472W1U9ZTDFwCYcQYDiYMtzBrgXcnE1q6u1rqTdygQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/compiler": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-6.1.3.tgz", + "integrity": "sha512-r8Nv4wo2QNmsGs/sjxcR6z6YG17TfaAAxAl/6yk3z3DNdDM76cBwTi9hurXlmZKPU6/2YFI+ZwvhBrGwaOZd5Q==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/compiler-cli": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-6.1.3.tgz", + "integrity": "sha512-YSVoLMaCF0mvt0CPRGldKMCJDGju82XhsupbDOZsMddVG6hRl8dRbem7OChJp+8GV+UNsfbP/X2o4ERLROHXRA==", + "dev": true, + "requires": { + "chokidar": "^1.4.2", + "minimist": "^1.2.0", + "reflect-metadata": "^0.1.2", + "tsickle": "^0.32.1" + } + }, + "@angular/core": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-6.1.3.tgz", + "integrity": "sha512-pqRfQphqIEExhDWM3RRusvLY6gFN0zdITC7TqQy6Wof6VKgWOvfHiHPbiamw4kpEzflMekuOeNm0s6h6hIUnWA==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/forms": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-6.1.3.tgz", + "integrity": "sha512-8pHVQ97S0W//GsYsGuGV/SyzkMAF/bcE1AqDg4HXNU3mKOl5lthfM+PxHz23Cdzkg/GVInwRNxUl2Q+6lb8zuw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/http": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/@angular/http/-/http-6.1.3.tgz", + "integrity": "sha512-1IZ+8i1gIoPDD57Yv/8fEjzdFfWM7nY5JZGyjWUkWxq/A19zjkR4C1nRCI6KiWHk0QFx2e1Sl6OFqyiphwhalw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/language-service": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-6.1.3.tgz", + "integrity": "sha512-cAIptulTWn1LGFTmRzBbNY4axhnyQl/YaocX0JqutmI+eaWTofSiDwHVB2spYSDTWhy9fg+OMK2KmhghpZmc1g==", + "dev": true + }, + "@angular/material": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-6.4.6.tgz", + "integrity": "sha512-SUSg9MhLv4IZj6Nh8qoCLDImZugCQ+Jvvt+/cDIaTn6TrT6ZenDHc6jOhbGFesU6FuBDBFIXMiuBPD9kBr7vaA==", + "requires": { + "parse5": "^5.0.0", + "tslib": "^1.7.1" + }, + "dependencies": { + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", + "optional": true + } + } + }, + "@angular/platform-browser": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-6.1.3.tgz", + "integrity": "sha512-ml844B5g8UtQaOK2QCdTRSTRHWa1elTbg4ph65GTs0lNMH/tLFNn8tvcPOfMh21ZV3fh6yqA6a9wMjSMTVSiWg==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/platform-browser-dynamic": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-6.1.3.tgz", + "integrity": "sha512-6b4Y8f4yhuUJrAVsHyYWRbRSaIQUzZWSbYvWLVZeXnt4HKzRhX+zO5yTA/eXCXAce+fRIU239FbkeyqtpuogPQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/router": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-6.1.3.tgz", + "integrity": "sha512-6sb1yH/a2CACcbXZ6d+PYWGgwV3BXupCQXBd8Q5h7o3/r5zz18VATdRqBWtSIOmFr11wekJrGGRMxDCpTDlXvg==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@ngrx/store": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@ngrx/store/-/store-6.1.0.tgz", + "integrity": "sha512-H5BGym1WtAX84/R4pTQ2MrrP87qYfXc6CoPghCZCK9LYxCodsI7KeQfpyNCg5qapxdH2EDqlHXTBJfMTLRiRGg==" + }, + "@ngtools/webpack": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-6.1.4.tgz", + "integrity": "sha512-LiDAvHWKdTyOp8YvjWH1oZtIY8qod13UomvTRQ2FuXXjJwNmi4Bk1VpfGCq3hhtdpo4x/aWHFBuBBpPxoJ74SQ==", + "dev": true, + "requires": { + "@angular-devkit/core": "0.7.4", + "rxjs": "^6.0.0", + "tree-kill": "^1.0.0", + "webpack-sources": "^1.1.0" + } + }, + "@ngui/datetime-picker": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@ngui/datetime-picker/-/datetime-picker-0.16.2.tgz", + "integrity": "sha1-fZAXAqD8yRUn2j+IPAheXtxNhBw=" + }, + "@ngx-translate/core": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@ngx-translate/core/-/core-10.0.2.tgz", + "integrity": "sha512-7nM3DrJaqKswwtJlbu2kuKNl+hE8Isr18sKsKvGGpSxQk+G0gO0reDlx2PhUNus7TJTkA1C59vU/JoN8hIvZ4g==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@ngx-translate/http-loader": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@ngx-translate/http-loader/-/http-loader-3.0.1.tgz", + "integrity": "sha1-ILD5i8bCUyESnT4zAqs8xInApCo=", + "requires": { + "tslib": "^1.9.0" + } + }, + "@schematics/angular": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-0.7.5.tgz", + "integrity": "sha512-NrtvFwHCoWon8KInsvA1jdPu4pVJGa8GAWM/jqnE7HpwPwM7hMML08lV0P8r3NX5t2/i0CKvfp4AAEr5MXorEQ==", + "dev": true, + "requires": { + "@angular-devkit/core": "0.7.5", + "@angular-devkit/schematics": "0.7.5", + "typescript": ">=2.6.2 <2.10" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-0.7.5.tgz", + "integrity": "sha512-r99BZvvuNAqSRm05jXfx0sb3Ip0zvHPtAM6NReXzWPoqaVFpjVUdj/CKA+9HWG/Zt9meG9pEQt/HKK8UXaZDVA==", + "dev": true, + "requires": { + "ajv": "~6.4.0", + "chokidar": "^2.0.3", + "rxjs": "^6.0.0", + "source-map": "^0.5.6" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "chokidar": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", + "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.2.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "lodash.debounce": "^4.0.8", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.5" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fsevents": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", + "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.21", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": "^2.1.0" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "minipass": { + "version": "2.2.4", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true, + "dev": true + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "nan": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.0.tgz", + "integrity": "sha512-F4miItu2rGnV2ySkXOQoA8FKz/SR2Q2sWP0sbTxNxz/tuokeC8WxOhPMcwi0qIyGtVn/rrSeLbvVkznqCdwYnw==", + "dev": true, + "optional": true + } + } + }, + "@schematics/update": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.7.5.tgz", + "integrity": "sha512-pwNkXGtlzyCV6tsTPe8AgUuMCkmubcz94zgL6pSMdEe122yXBcKnr/PKqG9QzD/gGwmOcHUE9EWcuRtU5kdFpA==", + "dev": true, + "requires": { + "@angular-devkit/core": "0.7.5", + "@angular-devkit/schematics": "0.7.5", + "npm-registry-client": "^8.5.1", + "rxjs": "^6.0.0", + "semver": "^5.3.0", + "semver-intersect": "^1.1.2" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-0.7.5.tgz", + "integrity": "sha512-r99BZvvuNAqSRm05jXfx0sb3Ip0zvHPtAM6NReXzWPoqaVFpjVUdj/CKA+9HWG/Zt9meG9pEQt/HKK8UXaZDVA==", + "dev": true, + "requires": { + "ajv": "~6.4.0", + "chokidar": "^2.0.3", + "rxjs": "^6.0.0", + "source-map": "^0.5.6" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "chokidar": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", + "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.2.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "lodash.debounce": "^4.0.8", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.5" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fsevents": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", + "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.21", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": "^2.1.0" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "minipass": { + "version": "2.2.4", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true, + "dev": true + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "nan": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.0.tgz", + "integrity": "sha512-F4miItu2rGnV2ySkXOQoA8FKz/SR2Q2sWP0sbTxNxz/tuokeC8WxOhPMcwi0qIyGtVn/rrSeLbvVkznqCdwYnw==", + "dev": true, + "optional": true + } + } + }, + "@types/chart.js": { + "version": "2.7.25", + "resolved": "https://registry.npmjs.org/@types/chart.js/-/chart.js-2.7.25.tgz", + "integrity": "sha512-fQMgub7qVhQQKKf99hbtj26VQQ9x3D9YldgnbpZPqa/KufgPRPhbEjp98fHPCEuidYVyMQ6UBpMYEenpe74jXQ==", + "dev": true + }, + "@types/jasmine": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.8.8.tgz", + "integrity": "sha512-OJSUxLaxXsjjhob2DBzqzgrkLmukM3+JMpRp0r0E4HTdT1nwDCWhaswjYxazPij6uOdzHCJfNbDjmQ1/rnNbCg==", + "dev": true + }, + "@types/jasminewd2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.3.tgz", + "integrity": "sha512-hYDVmQZT5VA2kigd4H4bv7vl/OhlympwREUemqBdOqtrYTo5Ytm12a5W5/nGgGYdanGVxj0x/VhZ7J3hOg/YKg==", + "dev": true, + "requires": { + "@types/jasmine": "*" + } + }, + "@types/node": { + "version": "8.9.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.9.5.tgz", + "integrity": "sha512-jRHfWsvyMtXdbhnz5CVHxaBgnV6duZnPlQuRSo/dm/GnmikNcmZhxIES4E9OZjUmQ8C+HCl4KJux+cXN/ErGDQ==", + "dev": true + }, + "@types/q": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", + "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", + "dev": true + }, + "@types/selenium-webdriver": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.10.tgz", + "integrity": "sha512-ikB0JHv6vCR1KYUQAzTO4gi/lXLElT4Tx+6De2pc/OZwizE9LRNiTa+U8TBFKBD/nntPnr/MPSHSnOTybjhqNA==", + "dev": true + }, + "@types/vis": { + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/@types/vis/-/vis-4.21.5.tgz", + "integrity": "sha512-gviVeMYJqOz5AcdsviRnoDRWXYW/o8lKoWh0NUgx9ZZ1zfObR6atUr2GQYRQp+L1yfh0dHc7XETWBPM0X3bgqA==", + "dev": true, + "requires": { + "moment": ">=2.13.0" + } + }, + "@webassemblyjs/ast": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.4.3.tgz", + "integrity": "sha512-S6npYhPcTHDYe9nlsKa9CyWByFi8Vj8HovcAgtmMAQZUOczOZbQ8CnwMYKYC5HEZzxEE+oY0jfQk4cVlI3J59Q==", + "dev": true, + "requires": { + "@webassemblyjs/helper-wasm-bytecode": "1.4.3", + "@webassemblyjs/wast-parser": "1.4.3", + "debug": "^3.1.0", + "webassemblyjs": "1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.4.3.tgz", + "integrity": "sha512-3zTkSFswwZOPNHnzkP9ONq4bjJSeKVMcuahGXubrlLmZP8fmTIJ58dW7h/zOVWiFSuG2em3/HH3BlCN7wyu9Rw==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.4.3.tgz", + "integrity": "sha512-e8+KZHh+RV8MUvoSRtuT1sFXskFnWG9vbDy47Oa166xX+l0dD5sERJ21g5/tcH8Yo95e9IN3u7Jc3NbhnUcSkw==", + "dev": true, + "requires": { + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.4.3.tgz", + "integrity": "sha512-9FgHEtNsZQYaKrGCtsjswBil48Qp1agrzRcPzCbQloCoaTbOXLJ9IRmqT+uEZbenpULLRNFugz3I4uw18hJM8w==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.4.3" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.4.3.tgz", + "integrity": "sha512-JINY76U+702IRf7ePukOt037RwmtH59JHvcdWbTTyHi18ixmQ+uOuNhcdCcQHTquDAH35/QgFlp3Y9KqtyJsCQ==", + "dev": true + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.4.3.tgz", + "integrity": "sha512-I7bS+HaO0K07Io89qhJv+z1QipTpuramGwUSDkwEaficbSvCcL92CUZEtgykfNtk5wb0CoLQwWlmXTwGbNZUeQ==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.4.3.tgz", + "integrity": "sha512-p0yeeO/h2r30PyjnJX9xXSR6EDcvJd/jC6xa/Pxg4lpfcNi7JUswOpqDToZQ55HMMVhXDih/yqkaywHWGLxqyQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3", + "@webassemblyjs/helper-buffer": "1.4.3", + "@webassemblyjs/helper-wasm-bytecode": "1.4.3", + "@webassemblyjs/wasm-gen": "1.4.3", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "@webassemblyjs/leb128": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.4.3.tgz", + "integrity": "sha512-4u0LJLSPzuRDWHwdqsrThYn+WqMFVqbI2ltNrHvZZkzFPO8XOZ0HFQ5eVc4jY/TNHgXcnwrHjONhPGYuuf//KQ==", + "dev": true, + "requires": { + "leb": "^0.3.0" + } + }, + "@webassemblyjs/validation": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/validation/-/validation-1.4.3.tgz", + "integrity": "sha512-R+rRMKfhd9mq0rj2mhU9A9NKI2l/Rw65vIYzz4lui7eTKPcCu1l7iZNi4b9Gen8D42Sqh/KGiaQNk/x5Tn/iBQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3" + } + }, + "@webassemblyjs/wasm-edit": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.4.3.tgz", + "integrity": "sha512-qzuwUn771PV6/LilqkXcS0ozJYAeY/OKbXIWU3a8gexuqb6De2p4ya/baBeH5JQ2WJdfhWhSvSbu86Vienttpw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3", + "@webassemblyjs/helper-buffer": "1.4.3", + "@webassemblyjs/helper-wasm-bytecode": "1.4.3", + "@webassemblyjs/helper-wasm-section": "1.4.3", + "@webassemblyjs/wasm-gen": "1.4.3", + "@webassemblyjs/wasm-opt": "1.4.3", + "@webassemblyjs/wasm-parser": "1.4.3", + "@webassemblyjs/wast-printer": "1.4.3", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.4.3.tgz", + "integrity": "sha512-eR394T8dHZfpLJ7U/Z5pFSvxl1L63JdREebpv9gYc55zLhzzdJPAuxjBYT4XqevUdW67qU2s0nNA3kBuNJHbaQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3", + "@webassemblyjs/helper-wasm-bytecode": "1.4.3", + "@webassemblyjs/leb128": "1.4.3" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.4.3.tgz", + "integrity": "sha512-7Gp+nschuKiDuAL1xmp4Xz0rgEbxioFXw4nCFYEmy+ytynhBnTeGc9W9cB1XRu1w8pqRU2lbj2VBBA4cL5Z2Kw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3", + "@webassemblyjs/helper-buffer": "1.4.3", + "@webassemblyjs/wasm-gen": "1.4.3", + "@webassemblyjs/wasm-parser": "1.4.3", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.4.3.tgz", + "integrity": "sha512-KXBjtlwA3BVukR/yWHC9GF+SCzBcgj0a7lm92kTOaa4cbjaTaa47bCjXw6cX4SGQpkncB9PU2hHGYVyyI7wFRg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3", + "@webassemblyjs/helper-wasm-bytecode": "1.4.3", + "@webassemblyjs/leb128": "1.4.3", + "@webassemblyjs/wasm-parser": "1.4.3", + "webassemblyjs": "1.4.3" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.4.3.tgz", + "integrity": "sha512-QhCsQzqV0CpsEkRYyTzQDilCNUZ+5j92f+g35bHHNqS22FppNTywNFfHPq8ZWZfYCgbectc+PoghD+xfzVFh1Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3", + "@webassemblyjs/floating-point-hex-parser": "1.4.3", + "@webassemblyjs/helper-code-frame": "1.4.3", + "@webassemblyjs/helper-fsm": "1.4.3", + "long": "^3.2.0", + "webassemblyjs": "1.4.3" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.4.3.tgz", + "integrity": "sha512-EgXk4anf8jKmuZJsqD8qy5bz2frEQhBvZruv+bqwNoLWUItjNSFygk8ywL3JTEz9KtxTlAmqTXNrdD1d9gNDtg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3", + "@webassemblyjs/wast-parser": "1.4.3", + "long": "^3.2.0" + } + }, + "abbrev": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", + "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", + "dev": true + }, + "accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "dev": true, + "requires": { + "mime-types": "~2.1.18", + "negotiator": "0.6.1" + }, + "dependencies": { + "mime-db": { + "version": "1.36.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz", + "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==", + "dev": true + }, + "mime-types": { + "version": "2.1.20", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz", + "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==", + "dev": true, + "requires": { + "mime-db": "~1.36.0" + } + } + } + }, + "acorn": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.2.tgz", + "integrity": "sha512-cJrKCNcr2kv8dlDnbw+JPUGjHZzo4myaxOLmpOX8a+rgX94YeTcTMv/LFJUSByRpc+i4GgVnnhLxvMu/2Y+rqw==", + "dev": true + }, + "acorn-dynamic-import": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", + "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", + "dev": true, + "requires": { + "acorn": "^5.0.0" + } + }, + "adm-zip": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.11.tgz", + "integrity": "sha512-L8vcjDTCOIJk7wFvmlEUN7AsSb8T+2JrdP7KINBjzr24TJ5Mwj590sLu3BC7zNZowvJWa/JtPmD8eJCzdtDWjA==", + "dev": true + }, + "after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", + "dev": true + }, + "ag-grid": { + "version": "18.1.2", + "resolved": "https://registry.npmjs.org/ag-grid/-/ag-grid-18.1.2.tgz", + "integrity": "sha512-HtJt8iFcRKCBj5UHBDmwSLLr72F3XDACeBNarH4nJWFHIqcnu7u0Ifrd2nftPmfEBj6YjFHawDqcZL2yo3YfmQ==" + }, + "ag-grid-angular": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/ag-grid-angular/-/ag-grid-angular-18.1.0.tgz", + "integrity": "sha512-Q3iBC24OxA4pj56uqVzp26WDW7VoKQYzcZlORvhjPWYURtAfmB0++mjBD79LsG1Q0nL3q/nOQ3tCi4LaTakU1Q==" + }, + "agent-base": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", + "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "ajv": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.4.0.tgz", + "integrity": "sha1-06/3jpJ3VJdx2vAWTP9ISCt1T8Y=", + "dev": true, + "requires": { + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0", + "uri-js": "^3.0.2" + } + }, + "ajv-errors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.0.tgz", + "integrity": "sha1-7PAh+hCP0X37Xms4Py3SM+Mf/Fk=", + "dev": true + }, + "ajv-keywords": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", + "dev": true + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "angular-2-local-storage": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/angular-2-local-storage/-/angular-2-local-storage-2.0.0.tgz", + "integrity": "sha512-2Gs2DNMPA0uvn9HfddVBwKNeJxbumrpT9XgL+0CWJ4Lj8kPUX+RkmaY2Xz8ByGn1SsK0T35vqC/Gtl8o1mnjGQ==" + }, + "ansi-colors": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.0.5.tgz", + "integrity": "sha512-VVjWpkfaphxUBFarydrQ3n26zX5nIK7hcbT3/ielrvwDDyBBjuh2vuSw1P9zkPq0cfqvdw7lkYHnu+OLSfIBsg==", + "dev": true + }, + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=" + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "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" + }, + "dependencies": { + "color-convert": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", + "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", + "dev": true, + "requires": { + "color-name": "1.1.1" + } + }, + "color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", + "dev": true + } + } + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" + } + }, + "app-root-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.1.0.tgz", + "integrity": "sha1-mL9lmTJ+zqGZMJhm6BQDaP0uZGo=", + "dev": true + }, + "append-transform": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", + "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", + "dev": true, + "requires": { + "default-require-extensions": "^2.0.0" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-flatten": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz", + "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=", + "dev": true + }, + "array-slice": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", + "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "arraybuffer.slice": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", + "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true, + "optional": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true, + "requires": { + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "autoprefixer": { + "version": "8.6.5", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-8.6.5.tgz", + "integrity": "sha512-PLWJN3Xo/rycNkx+mp8iBDMTm3FeWe4VmYaZDSqL5QQB9sLsQkG5k8n+LNDFnhh9kdq2K+egL/icpctOmDHwig==", + "dev": true, + "requires": { + "browserslist": "^3.2.8", + "caniuse-lite": "^1.0.30000864", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^6.0.23", + "postcss-value-parser": "^3.2.3" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-polyfill": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz", + "integrity": "sha1-g2TKYt+Or7gwSZ9pkXdGbDsDSZ0=", + "requires": { + "babel-runtime": "^6.22.0", + "core-js": "^2.4.0", + "regenerator-runtime": "^0.10.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + } + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "dev": true + }, + "base64-js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", + "dev": true + }, + "base64id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "dev": true, + "requires": { + "callsite": "1.0.0" + } + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "dev": true + }, + "blob": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", + "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=", + "dev": true + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, + "optional": true, + "requires": { + "inherits": "~2.0.0" + } + }, + "blocking-proxy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-1.0.1.tgz", + "integrity": "sha512-KE8NFMZr3mN2E0HcvCgRtX7DjhiIQrwle+nSVJVC/yqFb9+xznHl2ZcoBp2L9qzkI4t4cBFJ1efXF8Dwi132RA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "body-parser": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", + "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.1", + "http-errors": "~1.6.2", + "iconv-lite": "0.4.19", + "on-finished": "~2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "~1.6.15" + }, + "dependencies": { + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "bowser": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-1.9.3.tgz", + "integrity": "sha512-/gp96UlcFw5DbV2KQPCqTqi0Mb9gZRyDAHiDsGEH+4B/KOQjeoE5lM1PxlVX8DQDvfEfitmC1rW2Oy8fk/XBDg==" + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "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 + } + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", + "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000844", + "electron-to-chromium": "^1.3.47" + } + }, + "browserstack": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.5.1.tgz", + "integrity": "sha512-O8VMT64P9NOLhuIoD4YngyxBURefaSdR4QdhG8l6HZ9VxtU7jc3m6jLufFwKA5gaf7fetfB2TnRJnMxyob+heg==", + "dev": true, + "requires": { + "https-proxy-agent": "^2.2.1" + } + }, + "btoa": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", + "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", + "dev": true + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz", + "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==", + "dev": true + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", + "dev": true + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "cacache": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", + "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "dev": true, + "requires": { + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.1", + "mississippi": "^2.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^5.2.4", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + } + } + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dev": true, + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true, + "optional": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + } + } + }, + "caniuse-lite": { + "version": "1.0.30000878", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000878.tgz", + "integrity": "sha512-/dCGTdLCnjVJno1mFRn7Y6eit3AYaeFzSrMQHCoK0LEQaWl5snuLex1Ky4b8/Qu2ig5NgTX4cJx65hH9546puA==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "optional": true, + "requires": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=" + }, + "chart.js": { + "version": "git+https://github.com/chartjs/Chart.js.git#48fefd92b6dc61345021c6508b23698830ff392f", + "from": "git+https://github.com/chartjs/Chart.js.git#48fefd92b6dc61345021c6508b23698830ff392f", + "requires": { + "chartjs-color": "^2.1.0", + "moment": "^2.10.2" + } + }, + "chartjs-color": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.2.0.tgz", + "integrity": "sha1-hKL7dVeH7YXDndbdjHsdiEKbrq4=", + "requires": { + "chartjs-color-string": "^0.5.0", + "color-convert": "^0.5.3" + } + }, + "chartjs-color-string": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/chartjs-color-string/-/chartjs-color-string-0.5.0.tgz", + "integrity": "sha512-amWNvCOXlOUYxZVDSa0YOab5K/lmEhbFNKI55PWc4mlv28BDzA7zaoQTGxSBgJMHIW+hGX8YUrvw/FH4LyhwSQ==", + "requires": { + "color-name": "^1.0.0" + } + }, + "chartjs-plugin-streaming": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/chartjs-plugin-streaming/-/chartjs-plugin-streaming-1.6.0.tgz", + "integrity": "sha512-DjHcdHGcy53rs0w7vVMzOqB8TVMBXy6qMsjfUxAn/zQlzlbQxQAOzlrDNf2lw8pmqD60km85U7lHXxMasGffhA==", + "requires": { + "chart.js": "^2.7.0", + "moment": "^2.10.2" + }, + "dependencies": { + "chart.js": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.7.2.tgz", + "integrity": "sha512-90wl3V9xRZ8tnMvMlpcW+0Yg13BelsGS9P9t0ClaDxv/hdypHDr/YAGf+728m11P5ljwyB0ZHfPKCapZFqSqYA==", + "requires": { + "chartjs-color": "^2.1.0", + "moment": "^2.10.2" + } + } + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "fsevents": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "chownr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", + "dev": true + }, + "chrome-trace-event": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-0.1.3.tgz", + "integrity": "sha512-sjndyZHrrWiu4RY7AkHgjn80GfAM2ZSzUkZLV/Js59Ldmh6JDThf0SUmOHU53rFu2rVxxfCzJ30Ukcfch3Gb/A==", + "dev": true + }, + "ci-info": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.3.tgz", + "integrity": "sha512-SK/846h/Rcy8q9Z9CAwGBLfCJ6EkjJWdpelWDufQpqVDYq2Wnnv8zlSO6AMQap02jvhVruKKpEtQOufo3pFhLg==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "circular-dependency-plugin": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.0.2.tgz", + "integrity": "sha512-oC7/DVAyfcY3UWKm0sN/oVoDedQDQiw/vIiAnuTWTpE5s0zWf7l3WY417Xw/Fbi/QbAjctAkxgMiS9P0s3zkmA==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", + "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "optional": true, + "requires": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "clone-deep": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-2.0.2.tgz", + "integrity": "sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.0", + "shallow-clone": "^1.0.0" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "codelyzer": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-4.2.1.tgz", + "integrity": "sha512-CKwfgpfkqi9dyzy4s6ELaxJ54QgJ6A8iTSsM4bzHbLuTpbKncvNc3DUlCvpnkHBhK47gEf4qFsWoYqLrJPhy6g==", + "dev": true, + "requires": { + "app-root-path": "^2.0.1", + "css-selector-tokenizer": "^0.7.0", + "cssauron": "^1.4.0", + "semver-dsl": "^1.0.1", + "source-map": "^0.5.6", + "sprintf-js": "^1.0.3" + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz", + "integrity": "sha1-vbbGnOZg+t/+CwAHzER+G59ygr0=" + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "combine-lists": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/combine-lists/-/combine-lists-1.0.1.tgz", + "integrity": "sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y=", + "dev": true, + "requires": { + "lodash": "^4.5.0" + } + }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "compare-versions": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.3.1.tgz", + "integrity": "sha512-GkIcfJ9sDt4+gS+RWH3X+kR7ezuKdu3fg2oA9nRA8HZoqZwAKv3ml3TyfB9OyV2iFXxCw7q5XfV6SyPbSCT2pw==", + "dev": true + }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", + "dev": true + }, + "component-emitter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", + "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=", + "dev": true + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", + "dev": true + }, + "compressible": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.14.tgz", + "integrity": "sha1-MmxfUH+7BV9UEWeCuWmoG2einac=", + "dev": true, + "requires": { + "mime-db": ">= 1.34.0 < 2" + }, + "dependencies": { + "mime-db": { + "version": "1.36.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz", + "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==", + "dev": true + } + } + }, + "compression": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz", + "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.14", + "debug": "2.6.9", + "on-headers": "~1.0.1", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "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 + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "connect": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.5.tgz", + "integrity": "sha1-+43ee6B2OHfQ7J352sC0tA5yx9o=", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.0.6", + "parseurl": "~1.3.2", + "utils-merge": "1.0.1" + }, + "dependencies": { + "finalhandler": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.6.tgz", + "integrity": "sha1-AHrqM9Gk0+QgF/YkhIrVjSEvgU8=", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.3.1", + "unpipe": "~1.0.0" + } + } + } + }, + "connect-history-api-fallback": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=", + "dev": true + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "^0.1.4" + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "dev": true + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-webpack-plugin": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.5.2.tgz", + "integrity": "sha512-zmC33E8FFSq3AbflTvqvPvBo621H36Afsxlui91d+QyZxPIuXghfnTsa1CuqiAaCPgJoSUWfTFbKJnadZpKEbQ==", + "dev": true, + "requires": { + "cacache": "^10.0.4", + "find-cache-dir": "^1.0.0", + "globby": "^7.1.1", + "is-glob": "^4.0.0", + "loader-utils": "^1.1.0", + "minimatch": "^3.0.4", + "p-limit": "^1.0.0", + "serialize-javascript": "^1.4.0" + } + }, + "core-js": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", + "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-4.0.0.tgz", + "integrity": "sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==", + "dev": true, + "requires": { + "is-directory": "^0.3.1", + "js-yaml": "^3.9.0", + "parse-json": "^4.0.0", + "require-from-string": "^2.0.1" + }, + "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + } + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "dev": true, + "optional": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css-parse": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", + "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=", + "dev": true + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-selector-tokenizer": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", + "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=", + "dev": true, + "requires": { + "cssesc": "^0.1.0", + "fastparse": "^1.1.1", + "regexpu-core": "^1.0.0" + } + }, + "css-what": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", + "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=", + "dev": true + }, + "cssauron": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz", + "integrity": "sha1-pmAt/34EqDBtwNuaVR6S6LVmKtg=", + "dev": true, + "requires": { + "through": "X.X.X" + } + }, + "cssesc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", + "dev": true + }, + "cuint": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", + "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=", + "dev": true + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", + "dev": true + }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "default-require-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", + "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", + "dev": true, + "requires": { + "strip-bom": "^3.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "dev": true, + "requires": { + "globby": "^6.1.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "p-map": "^1.1.1", + "pify": "^3.0.0", + "rimraf": "^2.2.8" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "detect-node": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", + "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=", + "dev": true + }, + "di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "dev": true + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "dir-glob": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", + "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "path-type": "^3.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "docopt": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/docopt/-/docopt-0.6.2.tgz", + "integrity": "sha1-so6eIiDaXsSffqW7JKR3h0Be6xE=", + "dev": true + }, + "dom-converter": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz", + "integrity": "sha1-pF71cnuJDJv/5tfIduexnLDhfzs=", + "dev": true, + "requires": { + "utila": "~0.3" + }, + "dependencies": { + "utila": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", + "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", + "dev": true + } + } + }, + "dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", + "dev": true, + "requires": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "dev": true, + "requires": { + "domelementtype": "~1.1.1", + "entities": "~1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", + "dev": true + } + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", + "dev": true + }, + "domhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", + "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "duplexify": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", + "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "ejs": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.1.tgz", + "integrity": "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.61", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.61.tgz", + "integrity": "sha512-XjTdsm6x71Y48lF9EEvGciwXD70b20g0t+3YbrE+0fPFutqV08DSNrZXkoXAp3QuzX7TpL/OW+/VsNoR9GkuNg==", + "dev": true + }, + "elliptic": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", + "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "emitter-component": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/emitter-component/-/emitter-component-1.1.1.tgz", + "integrity": "sha1-Bl4tvtaVm/RwZ57avq95gdEAOrY=" + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "encodeurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", + "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=", + "dev": true + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "requires": { + "iconv-lite": "~0.4.13" + } + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "engine.io": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.3.tgz", + "integrity": "sha1-jef5eJXSDTm4X4ju7nd7K9QrE9Q=", + "dev": true, + "requires": { + "accepts": "1.3.3", + "base64id": "1.0.0", + "cookie": "0.3.1", + "debug": "2.3.3", + "engine.io-parser": "1.3.2", + "ws": "1.1.2" + }, + "dependencies": { + "accepts": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", + "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", + "dev": true, + "requires": { + "mime-types": "~2.1.11", + "negotiator": "0.6.1" + } + }, + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true, + "requires": { + "ms": "0.7.2" + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + } + } + }, + "engine.io-client": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.3.tgz", + "integrity": "sha1-F5jtk0USRkU9TG9jXXogH+lA1as=", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "2.3.3", + "engine.io-parser": "1.3.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parsejson": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "1.1.2", + "xmlhttprequest-ssl": "1.5.3", + "yeast": "0.1.2" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true, + "requires": { + "ms": "0.7.2" + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + } + } + }, + "engine.io-parser": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz", + "integrity": "sha1-k3sHnwAH0Ik+xW1GyyILjLQ1Igo=", + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "0.0.6", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.4", + "has-binary": "0.1.7", + "wtf-8": "1.0.0" + } + }, + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "dev": true + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz", + "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==", + "dev": true, + "requires": { + "es-to-primitive": "^1.1.1", + "function-bind": "^1.1.1", + "has": "^1.0.1", + "is-callable": "^1.1.3", + "is-regex": "^1.0.4" + } + }, + "es-to-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", + "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "dev": true, + "requires": { + "is-callable": "^1.1.1", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.1" + } + }, + "es6-promise": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz", + "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==", + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, + "requires": { + "es6-promise": "^4.0.3" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "escodegen": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", + "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", + "dev": true, + "requires": { + "esprima": "^2.7.1", + "estraverse": "^1.9.1", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.2.0" + }, + "dependencies": { + "source-map": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", + "dev": true, + "optional": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + }, + "dependencies": { + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + } + } + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + }, + "dependencies": { + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + } + } + }, + "estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "eve": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/eve/-/eve-0.5.4.tgz", + "integrity": "sha1-Z9CAuXJSkdfjieNMJoYN2X8d66o=" + }, + "eventemitter3": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", + "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=", + "dev": true + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true + }, + "eventsource": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", + "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", + "dev": true, + "requires": { + "original": ">=0.0.5" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + } + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-braces": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz", + "integrity": "sha1-SIsdHSRRyz06axks/AMPRMWFX+o=", + "dev": true, + "requires": { + "array-slice": "^0.2.3", + "array-unique": "^0.2.1", + "braces": "^0.1.2" + }, + "dependencies": { + "braces": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz", + "integrity": "sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=", + "dev": true, + "requires": { + "expand-range": "^0.1.0" + } + }, + "expand-range": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-0.1.1.tgz", + "integrity": "sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=", + "dev": true, + "requires": { + "is-number": "^0.1.1", + "repeat-string": "^0.2.2" + } + }, + "is-number": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-0.1.1.tgz", + "integrity": "sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY=", + "dev": true + }, + "repeat-string": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-0.2.2.tgz", + "integrity": "sha1-x6jTI2BoNiBZp+RlH8aITosftK4=", + "dev": true + } + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "^2.1.0" + } + }, + "express": { + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz", + "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "array-flatten": "1.1.1", + "body-parser": "1.18.2", + "content-disposition": "0.5.2", + "content-type": "~1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.1.1", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.3", + "qs": "6.5.1", + "range-parser": "~1.2.0", + "safe-buffer": "5.1.1", + "send": "0.16.2", + "serve-static": "1.13.2", + "setprototypeof": "1.1.0", + "statuses": "~1.4.0", + "type-is": "~1.6.16", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "mime-db": { + "version": "1.36.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz", + "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==", + "dev": true + }, + "mime-types": { + "version": "2.1.20", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz", + "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==", + "dev": true, + "requires": { + "mime-db": "~1.36.0" + } + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true + }, + "type-is": { + "version": "1.6.16", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", + "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.18" + } + } + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "requires": { + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" + }, + "dependencies": { + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "requires": { + "os-tmpdir": "~1.0.2" + } + } + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fastparse": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", + "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-loader": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz", + "integrity": "sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "schema-utils": "^0.4.5" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fileset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "dev": true, + "requires": { + "glob": "^7.0.3", + "minimatch": "^3.0.3" + } + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^1.1.3", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.4.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "flush-write-stream": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", + "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-access": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", + "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=", + "dev": true, + "requires": { + "null-check": "^1.0.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.3.0", + "node-pre-gyp": "^0.6.39" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true, + "requires": { + "inherits": "~2.0.0" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.x.x" + } + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^0.4.1", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.x.x" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "^1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "~0.1.0" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fstream": "^1.0.0", + "inherits": "2", + "minimatch": "^3.0.0" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "^1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ajv": "^4.9.1", + "har-schema": "^1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.x.x", + "cryptiles": "2.x.x", + "hoek": "2.x.x", + "sntp": "1.x.x" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true, + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "^0.2.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "~0.1.0" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsonify": "~0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "dev": true, + "requires": { + "mime-db": "~1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.39", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "hawk": "3.1.3", + "mkdirp": "^0.5.1", + "nopt": "^4.0.1", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "request": "2.81.0", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^2.2.1", + "tar-pack": "^3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "~0.4.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "dev": true, + "requires": { + "buffer-shims": "~1.0.0", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~1.0.0", + "util-deprecate": "~1.0.1" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "~0.6.0", + "aws4": "^1.2.1", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.0", + "forever-agent": "~0.6.1", + "form-data": "~2.1.1", + "har-validator": "~4.2.1", + "hawk": "~3.1.3", + "http-signature": "~1.1.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.7", + "oauth-sign": "~0.8.1", + "performance-now": "^0.2.0", + "qs": "~6.4.0", + "safe-buffer": "^5.0.1", + "stringstream": "~0.0.4", + "tough-cookie": "~2.3.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.0.0" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.x.x" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jodid25519": "^1.0.0", + "jsbn": "~0.1.0", + "tweetnacl": "~0.14.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^2.2.0", + "fstream": "^1.0.10", + "fstream-ignore": "^1.0.5", + "once": "^1.3.3", + "readable-stream": "^2.1.4", + "rimraf": "^2.5.1", + "tar": "^2.2.1", + "uid-number": "^0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "punycode": "^1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + } + } + }, + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "optional": true, + "requires": { + "globule": "^1.0.0" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "^2.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + } + }, + "globule": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", + "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", + "dev": true, + "optional": true, + "requires": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + }, + "dependencies": { + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true, + "optional": true + } + } + }, + "gojs": { + "version": "1.8.28", + "resolved": "https://registry.npmjs.org/gojs/-/gojs-1.8.28.tgz", + "integrity": "sha512-eiz6FZDPgqwyf16vjZ7UU9vjrENpMZXORYGLJ+9ZB6NBKR0aNsOpko7n3zb+3vNNkN5RM3f1SGQvrgKBPOi2Nw==" + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "hammerjs": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", + "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=" + }, + "handle-thing": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", + "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=", + "dev": true + }, + "handlebars": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "dev": true, + "requires": { + "async": "^1.4.0", + "optimist": "^0.6.1", + "source-map": "^0.4.4", + "uglify-js": "^2.6" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "optional": true, + "requires": { + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "optional": true + } + } + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", + "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", + "dev": true, + "requires": { + "ajv": "^5.3.0", + "har-schema": "^2.0.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + } + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-binary": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz", + "integrity": "sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=", + "dev": true, + "requires": { + "isarray": "0.0.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + } + } + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.5.tgz", + "integrity": "sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.1.tgz", + "integrity": "sha512-Ba4+0M4YvIDUUsprMjhVTU1yN9F2/LJSAl69ZpzaLT4l4j5mwTS6jqqW9Ojvj6lKz/veqPzpJBqGbXspOb533A==", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "dev": true + }, + "html-minifier": { + "version": "3.5.20", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.20.tgz", + "integrity": "sha512-ZmgNLaTp54+HFKkONyLFEfs5dd/ZOtlquKaTnqIWFmx3Av5zG6ZPcV2d0o9XM2fXOTxxIf6eDcwzFFotke/5zA==", + "dev": true, + "requires": { + "camel-case": "3.0.x", + "clean-css": "4.2.x", + "commander": "2.17.x", + "he": "1.1.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.4.x" + }, + "dependencies": { + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true + } + } + }, + "html-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", + "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", + "dev": true, + "requires": { + "html-minifier": "^3.2.3", + "loader-utils": "^0.2.16", + "lodash": "^4.17.3", + "pretty-error": "^2.0.2", + "tapable": "^1.0.0", + "toposort": "^1.0.0", + "util.promisify": "1.0.0" + }, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + } + } + }, + "htmlparser2": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", + "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", + "dev": true, + "requires": { + "domelementtype": "1", + "domhandler": "2.1", + "domutils": "1.1", + "readable-stream": "1.0" + }, + "dependencies": { + "domutils": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", + "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "dev": true, + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": ">= 1.3.1 < 2" + }, + "dependencies": { + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.13.tgz", + "integrity": "sha1-O9bW/ebjFyyTNMOzO2wZPYD+ETc=", + "dev": true + }, + "http-proxy": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", + "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=", + "dev": true, + "requires": { + "eventemitter3": "1.x.x", + "requires-port": "1.x.x" + } + }, + "http-proxy-middleware": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz", + "integrity": "sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==", + "dev": true, + "requires": { + "http-proxy": "^1.16.2", + "is-glob": "^4.0.0", + "lodash": "^4.17.5", + "micromatch": "^3.1.9" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + } + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "https-proxy-agent": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", + "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", + "dev": true, + "requires": { + "agent-base": "^4.1.0", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "husky": { + "version": "1.0.0-rc.9", + "resolved": "https://registry.npmjs.org/husky/-/husky-1.0.0-rc.9.tgz", + "integrity": "sha512-iGGRXcpwl3qGysa73KAtiZWN/YuQVqwgVsPR0UihVasfIsWaAbOfAsswsGmBhKivGtDCdOiLJPTvEZfGJWiCVw==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.2", + "execa": "^0.9.0", + "find-up": "^2.1.0", + "get-stdin": "^6.0.0", + "is-ci": "^1.1.0", + "pkg-dir": "^2.0.0", + "read-pkg": "^3.0.0", + "run-node": "^1.0.0", + "slash": "^2.0.0" + }, + "dependencies": { + "cosmiconfig": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.0.5.tgz", + "integrity": "sha512-94j37OtvxS5w7qr7Ta6dt67tWdnOxigBVN4VnSxNXFez9o18PGQ0D33SchKP17r9LAcWVTYV72G6vDayAUBFIg==", + "dev": true, + "requires": { + "is-directory": "^0.3.1", + "js-yaml": "^3.9.0", + "parse-json": "^4.0.0" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.9.0.tgz", + "integrity": "sha512-BbUMBiX4hqiHZUA5+JujIjNb6TyAlp2D5KLheMjMluwOuzcnylDL4AxZYLLn1n2AGB49eSWwyKvvEQoRpnAtmA==", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + }, + "ieee754": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", + "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true, + "optional": true + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", + "dev": true + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "import-local": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", + "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", + "dev": true, + "requires": { + "pkg-dir": "^2.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "in-publish": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", + "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", + "dev": true, + "optional": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "inquirer": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.0.6.tgz", + "integrity": "sha1-4EqqnQW3o8ubD0B9BDdfBEcZA0c=", + "requires": { + "ansi-escapes": "^1.1.0", + "chalk": "^1.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.0.1", + "figures": "^2.0.0", + "lodash": "^4.3.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rx": "^4.1.0", + "string-width": "^2.0.0", + "strip-ansi": "^3.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "internal-ip": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz", + "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=", + "dev": true, + "requires": { + "meow": "^3.3.0" + } + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ipaddr.js": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", + "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "dev": true + }, + "is-ci": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz", + "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==", + "dev": true, + "requires": { + "ci-info": "^1.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "^2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "^1.0.1" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isbinaryfile": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.2.tgz", + "integrity": "sha1-Sj6XTsDLqQBNP8bN5yCeppNopiE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz", + "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", + "dev": true, + "requires": { + "abbrev": "1.0.x", + "async": "1.x", + "escodegen": "1.8.x", + "esprima": "2.7.x", + "glob": "^5.0.15", + "handlebars": "^4.0.1", + "js-yaml": "3.x", + "mkdirp": "0.5.x", + "nopt": "3.x", + "once": "1.x", + "resolve": "1.1.x", + "supports-color": "^3.1.0", + "which": "^1.1.1", + "wordwrap": "^1.0.0" + }, + "dependencies": { + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + } + } + }, + "istanbul-api": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.3.1.tgz", + "integrity": "sha512-duj6AlLcsWNwUpfyfHt0nWIeRiZpuShnP40YTxOGQgtaN8fd6JYSxsvxUphTDy8V5MfDXo4s/xVCIIvVCO808g==", + "dev": true, + "requires": { + "async": "^2.1.4", + "compare-versions": "^3.1.0", + "fileset": "^2.0.2", + "istanbul-lib-coverage": "^1.2.0", + "istanbul-lib-hook": "^1.2.0", + "istanbul-lib-instrument": "^1.10.1", + "istanbul-lib-report": "^1.1.4", + "istanbul-lib-source-maps": "^1.2.4", + "istanbul-reports": "^1.3.0", + "js-yaml": "^3.7.0", + "mkdirp": "^0.5.1", + "once": "^1.4.0" + }, + "dependencies": { + "async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "dev": true, + "requires": { + "lodash": "^4.17.10" + } + }, + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true + } + } + }, + "istanbul-instrumenter-loader": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-3.0.1.tgz", + "integrity": "sha512-a5SPObZgS0jB/ixaKSMdn6n/gXSrK2S6q/UfRJBT3e6gQmVjwZROTODQsYW5ZNwOu78hG62Y3fWlebaVOL0C+w==", + "dev": true, + "requires": { + "convert-source-map": "^1.5.0", + "istanbul-lib-instrument": "^1.7.3", + "loader-utils": "^1.1.0", + "schema-utils": "^0.3.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "schema-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", + "dev": true, + "requires": { + "ajv": "^5.0.0" + } + } + } + }, + "istanbul-lib-coverage": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz", + "integrity": "sha512-GvgM/uXRwm+gLlvkWHTjDAvwynZkL9ns15calTrmhGgowlwJBbWMYzWbKqE2DT6JDP1AFXKa+Zi0EkqNCUqY0A==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.2.1.tgz", + "integrity": "sha512-eLAMkPG9FU0v5L02lIkcj/2/Zlz9OuluaXikdr5iStk8FDbSwAixTK9TkYxbF0eNnzAJTwM2fkV2A1tpsIp4Jg==", + "dev": true, + "requires": { + "append-transform": "^1.0.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz", + "integrity": "sha512-1dYuzkOCbuR5GRJqySuZdsmsNKPL3PTuyPevQfoCXJePT9C8y1ga75neU+Tuy9+yS3G/dgx8wgOmp2KLpgdoeQ==", + "dev": true, + "requires": { + "babel-generator": "^6.18.0", + "babel-template": "^6.16.0", + "babel-traverse": "^6.18.0", + "babel-types": "^6.18.0", + "babylon": "^6.18.0", + "istanbul-lib-coverage": "^1.2.0", + "semver": "^5.3.0" + } + }, + "istanbul-lib-report": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.4.tgz", + "integrity": "sha512-Azqvq5tT0U09nrncK3q82e/Zjkxa4tkFZv7E6VcqP0QCPn6oNljDPfrZEC/umNXds2t7b8sRJfs6Kmpzt8m2kA==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^1.2.0", + "mkdirp": "^0.5.1", + "path-parse": "^1.0.5", + "supports-color": "^3.1.2" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.5.tgz", + "integrity": "sha512-8O2T/3VhrQHn0XcJbP1/GN7kXMiRAlPi+fj3uEHrjBD8Oz7Py0prSC25C09NuAZS6bgW1NNKAvCSHZXB0irSGA==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "istanbul-lib-coverage": "^1.2.0", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.1", + "source-map": "^0.5.3" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "istanbul-reports": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.3.0.tgz", + "integrity": "sha512-y2Z2IMqE1gefWUaVjrBm0mSKvUkaBy9Vqz8iwr/r40Y9hBbIteH5wqHG/9DLTfJ9xUnUT2j7A3+VVJ6EaYBllA==", + "dev": true, + "requires": { + "handlebars": "^4.0.3" + } + }, + "jasmine": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz", + "integrity": "sha1-awicChFXax8W3xG4AUbZHU6Lij4=", + "dev": true, + "requires": { + "exit": "^0.1.2", + "glob": "^7.0.6", + "jasmine-core": "~2.8.0" + }, + "dependencies": { + "jasmine-core": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz", + "integrity": "sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=", + "dev": true + } + } + }, + "jasmine-core": { + "version": "2.99.1", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.99.1.tgz", + "integrity": "sha1-5kAN8ea1bhMLYcS80JPap/boyhU=", + "dev": true + }, + "jasmine-diff": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/jasmine-diff/-/jasmine-diff-0.1.3.tgz", + "integrity": "sha1-k8zC3MQQKMXd1GBlWAdIOfLe6qg=", + "dev": true, + "requires": { + "diff": "^3.2.0" + } + }, + "jasmine-spec-reporter": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz", + "integrity": "sha512-FZBoZu7VE5nR7Nilzy+Np8KuVIOxF4oXDPDknehCYBDE080EnlPu0afdZNmpGDBRCUBv3mj5qgqCRmk6W/K8vg==", + "dev": true, + "requires": { + "colors": "1.1.2" + } + }, + "jasminewd2": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.2.0.tgz", + "integrity": "sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4=", + "dev": true + }, + "js-base64": { + "version": "2.4.8", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.8.tgz", + "integrity": "sha512-hm2nYpDrwoO/OzBhdcqs/XGT6XjSuSSCVEpia+Kl2J6x4CYt5hISlVL/AYU1khoDXv0AQVgxtdJySb9gjAn56Q==", + "dev": true, + "optional": true + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", + "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "dependencies": { + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + } + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jszip": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.1.5.tgz", + "integrity": "sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ==", + "dev": true, + "requires": { + "core-js": "~2.3.0", + "es6-promise": "~3.0.2", + "lie": "~3.1.0", + "pako": "~1.0.2", + "readable-stream": "~2.0.6" + }, + "dependencies": { + "core-js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.3.0.tgz", + "integrity": "sha1-+rg/uwstjchfpjbEudNMdUIMbWU=", + "dev": true + }, + "es6-promise": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz", + "integrity": "sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y=", + "dev": true + }, + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~0.10.x", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "karma": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/karma/-/karma-1.7.1.tgz", + "integrity": "sha512-k5pBjHDhmkdaUccnC7gE3mBzZjcxyxYsYVaqiL2G5AqlfLyBO5nw2VdNK+O16cveEPd/gIOWULH7gkiYYwVNHg==", + "dev": true, + "requires": { + "bluebird": "^3.3.0", + "body-parser": "^1.16.1", + "chokidar": "^1.4.1", + "colors": "^1.1.0", + "combine-lists": "^1.0.0", + "connect": "^3.6.0", + "core-js": "^2.2.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.0", + "expand-braces": "^0.1.1", + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "http-proxy": "^1.13.0", + "isbinaryfile": "^3.0.0", + "lodash": "^3.8.0", + "log4js": "^0.6.31", + "mime": "^1.3.4", + "minimatch": "^3.0.2", + "optimist": "^0.6.1", + "qjobs": "^1.1.4", + "range-parser": "^1.2.0", + "rimraf": "^2.6.0", + "safe-buffer": "^5.0.1", + "socket.io": "1.7.3", + "source-map": "^0.5.3", + "tmp": "0.0.31", + "useragent": "^2.1.12" + }, + "dependencies": { + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + } + } + }, + "karma-chrome-launcher": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz", + "integrity": "sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w==", + "dev": true, + "requires": { + "fs-access": "^1.0.0", + "which": "^1.2.1" + } + }, + "karma-coverage-istanbul-reporter": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-2.0.2.tgz", + "integrity": "sha512-IIIrfsfYJKkAyyjRrBx8CZRl2UXi2OSrxKRAA95mkpOMF3Zw5FpjE+v79pWuwu1Keu0pdjcfElmmOuAEjFQshA==", + "dev": true, + "requires": { + "istanbul-api": "^1.3.1", + "minimatch": "^3.0.4" + } + }, + "karma-jasmine": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-1.1.1.tgz", + "integrity": "sha1-b+hA51oRYAydkehLM8RY4cRqNSk=", + "dev": true + }, + "karma-jasmine-html-reporter": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-0.2.2.tgz", + "integrity": "sha1-SKjl7xiAdhfuK14zwRlMNbQ5Ukw=", + "dev": true, + "requires": { + "karma-jasmine": "^1.0.2" + } + }, + "karma-source-map-support": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.3.0.tgz", + "integrity": "sha512-HcPqdAusNez/ywa+biN4EphGz62MmQyPggUsDfsHqa7tSe4jdsxgvTKuDfIazjL+IOxpVWyT7Pr4dhAV+sxX5Q==", + "dev": true, + "requires": { + "source-map-support": "^0.5.5" + } + }, + "keycharm": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/keycharm/-/keycharm-0.2.0.tgz", + "integrity": "sha1-+m6i5DuQpoAohD0n8gddNajD5vk=" + }, + "killable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.0.tgz", + "integrity": "sha1-2ouEvUfeU5WHj5XWTQLyRJ/gXms=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true, + "optional": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "leb": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/leb/-/leb-0.3.0.tgz", + "integrity": "sha1-Mr7p+tFoMo1q6oUi2DP0GA7tHaM=", + "dev": true + }, + "less": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/less/-/less-3.8.1.tgz", + "integrity": "sha512-8HFGuWmL3FhQR0aH89escFNBQH/nEiYPP2ltDFdQw2chE28Yx2E3lhAIq9Y2saYwLSwa699s4dBVEfCY8Drf7Q==", + "dev": true, + "requires": { + "clone": "^2.1.2", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "mime": "^1.4.1", + "mkdirp": "^0.5.0", + "promise": "^7.1.1", + "request": "^2.83.0", + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "less-loader": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-4.1.0.tgz", + "integrity": "sha512-KNTsgCE9tMOM70+ddxp9yyt9iHqgmSs0yTZc5XH5Wo+g80RWRIYNqE58QJKm/yMud5wZEvz50ugRDuzVIkyahg==", + "dev": true, + "requires": { + "clone": "^2.1.1", + "loader-utils": "^1.1.0", + "pify": "^3.0.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "license-webpack-plugin": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-1.4.0.tgz", + "integrity": "sha512-iwuNFMWbXS76WiQXJBTs8/7Tby4NQnY8AIkBMuJG5El79UT8zWrJQMfpW+KRXt4Y2Bs5uk+Myg/MO7ROSF8jzA==", + "dev": true, + "requires": { + "ejs": "^2.5.7" + } + }, + "lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=", + "dev": true, + "requires": { + "immediate": "~3.0.5" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "loader-runner": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", + "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", + "dev": true + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true, + "optional": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "lodash.mergewith": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", + "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==", + "dev": true, + "optional": true + }, + "lodash.tail": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", + "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=", + "dev": true + }, + "log4js": { + "version": "0.6.38", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-0.6.38.tgz", + "integrity": "sha1-LElBFmldb7JUgJQ9P8hy5mKlIv0=", + "dev": true, + "requires": { + "readable-stream": "~1.0.2", + "semver": "~4.3.3" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "semver": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "loglevel": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", + "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", + "dev": true + }, + "long": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", + "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=", + "dev": true + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "lru-cache": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "make-error": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.4.tgz", + "integrity": "sha512-0Dab5btKVPhibSalc9QGXb559ED7G7iLjFXBaj9Wq8O3vorueR5K5jaE3hkG6ZQINyhA/JgG6Qk4qdFQjsYV6g==", + "dev": true + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "dev": true + }, + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "dev": true, + "requires": { + "mime-db": "~1.30.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + }, + "mini-css-extract-plugin": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.2.tgz", + "integrity": "sha512-ots7URQH4wccfJq9Ssrzu2+qupbncAce4TmTzunI9CIwlQMp2XI+WNUw6xWF6MMAGAm1cbUVINrSjATaVMyKXg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "mississippi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", + "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^2.0.1", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mixin-object": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "dev": true, + "requires": { + "for-in": "^0.1.3", + "is-extendable": "^0.1.1" + }, + "dependencies": { + "for-in": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", + "dev": true + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "moment": { + "version": "2.22.2", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz", + "integrity": "sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y=" + }, + "moment-timezone": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.21.tgz", + "integrity": "sha512-j96bAh4otsgj3lKydm3K7kdtA3iKf2m6MY2iSYCzCm5a1zmHo1g+aK3068dDEeocLZQIS9kU8bsdQHLqEvgW0A==", + "requires": { + "moment": ">= 2.9.0" + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" + }, + "nan": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", + "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true + }, + "neo-async": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.2.tgz", + "integrity": "sha512-vdqTKI9GBIYcAEbFAcpKPErKINfPF5zIuz3/niBfq8WUZjpT2tytLlFVrBgWdOtqI4uaA/Rb6No0hux39XXDuw==", + "dev": true + }, + "ng-click-outside": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ng-click-outside/-/ng-click-outside-4.0.0.tgz", + "integrity": "sha512-b5JIWKjaALmKWmy8SXQjxrRIaPqExmqktcZXRwHflzR0UqUKKBT/2C33jBMI425QD75BPqpAiGq5xujzEybkUw==" + }, + "ng2-nouislider": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/ng2-nouislider/-/ng2-nouislider-1.7.11.tgz", + "integrity": "sha1-uLpePS/8I+HjLf5U3Rcm4rS+MWs=" + }, + "ngx-clipboard": { + "version": "11.1.3", + "resolved": "https://registry.npmjs.org/ngx-clipboard/-/ngx-clipboard-11.1.3.tgz", + "integrity": "sha512-L2lAwbw1ZpCmLzObOTVWbeiLLZaxQfVEUAcOjdvdk5i7/Dtg/wCYCTBVdb8RrWOWdv7OgbiUSCuhrijK89UiHA==", + "requires": { + "ngx-window-token": "^1.0.0", + "tslib": "^1.9.0" + } + }, + "ngx-highlightjs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ngx-highlightjs/-/ngx-highlightjs-2.1.1.tgz", + "integrity": "sha512-8LpImj51J8372Zztg/SHB5IznPVtujbW/Ner2KJOh1DjO7uph9jFt5AYdvtJrX9WeJ9Su+uuLlbjbSm2NgloKg==", + "requires": { + "tslib": "^1.9.0" + } + }, + "ngx-infinite-scroll": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ngx-infinite-scroll/-/ngx-infinite-scroll-6.0.1.tgz", + "integrity": "sha512-20WcD+3Qh3O0IEFyIjt55JPTKw5W1hAxERXMUDgGDRveS3IBpBxv2DuX5vuHG/bNGC+WoTDlNR/XXScNNicRpw==", + "requires": { + "opencollective": "^1.0.3" + } + }, + "ngx-window-token": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ngx-window-token/-/ngx-window-token-1.0.0.tgz", + "integrity": "sha512-n+ZTyuNKHGccKoaofIgNCSJ7XgfujDodSYOxauY5eE6s4sxCriMBZelBIMqjaEuIE2GleViIwlCzb/j45rakPA==", + "requires": { + "tslib": "^1.9.0" + } + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "requires": { + "lower-case": "^1.1.1" + } + }, + "node-fetch": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.6.3.tgz", + "integrity": "sha1-3CNO3WSJmC1Y6PDbT2lQKavNjAQ=", + "requires": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + }, + "node-forge": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", + "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==", + "dev": true + }, + "node-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "dev": true, + "optional": true, + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true, + "optional": true + } + } + }, + "node-libs-browser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", + "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^1.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.0", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.10.3", + "vm-browserify": "0.0.4" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "node-sass": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.9.3.tgz", + "integrity": "sha512-XzXyGjO+84wxyH7fV6IwBOTrEBe2f0a6SBze9QWWYR/cL74AcQUks2AsqcCZenl/Fp/JVbuEaLpgrLtocwBUww==", + "dev": true, + "optional": true, + "requires": { + "async-foreach": "^0.1.3", + "chalk": "^1.1.1", + "cross-spawn": "^3.0.0", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "in-publish": "^2.0.0", + "lodash.assign": "^4.2.0", + "lodash.clonedeep": "^4.3.2", + "lodash.mergewith": "^4.6.0", + "meow": "^3.7.0", + "mkdirp": "^0.5.1", + "nan": "^2.10.0", + "node-gyp": "^3.8.0", + "npmlog": "^4.0.0", + "request": "2.87.0", + "sass-graph": "^2.2.4", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "optional": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true, + "optional": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "optional": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "dev": true, + "optional": true, + "requires": { + "ajv": "^5.1.0", + "har-schema": "^2.0.0" + } + }, + "nan": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.0.tgz", + "integrity": "sha512-F4miItu2rGnV2ySkXOQoA8FKz/SR2Q2sWP0sbTxNxz/tuokeC8WxOhPMcwi0qIyGtVn/rrSeLbvVkznqCdwYnw==", + "dev": true, + "optional": true + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true, + "optional": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true, + "optional": true + }, + "request": { + "version": "2.87.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", + "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.6.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.1", + "forever-agent": "~0.6.1", + "form-data": "~2.3.1", + "har-validator": "~5.0.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.17", + "oauth-sign": "~0.8.2", + "performance-now": "^2.1.0", + "qs": "~6.5.1", + "safe-buffer": "^5.1.1", + "tough-cookie": "~2.3.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.1.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true, + "optional": true + }, + "tough-cookie": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "dev": true, + "optional": true, + "requires": { + "punycode": "^1.4.1" + } + } + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "nouislider": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/nouislider/-/nouislider-11.1.0.tgz", + "integrity": "sha512-nD+Fgc8A8j6hnGvR5AaV+OBuLF446z4H2fmcEJ/6U6CJr6rAnFnionMXu7dmdghZ+bhgePvL3wrDRbu+0ux7Jg==" + }, + "npm-package-arg": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.0.tgz", + "integrity": "sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.6.0", + "osenv": "^0.1.5", + "semver": "^5.5.0", + "validate-npm-package-name": "^3.0.0" + } + }, + "npm-registry-client": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/npm-registry-client/-/npm-registry-client-8.6.0.tgz", + "integrity": "sha512-Qs6P6nnopig+Y8gbzpeN/dkt+n7IyVd8f45NTMotGk6Qo7GfBmzwYx6jRLoOOgKiMnaQfYxsuyQlD8Mc3guBhg==", + "dev": true, + "requires": { + "concat-stream": "^1.5.2", + "graceful-fs": "^4.1.6", + "normalize-package-data": "~1.0.1 || ^2.0.0", + "npm-package-arg": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0", + "npmlog": "2 || ^3.1.0 || ^4.0.0", + "once": "^1.3.3", + "request": "^2.74.0", + "retry": "^0.10.0", + "safe-buffer": "^5.1.1", + "semver": "2 >=2.2.1 || 3.x || 4 || 5", + "slide": "^1.1.3", + "ssri": "^5.2.4" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "nth-check": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", + "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "null-check": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", + "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=", + "dev": true + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "object-keys": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", + "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + }, + "dependencies": { + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + } + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "opencollective": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/opencollective/-/opencollective-1.0.3.tgz", + "integrity": "sha1-ruY3K8KBRFg2kMPKja7PwSDdDvE=", + "requires": { + "babel-polyfill": "6.23.0", + "chalk": "1.1.3", + "inquirer": "3.0.6", + "minimist": "1.2.0", + "node-fetch": "1.6.3", + "opn": "4.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "opn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", + "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", + "requires": { + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "opn": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", + "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + } + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + }, + "dependencies": { + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + } + } + }, + "options": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", + "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=", + "dev": true + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dev": true, + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "optional": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pako": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", + "dev": true + }, + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "dev": true, + "requires": { + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, + "requires": { + "no-case": "^2.2.0" + } + }, + "parse-asn1": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", + "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "parsejson": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz", + "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pbkdf2": { + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.16.tgz", + "integrity": "sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "portfinder": { + "version": "1.0.17", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.17.tgz", + "integrity": "sha512-syFcRIRzVI1BoEFOCaAiizwDolh1S1YXSodsVhncbhjzjZQulhczNRbqnUl9N31Q4dKGOXsNDqxC2BWBgSMqeQ==", + "dev": true, + "requires": { + "async": "^1.5.2", + "debug": "^2.2.0", + "mkdirp": "0.5.x" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-import": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-11.1.0.tgz", + "integrity": "sha512-5l327iI75POonjxkXgdRCUS+AlzAdBx4pOvMEhTKTCjb1p8IEeVR9yx3cPbmN7LIWJLbfnIXxAhoB4jpD0c/Cw==", + "dev": true, + "requires": { + "postcss": "^6.0.1", + "postcss-value-parser": "^3.2.3", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + } + }, + "postcss-load-config": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.0.0.tgz", + "integrity": "sha512-V5JBLzw406BB8UIfsAWSK2KSwIJ5yoEIVFb4gVkXci0QdKgA24jLmHZ/ghe/GgX0lJ0/D1uUK1ejhzEY94MChQ==", + "dev": true, + "requires": { + "cosmiconfig": "^4.0.0", + "import-cwd": "^2.0.0" + } + }, + "postcss-loader": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.1.6.tgz", + "integrity": "sha512-hgiWSc13xVQAq25cVw80CH0l49ZKlAnU1hKPOdRrNj89bokRr/bZF2nT+hebPPF9c9xs8c3gw3Fr2nxtmXYnNg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^6.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^0.4.0" + } + }, + "postcss-url": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/postcss-url/-/postcss-url-7.3.2.tgz", + "integrity": "sha512-QMV5mA+pCYZQcUEPQkmor9vcPQ2MT+Ipuu8qdi1gVxbNiIiErEGft+eny1ak19qALoBkccS5AHaCaCDzh7b9MA==", + "dev": true, + "requires": { + "mime": "^1.4.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.0", + "postcss": "^6.0.1", + "xxhashjs": "^0.2.1" + } + }, + "postcss-value-parser": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", + "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "dev": true, + "requires": { + "renderkid": "^2.0.1", + "utila": "~0.4" + } + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "optional": true, + "requires": { + "asap": "~2.0.3" + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "propagating-hammerjs": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/propagating-hammerjs/-/propagating-hammerjs-1.4.6.tgz", + "integrity": "sha1-/tAOmwB2f/1C0U9bUxvEk+tnLjc=", + "requires": { + "hammerjs": "^2.0.6" + } + }, + "protractor": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.4.0.tgz", + "integrity": "sha512-6TSYqMhUUzxr4/wN0ttSISqPMKvcVRXF4k8jOEpGWD8OioLak4KLgfzHK9FJ49IrjzRrZ+Mx1q2Op8Rk0zEcnQ==", + "dev": true, + "requires": { + "@types/node": "^6.0.46", + "@types/q": "^0.0.32", + "@types/selenium-webdriver": "^3.0.0", + "blocking-proxy": "^1.0.0", + "browserstack": "^1.5.1", + "chalk": "^1.1.3", + "glob": "^7.0.3", + "jasmine": "2.8.0", + "jasminewd2": "^2.1.0", + "optimist": "~0.6.0", + "q": "1.4.1", + "saucelabs": "^1.5.0", + "selenium-webdriver": "3.6.0", + "source-map-support": "~0.4.0", + "webdriver-js-extender": "2.0.0", + "webdriver-manager": "^12.0.6" + }, + "dependencies": { + "@types/node": { + "version": "6.0.116", + "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.116.tgz", + "integrity": "sha512-vToa8YEeulfyYg1gSOeHjvvIRqrokng62VMSj2hoZrwZNcYrp2h3AWo6KeBVuymIklQUaY5zgVJvVsC4KiiLkQ==", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" + } + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "webdriver-manager": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.0.tgz", + "integrity": "sha512-oEc5fmkpz6Yh6udhwir5m0eN5mgRPq9P/NU5YWuT3Up5slt6Zz+znhLU7q4+8rwCZz/Qq3Fgpr/4oao7NPCm2A==", + "dev": true, + "requires": { + "adm-zip": "^0.4.9", + "chalk": "^1.1.1", + "del": "^2.2.0", + "glob": "^7.0.3", + "ini": "^1.3.4", + "minimist": "^1.2.0", + "q": "^1.4.1", + "request": "^2.87.0", + "rimraf": "^2.5.2", + "semver": "^5.3.0", + "xml2js": "^0.4.17" + } + } + } + }, + "proxy-addr": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", + "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", + "dev": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.8.0" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.1.29", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", + "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", + "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "q": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", + "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=", + "dev": true + }, + "qjobs": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.1.5.tgz", + "integrity": "sha1-ZZ3p8s+NzCehSBJ28gU3cnI4LnM=", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.0.0.tgz", + "integrity": "sha512-eTPo5t/4bgaMNZxyjWx6N2a6AuE0mq51KWvpc7nU/MAqixcI6v6KrGUKES0HaomdnolQBBXU/++X6/QQ9KL4tw==", + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "randombytes": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", + "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "raw-body": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", + "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + } + }, + "raw-loader": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz", + "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=", + "dev": true + }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "dev": true, + "requires": { + "pify": "^2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + }, + "dependencies": { + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + } + } + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "minimatch": "^3.0.2", + "readable-stream": "^2.0.2", + "set-immediate-shim": "^1.0.1" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "reflect-metadata": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.12.tgz", + "integrity": "sha512-n+IyV+nGz3+0q3/Yf1ra12KpCyi001bi4XFxSjbiWWjfqb52iTTtpGXmCCAOWWIAn9KEuFZKGqBERHmrtScZ3A==", + "dev": true + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=" + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "^0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexpu-core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", + "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "dev": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "renderkid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.1.tgz", + "integrity": "sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk=", + "dev": true, + "requires": { + "css-select": "^1.1.0", + "dom-converter": "~0.1", + "htmlparser2": "~3.3.0", + "strip-ansi": "^3.0.0", + "utila": "~0.3" + }, + "dependencies": { + "utila": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", + "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", + "dev": true + } + } + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "mime-db": { + "version": "1.36.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz", + "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==", + "dev": true + }, + "mime-types": { + "version": "2.1.20", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz", + "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==", + "dev": true, + "requires": { + "mime-db": "~1.36.0" + } + }, + "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 + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", + "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", + "dev": true, + "requires": { + "path-parse": "^1.0.5" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "retry": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", + "dev": true + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "optional": true, + "requires": { + "align-text": "^0.1.1" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "^7.0.5" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "requires": { + "is-promise": "^2.1.0" + } + }, + "run-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/run-node/-/run-node-1.0.0.tgz", + "integrity": "sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A==", + "dev": true + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rx": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", + "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=" + }, + "rxjs": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.2.1.tgz", + "integrity": "sha512-OwMxHxmnmHTUpgO+V7dZChf3Tixf4ih95cmXjzzadULziVl/FKhHScGLj4goEw9weePVOH2Q0+GcCBUhKCZc/g==", + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sass-graph": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", + "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "dev": true, + "optional": true, + "requires": { + "glob": "^7.0.0", + "lodash": "^4.0.0", + "scss-tokenizer": "^0.2.3", + "yargs": "^7.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true, + "optional": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true, + "optional": true + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.0" + } + } + } + }, + "sass-loader": { + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-6.0.7.tgz", + "integrity": "sha512-JoiyD00Yo1o61OJsoP2s2kb19L1/Y2p3QFcCdWdF6oomBGKVYuZyqHWemRBfQ2uGYsk+CH3eCguXNfpjzlcpaA==", + "dev": true, + "requires": { + "clone-deep": "^2.0.1", + "loader-utils": "^1.0.1", + "lodash.tail": "^4.1.1", + "neo-async": "^2.5.0", + "pify": "^3.0.0" + } + }, + "saucelabs": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz", + "integrity": "sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==", + "dev": true, + "requires": { + "https-proxy-agent": "^2.2.1" + } + }, + "sax": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", + "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=", + "dev": true + }, + "schema-utils": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", + "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "dev": true, + "optional": true, + "requires": { + "js-base64": "^2.1.8", + "source-map": "^0.4.2" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "optional": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selenium-webdriver": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz", + "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==", + "dev": true, + "requires": { + "jszip": "^3.1.3", + "rimraf": "^2.5.4", + "tmp": "0.0.30", + "xml2js": "^0.4.17" + }, + "dependencies": { + "tmp": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", + "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.1" + } + } + } + }, + "selfsigned": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.3.tgz", + "integrity": "sha512-vmZenZ+8Al3NLHkWnhBQ0x6BkML1eCP2xEi3JE+f3D9wW9fipD9NNJHYtE9XJM4TsPaHGZJIamrSI6MTg1dU2Q==", + "dev": true, + "requires": { + "node-forge": "0.7.5" + } + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "dev": true + }, + "semver-dsl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz", + "integrity": "sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA=", + "dev": true, + "requires": { + "semver": "^5.3.0" + } + }, + "semver-intersect": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/semver-intersect/-/semver-intersect-1.4.0.tgz", + "integrity": "sha512-d8fvGg5ycKAq0+I6nfWeCx6ffaWJCsBYU0H2Rq56+/zFePYfT8mXkB3tWBSjR5BerkHNZ5eTPIk1/LBYas35xQ==", + "dev": true, + "requires": { + "semver": "^5.0.0" + } + }, + "send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" + }, + "dependencies": { + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.5.0.tgz", + "integrity": "sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==", + "dev": true + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + } + }, + "serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" + }, + "dependencies": { + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + } + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz", + "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==", + "dev": true, + "requires": { + "is-extendable": "^0.1.1", + "kind-of": "^5.0.0", + "mixin-object": "^2.0.1" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + } + }, + "snapsvg": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/snapsvg/-/snapsvg-0.5.1.tgz", + "integrity": "sha1-DK9Sx5GJopB0b8RGzF6GP2vd3+M=", + "requires": { + "eve": "~0.5.1" + } + }, + "snapsvg-cjs": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/snapsvg-cjs/-/snapsvg-cjs-0.0.6.tgz", + "integrity": "sha1-Oy9WryVz09Nkw+1b+IhXRfTS3eE=", + "requires": { + "snapsvg": "0.5.1" + } + }, + "socket.io": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.3.tgz", + "integrity": "sha1-uK+cq6AJSeVo42nxMn6pvp6iRhs=", + "dev": true, + "requires": { + "debug": "2.3.3", + "engine.io": "1.8.3", + "has-binary": "0.1.7", + "object-assign": "4.1.0", + "socket.io-adapter": "0.5.0", + "socket.io-client": "1.7.3", + "socket.io-parser": "2.3.1" + }, + "dependencies": { + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true, + "requires": { + "ms": "0.7.2" + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + }, + "object-assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", + "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=", + "dev": true + } + } + }, + "socket.io-adapter": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz", + "integrity": "sha1-y21LuL7IHhB4uZZ3+c7QBGBmu4s=", + "dev": true, + "requires": { + "debug": "2.3.3", + "socket.io-parser": "2.3.1" + }, + "dependencies": { + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true, + "requires": { + "ms": "0.7.2" + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + } + } + }, + "socket.io-client": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.3.tgz", + "integrity": "sha1-sw6GqhDV7zVGYBwJzeR2Xjgdo3c=", + "dev": true, + "requires": { + "backo2": "1.0.2", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "2.3.3", + "engine.io-client": "1.8.3", + "has-binary": "0.1.7", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseuri": "0.0.5", + "socket.io-parser": "2.3.1", + "to-array": "0.1.4" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true, + "requires": { + "ms": "0.7.2" + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + } + } + }, + "socket.io-parser": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz", + "integrity": "sha1-3VMgJRA85Clpcya+/WQAX8/ltKA=", + "dev": true, + "requires": { + "component-emitter": "1.1.2", + "debug": "2.2.0", + "isarray": "0.0.1", + "json3": "3.3.2" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + } + } + }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "dev": true, + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.0.1" + } + }, + "sockjs-client": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.5.tgz", + "integrity": "sha1-G7fA9yIsQPQq3xT0RCy9Eml3GoM=", + "dev": true, + "requires": { + "debug": "^2.6.6", + "eventsource": "0.1.6", + "faye-websocket": "~0.11.0", + "inherits": "^2.0.1", + "json3": "^3.3.2", + "url-parse": "^1.1.8" + }, + "dependencies": { + "faye-websocket": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", + "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + } + } + }, + "source-list-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-explorer": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/source-map-explorer/-/source-map-explorer-1.6.0.tgz", + "integrity": "sha512-Om4L02wExk1tWZ2KJqW7A/gadFoU6/6vuPUOiYyeMCtkQqhexTod6Pi6aCQ6HiIEd7ZSbiOOPgIrG6bn/72foQ==", + "dev": true, + "requires": { + "btoa": "^1.1.2", + "convert-source-map": "^1.1.1", + "docopt": "^0.6.2", + "glob": "^7.1.2", + "opn": "^5.3.0", + "source-map": "^0.5.1", + "temp": "^0.8.3", + "underscore": "^1.8.3" + } + }, + "source-map-loader": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-0.2.4.tgz", + "integrity": "sha512-OU6UJUty+i2JDpTItnizPrlpOIBLmQbWMuBg9q5bVtnHACqw1tn9nNwqJLbv0/00JjnJb/Ee5g5WS5vrRv7zIQ==", + "dev": true, + "requires": { + "async": "^2.5.0", + "loader-utils": "^1.1.0" + }, + "dependencies": { + "async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "dev": true, + "requires": { + "lodash": "^4.17.10" + } + }, + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true + } + } + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz", + "integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spdx-correct": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", + "dev": true + }, + "spdy": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", + "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", + "dev": true, + "requires": { + "debug": "^2.6.8", + "handle-thing": "^1.2.5", + "http-deceiver": "^1.2.7", + "safe-buffer": "^5.0.1", + "select-hose": "^2.0.0", + "spdy-transport": "^2.0.18" + } + }, + "spdy-transport": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.1.0.tgz", + "integrity": "sha512-bpUeGpZcmZ692rrTiqf9/2EUakI6/kXX1Rpe0ib/DyOzbiexVfXkw6GnvI9hVGvIwVaUhkaBojjCZwLNRGQg1g==", + "dev": true, + "requires": { + "debug": "^2.6.8", + "detect-node": "^2.0.3", + "hpack.js": "^2.1.6", + "obuf": "^1.1.1", + "readable-stream": "^2.2.9", + "safe-buffer": "^5.0.1", + "wbuf": "^1.7.2" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", + "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", + "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.1" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "stats-webpack-plugin": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/stats-webpack-plugin/-/stats-webpack-plugin-0.6.2.tgz", + "integrity": "sha1-LFlJtTHgf4eojm6k3PrFOqjHWis=", + "dev": true, + "requires": { + "lodash": "^4.17.4" + } + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "dev": true + }, + "stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "dev": true, + "optional": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "style-loader": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.21.0.tgz", + "integrity": "sha512-T+UNsAcl3Yg+BsPKs1vd22Fr8sVT+CJMtzqc6LEw9bbJZb43lm9GoeIfUcDEefBSWC0BhYbcdupV1GtI4DGzxg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^0.4.5" + } + }, + "stylus": { + "version": "0.54.5", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", + "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", + "dev": true, + "requires": { + "css-parse": "1.7.x", + "debug": "*", + "glob": "7.0.x", + "mkdirp": "0.5.x", + "sax": "0.5.x", + "source-map": "0.1.x" + }, + "dependencies": { + "glob": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", + "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "stylus-loader": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.2.tgz", + "integrity": "sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "lodash.clonedeep": "^4.5.0", + "when": "~3.6.x" + } + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true + }, + "tapable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.0.0.tgz", + "integrity": "sha512-dQRhbNQkRnaqauC7WqSJ21EEksgT0fYZX2lqXzGkpo8JNig9zGZTYoMGvyI2nWmXlE2VSVXVDu7wLVGu/mQEsg==", + "dev": true + }, + "tar": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "dev": true, + "optional": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" + } + }, + "temp": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", + "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=", + "dev": true, + "requires": { + "os-tmpdir": "^1.0.0", + "rimraf": "~2.2.6" + }, + "dependencies": { + "rimraf": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", + "dev": true + } + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" + } + }, + "thunky": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.2.tgz", + "integrity": "sha1-qGLgGOP7HqLsP85dVWBc9X8kc3E=", + "dev": true + }, + "timers-browserify": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", + "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "tmp": { + "version": "0.0.31", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", + "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.1" + } + }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + } + } + }, + "toposort": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", + "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", + "dev": true + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "tree-kill": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.0.tgz", + "integrity": "sha512-DlX6dR0lOIRDFxI0mjL9IYg6OTncLm/Zt+JiBhE5OlFcAR8yc9S7FFXU9so0oda47frdM/JFsk7UjNt9vscKcg==", + "dev": true + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "true-case-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", + "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.2" + } + }, + "ts-node": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-5.0.1.tgz", + "integrity": "sha512-XK7QmDcNHVmZkVtkiwNDWiERRHPyU8nBqZB1+iv2UhOG0q3RQ9HsZ2CMqISlFbxjrYFGfG2mX7bW4dAyxBVzUw==", + "dev": true, + "requires": { + "arrify": "^1.0.0", + "chalk": "^2.3.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.3", + "yn": "^2.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "tsickle": { + "version": "0.32.1", + "resolved": "https://registry.npmjs.org/tsickle/-/tsickle-0.32.1.tgz", + "integrity": "sha512-JW9j+W0SaMSZGejIFZBk0AiPfnhljK3oLx5SaqxrJhjlvzFyPml5zqG1/PuScUj6yTe1muEqwk5CnDK0cOZmKw==", + "dev": true, + "requires": { + "jasmine-diff": "^0.1.3", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map": "^0.6.0", + "source-map-support": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + }, + "tslint": { + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.9.1.tgz", + "integrity": "sha1-ElX4ej/1frCw4fDmEKi0dIBGya4=", + "dev": true, + "requires": { + "babel-code-frame": "^6.22.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^3.2.0", + "glob": "^7.1.1", + "js-yaml": "^3.7.0", + "minimatch": "^3.0.4", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.12.1" + }, + "dependencies": { + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "tsutils": { + "version": "2.27.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.27.1.tgz", + "integrity": "sha512-AE/7uzp32MmaHvNNFES85hhUDHFdFZp6OAiZcd6y4ZKKIg6orJTm8keYWBhIhrJQH3a4LzNKat7ZPXZt5aTf6w==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-is": { + "version": "1.6.15", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", + "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.15" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typescript": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.7.2.tgz", + "integrity": "sha512-p5TCYZDAO0m4G344hD+wx/LATebLWZNkkh2asWUFqSsD2OrDNhbAHuSjobrmsUmdzjJjEeZVU9g1h3O6vpstnw==", + "dev": true + }, + "uglify-js": { + "version": "3.4.8", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.8.tgz", + "integrity": "sha512-WatYTD84gP/867bELqI2F/2xC9PQBETn/L+7RGq9MQOA/7yFBNvY1UwXqvtILeE6n0ITwBXxp34M0/o70dzj6A==", + "dev": true, + "requires": { + "commander": "~2.17.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "uglifyjs-webpack-plugin": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz", + "integrity": "sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw==", + "dev": true, + "requires": { + "cacache": "^10.0.4", + "find-cache-dir": "^1.0.0", + "schema-utils": "^0.4.5", + "serialize-javascript": "^1.4.0", + "source-map": "^0.6.1", + "uglify-es": "^3.3.4", + "webpack-sources": "^1.1.0", + "worker-farm": "^1.5.2" + }, + "dependencies": { + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "dev": true, + "requires": { + "commander": "~2.13.0", + "source-map": "~0.6.1" + } + } + } + }, + "ultron": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", + "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=", + "dev": true + }, + "underscore": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz", + "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==", + "dev": true + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } + } + }, + "unique-filename": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", + "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz", + "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", + "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", + "dev": true + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "uri-js": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-3.0.2.tgz", + "integrity": "sha1-+QuFhQf4HepNz7s8TD2/orVX+qo=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-join": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz", + "integrity": "sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo=", + "dev": true + }, + "url-loader": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.1.1.tgz", + "integrity": "sha512-vugEeXjyYFBCUOpX+ZuaunbK3QXMKaQ3zUnRfIpRBlGkY7QizCnzyyn2ASfcxsvyU3ef+CJppVywnl3Kgf13Gg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "mime": "^2.0.3", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "mime": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", + "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "url-parse": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.3.tgz", + "integrity": "sha512-rh+KuAW36YKo0vClhQzLLveoj8FwPJNu65xLb7Mrt+eZht0IPT0IXgSv8gcMegZ6NvjJUALf6Mf25POlMwD1Fw==", + "dev": true, + "requires": { + "querystringify": "^2.0.0", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "useragent": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.2.1.tgz", + "integrity": "sha1-z1k+9PLRdYdei7ZY6pLhik/QbY4=", + "dev": true, + "requires": { + "lru-cache": "2.2.x", + "tmp": "0.0.x" + }, + "dependencies": { + "lru-cache": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz", + "integrity": "sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0=", + "dev": true + } + } + }, + "util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "dev": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vis": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/vis/-/vis-4.21.0.tgz", + "integrity": "sha1-3XFji/9/ZJXQC8n0DCU1JhM97Ws=", + "requires": { + "emitter-component": "^1.1.1", + "hammerjs": "^2.0.8", + "keycharm": "^0.2.0", + "moment": "^2.18.1", + "propagating-hammerjs": "^1.4.6" + } + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true, + "requires": { + "indexof": "0.0.1" + } + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true + }, + "watchpack": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", + "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "dev": true, + "requires": { + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "chokidar": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", + "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.2.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "lodash.debounce": "^4.0.8", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.5" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fsevents": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", + "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.21", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": "^2.1.0" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "minipass": { + "version": "2.2.4", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true, + "dev": true + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "nan": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.0.tgz", + "integrity": "sha512-F4miItu2rGnV2ySkXOQoA8FKz/SR2Q2sWP0sbTxNxz/tuokeC8WxOhPMcwi0qIyGtVn/rrSeLbvVkznqCdwYnw==", + "dev": true, + "optional": true + } + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "webassemblyjs": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webassemblyjs/-/webassemblyjs-1.4.3.tgz", + "integrity": "sha512-4lOV1Lv6olz0PJkDGQEp82HempAn147e6BXijWDzz9g7/2nSebVP9GVg62Fz5ZAs55mxq13GA0XLyvY8XkyDjg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3", + "@webassemblyjs/validation": "1.4.3", + "@webassemblyjs/wasm-parser": "1.4.3", + "@webassemblyjs/wast-parser": "1.4.3", + "long": "^3.2.0" + } + }, + "webdriver-js-extender": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-2.0.0.tgz", + "integrity": "sha512-fbyKiVu3azzIc5d4+26YfuPQcFTlgFQV5yQ/0OQj4Ybkl4g1YQuIPskf5v5wqwRJhHJnPHthB6tqCjWHOKLWag==", + "dev": true, + "requires": { + "@types/selenium-webdriver": "^3.0.0", + "selenium-webdriver": "^3.0.1" + } + }, + "webpack": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.9.2.tgz", + "integrity": "sha512-jlWrCrJDU3sdWFprel6jHH8esN2C++Q8ehedRo74u7MWLTUJn9SD7RSgsCTEZCSRpVpMascDylAqPoldauOMfA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3", + "@webassemblyjs/wasm-edit": "1.4.3", + "@webassemblyjs/wasm-parser": "1.4.3", + "acorn": "^5.0.0", + "acorn-dynamic-import": "^3.0.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "chrome-trace-event": "^0.1.1", + "enhanced-resolve": "^4.0.0", + "eslint-scope": "^3.7.1", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "micromatch": "^3.1.8", + "mkdirp": "~0.5.0", + "neo-async": "^2.5.0", + "node-libs-browser": "^2.0.0", + "schema-utils": "^0.4.4", + "tapable": "^1.0.0", + "uglifyjs-webpack-plugin": "^1.2.4", + "watchpack": "^1.5.0", + "webpack-sources": "^1.0.1" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + } + } + }, + "webpack-core": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz", + "integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=", + "dev": true, + "requires": { + "source-list-map": "~0.1.7", + "source-map": "~0.4.1" + }, + "dependencies": { + "source-list-map": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", + "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=", + "dev": true + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "webpack-dev-middleware": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.2.0.tgz", + "integrity": "sha512-YJLMF/96TpKXaEQwaLEo+Z4NDK8aV133ROF6xp9pe3gQoS7sxfpXh4Rv9eC+8vCvWfmDjRQaMSlRPbO+9G6jgA==", + "dev": true, + "requires": { + "loud-rejection": "^1.6.0", + "memory-fs": "~0.4.1", + "mime": "^2.3.1", + "path-is-absolute": "^1.0.0", + "range-parser": "^1.0.3", + "url-join": "^4.0.0", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "mime": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", + "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==", + "dev": true + } + } + }, + "webpack-dev-server": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.6.tgz", + "integrity": "sha512-uc6YP0DzzW4870TDKoK73uONytLgu27h+x6XfgSvERRChkpd5Ils7US6d5k22LBoh0sDkmPZ6ERHSsrkwtkFFQ==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.0.0", + "compression": "^1.5.2", + "connect-history-api-fallback": "^1.3.0", + "debug": "^3.1.0", + "del": "^3.0.0", + "express": "^4.16.2", + "html-entities": "^1.2.0", + "http-proxy-middleware": "~0.18.0", + "import-local": "^1.0.0", + "internal-ip": "1.2.0", + "ip": "^1.1.5", + "killable": "^1.0.0", + "loglevel": "^1.4.1", + "opn": "^5.1.0", + "portfinder": "^1.0.9", + "selfsigned": "^1.9.1", + "serve-index": "^1.7.2", + "sockjs": "0.3.19", + "sockjs-client": "1.1.5", + "spdy": "^3.4.1", + "strip-ansi": "^3.0.0", + "supports-color": "^5.1.0", + "webpack-dev-middleware": "3.2.0", + "webpack-log": "^2.0.0", + "yargs": "12.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "chokidar": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", + "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.2.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "lodash.debounce": "^4.0.8", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.5" + } + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", + "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", + "dev": true, + "requires": { + "xregexp": "4.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "fsevents": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", + "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.21", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": "^2.1.0" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "minipass": { + "version": "2.2.4", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true, + "dev": true + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "nan": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.0.tgz", + "integrity": "sha512-F4miItu2rGnV2ySkXOQoA8FKz/SR2Q2sWP0sbTxNxz/tuokeC8WxOhPMcwi0qIyGtVn/rrSeLbvVkznqCdwYnw==", + "dev": true, + "optional": true + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "p-limit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", + "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "yargs": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.1.tgz", + "integrity": "sha512-B0vRAp1hRX4jgIOWFtjfNjd9OA9RWYZ6tqGA9/I/IrTMsxmKvtWy+ersM+jzpQqbC3YfLzeABPdeTgcJ9eu1qQ==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^2.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^10.1.0" + } + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "webpack-merge": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.4.tgz", + "integrity": "sha512-TmSe1HZKeOPey3oy1Ov2iS3guIZjWvMT2BBJDzzT5jScHTjVC3mpjJofgueEzaEd6ibhxRDD6MIblDr8tzh8iQ==", + "dev": true, + "requires": { + "lodash": "^4.17.5" + }, + "dependencies": { + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true + } + } + }, + "webpack-sources": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", + "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "webpack-subresource-integrity": { + "version": "1.1.0-rc.4", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.1.0-rc.4.tgz", + "integrity": "sha1-xcTj1pD50vZKlVDgeodn+Xlqpdg=", + "dev": true, + "requires": { + "webpack-core": "^0.6.8" + } + }, + "websocket-driver": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", + "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "dev": true, + "requires": { + "http-parser-js": ">=0.4.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "dev": true + }, + "when": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz", + "integrity": "sha1-RztRfsFZ4rhQBUl6E5g/CVQS404=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true, + "optional": true + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true + }, + "worker-farm": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", + "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "ws": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.2.tgz", + "integrity": "sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8=", + "dev": true, + "requires": { + "options": ">=0.0.5", + "ultron": "1.0.x" + } + }, + "wtf-8": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz", + "integrity": "sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=", + "dev": true + }, + "xml2js": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", + "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "dev": true, + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~9.0.1" + }, + "dependencies": { + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + } + } + }, + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", + "dev": true + }, + "xmlhttprequest-ssl": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz", + "integrity": "sha1-GFqIjATspGw+QHDZn3tJ3jUomS0=", + "dev": true + }, + "xregexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", + "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "xxhashjs": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz", + "integrity": "sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==", + "dev": true, + "requires": { + "cuint": "^0.2.2" + } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "^3.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true, + "optional": true + } + } + }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", + "dev": true + }, + "yn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=", + "dev": true + }, + "zone.js": { + "version": "0.8.26", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.26.tgz", + "integrity": "sha512-W9Nj+UmBJG251wkCacIkETgra4QgBo/vgoEkb4a2uoLzpQG7qF9nzwoLXWU5xj3Fg2mxGvEDh47mg24vXccYjA==" + } + } +} diff --git a/web/src/main/webapp/v2/package.json b/web/src/main/webapp/v2/package.json new file mode 100644 index 000000000000..33202ebdd5c0 --- /dev/null +++ b/web/src/main/webapp/v2/package.json @@ -0,0 +1,81 @@ +{ + "name": "pinpoint", + "version": "2.0.0", + "license": "MIT", + "scripts": { + "ng": "ng", + "start": "ng serve pinpoint --proxy-config proxy.conf.json", + "start:real": "ng serve pinpoint --proxy-config proxy.conf.json --prod", + "build": "ng build pinpoint --base-href /v2/", + "build:real": "ng build pinpoint --prod --base-href /v2/", + "build:watch": "ng build pinpoint --base-href /v2/ --watch", + "test": "ng test pinpoint", + "lint": "ng lint pinpoint --type-check", + "e2e": "ng e2e pinpoint", + "precommit": "npm run lint" + }, + "private": true, + "dependencies": { + "@angular/animations": "^6.1.0", + "@angular/cdk": "^6.4.6", + "@angular/common": "^6.1.0", + "@angular/compiler": "^6.1.0", + "@angular/core": "^6.1.0", + "@angular/forms": "^6.1.0", + "@angular/http": "^6.1.0", + "@angular/material": "^6.4.6", + "@angular/platform-browser": "^6.1.0", + "@angular/platform-browser-dynamic": "^6.1.0", + "@angular/router": "^6.1.0", + "@ngrx/store": "^6.1.0", + "@ngui/datetime-picker": "^0.16.2", + "@ngx-translate/core": "^10.0.2", + "@ngx-translate/http-loader": "3.0.1", + "ag-grid": "^18.1.2", + "ag-grid-angular": "^18.1.0", + "angular-2-local-storage": "^2.0.0", + "bowser": "^1.9.3", + "chart.js": "git+https://github.com/chartjs/Chart.js.git#48fefd92b6dc61345021c6508b23698830ff392f", + "chartjs-plugin-streaming": "^1.6.0", + "core-js": "^2.5.4", + "gojs": "^1.8.28", + "hammerjs": "^2.0.8", + "moment": "^2.22.2", + "moment-timezone": "^0.5.21", + "ng-click-outside": "^4.0.0", + "ng2-nouislider": "^1.7.11", + "ngx-clipboard": "^11.1.3", + "ngx-highlightjs": "^2.1.1", + "ngx-infinite-scroll": "^6.0.1", + "nouislider": "^11.1.0", + "rxjs": "^6.2.1", + "snapsvg-cjs": "0.0.6", + "vis": "^4.21.0", + "zone.js": "^0.8.26" + }, + "devDependencies": { + "@angular-devkit/build-angular": "~0.7.0", + "@angular/cli": "~6.1.5", + "@angular/compiler-cli": "^6.1.0", + "@angular/language-service": "^6.1.0", + "@types/chart.js": "^2.7.22", + "@types/jasmine": "~2.8.6", + "@types/jasminewd2": "~2.0.3", + "@types/node": "~8.9.4", + "@types/vis": "^4.21.5", + "codelyzer": "~4.2.1", + "husky": "^1.0.0-rc.9", + "jasmine-core": "~2.99.1", + "jasmine-spec-reporter": "~4.2.1", + "karma": "~1.7.1", + "karma-chrome-launcher": "~2.2.0", + "karma-coverage-istanbul-reporter": "~2.0.0", + "karma-jasmine": "~1.1.1", + "karma-jasmine-html-reporter": "^0.2.2", + "protractor": "~5.4.0", + "source-map-explorer": "^1.6.0", + "ts-node": "~5.0.1", + "tslint": "~5.9.1", + "typescript": "^2.7.2" + } +} diff --git a/web/src/main/webapp/v2/protractor.conf.js b/web/src/main/webapp/v2/protractor.conf.js new file mode 100644 index 000000000000..586384fd73a2 --- /dev/null +++ b/web/src/main/webapp/v2/protractor.conf.js @@ -0,0 +1,31 @@ +// Protractor configuration file, see link for more information +// https://github.com/angular/protractor/blob/master/lib/config.ts + +/*global jasmine */ +const { SpecReporter } = require('jasmine-spec-reporter'); + +exports.config = { + allScriptsTimeout: 11000, + specs: [ + './e2e/**/*.e2e-spec.ts' + ], + capabilities: { + 'browserName': 'chrome' + }, + directConnect: true, + baseUrl: 'http://localhost:4200/', + framework: 'jasmine', + jasmineNodeOpts: { + showColors: true, + defaultTimeoutInterval: 30000, + print: function() {} + }, + beforeLaunch: function() { + require('ts-node').register({ + project: 'e2e/tsconfig.e2e.json' + }); + }, + onPrepare: function() { + jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); + } +}; diff --git a/web/src/main/webapp/v2/proxy.conf.json b/web/src/main/webapp/v2/proxy.conf.json new file mode 100644 index 000000000000..eb4b558c17be --- /dev/null +++ b/web/src/main/webapp/v2/proxy.conf.json @@ -0,0 +1,191 @@ +{ + "/agent/activeThread.pinpointws": { + "target": "http://localhost:8080", + "secure": false, + "ws": true + }, + "/configuration.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/serverTime.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/userConfiguration.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/applications.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/getServerMapData.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/getServerMapDataV2.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/getResponseTimeHistogramDataV2.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/getLinkTimeHistogramData.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/getFilteredServerMapDataMadeOfDotGroup.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/getAgentList.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/getAgentStat/jvmGc/chart.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/getAgentStat/cpuLoad/chart.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/getAgentStat/transaction/chart.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/getAgentStat/activeTrace/chart.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/getAgentStat/responseTime/chart.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/getAgentStat/dataSource/chartList.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/getApplicationStat/memory/chart.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/getApplicationStat/cpuLoad/chart.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/getApplicationStat/transaction/chart.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/getApplicationStat/activeTrace/chart.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/getApplicationStat/responseTime/chart.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/getApplicationStat/dataSource/chart.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/getAgentStatusTimeline.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/getAgentEvents.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/getAgentInfo.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/transactionmetadata.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/transactionInfo.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/sqlBind.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/jsonBind.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/getScatterData.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/agent/activeThreadLightDump.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/agent/activeThreadDump.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/getAgentInstallationInfo.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/isAvailableApplicationName.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/isAvailableAgentId.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/userGroup.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/user.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/userGroup/member.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/application/alarmRule/checker.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/application/alarmRule.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/getAgentStat/fileDescriptor/chart.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/getApplicationStat/fileDescriptor/chart.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/getAgentStat/directBuffer/chart.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/getApplicationStat/directBuffer/chart.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/admin/removeAgentId.pinpoint": { + "target": "http://localhost:8080", + "secure": false + }, + "/admin/removeInactiveAgents.pinpoint": { + "target": "http://localhost:8080", + "secure": false + } +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/app.component.css b/web/src/main/webapp/v2/src/app/app.component.css new file mode 100644 index 000000000000..7f26ddcb5503 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/app.component.css @@ -0,0 +1,3 @@ +:host { + display: block; +} diff --git a/web/src/main/webapp/v2/src/app/app.component.html b/web/src/main/webapp/v2/src/app/app.component.html new file mode 100644 index 000000000000..0680b43f9c6a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/app.component.html @@ -0,0 +1 @@ + diff --git a/web/src/main/webapp/v2/src/app/app.component.ts b/web/src/main/webapp/v2/src/app/app.component.ts new file mode 100644 index 000000000000..cbca738af0ea --- /dev/null +++ b/web/src/main/webapp/v2/src/app/app.component.ts @@ -0,0 +1,29 @@ +import { Component, OnInit } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import { WindowRefService } from 'app/shared/services'; + +@Component({ + selector: 'pp-root', + templateUrl: './app.component.html', + styleUrls: ['./app.component.css'] +}) +export class AppComponent implements OnInit { + constructor( + private windowRefService: WindowRefService, + private translateService: TranslateService + ) { + const supportLanguages = ['en', 'ko']; + const defaultLang = 'en'; + const currentLang = this.windowRefService.nativeWindow.navigator.language.substring(0, 2); + this.translateService.addLangs(supportLanguages); + this.translateService.setDefaultLang(defaultLang); + if (supportLanguages.find((lang: string) => { + return lang === currentLang; + })) { + this.translateService.use(currentLang); + } else { + this.translateService.use(defaultLang); + } + } + ngOnInit() {} +} diff --git a/web/src/main/webapp/v2/src/app/app.module.ts b/web/src/main/webapp/v2/src/app/app.module.ts new file mode 100644 index 000000000000..acb91e64a3d2 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/app.module.ts @@ -0,0 +1,115 @@ +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { NgModule } from '@angular/core'; +import { HttpClientModule } from '@angular/common/http'; +import { RouterModule, Routes } from '@angular/router'; +import { StoreModule } from '@ngrx/store'; +import { LocalStorageModule } from 'angular-2-local-storage'; +import { HttpClient } from '@angular/common/http'; +import { APP_BASE_HREF } from '@angular/common'; +import { COMPOSITION_BUFFER_MODE } from '@angular/forms'; + +import { TranslateModule, TranslateLoader } from '@ngx-translate/core'; +import { TranslateHttpLoader } from '@ngx-translate/http-loader'; + +import { httpInterceptorProviders } from './core/httpInterceptor'; + +import { AppComponent } from './app.component'; +import { PageNotFoundComponent } from './shared/components/page-not-found'; + +import { reducers } from './shared/store'; +import { UrlPath } from './shared/models'; +import { SERVER_MAP_TYPE, ServerMapType } from 'app/core/components/server-map/class/server-map-factory'; +import { WindowRefService } from './shared/services/window-ref.service'; + +export function HttpLoaderFactory(http: HttpClient) { + return new TranslateHttpLoader(http, 'assets/i18n/', '.json'); +} + +export const appRoutes: Routes = [ + { + path: UrlPath.ADMIN, + loadChildren: './routes/admin-page/index#AdminPageModule' + }, + { + path: UrlPath.BROWSER_NOT_SUPPORT, + loadChildren: './routes/browser-support-page/index#BrowserSupportPageModule' + }, + { + path: UrlPath.SCATTER_FULL_SCREEN_MODE, + loadChildren: './routes/scatter-full-screen-mode-page/index#ScatterFullScreenModePageModule' + }, + { + path: UrlPath.THREAD_DUMP, + loadChildren: './routes/thread-dump-page/index#ThreadDumpPageModule' + }, + { + path: UrlPath.REAL_TIME, + loadChildren: './routes/real-time-page/index#RealTimePageModule' + }, + { + path: UrlPath.TRANSACTION_VIEW, + loadChildren: './routes/transaction-view-page/index#TransactionViewPageModule' + }, + { + path: UrlPath.TRANSACTION_DETAIL, + loadChildren: './routes/transaction-detail-page/index#TransactionDetailPageModule' + }, + { + path: UrlPath.TRANSACTION_LIST, + loadChildren: './routes/transaction-list-page/index#TransactionListPageModule' + }, + { + path: UrlPath.INSPECTOR, + loadChildren: './routes/inspector-page/index#InspectorPageModule' + }, + { + path: UrlPath.FILTERED_MAP, + loadChildren: './routes/filtered-map-page/index#FilteredMapPageModule' + }, + { + path: UrlPath.MAIN, + loadChildren: './routes/main-page/index#MainPageModule' + }, + { + path: '', + redirectTo: '/' + UrlPath.MAIN, + pathMatch: 'full' + }, + { + path: '**', + component: PageNotFoundComponent + } +]; + +@NgModule({ + declarations: [ + AppComponent, + PageNotFoundComponent, + ], + imports: [ + BrowserAnimationsModule, + HttpClientModule, + StoreModule.forRoot(reducers, {}), + LocalStorageModule.withConfig({ + prefix: 'pp', + storageType: 'localStorage' + }), + TranslateModule.forRoot({ + loader: { + provide: TranslateLoader, + useFactory: HttpLoaderFactory, + deps: [HttpClient] + } + }), + RouterModule.forRoot(appRoutes, { enableTracing: false }) + ], + providers: [ + WindowRefService, + httpInterceptorProviders, + { provide: APP_BASE_HREF, useValue: window.document.querySelector('base').getAttribute('href') }, + { provide: COMPOSITION_BUFFER_MODE, useValue: false }, + { provide: SERVER_MAP_TYPE, useValue: ServerMapType.GOJS } + ], + bootstrap: [AppComponent] +}) +export class AppModule {} diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-admin-chart/agent-admin-chart-container.component.css b/web/src/main/webapp/v2/src/app/core/components/agent-admin-chart/agent-admin-chart-container.component.css new file mode 100644 index 000000000000..cfac521bb995 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-admin-chart/agent-admin-chart-container.component.css @@ -0,0 +1,6 @@ +.l-wrapper { + display: grid; + grid-template-columns: 45% 10% 45%; + grid-template-rows: 100%; + padding: 16px; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-admin-chart/agent-admin-chart-container.component.html b/web/src/main/webapp/v2/src/app/core/components/agent-admin-chart/agent-admin-chart-container.component.html new file mode 100644 index 000000000000..9ff265df159d --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-admin-chart/agent-admin-chart-container.component.html @@ -0,0 +1,18 @@ +
+
+ +
+
+
+ +
+ +
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-admin-chart/agent-admin-chart-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/agent-admin-chart/agent-admin-chart-container.component.ts new file mode 100644 index 000000000000..b117e75afa45 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-admin-chart/agent-admin-chart-container.component.ts @@ -0,0 +1,56 @@ +import { Component, OnInit } from '@angular/core'; +import { Subject } from 'rxjs'; +import { StoreHelperService } from 'app/shared/services'; + +@Component({ + selector: 'pp-agent-admin-chart-container', + templateUrl: './agent-admin-chart-container.component.html', + styleUrls: ['./agent-admin-chart-container.component.css'] +}) +export class AgentAdminChartContainerComponent implements OnInit { + private unsubscribe: Subject = new Subject(); + showLoading = true; + agentCount = 0; + chartData: { + jvmVersion: { + [key: string]: number + }, + agentVersion: { + [key: string]: number + } + } = { + jvmVersion: {}, + agentVersion: {} + }; + constructor( + private storeHelperService: StoreHelperService + ) {} + ngOnInit() { + this.storeHelperService.getAgentList(this.unsubscribe).subscribe((agentList: IAgentList) => { + this.extractChartData(agentList); + this.showLoading = false; + }); + } + private extractChartData(agentList: IAgentList): void { + this.chartData = { + jvmVersion: {}, + agentVersion: {} + }; + let count = 0; + Object.keys(agentList).forEach((key: string) => { + const agents = agentList[key]; + agents.forEach((agent: IAgent) => { + count++; + if (agent.agentVersion) { + this.chartData.agentVersion[agent.agentVersion] = (this.chartData.agentVersion[agent.agentVersion] || 0) + 1; + } + if (agent.jvmInfo && agent.jvmInfo.jvmVersion) { + this.chartData.jvmVersion[agent.jvmInfo.jvmVersion] = (this.chartData.jvmVersion[agent.jvmInfo.jvmVersion] || 0) + 1; + } else { + this.chartData.jvmVersion['UNKNOWN'] = (this.chartData.jvmVersion['UNKNOWN'] || 0) + 1; + } + }); + }); + this.agentCount = count; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-admin-chart/agent-admin-chart.component.css b/web/src/main/webapp/v2/src/app/core/components/agent-admin-chart/agent-admin-chart.component.css new file mode 100644 index 000000000000..15beff3fe184 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-admin-chart/agent-admin-chart.component.css @@ -0,0 +1,6 @@ +:host { + width: 100%; + height: 420px; + display: block; + position: relative; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-admin-chart/agent-admin-chart.component.html b/web/src/main/webapp/v2/src/app/core/components/agent-admin-chart/agent-admin-chart.component.html new file mode 100644 index 000000000000..fad1fabe4c1e --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-admin-chart/agent-admin-chart.component.html @@ -0,0 +1 @@ + diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-admin-chart/agent-admin-chart.component.ts b/web/src/main/webapp/v2/src/app/core/components/agent-admin-chart/agent-admin-chart.component.ts new file mode 100644 index 000000000000..9ddd3555865a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-admin-chart/agent-admin-chart.component.ts @@ -0,0 +1,105 @@ +import { Component, OnInit, OnDestroy, Input, ViewChild, ElementRef } from '@angular/core'; +import { Chart } from 'chart.js'; + +@Component({ + selector: 'pp-agent-admin-chart', + templateUrl: './agent-admin-chart.component.html', + styleUrls: ['./agent-admin-chart.component.css'] +}) +export class AgentAdminChartComponent implements OnInit, OnDestroy { + @ViewChild('agentChart') el: ElementRef; + _chartData: any; + chartObj: Chart; + @Input() type: string; + @Input() title: string; + @Input() barColor: string; + @Input() + set chartData(value: any) { + if (value && value.jvmVersion && value.agentVersion) { + this._chartData = value; + this.initChartObj(); + } + } + constructor() {} + ngOnInit() {} + ngOnDestroy() {} + private initChartObj() { + this.chartObj = new Chart(this.el.nativeElement.getContext('2d'), { + type: 'horizontalBar', + data: this.makeDataOption(), + options: this.makeNormalOption() + }); + } + private makeDataOption(): any { + const labels: string[] = []; + const values: number[] = []; + const dataSet = this._chartData[this.type]; + Object.keys(dataSet).sort().forEach((key: string) => { + labels.push(key); + values.push(dataSet[key]); + }); + const dataOption = { + labels: labels, + borderWidth: 0, + datasets: [] + }; + dataOption.datasets.push({ + label: this.title, + data: values, + backgroundColor: this.barColor, + borderWidth: 0 + }); + return dataOption; + } + private makeNormalOption(): any { + return { + maintainAspectRatio: false, + tooltips: { + enabled: false + }, + scales: { + yAxes: [{ + gridLines: { + display: false + }, + ticks: { + fontFamily: 'monospace' + } + }], + xAxes: [{ + ticks: { + fontFamily: 'monospace' + } + }] + }, + animation: { + duration: 0, + onComplete: (chartElement: any) => { + const ctx = chartElement.chart.ctx; + ctx.fillStyle = chartElement.chart.config.options.defaultFontColor; + ctx.fontSize = 9; + ctx.textAlign = 'left'; + ctx.textBaseline = 'top'; + chartElement.chart.data.datasets.forEach((dataset: any) => { + for (let i = 0 ; i < dataset.data.length ; i++) { + const model = dataset._meta[Object.keys(dataset._meta)[0]].data[i]._model; + ctx.fillText(dataset.data[i], model.x, model.y - 5); + } + }); + } + }, + hover: { + animationDuration: 0 + }, + legend: { + display: true, + labels: { + boxWidth: 30, + padding: 10, + fontFamily: 'monospace' + }, + position: 'bottom' + } + }; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-admin-chart/index.ts b/web/src/main/webapp/v2/src/app/core/components/agent-admin-chart/index.ts new file mode 100644 index 000000000000..3d3e5088a246 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-admin-chart/index.ts @@ -0,0 +1,20 @@ + +import { NgModule } from '@angular/core'; +import { SharedModule } from 'app/shared'; +import { AgentAdminChartContainerComponent } from './agent-admin-chart-container.component'; +import { AgentAdminChartComponent } from './agent-admin-chart.component'; + +@NgModule({ + declarations: [ + AgentAdminChartComponent, + AgentAdminChartContainerComponent + ], + imports: [ + SharedModule + ], + exports: [ + AgentAdminChartContainerComponent + ], + providers: [] +}) +export class AgentAdminChartModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-event-view/agent-event-view-container.component.css b/web/src/main/webapp/v2/src/app/core/components/agent-event-view/agent-event-view-container.component.css new file mode 100644 index 000000000000..b16de9367293 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-event-view/agent-event-view-container.component.css @@ -0,0 +1,4 @@ +:host { + display: block; + border-bottom: 1px solid #E5E8F0; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-event-view/agent-event-view-container.component.html b/web/src/main/webapp/v2/src/app/core/components/agent-event-view/agent-event-view-container.component.html new file mode 100644 index 000000000000..972c73a41877 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-event-view/agent-event-view-container.component.html @@ -0,0 +1,6 @@ + diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-event-view/agent-event-view-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/agent-event-view/agent-event-view-container.component.ts new file mode 100644 index 000000000000..5f1c7be33a38 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-event-view/agent-event-view-container.component.ts @@ -0,0 +1,53 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { Observable, Subject } from 'rxjs'; +import { takeUntil, switchMap } from 'rxjs/operators'; + +import { StoreHelperService } from 'app/shared/services'; +import { ITimelineEventSegment } from 'app/core/components/timeline/class/timeline-data.class'; +import { TimelineInteractionService } from 'app/core/components/timeline/timeline-interaction.service'; +import { AgentEventsDataService, IEventStatus } from './agent-events-data.service'; + +@Component({ + selector: 'pp-agent-event-view-container', + templateUrl: './agent-event-view-container.component.html', + styleUrls: ['./agent-event-view-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class AgentEventViewContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + viewComponent = false; + eventData: IEventStatus[]; + timezone$: Observable; + dateFormat$: Observable; + constructor( + private changeDetectorRef: ChangeDetectorRef, + private storeHelperService: StoreHelperService, + private timelineInteractionService: TimelineInteractionService, + private agentEventsDataService: AgentEventsDataService + ) {} + ngOnInit() { + this.connectStore(); + } + private connectStore(): void { + this.timezone$ = this.storeHelperService.getTimezone(this.unsubscribe); + this.dateFormat$ = this.storeHelperService.getDateFormat(this.unsubscribe, 1); + this.timelineInteractionService.onSelectEventStatus$.pipe( + takeUntil(this.unsubscribe), + switchMap((eventSegment: ITimelineEventSegment) => { + return this.agentEventsDataService.getData(eventSegment.startTimestamp, eventSegment.endTimestamp); + }) + ).subscribe((response: IEventStatus[]) => { + this.eventData = response; + this.viewComponent = true; + this.changeDetectorRef.detectChanges(); + }); + } + onClose(): void { + this.viewComponent = false; + this.changeDetectorRef.detectChanges(); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-event-view/agent-event-view.component.css b/web/src/main/webapp/v2/src/app/core/components/agent-event-view/agent-event-view.component.css new file mode 100644 index 000000000000..78361b6a4345 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-event-view/agent-event-view.component.css @@ -0,0 +1,25 @@ +.l-title-group { + height:34px; + font-size:13px; + font-weight:600; + padding:0 20px; + color:#333; + display: flex; + align-items: center; + justify-content:space-between; + background-color: #9DD4BB; +} +.l-title-group button { + color: #000; + float: right; + font-size: 14px; +} +thead th { + text-align: left; +} +td div { + width: 100%; + min-height: 40px; + max-height: 200px; + overflow-y: auto; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-event-view/agent-event-view.component.html b/web/src/main/webapp/v2/src/app/core/components/agent-event-view/agent-event-view.component.html new file mode 100644 index 000000000000..b6565dfceb3d --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-event-view/agent-event-view.component.html @@ -0,0 +1,23 @@ +
Event - {{eventData?.length}}
+
+ + + + + + + + + + + + + + + + + + + +
Events
TimeDescriptionMessage
{{formatDate(eventStatus.eventTimestamp)}}{{eventStatus.eventTypeDesc}}
{{eventStatus!.eventMessage}}
+
diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-event-view/agent-event-view.component.ts b/web/src/main/webapp/v2/src/app/core/components/agent-event-view/agent-event-view.component.ts new file mode 100644 index 000000000000..b218831d8926 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-event-view/agent-event-view.component.ts @@ -0,0 +1,23 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; +import * as moment from 'moment-timezone'; +import { IEventStatus } from './agent-events-data.service'; + +@Component({ + selector: 'pp-agent-event-view', + templateUrl: './agent-event-view.component.html', + styleUrls: ['./agent-event-view.component.css'] +}) +export class AgentEventViewComponent implements OnInit { + @Input() eventData: IEventStatus[]; + @Input() timezone: string; + @Input() dateFormat: string; + @Output() outClose: EventEmitter = new EventEmitter(); + constructor() {} + ngOnInit() {} + onClickClose(): void { + this.outClose.next(); + } + formatDate(time: number): string { + return moment(time).tz(this.timezone).format(this.dateFormat) ; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-event-view/agent-events-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/agent-event-view/agent-events-data.service.ts new file mode 100644 index 000000000000..7b23930a9f29 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-event-view/agent-events-data.service.ts @@ -0,0 +1,39 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { UrlPathId } from 'app/shared/models'; +import { NewUrlStateNotificationService } from 'app/shared/services'; + +export interface IEventStatus { + agentId: string; + eventMessage?: string; + eventTimestamp: number; + eventTypeCode: number; + eventTypeDesc: string; + hasEventMessage: boolean; + startTimestamp: number; +} + +@Injectable() +export class AgentEventsDataService { + requestURL = 'getAgentEvents.pinpoint'; + constructor( + private http: HttpClient, + private newUrlStateNotificationService: NewUrlStateNotificationService + ) { } + getData(from: number, to: number): Observable { + return this.http.get(this.requestURL, this.makeRequestOptionsArgs(from, to)); + } + private makeRequestOptionsArgs(from: number, to: number): object { + return { + params: { + agentId: this.newUrlStateNotificationService.getPathValue(UrlPathId.AGENT_ID), + from: from, + to: to, + exclude: 10199 + // DESC: + // [exclude] 요청에 대한 응답에서 제외하고 싶은 eventCode를 넣어줌. + } + }; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-event-view/index.ts b/web/src/main/webapp/v2/src/app/core/components/agent-event-view/index.ts new file mode 100644 index 000000000000..191d8e6d6871 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-event-view/index.ts @@ -0,0 +1,23 @@ + +import { NgModule } from '@angular/core'; +import { SharedModule } from 'app/shared'; +import { AgentEventViewContainerComponent } from './agent-event-view-container.component'; +import { AgentEventViewComponent } from './agent-event-view.component'; +import { AgentEventsDataService } from './agent-events-data.service'; + +@NgModule({ + declarations: [ + AgentEventViewComponent, + AgentEventViewContainerComponent + ], + imports: [ + SharedModule + ], + exports: [ + AgentEventViewContainerComponent + ], + providers: [ + AgentEventsDataService + ] +}) +export class AgentEventViewModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-info/agent-info-container.component.css b/web/src/main/webapp/v2/src/app/core/components/agent-info/agent-info-container.component.css new file mode 100644 index 000000000000..3c6c93c9e463 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-info/agent-info-container.component.css @@ -0,0 +1,21 @@ +:host { + width: calc(100% - 20px); + display: block; + margin: 20px 10px; + border: 1px solid #000; + position: relative; +} + +.l-title-group { + height: 34px; + font-size: 13px; + font-weight: 600; + padding: 0 20px; + color: #333; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + align-items: center; + justify-content: space-between; + background: #f6f8fb; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-info/agent-info-container.component.html b/web/src/main/webapp/v2/src/app/core/components/agent-info/agent-info-container.component.html new file mode 100644 index 000000000000..8ce5d77a0c38 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-info/agent-info-container.component.html @@ -0,0 +1,11 @@ +
Information
+ + + + + diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-info/agent-info-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/agent-info/agent-info-container.component.ts new file mode 100644 index 000000000000..e6b28f903d00 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-info/agent-info-container.component.ts @@ -0,0 +1,91 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { Observable, Subject, combineLatest } from 'rxjs'; +import { takeUntil, filter, tap, map, switchMap } from 'rxjs/operators'; + +import { UrlPathId } from 'app/shared/models'; +import { + StoreHelperService, + NewUrlStateNotificationService, + DynamicPopupService +} from 'app/shared/services'; +import { ApplicationNameIssuePopupContainerComponent } from 'app/core/components/application-name-issue-popup/application-name-issue-popup-container.component'; +import { AgentInfoDataService } from './agent-info-data.service'; + +@Component({ + selector: 'pp-agent-info-container', + templateUrl: './agent-info-container.component.html', + styleUrls: ['./agent-info-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class AgentInfoContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + private selectedTime$: Observable; + private urlAgentId$: Observable; + urlApplicationName$: Observable; + agentData$: Observable; + timezone$: Observable; + dateFormat$: Observable; + showLoading = true; + + constructor( + private changeDetectorRef: ChangeDetectorRef, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private storeHelperService: StoreHelperService, + private agentInfoDataService: AgentInfoDataService, + private dynamicPopupService: DynamicPopupService, + ) {} + + ngOnInit() { + this.urlAgentId$ = this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe), + map((urlService: NewUrlStateNotificationService) => { + return urlService.getPathValue(UrlPathId.AGENT_ID); + }) + ); + this.urlApplicationName$ = this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe), + map((urlService: NewUrlStateNotificationService) => { + return urlService.getPathValue(UrlPathId.APPLICATION).getApplicationName(); + }) + ); + this.connectStore(); + } + + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + + private connectStore(): void { + this.timezone$ = this.storeHelperService.getTimezone(this.unsubscribe); + this.dateFormat$ = this.storeHelperService.getDateFormat(this.unsubscribe, 1); + this.selectedTime$ = this.storeHelperService.getInspectorTimelineSelectedTime(this.unsubscribe); + this.agentData$ = combineLatest( + this.urlAgentId$, + this.selectedTime$ + ).pipe( + tap(() => { + this.showLoading = true; + this.changeDetectorRef.detectChanges(); + }), + switchMap((data: [string, number]) => { + return this.agentInfoDataService.getData(data[0], data[1]); + }), + filter((agentData: IServerAndAgentData) => { + return !!(agentData && agentData.applicationName); + }), + tap(() => { + this.showLoading = false; + this.changeDetectorRef.detectChanges(); + }) + ); + } + + onClickApplicationNameIssue({data, coord}: {data: {[key: string]: string}, coord: ICoordinate}): void { + this.dynamicPopupService.openPopup({ + data, + coord, + component: ApplicationNameIssuePopupContainerComponent + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-info/agent-info-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/agent-info/agent-info-data.service.ts new file mode 100644 index 000000000000..1973dda2f919 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-info/agent-info-data.service.ts @@ -0,0 +1,22 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable } from 'rxjs'; + +@Injectable() +export class AgentInfoDataService { + private requestURL = 'getAgentInfo.pinpoint'; + constructor( + private http: HttpClient + ) {} + getData(agentId: string, timestamp: number): Observable { + return this.http.get(this.requestURL, this.makeRequestOptionsArgs(agentId, timestamp)); + } + private makeRequestOptionsArgs(agentId: string, timestamp: number): object { + return { + params: { + agentId, + timestamp + } + }; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-info/agent-info.component.css b/web/src/main/webapp/v2/src/app/core/components/agent-info/agent-info.component.css new file mode 100644 index 000000000000..7cf5879c9b4d --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-info/agent-info.component.css @@ -0,0 +1,96 @@ +:host { + display: block; +} +.l-info-table { + border: none; +} +.l-info-table tbody th, .l-info-table td { + border-top:1px solid #e5e8f0; +} +.l-info-table tr:nth-child(2n) { + background-color: #FAFAFC; +} +.l-argument-list { + width: 100%; + height: 150px; + overflow: auto; +} +.l-server-info-service-list { + float: left; + width: 40%; + max-height: 140px; + overflow: auto; +} +.l-server-info-lib-list { + float: left; + width: 60%; + height: 150px; + overflow: auto; +} +.l-server-info-list { + border: 1px solid #e7e8ec; + position: relative; + margin-right: 10px; +} +.l-server-info-list li { + height: 30px; + font-size: 12px; + color:#999; + display: flex; + justify-content: space-between; + align-items: center; + padding: 0 10px; + cursor: pointer; + border-top: 1px solid #e7e8ec; +} +.l-server-info-list li:first-child { + border-top-color: transparent; +} +.l-server-info-list li.active { + color:#fff; + background-color:#4a8fd2; +} +.l-server-info-list li ul { + position: absolute; + right: -250px; + top: 0; + color:#999; +} +.l-server-info-list li ul li { + height: auto; + border-top: none; +} +.l-category { + display: inline-block; + padding: 2px 5px; + font-size: 10px; + color: #fff; + font-weight: 600; + cursor: pointer; +} +.l-category.green { + background:#23c6c8; +} +.l-category.blue { + background:#5597d5; +} +.l-sub-table { + display: table-cell; + padding:16px 19px;background:#fff +} +.l-sub-table .table th, .l-sub-table .table td { + padding:14px 10px; +} +.l-sub-table .table td + td { + border-left:1px solid #e5e8f0; +} +.l-sub-table .table tr { + background:#fff; +} +.l-not-same { + color: #f27d70; +} +.l-not-same-button { + float: right; + font-size: 14px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-info/agent-info.component.html b/web/src/main/webapp/v2/src/app/core/components/agent-info/agent-info.component.html new file mode 100644 index 000000000000..eacb43826d37 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-info/agent-info.component.html @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Information
Application Name{{agentData.applicationName}} Agent Version{{agentData.agentVersion}}
Agent Id{{agentData.agentId}}PID{{agentData.pid}}
Hostname{{agentData.hostName}}JVM (GC Type){{agentData.jvmInfo?.jvmVersion}} ({{agentData.jvmInfo?.gcTypeName}})
IP{{agentData.ip}}Start Time{{formatDate(agentData.startTimestamp)}}
Service Type{{agentData.serviceType}} ({{agentData.serverMetaData?.serverInfo}}) Detail End Status{{agentData.status?.state?.desc}} (last checked : {{formatDate(agentData.status?.eventTimestamp)}})
+ + + + + + + + + + + + + + + + + + + + +
Server Info{{isServiceInfoEmpty() ? "" : agentData.serverMetaData.serverInfo}}
JVM Arguments +
+
{{vm}}
+
+
Services + +
+
    +
  • {{service.serviceName}} +
  • +
+
+
+
    +
  • {{lib}}
  • +
+
+
+
+
diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-info/agent-info.component.ts b/web/src/main/webapp/v2/src/app/core/components/agent-info/agent-info.component.ts new file mode 100644 index 000000000000..6d6d0a5b1f0c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-info/agent-info.component.ts @@ -0,0 +1,70 @@ +import { Component, OnInit, Input, OnChanges, SimpleChanges, Output, EventEmitter } from '@angular/core'; +import * as moment from 'moment-timezone'; + +import { AnalyticsService, TRACKED_EVENT_LIST } from 'app/shared/services'; + +@Component({ + selector: 'pp-agent-info', + templateUrl: './agent-info.component.html', + styleUrls: ['./agent-info.component.css'] +}) +export class AgentInfoComponent implements OnInit, OnChanges { + @Input() urlApplicationName: string; + @Input() agentData: IServerAndAgentData; + @Input() timezone: string; + @Input() dateFormat: string; + @Output() outClickApplicationNameIssue = new EventEmitter<{[key: string]: any}>(); + + isHideDetailInfo = true; + selectedServiceIndex = 0; + + constructor( + private analyticsService: AnalyticsService, + ) {} + ngOnInit() {} + ngOnChanges(changes: SimpleChanges) { + Object.keys(changes) + .filter((propName: string) => { + return changes[propName].currentValue; + }) + .forEach((propName: string) => { + switch (propName) { + case 'agentData': + this.isHideDetailInfo = true; + this.selectedServiceIndex = 0; + break; + } + }); + } + toggleDetailInfo(): boolean { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.TOGGLE_SERVER_TYPE_DETAIL); + return this.isHideDetailInfo = !this.isHideDetailInfo; + } + onSelectService(index: number): void { + this.selectedServiceIndex = index; + } + getSelectedServiceLib(): string[] { + return this.agentData.serverMetaData.serviceInfos[this.selectedServiceIndex].serviceLibs; + } + isServiceInfoEmpty(): boolean { + return !this.agentData.serverMetaData || this.agentData.serverMetaData.serviceInfos.length === 0; + } + isSameApplication(): boolean { + return this.agentData.applicationName === this.urlApplicationName; + } + formatDate(time: number): string { + return moment(time).tz(this.timezone).format(this.dateFormat) ; + } + onClickNotSameBtn($event: MouseEvent): void { + const {left, top, width, height} = ($event.currentTarget as HTMLElement).getBoundingClientRect(); + const { agentId, applicationName } = this.agentData; + + this.outClickApplicationNameIssue.emit({ + data: { agentId, applicationName }, + coord: { + coordX: left + width / 2, + coordY: top + height / 2 + } + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-info/index.ts b/web/src/main/webapp/v2/src/app/core/components/agent-info/index.ts new file mode 100644 index 000000000000..c77c662faf27 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-info/index.ts @@ -0,0 +1,26 @@ + +import { NgModule } from '@angular/core'; + +import { SharedModule } from 'app/shared'; +import { AgentInfoContainerComponent } from './agent-info-container.component'; +import { AgentInfoComponent } from './agent-info.component'; +import { AgentInfoDataService } from './agent-info-data.service'; +import { ApplicationNameIssuePopupModule } from 'app/core/components/application-name-issue-popup'; + +@NgModule({ + declarations: [ + AgentInfoComponent, + AgentInfoContainerComponent + ], + imports: [ + SharedModule, + ApplicationNameIssuePopupModule + ], + exports: [ + AgentInfoContainerComponent + ], + providers: [ + AgentInfoDataService + ] +}) +export class AgentInfoModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-inspector-contents/agent-inspector-contents-container.component.css b/web/src/main/webapp/v2/src/app/core/components/agent-inspector-contents/agent-inspector-contents-container.component.css new file mode 100644 index 000000000000..011f388f9d5d --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-inspector-contents/agent-inspector-contents-container.component.css @@ -0,0 +1,23 @@ +:host { + display: flex; + flex-flow: column nowrap; +} +.l-date-range { + border-bottom: 1px solid #e5e8f0; + background-color: #FFF; + min-height: 161px; + max-height: 1000px +} +.l-main-contents { + height: 100%; + position: relative; + overflow: auto; +} +.l-chart-group-wrap { + display: flex; + flex-flow: row wrap; +} +.l-empty-content { + width: calc(50% - 20px); + margin: 10px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-inspector-contents/agent-inspector-contents-container.component.html b/web/src/main/webapp/v2/src/app/core/components/agent-inspector-contents/agent-inspector-contents-container.component.html new file mode 100644 index 000000000000..147350153586 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-inspector-contents/agent-inspector-contents-container.component.html @@ -0,0 +1,24 @@ +
+ + +
+ +
+ +
+ + + +
+ + + + + +
+ + + + +
+
diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-inspector-contents/agent-inspector-contents-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/agent-inspector-contents/agent-inspector-contents-container.component.ts new file mode 100644 index 000000000000..788bf1116c0b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-inspector-contents/agent-inspector-contents-container.component.ts @@ -0,0 +1,11 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'pp-agent-inspector-contents-container', + templateUrl: './agent-inspector-contents-container.component.html', + styleUrls: ['./agent-inspector-contents-container.component.css'] +}) +export class AgentInspectorContentsContainerComponent implements OnInit { + constructor() {} + ngOnInit() {} +} diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-inspector-contents/index.ts b/web/src/main/webapp/v2/src/app/core/components/agent-inspector-contents/index.ts new file mode 100644 index 000000000000..3938939af7ba --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-inspector-contents/index.ts @@ -0,0 +1,28 @@ + +import { NgModule } from '@angular/core'; +import { SharedModule } from 'app/shared'; +import { AgentInspectorContentsContainerComponent } from './agent-inspector-contents-container.component'; +import { TimelineCommandGroupModule } from 'app/core/components/timeline-command-group'; +import { AgentEventViewModule } from 'app/core/components/agent-event-view'; +import { AgentInfoModule } from 'app/core/components/agent-info'; +import { TimelineModule } from 'app/core/components/timeline'; +import { InspectorChartModule } from 'app/core/components/inspector-chart'; + +@NgModule({ + declarations: [ + AgentInspectorContentsContainerComponent + ], + imports: [ + SharedModule, + TimelineCommandGroupModule, + AgentEventViewModule, + AgentInfoModule, + TimelineModule, + InspectorChartModule + ], + exports: [ + AgentInspectorContentsContainerComponent + ], + providers: [] +}) +export class AgentInspectorContentsModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-list/agent-list-container.component.css b/web/src/main/webapp/v2/src/app/core/components/agent-list/agent-list-container.component.css new file mode 100644 index 000000000000..40d41d0eaddb --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-list/agent-list-container.component.css @@ -0,0 +1,4 @@ +:host { + width: 100%; + height: 600px; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-list/agent-list-container.component.html b/web/src/main/webapp/v2/src/app/core/components/agent-list/agent-list-container.component.html new file mode 100644 index 000000000000..1b9c9682ffb1 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-list/agent-list-container.component.html @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-list/agent-list-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/agent-list/agent-list-container.component.ts new file mode 100644 index 000000000000..b9c17b5cda76 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-list/agent-list-container.component.ts @@ -0,0 +1,92 @@ +import { Component, OnInit, OnDestroy } from '@angular/core'; +import { Subject } from 'rxjs'; + +import { UrlPath } from 'app/shared/models'; +import { StoreHelperService, UrlRouteManagerService } from 'app/shared/services'; + +interface IGridData { + index: number; + application: string; + serviceType: string; + agent: string; + agentVersion: string; + jvmVersion: string; + folder?: boolean; + open?: boolean; + children?: IGridData[]; +} + +@Component({ + selector: 'pp-agent-list-container', + templateUrl: './agent-list-container.component.html', + styleUrls: ['./agent-list-container.component.css'] +}) +export class AgentListContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + agentCount = 0; + agentListData: any; + constructor( + private storeHelperService: StoreHelperService, + private urlRouteManagerService: UrlRouteManagerService + ) {} + ngOnInit() { + this.connectStore(); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private connectStore(): void { + this.storeHelperService.getAgentList(this.unsubscribe).subscribe((agentList: IAgentList) => { + this.makeGridData(agentList); + }); + } + private makeGridData(agentList: IAgentList): void { + let index = 1; + const resultData: IGridData[] = []; + Object.keys(agentList).forEach((key: string, innerIndex: number) => { + const list: IAgent[] = agentList[key]; + let row: IGridData; + + if (list.length === 0) { + row = this.makeRow(list[0], index, false, false); + index++; + } else { + list.forEach((agent: IAgent, agentIndex: number) => { + if (agentIndex === 0) { + row = this.makeRow(agent, index, true, false); + } else { + row.children.push(this.makeRow(agent, index, false, true)); + } + index++; + }); + } + resultData.push(row); + }); + this.agentCount = index - 1; + this.agentListData = resultData; + } + private makeRow(agent: IAgent, index: number, hasChild: boolean, isChild: boolean): any { + const oRow: IGridData = { + index: index, + application: isChild ? '' : agent.applicationName, + serviceType: agent.serviceType, + agent: agent.agentId, + agentVersion: agent.agentVersion, + jvmVersion: agent.jvmInfo ? agent.jvmInfo.jvmVersion : '' + }; + if (hasChild) { + oRow.folder = true; + oRow.open = true; + oRow.children = []; + } + + return oRow; + } + onCellClick(params: any): void { + this.urlRouteManagerService.openPage([ + UrlPath.MAIN, + params.application + '@' + params.serviceType + ]); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-list/agent-list.component.css b/web/src/main/webapp/v2/src/app/core/components/agent-list/agent-list.component.css new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-list/agent-list.component.html b/web/src/main/webapp/v2/src/app/core/components/agent-list/agent-list.component.html new file mode 100644 index 000000000000..a7504ac4ebc9 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-list/agent-list.component.html @@ -0,0 +1,8 @@ + + diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-list/agent-list.component.ts b/web/src/main/webapp/v2/src/app/core/components/agent-list/agent-list.component.ts new file mode 100644 index 000000000000..31666d77fea6 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-list/agent-list.component.ts @@ -0,0 +1,102 @@ +import { Component, OnInit, OnDestroy, Input, Output, EventEmitter, ViewEncapsulation } from '@angular/core'; +import { GridOptions } from 'ag-grid'; + +@Component({ + selector: 'pp-agent-list', + templateUrl: './agent-list.component.html', + styleUrls: ['./agent-list.component.css'], + encapsulation: ViewEncapsulation.None +}) +export class AgentListComponent implements OnInit, OnDestroy { + @Input() gridData: any; + @Input() agentCount: number; + @Output() outCellClick: EventEmitter = new EventEmitter(); + gridOptions: GridOptions; + constructor() {} + ngOnInit() { + this.initGridOptions(); + } + ngOnDestroy() {} + private initGridOptions() { + this.gridOptions = { + columnDefs : this.makeColumnDefs(), + headerHeight: 34, + enableFilter: true, + floatingFilter: true, + enableColResize: true, + enableSorting: false, + animateRows: true, + rowHeight: 30, + getNodeChildDetails: (file) => { + if (file && file.folder) { + return { + group: true, + children: file.children, + expanded: file.open + }; + } else { + return null; + } + }, + suppressRowClickSelection: true, + rowSelection: 'multiple' + }; + } + private makeColumnDefs(): any { + return [ + { + headerName: '#', + field: 'index', + width: 60, + suppressFilter: true + }, + { + headerName: `Application`, + field: 'application', + width: 550, + cellRenderer: 'group', + cellRendererParams: { + innerRenderer: (params: any) => { + return ' ' + params.data.application; + }, + suppressCount: true + }, + cellStyle: { + color: 'rgb(54, 162, 235)', + 'font-weight': 600 + }, + filter: 'agTextColumnFilter', + tooltipField: 'application' + }, + { + headerName: `Agent`, + field: 'agent', + width: 300, + filter: 'agTextColumnFilter', + tooltipField: 'agent' + }, + { + headerName: 'Agent Version', + field: 'agentVersion', + width: 150, + filter: 'agTextColumnFilter', + tooltipField: 'agentVersion' + }, + { + headerName: 'JVM Version', + field: 'jvmVersion', + width: 150, + filter: 'agTextColumnFilter', + tooltipField: 'jvmVersion' + }, + ]; + } + onCellClick(params: any): void { + if (params.colDef.field === 'application') { + this.outCellClick.next({ + application: params.data.application, + serviceType: params.data.serviceType + }); + } + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-list/index.ts b/web/src/main/webapp/v2/src/app/core/components/agent-list/index.ts new file mode 100644 index 000000000000..564c5ccc2857 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-list/index.ts @@ -0,0 +1,22 @@ + +import { NgModule } from '@angular/core'; +import { AgGridModule } from 'ag-grid-angular/main'; +import { SharedModule } from 'app/shared'; +import { AgentListContainerComponent } from './agent-list-container.component'; +import { AgentListComponent } from './agent-list.component'; + +@NgModule({ + declarations: [ + AgentListComponent, + AgentListContainerComponent + ], + imports: [ + SharedModule, + AgGridModule.withComponents([]) + ], + exports: [ + AgentListContainerComponent + ], + providers: [] +}) +export class AgentListModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-management-contents/agent-management-contents-container.component.css b/web/src/main/webapp/v2/src/app/core/components/agent-management-contents/agent-management-contents-container.component.css new file mode 100644 index 000000000000..ea9482f2089a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-management-contents/agent-management-contents-container.component.css @@ -0,0 +1,3 @@ +:host { + overflow: auto; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-management-contents/agent-management-contents-container.component.html b/web/src/main/webapp/v2/src/app/core/components/agent-management-contents/agent-management-contents-container.component.html new file mode 100644 index 000000000000..c43cc51b42b8 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-management-contents/agent-management-contents-container.component.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-management-contents/agent-management-contents-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/agent-management-contents/agent-management-contents-container.component.ts new file mode 100644 index 000000000000..c9f85eeecbf0 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-management-contents/agent-management-contents-container.component.ts @@ -0,0 +1,29 @@ +import { Component, OnInit } from '@angular/core'; +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + +import { StoreHelperService } from 'app/shared/services'; +import { Actions } from 'app/shared/store'; +import { ApplicationListDataService } from 'app/core/components/application-list/application-list-data.service'; + +@Component({ + selector: 'pp-agent-management-contents-container', + templateUrl: './agent-management-contents-container.component.html', + styleUrls: ['./agent-management-contents-container.component.css'] +}) +export class AgentManagementContentsContainerComponent implements OnInit { + private unsubscribe: Subject = new Subject(); + constructor( + private storeHelperService: StoreHelperService, + private applicationListDataService: ApplicationListDataService + ) { + + } + ngOnInit() { + this.applicationListDataService.getApplicationList().pipe( + takeUntil(this.unsubscribe) + ).subscribe((applicationList: IApplication[]) => { + this.storeHelperService.dispatch(new Actions.UpdateApplicationList(applicationList)); + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-management-contents/index.ts b/web/src/main/webapp/v2/src/app/core/components/agent-management-contents/index.ts new file mode 100644 index 000000000000..58257d099646 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-management-contents/index.ts @@ -0,0 +1,22 @@ + +import { NgModule } from '@angular/core'; +import { SharedModule } from 'app/shared'; +import { AgentManagerModule } from 'app/core/components/agent-manager'; +import { ApplicationListModule } from 'app/core/components/application-list'; +import { AgentManagementContentsContainerComponent } from './agent-management-contents-container.component'; + +@NgModule({ + declarations: [ + AgentManagementContentsContainerComponent + ], + imports: [ + SharedModule, + ApplicationListModule, + AgentManagerModule + ], + exports: [ + AgentManagementContentsContainerComponent + ], + providers: [] +}) +export class AgentManagementContentsModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-manager/agent-manager-container.component.css b/web/src/main/webapp/v2/src/app/core/components/agent-manager/agent-manager-container.component.css new file mode 100644 index 000000000000..5c42dc4188f4 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-manager/agent-manager-container.component.css @@ -0,0 +1,30 @@ +.l-header { + padding: 10px; + margin-left: 14px; + margin-right: 20px; +} +.l-inactive-remover { + float: right; +} +.l-inactive-remover button { + margin-left: 10px; +} +.l-inactive-remover button[disabled] { + background-color: #AAA; +} +.l-header input { + width: 300px; + color: #b3b3b4; + border: 1px solid #469ae4; + padding: 6px 11px; + font-size: 13px; +} +.l-wrapper { + width: 100%; + display: grid; + padding: 10px; + font-family: sans-serif; + background-color: #FFF; + grid-template-rows: auto; + grid-template-columns: 33% 33% 33%; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-manager/agent-manager-container.component.html b/web/src/main/webapp/v2/src/app/core/components/agent-manager/agent-manager-container.component.html new file mode 100644 index 000000000000..88f7525e423f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-manager/agent-manager-container.component.html @@ -0,0 +1,21 @@ + +
+ + + +
+ + \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-manager/agent-manager-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/agent-manager/agent-manager-container.component.ts new file mode 100644 index 000000000000..7c80cc44e51c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-manager/agent-manager-container.component.ts @@ -0,0 +1,86 @@ +import { Component, OnInit, OnDestroy } from '@angular/core'; +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + +import { ApplicationListDataService } from 'app/core/components/application-list/application-list-data.service'; +import { AgentManagerDataService } from './agent-manager-data.service'; + +@Component({ + selector: 'pp-agent-manager-container', + templateUrl: './agent-manager-container.component.html', + styleUrls: ['./agent-manager-container.component.css'] +}) +export class AgentManagerContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + applicationFilter = ''; + showLoading = false; + applicationList: IApplication[]; + agentList: { + [key: string]: any; + } = {}; + canRemoveInactiveAgent = false; + constructor( + private applicationListDataService: ApplicationListDataService, + private agentManagerDataService: AgentManagerDataService + ) {} + ngOnInit() { + this.applicationListDataService.getApplicationList().pipe( + takeUntil(this.unsubscribe) + ).subscribe((applicationList: IApplication[]) => { + this.applicationList = applicationList; + }); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + getAgentList(application: IApplication): string[] { + return this.agentList[application.applicationName]; + } + onLoadAgentList(applicationName: string): void { + this.agentManagerDataService.getAgentList(applicationName).subscribe((agentList: any) => { + const agentInfoList: any[] = []; + Object.keys(agentList).forEach((key: string) => { + agentList[key].forEach((agent: IAgent) => { + agentInfoList.push({ + applicationName: agent.applicationName, + agentId: agent.agentId + }); + }); + }); + this.agentList[applicationName] = agentInfoList; + }); + } + onRemoveAgent([applicationName, agentId]: [string, string]): void { + this.agentManagerDataService.removeAgentId(applicationName, agentId).subscribe((result: string) => { + if (result === 'OK') { + const appInfo = this.agentList[applicationName]; + const index = appInfo.findIndex((app: any) => { + return app.agentId === agentId; + }); + appInfo.splice(index, 1); + } + }); + } + onRemoveInactiveAgents(): void { + if (this.canRemoveInactiveAgent === false) { + return; + } + this.showLoading = true; + } + hasFilterStr(appName: string): boolean { + const filter = this.applicationFilter.trim(); + if (filter === '') { + return true; + } + if (appName.indexOf(filter) === -1) { + return false; + } else { + return true; + } + } + onChangeCanRemoveInactiveAgent($event: any): void { + this.canRemoveInactiveAgent = $event.checked; + console.log( this.canRemoveInactiveAgent ); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-manager/agent-manager-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/agent-manager/agent-manager-data.service.ts new file mode 100644 index 000000000000..b101a857577e --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-manager/agent-manager-data.service.ts @@ -0,0 +1,52 @@ +import { Injectable } from '@angular/core'; +import { HttpParams } from '@angular/common/http'; +import { HttpClient, HttpErrorResponse } from '@angular/common/http'; +import { Observable, throwError, of } from 'rxjs'; +import { catchError, tap } from 'rxjs/operators'; + + +@Injectable() +export class AgentManagerDataService { + private listUrl = 'getAgentList.pinpoint'; + private removeUrl = 'admin/removeAgentId.pinpoint'; + private removeInactiveUrl = 'admin/removeInactiveAgents.pinpoint'; + + constructor(private http: HttpClient) {} + getAgentList(appName: string): Observable { + return this.http.get(this.listUrl, { + params: new HttpParams().set('application', appName) + }).pipe( + tap((data: any) => { + if (data.errorCode) { + throw data.errorMessage; + } + }), + catchError(this.handleError) + ); + } + removeAgentId(appName: string, agentId: string): Observable { + return this.http.post(this.removeUrl, { + params: new HttpParams().set('applicationName', appName).set('agentId', agentId) + }).pipe( + tap((data: any) => { + if (data.errorCode) { + throw data.errorMessage; + } + }), + catchError(this.handleError) + ); + } + removeInactiveAgents(): Observable { + return this.http.get(this.removeInactiveUrl).pipe( + tap((data: any) => { + if (data.errorCode) { + throw data.errorMessage; + } + }), + catchError(this.handleError) + ); + } + private handleError(error: HttpErrorResponse) { + return throwError(error.statusText || error); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-manager/agent-manager.component.css b/web/src/main/webapp/v2/src/app/core/components/agent-manager/agent-manager.component.css new file mode 100644 index 000000000000..fcc6b610c5ca --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-manager/agent-manager.component.css @@ -0,0 +1,62 @@ +.l-out-wrapper { + background: #FFF; + width: 95%; + position: relative; + z-index: 2; + overflow: hidden; + padding: 4px; + margin: 10px 14px; + box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.23); +} +.l-wrapper { + display: block; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} +.l-wrapper button { + color: #4b99e3; + float: right; + font-size: 18px; +} +.l-wrapper button.l-remove { + color: #b5213c; + height: 20px; + width: 20px; + font-size: 16px; +} +.l-none { + float: right; + height: 18px; +} +.l-agent-list { + color: #000; + background-color: #F1F1F1; + padding: 6px; + height: 120px; + overflow: auto; + min-height: 120px; + max-height: 120px; + margin-top: 12px; +} +.l-agent { + padding: 2px 6px; +} +.l-loading { + height: 120px; + position: relative; + margin-top: 12px; +} +.l-empty { + color: #AAA; + background-color: #DDD; +} +.l-dup { + color: #F00; +} +.l-has { + +} +.l-yet { + +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-manager/agent-manager.component.html b/web/src/main/webapp/v2/src/app/core/components/agent-manager/agent-manager.component.html new file mode 100644 index 000000000000..22a96417ef87 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-manager/agent-manager.component.html @@ -0,0 +1,17 @@ +
+
+ + empty + {{application.applicationName + '@' + application.serviceType}} +
+
+ +
+
+
+ + + {{agent.agentId}} +
+
+
diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-manager/agent-manager.component.ts b/web/src/main/webapp/v2/src/app/core/components/agent-manager/agent-manager.component.ts new file mode 100644 index 000000000000..ee7bed36ec99 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-manager/agent-manager.component.ts @@ -0,0 +1,49 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; + +interface IAgentShortInfo { + applicationName: string; + agentId: string; +} + +@Component({ + selector: 'pp-agent-manager', + templateUrl: './agent-manager.component.html', + styleUrls: ['./agent-manager.component.css'] +}) +export class AgentManagerComponent implements OnInit { + @Input() application: IApplication; + @Input() + set agentList(value: IAgentShortInfo[]) { + this._agentList = value; + this.showLoading = false; + } + @Output() outLoadAgentList: EventEmitter = new EventEmitter(); + @Output() outRemoveAgent: EventEmitter = new EventEmitter(); + _agentList: IAgentShortInfo[]; + showLoading = false; + constructor() {} + ngOnInit() {} + onLoadAgentList(): void { + if (this.showLoading === true) { + return; + } + this.showLoading = true; + this.outLoadAgentList.emit(this.application.applicationName); + } + onRemoveAgent(agentId: string): void { + this.outRemoveAgent.emit([this.application.applicationName, agentId]); + } + getAgentStateClass(): string { + return 'l-' + this.getAgentState(); + } + getAgentState(): string { + if (this._agentList) { + return this._agentList.length > 0 ? 'has' : 'empty'; + } else { + return 'yet'; + } + } + isDup(agent: IAgentShortInfo): boolean { + return this.application.applicationName !== agent.applicationName; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-manager/index.ts b/web/src/main/webapp/v2/src/app/core/components/agent-manager/index.ts new file mode 100644 index 000000000000..c2a21e2555b4 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-manager/index.ts @@ -0,0 +1,26 @@ + +import { NgModule } from '@angular/core'; +import { MatTooltipModule, MatSlideToggleModule } from '@angular/material'; +import { SharedModule } from 'app/shared'; +import { AgentManagerContainerComponent } from './agent-manager-container.component'; +import { AgentManagerComponent } from './agent-manager.component'; +import { AgentManagerDataService } from './agent-manager-data.service'; + +@NgModule({ + declarations: [ + AgentManagerComponent, + AgentManagerContainerComponent + ], + imports: [ + MatSlideToggleModule, + MatTooltipModule, + SharedModule + ], + exports: [ + AgentManagerContainerComponent + ], + providers: [ + AgentManagerDataService + ] +}) +export class AgentManagerModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-search-input/agent-search-input-container.component.css b/web/src/main/webapp/v2/src/app/core/components/agent-search-input/agent-search-input-container.component.css new file mode 100644 index 000000000000..06c6835cc70c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-search-input/agent-search-input-container.component.css @@ -0,0 +1,41 @@ +.l-container-wrapper { + display: flex; + flex-flow: row wrap; + height: 66px; + background: #e0e7ee; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + position: absolute; + width: 100%; + bottom: 0px; + left: 0px; +} +.l-container-wrapper button { + color: #a8acb5; + font-size: 18px; +} +.l-wrapper { + background: #fff; + height: 32px; + width: 183px; + color: #b3b3b4; + position: relative; + margin-right: 10px; +} +.l-wrapper input { + width: 100%; + height: 100%; + border: 1px solid #d7dde4; + padding: 0 10px 0 10px; +} +.l-wrapper button { + position: absolute; + top: 50%; + right: 10px; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-search-input/agent-search-input-container.component.html b/web/src/main/webapp/v2/src/app/core/components/agent-search-input/agent-search-input-container.component.html new file mode 100644 index 000000000000..3dce246abff5 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-search-input/agent-search-input-container.component.html @@ -0,0 +1,11 @@ +
+
+ + +
+ +
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-search-input/agent-search-input-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/agent-search-input/agent-search-input-container.component.ts new file mode 100644 index 000000000000..3aaa4fa127fc --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-search-input/agent-search-input-container.component.ts @@ -0,0 +1,56 @@ +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; +import { combineLatest } from 'rxjs'; +import { TranslateService } from '@ngx-translate/core'; + +import { Actions } from 'app/shared/store'; +import { TranslateReplaceService, AnalyticsService, TRACKED_EVENT_LIST, StoreHelperService, DynamicPopupService } from 'app/shared/services'; +import { HELP_VIEWER_LIST, HelpViewerPopupContainerComponent } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; + +@Component({ + selector: 'pp-agent-search-input-container', + templateUrl: './agent-search-input-container.component.html', + styleUrls: ['./agent-search-input-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class AgentSearchInputContainerComponent implements OnInit { + i18nText: { [key: string]: string } = { + MIN_LENGTH_MSG: '' + }; + searchUseEnter = false; + SEARCH_MIN_LENGTH = 2; + constructor( + private storeHelperService: StoreHelperService, + private translateService: TranslateService, + private translateReplaceService: TranslateReplaceService, + private analyticsService: AnalyticsService, + private dynamicPopupService: DynamicPopupService + ) {} + ngOnInit() { + this.getI18NText(); + } + private getI18NText(): void { + combineLatest( + this.translateService.get('COMMON.MIN_LENGTH') + ).subscribe((i18n: string[]) => { + this.i18nText.MIN_LENGTH_MSG = this.translateReplaceService.replace(i18n[0], this.SEARCH_MIN_LENGTH); + }); + } + onSearchQuery(query: string): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.SEARCH_AGENT); + this.storeHelperService.dispatch(new Actions.UpdateFilterOfServerAndAgentList(query)); + } + + onShowHelp($event: MouseEvent): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.TOGGLE_HELP_VIEWER, HELP_VIEWER_LIST.AGENT_LIST); + const {left, top, width, height} = ($event.target as HTMLElement).getBoundingClientRect(); + + this.dynamicPopupService.openPopup({ + data: HELP_VIEWER_LIST.AGENT_LIST, + coord: { + coordX: left + width / 2, + coordY: top + height / 2 + }, + component: HelpViewerPopupContainerComponent + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-search-input/index.ts b/web/src/main/webapp/v2/src/app/core/components/agent-search-input/index.ts new file mode 100644 index 000000000000..070acf13c07a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-search-input/index.ts @@ -0,0 +1,21 @@ + +import { NgModule } from '@angular/core'; + +import { SharedModule } from 'app/shared'; +import { AgentSearchInputContainerComponent } from './agent-search-input-container.component'; +import { HelpViewerPopupModule } from 'app/core/components/help-viewer-popup'; + +@NgModule({ + declarations: [ + AgentSearchInputContainerComponent + ], + imports: [ + SharedModule, + HelpViewerPopupModule + ], + exports: [ + AgentSearchInputContainerComponent + ], + providers: [] +}) +export class AgentSearchInputModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-stat-contents/agent-list-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/agent-stat-contents/agent-list-data.service.ts new file mode 100644 index 000000000000..c8e64223115b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-stat-contents/agent-list-data.service.ts @@ -0,0 +1,24 @@ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpErrorResponse } from '@angular/common/http'; +import { Observable, throwError } from 'rxjs'; +import { catchError, tap } from 'rxjs/operators'; + +@Injectable() +export class AgentListDataService { + private url = 'getAgentList.pinpoint'; + + constructor(private http: HttpClient) {} + retrieve(): Observable { + return this.http.get(this.url).pipe( + tap((data: any) => { + if (data.errorCode) { + throw data.errorMessage; + } + }), + catchError(this.handleError) + ); + } + private handleError(error: HttpErrorResponse) { + return throwError(error.statusText || error); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-stat-contents/agent-stat-contents-container.component.css b/web/src/main/webapp/v2/src/app/core/components/agent-stat-contents/agent-stat-contents-container.component.css new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-stat-contents/agent-stat-contents-container.component.html b/web/src/main/webapp/v2/src/app/core/components/agent-stat-contents/agent-stat-contents-container.component.html new file mode 100644 index 000000000000..123e342d62d0 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-stat-contents/agent-stat-contents-container.component.html @@ -0,0 +1,2 @@ + + diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-stat-contents/agent-stat-contents-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/agent-stat-contents/agent-stat-contents-container.component.ts new file mode 100644 index 000000000000..804c01e5caa9 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-stat-contents/agent-stat-contents-container.component.ts @@ -0,0 +1,33 @@ +import { Component, OnInit, OnDestroy } from '@angular/core'; +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + +import { StoreHelperService } from 'app/shared/services'; +import { Actions } from 'app/shared/store'; +import { AgentListDataService } from './agent-list-data.service'; + +@Component({ + selector: 'pp-agent-stat-contents-container', + templateUrl: './agent-stat-contents-container.component.html', + styleUrls: ['./agent-stat-contents-container.component.css'] +}) +export class AgentStatContentsContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + + constructor( + private storeHelperService: StoreHelperService, + private agentListDataService: AgentListDataService + ) {} + + ngOnInit() { + this.agentListDataService.retrieve().pipe( + takeUntil(this.unsubscribe) + ).subscribe((agentList: { [key: string]: IAgent[] }) => { + this.storeHelperService.dispatch(new Actions.UpdateAdminAgentList(agentList)); + }); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/agent-stat-contents/index.ts b/web/src/main/webapp/v2/src/app/core/components/agent-stat-contents/index.ts new file mode 100644 index 000000000000..3d8a7805aea6 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/agent-stat-contents/index.ts @@ -0,0 +1,26 @@ + +import { NgModule } from '@angular/core'; +import { SharedModule } from 'app/shared'; +import { AgentStatContentsContainerComponent } from './agent-stat-contents-container.component'; +import { AgentListModule } from 'app/core/components/agent-list'; +import { AgentAdminChartModule } from 'app/core/components/agent-admin-chart'; + +import { AgentListDataService } from './agent-list-data.service'; + +@NgModule({ + declarations: [ + AgentStatContentsContainerComponent + ], + imports: [ + SharedModule, + AgentListModule, + AgentAdminChartModule + ], + exports: [ + AgentStatContentsContainerComponent + ], + providers: [ + AgentListDataService + ] +}) +export class AgentStatContentsModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-create-and-update.component.css b/web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-create-and-update.component.css new file mode 100644 index 000000000000..99e611fac28e --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-create-and-update.component.css @@ -0,0 +1,88 @@ +.l-wrapper { + top: 0px; + left: 0px; + width: 100%; + height: 100%; + z-index: 15; + display: flex; + padding: 0px 20px; + position: absolute; + align-items: center; + flex-direction: column; + justify-content: center; + background-color: rgba(226, 226, 226, 0.8); +} +.l-wrapper h1 { + margin-bottom: 6px; +} +form { + width: 100%; +} +.l-form-grid { + color: #333; + border: 1px solid #e5e8f0; + height: 100%; + display: grid; + position: relative; + font-size: 13px; + font-family: 'Open Sans', sans-serif; + font-weight: 600; + grid-template-columns: 50% 50%; + grid-template-rows: auto; +} +.l-form-grid > div { + position: relative; + margin-bottom: 10px; +} +.l-form-grid > div:nth-child(odd) { + margin-right: 10px; +} +.l-wrapper input { + width: 100%; + border: 1px solid #469ae4; + padding: 6px 11px; + font-size: 13px; + margin-bottom: 2px; + background-color: #FFF; +} +.l-wrapper .l-create { + width: 100%; + margin-top: 6px; +} +.l-wrapper .l-close { + top: 0px; + right: 0px; + position: absolute; +} +.l-wrapper .l-alert { + color: #FFF; + padding: 4px; + margin-bottom: 4px; + background-color: #000; +} +select { + width: 100%; + appearance: none; + -webkit-appearance: none; + border-radius: 0px; + background-color: #FFF; + height: 32px; + padding: 0 9px; + border:1px solid #4488cb; + font-size:13px; + color:#666; +} +textarea { + width: 100%; + height: 120px; + background-color: #FFF; +} +.fa-angle-down { + position: absolute; + top: 26px; + right: 8px; + font-size: 15px; +} +input[disabled] { + border: 1px solid #DDD !important; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-create-and-update.component.html b/web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-create-and-update.component.html new file mode 100644 index 000000000000..84d2711476c1 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-create-and-update.component.html @@ -0,0 +1,56 @@ +
+ +

{{title}}

+
+
+
+
{{i18nLabel.CHECKER_LABEL}}
+ + +
+
+ {{i18nGuide.CHECKER_REQUIRED}} +
+
+
+
+
{{i18nLabel.USER_GROUP_LABEL}}
+ + +
+
+ {{i18nGuide.USER_GROUP_REQUIRED}} +
+
+
+
+
{{i18nLabel.THRESHOLD_LABEL}}
+ +
+
+ Must be greater than 0 +
+
+
+
+
{{i18nLabel.TYPE_LABEL}}
+ + +
+
+
{{i18nLabel.NOTES_LABEL}}
+ + +
+
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-create-and-update.component.ts b/web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-create-and-update.component.ts new file mode 100644 index 000000000000..faa2881d0296 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-create-and-update.component.ts @@ -0,0 +1,118 @@ +import { Component, OnInit, Input, Output, EventEmitter, OnChanges, SimpleChanges } from '@angular/core'; +import { FormControl, FormGroup, Validators } from '@angular/forms'; + +export class Alarm { + public applicationId: string; + public ruleId: string; + public smsSend: boolean; + public emailSend: boolean; + constructor( + public checkerName: string, + public userGroupId: string, + public threshold: number, + public type: string, + public notes?: string + ) { + this.setTypeInternalStatus(); + } + setTypeInternalStatus(): void { + this.smsSend = this.type === 'all' || this.type === 'sms' ? true : false; + this.emailSend = this.type === 'all' || this.type === 'email' ? true : false; + } +} + +@Component({ + selector: 'pp-alarm-rule-create-and-update', + templateUrl: './alarm-rule-create-and-update.component.html', + styleUrls: ['./alarm-rule-create-and-update.component.css'] +}) +export class AlarmRuleCreateAndUpdateComponent implements OnInit, OnChanges { + @Input() showCreate: boolean; + @Input() checkerList: string[]; + @Input() userGroupList: string[]; + @Input() i18nLabel: any; + @Input() i18nGuide: any; + @Input() editAlarm: Alarm = null; + @Output() outUpdateAlarm: EventEmitter = new EventEmitter(); + @Output() outCreateAlarm: EventEmitter = new EventEmitter(); + @Output() outClose: EventEmitter = new EventEmitter(); + newAlarmModel = new Alarm('', '', 1, 'all', ''); + alarmForm: FormGroup; + title = 'Alarm'; + + constructor() {} + ngOnInit() { + this.alarmForm = new FormGroup({ + 'checkerName': new FormControl(this.newAlarmModel.checkerName, [ + Validators.required + ]), + 'userGroupId': new FormControl(this.newAlarmModel.userGroupId, [ + Validators.required + ]), + 'threshold': new FormControl(this.newAlarmModel.threshold, [ + Validators.required, + Validators.min(1) + ]), + 'type': new FormControl(this.newAlarmModel.type, []), + 'notes': new FormControl(this.newAlarmModel.notes, []), + 'applicationId': new FormControl(this.newAlarmModel.applicationId, []), + 'ruleId': new FormControl(this.newAlarmModel.ruleId, []) + }); + } + ngOnChanges(changes: SimpleChanges) { + if (changes['showCreate'] && changes['showCreate'].currentValue === true) { + this.setValue('', '', 1, 'all', ''); + } + if (changes['editAlarm'] && changes['editAlarm'].currentValue) { + this.setValue( + this.editAlarm.checkerName, + this.editAlarm.userGroupId, + this.editAlarm.threshold, + this.editAlarm.type, + this.editAlarm.notes + ); + } + } + private setValue(checkerName: string, userGroupId: string, threshold: number, type: string, notes: string): void { + this.alarmForm.get('checkerName').setValue(checkerName); + this.alarmForm.get('userGroupId').setValue(userGroupId); + this.alarmForm.get('threshold').setValue(threshold); + this.alarmForm.get('type').setValue(type); + this.alarmForm.get('notes').setValue(notes); + } + onCreateOrUpdate() { + const alarm = new Alarm( + this.alarmForm.get('checkerName').value, + this.alarmForm.get('userGroupId').value, + this.alarmForm.get('threshold').value, + this.alarmForm.get('type').value, + this.alarmForm.get('notes').value + ); + if (this.editAlarm) { + this.outUpdateAlarm.emit(alarm); + } else { + this.outCreateAlarm.emit(alarm); + } + this.onClose(); + } + onClose() { + this.editAlarm = null; + this.outClose.emit(); + this.alarmForm.reset(); + } + get checkerName() { + return this.alarmForm.get('checkerName'); + } + get userGroupId() { + return this.alarmForm.get('userGroupId'); + } + get threshold() { + return this.alarmForm.get('threshold'); + } + get type() { + return this.alarmForm.get('type'); + } + get notes() { + return this.alarmForm.get('notes'); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-data.service.ts new file mode 100644 index 000000000000..dec1b234a53f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-data.service.ts @@ -0,0 +1,93 @@ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpErrorResponse } from '@angular/common/http'; +import { Observable, throwError } from 'rxjs'; +import { catchError, tap, shareReplay } from 'rxjs/operators'; + +export interface IAlarmRule { + applicationId: string; + checkerName: string; + emailSend: boolean; + notes: string; + ruleId: string; + serviceType: string; + smsSend: boolean; + threshold: number; + userGroupId: string; +} +export interface IAlarmRuleCreated { + number: string; +} +export interface IAlarmRuleResponse { + result: string; +} + +@Injectable() +export class AlarmRuleDataService { + private alarmRuleURL = 'application/alarmRule.pinpoint'; + private checkerListURL = 'application/alarmRule/checker.pinpoint'; + private cache$: Observable; + + constructor(private http: HttpClient) {} + getCheckerList(): Observable { + if (!this.cache$) { + const httpRequest$ = this.http.get(this.checkerListURL); + this.cache$ = httpRequest$.pipe( + tap((data: any) => { + if (data.errorCode) { + throw data.errorMessage; + } + }), + catchError(this.handleError), + shareReplay(1) + ); + } + return this.cache$; + } + retrieve(applicationId: string): Observable { + return this.http.get(this.alarmRuleURL, this.makeRequestOptionsArgs(applicationId)).pipe( + tap((data: any) => { + if (data.errorCode) { + throw data.errorMessage; + } + }), + catchError(this.handleError) + ); + } + create(params: IAlarmRule): Observable { + return this.http.post(this.alarmRuleURL, params).pipe( + tap(this.checkError), + catchError(this.handleError) + ); + } + update(params: IAlarmRule): Observable { + return this.http.put(this.alarmRuleURL, params).pipe( + tap(this.checkError), + catchError(this.handleError) + ); + } + remove(ruleId: string): Observable { + return this.http.request('delete', this.alarmRuleURL, { + body: { ruleId } + }).pipe( + tap(this.checkError), + catchError(this.handleError) + ); + } + private checkError(data: any) { + if (data.errorCode) { + throw data.errorMessage; + } else if (data.result !== 'SUCCESS') { + throw data; + } + } + private handleError(error: HttpErrorResponse) { + return throwError(error.statusText || error); + } + private makeRequestOptionsArgs(applicationId: string): object { + return applicationId ? { + params: { + applicationId + } + } : {}; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-list-container.component.css b/web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-list-container.component.css new file mode 100644 index 000000000000..b27b7b53c39e --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-list-container.component.css @@ -0,0 +1,80 @@ +:host { + position: relative; +} +.l-wrapper { + position: relative; +} +.l-alarm-rules-table th { + color:#333; + font-size: 13px; +} +.l-alarm-rules-table td { + padding:10px 15px; + height:auto; + font-size: 13px; +} +.l-alarm-rules-table th .l-table-title { + height: 47px; + justify-content: space-between; + display: flex; + align-items: center; +} +.l-alarm-rules-tr-wrap { + height: 440px; + overflow-y: scroll; + position: relative; +} +.l-alarm-rules-th { + display: flex; + height: 30px; + align-items: center; + padding: 0 15px; + position:relative; + color: #777879; + font-weight: 600; + border-bottom: 1px solid #e6e8ec; + background: #fff; + margin: 0 -21px; +} +.l-alarm-rules-th div { + float :left; +} +.l-alarm-rules-th div:nth-child(1) { + width: 50%; +} +.l-alarm-rules-th div:nth-child(2) { + width: 16.66666667%; +} +.l-alarm-rules-th div:nth-child(3) { + width: 16.66666667%; +} +.l-alarm-rules-th div:nth-child(4) { + width: 25%; + margin-right: 22px; +} +.l-message { + width: 100%; + height: 100%; + z-index: 15; + display: flex; + position: absolute; + align-items: center; + justify-content: center; + background-color: rgba(226, 226, 226, 0.8); +} +.l-message span { + color: #ff8c00; + text-align: center; +} +.l-message button { + top: 0px; + right: 0px; + position: absolute; +} +.l-not-selected { + padding-top: 30%; + text-align: center; +} +.l-threshold { + text-align: center; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-list-container.component.html b/web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-list-container.component.html new file mode 100644 index 000000000000..65cfdf65cbee --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-list-container.component.html @@ -0,0 +1,54 @@ +
+ + + + + + + + + + + + + + +
+
+ Alarm + +
+
+
Rule Name
+
User Group
+
Threshold
+
Type
+
+
+
+ +
Select Application
+
+
+
+ + {{message}} +
+ + + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-list-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-list-container.component.ts new file mode 100644 index 000000000000..00b93b61ab63 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-list-container.component.ts @@ -0,0 +1,218 @@ +import { Component, OnInit, OnDestroy } from '@angular/core'; +import { Subject, combineLatest } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; +import { TranslateService } from '@ngx-translate/core'; + +import { TranslateReplaceService } from 'app/shared/services'; +import { UserGroupDataService, IUserGroup } from 'app/core/components/user-group/user-group-data.service'; +import { ApplicationListInteractionForConfigurationService } from 'app/core/components/application-list/application-list-interaction-for-configuration.service'; +import { Alarm } from './alarm-rule-create-and-update.component'; +import { AlarmRuleDataService, IAlarmRule, IAlarmRuleCreated, IAlarmRuleResponse } from './alarm-rule-data.service'; + +@Component({ + selector: 'pp-alarm-rule-list-container', + templateUrl: './alarm-rule-list-container.component.html', + styleUrls: ['./alarm-rule-list-container.component.css'] +}) +export class AlarmRuleListContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + private currentApplication: IApplication = null; + private editAlarmIndex: number; + useDisable = false; + showLoading = false; + showCreate = false; + message = ''; + checkerList: string[]; + alarmRuleList: IAlarmRule[]; + userGroupList: string[]; + + i18nLabel = { + CHECKER_LABEL: '', + USER_GROUP_LABEL: '', + THRESHOLD_LABEL: '', + TYPE_LABEL: '', + NOTES_LABEL: '', + }; + i18nGuide = { + CHECKER_REQUIRED: '', + USER_GROUP_REQUIRED: '', + THRESHOLD_REQUIRED: '', + TYPE_REQUIRED: '' + }; + editAlarm: any; + + constructor( + private translateService: TranslateService, + private translateReplaceService: TranslateReplaceService, + private alarmRuleDataService: AlarmRuleDataService, + private userGroupDataSerivce: UserGroupDataService, + private applicationListInteractionForConfigurationService: ApplicationListInteractionForConfigurationService + ) { } + ngOnInit() { + this.alarmRuleDataService.getCheckerList().pipe( + takeUntil(this.unsubscribe) + ).subscribe((checkerList: string[]) => { + this.checkerList = checkerList; + }); + this.userGroupDataSerivce.retrieve().pipe( + takeUntil(this.unsubscribe) + ).subscribe((userGroupList: IUserGroup[]) => { + this.userGroupList = userGroupList.map((userGroup: IUserGroup) => { + return userGroup.id; + }); + }); + this.applicationListInteractionForConfigurationService.onSelectApplication$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((selectedApplication: IApplication) => { + this.currentApplication = selectedApplication; + this.onCloseCreateAlarmPopup(); + this.getAlarmData(); + }); + this.getI18NText(); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private getI18NText(): void { + combineLatest( + this.translateService.get('COMMON.REQUIRED_SELECT'), + this.translateService.get('CONFIGURATION.COMMON.CHECKER'), + this.translateService.get('CONFIGURATION.COMMON.USER_GROUP'), + this.translateService.get('CONFIGURATION.COMMON.THRESHOLD'), + this.translateService.get('CONFIGURATION.COMMON.TYPE'), + this.translateService.get('CONFIGURATION.COMMON.NOTES'), + ).subscribe((i18n: string[]) => { + this.i18nGuide.CHECKER_REQUIRED = this.translateReplaceService.replace(i18n[0], i18n[1]); + this.i18nGuide.USER_GROUP_REQUIRED = this.translateReplaceService.replace(i18n[0], i18n[2]); + this.i18nGuide.THRESHOLD_REQUIRED = this.translateReplaceService.replace(i18n[0], i18n[3]); + this.i18nGuide.TYPE_REQUIRED = this.translateReplaceService.replace(i18n[0], i18n[4]); + + this.i18nLabel.CHECKER_LABEL = i18n[1]; + this.i18nLabel.USER_GROUP_LABEL = i18n[2]; + this.i18nLabel.THRESHOLD_LABEL = i18n[3]; + this.i18nLabel.TYPE_LABEL = i18n[4]; + this.i18nLabel.NOTES_LABEL = i18n[5]; + }); + } + private getAlarmData(): void { + this.showProcessing(); + this.alarmRuleDataService.retrieve(this.currentApplication.getApplicationName()).subscribe((alarmRuleList: IAlarmRule[]) => { + this.alarmRuleList = alarmRuleList; + this.hideProcessing(); + }); + } + private getAlarmIndexByRuleId(ruleId: string): number { + let index = -1; + for (let i = 0 ; i < this.alarmRuleList.length ; i++) { + if (this.alarmRuleList[i].ruleId === ruleId) { + index = i; + break; + } + } + return index; + } + private getTypeStr(smsSend: boolean, emailSend: boolean): string { + if (smsSend && emailSend) { + return 'all'; + } else { + if (smsSend) { + return 'sms'; + } + if (emailSend) { + return 'email'; + } + return 'none'; + } + } + onCreateAlarm(alarm: Alarm): void { + this.showProcessing(); + this.alarmRuleDataService.create({ + applicationId: this.currentApplication.getApplicationName(), + serviceType: this.currentApplication.getServiceType(), + userGroupId: alarm.userGroupId, + checkerName: alarm.checkerName, + threshold: alarm.threshold, + smsSend: alarm.smsSend, + emailSend: alarm.emailSend, + notes: alarm.notes + } as IAlarmRule).subscribe((response: IAlarmRuleCreated) => { + this.getAlarmData(); + }, (error: string) => { + this.hideProcessing(); + this.message = error; + }); + } + onUpdateAlarm(alarm: Alarm): void { + const editAlarm = this.alarmRuleList[this.editAlarmIndex]; + this.alarmRuleDataService.update({ + applicationId: editAlarm.applicationId, + ruleId: editAlarm.ruleId, + serviceType: editAlarm.serviceType, + checkerName: alarm.checkerName, + userGroupId: alarm.userGroupId, + threshold: alarm.threshold, + smsSend: alarm.smsSend, + emailSend: alarm.emailSend, + notes: alarm.notes + } as IAlarmRule).subscribe((response: IAlarmRuleResponse) => { + this.getAlarmData(); + }, (error: string) => { + this.hideProcessing(); + this.message = error; + }); + } + onShowCreateAlarmPopup(): void { + if (this.isApplicationSelected() === false) { + return; + } + this.showCreate = true; + } + onCloseCreateAlarmPopup(): void { + this.showCreate = false; + } + onCloseMessage(): void { + this.message = ''; + } + onRemoveAlarm(ruleId: string): void { + this.showProcessing(); + this.alarmRuleDataService.remove(ruleId).subscribe((response: IAlarmRuleResponse) => { + this.getAlarmData(); + }, (error: string) => { + this.hideProcessing(); + this.message = error; + }); + } + onEditAlarm(ruleId: string): void { + this.editAlarmIndex = this.getAlarmIndexByRuleId(ruleId); + const editAlarm = this.alarmRuleList[this.editAlarmIndex]; + this.editAlarm = new Alarm( + editAlarm.checkerName, + editAlarm.userGroupId, + editAlarm.threshold, + this.getTypeStr(editAlarm.smsSend, editAlarm.emailSend), + editAlarm.notes + ); + this.onShowCreateAlarmPopup(); + } + hasMessage(): boolean { + return this.message !== ''; + } + isApplicationSelected(): boolean { + return this.currentApplication !== null; + } + getAddButtonClass(): object { + return { + 'btn-blue': this.isApplicationSelected(), + 'btn-gray': !this.isApplicationSelected() + }; + } + private showProcessing(): void { + this.useDisable = true; + this.showLoading = true; + } + private hideProcessing(): void { + this.useDisable = false; + this.showLoading = false; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-list.component.css b/web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-list.component.css new file mode 100644 index 000000000000..67150bd4a9b6 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-list.component.css @@ -0,0 +1,52 @@ +.l-alarm-rules-tr { + display: flex; + height: 30px; + align-items: center; + padding: 0 15px; + position: relative; +} +.l-alarm-rules-tr div { + float: left; +} +.l-alarm-rules-tr div:nth-child(1) { + width: 41.66666667%; +} +.l-alarm-rules-tr div:nth-child(2) { + width: 16.66666667%; +} +.l-alarm-rules-tr div:nth-child(3) { + width: 16.66666667%; +} +.l-alarm-rules-tr div:nth-child(4) { + width: 16.66666667%; +} +.l-alarm-rules-tr div:nth-child(5) { + width: 8.33333333% +} +.l-alarm-rules-btn-group { + display: flex; + color: #b3b6bf; + font-size: 13px; + align-items: center; + justify-content: flex-end; +} +.l-alarm-rules-btn-group button { + margin-left: 11px; +} +.l-alarm-rules-btn-group button:first-child { + margin-left: 0; +} +.l-threshold { + text-align: center; +} +.fa-trash-alt { + color: #b3b6bf; + font-size: 14px; +} +.fa-edit { + margin-left: 10px; +} +.fa-check { + color: #F00; + margin-left: 10px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-list.component.html b/web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-list.component.html new file mode 100644 index 000000000000..f738115e03de --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-list.component.html @@ -0,0 +1,12 @@ +
+
{{alarm.checkerName}}
+
{{alarm.userGroupId}}
+
{{alarm.threshold}}
+
{{getNotificationType(alarm.emailSend, alarm.smsSend)}}
+
+ + + + +
+
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-list.component.ts b/web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-list.component.ts new file mode 100644 index 000000000000..05014cb11d11 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/alarm-rule-list.component.ts @@ -0,0 +1,45 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; + +@Component({ + selector: 'pp-alarm-rule-list', + templateUrl: './alarm-rule-list.component.html', + styleUrls: ['./alarm-rule-list.component.css'] +}) +export class AlarmRuleListComponent implements OnInit { + @Input() alarmRuleList: any; + @Output() outRemove: EventEmitter = new EventEmitter(); + @Output() outEdit: EventEmitter = new EventEmitter(); + private removeConformId = ''; + constructor() { } + ngOnInit() {} + getNotificationType(emailSend: boolean, smsSend: boolean): string { + const returnStr = []; + if (emailSend === false && smsSend === false) { + return 'None'; + } else { + if (emailSend) { + returnStr.push('Email'); + } + if (smsSend) { + returnStr.push('SMS'); + } + return returnStr.join(','); + } + } + onRemove(ruleId: string): void { + this.removeConformId = ruleId; + } + onEdit(ruleId: string): void { + this.outEdit.emit(ruleId); + } + onCancelRemove(): void { + this.removeConformId = ''; + } + onConfirmRemove(): void { + this.outRemove.emit(this.removeConformId); + this.removeConformId = ''; + } + isRemoveTarget(ruleId: string): boolean { + return this.removeConformId === ruleId; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/index.ts b/web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/index.ts new file mode 100644 index 000000000000..b348dab7b302 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/alarm-rule-list/index.ts @@ -0,0 +1,29 @@ + +import { NgModule } from '@angular/core'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { SharedModule } from 'app/shared'; +import { AlarmRuleListComponent } from './alarm-rule-list.component'; +import { AlarmRuleListContainerComponent } from './alarm-rule-list-container.component'; +import { AlarmRuleCreateAndUpdateComponent } from './alarm-rule-create-and-update.component'; +import { AlarmRuleDataService } from './alarm-rule-data.service'; + +@NgModule({ + declarations: [ + AlarmRuleListComponent, + AlarmRuleListContainerComponent, + AlarmRuleCreateAndUpdateComponent + ], + imports: [ + FormsModule, + ReactiveFormsModule, + SharedModule + ], + exports: [ + AlarmRuleListContainerComponent, + AlarmRuleCreateAndUpdateComponent + ], + providers: [ + AlarmRuleDataService + ] +}) +export class AlarmRuleListModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/angular-split/angular-split.ts b/web/src/main/webapp/v2/src/app/core/components/angular-split/angular-split.ts new file mode 100644 index 000000000000..8f5d8143a9bb --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/angular-split/angular-split.ts @@ -0,0 +1,4 @@ +// Public classes. +export { AngularSplitModule } from './modules/angularSplit.module'; +export { SplitComponent } from './components/split.component'; +export { SplitAreaDirective } from './components/splitArea.directive'; diff --git a/web/src/main/webapp/v2/src/app/core/components/angular-split/components/split.component.ts b/web/src/main/webapp/v2/src/app/core/components/angular-split/components/split.component.ts new file mode 100644 index 000000000000..1b9610542ff1 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/angular-split/components/split.component.ts @@ -0,0 +1,594 @@ +import { Component, ChangeDetectorRef, Input, Output, HostBinding, ChangeDetectionStrategy, EventEmitter, Renderer2, OnDestroy, ElementRef, AfterViewInit, NgZone } from '@angular/core'; +import { Subject, Observable } from 'rxjs'; +import { debounceTime } from 'rxjs/operators'; + +import { IArea } from './../interface/IArea'; +import { IPoint } from './../interface/IPoint'; +import { SplitAreaDirective } from './splitArea.directive'; + +@Component({ + selector: 'split', + changeDetection: ChangeDetectionStrategy.OnPush, + styles: [` + :host { + display: flex; + flex-wrap: nowrap; + justify-content: flex-start; + align-items: stretch; + overflow: hidden; + /* + Important to keep following rules even if overrided later by 'HostBinding' + because if [width] & [height] not provided, when build() is executed, + 'HostBinding' hasn't been applied yet so code: + this.elRef.nativeElement["offsetHeight"] gives wrong value! + */ + width: 100%; + height: 100%; + } + split-gutter { + flex-grow: 0; + flex-shrink: 0; + background-position: center center; + background-repeat: no-repeat; + } + `], + template: ` + + + + `, +}) +export class SplitComponent implements AfterViewInit, OnDestroy { + + private _direction: 'horizontal' | 'vertical' = 'horizontal'; + + @Input() set direction(v: 'horizontal' | 'vertical') { + v = (v === 'vertical') ? 'vertical' : 'horizontal'; + this._direction = v; + + [...this.displayedAreas, ...this.hidedAreas].forEach(area => { + area.comp.setStyleVisibleAndDir(area.comp.visible, this.isDragging, this.direction); + }); + + this.build(false, false); + } + + get direction(): 'horizontal' | 'vertical' { + return this._direction; + } + + //// + private _useTransition: boolean = false; + + @Input() set useTransition(v: boolean) { + v = (typeof(v) === 'boolean') ? v : (v === 'false' ? false : true); + this._useTransition = v; + } + + get useTransition(): boolean { + return this._useTransition; + } + + //// + private _disabled: boolean = false; + + @Input() set disabled(v: boolean) { + v = (typeof(v) === 'boolean') ? v : (v === 'false' ? false : true); + this._disabled = v; + + // Force repaint if modified from TS class (instead of the template) + this.cdRef.markForCheck(); + } + + get disabled(): boolean { + return this._disabled; + } + + //// + private _width: number | null = null; + + @Input() set width(v: number | null) { + v = Number(v); + this._width = (!isNaN(v) && v > 0) ? v : null; + + this.build(false, false); + } + + get width(): number | null { + return this._width; + } + + //// + private _height: number | null = null; + + @Input() set height(v: number | null) { + v = Number(v); + this._height = (!isNaN(v) && v > 0) ? v : null; + + this.build(false, false); + } + + get height(): number | null { + return this._height; + } + + //// + private _gutterSize: number = 11; + + @Input() set gutterSize(v: number) { + v = Number(v); + this._gutterSize = (!isNaN(v) && v > 0) ? v : 11; + + this.build(false, false); + } + + get gutterSize(): number { + return this._gutterSize; + } + + //// + private _gutterColor: string = ''; + + @Input() set gutterColor(v: string) { + this._gutterColor = (typeof v === 'string' && v !== '') ? v : ''; + + // Force repaint if modified from TS class (instead of the template) + this.cdRef.markForCheck(); + } + + get gutterColor(): string { + return this._gutterColor; + } + + //// + private _gutterImageH: string = ''; + + @Input() set gutterImageH(v: string) { + this._gutterImageH = (typeof v === 'string' && v !== '') ? v : ''; + + // Force repaint if modified from TS class (instead of the template) + this.cdRef.markForCheck(); + } + + get gutterImageH(): string { + return this._gutterImageH; + } + + //// + private _gutterImageV: string = ''; + + @Input() set gutterImageV(v: string) { + this._gutterImageV = (typeof v === 'string' && v !== '') ? v : ''; + + // Force repaint if modified from TS class (instead of the template) + this.cdRef.markForCheck(); + } + + get gutterImageV(): string { + return this._gutterImageV; + } + + //// + private _dir: 'ltr' | 'rtl' = 'ltr'; + + @Input() set dir(v: 'ltr' | 'rtl') { + v = (v === 'rtl') ? 'rtl' : 'ltr'; + this._dir = v; + } + + get dir(): 'ltr' | 'rtl' { + return this._dir; + } + + //// + @Output() dragStart = new EventEmitter<{gutterNum: number, sizes: Array}>(false); + @Output() dragProgress = new EventEmitter<{gutterNum: number, sizes: Array}>(false); + @Output() dragEnd = new EventEmitter<{gutterNum: number, sizes: Array}>(false); + @Output() gutterClick = new EventEmitter<{gutterNum: number, sizes: Array}>(false); + + private transitionEndInternal = new Subject>(); + @Output() transitionEnd = (>> this.transitionEndInternal.asObservable()).pipe( + debounceTime(20) + ); + + @HostBinding('style.flex-direction') get cssFlexdirection() { + return (this.direction === 'horizontal') ? 'row' : 'column'; + } + + @HostBinding('style.width') get cssWidth() { + return this.width ? `${ this.width }px` : '100%'; + } + + @HostBinding('style.height') get cssHeight() { + return this.height ? `${ this.height }px` : '100%'; + } + + @HostBinding('style.min-width') get cssMinwidth() { + return (this.direction === 'horizontal') ? `${ this.getNbGutters() * this.gutterSize }px` : null; + } + + @HostBinding('style.min-height') get cssMinheight() { + return (this.direction === 'vertical') ? `${ this.getNbGutters() * this.gutterSize }px` : null; + } + + public isViewInitialized: boolean = false; + private isDragging: boolean = false; + private draggingWithoutMove: boolean = false; + private currentGutterNum: number = 0; + + public readonly displayedAreas: Array = []; + private readonly hidedAreas: Array = []; + + private readonly dragListeners: Array = []; + private readonly dragStartValues = { + sizePixelContainer: 0, + sizePixelA: 0, + sizePixelB: 0, + sizePercentA: 0, + sizePercentB: 0, + }; + + constructor(private ngZone: NgZone, + private elRef: ElementRef, + private cdRef: ChangeDetectorRef, + private renderer: Renderer2) {} + + public ngAfterViewInit() { + this.isViewInitialized = true; + } + + private getNbGutters(): number { + return this.displayedAreas.length - 1; + } + + public addArea(comp: SplitAreaDirective): void { + const newArea: IArea = { + comp, + order: 0, + size: 0, + }; + + if (comp.visible === true) { + this.displayedAreas.push(newArea); + } else { + this.hidedAreas.push(newArea); + } + + comp.setStyleVisibleAndDir(comp.visible, this.isDragging, this.direction); + + this.build(true, true); + } + + public removeArea(comp: SplitAreaDirective): void { + if (this.displayedAreas.some(a => a.comp === comp)) { + const area = this.displayedAreas.find(a => a.comp === comp) + this.displayedAreas.splice(this.displayedAreas.indexOf(area), 1); + + this.build(true, true); + } else if(this.hidedAreas.some(a => a.comp === comp)) { + const area = this.hidedAreas.find(a => a.comp === comp) + this.hidedAreas.splice(this.hidedAreas.indexOf(area), 1); + } + } + + public updateArea(comp: SplitAreaDirective, resetOrders: boolean, resetSizes: boolean): void { + // Only refresh if area is displayed (No need to check inside 'hidedAreas') + const item = this.displayedAreas.find(a => a.comp === comp); + + if (item) { + this.build(resetOrders, resetSizes); + } + } + + public showArea(comp: SplitAreaDirective): void { + const area = this.hidedAreas.find(a => a.comp === comp); + + if (area) { + comp.setStyleVisibleAndDir(comp.visible, this.isDragging, this.direction); + + const areas = this.hidedAreas.splice(this.hidedAreas.indexOf(area), 1); + this.displayedAreas.push(...areas); + + this.build(true, true); + } + } + + public hideArea(comp: SplitAreaDirective): void { + const area = this.displayedAreas.find(a => a.comp === comp); + + if (area) { + comp.setStyleVisibleAndDir(comp.visible, this.isDragging, this.direction); + + const areas = this.displayedAreas.splice(this.displayedAreas.indexOf(area), 1); + areas.forEach(area => { + area.order = 0; + area.size = 0; + }) + this.hidedAreas.push(...areas); + + this.build(true, true); + } + } + + private build(resetOrders: boolean, resetSizes: boolean): void { + this.stopDragging(); + + // ¤ AREAS ORDER + + if (resetOrders === true) { + + // If user provided 'order' for each area, use it to sort them. + if (this.displayedAreas.every(a => a.comp.order !== null)) { + this.displayedAreas.sort((a, b) => ( a.comp.order) - ( b.comp.order)); + } + + // Then set real order with multiples of 2, numbers between will be used by gutters. + this.displayedAreas.forEach((area, i) => { + area.order = i * 2; + area.comp.setStyleOrder(area.order); + }); + + } + + // ¤ AREAS SIZE PERCENT + + if (resetSizes === true) { + + const totalUserSize = this.displayedAreas.reduce((total: number, s: IArea) => s.comp.size ? total + s.comp.size : total, 0); + + // If user provided 'size' for each area and total == 1, use it. + if (this.displayedAreas.every(a => a.comp.size !== null) && totalUserSize > .999 && totalUserSize < 1.001 ) { + + this.displayedAreas.forEach(area => { + area.size = area.comp.size; + }); + } else { + const size = 1 / this.displayedAreas.length; + + this.displayedAreas.forEach(area => { + area.size = size; + }); + } + } + + // + // If some real area sizes are less than gutterSize, + // set them to zero and dispatch size to others. + let percentToDispatch = 0; + + // Get container pixel size + let containerSizePixel = this.getNbGutters() * this.gutterSize; + if (this.direction === 'horizontal') { + containerSizePixel = this.width ? this.width : this.elRef.nativeElement['offsetWidth']; + } else { + containerSizePixel = this.height ? this.height : this.elRef.nativeElement['offsetHeight']; + } + + this.displayedAreas.forEach(area => { + if (area.size * containerSizePixel < this.gutterSize) { + percentToDispatch += area.size; + area.size = 0; + } + }); + + if (percentToDispatch > 0 && this.displayedAreas.length > 0) { + const nbAreasNotZero = this.displayedAreas.filter(a => a.size !== 0).length; + + if (nbAreasNotZero > 0) { + const percentToAdd = percentToDispatch / nbAreasNotZero; + + this.displayedAreas.filter(a => a.size !== 0).forEach(area => { + area.size += percentToAdd; + }); + } else { + this.displayedAreas[this.displayedAreas.length - 1].size = 1; + } + } + + + this.refreshStyleSizes(); + this.cdRef.markForCheck(); + } + + private refreshStyleSizes(): void { + const sumGutterSize = this.getNbGutters() * this.gutterSize; + + this.displayedAreas.forEach(area => { + area.comp.setStyleFlexbasis(`calc( ${ area.size * 100 }% - ${ area.size * sumGutterSize }px )`, this.isDragging); + }); + } + + public startDragging(startEvent: MouseEvent | TouchEvent, gutterOrder: number, gutterNum: number): void { + startEvent.preventDefault(); + + // Place code here to allow '(gutterClick)' event even if '[disabled]="true"'. + this.currentGutterNum = gutterNum; + this.draggingWithoutMove = true; + this.ngZone.runOutsideAngular(() => { + this.dragListeners.push( this.renderer.listen('document', 'mouseup', (e: MouseEvent) => this.stopDragging()) ); + this.dragListeners.push( this.renderer.listen('document', 'touchend', (e: TouchEvent) => this.stopDragging()) ); + this.dragListeners.push( this.renderer.listen('document', 'touchcancel', (e: TouchEvent) => this.stopDragging()) ); + }); + + if(this.disabled) { + return; + } + + const areaA = this.displayedAreas.find(a => a.order === gutterOrder - 1); + const areaB = this.displayedAreas.find(a => a.order === gutterOrder + 1); + + if (!areaA || !areaB) { + return; + } + + const prop = (this.direction === 'horizontal') ? 'offsetWidth' : 'offsetHeight'; + this.dragStartValues.sizePixelContainer = this.elRef.nativeElement[prop]; + this.dragStartValues.sizePixelA = areaA.comp.getSizePixel(prop); + this.dragStartValues.sizePixelB = areaB.comp.getSizePixel(prop); + this.dragStartValues.sizePercentA = areaA.size; + this.dragStartValues.sizePercentB = areaB.size; + + let start: IPoint; + if (startEvent instanceof MouseEvent) { + start = { + x: startEvent.screenX, + y: startEvent.screenY, + }; + } else if (startEvent instanceof TouchEvent) { + start = { + x: startEvent.touches[0].screenX, + y: startEvent.touches[0].screenY, + }; + } else { + return; + } + + this.ngZone.runOutsideAngular(() => { + this.dragListeners.push( this.renderer.listen('document', 'mousemove', (e: MouseEvent) => this.dragEvent(e, start, areaA, areaB)) ); + this.dragListeners.push( this.renderer.listen('document', 'touchmove', (e: TouchEvent) => this.dragEvent(e, start, areaA, areaB)) ); + }); + + areaA.comp.lockEvents(); + areaB.comp.lockEvents(); + + this.isDragging = true; + + this.notify('start'); + } + + private dragEvent(event: MouseEvent | TouchEvent, start: IPoint, areaA: IArea, areaB: IArea): void { + if (!this.isDragging) { + return; + } + + let end: IPoint; + if (event instanceof MouseEvent) { + end = { + x: event.screenX, + y: event.screenY, + }; + } else if (event instanceof TouchEvent) { + end = { + x: event.touches[0].screenX, + y: event.touches[0].screenY, + }; + } else { + return; + } + + this.draggingWithoutMove = false; + this.drag(start, end, areaA, areaB); + } + + private drag(start: IPoint, end: IPoint, areaA: IArea, areaB: IArea): void { + + // ¤ AREAS SIZE PIXEL + const devicePixelRatio = window.devicePixelRatio || 1; + let offsetPixel = (this.direction === 'horizontal') ? (start.x - end.x) : (start.y - end.y); + offsetPixel = offsetPixel / devicePixelRatio; + + if(this.dir === 'rtl') { + offsetPixel = -offsetPixel; + } + + let newSizePixelA = this.dragStartValues.sizePixelA - offsetPixel; + let newSizePixelB = this.dragStartValues.sizePixelB + offsetPixel; + + if (newSizePixelA < this.gutterSize && newSizePixelB < this.gutterSize) { + // WTF.. get out of here! + return; + } else if (newSizePixelA < this.gutterSize) { + newSizePixelB += newSizePixelA; + newSizePixelA = 0; + } else if (newSizePixelB < this.gutterSize) { + newSizePixelA += newSizePixelB; + newSizePixelB = 0; + } + + // ¤ AREAS SIZE PERCENT + if (newSizePixelA === 0) { + areaB.size += areaA.size; + areaA.size = 0; + } else if (newSizePixelB === 0) { + areaA.size += areaB.size; + areaB.size = 0; + } else { + // NEW_PERCENT = START_PERCENT / START_PIXEL * NEW_PIXEL; + if (this.dragStartValues.sizePercentA === 0) { + areaB.size = this.dragStartValues.sizePercentB / this.dragStartValues.sizePixelB * newSizePixelB; + areaA.size = this.dragStartValues.sizePercentB - areaB.size; + } else if (this.dragStartValues.sizePercentB === 0) { + areaA.size = this.dragStartValues.sizePercentA / this.dragStartValues.sizePixelA * newSizePixelA; + areaB.size = this.dragStartValues.sizePercentA - areaA.size; + } else { + areaA.size = this.dragStartValues.sizePercentA / this.dragStartValues.sizePixelA * newSizePixelA; + areaB.size = (this.dragStartValues.sizePercentA + this.dragStartValues.sizePercentB) - areaA.size; + } + } + + this.refreshStyleSizes(); + this.notify('progress'); + } + + private stopDragging(): void { + if (this.isDragging === false && this.draggingWithoutMove === false) { + return; + } + + this.displayedAreas.forEach(area => { + area.comp.unlockEvents(); + }); + + while (this.dragListeners.length > 0) { + const fct = this.dragListeners.pop(); + if (fct) { + fct(); + } + } + + if (this.draggingWithoutMove === true) { + this.notify('click'); + } else { + this.notify('end'); + } + + this.isDragging = false; + this.draggingWithoutMove = false; + } + + + public notify(type: 'start' | 'progress' | 'end' | 'click' | 'transitionEnd'): void { + const areasSize: Array = this.displayedAreas.map(a => a.size * 100); + + switch (type) { + case 'start': + return this.dragStart.emit({gutterNum: this.currentGutterNum, sizes: areasSize}); + + case 'progress': + return this.dragProgress.emit({gutterNum: this.currentGutterNum, sizes: areasSize}); + + case 'end': + return this.dragEnd.emit({gutterNum: this.currentGutterNum, sizes: areasSize}); + + case 'click': + return this.gutterClick.emit({gutterNum: this.currentGutterNum, sizes: areasSize}); + + case 'transitionEnd': + return this.transitionEndInternal.next(areasSize); + } + } + + public ngOnDestroy(): void { + this.stopDragging(); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/angular-split/components/splitArea.directive.ts b/web/src/main/webapp/v2/src/app/core/components/angular-split/components/splitArea.directive.ts new file mode 100644 index 000000000000..ad3b9ed8408b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/angular-split/components/splitArea.directive.ts @@ -0,0 +1,176 @@ +import { Directive, Input, ElementRef, Renderer2, OnInit, OnDestroy, NgZone } from '@angular/core'; + +import { SplitComponent } from './split.component'; + +@Directive({ + selector: 'split-area' +}) +export class SplitAreaDirective implements OnInit, OnDestroy { + + private _order: number | null = null; + + @Input() set order(v: number | null) { + v = Number(v); + this._order = !isNaN(v) ? v : null; + + this.split.updateArea(this, true, false); + } + + get order(): number | null { + return this._order; + } + + //// + private _size: number | null = null; + + @Input() set size(v: number | null) { + v = Number(v); + this._size = (!isNaN(v) && v >= 0 && v <= 100) ? (v/100) : null; + + this.split.updateArea(this, false, true); + } + + get size(): number | null { + return this._size; + } + + //// + private _minSize: number = 0; + + @Input() set minSize(v: number) { + v = Number(v); + this._minSize = (!isNaN(v) && v > 0 && v < 100) ? v/100 : 0; + + this.split.updateArea(this, false, true); + } + + get minSize(): number { + return this._minSize; + } + + //// + private _visible: boolean = true; + + @Input() set visible(v: boolean) { + v = (typeof(v) === 'boolean') ? v : (v === 'false' ? false : true); + this._visible = v; + + if(this.visible) { + this.split.showArea(this); + } + else { + this.split.hideArea(this); + } + } + + get visible(): boolean { + return this._visible; + } + + //// + private transitionListener: Function; + private readonly lockListeners: Array = []; + + constructor(private ngZone: NgZone, + private elRef: ElementRef, + private renderer: Renderer2, + private split: SplitComponent) {} + + public ngOnInit(): void { + this.split.addArea(this); + + this.renderer.setStyle(this.elRef.nativeElement, 'flex-grow', '0'); + this.renderer.setStyle(this.elRef.nativeElement, 'flex-shrink', '0'); + + this.ngZone.runOutsideAngular(() => { + this.transitionListener = this.renderer.listen(this.elRef.nativeElement, 'transitionend', (e: TransitionEvent) => this.onTransitionEnd(e)); + }); + } + + public getSizePixel(prop: 'offsetWidth' | 'offsetHeight'): number { + return this.elRef.nativeElement[prop]; + } + + public setStyleVisibleAndDir(isVisible: boolean, isDragging: boolean, direction: 'horizontal' | 'vertical'): void { + if(isVisible === false) { + this.setStyleFlexbasis('0', isDragging); + this.renderer.setStyle(this.elRef.nativeElement, 'overflow-x', 'hidden'); + this.renderer.setStyle(this.elRef.nativeElement, 'overflow-y', 'hidden'); + + if(direction === 'vertical') { + this.renderer.setStyle(this.elRef.nativeElement, 'max-width', '0'); + } + } + else { + this.renderer.setStyle(this.elRef.nativeElement, 'overflow-x', 'hidden'); + this.renderer.setStyle(this.elRef.nativeElement, 'overflow-y', 'auto'); + this.renderer.removeStyle(this.elRef.nativeElement, 'max-width'); + } + + if(direction === 'horizontal') { + this.renderer.setStyle(this.elRef.nativeElement, 'height', '100%'); + this.renderer.removeStyle(this.elRef.nativeElement, 'width'); + } + else { + this.renderer.setStyle(this.elRef.nativeElement, 'width', '100%'); + this.renderer.removeStyle(this.elRef.nativeElement, 'height'); + } + } + + public setStyleOrder(value: number): void { + this.renderer.setStyle(this.elRef.nativeElement, 'order', value); + } + + public setStyleFlexbasis(value: string, isDragging: boolean): void { + // If component not yet initialized or gutter being dragged, disable transition + if(this.split.isViewInitialized === false || isDragging === true) { + this.setStyleTransition(false); + } + // Or use 'useTransition' to know if transition. + else { + this.setStyleTransition(this.split.useTransition); + } + + this.renderer.setStyle(this.elRef.nativeElement, 'flex-basis', value); + } + + private setStyleTransition(useTransition: boolean): void { + if (useTransition) { + this.renderer.setStyle(this.elRef.nativeElement, 'transition', `flex-basis 0.3s`); + } else { + this.renderer.removeStyle(this.elRef.nativeElement, 'transition'); + } + } + private onTransitionEnd(event: TransitionEvent): void { + // Limit only flex-basis transition to trigger the event + if (event.propertyName === 'flex-basis') { + this.split.notify('transitionEnd'); + } + } + + public lockEvents(): void { + this.ngZone.runOutsideAngular(() => { + this.lockListeners.push( this.renderer.listen(this.elRef.nativeElement, 'selectstart', (e: Event) => false) ); + this.lockListeners.push( this.renderer.listen(this.elRef.nativeElement, 'dragstart', (e: Event) => false) ); + }); + } + + public unlockEvents(): void { + while (this.lockListeners.length > 0) { + const fct = this.lockListeners.pop(); + if (fct) { + fct(); + } + } + } + + public ngOnDestroy(): void { + this.unlockEvents(); + + if (this.transitionListener) { + this.transitionListener(); + } + + this.split.removeArea(this); + } +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/angular-split/components/splitGutter.directive.ts b/web/src/main/webapp/v2/src/app/core/components/angular-split/components/splitGutter.directive.ts new file mode 100644 index 000000000000..3cb0aee974e4 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/angular-split/components/splitGutter.directive.ts @@ -0,0 +1,139 @@ +import { Directive, Input, ElementRef, Renderer2 } from '@angular/core'; + +@Directive({ + selector: 'split-gutter' +}) +export class SplitGutterDirective { + + @Input() set order(v: number) { + this.renderer.setStyle(this.elRef.nativeElement, 'order', v); + } + + //// + private _direction: 'vertical' | 'horizontal'; + + @Input() set direction(v: 'vertical' | 'horizontal') { + this._direction = v; + this.refreshStyle(); + } + + get direction(): 'vertical' | 'horizontal' { + return this._direction; + } + + //// + @Input() set useTransition(v: boolean) { + if (v) { + this.renderer.setStyle(this.elRef.nativeElement, 'transition', `flex-basis 0.3s`); + } else { + this.renderer.removeStyle(this.elRef.nativeElement, 'transition'); + } + } + + //// + private _size: number; + + @Input() set size(v: number) { + this._size = v; + this.refreshStyle(); + } + + get size(): number { + return this._size; + } + + //// + private _color: string; + + @Input() set color(v: string) { + this._color = v; + this.refreshStyle(); + } + + get color(): string { + return this._color; + } + + //// + private _imageH: string; + + @Input() set imageH(v: string) { + this._imageH = v; + this.refreshStyle(); + } + + get imageH(): string { + return this._imageH; + } + + //// + private _imageV: string; + + @Input() set imageV(v: string) { + this._imageV = v; + this.refreshStyle(); + } + + get imageV(): string { + return this._imageV; + } + + //// + private _disabled: boolean = false; + + @Input() set disabled(v: boolean) { + this._disabled = v; + this.refreshStyle(); + } + + get disabled(): boolean { + return this._disabled; + } + + //// + constructor(private elRef: ElementRef, + private renderer: Renderer2) {} + + private refreshStyle(): void { + this.renderer.setStyle(this.elRef.nativeElement, 'flex-basis', `${ this.size }px`); + + // fix safari bug about gutter height when direction is horizontal + this.renderer.setStyle(this.elRef.nativeElement, 'height', (this.direction === 'vertical') ? `${ this.size }px` : `100%`); + + this.renderer.setStyle(this.elRef.nativeElement, 'background-color', (this.color !== '') ? this.color : `#eeeeee`); + + const state: 'disabled' | 'vertical' | 'horizontal' = (this.disabled === true) ? 'disabled' : this.direction; + this.renderer.setStyle(this.elRef.nativeElement, 'background-image', this.getImage(state)); + this.renderer.setStyle(this.elRef.nativeElement, 'cursor', this.getCursor(state)); + } + + private getCursor(state: 'disabled' | 'vertical' | 'horizontal'): string { + switch (state) { + case 'horizontal': + return 'col-resize'; + + case 'vertical': + return 'row-resize'; + + case 'disabled': + return 'default'; + } + } + + private getImage(state: 'disabled' | 'vertical' | 'horizontal'): string { + switch (state) { + case 'horizontal': + return (this.imageH !== '') ? this.imageH : defaultImageH; + + case 'vertical': + return (this.imageV !== '') ? this.imageV : defaultImageV; + + case 'disabled': + return ''; + } + } +} + + +const defaultImageH = 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAeCAYAAADkftS9AAAAIklEQVQoU2M4c+bMfxAGAgYYmwGrIIiDjrELjpo5aiZeMwF+yNnOs5KSvgAAAABJRU5ErkJggg==")'; +const defaultImageV = 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAFCAMAAABl/6zIAAAABlBMVEUAAADMzMzIT8AyAAAAAXRSTlMAQObYZgAAABRJREFUeAFjYGRkwIMJSeMHlBkOABP7AEGzSuPKAAAAAElFTkSuQmCC")'; diff --git a/web/src/main/webapp/v2/src/app/core/components/angular-split/interface/IArea.ts b/web/src/main/webapp/v2/src/app/core/components/angular-split/interface/IArea.ts new file mode 100644 index 000000000000..20b02201782a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/angular-split/interface/IArea.ts @@ -0,0 +1,7 @@ +import { SplitAreaDirective } from '../components/splitArea.directive'; + +export interface IArea { + comp: SplitAreaDirective; + size: number; + order: number; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/angular-split/interface/IPoint.ts b/web/src/main/webapp/v2/src/app/core/components/angular-split/interface/IPoint.ts new file mode 100644 index 000000000000..a22340cd5ea1 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/angular-split/interface/IPoint.ts @@ -0,0 +1,4 @@ +export interface IPoint { + x: number; + y: number; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/angular-split/modules/angularSplit.module.ts b/web/src/main/webapp/v2/src/app/core/components/angular-split/modules/angularSplit.module.ts new file mode 100644 index 000000000000..3f004786409e --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/angular-split/modules/angularSplit.module.ts @@ -0,0 +1,38 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { SplitComponent } from '../components/split.component'; +import { SplitAreaDirective } from '../components/splitArea.directive'; +import { SplitGutterDirective } from '../components/splitGutter.directive'; + +@NgModule({ + imports: [ + CommonModule + ], + declarations: [ + SplitComponent, + SplitAreaDirective, + SplitGutterDirective, + ], + exports: [ + SplitComponent, + SplitAreaDirective, + ] +}) +export class AngularSplitModule { + + public static forRoot(): ModuleWithProviders { + return { + ngModule: AngularSplitModule, + providers: [] + }; + } + + public static forChild(): ModuleWithProviders { + return { + ngModule: AngularSplitModule, + providers: [] + }; + } + +} diff --git a/web/src/main/webapp/v2/src/app/core/components/application-inspector-contents/application-inspector-contents-container.component.css b/web/src/main/webapp/v2/src/app/core/components/application-inspector-contents/application-inspector-contents-container.component.css new file mode 100644 index 000000000000..ae10a3ace93a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-inspector-contents/application-inspector-contents-container.component.css @@ -0,0 +1,24 @@ +:host { + display: flex; + flex-flow: column nowrap; + height: 100%; +} +.l-date-range { + border-bottom: 1px solid #e5e8f0; + background-color: #FFF; + min-height: 161px; + max-height: 1000px +} +.l-main-contents { + height: 100%; + position: relative; + overflow: auto; +} +.l-chart-group-wrap { + display: flex; + flex-flow: row wrap; +} +.l-empty-content { + width: calc(50% - 20px); + margin: 10px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/application-inspector-contents/application-inspector-contents-container.component.html b/web/src/main/webapp/v2/src/app/core/components/application-inspector-contents/application-inspector-contents-container.component.html new file mode 100644 index 000000000000..1efd551ded39 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-inspector-contents/application-inspector-contents-container.component.html @@ -0,0 +1,27 @@ + +
+ + +
+
+
+ + + + + + + + + +
+ + + + +
+
+
+ + + diff --git a/web/src/main/webapp/v2/src/app/core/components/application-inspector-contents/application-inspector-contents-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/application-inspector-contents/application-inspector-contents-container.component.ts new file mode 100644 index 000000000000..db5e46fe17cf --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-inspector-contents/application-inspector-contents-container.component.ts @@ -0,0 +1,21 @@ +import { Component, OnInit } from '@angular/core'; +import { Observable } from 'rxjs'; + +import { WebAppSettingDataService } from 'app/shared/services'; + +@Component({ + selector: 'pp-application-inspector-contents-container', + templateUrl: './application-inspector-contents-container.component.html', + styleUrls: ['./application-inspector-contents-container.component.css'] +}) +export class ApplicationInspectorContentsContainerComponent implements OnInit { + isApplicationInspectorActivated$: Observable; + + constructor( + private webAppSettingDataService: WebAppSettingDataService + ) {} + + ngOnInit() { + this.isApplicationInspectorActivated$ = this.webAppSettingDataService.isApplicationInspectorActivated(); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/application-inspector-contents/index.ts b/web/src/main/webapp/v2/src/app/core/components/application-inspector-contents/index.ts new file mode 100644 index 000000000000..59ae264062ef --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-inspector-contents/index.ts @@ -0,0 +1,28 @@ + +import { NgModule } from '@angular/core'; +import { SharedModule } from 'app/shared'; +import { ApplicationInspectorUsageGuideModule } from 'app/core/components/application-inspector-usage-guide'; +import { ApplicationInspectorContentsContainerComponent } from './application-inspector-contents-container.component'; +import { TimelineCommandGroupModule } from 'app/core/components/timeline-command-group'; +import { AgentEventViewModule } from 'app/core/components/agent-event-view'; +import { TimelineModule } from 'app/core/components/timeline'; +import { InspectorChartModule } from 'app/core/components/inspector-chart'; + +@NgModule({ + declarations: [ + ApplicationInspectorContentsContainerComponent + ], +imports: [ + SharedModule, + TimelineCommandGroupModule, + AgentEventViewModule, + TimelineModule, + InspectorChartModule, + ApplicationInspectorUsageGuideModule + ], + exports: [ + ApplicationInspectorContentsContainerComponent + ], + providers: [] +}) +export class ApplicationInspectorContentsModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/application-inspector-title/application-inspector-title-container.component.css b/web/src/main/webapp/v2/src/app/core/components/application-inspector-title/application-inspector-title-container.component.css new file mode 100644 index 000000000000..27429901956c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-inspector-title/application-inspector-title-container.component.css @@ -0,0 +1,25 @@ +.l-wrapper { + cursor: pointer; + display: block; + padding: 8px 6px 6px 8px; + overflow: hidden; + font-size: 12px; + white-space: nowrap; + text-overflow: ellipsis; +} +.l-wrapper img { + float: left; + width: 22px; + height: 18px; + margin-right: 10px; +} +.l-wrapper.active { + color: #418CD3; + font-weight: 600; + box-shadow: 2px 2px 5px 0px rgba(53,61,117,1); +} +.l-wrapper:hover { + color: #FFF; + cursor: pointer; + background-color: #418CD3; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/application-inspector-title/application-inspector-title-container.component.html b/web/src/main/webapp/v2/src/app/core/components/application-inspector-title/application-inspector-title-container.component.html new file mode 100644 index 000000000000..37c4b7cab06f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-inspector-title/application-inspector-title-container.component.html @@ -0,0 +1,3 @@ +
+ {{applicationName}} +
diff --git a/web/src/main/webapp/v2/src/app/core/components/application-inspector-title/application-inspector-title-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/application-inspector-title/application-inspector-title-container.component.ts new file mode 100644 index 000000000000..2d6ed9abaa3c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-inspector-title/application-inspector-title-container.component.ts @@ -0,0 +1,74 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + +import { UrlPath, UrlPathId } from 'app/shared/models'; +import { + UrlRouteManagerService, + WebAppSettingDataService, + NewUrlStateNotificationService, + AnalyticsService, + TRACKED_EVENT_LIST +} from 'app/shared/services'; + +@Component({ + selector: 'pp-application-inspector-title-container', + templateUrl: './application-inspector-title-container.component.html', + styleUrls: ['./application-inspector-title-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ApplicationInspectorTitleContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + agentId: string; + funcImagePath: Function; + applicationServiceType: string; + applicationName: string; + constructor( + private changeDetectorRef: ChangeDetectorRef, + private webAppSettingDataService: WebAppSettingDataService, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private urlRouteManagerService: UrlRouteManagerService, + private analyticsService: AnalyticsService, + ) {} + + ngOnInit() { + this.funcImagePath = this.webAppSettingDataService.getIconPathMakeFunc(); + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((urlService: NewUrlStateNotificationService) => { + if (urlService.hasValue(UrlPathId.APPLICATION)) { + this.applicationName = urlService.getPathValue(UrlPathId.APPLICATION).getApplicationName(); + this.applicationServiceType = urlService.getPathValue(UrlPathId.APPLICATION).getServiceType(); + } + if (urlService.hasValue(UrlPathId.AGENT_ID)) { + this.agentId = urlService.getPathValue(UrlPathId.AGENT_ID); + } else { + this.agentId = ''; + } + this.changeDetectorRef.detectChanges(); + }); + } + + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + + isEmptyAgentId(): boolean { + return this.agentId === ''; + } + getApplicationIcon(): string { + return this.funcImagePath(this.applicationServiceType); + } + onSelectApplication() { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.GO_TO_APPLICATION_INSPECTOR); + this.urlRouteManagerService.moveOnPage({ + url: [ + UrlPath.INSPECTOR, + this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getUrlStr(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.PERIOD).getValueWithTime(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.END_TIME).getEndTime() + ] + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/application-inspector-title/index.ts b/web/src/main/webapp/v2/src/app/core/components/application-inspector-title/index.ts new file mode 100644 index 000000000000..87c5d4d0f1f3 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-inspector-title/index.ts @@ -0,0 +1,20 @@ + +import { NgModule } from '@angular/core'; +import { MatTooltipModule } from '@angular/material'; +import { SharedModule } from 'app/shared'; +import { ApplicationInspectorTitleContainerComponent } from './application-inspector-title-container.component'; + +@NgModule({ + declarations: [ + ApplicationInspectorTitleContainerComponent + ], + imports: [ + MatTooltipModule, + SharedModule + ], + exports: [ + ApplicationInspectorTitleContainerComponent + ], + providers: [] +}) +export class ApplicationInspectorTitleModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/application-inspector-usage-guide/application-inspector-usage-guide-container.component.css b/web/src/main/webapp/v2/src/app/core/components/application-inspector-usage-guide/application-inspector-usage-guide-container.component.css new file mode 100644 index 000000000000..41eb703a5156 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-inspector-usage-guide/application-inspector-usage-guide-container.component.css @@ -0,0 +1,31 @@ +:host { + display: block; + height: 100%; +} + +.l-guide-wrapper { + width: 480px; + height: 200px; + margin: auto; + position: relative; + top: 35%; + background-color: #fff; + padding: 15px 20px; + border-radius: 3px; + line-height: 200%; +} + +.l-guide-title { + text-align: center; + font-size: 30px; + padding: 25px 0; +} + +.l-guide-title > .fas { + font-size: 30px; + margin-right: 5px; +} + +.l-guide-text { + text-align: center; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/application-inspector-usage-guide/application-inspector-usage-guide-container.component.html b/web/src/main/webapp/v2/src/app/core/components/application-inspector-usage-guide/application-inspector-usage-guide-container.component.html new file mode 100644 index 000000000000..42e306ffcec9 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-inspector-usage-guide/application-inspector-usage-guide-container.component.html @@ -0,0 +1,4 @@ +
+

Warning

+

+
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/application-inspector-usage-guide/application-inspector-usage-guide-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/application-inspector-usage-guide/application-inspector-usage-guide-container.component.ts new file mode 100644 index 000000000000..5584c5eb0130 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-inspector-usage-guide/application-inspector-usage-guide-container.component.ts @@ -0,0 +1,20 @@ +import { Component, OnInit } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import { Observable } from 'rxjs'; + +@Component({ + selector: 'pp-application-inspector-usage-guide-container', + templateUrl: './application-inspector-usage-guide-container.component.html', + styleUrls: ['./application-inspector-usage-guide-container.component.css'] +}) +export class ApplicationInspectorUsageGuideContainerComponent implements OnInit { + guideMessage$: Observable; + + constructor( + private translateService: TranslateService + ) {} + + ngOnInit() { + this.guideMessage$ = this.translateService.get('INSPECTOR.APPLICATION_INSPECTOR_USAGE_GUIDE_MESSAGE'); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/application-inspector-usage-guide/index.ts b/web/src/main/webapp/v2/src/app/core/components/application-inspector-usage-guide/index.ts new file mode 100644 index 000000000000..097bb5fcb17e --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-inspector-usage-guide/index.ts @@ -0,0 +1,18 @@ +import { NgModule } from '@angular/core'; +import { SharedModule } from 'app/shared'; + +import { ApplicationInspectorUsageGuideContainerComponent } from './application-inspector-usage-guide-container.component'; + +@NgModule({ + declarations: [ + ApplicationInspectorUsageGuideContainerComponent + ], + imports: [ + SharedModule + ], + exports: [ + ApplicationInspectorUsageGuideContainerComponent + ], + providers: [], +}) +export class ApplicationInspectorUsageGuideModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-data.service.ts new file mode 100644 index 000000000000..67197ef3fa99 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-data.service.ts @@ -0,0 +1,30 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; + +import { StoreHelperService } from 'app/shared/services/store-helper.service'; +import { Actions } from 'app/shared/store'; +import { Application } from 'app/core/models/application'; + +@Injectable() +export class ApplicationListDataService { + constructor( + private http: HttpClient, + private storeHelperService: StoreHelperService + ) { } + getApplicationList(): Observable { + return this.http.get('applications.pinpoint').pipe( + map(res => { + const body = res || []; + if (body) { + const convertData = body.map(app => new Application(app.applicationName, app.serviceType, app.code)); + this.storeHelperService.dispatch(new Actions.UpdateApplicationList(convertData)); + return convertData; + } else { + return []; + } + }) + ); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-configuration-alarm-container.component.css b/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-configuration-alarm-container.component.css new file mode 100644 index 000000000000..c18ad00430b9 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-configuration-alarm-container.component.css @@ -0,0 +1,32 @@ +:host { + position: relative; +} +.l-popup-table th { + color:#333; +} +.l-popup-table td { + padding:10px 15px; + height:auto; + border-top:1px solid #e5e8f0; +} +.l-widget-group { + flex:1; + padding: 0 15px; + height: 100%; + align-items: center; +} +.l-search-input { + border:1px solid #469ae4; + font-size:13px; + color:#b3b3b4; + padding:6px 11px; + width:100%; +} +.l-application-list { + padding: 0 !important; + vertical-align: top; +} +.l-application-list > div { + overflow-y: auto; + height: 428px; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-configuration-alarm-container.component.html b/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-configuration-alarm-container.component.html new file mode 100644 index 000000000000..01d05ca656e2 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-configuration-alarm-container.component.html @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + +
Application
+
+ +
+
+
+ +
+
diff --git a/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-configuration-alarm-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-configuration-alarm-container.component.ts new file mode 100644 index 000000000000..27b8aa5b8720 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-configuration-alarm-container.component.ts @@ -0,0 +1,164 @@ +import { Component, OnInit, AfterViewInit, ViewChild, ElementRef, ChangeDetectorRef, ChangeDetectionStrategy, OnDestroy, Renderer2 } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import { Subject, combineLatest, fromEvent } from 'rxjs'; +import { debounceTime, distinctUntilChanged, filter, pluck } from 'rxjs/operators'; + +import { WebAppSettingDataService, StoreHelperService } from 'app/shared/services'; +import { ApplicationListInteractionForConfigurationService } from './application-list-interaction-for-configuration.service'; +import { FOCUS_TYPE } from './application-list-for-header.component'; + +@Component({ + selector: 'pp-application-list-for-configuration-alarm-container', + templateUrl: './application-list-for-configuration-alarm-container.component.html', + styleUrls: ['./application-list-for-configuration-alarm-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ApplicationListForConfigurationAlarmContainerComponent implements OnInit, AfterViewInit, OnDestroy { + @ViewChild('inputQuery') inputQuery: ElementRef; + i18nText: { [key: string]: string } = { + INPUT_APPLICATION_NAME: '', + SELECTED_APPLICATION_NAME: '', + EMPTY_LIST: '' + }; + private unsubscribe: Subject = new Subject(); + private minLength = 3; + private filterStr = ''; + private applicationList: IApplication[]; + filteredApplicationList: IApplication[]; + selectedApplication: IApplication; + showTitle = false; + focusType: FOCUS_TYPE = FOCUS_TYPE.KEYBOARD; + restCount = 0; + focusIndex = -1; + funcImagePath: Function; + + constructor( + private changeDetector: ChangeDetectorRef, + private renderer: Renderer2, + private storeHelperService: StoreHelperService, + private webAppSettingDataService: WebAppSettingDataService, + private translateService: TranslateService, + private applicationListInteractionForConfigurationService: ApplicationListInteractionForConfigurationService + ) {} + ngOnInit() { + this.initI18nText(); + this.funcImagePath = this.webAppSettingDataService.getIconPathMakeFunc(); + // this.initIconData(); + + this.storeHelperService.getApplicationList(this.unsubscribe).subscribe((applicationList: IApplication[]) => { + this.applicationList = applicationList; + this.filteredApplicationList = this.filterList(this.applicationList); + this.changeDetector.detectChanges(); + }); + } + ngAfterViewInit() { + this.bindUserInputEvent(); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private bindUserInputEvent(): void { + fromEvent(this.inputQuery.nativeElement, 'keyup').pipe( + debounceTime(300), + filter((event: KeyboardEvent) => { + return !this.isArrowKey(event.keyCode); + }), + pluck('target', 'value'), + filter((value: string) => { + return this.isLengthValid(value.trim().length); + }), + distinctUntilChanged() + ).subscribe((value: string) => { + this.applyQuery(value); + }); + } + private initI18nText(): void { + combineLatest( + this.translateService.get('MAIN.INPUT_APP_NAME_PLACE_HOLDER'), + this.translateService.get('MAIN.APP_LIST'), + this.translateService.get('CONFIGURATION.GENERAL.EMPTY') + ).subscribe((i18n: string[]) => { + this.i18nText.INPUT_APPLICATION_NAME = i18n[0]; + this.i18nText.APPLICATION_LIST_TITLE = i18n[1]; + this.i18nText.EMPTY_LIST = i18n[2]; + }); + } + private selectApplication(application: IApplication): void { + if (application) { + this.selectedApplication = application; + this.changeDetector.detectChanges(); + } + } + private filterList(appList: IApplication[]): IApplication[] { + if (this.filterStr === '') { + return appList; + } else { + return appList.filter((application: IApplication) => { + return new RegExp(this.filterStr, 'i').test(application.getApplicationName()); + }); + } + } + private applyQuery(query: string): void { + this.filterStr = query; + this.filteredApplicationList = this.filterList(this.applicationList); + this.focusIndex = -1; + this.changeDetector.detectChanges(); + } + + getSelectedApplicationIcon(): string { + return this.funcImagePath(this.selectedApplication.getServiceType()); + } + + getSelectedApplicationName(): string { + if (this.selectedApplication) { + return this.selectedApplication.getApplicationName(); + } else { + return this.i18nText.SELECTED_APPLICATION_NAME; + } + } + onSelectApplication(selectedApplication: IApplication): void { + this.selectApplication(selectedApplication); + this.applicationListInteractionForConfigurationService.setSelectedApplication(selectedApplication); + } + onFocused(index: number): void { + this.focusIndex = index; + this.focusType = FOCUS_TYPE.MOUSE; + this.changeDetector.detectChanges(); + } + onKeyDown(keyCode: number): void { + switch (keyCode) { + case 27: // ESC + this.renderer.setProperty(this.inputQuery.nativeElement, 'value', ''); + this.applyQuery(''); + this.changeDetector.detectChanges(); + break; + // case 13: // Enter + // if (this.focusIndex !== -1) { + // this.onSelectApplication(this.filteredApplicationList[this.focusIndex]); + // this.changeDetector.detectChanges(); + // } + // break; + // case 38: // ArrowUp + // if (this.focusIndex - 1 >= 0) { + // this.focusIndex -= 1; + // this.focusType = FOCUS_TYPE.KEYBOARD; + // this.changeDetector.detectChanges(); + // } + // break; + // case 40: // ArrowDown + // if (this.focusIndex + 1 < this.filteredApplicationList.length) { + // this.focusIndex += 1; + // this.focusType = FOCUS_TYPE.KEYBOARD; + // this.changeDetector.detectChanges(); + // } + // break; + } + } + private isArrowKey(key: number): boolean { + return key >= 37 && key <= 40; + } + private isLengthValid(length: number): boolean { + return length === 0 || length >= this.minLength; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-configuration-container.component.css b/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-configuration-container.component.css new file mode 100644 index 000000000000..7f26ddcb5503 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-configuration-container.component.css @@ -0,0 +1,3 @@ +:host { + display: block; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-configuration-container.component.html b/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-configuration-container.component.html new file mode 100644 index 000000000000..2b5c6ed3f709 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-configuration-container.component.html @@ -0,0 +1,7 @@ + + diff --git a/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-configuration-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-configuration-container.component.ts new file mode 100644 index 000000000000..265210ef022c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-configuration-container.component.ts @@ -0,0 +1,60 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import { Observable, combineLatest, Subject } from 'rxjs'; +import { map } from 'rxjs/operators'; + +import { StoreHelperService, WebAppSettingDataService, AnalyticsService, TRACKED_EVENT_LIST } from 'app/shared/services'; + +@Component({ + selector: 'pp-application-list-for-configuration-container', + templateUrl: './application-list-for-configuration-container.component.html', + styleUrls: ['./application-list-for-configuration-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ApplicationListForConfigurationContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + applicationList$: Observable; + funcImagePath: Function; + emptyText$: Observable; + iconBtnClassName = 'fas fa-arrow-right'; + + constructor( + private storeHelperService: StoreHelperService, + private webAppSettingDataService: WebAppSettingDataService, + private translateService: TranslateService, + private analyticsService: AnalyticsService, + ) {} + + ngOnInit() { + this.initList(); + this.funcImagePath = this.webAppSettingDataService.getIconPathMakeFunc(); + this.initEmptyText(); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + + private initList(): void { + this.applicationList$ = combineLatest( + this.storeHelperService.getApplicationList(this.unsubscribe), + this.storeHelperService.getFavoriteApplicationList(this.unsubscribe), + ).pipe( + map(([appList, favAppList]: IApplication[][]) => { + return appList.filter((app: IApplication) => { + return favAppList.findIndex((favApp: IApplication) => { + return favApp.equals(app); + }) === -1; + }); + }) + ); + } + private initEmptyText(): void { + this.emptyText$ = this.translateService.get('CONFIGURATION.GENERAL.EMPTY'); + } + + onSelectApp(app: IApplication): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.SET_FAVORITE_APPLICATION_IN_CONFIGURATION); + this.webAppSettingDataService.addFavoriteApplication(app); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-configuration.component.css b/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-configuration.component.css new file mode 100644 index 000000000000..d093c6fef980 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-configuration.component.css @@ -0,0 +1,46 @@ +:host { + display: block; + max-height: 240px; + overflow-y: auto; +} + +.l-application-list { + font-size: 13px; +} + +.l-application-list-item { + padding: 12px 12px 12px 18px; + color: #666 !important; + font-weight: 400 !important; + display: flex; + align-items: center; + justify-content: flex-start; +} + +.l-application-list-item:hover { + background-color: #e4f3eb; +} + +.l-application-name-wrapper { + flex: auto; + margin-right: 5px; +} + +.l-icon-img { + margin-right: 5px; +} + +.l-select-button > .fas, +.l-select-button > .far { + font-size: 18px; +} + +.l-select-button > .fa-arrow-right { + color: #4a8fd2; +} + +.l-empty-text { + text-align: center; + color: #333; + font-size: 16px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-configuration.component.html b/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-configuration.component.html new file mode 100644 index 000000000000..19021e5f6f3a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-configuration.component.html @@ -0,0 +1,8 @@ +
    +
  • + + {{app.getApplicationName()}} + +
  • +
+

{{emptyText}}

diff --git a/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-configuration.component.ts b/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-configuration.component.ts new file mode 100644 index 000000000000..79cbb6ba987b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-configuration.component.ts @@ -0,0 +1,29 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; + +@Component({ + selector: 'pp-application-list-for-configuration', + templateUrl: './application-list-for-configuration.component.html', + styleUrls: ['./application-list-for-configuration.component.css'] +}) +export class ApplicationListForConfigurationComponent implements OnInit { + @Input() applicationList: IApplication[]; + @Input() emptyText: string; + @Input() funcImagePath: Function; + @Input() iconBtnClassName: string; + @Output() outSelectApp = new EventEmitter(); + + constructor() {} + ngOnInit() {} + + getIconPath(serviceType: string): string { + return this.funcImagePath(serviceType); + } + + onSelectApp(app: IApplication): void { + this.outSelectApp.emit(app); + } + + isListEmpty(): boolean { + return this.applicationList.length === 0; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-header-container.component.css b/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-header-container.component.css new file mode 100644 index 000000000000..ba9d160c721b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-header-container.component.css @@ -0,0 +1,87 @@ +:host { + display: block; + position: relative; +} +.l-wrapper { + display: flex; + flex-flow: row wrap; + margin-right: 10px; + width: 310px; + position: relative; +} +.l-app-select { + display: flex; + flex-flow: row nowrap; + width: 100%; + align-items: center; + justify-content: space-between; + cursor: pointer; + height: 32px; + padding: 0 9px; + border: 1px solid #4488CB; + background: #F6FAFE; + font-size: 13px; + border-radius: 0px; + color: #666; +} +.l-app-select img { + margin-right: 6px; +} +.l-app-select > div { + display: block; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} +.l-app-select > div img { + float: left; +} +.l-app-select > div span { + line-height: 1.4; +} +.l-input-layer { + position: absolute; + top: 32px; + width: 100%; + border: 1px solid #4488CB; + background: #FFF; + z-index: 10; +} +.l-search-group-wrap { + display: flex; + flex-flow: row wrap; + padding: 11px; + font-size: 13px; + justify-content: flex-end; + position: relative; +} +.l-search-group { + width: 100%; + background: #FFF; + height: 32px; + color: #B3B3B4; + position: relative; +} +.l-search-group input { + width: 100%; + height: 100%; + border: 1px solid #D7DDE4; + padding: 0 10px; +} +.l-app-list { + display: flex; + flex-flow: column nowrap; + max-height: 418px; + overflow-y: auto; + height: 100%; +} +.l-bottom { + display: flex; + flex-flow: row wrap; + padding: 4px; + border-top: 1px solid #d7dde4; +} +.l-bottom button { + font-weight: 100; + flex: 1; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-header-container.component.html b/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-header-container.component.html new file mode 100644 index 000000000000..cbd3e620e214 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-header-container.component.html @@ -0,0 +1,46 @@ +
+
+
+ + {{getSelectedApplicationName()}} +
+ +
+
+
+
+ +
+
+
+ + +
+
+ +
+
+ +
diff --git a/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-header-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-header-container.component.ts new file mode 100644 index 000000000000..c50a0b3abb5a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-header-container.component.ts @@ -0,0 +1,267 @@ +import { Component, OnInit, AfterViewInit, ViewChild, ElementRef, ChangeDetectorRef, ChangeDetectionStrategy, OnDestroy, Renderer2 } from '@angular/core'; +import { Subject, combineLatest, fromEvent, of } from 'rxjs'; +import { debounceTime, distinctUntilChanged, filter, takeUntil, pluck, delay } from 'rxjs/operators'; +import { TranslateService } from '@ngx-translate/core'; + +import { + StoreHelperService, + WebAppSettingDataService, + UrlRouteManagerService, + NewUrlStateNotificationService, + AnalyticsService, + TRACKED_EVENT_LIST +} from 'app/shared/services'; +import { UrlPathId } from 'app/shared/models'; +import { ApplicationListDataService } from './application-list-data.service'; +import { FOCUS_TYPE } from './application-list-for-header.component'; + +@Component({ + selector: 'pp-application-list-for-header-container', + templateUrl: './application-list-for-header-container.component.html', + styleUrls: ['./application-list-for-header-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ApplicationListForHeaderContainerComponent implements OnInit, AfterViewInit, OnDestroy { + @ViewChild('inputQuery') inputQuery: ElementRef; + private unsubscribe: Subject = new Subject(); + private maxIndex: number; + private minLength = 3; + private filterStr = ''; + private initApplication: IApplication; + private applicationList: IApplication[]; + private favoriteApplicationList: IApplication[]; + i18nText: { [key: string]: string } = { + FAVORITE_LIST_TITLE: '', + APPLICATION_LIST_TITLE: '', + INPUT_APPLICATION_NAME: '', + SELECTED_APPLICATION_NAME: '', + EMPTY_LIST: '' + }; + showTitle = true; + selectedApplication: IApplication; + focusType: FOCUS_TYPE = FOCUS_TYPE.KEYBOARD; + focusIndex = -1; + hiddenComponent = true; + filteredApplicationList: IApplication[] = []; + filteredFavoriteApplicationList: IApplication[] = []; + funcImagePath: Function; + showLoading = false; + + constructor( + private changeDetector: ChangeDetectorRef, + private storeHelperService: StoreHelperService, + private webAppSettingDataService: WebAppSettingDataService, + private applicationListDataService: ApplicationListDataService, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private urlRouteManagerService: UrlRouteManagerService, + private translateService: TranslateService, + private analyticsService: AnalyticsService, + private renderer: Renderer2 + ) {} + + ngOnInit() { + this.initI18nText(); + this.funcImagePath = this.webAppSettingDataService.getIconPathMakeFunc(); + + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((urlService: NewUrlStateNotificationService) => { + if (urlService.hasValue(UrlPathId.APPLICATION)) { + this.initApplication = urlService.getPathValue(UrlPathId.APPLICATION); + this.selectApplication(this.initApplication); + this.hiddenComponent = true; + } else { + this.hiddenComponent = false; + this.selectedApplication = null; + this.changeDetector.detectChanges(); + } + }); + this.connectStore(); + } + + ngAfterViewInit() { + this.setFocusToInput(); + this.bindUserInputEvent(); + } + + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private connectStore(): void { + combineLatest( + this.storeHelperService.getApplicationList(this.unsubscribe), + this.storeHelperService.getFavoriteApplicationList(this.unsubscribe) + ).pipe( + takeUntil(this.unsubscribe) + ).subscribe((responseData: any[]) => { + this.refreshList(responseData[0], responseData[1]); + this.showLoading = true; + this.changeDetector.detectChanges(); + }); + } + private bindUserInputEvent(): void { + fromEvent(this.inputQuery.nativeElement, 'keyup').pipe( + debounceTime(300), + distinctUntilChanged(), + filter((event: KeyboardEvent) => { + return !this.isArrowKey(event.keyCode); + }), + pluck('target', 'value'), + filter((value: string) => { + return this.isLengthValid(value.trim().length); + }) + ).subscribe((value: string) => { + this.applyQuery(value); + }); + } + private initI18nText(): void { + combineLatest( + this.translateService.get('MAIN.INPUT_APP_NAME_PLACE_HOLDER'), + this.translateService.get('MAIN.APP_LIST'), + this.translateService.get('MAIN.FAVORITE_APP_LIST'), + this.translateService.get('MAIN.SELECT_YOUR_APP'), + this.translateService.get('CONFIGURATION.GENERAL.EMPTY') + ).subscribe((i18n: string[]) => { + this.i18nText.INPUT_APPLICATION_NAME = i18n[0]; + this.i18nText.APPLICATION_LIST_TITLE = i18n[1]; + this.i18nText.FAVORITE_LIST_TITLE = i18n[2]; + this.i18nText.SELECTED_APPLICATION_NAME = i18n[3]; + this.i18nText.EMPTY_LIST = i18n[4]; + }); + } + + private refreshList(applicationList: IApplication[], favoriteList: IApplication[]): void { + this.applicationList = applicationList; + this.favoriteApplicationList = favoriteList; + this.filteredApplicationList = this.filterList(this.applicationList); + this.filteredFavoriteApplicationList = this.filterList(this.favoriteApplicationList); + this.maxIndex = this.filteredApplicationList.length + this.filteredFavoriteApplicationList.length; + } + + private selectApplication(application: IApplication): void { + if (application) { + this.selectedApplication = application; + this.changeDetector.detectChanges(); + } + } + + private filterList(appList: IApplication[]): IApplication[] { + if (this.filterStr === '') { + return appList; + } else { + return appList.filter((application: IApplication) => { + return new RegExp(this.filterStr, 'i').test(application.getApplicationName()); + }); + } + } + + private setFocusToInput(): void { + of(1).pipe(delay(0)).subscribe((v: number) => { + this.inputQuery.nativeElement.select(); + }); + } + + private applyQuery(query: string): void { + this.filterStr = query; + this.filteredFavoriteApplicationList = this.filterList(this.favoriteApplicationList); + this.filteredApplicationList = this.filterList(this.applicationList); + this.maxIndex = this.filteredApplicationList.length + this.filteredFavoriteApplicationList.length; + this.focusIndex = -1; + this.changeDetector.detectChanges(); + } + + getSelectedApplicationIcon(): string { + return this.funcImagePath(this.selectedApplication.getServiceType()); + } + + getSelectedApplicationName(): string { + if (this.selectedApplication) { + return this.selectedApplication.getApplicationName(); + } else { + return this.i18nText.SELECTED_APPLICATION_NAME; + } + } + + toggleApplicationList(): void { + this.hiddenComponent = !this.hiddenComponent; + if (this.hiddenComponent === false) { + this.setFocusToInput(); + } + } + + onClose(): void { + this.hiddenComponent = true; + } + + onSelectApplication(selectedApplication: IApplication): void { + this.hiddenComponent = true; + if (!selectedApplication.equals(this.selectedApplication)) { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.SELECT_APPLICATION); + this.urlRouteManagerService.changeApplication(selectedApplication.getUrlStr()); + this.selectApplication(selectedApplication); + } + } + + onFocused(index: number): void { + this.focusIndex = index; + this.focusType = FOCUS_TYPE.MOUSE; + this.changeDetector.detectChanges(); + } + + onKeyDown(keyCode: number): void { + if (!this.hiddenComponent) { + switch (keyCode) { + case 27: // ESC + this.renderer.setProperty(this.inputQuery.nativeElement, 'value', ''); + this.applyQuery(''); + this.hiddenComponent = true; + this.changeDetector.detectChanges(); + break; + case 13: // Enter + if (this.focusIndex !== -1) { + const favoriteLen = this.filteredFavoriteApplicationList.length; + if (favoriteLen === 0 || this.focusIndex > favoriteLen) { + this.onSelectApplication(this.filteredApplicationList[this.focusIndex - favoriteLen]); + } else { + this.onSelectApplication(this.filteredFavoriteApplicationList[this.focusIndex]); + } + this.changeDetector.detectChanges(); + } + break; + case 38: // ArrowUp + if (this.focusIndex - 1 >= 0) { + this.focusIndex -= 1; + this.focusType = FOCUS_TYPE.KEYBOARD; + this.changeDetector.detectChanges(); + } + break; + case 40: // ArrowDown + if (this.focusIndex + 1 < this.maxIndex) { + this.focusIndex += 1; + this.focusType = FOCUS_TYPE.KEYBOARD; + this.changeDetector.detectChanges(); + } + break; + } + } + } + + onReload(): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.CLICK_RELOAD_APPLICATION_LIST_BUTTON); + this.showLoading = false; + this.refreshList([], []); + this.applicationListDataService.getApplicationList().subscribe((applicationList: IApplication[]) => { + this.showLoading = true; + this.changeDetector.detectChanges(); + }); + } + + private isArrowKey(key: number): boolean { + return key >= 37 && key <= 40; + } + + private isLengthValid(length: number): boolean { + return length === 0 || length >= this.minLength; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-header.component.css b/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-header.component.css new file mode 100644 index 000000000000..60d2071c97ba --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-header.component.css @@ -0,0 +1,39 @@ +:host { + display: block; +} + +.l-application-list { + font-size: 13px; +} + +.l-application-list > dt { + padding: 12px; + background-color: #edf2f8; + color: #333; + font-weight: 600; +} +.l-item { + padding: 12px; + color: #666; + display: flex; + align-items: center; + cursor: pointer; +} +.l-item.active { + color: #FFF !important; + background-color: #4b99e3; +} +.l-item.active.focus { + background-color: #4b99e3; +} +.l-item.focus { + background-color: #e4f3eb; +} +.l-icon-img { + margin: 0 10px 0 0; +} +.l-text-ellipsis { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-header.component.html b/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-header.component.html new file mode 100644 index 000000000000..3a7a5b9ec4dd --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-header.component.html @@ -0,0 +1,12 @@ +
+
{{title}}
+
+ + {{app.getApplicationName()}} +
+
{{emptyText}}
+
diff --git a/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-header.component.ts b/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-header.component.ts new file mode 100644 index 000000000000..55ab8081f3b2 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-for-header.component.ts @@ -0,0 +1,73 @@ +import { Component, OnInit, OnChanges, SimpleChanges, Input, Output, EventEmitter, ViewChild, ElementRef } from '@angular/core'; + +export enum FOCUS_TYPE { + KEYBOARD, + MOUSE +} + +@Component({ + selector: 'pp-application-list-for-header', + templateUrl: './application-list-for-header.component.html', + styleUrls: ['./application-list-for-header.component.css'] +}) +export class ApplicationListForHeaderComponent implements OnInit, OnChanges { + @ViewChild('appList') ele: ElementRef; + @Input() showTitle: boolean; + @Input() title: string; + @Input() restCount: number; + @Input() focusIndex: number; + @Input() focusType: FOCUS_TYPE; + @Input() applicationList: IApplication[]; + @Input() selectedApplication: IApplication; + @Input() emptyText: string; + @Input() funcImagePath: Function; + @Output() outSelected: EventEmitter = new EventEmitter(); + @Output() outFocused: EventEmitter = new EventEmitter(); + private previousFocusIndex = -1; + + constructor() {} + ngOnInit() {} + ngOnChanges(changes: SimpleChanges) { + if (changes['focusIndex']) { + const eleIndex = this.focusIndex - this.restCount; + if (eleIndex >= 0 && eleIndex < this.applicationList.length && this.focusType === FOCUS_TYPE.KEYBOARD) { + this.ele.nativeElement.querySelectorAll('dd')[eleIndex].scrollIntoView({ + block: 'nearest', + inline: 'nearest', + behavior: 'instant' + }); + } + } + } + + private isSelectedApplication(app: IApplication): boolean { + return this.selectedApplication && this.selectedApplication.equals(app) ? true : false; + } + + getIconPath(serviceType: string): string { + return this.funcImagePath(serviceType); + } + + makeClass(index: number): { [key: string]: boolean } { + const app = this.applicationList[index - this.restCount]; + return { + active: this.isSelectedApplication(app), + focus: this.focusIndex === index + }; + } + + onFocus(index: number): void { + if (this.previousFocusIndex !== index) { + this.outFocused.emit(index); + this.previousFocusIndex = index; + } + } + + onSelectApplication(app: IApplication): void { + this.outSelected.emit(app); + } + + isListEmpty(): boolean { + return this.applicationList.length === 0; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-interaction-for-configuration.service.ts b/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-interaction-for-configuration.service.ts new file mode 100644 index 000000000000..fb98c67b27db --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-list/application-list-interaction-for-configuration.service.ts @@ -0,0 +1,16 @@ +import { Injectable } from '@angular/core'; +import { Observable, Subject } from 'rxjs'; + +@Injectable() +export class ApplicationListInteractionForConfigurationService { + private outSelectApplication = new Subject(); + onSelectApplication$: Observable; + + constructor() { + this.onSelectApplication$ = this.outSelectApplication.asObservable(); + } + setSelectedApplication(application: IApplication): void { + this.outSelectApplication.next(application); + } +} + diff --git a/web/src/main/webapp/v2/src/app/core/components/application-list/favorite-application-list-for-configuration-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/application-list/favorite-application-list-for-configuration-container.component.ts new file mode 100644 index 000000000000..0fd57f0f74c7 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-list/favorite-application-list-for-configuration-container.component.ts @@ -0,0 +1,46 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import { Observable, Subject } from 'rxjs'; + +import { WebAppSettingDataService, StoreHelperService } from 'app/shared/services'; + +@Component({ + selector: 'pp-favorite-application-list-for-configuration-container', + templateUrl: './application-list-for-configuration-container.component.html', + styleUrls: ['./application-list-for-configuration-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class FavoriteApplicationListForConfigurationContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + applicationList$: Observable; + emptyText$: Observable; + funcImagePath: Function; + iconBtnClassName = 'far fa-trash-alt'; + + constructor( + private storeHelperService: StoreHelperService, + private translateService: TranslateService, + private webAppSettingDataService: WebAppSettingDataService, + ) {} + + ngOnInit() { + this.initList(); + this.funcImagePath = this.webAppSettingDataService.getIconPathMakeFunc(); + this.initEmptyText(); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + + private initList(): void { + this.applicationList$ = this.storeHelperService.getFavoriteApplicationList(this.unsubscribe); + } + private initEmptyText(): void { + this.emptyText$ = this.translateService.get('CONFIGURATION.GENERAL.EMPTY'); + } + + onSelectApp(app: IApplication): void { + this.webAppSettingDataService.removeFavoriteApplication(app); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/application-list/index.ts b/web/src/main/webapp/v2/src/app/core/components/application-list/index.ts new file mode 100644 index 000000000000..c65cafbee2af --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-list/index.ts @@ -0,0 +1,39 @@ + +import { NgModule } from '@angular/core'; +import { MatTooltipModule } from '@angular/material'; +import { SharedModule } from 'app/shared'; + +import { ApplicationListForHeaderContainerComponent } from './application-list-for-header-container.component'; +import { ApplicationListForHeaderComponent } from './application-list-for-header.component'; +import { ApplicationListForConfigurationContainerComponent } from './application-list-for-configuration-container.component'; +import { ApplicationListForConfigurationComponent } from './application-list-for-configuration.component'; +import { FavoriteApplicationListForConfigurationContainerComponent } from './favorite-application-list-for-configuration-container.component'; +import { ApplicationListForConfigurationAlarmContainerComponent } from './application-list-for-configuration-alarm-container.component'; +import { ApplicationListInteractionForConfigurationService } from './application-list-interaction-for-configuration.service'; +import { ApplicationListDataService } from './application-list-data.service'; + +@NgModule({ + declarations: [ + ApplicationListForHeaderContainerComponent, + ApplicationListForHeaderComponent, + ApplicationListForConfigurationContainerComponent, + ApplicationListForConfigurationComponent, + FavoriteApplicationListForConfigurationContainerComponent, + ApplicationListForConfigurationAlarmContainerComponent + ], + imports: [ + MatTooltipModule, + SharedModule + ], + exports: [ + ApplicationListForHeaderContainerComponent, + ApplicationListForConfigurationContainerComponent, + FavoriteApplicationListForConfigurationContainerComponent, + ApplicationListForConfigurationAlarmContainerComponent + ], + providers: [ + ApplicationListInteractionForConfigurationService, + ApplicationListDataService + ] +}) +export class ApplicationListModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/application-name-issue-popup/application-name-issue-popup-container.component.css b/web/src/main/webapp/v2/src/app/core/components/application-name-issue-popup/application-name-issue-popup-container.component.css new file mode 100644 index 000000000000..838ad80020e3 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-name-issue-popup/application-name-issue-popup-container.component.css @@ -0,0 +1,5 @@ +:host { + display: block; + width: 300px; + border-radius: 3px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/application-name-issue-popup/application-name-issue-popup-container.component.html b/web/src/main/webapp/v2/src/app/core/components/application-name-issue-popup/application-name-issue-popup-container.component.html new file mode 100644 index 000000000000..d74bbf542726 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-name-issue-popup/application-name-issue-popup-container.component.html @@ -0,0 +1,6 @@ + + + \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/application-name-issue-popup/application-name-issue-popup-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/application-name-issue-popup/application-name-issue-popup-container.component.ts new file mode 100644 index 000000000000..1ec62a8d53dd --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-name-issue-popup/application-name-issue-popup-container.component.ts @@ -0,0 +1,83 @@ +import { Component, OnInit, ElementRef, AfterViewInit, Input, Output, EventEmitter, OnDestroy } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import { Observable, Subject } from 'rxjs'; +import { withLatestFrom, map, takeUntil } from 'rxjs/operators'; + +import { POPUP_CONSTANT } from 'app/core/components/application-name-issue-popup/application-name-issue-popup.component'; +import { DynamicPopup, TranslateReplaceService, NewUrlStateNotificationService } from 'app/shared/services'; +import { UrlPathId } from 'app/shared/models'; + +@Component({ + selector: 'pp-application-name-issue-popup-container', + templateUrl: './application-name-issue-popup-container.component.html', + styleUrls: ['./application-name-issue-popup-container.component.css'] +}) +export class ApplicationNameIssuePopupContainerComponent implements OnInit, OnDestroy, AfterViewInit, DynamicPopup { + @Input() data: {[key: string]: string}; + @Input() coord: ICoordinate; + @Output() outCreated = new EventEmitter(); + @Output() outClose = new EventEmitter(); + + private unsubscribe = new Subject(); + + data$: Observable<{[key: string]: any}>; + + constructor( + private elementRef: ElementRef, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private translateService: TranslateService, + private translateReplaceService: TranslateReplaceService, + ) {} + + ngOnInit() { + const urlApplicationName$ = this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe), + map((urlService: NewUrlStateNotificationService) => { + return urlService.getPathValue(UrlPathId.APPLICATION).getApplicationName(); + }) + ); + + this.data$ = this.translateService.get('INSPECTOR.APPLICAITION_NAME_ISSUE').pipe( + withLatestFrom(urlApplicationName$), + map(([message, urlAppName]: [{[key: string]: any}, string]) => { + const { agentId, applicationName } = this.data; + + return { + prevAppName: urlAppName, + currAppName: applicationName, + message: { + ISSUE_MESSAGE: this.translateReplaceService.replace(message['ISSUE_MESSAGE'], urlAppName, applicationName), + ISSUE_CAUSES: [ + this.translateReplaceService.replace(message['ISSUE_CAUSES'][0], urlAppName, applicationName), + this.translateReplaceService.replace(message['ISSUE_CAUSES'][1], agentId, applicationName) + ], + ISSUE_SOLUTIONS: [ + this.translateReplaceService.replace(message['ISSUE_SOLUTIONS'][0], urlAppName, agentId), + message['ISSUE_SOLUTIONS'][1] + ] + } + }; + }) + ); + } + + ngAfterViewInit() { + this.outCreated.emit({ + coordX: this.coord.coordX - (this.elementRef.nativeElement.offsetWidth / 2), + coordY: this.coord.coordY + POPUP_CONSTANT.SPACE_FROM_BUTTON + POPUP_CONSTANT.TOOLTIP_TRIANGLE_HEIGHT + }); + } + + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + + onInputChange(): void { + this.outClose.emit(); + } + + onClickOutside(): void { + this.outClose.emit(); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/application-name-issue-popup/application-name-issue-popup.component.css b/web/src/main/webapp/v2/src/app/core/components/application-name-issue-popup/application-name-issue-popup.component.css new file mode 100644 index 000000000000..a85534a09ce7 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-name-issue-popup/application-name-issue-popup.component.css @@ -0,0 +1,51 @@ +:host { + display: block; + width: 100%; +} + +:host::after { + content: ''; + width: 0; + height: 0; + position: absolute; + border-bottom: 7px solid #f6f8fb; + border-right: 7px solid transparent; + border-left: 7px solid transparent; + bottom: 100%; + left: 0; + right: 0; + margin: auto; +} + +.l-popup-title { + background-color: #f6f8fb; + border-bottom: 1px solid #e5e8f0; + padding:10px; + display: flex; + justify-content: space-evenly; + font-weight: 400; +} + +.l-popup-title span { + display: inline-block; +} + +.l-issue-message { + padding: 12px 15px 8px 15px; + font-size: 13px; +} + +.l-cause-list { + padding: 0 12px 12px; + font-size: 13px; + border-bottom: 1px solid #e5e8f0; +} + +.l-cause-list-item, .l-solution-list-item { + padding: 3px; +} + +.l-solution-list { + padding: 12px; + font-size: 13px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/application-name-issue-popup/application-name-issue-popup.component.html b/web/src/main/webapp/v2/src/app/core/components/application-name-issue-popup/application-name-issue-popup.component.html new file mode 100644 index 000000000000..b6fdf2692baf --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-name-issue-popup/application-name-issue-popup.component.html @@ -0,0 +1,12 @@ +

+ {{data.prevAppName}} + + {{data.currAppName}} +

+

+
    +
  • {{cause}}
  • +
+
    +
  • {{solution}}
  • +
diff --git a/web/src/main/webapp/v2/src/app/core/components/application-name-issue-popup/application-name-issue-popup.component.ts b/web/src/main/webapp/v2/src/app/core/components/application-name-issue-popup/application-name-issue-popup.component.ts new file mode 100644 index 000000000000..3a4bcebb8c13 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-name-issue-popup/application-name-issue-popup.component.ts @@ -0,0 +1,18 @@ +import { Component, OnInit, Input } from '@angular/core'; + +export const enum POPUP_CONSTANT { + TOOLTIP_TRIANGLE_HEIGHT = 7, // 툴팁 삼각형 높이 + SPACE_FROM_BUTTON = 10 // 클릭한 버튼에서 살짝 떨어뜨려줄 길이 +} + +@Component({ + selector: 'pp-application-name-issue-popup', + templateUrl: './application-name-issue-popup.component.html', + styleUrls: ['./application-name-issue-popup.component.css'] +}) +export class ApplicationNameIssuePopupComponent implements OnInit { + @Input() data: {[key: string]: any}; + + constructor() {} + ngOnInit() {} +} diff --git a/web/src/main/webapp/v2/src/app/core/components/application-name-issue-popup/index.ts b/web/src/main/webapp/v2/src/app/core/components/application-name-issue-popup/index.ts new file mode 100644 index 000000000000..c0269dd85168 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/application-name-issue-popup/index.ts @@ -0,0 +1,21 @@ +import { NgModule } from '@angular/core'; + +import { SharedModule } from 'app/shared'; +import { ApplicationNameIssuePopupContainerComponent } from 'app/core/components/application-name-issue-popup/application-name-issue-popup-container.component'; +import { ApplicationNameIssuePopupComponent } from 'app/core/components/application-name-issue-popup/application-name-issue-popup.component'; + +@NgModule({ + declarations: [ + ApplicationNameIssuePopupContainerComponent, + ApplicationNameIssuePopupComponent + ], + imports: [ + SharedModule + ], + exports: [], + entryComponents: [ + ApplicationNameIssuePopupContainerComponent, + ], + providers: [], +}) +export class ApplicationNameIssuePopupModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/authentication-list/authentication-list-container.component.css b/web/src/main/webapp/v2/src/app/core/components/authentication-list/authentication-list-container.component.css new file mode 100644 index 000000000000..9fcef31ebc91 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/authentication-list/authentication-list-container.component.css @@ -0,0 +1,25 @@ +.authentication-rules-table th .flex-container { + height: 47px; + justify-content: space-between; + display: flex; + align-items: center; +} +.authentication-rules-tr-wrap { + height: 170px; + overflow-y: scroll; + position: relative; +} +.authentication-rules-tr { + display: flex; + height: 30px; + align-items: center; + padding: 0 15px; + position: relative; +} +.authentication-rules-tr-th { + color: #777879; + font-weight: 600; + border-bottom: 1px solid #e6e8ec; + background: #fff; + margin: 0 -21px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/authentication-list/authentication-list-container.component.html b/web/src/main/webapp/v2/src/app/core/components/authentication-list/authentication-list-container.component.html new file mode 100644 index 000000000000..dac0d39174f7 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/authentication-list/authentication-list-container.component.html @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/authentication-list/authentication-list-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/authentication-list/authentication-list-container.component.ts new file mode 100644 index 000000000000..08c96197b2dd --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/authentication-list/authentication-list-container.component.ts @@ -0,0 +1,11 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'pp-authentication-list-container', + templateUrl: './authentication-list-container.component.html', + styleUrls: ['./authentication-list-container.component.css'] +}) +export class AuthenticationListContainerComponent implements OnInit { + constructor() { } + ngOnInit() {} +} diff --git a/web/src/main/webapp/v2/src/app/core/components/authentication-list/authentication-list.component.css b/web/src/main/webapp/v2/src/app/core/components/authentication-list/authentication-list.component.css new file mode 100644 index 000000000000..f2598cf57fe0 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/authentication-list/authentication-list.component.css @@ -0,0 +1,22 @@ +.authentication-rules-tr { + display: flex; + height: 30px; + align-items: center; + padding: 0 15px; + position:relative; +} +.authentication-rules-btn-group { + color: #b3b6bf; + font-size: 13px; + align-items: center; + justify-content: flex-end; +} +.authentication-rules-btn-group button { + margin-left: 11px; +} +.authentication-rules-btn-group button.img-icon { + line-height: 0; +} +.authentication-rules-btn-group button:first-child { + margin-left: 0; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/authentication-list/authentication-list.component.html b/web/src/main/webapp/v2/src/app/core/components/authentication-list/authentication-list.component.html new file mode 100644 index 000000000000..5acb9dbd88fa --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/authentication-list/authentication-list.component.html @@ -0,0 +1,15 @@ +
+
GUEST
+
GUEST
+
+ + + +
+
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/authentication-list/authentication-list.component.ts b/web/src/main/webapp/v2/src/app/core/components/authentication-list/authentication-list.component.ts new file mode 100644 index 000000000000..c730e4f6962c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/authentication-list/authentication-list.component.ts @@ -0,0 +1,11 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'pp-authentication-list', + templateUrl: './authentication-list.component.html', + styleUrls: ['./authentication-list.component.css'] +}) +export class AuthenticationListComponent implements OnInit { + constructor() { } + ngOnInit() {} +} diff --git a/web/src/main/webapp/v2/src/app/core/components/authentication-list/index.ts b/web/src/main/webapp/v2/src/app/core/components/authentication-list/index.ts new file mode 100644 index 000000000000..7e2bfdbe5b01 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/authentication-list/index.ts @@ -0,0 +1,21 @@ + +import { NgModule } from '@angular/core'; +import { SharedModule } from 'app/shared'; +import { AuthenticationListComponent } from './authentication-list.component'; +import { AuthenticationListContainerComponent } from './authentication-list-container.component'; + + +@NgModule({ + declarations: [ + AuthenticationListComponent, + AuthenticationListContainerComponent, + ], + imports: [ + SharedModule + ], + exports: [ + AuthenticationListContainerComponent, + ], + providers: [] +}) +export class AuthenticationListModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/call-tree/call-tree-container.component.css b/web/src/main/webapp/v2/src/app/core/components/call-tree/call-tree-container.component.css new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/web/src/main/webapp/v2/src/app/core/components/call-tree/call-tree-container.component.html b/web/src/main/webapp/v2/src/app/core/components/call-tree/call-tree-container.component.html new file mode 100644 index 000000000000..0df383565773 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/call-tree/call-tree-container.component.html @@ -0,0 +1,11 @@ + diff --git a/web/src/main/webapp/v2/src/app/core/components/call-tree/call-tree-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/call-tree/call-tree-container.component.ts new file mode 100644 index 000000000000..a5078e9a0bad --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/call-tree/call-tree-container.component.ts @@ -0,0 +1,194 @@ +import { Component, Input, OnInit, AfterViewInit, OnDestroy, ViewChild, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core'; +import { Observable, Subject } from 'rxjs'; +import { takeUntil, filter } from 'rxjs/operators'; + +import { Actions } from 'app/shared/store'; +import { + StoreHelperService, + NewUrlStateNotificationService, + TransactionViewTypeService, + VIEW_TYPE, + AnalyticsService, + TRACKED_EVENT_LIST, + DynamicPopupService +} from 'app/shared/services'; +import { UrlPathId } from 'app/shared/models'; +import { TransactionSearchInteractionService, ISearchParam } from 'app/core/components/transaction-search/transaction-search-interaction.service'; +import { IGridData } from './call-tree.component'; +import { CallTreeComponent } from './call-tree.component'; +import { MessagePopupContainerComponent } from 'app/core/components/message-popup/message-popup-container.component'; +import { SyntaxHighlightPopupContainerComponent } from 'app/core/components/syntax-highlight-popup/syntax-highlight-popup-container.component'; + +@Component({ + selector: 'pp-call-tree-container', + templateUrl: './call-tree-container.component.html', + styleUrls: ['./call-tree-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class CallTreeContainerComponent implements OnInit, OnDestroy, AfterViewInit { + @ViewChild(CallTreeComponent) private callTreeComponent: CallTreeComponent; + @Input() canSelectRow = false; + @Input() rowSelection = 'multiple'; + private unsubscribe: Subject = new Subject(); + timezone$: Observable; + dateFormat$: Observable; + ratio: number; + searchSelfTime: number; + hiddenComponent = true; + transactionInfo: ITransactionMetaData; + callTreeOriginalData: ITransactionDetailData; + callTreeData: IGridData[]; + constructor( + private changeDetectorRef: ChangeDetectorRef, + private storeHelperService: StoreHelperService, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private transactionSearchInteractionService: TransactionSearchInteractionService, + private transactionViewTypeService: TransactionViewTypeService, + private analyticsService: AnalyticsService, + private dynamicPopupService: DynamicPopupService + ) {} + ngOnInit() { + this.transactionViewTypeService.onChangeViewType$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((viewType: string) => { + if ( viewType === VIEW_TYPE.CALL_TREE ) { + this.hiddenComponent = false; + } else { + this.hiddenComponent = true; + } + this.changeDetectorRef.detectChanges(); + }); + this.connectStore(); + this.transactionSearchInteractionService.onSearch$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((params: ISearchParam) => { + if (this.hiddenComponent === true) { + return; + } + this.transactionSearchInteractionService.setSearchResult({ + type: params.type, + query: params.query, + result: this.callTreeComponent.searchRow(params) + }); + }); + } + ngAfterViewInit() { + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((urlService: NewUrlStateNotificationService) => { + if (urlService.hasValue(UrlPathId.SEARCH_ID)) { + const searchId = urlService.getPathValue(UrlPathId.SEARCH_ID); + if (searchId !== '' && this.hiddenComponent === false) { + this.callTreeComponent.moveRow(searchId); + } + } + }); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private connectStore(): void { + this.timezone$ = this.storeHelperService.getTimezone(); + this.dateFormat$ = this.storeHelperService.getDateFormat(this.unsubscribe, 2); + this.storeHelperService.getTransactionDetailData(this.unsubscribe).pipe( + filter((transactionDetailInfo: ITransactionDetailData) => { + return transactionDetailInfo && transactionDetailInfo.transactionId ? true : false; + }) + ).subscribe((transactionDetailInfo: ITransactionDetailData) => { + this.ratio = this.calcTimeRatio(transactionDetailInfo.callStack[0][transactionDetailInfo.callStackIndex.begin], transactionDetailInfo.callStack[0][transactionDetailInfo.callStackIndex.end]); + this.callTreeOriginalData = transactionDetailInfo; + this.callTreeData = this.makeGridData(transactionDetailInfo.callStack, transactionDetailInfo.callStackIndex); + this.changeDetectorRef.detectChanges(); + }); + } + private calcTimeRatio(begin: number, end: number): number { + return 100 / (end - begin); + } + private makeGridData(callTreeData: any, oIndex: any): IGridData[] { + const newData = []; + const parentRef = {}; + for ( let i = 0 ; i < callTreeData.length ; i++ ) { + const callTree = callTreeData[i]; + const oRow = {}; + parentRef[callTree[oIndex.id]] = oRow; + this.makeRow(callTree, oIndex, oRow, i); + if ( callTree[oIndex.parentId] ) { + const oParentRow = parentRef[callTree[oIndex.parentId]]; + if ( oParentRow.children instanceof Array === false ) { + oParentRow['folder'] = true; + oParentRow['open'] = true; + oParentRow['children'] = []; + } + oParentRow.children.push(oRow); + } else { + newData.push(oRow); + } + } + return newData; + } + private makeRow(callTree: any, oIndex: any, oRow: IGridData, index: number): void { + oRow['index'] = index; + oRow['id'] = callTree[oIndex.id]; + oRow['method'] = callTree[oIndex.title]; + oRow['argument'] = callTree[oIndex.arguments]; + oRow['startTime'] = callTree[oIndex.begin]; + oRow['gap'] = callTree[oIndex.gap]; + oRow['exec'] = callTree[oIndex.elapsedTime]; + oRow['execPer'] = callTree[oIndex.elapsedTime] ? Math.ceil((callTree[oIndex.end] - callTree[oIndex.begin]) * this.ratio) : ''; + oRow['selp'] = callTree[oIndex.executionMilliseconds]; + oRow['selpPer'] = callTree[oIndex.elapsedTime] && callTree[oIndex.executionMilliseconds] ? + ( Math.floor( callTree[oIndex.executionMilliseconds].replace(/,/gi, '') ) / Math.floor( callTree[oIndex.elapsedTime].replace(/,/gi, '') ) ) * 100 + : 0; + oRow['clazz'] = callTree[oIndex.simpleClassName]; + oRow['api'] = callTree[oIndex.apiType]; + oRow['agent'] = callTree[oIndex.agent]; + oRow['application'] = callTree[oIndex.applicationName]; + oRow['isMethod'] = callTree[oIndex.isMethod]; + oRow['methodType'] = callTree[oIndex.methodType]; + oRow['hasException'] = callTree[oIndex.hasException]; + oRow['isAuthorized'] = callTree[oIndex.isAuthorized]; + oRow['isFocused'] = callTree[oIndex.isFocused]; + if ( callTree[oIndex.hasChild] === true ) { + oRow['folder'] = true; + oRow['open'] = true; + oRow['children'] = []; + } + } + outSelectFormatting(info: any): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.SELECT_SQL); + const nextRowData = this.callTreeOriginalData.callStack[info.index + 1]; + const nextValue = nextRowData[this.callTreeOriginalData.callStackIndex.title]; + let bindValue; + + if (nextRowData && (nextValue === 'SQL-BindValue' || nextValue === 'JSON-BindValue')) { + bindValue = nextRowData[this.callTreeOriginalData.callStackIndex.arguments]; + } + + this.dynamicPopupService.openPopup({ + data: { + type: info.type, + originalContents: info.formatText, + bindValue + }, + component: SyntaxHighlightPopupContainerComponent + }); + } + onRowSelected(rowData: IGridData): void { + if (rowData.startTime !== 0) { + this.storeHelperService.dispatch(new Actions.ChangeHoverOnInspectorCharts({ + index: -1, + time: rowData.startTime + })); + } + } + onCellDoubleClicked(contents: string): void { + this.dynamicPopupService.openPopup({ + data: { + title: 'Contents', + contents + }, + component: MessagePopupContainerComponent + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/call-tree/call-tree.component.css b/web/src/main/webapp/v2/src/app/core/components/call-tree/call-tree.component.css new file mode 100644 index 000000000000..97545b71bb14 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/call-tree/call-tree.component.css @@ -0,0 +1,97 @@ +#callTree .ag-root { + border: none; + font-size: 12px; + font-family: 'Open Sans', sans-serif; +} +#callTree .ag-cell { + padding: 4px; + border-right: 1px solid #e6e8ec; + font-family: 'Open Sans', sans-serif; +} + +#callTree .ag-column-moving .ag-cell { + transition: left 0.2s; +} +#callTree .ag-header-cell-moving .ag-header-cell-label { + opacity: 0; + filter: alpha(opacity=0); +} +#callTree .ag-header-cell-moving { + background-color: #bebebe; +} +#callTree .ag-header-cell-moving-clone { + border-right: 1px solid #808080; + border-left: 1px solid #808080; + background-color: rgba(220,220,220,0.8); +} +#callTree .ag-header { + background: #f6f8fb; + border-bottom: 1px solid #e6e8ec; + line-height: 2; +} +#callTree .ag-header-cell { + font-size: 12px; + font-weight: 600; + font-family: 'Open Sans', sans-serif; + border-right: 1px solid #e6e8ec; + padding-left: 2px; + padding-right: 2px; +} +#callTree .ag-header-cell:first-child { + border-right: none; +} +#callTree .ag-header-cell-resize:after { + border-right: none; +} +#callTree .ag-header-cell-label { + padding: 4px; +} +#callTree .ag-group-expanded span { + margin-right: 4px; +} +#callTree .ag-row { + line-height: 2; +} +#callTree .ag-row-exception { + background-color: #fff1f1; +} +#callTree .ag-row-focused { + background-color: #e4f5e3; +} +#callTree .ag-body { + background-color: #ffffff; +} +#callTree .ag-body-viewport { + background-color: #ffffff; +} +#callTree .ag-menu { + background-color: #ffffff; + border: 1px solid grey; +} +#callTree .fa { + font-size: 14px; +} +#callTree .ag-row-focused { + background-color: #e4f5e3; +} +#callTree .ag-row-selected { + color: #4a8fd2; + background-color: #e7f5f9; +} +#callTree .div-percent-bar { + display: inline-block; + height: 30%; + position: absolute; +} +#callTree .div-percent-value { + position: absolute; + padding-left: 4px; + font-weight: bold; + font-size: 13px; +} +#callTree .div-outer-div { + display: inline-block; + margin-right: 20px; + height: 30%; + width: 92%; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/call-tree/call-tree.component.html b/web/src/main/webapp/v2/src/app/core/components/call-tree/call-tree.component.html new file mode 100644 index 000000000000..dd066e77dc3c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/call-tree/call-tree.component.html @@ -0,0 +1,8 @@ + + diff --git a/web/src/main/webapp/v2/src/app/core/components/call-tree/call-tree.component.ts b/web/src/main/webapp/v2/src/app/core/components/call-tree/call-tree.component.ts new file mode 100644 index 000000000000..6c940ab49d8b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/call-tree/call-tree.component.ts @@ -0,0 +1,344 @@ +import { Component, Input, Output, ViewEncapsulation, EventEmitter, OnInit, OnChanges, SimpleChanges } from '@angular/core'; +import * as moment from 'moment-timezone'; +import { GridOptions, RowNode } from 'ag-grid'; +import { WindowRefService } from 'app/shared/services'; + +export interface IGridData { + index: number; + method: string; + argument: string; + startTime: number; + gap: number; + exec: number; + execPer: number | string; + selp: number; + selpPer: number; + clazz: string; + api: string; + agent: string; + application: string; + isMethod: boolean; + methodType: string; + hasException: boolean; + isAuthorized: boolean; + isFocused: boolean; + folder?: boolean; + open?: boolean; + children?: any[]; +} + +@Component({ + selector: 'pp-call-tree', + templateUrl: './call-tree.component.html', + styleUrls: ['./call-tree.component.css'], + encapsulation: ViewEncapsulation.None +}) +export class CallTreeComponent implements OnInit, OnChanges { + gridOptions: GridOptions; + previousColor: string; + @Input() canSelectRow: boolean; + @Input() rowSelection: string; + @Input() rowData: IGridData[]; + @Input() timezone: string; + @Input() dateFormat: string; + @Output() outSelectFormatting: EventEmitter = new EventEmitter(); + @Output() outRowSelected: EventEmitter = new EventEmitter(); + @Output() outCellDoubleClicked: EventEmitter = new EventEmitter(); + + constructor(private windowRefService: WindowRefService) {} + ngOnInit() { + this.initGridOptions(); + } + ngOnChanges(changes: SimpleChanges) { + if (changes['timezone'] && changes['timezone'].firstChange === false) { + this.gridOptions.api.refreshCells({ + columns: ['startTime'], + force: true + }); + } + if (changes['dateFormat'] && changes['dateFormat'].firstChange === false) { + this.gridOptions.api.refreshCells({ + columns: ['startTime'], + force: true + }); + } + } + private initGridOptions() { + this.gridOptions = { + columnDefs : this.makeColumnDefs(), + headerHeight: 34, + enableColResize: true, + enableSorting: false, + animateRows: true, + rowHeight: 30, + getRowClass: (params: any) => { + if ( params.data.isFocused ) { + return 'ag-row-focused'; + } else if ( params.data.hasException ) { + return 'ag-row-exception'; + } else { + return ''; + } + }, + getNodeChildDetails: (file) => { + if (file.folder) { + return { + group: true, + children: file.children, + expanded: file.open + }; + } else { + return null; + } + }, + onRowClicked: (params: any) => { + if (this.canSelectRow) { + params.node.setSelected(true); + this.outRowSelected.emit(params.data); + } + }, + suppressRowClickSelection: !this.canSelectRow, + rowSelection: this.rowSelection + }; + } + private calcColor(str: string): string { + if ( str ) { + let hash = 0; + let colour = '#'; + for ( let i = 0 ; i < str.length ; i++ ) { + hash = str.charCodeAt(i) + ((hash << 5) - hash); + } + for ( let i = 0 ; i < 3 ; i++ ) { + colour += ('00' + ((hash >> i * 8) & 0xFF).toString(16)).slice(-2); + } + this.previousColor = colour; + } + return this.previousColor; + } + private makeColumnDefs(): any { + return [ + { + headerName: '', + field: 'agent', + width: 10, + minWidth: 10, + maxWidth: 10, + cellStyle: (params: any) => { + return { backgroundColor: this.calcColor(params.value) }; + }, + cellRenderer: (params: any) => { + return ''; + } + }, + { + headerName: 'Method', + field: 'method', + width: 350, + cellRenderer: 'group', + cellRendererParams: { + innerRenderer: this.innerCellRenderer, + suppressCount: true + }, + tooltipField: 'method' + }, + { + headerName: 'Argument', + field: 'argument', + width: 250, + cellStyle: this.argumentCellStyle, + tooltipField: 'argument' + }, + { + headerName: 'StartTime', + field: 'startTime', + width: 170, + valueFormatter: (params: any) => { + return params.value === 0 ? '' : moment(params.value).tz(this.timezone).format(this.dateFormat); + } + }, + { + headerName: 'Gap(ms)', + field: 'gap', + width: 75, + cellStyle: this.alignRightCellStyle, + valueFormatter: (params: any) => { + return params.value === '' ? '' : new Intl.NumberFormat().format(params.value); + } + }, + { + headerName: 'Exec(ms)', + field: 'exec', + width: 78, + cellStyle: this.alignRightCellStyle, + valueFormatter: (params: any) => { + return params.value === '' ? '' : new Intl.NumberFormat().format(params.value); + } + }, + { + headerName: 'Exec(%)', + field: 'execPer', + width: 100, + minWidth: 100, + maxWidth: 100, + cellRenderer: (params: any) => { + if ( params.value === '' ) { + return ''; + } + const adjustRatio = 0.92; + const value = params.value; + const eDivPercentBar = this.windowRefService.nativeWindow.document.createElement('div'); + eDivPercentBar.className = 'div-percent-bar'; + eDivPercentBar.style.width = (value * adjustRatio) + '%'; + eDivPercentBar.style.top = '10px'; + eDivPercentBar.style.backgroundColor = '#5bc0de'; + const eDivSelfBar = this.windowRefService.nativeWindow.document.createElement('div'); + eDivSelfBar.className = 'div-percent-bar'; + eDivSelfBar.style.height = '18%'; + eDivSelfBar.style.top = '12px'; + if ( params.data.selpPer ) { + eDivSelfBar.style.width = (((value * params.data.selpPer) / 100) * adjustRatio) + '%'; + } else { + eDivSelfBar.style.width = '0%'; + } + eDivSelfBar.style.backgroundColor = '#4343C8'; + const eOuterDiv = this.windowRefService.nativeWindow.document.createElement('div'); + eOuterDiv.className = 'div-outer-div'; + eOuterDiv.appendChild(eDivPercentBar); + eOuterDiv.appendChild(eDivSelfBar); + return eOuterDiv; + } + }, + { + headerName: 'Self(ms)', + field: 'selp', + width: 78, + cellStyle: this.alignRightCellStyle, + valueFormatter: function(params: any) { + return params.value === '' ? '' : new Intl.NumberFormat().format(params.value); + } + }, + { + headerName: 'Class', + field: 'clazz', + width: 150, + tooltipField: 'clazz' + }, + { + headerName: 'API', + field: 'api', + width: 150, + tooltipField: 'api' + }, + { + headerName: 'Agent', + field: 'agent', + width: 150, + tooltipField: 'agent' + }, + { + headerName: 'Application', + field: 'application', + width: 150, + tooltipField: 'application' + } + ]; + } + argumentCellStyle(): any { + return {'text-align': 'left'}; + } + alignRightCellStyle(): any { + return {'text-align': 'right'}; + } + timeFormatter(params: any): string { + return params.value === 0 ? '' : moment(params.value).tz(this.timezone).format(this.dateFormat); + } + numberFormatter(params: any): string { + return params.value === '' ? '' : new Intl.NumberFormat().format(params.value); + } + innerCellRenderer(params: any) { + let result = ''; + if ( params.data.hasException) { + result += ' '; + } else if (!params.data.isMethod) { + if ( params.data.method === 'SQL' || params.data.method === 'JSON' ) { + result += ' '; + return ' ' + result; + } else { + result += ' '; + } + } else { + const itemMethodType = +params.data.methodType; + switch ( itemMethodType ) { + case 100: + result += ' '; + break; + case 200: + result += ' '; + break; + case 900: + result += ' '; + break; + } + } + return ' ' + result + params.data.method; + } + onCellClick(params: any): void { + if ( params.colDef.field === 'method' && (params.value === 'SQL' || params.value === 'JSON') ) { + this.outSelectFormatting.next({ + type: params.value, + formatText: params.data.argument, + index: params.data.index + }); + } + } + onCellDoubleClicked(params: any): void { + this.outCellDoubleClicked.next(params.data[params.colDef.field]); + } + searchRow({type, query}: {type: string, query: string | number}): number { + let resultCount = 0; + let targetIndex = -1; + const fnCompare: { [key: string]: Function } = { + 'all': (data: any, value: string): boolean => { + return (data.method && data.method.indexOf(value) !== -1) || + (data.argument && data.argument.indexOf(value) !== -1) || + (data.clazz && data.clazz.indexOf(value) !== -1) || + (data.api && data.api.indexOf(value) !== -1) || + (data.agent && data.agent.indexOf(value) !== -1) || + (data.application && data.application.indexOf(value) !== -1); + }, + 'self': (data: any, value: number): boolean => { + return +data.selp >= +value; + }, + 'argument': (data: any, value: string): boolean => { + return data.argument.indexOf(value) !== -1; + } + }; + this.gridOptions.api.forEachNode((rowNode: RowNode) => { + if (fnCompare[type](rowNode.data, query)) { + if (resultCount === 0) { + targetIndex = rowNode.data.index; + } + resultCount++; + rowNode.setSelected(true); + } else { + rowNode.setSelected(false); + } + }); + if (resultCount > 0) { + this.gridOptions.api.ensureIndexVisible(targetIndex, 'top'); + } + return resultCount; + } + moveRow(id: string): void { + let targetIndex = -1; + this.gridOptions.api.forEachNode((rowNode: RowNode) => { + if (rowNode.data.id === id) { + targetIndex = rowNode.data.index; + rowNode.setSelected(true); + } else { + rowNode.setSelected(false); + } + }); + this.gridOptions.api.ensureIndexVisible(targetIndex, 'top'); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/call-tree/index.ts b/web/src/main/webapp/v2/src/app/core/components/call-tree/index.ts new file mode 100644 index 000000000000..b4677910870f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/call-tree/index.ts @@ -0,0 +1,27 @@ + +import { NgModule } from '@angular/core'; +import { AgGridModule } from 'ag-grid-angular/main'; + +import { SharedModule } from 'app/shared'; +import { CallTreeComponent } from './call-tree.component'; +import { CallTreeContainerComponent } from './call-tree-container.component'; +import { MessagePopupModule } from 'app/core/components/message-popup'; +import { SyntaxHighlightPopupModule } from 'app/core/components/syntax-highlight-popup'; + +@NgModule({ + declarations: [ + CallTreeComponent, + CallTreeContainerComponent + ], + imports: [ + SharedModule, + AgGridModule.withComponents([]), + MessagePopupModule, + SyntaxHighlightPopupModule + ], + exports: [ + CallTreeContainerComponent + ], + providers: [] +}) +export class CallTreeModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/command-group/command-group-container.component.css b/web/src/main/webapp/v2/src/app/core/components/command-group/command-group-container.component.css new file mode 100644 index 000000000000..e7a72018d679 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/command-group/command-group-container.component.css @@ -0,0 +1,3 @@ +:host { + display: flex; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/command-group/command-group-container.component.html b/web/src/main/webapp/v2/src/app/core/components/command-group/command-group-container.component.html new file mode 100644 index 000000000000..5594dd47ce9c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/command-group/command-group-container.component.html @@ -0,0 +1,3 @@ + + diff --git a/web/src/main/webapp/v2/src/app/core/components/command-group/command-group-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/command-group/command-group-container.component.ts new file mode 100644 index 000000000000..59e791b7a65e --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/command-group/command-group-container.component.ts @@ -0,0 +1,25 @@ +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; + +import { AnalyticsService, TRACKED_EVENT_LIST, DynamicPopupService } from 'app/shared/services'; +import { ConfigurationPopupContainerComponent } from 'app/core/components/configuration-popup/configuration-popup-container.component'; + +@Component({ + selector: 'pp-command-group-container', + templateUrl: './command-group-container.component.html', + styleUrls: ['./command-group-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class CommandGroupContainerComponent implements OnInit { + constructor( + private dynamicPopupService: DynamicPopupService, + private analyticsService: AnalyticsService, + ) {} + + ngOnInit() {} + onOpenConfigurationPopup(): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.OPEN_CONFIGURATION_POPUP); + this.dynamicPopupService.openPopup({ + component: ConfigurationPopupContainerComponent + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/command-group/command-group.component.css b/web/src/main/webapp/v2/src/app/core/components/command-group/command-group.component.css new file mode 100644 index 000000000000..56e7b9de4b5e --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/command-group/command-group.component.css @@ -0,0 +1,21 @@ +:host { + display: flex; +} + +button { + outline: none; +} + +.fa-cog, .fa-github { + font-size: 18px; +} +.l-tool-group { + width:100px; + display: flex; + justify-content: center; + color:#fff; + font-size: 18px; +} +.l-tool-group button { + margin:0 8px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/command-group/command-group.component.html b/web/src/main/webapp/v2/src/app/core/components/command-group/command-group.component.html new file mode 100644 index 000000000000..b8cfc00a61c9 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/command-group/command-group.component.html @@ -0,0 +1,4 @@ +
+ + +
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/command-group/command-group.component.ts b/web/src/main/webapp/v2/src/app/core/components/command-group/command-group.component.ts new file mode 100644 index 000000000000..a30ec31b6b6a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/command-group/command-group.component.ts @@ -0,0 +1,21 @@ +import { Component, OnInit, Output, EventEmitter } from '@angular/core'; +/** + * 도움말, 설정, repository 링크등을 제공하는 Component + */ +@Component({ + selector: 'pp-command-group', + templateUrl: './command-group.component.html', + styleUrls: ['./command-group.component.css'] +}) +export class CommandGroupComponent implements OnInit { + @Output() outOpenConfigurationPopup: EventEmitter = new EventEmitter(); + + constructor() {} + ngOnInit() {} + onOpenConfigurationPopup(): void { + this.outOpenConfigurationPopup.emit(); + } + onOpenRepository(): void { + window.open('http://github.com/naver/pinpoint'); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/command-group/index.ts b/web/src/main/webapp/v2/src/app/core/components/command-group/index.ts new file mode 100644 index 000000000000..c52a61e01a26 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/command-group/index.ts @@ -0,0 +1,23 @@ + +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { CommandGroupComponent } from './command-group.component'; +import { CommandGroupContainerComponent } from './command-group-container.component'; +import { ConfigurationPopupModule } from 'app/core/components/configuration-popup'; + +@NgModule({ + declarations: [ + CommandGroupComponent, + CommandGroupContainerComponent + ], + imports: [ + CommonModule, + ConfigurationPopupModule + ], + exports: [ + CommandGroupContainerComponent + ], + providers: [] +}) +export class CommandGroupModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-alarm.component.css b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-alarm.component.css new file mode 100644 index 000000000000..64b7eff11466 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-alarm.component.css @@ -0,0 +1,11 @@ +.l-content-section { + display: flex; + padding: 30px 0 0; +} +.l-content-item { + flex:1; + margin-right: 20px; +} +.l-content-item2 { + flex:2; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-alarm.component.html b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-alarm.component.html new file mode 100644 index 000000000000..dec0eccb5d89 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-alarm.component.html @@ -0,0 +1,8 @@ +
+
+ +
+
+ +
+
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-alarm.component.ts b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-alarm.component.ts new file mode 100644 index 000000000000..098cd6729e51 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-alarm.component.ts @@ -0,0 +1,12 @@ +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; + +@Component({ + selector: 'pp-configuration-popup-alarm', + templateUrl: './configuration-popup-alarm.component.html', + styleUrls: ['./configuration-popup-alarm.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ConfigurationPopupAlarmComponent implements OnInit { + constructor() {} + ngOnInit() {} +} diff --git a/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-container.component.css b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-container.component.css new file mode 100644 index 000000000000..3c6a97654ec4 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-container.component.css @@ -0,0 +1,18 @@ +:host { + display: block; + background-color: transparent; + width: 100%; + height: 100%; +} + +:host::before { + content: ''; + display: block; + height: 100%; + width: 100%; + background: #000; + opacity: 0.6; + position: absolute; + left: 0; + top: 0; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-container.component.html b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-container.component.html new file mode 100644 index 000000000000..b47b78a8f04d --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-container.component.html @@ -0,0 +1 @@ + diff --git a/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-container.component.ts new file mode 100644 index 000000000000..eeb9fc56e3e4 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-container.component.ts @@ -0,0 +1,31 @@ +import { Component, OnInit, Output, EventEmitter, AfterViewInit } from '@angular/core'; + +import { WebAppSettingDataService, DynamicPopup } from 'app/shared/services'; + +@Component({ + selector: 'pp-configuration-popup-container', + templateUrl: './configuration-popup-container.component.html', + styleUrls: ['./configuration-popup-container.component.css'] +}) +export class ConfigurationPopupContainerComponent implements OnInit, AfterViewInit, DynamicPopup { + @Output() outClose = new EventEmitter(); + @Output() outCreated = new EventEmitter(); + + funcImagePath: Function; + + constructor( + private webAppSettingDataService: WebAppSettingDataService, + ) {} + + ngOnInit() { + this.funcImagePath = this.webAppSettingDataService.getIconPathMakeFunc(); + } + + ngAfterViewInit() { + this.outCreated.emit({ coordX: 0, coordY: 0 }); + } + + onClosePopup(): void { + this.outClose.emit(); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-general-container.component.css b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-general-container.component.css new file mode 100644 index 000000000000..69c16a21ef1a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-general-container.component.css @@ -0,0 +1,78 @@ +:host { + display: block; + padding: 25px 10px 0; +} + +.l-desc-text-wrapper { + margin-bottom: 25px; +} + +.l-desc-text { + color: #999; + font-size: 14px; +} + +.l-popup-table { + border: 1px solid #e5e8f0; + width: 100%; + background-color: #fff; + font-family: 'Open Sans', sans-serif; +} + +.l-popup-table thead { + border-bottom: 1px solid #e5e8f0; +} + +.l-popup-table th { + font-size: 13px; + font-weight: 600; + color: #333; + background-color: #f6f8fb; + padding: 8px 20px; +} + +.l-popup-table td { + font-size: 13px; + font-weight: 400; + color: #999; + padding: 8px 20px; + border-left: 1px solid #e5e8f0; +} + +.l-favorite-application-table { + margin-top: 17px; + table-layout: fixed; +} + +.l-favorite-application-table td { + padding: 0; + vertical-align: baseline; +} + +.l-color-blue { + color: #4b99e3; +} + +.l-text-bold { + font-weight: 600; +} + +.l-servermap-span { + color: #666; +} +.l-servermap-span .fas { + color:#d0d0d0; +} + + +.fa-sign-in-alt, .fa-sign-out-alt { + color: #33b692; +} + +.l-timezone-dateformat-table { + margin-top: 17px; +} + +.l-timezone-dateformat-table th { + border-left: 1px solid #e5e8f0; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-general-container.component.html b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-general-container.component.html new file mode 100644 index 000000000000..35cb393d28e8 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-general-container.component.html @@ -0,0 +1,68 @@ +

{{desc$ | async}}

+ + + + + + + + + + + + + + + + +
ServerMap
+ Search Depth + ( Inbound Outbound ) + + + Search Period + +
+ + + + + + + + + + + + + + + + +
Favorite Application
+ + + +
+ + + + + + + + + + + + + + + + + +
TimeZoneDate Format
+ + + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-general-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-general-container.component.ts new file mode 100644 index 000000000000..7776e2d6586c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-general-container.component.ts @@ -0,0 +1,24 @@ +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import { Observable } from 'rxjs'; + +@Component({ + selector: 'pp-configuration-popup-general-container', + templateUrl: './configuration-popup-general-container.component.html', + styleUrls: ['./configuration-popup-general-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ConfigurationPopupGeneralContainerComponent implements OnInit { + desc$: Observable; + + constructor( + private translateService: TranslateService, + ) {} + ngOnInit() { + this.initDescText(); + } + + private initDescText(): void { + this.desc$ = this.translateService.get('CONFIGURATION.GENERAL.DESC'); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-help-container.component.css b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-help-container.component.css new file mode 100644 index 000000000000..53af6888bb2a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-help-container.component.css @@ -0,0 +1,88 @@ +:host { + display: block; + padding: 25px 10px 0; +} +.l-card-link-list { + display: flex; + width: 100%; + justify-content: space-between; + margin-bottom: 40px; +} +.l-card-link-list-item { + display: block; + width: 32%; + height: 120px; +} +.l-card-link { + display: flex; + width: 100%; + height: 100%; + justify-content: center; + align-items: center; +} +.l-faq-link { + background-color: #4a8fd2; +} +.l-issue-link { + background-color: #4ab0d2; +} +.l-user-group-link { + background-color: #50cba4; +} +.l-card-text { + font-size: 18px; + font-weight: 400; + color: #fff; +} +.l-card-link .fas, .l-card-link .fab { + font-size: 42px; + margin-right: 7px; +} +.fa-comments { + color: #b4cce9; +} +.fa-github { + color: #b4dae9; +} +.fa-users { + color: #b5e6d5; +} + +h4 { + font-weight: 600; + padding-bottom: 15px; + border-bottom: 1px solid #e5e8f0; +} +.l-guide-contents-wrapper { + display: flex; + position: relative; +} +.l-guide-contents { + width: 50%; + padding-left: 30px; +} +.l-guide-contents:first-child { + border-right: 1px solid #e5e8f0; +} +.l-guide-language-text { + color: #666; + font-size: 22px; + font-weight: 600; + padding: 25px 0; + text-align: center; +} +.l-guide-contents-list li { + padding: 5px 0; +} +.l-guide-contents-list a > .fas { + color: #9ec2e4; + margin-right: 5px; +} + +.l-guide-contents-list a:link { + color: #428bca; +} + +.l-guide-contents-list a:visited { + color: #609; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-help-container.component.html b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-help-container.component.html new file mode 100644 index 000000000000..a18809764360 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-help-container.component.html @@ -0,0 +1,45 @@ + +

Document & Guide

+ diff --git a/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-help-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-help-container.component.ts new file mode 100644 index 000000000000..d7741177f29f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-help-container.component.ts @@ -0,0 +1,11 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'pp-configuration-popup-help-container', + templateUrl: 'configuration-popup-help-container.component.html', + styleUrls: ['./configuration-popup-help-container.component.css'], +}) +export class ConfigurationPopupHelpContainerComponent implements OnInit { + constructor() { } + ngOnInit() { } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-container.component.css b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-container.component.css new file mode 100644 index 000000000000..d40cdcfe59d1 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-container.component.css @@ -0,0 +1,14 @@ +:host { + display: block; + padding: 25px 10px 0; +} +.l-desc-text-wrapper { + margin-bottom: 25px; +} +.l-desc-text { + color: #999; + font-size: 14px; +} +.l-check-wrapper { + margin-bottom: 40px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-container.component.html b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-container.component.html new file mode 100644 index 000000000000..f9589a0fd5b0 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-container.component.html @@ -0,0 +1,12 @@ +

{{desc$ | async}}

+
+ + +
+ + + + + diff --git a/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-container.component.ts new file mode 100644 index 000000000000..edd493753d4b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-container.component.ts @@ -0,0 +1,65 @@ +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import { ApplicationNameDuplicationCheckInteractionService } from 'app/core/components/duplication-check/application-name-duplication-check-interaction.service'; +import { AgentIdDuplicationCheckInteractionService } from 'app/core/components/duplication-check/agent-id-duplication-check-interaction.service'; +import { ConfigurationPopupInstallationDataService, IInstallationData } from './configuration-popup-installation-data.service'; + +import { Observable, combineLatest, of } from 'rxjs'; +import { filter, catchError, pluck } from 'rxjs/operators'; + +@Component({ + selector: 'pp-configuration-popup-installation-container', + templateUrl: './configuration-popup-installation-container.component.html', + styleUrls: ['./configuration-popup-installation-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ConfigurationPopupInstallationContainerComponent implements OnInit { + desc$: Observable; + installationInfo$: Observable; + jvmArgument$: Observable; + + constructor( + private translateService: TranslateService, + private configurationPopupInstallationDataService: ConfigurationPopupInstallationDataService, + private applicationNameDuplicationCheckInteractionService: ApplicationNameDuplicationCheckInteractionService, + private agentIdDuplicationCheckInteractionService: AgentIdDuplicationCheckInteractionService + ) {} + + ngOnInit() { + this.initDescText(); + this.initInstallationInfo(); + this.initJVMArgument(); + } + + private initDescText(): void { + this.desc$ = this.translateService.get('CONFIGURATION.INSTALLATION.DESC'); + } + + private initInstallationInfo(): void { + this.installationInfo$ = this.configurationPopupInstallationDataService.getData() + .pipe( + filter((data: IInstallationData) => { + return data.code === 0; + }), + pluck('message'), + catchError((err) => { + return this.onAjaxError(err); + }) + ); + } + + private initJVMArgument(): void { + this.jvmArgument$ = combineLatest( + this.applicationNameDuplicationCheckInteractionService.onCheckSuccess$, + this.agentIdDuplicationCheckInteractionService.onCheckSuccess$, + ); + } + + private onAjaxError(err: Error): Observable { + // TODO: Error발생시 띄워줄 팝업 컴포넌트 Call - issue#170 + return of({ + downloadUrl: '', + installationArgument: '' + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-data.service.ts new file mode 100644 index 000000000000..3f4477f05b57 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-data.service.ts @@ -0,0 +1,25 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable } from 'rxjs'; + +export interface IInstallationData { + code: number; + message: { + downloadUrl: string, + installationArgument: string, + version: string + }; +} + +@Injectable() +export class ConfigurationPopupInstallationDataService { + private dataRequestURL = 'getAgentInstallationInfo.pinpoint'; + + constructor( + private http: HttpClient, + ) {} + + getData(): Observable { + return this.http.get(this.dataRequestURL); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-download-link.component.css b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-download-link.component.css new file mode 100644 index 000000000000..f6a000629050 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-download-link.component.css @@ -0,0 +1,17 @@ +:host { + display: block; + border: 1px solid #e5e8f0; + border-left: 5px solid #4a8fd2; + margin-bottom: 15px; + padding: 25px 20px; +} + +.download-link { + font-size: 14px; + color: #428bca; +} + +h4 { + font-weight: 600; + margin-bottom: 10px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-download-link.component.html b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-download-link.component.html new file mode 100644 index 000000000000..be494e0bf01a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-download-link.component.html @@ -0,0 +1,2 @@ +

Download Link

+{{downloadLink}} diff --git a/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-download-link.component.ts b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-download-link.component.ts new file mode 100644 index 000000000000..2499727c3b8a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-download-link.component.ts @@ -0,0 +1,13 @@ +import { Component, OnInit, Input } from '@angular/core'; + +@Component({ + selector: 'pp-configuration-popup-installation-download-link', + templateUrl: './configuration-popup-installation-download-link.component.html', + styleUrls: ['./configuration-popup-installation-download-link.component.css'], +}) +export class ConfigurationPopupInstallationDownloadLinkComponent implements OnInit { + @Input() downloadLink: string; + + constructor() {} + ngOnInit() {} +} diff --git a/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-jvm-argument-info.component.css b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-jvm-argument-info.component.css new file mode 100644 index 000000000000..a5d9867cf8ed --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-jvm-argument-info.component.css @@ -0,0 +1,61 @@ +:host { + display: block; + border: 1px solid #e5e8f0; + border-left: 5px solid #4a8fd2; + padding: 25px 20px; + position: relative; +} + +h4 { + font-weight: 600; + margin-bottom: 10px; +} + +.contents-wrapper { + display: flex; +} + +.textarea-wrapper { + position: relative; + width: 60%; +} + +.copied-noti-text-wrapper { + width: 40%; + position: relative; +} + +.jvm-argument-info { + border: 1px solid #e5e8f0; + font-size: 14px; + width: 100%; + height: 80px; + padding: 10px; + resize: none; +} + +.copy-button { + position: absolute; + right: 5px; + top: 5px; +} + +.copy-button:focus { + outline: 0; +} + +.fa-clone { + font-size: 20px; + color: #ccc; +} + +.fa-clone:hover { + color: #979797; +} + +.copied-noti-text { + position: absolute; + top: 25px; + left: 50%; + font-size: 15px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-jvm-argument-info.component.html b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-jvm-argument-info.component.html new file mode 100644 index 000000000000..dc673a663198 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-jvm-argument-info.component.html @@ -0,0 +1,8 @@ +

JVM Argument Info

+
+
+ + +
+

Copied!

+
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-jvm-argument-info.component.ts b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-jvm-argument-info.component.ts new file mode 100644 index 000000000000..162962efe5f5 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-installation-jvm-argument-info.component.ts @@ -0,0 +1,33 @@ +import { Component, OnInit, Input } from '@angular/core'; + +@Component({ + selector: 'pp-configuration-popup-installation-jvm-argument-info', + templateUrl: './configuration-popup-installation-jvm-argument-info.component.html', + styleUrls: ['./configuration-popup-installation-jvm-argument-info.component.css'], +}) +export class ConfigurationPopupInstallationJVMArgumentInfoComponent implements OnInit { + @Input() installationArgument: string; + @Input() jvmArgument: string[]; + + isArgumentInfoCopied: boolean; + + constructor() {} + ngOnInit() {} + + getJVMArgumentInfoInView(): string { + const [applicationName, agentId] = this.jvmArgument; + + return `${this.installationArgument}\n-Dpinpoint.applicationName=${applicationName}\n-Dpinpoint.agentId=${agentId}`; + } + + onCopySuccess(): void { + this.updateCopiedStatus(true); + setTimeout(() => { + this.updateCopiedStatus(false); + }, 2000); + } + + private updateCopiedStatus(status: boolean): void { + this.isArgumentInfoCopied = status; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-usergroup.component.css b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-usergroup.component.css new file mode 100644 index 000000000000..993e89965d5b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-usergroup.component.css @@ -0,0 +1,11 @@ +.l-content-section { + display: flex; + padding: 30px 0 0; +} +.l-content-item { + flex:1; + margin-right: 20px; +} +.l-content-item:last-child { + margin-right: 0px; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-usergroup.component.html b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-usergroup.component.html new file mode 100644 index 000000000000..9500e4681f91 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-usergroup.component.html @@ -0,0 +1,11 @@ +
+
+ +
+
+ +
+
+ +
+
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-usergroup.component.ts b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-usergroup.component.ts new file mode 100644 index 000000000000..3666c0bd15cf --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup-usergroup.component.ts @@ -0,0 +1,11 @@ +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; + +@Component({ + selector: 'pp-configuration-popup-usergroup', + templateUrl: './configuration-popup-usergroup.component.html', + styleUrls: ['./configuration-popup-usergroup.component.css'] +}) +export class ConfigurationPopupUsergroupComponent implements OnInit { + constructor() {} + ngOnInit() {} +} diff --git a/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup.component.css b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup.component.css new file mode 100644 index 000000000000..2b8d79f12617 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup.component.css @@ -0,0 +1,82 @@ +:host { + display: block; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + margin: auto; + width: 100%; + max-width: 1000px; + height: 710px; + background-color: #fff; + border: 1px solid #e5e8f0; + box-shadow: 0 0 15px 0 rgba(0, 0, 0, 0.75); + text-align: left; +} +.l-title-group { + padding:20px; + border-bottom:1px solid #e5e8f0; + position:relative; +} + +.l-title-group dt { + font-size:20px; + font-weight:normal; + color:#4a8fd2; +} + +.l-contents-group { + overflow: visible; + padding: 17px 18px; +} +.l-tab-menu { + position: relative; +} +.l-tab-menu ul { + border-bottom: 1px solid #e6e8ec; +} +.l-tab-menu ul:after { + content:""; + display:block; + width:100%; + height:0; + visibility:hidden; + clear:both; +} +.l-tab-menu li { + font-weight: 400 !important; + float: left; +} +.l-tab-menu li a { + cursor: pointer; + display:inline-block; + font-size: 13px; + color: #666; + padding: 14px 15px; + border: 1px solid transparent; + border-top-left-radius: 3px; + border-top-right-radius: 3px; + line-height: 1em; +} +.l-tab-menu li:hover a { + border-color: #e6e8ec #e6e8ec #fff; +} +.l-tab-menu li.active a { + color: #fff; + background: #4a8fd2; +} +.l-tab-menu li.active a:hover { + border-color: transparent; +} +.l-sql-popup-close { + position:absolute; + right:27px; + top:50%; + transform:translateY(-50%); + color:#4a8fd2; + font-size: 30px; + width:20px; + height:20px; + background:url(../../../../assets/img/icon-close.png) no-repeat 0 0; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup.component.html b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup.component.html new file mode 100644 index 000000000000..d646cc010c07 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup.component.html @@ -0,0 +1,14 @@ +
+
+
Pinpoint Configuration
+
+ +
+
+ + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup.component.ts b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup.component.ts new file mode 100644 index 000000000000..9943cff66cda --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/configuration-popup.component.ts @@ -0,0 +1,124 @@ +import { Component, OnInit, OnDestroy, Input, ViewChild, ViewContainerRef, ComponentFactoryResolver, Output, EventEmitter, HostBinding } from '@angular/core'; + +import { ConfigurationPopupGeneralContainerComponent } from './configuration-popup-general-container.component'; +import { ConfigurationPopupUsergroupComponent } from './configuration-popup-usergroup.component'; +import { ConfigurationPopupAlarmComponent } from './configuration-popup-alarm.component'; +import { ConfigurationPopupInstallationContainerComponent } from './configuration-popup-installation-container.component'; +import { ConfigurationPopupHelpContainerComponent } from './configuration-popup-help-container.component'; + +@Component({ + selector: 'pp-configuration-popup', + templateUrl: './configuration-popup.component.html', + styleUrls: ['./configuration-popup.component.css'] +}) +export class ConfigurationPopupComponent implements OnInit, OnDestroy { + @ViewChild('contentContainer', { read: ViewContainerRef }) contentContainer: ViewContainerRef; + @Input() funcImagePath: Function; + @Output() outClosePopup = new EventEmitter(); + @HostBinding('class.font-opensans') fontFamily = true; + + private componentMap = new Map(); + private componentList = [ + ConfigurationPopupGeneralContainerComponent, + ConfigurationPopupUsergroupComponent, + ConfigurationPopupAlarmComponent, + ConfigurationPopupInstallationContainerComponent, + ConfigurationPopupHelpContainerComponent + ]; + tabList: any[]; + + constructor( + private componentFactoryResolver: ComponentFactoryResolver, + ) {} + + ngOnInit() { + this.initTabList(); + this.initComponentMap(); + this.loadComponent(this.tabList.find((tab) => tab.isActive).id); + } + + ngOnDestroy() { + this.componentMap.forEach((value) => { + if (value.componentRef) { + value.componentRef.destroy(); + } + }); + } + + onTabClick(tabName: string): void { + this.setActiveTab(tabName); + this.contentContainer.detach(0); + if (!this.isComponentLoaded(tabName)) { + this.loadComponent(tabName); + } else { + this.contentContainer.insert(this.componentMap.get(tabName).componentRef.hostView); + } + } + + private initTabList(): void { + this.tabList = [{ + id: 'general', + displayText: 'General', + isActive: true + }, + { + id: 'usergroup', + displayText: 'User Group', + isActive: false + }, + { + id: 'alarm', + displayText: 'Alarm', + isActive: false + }, + { + id: 'installation', + displayText: 'Installation', + isActive: false + }, + { + id: 'help', + displayText: 'Help', + isActive: false + }]; + } + + + private initComponentMap(): void { + this.tabList.forEach((value, i) => { + this.componentMap.set(value.id, { + component: this.componentList[i], + isLoaded: false, + componentRef: undefined + }); + }); + } + + private loadComponent(key: string): void { + const componentObj = this.componentMap.get(key); + const componentFactory = this.componentFactoryResolver.resolveComponentFactory(componentObj.component); + + componentObj.componentRef = this.contentContainer.createComponent(componentFactory); + componentObj.isLoaded = true; + } + + private setActiveTab(tabName: string): void { + this.tabList.forEach((tab) => tab.isActive = tabName === tab.id); + } + + private isComponentLoaded(key: string): boolean { + return this.componentMap.get(key).isLoaded; + } + + onClickFilter(): void { + this.onClickClose(); + } + + onClickClose(): void { + this.outClosePopup.emit(); + } + + getIconFullPath(applicationName: string): string { + return this.funcImagePath(applicationName); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/configuration-popup/index.ts b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/index.ts new file mode 100644 index 000000000000..aafa17527080 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/configuration-popup/index.ts @@ -0,0 +1,68 @@ + +import { NgModule } from '@angular/core'; +import { ClipboardModule } from 'ngx-clipboard'; + +import { SharedModule } from 'app/shared'; +import { AlarmRuleListModule } from 'app/core/components/alarm-rule-list'; +import { ApplicationListModule } from 'app/core/components/application-list'; +import { UserGroupModule } from 'app/core/components/user-group'; +import { GroupMemberModule } from 'app/core/components/group-member'; +import { PinpointUserModule } from 'app/core/components/pinpoint-user'; +import { InboundOutboundRangeSelectorModule } from 'app/core/components/inbound-outbound-range-selector'; +import { SearchPeriodModule } from 'app/core/components/search-period'; +import { TimezoneModule } from 'app/core/components/timezone/index'; +import { DateFormatModule } from 'app/core/components/date-format'; +import { DuplicationCheckModule } from 'app/core/components/duplication-check'; +import { ConfigurationPopupComponent } from './configuration-popup.component'; +import { ConfigurationPopupContainerComponent } from './configuration-popup-container.component'; +import { ConfigurationPopupGeneralContainerComponent } from './configuration-popup-general-container.component'; +import { ConfigurationPopupUsergroupComponent } from './configuration-popup-usergroup.component'; +import { ConfigurationPopupAlarmComponent } from './configuration-popup-alarm.component'; +import { ConfigurationPopupHelpContainerComponent } from './configuration-popup-help-container.component'; +import { ConfigurationPopupInstallationContainerComponent } from './configuration-popup-installation-container.component'; +import { ConfigurationPopupInstallationDownloadLinkComponent } from './configuration-popup-installation-download-link.component'; +import { ConfigurationPopupInstallationJVMArgumentInfoComponent } from './configuration-popup-installation-jvm-argument-info.component'; + +import { ConfigurationPopupInstallationDataService } from './configuration-popup-installation-data.service'; + +@NgModule({ + declarations: [ + ConfigurationPopupComponent, + ConfigurationPopupContainerComponent, + ConfigurationPopupGeneralContainerComponent, + ConfigurationPopupUsergroupComponent, + ConfigurationPopupAlarmComponent, + ConfigurationPopupHelpContainerComponent, + ConfigurationPopupInstallationContainerComponent, + ConfigurationPopupInstallationDownloadLinkComponent, + ConfigurationPopupInstallationJVMArgumentInfoComponent + ], + imports: [ + SharedModule, + ClipboardModule, + AlarmRuleListModule, + ApplicationListModule, + UserGroupModule, + GroupMemberModule, + PinpointUserModule, + InboundOutboundRangeSelectorModule, + SearchPeriodModule, + ApplicationListModule, + TimezoneModule, + DateFormatModule, + DuplicationCheckModule, + ], + exports: [], + entryComponents: [ + ConfigurationPopupContainerComponent, + ConfigurationPopupGeneralContainerComponent, + ConfigurationPopupUsergroupComponent, + ConfigurationPopupAlarmComponent, + ConfigurationPopupInstallationContainerComponent, + ConfigurationPopupHelpContainerComponent + ], + providers: [ + ConfigurationPopupInstallationDataService + ] +}) +export class ConfigurationPopupModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/data-load-indicator/data-load-indicator-for-filtered-map-container.component.css b/web/src/main/webapp/v2/src/app/core/components/data-load-indicator/data-load-indicator-for-filtered-map-container.component.css new file mode 100644 index 000000000000..7a73bb795ec8 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/data-load-indicator/data-load-indicator-for-filtered-map-container.component.css @@ -0,0 +1,8 @@ +:host { + width: 100% +} +.l-wrapper { + display: flex; + flex-flow: row wrap; + padding: 10px 10px 0px 10px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/data-load-indicator/data-load-indicator-for-filtered-map-container.component.html b/web/src/main/webapp/v2/src/app/core/components/data-load-indicator/data-load-indicator-for-filtered-map-container.component.html new file mode 100644 index 000000000000..08b26408d737 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/data-load-indicator/data-load-indicator-for-filtered-map-container.component.html @@ -0,0 +1,10 @@ +
+ +
diff --git a/web/src/main/webapp/v2/src/app/core/components/data-load-indicator/data-load-indicator-for-filtered-map-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/data-load-indicator/data-load-indicator-for-filtered-map-container.component.ts new file mode 100644 index 000000000000..2471ee3fee75 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/data-load-indicator/data-load-indicator-for-filtered-map-container.component.ts @@ -0,0 +1,58 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { Subject, Observable } from 'rxjs'; +import { takeUntil, filter } from 'rxjs/operators'; + +import { UrlPathId } from 'app/shared/models'; +import { NewUrlStateNotificationService, StoreHelperService } from 'app/shared/services'; +import { ServerMapForFilteredMapDataService } from 'app/core/components/server-map/server-map-for-filtered-map-data.service'; + +@Component({ + selector: 'pp-data-load-indicator-for-filtered-map-container', + templateUrl: './data-load-indicator-for-filtered-map-container.component.html', + styleUrls: ['./data-load-indicator-for-filtered-map-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class DataLoadIndicatorForFilteredMapContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + timezone$: Observable; + dateFormat$: Observable; + rangeValue: number[]; + selectedRangeValue: number[]; + constructor( + private changeDetectorRef: ChangeDetectorRef, + private storeHelperService: StoreHelperService, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private serverMapForFilteredMapDataService: ServerMapForFilteredMapDataService + ) {} + ngOnInit() { + this.connectStore(); + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe), + filter((urlService: NewUrlStateNotificationService) => { + return urlService.hasValue(UrlPathId.END_TIME, UrlPathId.PERIOD); + } + )).subscribe((urlService: NewUrlStateNotificationService) => { + const endTime = urlService.getEndTimeToNumber(); + this.rangeValue = [urlService.getStartTimeToNumber(), endTime]; + this.selectedRangeValue = [endTime, endTime]; + this.changeDetectorRef.detectChanges(); + }); + this.serverMapForFilteredMapDataService.onServerMapData$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((serverMapAndScatterData: any) => { + this.selectedRangeValue = [ + serverMapAndScatterData['lastFetchedTimestamp'], + serverMapAndScatterData['applicationMapData']['range']['to'] + ]; + this.changeDetectorRef.detectChanges(); + }); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private connectStore(): void { + this.timezone$ = this.storeHelperService.getTimezone(this.unsubscribe); + this.dateFormat$ = this.storeHelperService.getDateFormat(this.unsubscribe, 6); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/data-load-indicator/data-load-indicator-for-transaction-list-container.component.css b/web/src/main/webapp/v2/src/app/core/components/data-load-indicator/data-load-indicator-for-transaction-list-container.component.css new file mode 100644 index 000000000000..7a73bb795ec8 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/data-load-indicator/data-load-indicator-for-transaction-list-container.component.css @@ -0,0 +1,8 @@ +:host { + width: 100% +} +.l-wrapper { + display: flex; + flex-flow: row wrap; + padding: 10px 10px 0px 10px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/data-load-indicator/data-load-indicator-for-transaction-list-container.component.html b/web/src/main/webapp/v2/src/app/core/components/data-load-indicator/data-load-indicator-for-transaction-list-container.component.html new file mode 100644 index 000000000000..08b26408d737 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/data-load-indicator/data-load-indicator-for-transaction-list-container.component.html @@ -0,0 +1,10 @@ +
+ +
diff --git a/web/src/main/webapp/v2/src/app/core/components/data-load-indicator/data-load-indicator-for-transaction-list-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/data-load-indicator/data-load-indicator-for-transaction-list-container.component.ts new file mode 100644 index 000000000000..e417b200a6c4 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/data-load-indicator/data-load-indicator-for-transaction-list-container.component.ts @@ -0,0 +1,58 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { Subject, Observable } from 'rxjs'; +import { takeUntil, filter, take } from 'rxjs/operators'; + +import { UrlPathId } from 'app/shared/models'; +import { NewUrlStateNotificationService, StoreHelperService } from 'app/shared/services'; +import { TransactionMetaDataService } from 'app/core/components/transaction-table-grid/transaction-meta-data.service'; + +@Component({ + selector: 'pp-data-load-indicator-for-transaction-list-container', + templateUrl: './data-load-indicator-for-transaction-list-container.component.html', + styleUrls: ['./data-load-indicator-for-transaction-list-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class DataLoadIndicatorForTransactionListContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + timezone$: Observable; + dateFormat$: Observable; + rangeValue: number[]; + selectedRangeValue: number[]; + + constructor( + private changeDetectorRef: ChangeDetectorRef, + private storeHelperService: StoreHelperService, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private transactionMetaDataService: TransactionMetaDataService + ) {} + ngOnInit() { + this.connectStore(); + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + filter((urlService: NewUrlStateNotificationService) => { + return urlService.hasValue(UrlPathId.END_TIME, UrlPathId.PERIOD); + }), + take(1) + ).subscribe((urlService: NewUrlStateNotificationService) => { + const endTime = urlService.getEndTimeToNumber(); + this.rangeValue = [urlService.getStartTimeToNumber(), endTime]; + this.selectedRangeValue = [endTime, endTime]; + this.connectMetaDataService(); + }); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private connectStore(): void { + this.timezone$ = this.storeHelperService.getTimezone(this.unsubscribe); + this.dateFormat$ = this.storeHelperService.getDateFormat(this.unsubscribe, 6); + } + private connectMetaDataService(): void { + this.transactionMetaDataService.onTransactionDataRange$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((range: number[]) => { + this.selectedRangeValue = range; + this.changeDetectorRef.detectChanges(); + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/data-load-indicator/index.ts b/web/src/main/webapp/v2/src/app/core/components/data-load-indicator/index.ts new file mode 100644 index 000000000000..a5e0bc81fd3d --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/data-load-indicator/index.ts @@ -0,0 +1,23 @@ + +import { NgModule } from '@angular/core'; +import { SharedModule } from 'app/shared'; +import { DataLoadIndicatorForFilteredMapContainerComponent } from './data-load-indicator-for-filtered-map-container.component'; +import { DataLoadIndicatorForTransactionListContainerComponent } from './data-load-indicator-for-transaction-list-container.component'; +import { TransactionTableGridModule } from 'app/core/components/transaction-table-grid'; + +@NgModule({ + declarations: [ + DataLoadIndicatorForFilteredMapContainerComponent, + DataLoadIndicatorForTransactionListContainerComponent + ], + imports: [ + SharedModule, + TransactionTableGridModule + ], + exports: [ + DataLoadIndicatorForFilteredMapContainerComponent, + DataLoadIndicatorForTransactionListContainerComponent + ], + providers: [] +}) +export class DataLoadIndicatorModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/date-format/date-format-container.component.css b/web/src/main/webapp/v2/src/app/core/components/date-format/date-format-container.component.css new file mode 100644 index 000000000000..7f26ddcb5503 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/date-format/date-format-container.component.css @@ -0,0 +1,3 @@ +:host { + display: block; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/date-format/date-format-container.component.html b/web/src/main/webapp/v2/src/app/core/components/date-format/date-format-container.component.html new file mode 100644 index 000000000000..30f574a0530e --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/date-format/date-format-container.component.html @@ -0,0 +1,6 @@ + + diff --git a/web/src/main/webapp/v2/src/app/core/components/date-format/date-format-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/date-format/date-format-container.component.ts new file mode 100644 index 000000000000..abc9511e9064 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/date-format/date-format-container.component.ts @@ -0,0 +1,41 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy } from '@angular/core'; +import { Observable, Subject } from 'rxjs'; + +import { Actions } from 'app/shared/store'; +import { StoreHelperService, WebAppSettingDataService, AnalyticsService, TRACKED_EVENT_LIST } from 'app/shared/services'; + +@Component({ + selector: 'pp-date-format-container', + templateUrl: './date-format-container.component.html', + styleUrls: ['./date-format-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class DateFormatContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + timezone$: Observable; + dateFormatList: string[][]; + currentDateFormatIndex$: Observable; + constructor( + private storeHelperService: StoreHelperService, + private webAppSettingDataService: WebAppSettingDataService, + private analyticsService: AnalyticsService, + ) {} + + ngOnInit() { + this.dateFormatList = this.webAppSettingDataService.getDateFormatList(); + this.connectStore(); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private connectStore(): void { + this.timezone$ = this.storeHelperService.getTimezone(this.unsubscribe); + this.currentDateFormatIndex$ = this.storeHelperService.getDateFormatIndex(this.unsubscribe); + } + onChangeDateFormat(dateFormatIndex: number): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.SET_DATE_FORMAT_IN_CONFIGURATION, this.dateFormatList[dateFormatIndex][0]); + this.webAppSettingDataService.setDateFormat(dateFormatIndex); + this.storeHelperService.dispatch(new Actions.ChangeDateFormat(dateFormatIndex)); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/date-format/date-format.component.css b/web/src/main/webapp/v2/src/app/core/components/date-format/date-format.component.css new file mode 100644 index 000000000000..b2b8789c1cdc --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/date-format/date-format.component.css @@ -0,0 +1,26 @@ +:host { + display: block; + position: relative; + width: 100%; +} + +.fa-angle-down { + position: absolute; + top: 8px; + right: 8px; + font-size: 15px; +} + +.l-app-select { + width: 100%; + cursor: pointer; + padding: 6px 12px; + background-color: #fff; + border: 1px solid #d7dde4 !important; + border-radius: 0px; + font-size: 13px; + color: #666; + appearance: none; + -webkit-appearance: none; + outline: 0; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/date-format/date-format.component.html b/web/src/main/webapp/v2/src/app/core/components/date-format/date-format.component.html new file mode 100644 index 000000000000..c76968771ba7 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/date-format/date-format.component.html @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/date-format/date-format.component.ts b/web/src/main/webapp/v2/src/app/core/components/date-format/date-format.component.ts new file mode 100644 index 000000000000..76c9a2c821ec --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/date-format/date-format.component.ts @@ -0,0 +1,27 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; +import * as moment from 'moment-timezone'; + +@Component({ + selector: 'pp-date-format', + templateUrl: './date-format.component.html', + styleUrls: ['./date-format.component.css'], +}) +export class DateFormatComponent implements OnInit { + @Input() timezone: string; + @Input() dateFormatList: string[][]; + @Input() currentDateFormatIndex: number; + @Output() outChangeDateFormat = new EventEmitter(); + private exampleTime = Date.now(); + constructor() {} + ngOnInit() {} + onChangeDateFormat(value: number): void { + this.outChangeDateFormat.emit(value); + } + compareFn(o1: string, o2: string): boolean { + console.log( o1, o2, o1 === o2 ); + return o1 && o2 ? o1 === o2 : false; + } + formatExample(date: string): string { + return moment(this.exampleTime).tz(this.timezone).format(date); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/date-format/index.ts b/web/src/main/webapp/v2/src/app/core/components/date-format/index.ts new file mode 100644 index 000000000000..bc082b3d2695 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/date-format/index.ts @@ -0,0 +1,21 @@ + +import { NgModule } from '@angular/core'; +import { SharedModule } from 'app/shared'; +import { DateFormatContainerComponent } from './date-format-container.component'; +import { DateFormatComponent } from './date-format.component'; + +@NgModule({ + declarations: [ + DateFormatContainerComponent, + DateFormatComponent + ], + imports: [ + SharedModule + ], + exports: [ + DateFormatContainerComponent, + ], + providers: [ + ] +}) +export class DateFormatModule {} diff --git a/web/src/main/webapp/v2/src/app/core/components/duplication-check/agent-id-duplication-check-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/duplication-check/agent-id-duplication-check-container.component.ts new file mode 100644 index 000000000000..b18c7826f8a4 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/duplication-check/agent-id-duplication-check-container.component.ts @@ -0,0 +1,99 @@ +import { Component, OnInit } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import { Observable, of } from 'rxjs'; +import { map, filter, switchMap, pluck } from 'rxjs/operators'; + +import { TranslateReplaceService } from 'app/shared/services'; +import { AgentIdDuplicationCheckDataService, IAgentIdAvailable } from './agent-id-duplication-check-data.service'; +import { AgentIdDuplicationCheckInteractionService } from './agent-id-duplication-check-interaction.service'; + +@Component({ + selector: 'pp-agent-id-duplication-check-container', + templateUrl: './duplication-check-container.component.html', + styleUrls: ['./duplication-check-container.component.css'], +}) +export class AgentIdDuplicationCheckContainerComponent implements OnInit { + labelText = 'Agent ID'; + message: string; + isValueValid: boolean; + placeholder$: Observable; + + private lengthGuide: string; + private MAX_CHAR = 24; + + constructor( + private translateService: TranslateService, + private translateReplaceService: TranslateReplaceService, + private agentIdDuplicationCheckDataService: AgentIdDuplicationCheckDataService, + private agentIdDuplicationCheckInteractionService: AgentIdDuplicationCheckInteractionService + ) {} + + ngOnInit() { + this.initPlaceholder(); + this.initLengthGuide(); + } + + private initPlaceholder(): void { + this.placeholder$ = this.translateService.get('CONFIGURATION.INSTALLATION.AGENT_ID_PLACEHOLDER'); + } + + private initLengthGuide(): void { + this.translateService.get('CONFIGURATION.INSTALLATION.LENGTH_GUIDE').pipe( + map((lengthGuide: string) => { + return this.translateReplaceService.replace(lengthGuide, this.MAX_CHAR.toString()); + }) + ).subscribe((lengthGuide: string) => { + this.lengthGuide = lengthGuide; + }); + } + + onCheckValue(inputValue: string): void { + of(inputValue).pipe( + filter((value: string) => { + return this.isLengthValid(value.length) ? true : (this.onCheckFail(this.lengthGuide), false); + }), + switchMap((value) => { + return this.fetchResponse(value).pipe( + map((res: IAgentIdAvailable) => { + return { value, res }; + }) + ); + }), + filter(({ res }) => { + return this.isValueAvailable(res.code) ? true : (this.onCheckFail(res.message), false); + }), + pluck('value') + ).subscribe((value: string) => { + this.onCheckSuccess(value, ''); + }, (errorMessage: string) => { + this.onCheckFail(errorMessage); + }); + } + + private isLengthValid(length: number): boolean { + return !(length === 0 || length > this.MAX_CHAR); + } + + private fetchResponse(value: string): Observable { + return this.agentIdDuplicationCheckDataService.getResponseWithParams(value); + } + + private isValueAvailable(code: number): boolean { + return code === 0; + } + + private onCheckFail(message: string): void { + this.message = message; + this.isValueValid = false; + } + + private onCheckSuccess(value: string, message: string): void { + this.message = message; + this.isValueValid = true; + this.notifyCheckSuccess(value); + } + + private notifyCheckSuccess(value: string): void { + this.agentIdDuplicationCheckInteractionService.notifyCheckSuccess(value); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/duplication-check/agent-id-duplication-check-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/duplication-check/agent-id-duplication-check-data.service.ts new file mode 100644 index 000000000000..d9abbfe6bd1a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/duplication-check/agent-id-duplication-check-data.service.ts @@ -0,0 +1,32 @@ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpErrorResponse } from '@angular/common/http'; +import { Observable, throwError } from 'rxjs'; +import { catchError } from 'rxjs/operators'; + +export interface IAgentIdAvailable { + code: number; + message: string; +} + +@Injectable() +export class AgentIdDuplicationCheckDataService { + private requestURL = 'isAvailableAgentId.pinpoint'; + + constructor( + private http: HttpClient, + ) {} + + getResponseWithParams(value: string): Observable { + return this.http.get(this.requestURL, this.makeParams({agentId: value})).pipe( + catchError(this.handleError) + ); + } + private makeParams(paramObj: object): object { + return { + params: { ...paramObj } + }; + } + private handleError(error: HttpErrorResponse) { + return throwError(error.statusText); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/duplication-check/agent-id-duplication-check-interaction.service.ts b/web/src/main/webapp/v2/src/app/core/components/duplication-check/agent-id-duplication-check-interaction.service.ts new file mode 100644 index 000000000000..fe12007a09b1 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/duplication-check/agent-id-duplication-check-interaction.service.ts @@ -0,0 +1,15 @@ +import { Injectable } from '@angular/core'; +import { BehaviorSubject } from 'rxjs'; + +@Injectable() +export class AgentIdDuplicationCheckInteractionService { + private outCheckSuccess = new BehaviorSubject(''); + + onCheckSuccess$ = this.outCheckSuccess.asObservable(); + + constructor() {} + + notifyCheckSuccess(value: string): void { + this.outCheckSuccess.next(value); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/duplication-check/application-name-duplication-check-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/duplication-check/application-name-duplication-check-container.component.ts new file mode 100644 index 000000000000..fa8a48b728d0 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/duplication-check/application-name-duplication-check-container.component.ts @@ -0,0 +1,99 @@ +import { Component, OnInit } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import { Observable, of } from 'rxjs'; +import { map, filter, switchMap, pluck } from 'rxjs/operators'; + +import { TranslateReplaceService } from 'app/shared/services'; +import { ApplicationNameDuplicationCheckDataService, IApplicationAvailable } from './application-name-duplication-check-data.service'; +import { ApplicationNameDuplicationCheckInteractionService } from './application-name-duplication-check-interaction.service'; + +@Component({ + selector: 'pp-application-name-duplication-check-container', + templateUrl: './duplication-check-container.component.html', + styleUrls: ['./duplication-check-container.component.css'], +}) +export class ApplicationNameDuplicationCheckContainerComponent implements OnInit { + labelText = 'Application Name'; + message: string; + isValueValid: boolean; + placeholder$: Observable; + + private lengthGuide: string; + private MAX_CHAR = 24; + + constructor( + private translateService: TranslateService, + private translateReplaceService: TranslateReplaceService, + private applicationNameDuplicationCheckDataService: ApplicationNameDuplicationCheckDataService, + private applicationNameDuplicationCheckInteractionService: ApplicationNameDuplicationCheckInteractionService + ) {} + + ngOnInit() { + this.initPlaceholder(); + this.initLengthGuide(); + } + + private initPlaceholder(): void { + this.placeholder$ = this.translateService.get('CONFIGURATION.INSTALLATION.APPLICATION_NAME_PLACEHOLDER'); + } + + private initLengthGuide(): void { + this.translateService.get('CONFIGURATION.INSTALLATION.LENGTH_GUIDE').pipe( + map((lengthGuide: string) => { + return this.translateReplaceService.replace(lengthGuide, this.MAX_CHAR.toString()); + }) + ).subscribe((lengthGuide: string) => { + this.lengthGuide = lengthGuide; + }); + } + + onCheckValue(inputValue: string): void { + of(inputValue).pipe( + filter((value: string) => { + return this.isLengthValid(value.length) ? true : (this.onCheckFail(this.lengthGuide), false); + }), + switchMap((value) => { + return this.fetchResponse(value).pipe( + map((res: IApplicationAvailable) => { + return { value, res }; + }) + ); + }), + filter(({ res }) => { + return this.isValueAvailable(res.code) ? true : (this.onCheckFail(res.message), false); + }), + pluck('value') + ).subscribe((value: string) => { + this.onCheckSuccess(value, ''); + }, (errorMessage: string) => { + this.onCheckFail(errorMessage); + }); + } + + private isLengthValid(length: number): boolean { + return !(length === 0 || length > this.MAX_CHAR); + } + + private fetchResponse(value: string): Observable { + return this.applicationNameDuplicationCheckDataService.getResponseWithParams(value); + } + + private isValueAvailable(code: number): boolean { + return code === 0; + } + + private onCheckFail(message: string): void { + this.message = message; + this.isValueValid = false; + } + + private onCheckSuccess(value: string, message: string): void { + this.message = message; + this.isValueValid = true; + this.notifyCheckSuccess(value); + } + + private notifyCheckSuccess(value: string): void { + this.applicationNameDuplicationCheckInteractionService.notifyCheckSuccess(value); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/duplication-check/application-name-duplication-check-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/duplication-check/application-name-duplication-check-data.service.ts new file mode 100644 index 000000000000..169fed72cfdd --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/duplication-check/application-name-duplication-check-data.service.ts @@ -0,0 +1,31 @@ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpErrorResponse } from '@angular/common/http'; +import { Observable, throwError } from 'rxjs'; +import { catchError } from 'rxjs/operators'; + +export interface IApplicationAvailable { + code: number; + message: string; +} + +@Injectable() +export class ApplicationNameDuplicationCheckDataService { + private requestURL = 'isAvailableApplicationName.pinpoint'; + + constructor( + private http: HttpClient, + ) {} + getResponseWithParams(value: string): Observable { + return this.http.get(this.requestURL, this.makeParams({applicationName: value})).pipe( + catchError(this.handleError) + ); + } + private makeParams(paramObj: object): object { + return { + params: { ...paramObj } + }; + } + private handleError(error: HttpErrorResponse | string) { + return throwError(error['statusText'] || error); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/duplication-check/application-name-duplication-check-interaction.service.ts b/web/src/main/webapp/v2/src/app/core/components/duplication-check/application-name-duplication-check-interaction.service.ts new file mode 100644 index 000000000000..700216514b3b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/duplication-check/application-name-duplication-check-interaction.service.ts @@ -0,0 +1,15 @@ +import { Injectable } from '@angular/core'; +import { BehaviorSubject } from 'rxjs'; + +@Injectable() +export class ApplicationNameDuplicationCheckInteractionService { + private outCheckSuccess = new BehaviorSubject(''); + + onCheckSuccess$ = this.outCheckSuccess.asObservable(); + + constructor() {} + + notifyCheckSuccess(value: string): void { + this.outCheckSuccess.next(value); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/duplication-check/duplication-check-container.component.css b/web/src/main/webapp/v2/src/app/core/components/duplication-check/duplication-check-container.component.css new file mode 100644 index 000000000000..7f26ddcb5503 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/duplication-check/duplication-check-container.component.css @@ -0,0 +1,3 @@ +:host { + display: block; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/duplication-check/duplication-check-container.component.html b/web/src/main/webapp/v2/src/app/core/components/duplication-check/duplication-check-container.component.html new file mode 100644 index 000000000000..0d7997f056c7 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/duplication-check/duplication-check-container.component.html @@ -0,0 +1,7 @@ + + diff --git a/web/src/main/webapp/v2/src/app/core/components/duplication-check/duplication-check.component.css b/web/src/main/webapp/v2/src/app/core/components/duplication-check/duplication-check.component.css new file mode 100644 index 000000000000..7e7a808b7d35 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/duplication-check/duplication-check.component.css @@ -0,0 +1,86 @@ +:host { + display: block; + margin-bottom: 15px; +} +label { + font-size: 14px; + font-weight: 600; + width: 15%; + display: inline-block; + text-align: right; + margin-right: 10px; +} +.l-input-wrapper { + width: 70%; + display: inline-block; + position: relative; +} + +input { + border: 1px solid #ccc; + border-radius: 4px; + padding: 9px 14px; + font-size: 13px; + width: 100%; + display: inline-block; + outline: none; +} + +input:focus { + border-color: #4D90FE; + box-shadow: 0 0 2px #4D90FE; +} + +input.l-success-input { + border: 1px solid #3c763d; +} + +input.l-success-input:focus { + box-shadow: 0 0 2px #3c763d; +} + +input.l-fail-input { + border: 1px solid #a94442; +} + +input.l-fail-input:focus { + box-shadow: 0 0 2px #a94442; +} + +.l-check-status-icon { + position: absolute; + right: 10px; + top: 9px; + font-size: 20px; +} + +.fa-check { + color: #3c763d; +} + +.fa-times { + color: #a94442; +} + +.l-check-button { + border: 1px solid #ccc; + border-radius: 4px; + padding: 9px; + font-size: 13px; + width: 10%; + margin-left: 10px; +} + +.l-check-button:hover { + background-color: #e5e8f0; +} + +.l-check-button:focus { + outline: 0; +} + +.l-message { + text-align: center; + font-size: 14px; + margin-top: 10px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/duplication-check/duplication-check.component.html b/web/src/main/webapp/v2/src/app/core/components/duplication-check/duplication-check.component.html new file mode 100644 index 000000000000..f8bf205ceaeb --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/duplication-check/duplication-check.component.html @@ -0,0 +1,7 @@ + +
+ + +
+ +

{{message}}

diff --git a/web/src/main/webapp/v2/src/app/core/components/duplication-check/duplication-check.component.ts b/web/src/main/webapp/v2/src/app/core/components/duplication-check/duplication-check.component.ts new file mode 100644 index 000000000000..2d48770a137b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/duplication-check/duplication-check.component.ts @@ -0,0 +1,37 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; + +@Component({ + selector: 'pp-duplication-check', + templateUrl: './duplication-check.component.html', + styleUrls: ['./duplication-check.component.css'], +}) +export class DuplicationCheckComponent implements OnInit { + @Input() labelText: string; + @Input() placeholder: string; + @Input() message: string; + @Input() isValueValid: boolean; + @Output() outCheckValue = new EventEmitter(); + + id = Math.random().toString(36).substr(2, 5); + + constructor() {} + ngOnInit() {} + + emitValue(value: string): void { + this.outCheckValue.emit(value); + } + + getInputStyleClass(): object { + return { + 'l-success-input': this.isValueValid, + 'l-fail-input': this.isValueValid === false + }; + } + + getSpanStyleClass(): object { + return { + 'fa-check': this.isValueValid, + 'fa-times': this.isValueValid === false + }; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/duplication-check/index.ts b/web/src/main/webapp/v2/src/app/core/components/duplication-check/index.ts new file mode 100644 index 000000000000..0b72e1219e36 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/duplication-check/index.ts @@ -0,0 +1,32 @@ + +import { NgModule } from '@angular/core'; +import { SharedModule } from 'app/shared'; +import { AgentIdDuplicationCheckContainerComponent } from './agent-id-duplication-check-container.component'; +import { ApplicationNameDuplicationCheckContainerComponent } from './application-name-duplication-check-container.component'; +import { DuplicationCheckComponent } from './duplication-check.component'; +import { ApplicationNameDuplicationCheckInteractionService } from './application-name-duplication-check-interaction.service'; +import { AgentIdDuplicationCheckInteractionService } from './agent-id-duplication-check-interaction.service'; +import { ApplicationNameDuplicationCheckDataService } from './application-name-duplication-check-data.service'; +import { AgentIdDuplicationCheckDataService } from './agent-id-duplication-check-data.service'; + +@NgModule({ + declarations: [ + AgentIdDuplicationCheckContainerComponent, + ApplicationNameDuplicationCheckContainerComponent, + DuplicationCheckComponent + ], + imports: [ + SharedModule + ], + exports: [ + AgentIdDuplicationCheckContainerComponent, + ApplicationNameDuplicationCheckContainerComponent + ], + providers: [ + ApplicationNameDuplicationCheckInteractionService, + AgentIdDuplicationCheckInteractionService, + ApplicationNameDuplicationCheckDataService, + AgentIdDuplicationCheckDataService + ] +}) +export class DuplicationCheckModule {} diff --git a/web/src/main/webapp/v2/src/app/core/components/empty-inspector-contents/empty-inspector-contents-container.component.css b/web/src/main/webapp/v2/src/app/core/components/empty-inspector-contents/empty-inspector-contents-container.component.css new file mode 100644 index 000000000000..472e282fbe48 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/empty-inspector-contents/empty-inspector-contents-container.component.css @@ -0,0 +1,12 @@ +:host { + display: flex; + justify-content: center; + align-items: center; + height: 100%; +} +.guide-text-wrapper { + background-color: #fff; + padding: 50px; + border-radius: 30px; + border: 1px solid #e8e5f0; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/empty-inspector-contents/empty-inspector-contents-container.component.html b/web/src/main/webapp/v2/src/app/core/components/empty-inspector-contents/empty-inspector-contents-container.component.html new file mode 100644 index 000000000000..9f7305c734f5 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/empty-inspector-contents/empty-inspector-contents-container.component.html @@ -0,0 +1,3 @@ +
+

{{guideText$ | async}}

+
diff --git a/web/src/main/webapp/v2/src/app/core/components/empty-inspector-contents/empty-inspector-contents-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/empty-inspector-contents/empty-inspector-contents-container.component.ts new file mode 100644 index 000000000000..d338c98c1e58 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/empty-inspector-contents/empty-inspector-contents-container.component.ts @@ -0,0 +1,21 @@ +import { Component, OnInit } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; + +import { Observable } from 'rxjs'; + +@Component({ + selector: 'pp-empty-inspector-contents-container', + templateUrl: './empty-inspector-contents-container.component.html', + styleUrls: ['./empty-inspector-contents-container.component.css'] +}) +export class EmptyInspectorContentsContainerComponent implements OnInit { + guideText$: Observable; + + constructor( + private translateService: TranslateService, + ) { } + + ngOnInit() { + this.guideText$ = this.translateService.get('MAIN.SELECT_YOUR_APP'); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/empty-inspector-contents/index.ts b/web/src/main/webapp/v2/src/app/core/components/empty-inspector-contents/index.ts new file mode 100644 index 000000000000..23dff1791517 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/empty-inspector-contents/index.ts @@ -0,0 +1,18 @@ + +import { NgModule } from '@angular/core'; +import { SharedModule } from 'app/shared'; +import { EmptyInspectorContentsContainerComponent } from './empty-inspector-contents-container.component'; + +@NgModule({ + declarations: [ + EmptyInspectorContentsContainerComponent + ], + imports: [ + SharedModule + ], + exports: [ + EmptyInspectorContentsContainerComponent + ], + providers: [] +}) +export class EmptyInspectorContentsModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/filter-information/filter-information-container.component.css b/web/src/main/webapp/v2/src/app/core/components/filter-information/filter-information-container.component.css new file mode 100644 index 000000000000..470dcf63dbff --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/filter-information/filter-information-container.component.css @@ -0,0 +1,42 @@ +.l-filter-info { + padding: 16px 25px; + border-bottom: 1px solid #EAEEF4; + background-color: #F9FAFC; +} +.l-title { + font-size: 16px; + font-weight: 600; + margin-bottom: 23px; +} +.l-info-list { + width: 100%; + display: grid; + font-size: 14px; + grid-template-rows: auto; + grid-template-columns: 35% 65%; +} +.l-info-list div { + padding-top: 2px; + padding-bottom: 2px; +} +.l-info-list div:nth-child(odd) { + font-weight: 600; +} +.l-info-list div:nth-child(even) { + padding-left: 6px; + text-align: center; +} +.l-agent { + display: grid; + grid-template-rows: auto; + grid-template-columns: 45% 10% 45%; +} +.l-agent i { + padding-top: 3px; +} +.l-agent span { + display : block; + overflow : hidden; + white-space : nowrap; + text-overflow : ellipsis; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/filter-information/filter-information-container.component.html b/web/src/main/webapp/v2/src/app/core/components/filter-information/filter-information-container.component.html new file mode 100644 index 000000000000..f459bd17669f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/filter-information/filter-information-container.component.html @@ -0,0 +1,17 @@ +
+

Filter Information

+
+
Agent
+
+
+ {{getAgentFrom()}} {{getAgentTo()}} +
+
+
Url Pattern
+
{{getUrlPattern()}}
+
Response Time
+
{{getResponseTimeFrom() | number}}ms ~ {{getResponseTimeTo() | number}}ms
+
Transaction Result
+
{{getTransactionResult()}}
+
+
diff --git a/web/src/main/webapp/v2/src/app/core/components/filter-information/filter-information-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/filter-information/filter-information-container.component.ts new file mode 100644 index 000000000000..bc15c5d3f638 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/filter-information/filter-information-container.component.ts @@ -0,0 +1,91 @@ +import { Component, OnInit, OnDestroy } from '@angular/core'; +import { Subject } from 'rxjs'; +import { takeUntil, filter } from 'rxjs/operators'; + +import { NewUrlStateNotificationService, StoreHelperService } from 'app/shared/services'; +import { UrlPathId } from 'app/shared/models'; +import { Filter } from 'app/core/models'; + +@Component({ + selector: 'pp-filter-information-container', + templateUrl: './filter-information-container.component.html', + styleUrls: ['./filter-information-container.component.css'] +}) +export class FilterInformationContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + private serverMapData: any; + private selectedTarget: ISelectedTarget; + filterInfo: Filter[]; + filterIndexOfCurrentLink: number; + constructor( + private storeHelperService: StoreHelperService, + private newUrlStateNotificationService: NewUrlStateNotificationService + ) {} + ngOnInit() { + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe), + filter((urlService: NewUrlStateNotificationService) => { + return urlService.hasValue(UrlPathId.FILTER); + }) + ).subscribe((urlService: NewUrlStateNotificationService) => { + this.filterInfo = Filter.instanceFromString(urlService.getPathValue(UrlPathId.FILTER)); + }); + this.connectStore(); + } + private connectStore(): void { + this.storeHelperService.getServerMapData(this.unsubscribe).subscribe((serverMapData: any) => { + this.serverMapData = serverMapData; + }); + this.storeHelperService.getServerMapTargetSelected(this.unsubscribe).pipe( + filter((target: ISelectedTarget) => { + return target && (target.isNode === true || target.isNode === false) ? true : false; + }) + ).subscribe((target: ISelectedTarget) => { + this.filterIndexOfCurrentLink = -1; + this.selectedTarget = target; + }); + } + showFilterInfo(): boolean { + if (this.selectedTarget) { + if (this.selectedTarget.isLink === true && this.selectedTarget.isMerged === false) { + const link = this.serverMapData.getLinkData(this.selectedTarget.link[0]); + if (this.isFilterLink(link)) { + return true; + } + } + } + return false; + } + isFilterLink(link: any): boolean { + for (let i = 0 ; i < this.filterInfo.length ; i++) { + const f = this.filterInfo[i]; + if ((f.fromApplication + '^' + f.fromServiceType) === link.from && (f.toApplication + '^' + f.toServiceType) === link.to) { + this.filterIndexOfCurrentLink = i; + return true; + } + } + return false; + } + getAgentFrom(): string { + return this.filterInfo[this.filterIndexOfCurrentLink].fromAgentName || 'All'; + } + getAgentTo(): string { + return this.filterInfo[this.filterIndexOfCurrentLink].toAgentName || 'All'; + } + getUrlPattern(): string { + return this.filterInfo[this.filterIndexOfCurrentLink].urlPattern || 'none'; + } + getResponseTimeFrom(): number { + return this.filterInfo[this.filterIndexOfCurrentLink].responseFrom || 0; + } + getResponseTimeTo(): number { + return this.filterInfo[this.filterIndexOfCurrentLink].responseTo || 30000; + } + getTransactionResult(): string { + return this.filterInfo[this.filterIndexOfCurrentLink].getTransactionResultStr(); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/filter-information/index.ts b/web/src/main/webapp/v2/src/app/core/components/filter-information/index.ts new file mode 100644 index 000000000000..c5f84d9e4e27 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/filter-information/index.ts @@ -0,0 +1 @@ +export * from './filter-information-container.component'; diff --git a/web/src/main/webapp/v2/src/app/core/components/filter-transaction-wizard-popup/filter-transaction-wizard-popup-container.component.css b/web/src/main/webapp/v2/src/app/core/components/filter-transaction-wizard-popup/filter-transaction-wizard-popup-container.component.css new file mode 100644 index 000000000000..3c6a97654ec4 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/filter-transaction-wizard-popup/filter-transaction-wizard-popup-container.component.css @@ -0,0 +1,18 @@ +:host { + display: block; + background-color: transparent; + width: 100%; + height: 100%; +} + +:host::before { + content: ''; + display: block; + height: 100%; + width: 100%; + background: #000; + opacity: 0.6; + position: absolute; + left: 0; + top: 0; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/filter-transaction-wizard-popup/filter-transaction-wizard-popup-container.component.html b/web/src/main/webapp/v2/src/app/core/components/filter-transaction-wizard-popup/filter-transaction-wizard-popup-container.component.html new file mode 100644 index 000000000000..eaeab1e2474b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/filter-transaction-wizard-popup/filter-transaction-wizard-popup-container.component.html @@ -0,0 +1,7 @@ + + diff --git a/web/src/main/webapp/v2/src/app/core/components/filter-transaction-wizard-popup/filter-transaction-wizard-popup-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/filter-transaction-wizard-popup/filter-transaction-wizard-popup-container.component.ts new file mode 100644 index 000000000000..926ffae8861b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/filter-transaction-wizard-popup/filter-transaction-wizard-popup-container.component.ts @@ -0,0 +1,96 @@ +import { Component, OnInit, Input, Output, EventEmitter, AfterViewInit } from '@angular/core'; +import { Observable } from 'rxjs'; +import { filter, map } from 'rxjs/operators'; + +import { + WindowRefService, + WebAppSettingDataService, + UrlRouteManagerService, + NewUrlStateNotificationService, + DynamicPopup +} from 'app/shared/services'; +import { UrlPathId } from 'app/shared/models'; +import { Filter } from 'app/core/models'; + +@Component({ + selector: 'pp-filter-transaction-wizard-popup-container', + templateUrl: './filter-transaction-wizard-popup-container.component.html', + styleUrls: ['./filter-transaction-wizard-popup-container.component.css'] +}) +export class FilterTransactionWizardPopupContainerComponent implements OnInit, AfterViewInit, DynamicPopup { + @Input() data: any; + @Output() outCreated = new EventEmitter(); + @Output() outClose = new EventEmitter(); + + filterInfo$: Observable; + funcImagePath: Function; + + constructor( + private webAppSettingDataService: WebAppSettingDataService, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private urlRouteManagerService: UrlRouteManagerService, + private windowRefService: WindowRefService, + ) {} + + ngOnInit() { + this.funcImagePath = this.webAppSettingDataService.getIconPathMakeFunc(); + this.filterInfo$ = this.newUrlStateNotificationService.onUrlStateChange$.pipe( + filter((urlService: NewUrlStateNotificationService) => { + return urlService.hasValue(UrlPathId.FILTER); + }), + map((urlService) => { + const filterInfo = Filter.instanceFromString(urlService.getPathValue(UrlPathId.FILTER)); + const { from, to } = this.data; + + return filterInfo.find((f: Filter) => { + return (`${f.fromApplication}^${f.fromServiceType}` === from) && (`${f.toApplication}^${f.toServiceType}` === to); + }); + }), + filter((f: Filter) => !!f) + ); + } + + ngAfterViewInit() { + this.outCreated.emit({ coordX: 0, coordY: 0 }); + } + + openFilterMapPage(param: any): void { + const f = new Filter( + param.from.applicationName, + param.from.serviceType, + param.to.applicationName, + param.to.serviceType, + param.transactionResult + ); + f.setResponseFrom(param.responseFrom); + f.setResponseTo(param.responseTo); + if (param.urlPattern) { + f.setUrlPattern(this.windowRefService.nativeWindow.btoa(param.urlPattern)); + } + if (param.from.agent) { + f.setFromAgentName(param.from.agent); + } + if (param.to.agent) { + f.setToAgentName(param.to.agent); + } + const isBothWas = param.from.isWas && param.to.isWas; + this.urlRouteManagerService.openPage( + this.urlRouteManagerService.makeFilterMapUrl({ + applicationName: param.from.applicationName, + serviceType: param.from.serviceType, + periodStr: this.newUrlStateNotificationService.getPathValue(UrlPathId.PERIOD).getValueWithAddedWords(), + timeStr: this.newUrlStateNotificationService.getPathValue(UrlPathId.END_TIME).getEndTime(), + filterStr: this.newUrlStateNotificationService.hasValue(UrlPathId.FILTER) ? this.newUrlStateNotificationService.getPathValue(UrlPathId.FILTER) : '', + hintStr: this.newUrlStateNotificationService.hasValue(UrlPathId.HINT) ? this.newUrlStateNotificationService.getPathValue(UrlPathId.HINT) : '', + addedFilter: f, + addedHint: (isBothWas ? { + [param.to.applicationName]: param.filterTargetRpcList + } : null) + }) + ); + } + + onClosePopup(): void { + this.outClose.emit(); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/filter-transaction-wizard-popup/filter-transaction-wizard-popup.component.css b/web/src/main/webapp/v2/src/app/core/components/filter-transaction-wizard-popup/filter-transaction-wizard-popup.component.css new file mode 100644 index 000000000000..1121370c7b6b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/filter-transaction-wizard-popup/filter-transaction-wizard-popup.component.css @@ -0,0 +1,241 @@ +:host { + display: block; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + margin: auto; + width: 752px; + max-width: 1000px; + height: 730px; + background-color: #fff; + border: 1px solid #e5e8f0; + box-shadow: 0 0 15px 0 rgba(0, 0, 0, 0.75); +} +.l-title-group { + padding: 17px 18px; + height: auto; + background-color: #FFF; + border-bottom: 1px solid #E5E8F0; + position: relative; + font-size: 13px; + font-weight: 600; + color: #333; + display: flex; + align-items: center; + justify-content: space-between; +} +.l-title-group dt { + font-weight: normal; + font-size: 20px; + color: #4A8FD2; +} +.l-popup-close { + font-size: 30px; +} +.l-contents-group { + padding: 17px 18px 0px 18px; +} +.l-table { + width: 100%; + display: grid; + position: relative; + font-size: 13px; + grid-template-columns: 140px 286px 286px; + grid-template-rows: 46px 140px 21px 195px 106px 64px; +} +.l-table > div { + display: flex; + padding: 10px 15px; + border-bottom: 1px solid #E5E8F0; + border-right: 1px solid #E5E8F0; +} +.l-table .first-row { + border-top: 1px solid #E5E8F0; +} +.l-table .first-row img { + margin-right: 8px; +} +.l-table .first-row span { + float: left; + margin-left: -25px; + margin-right: 10px; + font-size: 18px; + color: #4B99E3; +} +.l-table .col1 { + padding: 0; + border-left: 1px solid #E5E8F0; +} +.row-col-1-1 { + grid-column: 1 / 2; + /* autoprefixer: off */ + grid-row: 1 / 2; +} +.row-col-1-2 { + align-items: center; + grid-column: 2 / 3; + grid-row: 1 / 2; +} +.row-col-1-3 { + align-items: center; + grid-column: 3 / 4; + grid-row: 1 / 2; +} +.row-col-2-1 { + grid-column: 1; + grid-row: 2; +} +.row-col-2-2 { + overflow-y: auto; + padding: 0 !important; + grid-column: 2; + grid-row: 2; +} +.row-col-2-3 { + overflow-y: auto; + padding: 0 !important; + grid-column: 3; + grid-row: 2; +} +.row-col-3 { + grid-column: 1 / 4; + grid-row: 3; +} +.row-col-4-1 { + grid-column: 1; + grid-row: 4; +} +.row-col-4-2 { + flex-flow: row wrap; + grid-column: 2 / 4; + grid-row: 4; +} +.row-col-5-1 { + grid-column: 1; + grid-row: 5; +} +.row-col-5-2 { + grid-column: 2 / 4; + grid-row: 5; +} +.row-col-6-1 { + grid-column: 1; + grid-row: 6; +} +.row-col-6-2 { + grid-column: 2 / 4; + grid-row: 6; +} +.col1 { + justify-content: center; + align-items: center; + font-size: 13px; + background-color: #f6f8fb; +} +.ellipsis { + display : block; + overflow : hidden; + white-space : nowrap; + text-overflow : ellipsis; +} +.l-application-list { + width: 100%; + cursor: pointer; + margin: 0; + padding: 0; + list-style: none; +} +.l-application-list li { + padding: 7px 15px; + font-size: 13px; +} +.l-application-list li.active { + color: #fff; + font-weight: 600; + background-color: #4B99E3; +} +.l-application-list li:hover { + color: #000; + background-color: #e4f3eb; +} +.l-widget-group { + padding: 0; + width: 100%; +} +.l-widget-group input { + border: 1px solid #469ae4; + font-size: 13px; + color: #b3b3b4; + padding: 6px 11px; + width: 100%; +} +.l-pattern-guide { + margin-top: 6px; + border: 1px solid #e6e8ec; + background-color: #F6F8FB; +} +.l-pattern-guide tr td:first-child { + padding:4px; + font-size: 11px; + text-align: center; +} +.l-pattern-guide tr td:last-child { + padding:4px; + font-size: 11px; +} +.l-pattern-guide td { + border: none; +} +.l-pattern-guide tr:last-child { + border-top: 1px solid #e6e8ec; +} +.l-response-time { + display: block !important; + padding: 30px 30px 10px 30px !important; + font-size: 11px !important; +} +.l-response-time div.noUi-tooltip { + color: #4B99E3; +} +.l-response-time div.noUi-connect { + background-color: #3dcfa8 !important; +} +.l-range-info { + text-align: center !important; +} +.l-range-info span:first-child { + float: left; +} +.l-range-info .l-range-text { + color: #4B99E3; +} +.l-range-info span:last-child { + float: right; + margin-right: -26px; +} +.l-transaction-result { + width: 100%; +} +.l-transaction-result button { + float: left; + width: 33.3%; + border: 1px solid #E6E8EC; + padding: 12px; + font-size: 13px; + font-weight: 600; +} +.l-transaction-result button.active { + color: #fff; + background: #4a8fd2; + border-color: transparent; +} + +.l-buttons { + text-align: right; + padding-top: 14px; +} +.l-buttons button { + margin-right: 15px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/filter-transaction-wizard-popup/filter-transaction-wizard-popup.component.html b/web/src/main/webapp/v2/src/app/core/components/filter-transaction-wizard-popup/filter-transaction-wizard-popup.component.html new file mode 100644 index 000000000000..35d3fd338f34 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/filter-transaction-wizard-popup/filter-transaction-wizard-popup.component.html @@ -0,0 +1,95 @@ +
+
Filter Wizard
+ +
+
+
+
Path
+
+ +
{{link?.sourceInfo.applicationName}}
+
+
+ + +
{{link?.targetInfo.applicationName}}
+
+
Agent
+
+
    +
  • ALL
  • +
  • {{agent}}
  • +
+
+
+
    +
  • ALL
  • +
  • {{agent}}
  • +
+
+
+
URL Pattern
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
*Matchers zero or more characters
?Matchers exactly one characters
**Matchers zero or more directories
Example +
/pinpoint/**/*.html
+
/pinpoint/??.html
+
/pinpoint/**/??.html
+
+
+
+
Response Time
+
+ +
+ {{responseTimeMin.toLocaleString()}} ms + Range {{(responseTimeRange[1] - responseTimeRange[0]).toLocaleString()}} ms + {{responseTimeMax.toLocaleString()}}+ ms +
+
+
Transaction Result
+
+
+ +
+
+
+
+
+ + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/filter-transaction-wizard-popup/filter-transaction-wizard-popup.component.ts b/web/src/main/webapp/v2/src/app/core/components/filter-transaction-wizard-popup/filter-transaction-wizard-popup.component.ts new file mode 100644 index 000000000000..3bcde01806d8 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/filter-transaction-wizard-popup/filter-transaction-wizard-popup.component.ts @@ -0,0 +1,120 @@ +import { Component, OnInit, Input, Output, EventEmitter, HostBinding } from '@angular/core'; +import { NouiFormatter } from 'ng2-nouislider'; + +import { Filter } from 'app/core/models/'; + +export class TimeFormatter implements NouiFormatter { + to(value: number): string { + return value.toLocaleString() + (value === 30000 ? '+' : '') + ' ms'; + } + + from(value: string): number { + return parseInt(value.replace(/(.) ms/, '$1').replace(/,/, ''), 10); + } +} +enum RESULT_TYPE { + SUCCESS_AND_FAIL, + SUCCESS_ONLY, + FAIL_ONLY +} +const AGENT_ALL = 'All'; + +@Component({ + selector: 'pp-filter-transaction-wizard-popup', + templateUrl: './filter-transaction-wizard-popup.component.html', + styleUrls: ['./filter-transaction-wizard-popup.component.css'] +}) +export class FilterTransactionWizardPopupComponent implements OnInit { + @Input() filterInfo: Filter; + @Input() link: ILinkInfo; + @Input() funcImagePath: Function; + @Output() outRequestFilterOpen = new EventEmitter(); + @Output() outClosePopup = new EventEmitter(); + @HostBinding('class.font-opensans') fontFamily = true; + + resultType: string[] = ['Success + Failed', 'Success Only', 'Failed Only']; + selectedResultType: RESULT_TYPE = RESULT_TYPE.SUCCESS_AND_FAIL; + selectedFromAgent = AGENT_ALL; + selectedToAgent = AGENT_ALL; + urlPattern = ''; + responseTimeMin = 0; + responseTimeMax = 30000; + responseTimeRange = [0, 30000]; + + constructor() {} + ngOnInit() { + this.resetValue(); + } + resetValue() { + if (this.filterInfo) { + this.selectedFromAgent = this.filterInfo.fromAgentName || AGENT_ALL; + this.selectedToAgent = this.filterInfo.toAgentName || AGENT_ALL; + this.responseTimeRange = [this.filterInfo.responseFrom, this.filterInfo.responseTo]; + this.urlPattern = this.filterInfo.urlPattern || ''; + if (this.filterInfo.transactionResult === true) { + this.selectedResultType = RESULT_TYPE.SUCCESS_ONLY; + } else if (this.filterInfo.transactionResult === false) { + this.selectedResultType = RESULT_TYPE.FAIL_ONLY; + } else { + this.selectedResultType = RESULT_TYPE.SUCCESS_AND_FAIL; + } + } + } + onClickFilter(): void { + this.outRequestFilterOpen.emit({ + filterApplicationName: this.link.filterApplicationName, + filterApplicationServiceTypeName: this.link.filterApplicationServiceTypeName, + from: { + applicationName: this.link.sourceInfo.applicationName, + serviceType: this.link.sourceInfo.serviceType, + agent: this.selectedFromAgent === AGENT_ALL ? null : this.selectedFromAgent, + isWas: this.link.sourceInfo.isWas + }, + to: { + applicationName: this.link.targetInfo.applicationName, + serviceType: this.link.targetInfo.serviceType, + agent: this.selectedToAgent === AGENT_ALL ? null : this.selectedToAgent, + isWas: this.link.targetInfo.isWas + }, + urlPattern: this.urlPattern, + responseFrom: this.responseTimeRange[0], + responseTo: this.responseTimeRange[1], + transactionResult: this.selectedResultType === 0 ? null : this.selectedResultType === 1 ? true : false, + filterTargetRpcList : this.link.sourceInfo.isWas && this.link.targetInfo.isWas ? this.link.filterTargetRpcList : [] + }); + this.onClickClose(); + } + onClickClose(): void { + // this.selectedResultType = RESULT_TYPE.SUCCESS_AND_FAIL; + // this.selectedFromAgent = AGENT_ALL; + // this.selectedToAgent = AGENT_ALL; + // this.responseTimeRange = [this.responseTimeMin, this.responseTimeMax]; + // this.urlPattern = ''; + + this.outClosePopup.emit(); + } + onSelectResultType(type: number): void { + this.selectedResultType = type; + } + onSelectFromAgent(agent: string): void { + this.selectedFromAgent = agent; + } + onSelectToAgent(agent: string): void { + this.selectedToAgent = agent; + } + getIconFullPath(applicationName: string): string { + return this.funcImagePath(applicationName); + } + isSelectedResultType(type: number): boolean { + return this.selectedResultType === type; + } + isSelectedFromAgent(agent: string): boolean { + return this.selectedFromAgent === agent; + } + isSelectedToAgent(agent: string): boolean { + return this.selectedToAgent === agent; + } + getTimeFormatter(): NouiFormatter { + return new TimeFormatter(); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/filter-transaction-wizard-popup/index.ts b/web/src/main/webapp/v2/src/app/core/components/filter-transaction-wizard-popup/index.ts new file mode 100644 index 000000000000..5c87f10ca34a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/filter-transaction-wizard-popup/index.ts @@ -0,0 +1,24 @@ + +import { NgModule } from '@angular/core'; +import { NouisliderModule } from 'ng2-nouislider'; + +import { SharedModule } from 'app/shared'; +import { FilterTransactionWizardPopupComponent } from './filter-transaction-wizard-popup.component'; +import { FilterTransactionWizardPopupContainerComponent } from './filter-transaction-wizard-popup-container.component'; + +@NgModule({ + declarations: [ + FilterTransactionWizardPopupComponent, + FilterTransactionWizardPopupContainerComponent + ], + imports: [ + NouisliderModule, + SharedModule + ], + exports: [], + entryComponents: [ + FilterTransactionWizardPopupContainerComponent + ], + providers: [] +}) +export class FilterTransactionWizardPopupModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/filtered-map-contents/filtered-map-contents-container.component.css b/web/src/main/webapp/v2/src/app/core/components/filtered-map-contents/filtered-map-contents-container.component.css new file mode 100644 index 000000000000..f47e448eed3b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/filtered-map-contents/filtered-map-contents-container.component.css @@ -0,0 +1,17 @@ +.l-main-contents-top { + display: flex; + flex-flow: row wrap; + margin: 11px 0 0 25px; + align-items: center; + top: 0; + right: 0; + z-index: 8; + padding:0 10px; + font-size:13px; + justify-content: flex-end; + position:absolute; +} +.fas { + color:#a8acb5; + font-size:18px; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/filtered-map-contents/filtered-map-contents-container.component.html b/web/src/main/webapp/v2/src/app/core/components/filtered-map-contents/filtered-map-contents-container.component.html new file mode 100644 index 000000000000..4824dcf6a569 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/filtered-map-contents/filtered-map-contents-container.component.html @@ -0,0 +1,6 @@ +
+ + + +
+ diff --git a/web/src/main/webapp/v2/src/app/core/components/filtered-map-contents/filtered-map-contents-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/filtered-map-contents/filtered-map-contents-container.component.ts new file mode 100644 index 000000000000..75a1b8d7061e --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/filtered-map-contents/filtered-map-contents-container.component.ts @@ -0,0 +1,30 @@ +import { Component, OnInit } from '@angular/core'; + +import { HELP_VIEWER_LIST, HelpViewerPopupContainerComponent } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; +import { AnalyticsService, TRACKED_EVENT_LIST, DynamicPopupService } from 'app/shared/services'; + +@Component({ + selector: 'pp-filtered-map-contents-container', + templateUrl: './filtered-map-contents-container.component.html', + styleUrls: ['./filtered-map-contents-container.component.css'] +}) +export class FilteredMapContentsContainerComponent implements OnInit { + constructor( + private analyticsService: AnalyticsService, + private dynamicPopupService: DynamicPopupService + ) {} + ngOnInit() {} + onShowHelp($event: MouseEvent): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.TOGGLE_HELP_VIEWER, HELP_VIEWER_LIST.SERVER_MAP); + const {left, top, width, height} = ($event.target as HTMLElement).getBoundingClientRect(); + + this.dynamicPopupService.openPopup({ + data: HELP_VIEWER_LIST.SERVER_MAP, + coord: { + coordX: left + width / 2, + coordY: top + height / 2 + }, + component: HelpViewerPopupContainerComponent + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/filtered-map-contents/index.ts b/web/src/main/webapp/v2/src/app/core/components/filtered-map-contents/index.ts new file mode 100644 index 000000000000..48de3ba8a360 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/filtered-map-contents/index.ts @@ -0,0 +1,27 @@ + +import { NgModule } from '@angular/core'; + +import { SharedModule } from 'app/shared'; +import { FixedPeriodMoverModule } from 'app/core/components/fixed-period-mover'; +import { ServerMapSearchResultViewerModule } from 'app/core/components/server-map-search-result-viewer'; +import { ServerMapModule } from 'app/core/components/server-map'; +import { FilteredMapContentsContainerComponent } from './filtered-map-contents-container.component'; +import { HelpViewerPopupModule } from 'app/core/components/help-viewer-popup'; + +@NgModule({ + declarations: [ + FilteredMapContentsContainerComponent + ], + imports: [ + SharedModule, + FixedPeriodMoverModule, + ServerMapSearchResultViewerModule, + ServerMapModule, + HelpViewerPopupModule + ], + exports: [ + FilteredMapContentsContainerComponent + ], + providers: [] +}) +export class FilteredMapContentsModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/fixed-period-mover/fixed-period-mover-container.component.css b/web/src/main/webapp/v2/src/app/core/components/fixed-period-mover/fixed-period-mover-container.component.css new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/web/src/main/webapp/v2/src/app/core/components/fixed-period-mover/fixed-period-mover-container.component.html b/web/src/main/webapp/v2/src/app/core/components/fixed-period-mover/fixed-period-mover-container.component.html new file mode 100644 index 000000000000..bf42be50dcab --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/fixed-period-mover/fixed-period-mover-container.component.html @@ -0,0 +1,8 @@ + + diff --git a/web/src/main/webapp/v2/src/app/core/components/fixed-period-mover/fixed-period-mover-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/fixed-period-mover/fixed-period-mover-container.component.ts new file mode 100644 index 000000000000..53066e20914f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/fixed-period-mover/fixed-period-mover-container.component.ts @@ -0,0 +1,69 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { Subject, Observable } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + +import { + StoreHelperService, + NewUrlStateNotificationService, + UrlRouteManagerService, + AnalyticsService, + TRACKED_EVENT_LIST +} from 'app/shared/services'; +import { UrlPathId } from 'app/shared/models'; +import { Period, EndTime } from 'app/core/models'; + +@Component({ + selector: 'pp-fixed-period-mover-container', + templateUrl: './fixed-period-mover-container.component.html', + styleUrls: ['./fixed-period-mover-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class FixedPeriodMoverContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + hiddenComponent = true; + period: Period; + endTime: EndTime; + timezone$: Observable; + dateFormat$: Observable; + constructor( + private changeDetectorRef: ChangeDetectorRef, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private urlRouteManagerService: UrlRouteManagerService, + private analyticsService: AnalyticsService, + private storeHelperService: StoreHelperService + ) {} + ngOnInit() { + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((urlService: NewUrlStateNotificationService) => { + if (urlService.hasValue(UrlPathId.PERIOD, UrlPathId.END_TIME)) { + this.period = urlService.getPathValue(UrlPathId.PERIOD); + this.endTime = urlService.getPathValue(UrlPathId.END_TIME); + this.hiddenComponent = false; + } else { + this.hiddenComponent = true; + } + this.changeDetectorRef.markForCheck(); + }); + this.connectStore(); + } + private connectStore(): void { + this.timezone$ = this.storeHelperService.getTimezone(); + this.dateFormat$ = this.storeHelperService.getDateFormat(this.unsubscribe, 1); + } + onMovePeriod(moveTime: string): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.CLICK_FIXED_PERIOD_MOVE_BUTTON); + this.urlRouteManagerService.moveOnPage({ + url: [ + this.newUrlStateNotificationService.getStartPath(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getUrlStr(), + this.period.getValueWithTime(), + moveTime + ] + }); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/fixed-period-mover/fixed-period-mover.component.css b/web/src/main/webapp/v2/src/app/core/components/fixed-period-mover/fixed-period-mover.component.css new file mode 100644 index 000000000000..efb6182ac04d --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/fixed-period-mover/fixed-period-mover.component.css @@ -0,0 +1,17 @@ +.l-time-select { + color:#8a939e; + background-color:rgba(255, 255, 255, 0.6); + padding:7px; + margin-right: 15px; +} +.l-time-select span { + font-size:13px; + font-weight:600; + margin-right: 10px; +} +.l-time-select .fab { + font-size:15px; +} +.l-time-select button:first-child { + margin-right: 4px; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/fixed-period-mover/fixed-period-mover.component.html b/web/src/main/webapp/v2/src/app/core/components/fixed-period-mover/fixed-period-mover.component.html new file mode 100644 index 000000000000..a938aed7d3b2 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/fixed-period-mover/fixed-period-mover.component.html @@ -0,0 +1,5 @@ +
+ {{getStartTime()}} ~ {{getEndTime()}} + + +
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/fixed-period-mover/fixed-period-mover.component.ts b/web/src/main/webapp/v2/src/app/core/components/fixed-period-mover/fixed-period-mover.component.ts new file mode 100644 index 000000000000..c47d14187e79 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/fixed-period-mover/fixed-period-mover.component.ts @@ -0,0 +1,42 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; +import * as moment from 'moment-timezone'; +import { Period } from 'app/core/models/period'; +import { EndTime } from 'app/core/models/end-time'; + +@Component({ + selector: 'pp-fixed-period-mover', + templateUrl: './fixed-period-mover.component.html', + styleUrls: ['./fixed-period-mover.component.css'] +}) +export class FixedPeriodMoverComponent implements OnInit { + + @Input() hiddenComponent: boolean; + @Input() period: Period; + @Input() endTime: EndTime; + @Input() timezone: string; + @Input() dateFormat: string; + @Output() outMove: EventEmitter = new EventEmitter(); + constructor() { } + + ngOnInit() { } + getStartTime(): string { + if (this.endTime) { + return moment(this.endTime.calcuStartTime(this.period.getValue()).getMilliSecond()).tz(this.timezone).format(this.dateFormat); + } else { + return ''; + } + } + getEndTime(): string { + if (this.endTime) { + return moment(this.endTime.getMilliSecond()).tz(this.timezone).format(this.dateFormat); + } else { + return ''; + } + } + onMovePrev(): void { + this.outMove.emit(this.endTime.calcuStartTime(this.period.getValue()).getEndTime()); + } + onMoveNext(): void { + this.outMove.emit(this.endTime.calcuNextTime(this.period.getValue()).getEndTime()); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/fixed-period-mover/index.ts b/web/src/main/webapp/v2/src/app/core/components/fixed-period-mover/index.ts new file mode 100644 index 000000000000..4a0e7f45d5f5 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/fixed-period-mover/index.ts @@ -0,0 +1,20 @@ + +import { NgModule } from '@angular/core'; +import { SharedModule } from 'app/shared'; +import { FixedPeriodMoverComponent } from './fixed-period-mover.component'; +import { FixedPeriodMoverContainerComponent } from './fixed-period-mover-container.component'; + +@NgModule({ + declarations: [ + FixedPeriodMoverComponent, + FixedPeriodMoverContainerComponent + ], + imports: [ + SharedModule + ], + exports: [ + FixedPeriodMoverContainerComponent + ], + providers: [] +}) +export class FixedPeriodMoverModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/group-member/group-member-container.component.css b/web/src/main/webapp/v2/src/app/core/components/group-member/group-member-container.component.css new file mode 100644 index 000000000000..22569b457de3 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/group-member/group-member-container.component.css @@ -0,0 +1,49 @@ +:host { + position: relative; +} +.l-group-member-wrapper { + color: #333; + border: 1px solid #e5e8f0; + height: 100%; + display: grid; + position: relative; + font-size: 13px; + font-family: 'Open Sans', sans-serif; + font-weight: 600; + grid-template-columns: auto; + grid-template-rows: 48px 469px; +} +.l-group-member-title { + display: flex; + padding: 0px 15px; + align-items: center; + justify-content: space-between; + background-color: #f6f8fb; + border-bottom: 1px solid #e5e8f0; +} +.l-group-member-sort-exchange { + color: #b3b6bf; + transform: rotate(90deg); +} +.l-group-member-list { + overflow-y: auto; +} +.l-message { + width: 100%; + height: 100%; + z-index: 15; + display: flex; + position: absolute; + align-items: center; + justify-content: center; + background-color: rgba(226, 226, 226, 0.8); +} +.l-message span { + color: #ff8c00; + text-align: center; +} +.l-message button { + top: 0px; + right: 0px; + position: absolute; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/group-member/group-member-container.component.html b/web/src/main/webapp/v2/src/app/core/components/group-member/group-member-container.component.html new file mode 100644 index 000000000000..005bf67cbbd9 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/group-member/group-member-container.component.html @@ -0,0 +1,18 @@ +
+
+ Group Member ({{groupMemberList.length}}) + +
+
+ +
+
+ + {{message}} +
+ + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/group-member/group-member-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/group-member/group-member-container.component.ts new file mode 100644 index 000000000000..3937cb9cd1f3 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/group-member/group-member-container.component.ts @@ -0,0 +1,149 @@ +import { Component, OnInit } from '@angular/core'; +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; +import { UserGroupInteractionService } from 'app/core/components/user-group/user-group-interaction.service'; +import { PinpointUserInteractionService } from 'app/core/components/pinpoint-user/pinpoint-user-interaction.service'; +import { GroupMemberInteractionService } from './group-member-interaction.service'; +import { GroupMemberDataService, IGroupMember, IGroupMemberResponse } from './group-member-data.service'; + +@Component({ + selector: 'pp-group-member-container', + templateUrl: './group-member-container.component.html', + styleUrls: ['./group-member-container.component.css'] +}) +export class GroupMemberContainerComponent implements OnInit { + private unsubscribe: Subject = new Subject(); + private ascendSort = true; + private currentUserGroupId = ''; + groupMemberList: IGroupMember[] = []; + useDisable = false; + showLoading = false; + message = ''; + constructor( + private groupMemberDataService: GroupMemberDataService, + private groupMemberInteractionService: GroupMemberInteractionService, + private userGroupInteractionService: UserGroupInteractionService, + private pinpointUserInteracionService: PinpointUserInteractionService + ) {} + ngOnInit() { + this.userGroupInteractionService.onSelect$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((id: string) => { + this.currentUserGroupId = id; + if (this.isValidUserGroupId()) { + this.getGroupMemberList(); + } else { + this.groupMemberList = []; + this.groupMemberInteractionService.setChangeGroupMember([]); + } + }); + this.pinpointUserInteracionService.onAdd$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((userId: string) => { + this.addGroupMember(userId); + }); + this.pinpointUserInteracionService.onUpdate$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((memberInfo: any) => { + let memberIndex = -1; + let editMemberInfo; + for (let i = 0 ; i < this.groupMemberList.length ; i++) { + if (this.groupMemberList[i].memberId === memberInfo.userId) { + memberIndex = i; + editMemberInfo = { + name: memberInfo.name, + department: memberInfo.department, + number: this.groupMemberList[i].number, + memberId: this.groupMemberList[i].memberId, + userGroupId: this.groupMemberList[i].userGroupId + }; + break; + } + } + this.groupMemberList.splice(memberIndex, 1, editMemberInfo); + }); + } + private isValidUserGroupId(): boolean { + return this.currentUserGroupId !== ''; + } + private getGroupMemberList(): void { + this.showProcessing(); + this.groupMemberDataService.retrieve(this.currentUserGroupId).subscribe((groupMemberData: IGroupMember[]) => { + this.groupMemberList = groupMemberData; + this.sortGroupMemberList(); + this.groupMemberInteractionService.setChangeGroupMember(this.getMemberIdList()); + this.hideProcessing(); + }, (error: string) => { + this.groupMemberInteractionService.setChangeGroupMember(this.getMemberIdList()); + this.hideProcessing(); + this.message = error; + }); + } + private addGroupMember(userId: string): void { + this.groupMemberDataService.create(userId, this.currentUserGroupId).subscribe((response: IGroupMemberResponse) => { + this.doAfterAddAndRemoveAction(response); + }, (error: string) => { + this.hideProcessing(); + this.message = error; + }); + } + private getMemberIdList(): string[] { + return this.groupMemberList.map((groupMember: IGroupMember): string => { + return groupMember.memberId; + }); + } + private doAfterAddAndRemoveAction(response: IGroupMemberResponse): void { + if (response.result === 'SUCCESS') { + this.getGroupMemberList(); + } else { + this.hideProcessing(); + } + } + private sortAscend(): void { + this.groupMemberList.sort((a: IGroupMember, b: IGroupMember): number => { + return a.name > b.name ? 1 : -1; + }); + } + private sortDescend(): void { + this.groupMemberList.sort((a: IGroupMember, b: IGroupMember): number => { + return a.name < b.name ? 1 : -1; + }); + } + private sortGroupMemberList() { + if (this.ascendSort === true) { + this.sortAscend(); + } else { + this.sortDescend(); + } + } + onRemoveGroupMember(id: string): void { + this.showProcessing(); + this.groupMemberDataService.remove(id, this.currentUserGroupId).subscribe((response: IGroupMemberResponse) => { + this.doAfterAddAndRemoveAction(response); + }, (error: string) => { + this.hideProcessing(); + this.message = error; + }); + } + onCloseMessage(): void { + this.message = ''; + this.groupMemberInteractionService.setChangeGroupMember(this.getMemberIdList()); + } + onSort(): void { + if (this.isValidUserGroupId()) { + this.ascendSort = !this.ascendSort; + this.sortGroupMemberList(); + } + } + hasMessage(): boolean { + return this.message !== ''; + } + private showProcessing(): void { + this.useDisable = true; + this.showLoading = true; + } + private hideProcessing(): void { + this.useDisable = false; + this.showLoading = false; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/group-member/group-member-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/group-member/group-member-data.service.ts new file mode 100644 index 000000000000..abcf4c8c79f3 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/group-member/group-member-data.service.ts @@ -0,0 +1,62 @@ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpErrorResponse } from '@angular/common/http'; +import { Observable, throwError } from 'rxjs'; +import { catchError, tap } from 'rxjs/operators'; + +export interface IGroupMember { + department: string; + memberId: string; + name: string; + number: string; + userGroupId: string; +} +export interface IGroupMemberResponse { + result: string; +} + +@Injectable() +export class GroupMemberDataService { + url = 'userGroup/member.pinpoint'; + constructor(private http: HttpClient) { } + retrieve(userGroupId: string): Observable { + return this.http.get(this.url, { params: { userGroupId }}).pipe( + tap((data: any) => { + if (data.errorCode) { + throw data.errorMessage; + } + }), + catchError(this.handleError) + ); + } + create(memberId: string, userGroupId: string): Observable { + return this.http.post(this.url, { + memberId, + userGroupId + }).pipe( + tap((data: any) => { + if (data.errorCode) { + throw data.errorMessage; + } + }), + catchError(this.handleError) + ); + } + remove(memberId: string, userGroupId: string): Observable { + return this.http.request('delete', this.url, { + body: { + memberId, + userGroupId + } + }).pipe( + tap((data: any) => { + if (data.errorCode) { + throw data.errorMessage; + } + }), + catchError(this.handleError) + ); + } + private handleError(error: HttpErrorResponse) { + return throwError(error.statusText || error); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/group-member/group-member-interaction.service.ts b/web/src/main/webapp/v2/src/app/core/components/group-member/group-member-interaction.service.ts new file mode 100644 index 000000000000..422f43e6ddc6 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/group-member/group-member-interaction.service.ts @@ -0,0 +1,16 @@ +import { Injectable } from '@angular/core'; +import { Subject, Observable } from 'rxjs'; + +@Injectable() +export class GroupMemberInteractionService { + private outChangeGroupMember = new Subject(); + onChangeGroupMember$: Observable; + + constructor() { + this.onChangeGroupMember$ = this.outChangeGroupMember.asObservable(); + } + setChangeGroupMember(groupMemberList: string[]): void { + this.outChangeGroupMember.next(groupMemberList); + } +} + diff --git a/web/src/main/webapp/v2/src/app/core/components/group-member/group-member.component.css b/web/src/main/webapp/v2/src/app/core/components/group-member/group-member.component.css new file mode 100644 index 000000000000..ebe69e85053f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/group-member/group-member.component.css @@ -0,0 +1,31 @@ +li { + color: #333; + height: 28px; + margin: 0; + cursor: pointer; + padding: 6px 15px 0px 15px; + font-size: 13px; +} +li:hover { + background:#fff0f0; +} +li.selected { + background:#fff0f0; +} +.item-wrapper { + display: block; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} +.item-wrapper > div { + float: right; +} +.item-wrapper .fa-trash-alt { + color: #b3b6bf; + font-size: 14px; +} +.item-wrapper .fa-check { + color: #F00; + margin-left: 10px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/group-member/group-member.component.html b/web/src/main/webapp/v2/src/app/core/components/group-member/group-member.component.html new file mode 100644 index 000000000000..17b96394fcf7 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/group-member/group-member.component.html @@ -0,0 +1,12 @@ +
    +
  • +
    +
    + + + +
    + ({{group.department}}) {{group.name}} +
    +
  • +
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/group-member/group-member.component.ts b/web/src/main/webapp/v2/src/app/core/components/group-member/group-member.component.ts new file mode 100644 index 000000000000..a177acb2826a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/group-member/group-member.component.ts @@ -0,0 +1,28 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; +import { IGroupMember } from './group-member-data.service'; + +@Component({ + selector: 'pp-group-member', + templateUrl: './group-member.component.html', + styleUrls: ['./group-member.component.css'] +}) +export class GroupMemberComponent implements OnInit { + @Input() groupMemberList: IGroupMember[]; + @Output() outRemove: EventEmitter = new EventEmitter(); + private removeConformId = ''; + constructor() {} + ngOnInit() {} + onRemove(id: string): void { + this.removeConformId = id; + } + onCancelRemove(): void { + this.removeConformId = ''; + } + onConfirmRemove(): void { + this.outRemove.emit(this.removeConformId); + this.removeConformId = ''; + } + isRemoveTarget(id: string): boolean { + return this.removeConformId === id; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/group-member/index.ts b/web/src/main/webapp/v2/src/app/core/components/group-member/index.ts new file mode 100644 index 000000000000..d73d292844e5 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/group-member/index.ts @@ -0,0 +1,29 @@ + +import { NgModule } from '@angular/core'; +import { SharedModule } from 'app/shared'; +import { GroupMemberComponent } from './group-member.component'; +import { GroupMemberContainerComponent } from './group-member-container.component'; +import { GroupMemberInteractionService } from './group-member-interaction.service'; +import { GroupMemberDataService } from './group-member-data.service'; + +@NgModule({ + declarations: [ + GroupMemberComponent, + GroupMemberContainerComponent + ], + imports: [ + SharedModule + ], + exports: [ + GroupMemberContainerComponent + ], + entryComponents: [ + GroupMemberComponent, + GroupMemberContainerComponent + ], + providers: [ + GroupMemberInteractionService, + GroupMemberDataService + ] +}) +export class GroupMemberModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/help-viewer-popup/help-viewer-popup-container.component.css b/web/src/main/webapp/v2/src/app/core/components/help-viewer-popup/help-viewer-popup-container.component.css new file mode 100644 index 000000000000..c8c6286b3461 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/help-viewer-popup/help-viewer-popup-container.component.css @@ -0,0 +1,86 @@ +:host { + display: block; + border: 1px solid transparent; +} + +:host(.navbar), +:host(.server_map) { + width: 500px; +} + +:host(.response_summary), +:host(.load), +:host(.agent_response_time), +:host(.application_response_time) { + width: 340px; +} + +:host(.call_tree) { + width: 540px; +} + +:host(.scatter) { + width: 580px; +} + +:host(.real_time) { + width: 650px; +} + +:host(.agent_list), +:host(.agent_data_source), +:host(.application_data_source) { + width: 300px; +} + +:host(.agent_heap), +:host(.application_heap), +:host(.agent_non_heap), +:host(.application_non_heap) { + width: 530px; +} + +:host(.agent_active_thread), +:host(.application_active_thread), +:host(.agent_tps), +:host(.application_tps), +:host(.agent_open_file_descriptor), +:host(.application_open_file_descriptor), +:host(.application_direct_buffer_count), +:host(.application_direct_buffer_memory), +:host(.application_mapped_buffer_count) { + width: 405px; +} + +:host(.application_mapped_buffer_memory) { + width: 420px; +} + +:host(.agent_cpu_usage) { + width: 470px; +} + +:host(.application_jvm_cpu_usage), +:host(.application_system_cpu_usage) { + width: 520px; +} + +:host(.agent_direct_buffer_count), +:host(.agent_mapped_buffer_count) { + width: 270px; +} + +:host(.agent_direct_buffer_memory) { + width: 310px; +} + +:host(.agent_mapped_buffer_memory) { + width: 320px; +} + +.tooltip-triangle { + width: 0; + height: 0; + display: inline-block; + position: fixed; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/help-viewer-popup/help-viewer-popup-container.component.html b/web/src/main/webapp/v2/src/app/core/components/help-viewer-popup/help-viewer-popup-container.component.html new file mode 100644 index 000000000000..3cc858bfd818 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/help-viewer-popup/help-viewer-popup-container.component.html @@ -0,0 +1,8 @@ + + + +
+
diff --git a/web/src/main/webapp/v2/src/app/core/components/help-viewer-popup/help-viewer-popup-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/help-viewer-popup/help-viewer-popup-container.component.ts new file mode 100644 index 000000000000..78363a94e95a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/help-viewer-popup/help-viewer-popup-container.component.ts @@ -0,0 +1,212 @@ +import { Component, OnInit, ElementRef, Input, Output, EventEmitter, AfterViewInit, HostBinding } from '@angular/core'; +import { Observable } from 'rxjs'; +import { TranslateService } from '@ngx-translate/core'; + +import { WindowRefService, DynamicPopup } from 'app/shared/services'; + +export enum HELP_VIEWER_LIST { + NAVBAR = 'HELP_VIEWER.NAVBAR', + RESPONSE_SUMMARY = 'HELP_VIEWER.RESPONSE_SUMMARY', + LOAD = 'HELP_VIEWER.LOAD', + SERVER_MAP = 'HELP_VIEWER.SERVER_MAP', + REAL_TIME = 'HELP_VIEWER.REAL_TIME', + CALL_TREE = 'HELP_VIEWER.CALL_TREE', + SCATTER = 'HELP_VIEWER.SCATTER', + AGENT_LIST = 'HELP_VIEWER.INSPECTOR.AGENT_LIST', + AGENT_HEAP = 'HELP_VIEWER.INSPECTOR.AGENT_CHART.HEAP', + AGENT_NON_HEAP = 'HELP_VIEWER.INSPECTOR.AGENT_CHART.NON_HEAP', + AGENT_CPU_USAGE = 'HELP_VIEWER.INSPECTOR.AGENT_CHART.CPU_USAGE', + AGENT_TPS = 'HELP_VIEWER.INSPECTOR.AGENT_CHART.TPS', + AGENT_ACTIVE_THREAD = 'HELP_VIEWER.INSPECTOR.AGENT_CHART.ACTIVE_THREAD', + AGENT_RESPONSE_TIME = 'HELP_VIEWER.INSPECTOR.AGENT_CHART.RESPONSE_TIME', + AGENT_DATA_SOURCE = 'HELP_VIEWER.INSPECTOR.AGENT_CHART.DATA_SOURCE', + AGENT_OPEN_FILE_DESCRIPTOR = 'HELP_VIEWER.INSPECTOR.AGENT_CHART.OPEN_FILE_DESCRIPTOR', + AGENT_DIRECT_BUFFER_COUNT = 'HELP_VIEWER.INSPECTOR.AGENT_CHART.DIRECT_BUFFER_COUNT', + AGENT_DIRECT_BUFFER_MEMORY = 'HELP_VIEWER.INSPECTOR.AGENT_CHART.DIRECT_BUFFER_MEMORY', + AGENT_MAPPED_BUFFER_COUNT = 'HELP_VIEWER.INSPECTOR.AGENT_CHART.MAPPED_BUFFER_COUNT', + AGENT_MAPPED_BUFFER_MEMORY = 'HELP_VIEWER.INSPECTOR.AGENT_CHART.MAPPED_BUFFER_MEMORY', + APPLICATION_HEAP = 'HELP_VIEWER.INSPECTOR.APPLICATION_CHART.HEAP', + APPLICATION_NON_HEAP = 'HELP_VIEWER.INSPECTOR.APPLICATION_CHART.NON_HEAP', + APPLICATION_JVM_CPU_USAGE = 'HELP_VIEWER.INSPECTOR.APPLICATION_CHART.JVM_CPU_USAGE', + APPLICATION_SYSTEM_CPU_USAGE = 'HELP_VIEWER.INSPECTOR.APPLICATION_CHART.SYSTEM_CPU_USAGE', + APPLICATION_TPS = 'HELP_VIEWER.INSPECTOR.APPLICATION_CHART.TPS', + APPLICATION_ACTIVE_THREAD = 'HELP_VIEWER.INSPECTOR.APPLICATION_CHART.ACTIVE_THREAD', + APPLICATION_RESPONSE_TIME = 'HELP_VIEWER.INSPECTOR.APPLICATION_CHART.RESPONSE_TIME', + APPLICATION_DATA_SOURCE = 'HELP_VIEWER.INSPECTOR.APPLICATION_CHART.DATA_SOURCE', + APPLICATION_OPEN_FILE_DESCRIPTOR = 'HELP_VIEWER.INSPECTOR.APPLICATION_CHART.OPEN_FILE_DESCRIPTOR', + APPLICATION_DIRECT_BUFFER_COUNT = 'HELP_VIEWER.INSPECTOR.APPLICATION_CHART.DIRECT_BUFFER_COUNT', + APPLICATION_DIRECT_BUFFER_MEMORY = 'HELP_VIEWER.INSPECTOR.APPLICATION_CHART.DIRECT_BUFFER_MEMORY', + APPLICATION_MAPPED_BUFFER_COUNT = 'HELP_VIEWER.INSPECTOR.APPLICATION_CHART.MAPPED_BUFFER_COUNT', + APPLICATION_MAPPED_BUFFER_MEMORY = 'HELP_VIEWER.INSPECTOR.APPLICATION_CHART.MAPPED_BUFFER_MEMORY', +} + +const enum HELP_VIEWER_WIDTH_STATE { + OK, + LEFT_OVERFLOW, + RIGHT_OVERFLOW +} + +const enum HELP_VIEWER_HEIGHT_STATE { + OK, + DOWN_OVERFLOW +} + +const enum TOOLTIP_CONSTANT { + START_POINT = 28, // 툴팁 시작을 모서리에서 살짝 밀어주는 길이 + DISTANCE_FROM_BUTTON = 9, // 클릭한 버튼에서 살짝 떨어뜨려줄 길이 + HEIGHT = 7, // 툴팁 삼각형 높이 + WIDTH = 14 // 툴팁 삼각형 넓이 +} + +@Component({ + selector: 'pp-help-viewer-popup-container', + templateUrl: './help-viewer-popup-container.component.html', + styleUrls: ['./help-viewer-popup-container.component.css'], +}) +export class HelpViewerPopupContainerComponent implements OnInit, AfterViewInit, DynamicPopup { + @Input() data: HELP_VIEWER_LIST; + @Input() coord: ICoordinate; + @Output() outCreated = new EventEmitter(); + @Output() outClose = new EventEmitter(); + @Output() outReInit = new EventEmitter<{[key: string]: any}>(); + @HostBinding('class') styleClass: string; + + data$: Observable<{[key: string]: any}[]>; + tooltipTriangleStyle: {[key: string]: any} = { + 'border-bottom': `${TOOLTIP_CONSTANT.HEIGHT}px solid #fff`, + 'border-right': `${TOOLTIP_CONSTANT.HEIGHT}px solid transparent`, + 'border-left': `${TOOLTIP_CONSTANT.HEIGHT}px solid transparent`, + 'transform-origin': `50% -${TOOLTIP_CONSTANT.DISTANCE_FROM_BUTTON}px`, + }; + + constructor( + private elementRef: ElementRef, + private translateService: TranslateService, + private windowRefService: WindowRefService, + ) {} + + ngOnInit() { + this.setStyleClass(this.data); + this.data$ = this.getHelpViewerText(this.data); + } + + ngAfterViewInit() { + this.outCreated.emit(this.getPosition(this.coord)); + } + + onInputChange({data, coord}: {data: HELP_VIEWER_LIST, coord: ICoordinate}): void { + if (this.coord) { + const { coordX: x1, coordY: y1 } = this.coord; + const { coordX: x2, coordY: y2 } = coord; + + x1 === x2 && y1 === y2 ? this.outClose.emit() : this.outReInit.emit({ data, coord }); + } + } + + private setStyleClass(data: HELP_VIEWER_LIST): void { + const className = Object.keys(HELP_VIEWER_LIST).find((cur: keyof typeof HELP_VIEWER_LIST) => { + return HELP_VIEWER_LIST[cur] === data; + }).toLowerCase(); + + this.styleClass = `popup ${className}`; + } + + private setPosition(coordY: number, coordX: number): ICoordinate { + return { coordX, coordY }; + } + + private getPosition({coordX, coordY}: ICoordinate): ICoordinate { + /** + * HelpViewer위치 띄워주는 기준 + * Width기준: event.clientX - TOOLTIP_CONSTANT.INDENT_WIDTH(왼쪽으로 살짝 밀어줄 너비) + width 의 overflow여부 + * Height기준: event.clientY + TOOLTIP_CONSTANT.TRIANGLE_HEIGHT(말풍선 삼각형 높이) + height 의 overflow여부 + * 1. Width: OK, Height: OK => 클릭한 버튼 기준 밑에 위치 + * 2. Width: OK, Height: Overflow => 클릭한 버튼 기준 위에 위치 + * 3. Width: Left Overflow, Height: OK => 클릭한 버튼 기준 오른쪽, 밑방향으로 위치 + * 4. Width: Right Overflow, Height: OK => 클릭한 버튼 기준 왼쪽, 밑방향으로 위치 + * 5. Width: Left Overflow, Height: Overflow => 클릭한 기준 오른쪽, 윗방향으로 위치 + * 6. Width: Right Overflow, Height: Overflow => 클릭한 기준 왼쪽, 윗방향으로 위치 + */ + const width = this.elementRef.nativeElement.offsetWidth; + const height = this.elementRef.nativeElement.offsetHeight; + const widthState = this.checkWidth(width); + const heightState = this.checkHeight(height); + let pos: ICoordinate; + + switch (widthState) { + case HELP_VIEWER_WIDTH_STATE.OK: + switch (heightState) { + case HELP_VIEWER_HEIGHT_STATE.OK: + this.setTooltipTriangleStyle(coordY + TOOLTIP_CONSTANT.DISTANCE_FROM_BUTTON, coordX - TOOLTIP_CONSTANT.WIDTH / 2, ''); + pos = this.setPosition(coordY + TOOLTIP_CONSTANT.DISTANCE_FROM_BUTTON + TOOLTIP_CONSTANT.HEIGHT, coordX - TOOLTIP_CONSTANT.START_POINT); + break; + case HELP_VIEWER_HEIGHT_STATE.DOWN_OVERFLOW: + this.setTooltipTriangleStyle(coordY + TOOLTIP_CONSTANT.DISTANCE_FROM_BUTTON, coordX - TOOLTIP_CONSTANT.WIDTH / 2, 'rotate(-180deg)'); + pos = this.setPosition(coordY - height - TOOLTIP_CONSTANT.DISTANCE_FROM_BUTTON - TOOLTIP_CONSTANT.HEIGHT, coordX - TOOLTIP_CONSTANT.START_POINT); + break; + } + break; + case HELP_VIEWER_WIDTH_STATE.LEFT_OVERFLOW: + switch (heightState) { + case HELP_VIEWER_HEIGHT_STATE.OK: + this.setTooltipTriangleStyle(coordY + TOOLTIP_CONSTANT.DISTANCE_FROM_BUTTON, coordX - TOOLTIP_CONSTANT.WIDTH / 2, 'rotate(-90deg)'); + pos = this.setPosition(coordY - TOOLTIP_CONSTANT.START_POINT, coordX + TOOLTIP_CONSTANT.DISTANCE_FROM_BUTTON + TOOLTIP_CONSTANT.HEIGHT); + break; + case HELP_VIEWER_HEIGHT_STATE.DOWN_OVERFLOW: + this.setTooltipTriangleStyle(coordY + TOOLTIP_CONSTANT.DISTANCE_FROM_BUTTON, coordX - TOOLTIP_CONSTANT.WIDTH / 2, 'rotate(-90deg)'); + pos = this.setPosition(coordY - height + TOOLTIP_CONSTANT.START_POINT, coordX + TOOLTIP_CONSTANT.DISTANCE_FROM_BUTTON + TOOLTIP_CONSTANT.HEIGHT); + break; + } + break; + case HELP_VIEWER_WIDTH_STATE.RIGHT_OVERFLOW: + switch (heightState) { + case HELP_VIEWER_HEIGHT_STATE.OK: + this.setTooltipTriangleStyle(coordY + TOOLTIP_CONSTANT.DISTANCE_FROM_BUTTON, coordX - TOOLTIP_CONSTANT.WIDTH / 2, 'rotate(90deg)'); + pos = this.setPosition(coordY - TOOLTIP_CONSTANT.START_POINT, coordX - width - TOOLTIP_CONSTANT.DISTANCE_FROM_BUTTON - TOOLTIP_CONSTANT.HEIGHT); + break; + case HELP_VIEWER_HEIGHT_STATE.DOWN_OVERFLOW: + this.setTooltipTriangleStyle(coordY + TOOLTIP_CONSTANT.DISTANCE_FROM_BUTTON, coordX - TOOLTIP_CONSTANT.WIDTH / 2, 'rotate(90deg)'); + pos = this.setPosition(coordY - height + TOOLTIP_CONSTANT.START_POINT, coordX - width - TOOLTIP_CONSTANT.DISTANCE_FROM_BUTTON - TOOLTIP_CONSTANT.HEIGHT); + break; + } + break; + } + + return pos; + } + + private checkWidth(width: number): HELP_VIEWER_WIDTH_STATE { + const value = this.coord.coordX - TOOLTIP_CONSTANT.START_POINT; + const windowWidth = this.windowRefService.nativeWindow.innerWidth; + + return (value >= 0 && value + width <= windowWidth) ? HELP_VIEWER_WIDTH_STATE.OK + : value < 0 ? HELP_VIEWER_WIDTH_STATE.LEFT_OVERFLOW + : HELP_VIEWER_WIDTH_STATE.RIGHT_OVERFLOW; + } + + private checkHeight(height: number): HELP_VIEWER_HEIGHT_STATE { + const value = this.coord.coordY + TOOLTIP_CONSTANT.DISTANCE_FROM_BUTTON + height; + const windowHeight = this.windowRefService.nativeWindow.innerHeight; + + return value <= windowHeight ? HELP_VIEWER_HEIGHT_STATE.OK : HELP_VIEWER_HEIGHT_STATE.DOWN_OVERFLOW; + } + + private setTooltipTriangleStyle(top: number, left: number, transform: string): void { + this.tooltipTriangleStyle = { + ...this.tooltipTriangleStyle, + ...{ + left: left < 0 ? 0 : `${left}px`, + top: top < 0 ? 0 : `${top}px`, + transform + } + }; + } + + private getHelpViewerText(viewerType: HELP_VIEWER_LIST): Observable<{[key: string]: any}[]> { + return this.translateService.get(viewerType); + } + + onClickOutside(): void { + this.outClose.emit(); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/help-viewer-popup/help-viewer-popup.component.css b/web/src/main/webapp/v2/src/app/core/components/help-viewer-popup/help-viewer-popup.component.css new file mode 100644 index 000000000000..eb07fe175338 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/help-viewer-popup/help-viewer-popup.component.css @@ -0,0 +1,72 @@ +:host { + display: block; + width: 100%; +} + +.main-dl:not(:first-of-type) { + border-top: 1px solid #e5e8f0; +} + +.title-group { + display: block; + padding: 14px 18px; + height: auto; + border-bottom: 1px solid #e5e8f0; + font-size: 13px; + font-weight: 600; + color: #333; +} + +.title-group > dt { + font-size: 16px; + font-weight: 600; + color: #4a8fd2; +} + +.title-group > dd { + font-size: 12px; + color: #777879; + margin-top: 8px; +} + +.contents-group .category-title { + font-size: 13px; + font-weight: 600; + color: #333; + margin-bottom: 12px; + padding-left: 26px; +} + +.contents-group .category-item-list { + display: flex; + padding: 5px 0; + line-height: 20px; +} + +.category-list { + padding: 14px 8px; +} + +.category-list:not(:last-of-type) { + border-bottom: 1px solid #e5e8f0; +} + +.category-item-list > dt { + font-size: 12px; + font-weight: 600; + color: #666; + width: 80px; + display: flex; + align-items: center; + justify-content: center; + margin-right: 5px; + text-align: center; +} + +.category-item-list > dd { + font-size: 12px; + color: #999; + flex: 1; + display: flex; + align-items: center; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/help-viewer-popup/help-viewer-popup.component.html b/web/src/main/webapp/v2/src/app/core/components/help-viewer-popup/help-viewer-popup.component.html new file mode 100644 index 000000000000..bcdf7f4d483e --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/help-viewer-popup/help-viewer-popup.component.html @@ -0,0 +1,17 @@ +
+
+
{{helpViewerText.TITLE}}
+
{{helpViewerText.DESC}}
+
+
+
+
{{category.TITLE}}
+
+
+
+
+
+
+
+
+
diff --git a/web/src/main/webapp/v2/src/app/core/components/help-viewer-popup/help-viewer-popup.component.ts b/web/src/main/webapp/v2/src/app/core/components/help-viewer-popup/help-viewer-popup.component.ts new file mode 100644 index 000000000000..3a18ec7b326a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/help-viewer-popup/help-viewer-popup.component.ts @@ -0,0 +1,13 @@ +import { Component, OnInit, Input } from '@angular/core'; + +@Component({ + selector: 'pp-help-viewer-popup', + templateUrl: './help-viewer-popup.component.html', + styleUrls: ['./help-viewer-popup.component.css'] +}) +export class HelpViewerPopupComponent implements OnInit { + @Input() data: {[key: string]: any}[]; + + constructor() {} + ngOnInit() {} +} diff --git a/web/src/main/webapp/v2/src/app/core/components/help-viewer-popup/index.ts b/web/src/main/webapp/v2/src/app/core/components/help-viewer-popup/index.ts new file mode 100644 index 000000000000..e73f2d8344a4 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/help-viewer-popup/index.ts @@ -0,0 +1,21 @@ +import { NgModule } from '@angular/core'; + +import { SharedModule } from 'app/shared'; +import { HelpViewerPopupContainerComponent } from './help-viewer-popup-container.component'; +import { HelpViewerPopupComponent } from './help-viewer-popup.component'; + +@NgModule({ + declarations: [ + HelpViewerPopupContainerComponent, + HelpViewerPopupComponent + ], + imports: [ + SharedModule + ], + exports: [], + entryComponents: [ + HelpViewerPopupContainerComponent + ], + providers: [] +}) +export class HelpViewerPopupModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector-container.component.css b/web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector-container.component.css new file mode 100644 index 000000000000..bc32c5675c9f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector-container.component.css @@ -0,0 +1,4 @@ +:host { + display: block; + margin-right: 10px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector-container.component.html b/web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector-container.component.html new file mode 100644 index 000000000000..bc115f1dac0e --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector-container.component.html @@ -0,0 +1,8 @@ + + diff --git a/web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector-container.component.ts new file mode 100644 index 000000000000..339c70b0c71f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector-container.component.ts @@ -0,0 +1,75 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { Subject } from 'rxjs'; +import { takeUntil, tap, map } from 'rxjs/operators'; + +import { UrlQuery, UrlPathId } from 'app/shared/models'; +import { WebAppSettingDataService, NewUrlStateNotificationService, UrlRouteManagerService } from 'app/shared/services'; + +@Component({ + selector: 'pp-inbound-outbound-range-selector-container', + templateUrl: './inbound-outbound-range-selector-container.component.html', + styleUrls: ['./inbound-outbound-range-selector-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class InboundOutboundRangeSelectorContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + + hiddenComponent: boolean; + inboundList: string[]; + outboundList: string[]; + selectedInbound: string; + selectedOutbound: string; + + constructor( + private changeDetectorRef: ChangeDetectorRef, + private webAppSettingDataService: WebAppSettingDataService, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private urlRouteManagerService: UrlRouteManagerService, + ) {} + + ngOnInit() { + this.inboundList = this.webAppSettingDataService.getInboundList(); + this.outboundList = this.webAppSettingDataService.getOutboundList(); + + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe), + tap((urlService: NewUrlStateNotificationService) => { + if (urlService.hasValue(UrlPathId.APPLICATION, UrlPathId.PERIOD, UrlPathId.END_TIME)) { + this.hiddenComponent = false; + } else { + this.hiddenComponent = true; + } + }), + map((urlService: NewUrlStateNotificationService) => { + return { + inbound: urlService.hasValue(UrlQuery.INBOUND) ? urlService.getQueryValue(UrlQuery.INBOUND) : this.webAppSettingDataService.getUserDefaultInbound(), + outbound: urlService.hasValue(UrlQuery.OUTBOUND) ? urlService.getQueryValue(UrlQuery.OUTBOUND) : this.webAppSettingDataService.getUserDefaultOutbound() + }; + }) + ).subscribe(({inbound, outbound}: {inbound: string, outbound: string}) => { + this.selectedInbound = inbound; + this.selectedOutbound = outbound; + this.changeDetectorRef.detectChanges(); + }); + } + + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + + onChangeBound(bound: string[]): void { + this.urlRouteManagerService.moveOnPage({ + url: [ + this.newUrlStateNotificationService.getStartPath(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getUrlStr(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.PERIOD).getValueWithTime(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.END_TIME).getEndTime() + ], + queryParam: { + [UrlQuery.INBOUND]: bound[0], + [UrlQuery.OUTBOUND]: bound[1] + } + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector-for-configuration-popup-container.component.css b/web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector-for-configuration-popup-container.component.css new file mode 100644 index 000000000000..e8922768b7b9 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector-for-configuration-popup-container.component.css @@ -0,0 +1,4 @@ +:host { + display: inline-block; + margin-left: 15px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector-for-configuration-popup-container.component.html b/web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector-for-configuration-popup-container.component.html new file mode 100644 index 000000000000..a0eb52b8d002 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector-for-configuration-popup-container.component.html @@ -0,0 +1,7 @@ + + diff --git a/web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector-for-configuration-popup-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector-for-configuration-popup-container.component.ts new file mode 100644 index 000000000000..61bd403a4c89 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector-for-configuration-popup-container.component.ts @@ -0,0 +1,33 @@ +import { Component, OnInit } from '@angular/core'; + +import { WebAppSettingDataService, AnalyticsService, TRACKED_EVENT_LIST } from 'app/shared/services'; + +@Component({ + selector: 'pp-inbound-outbound-range-selector-for-configuration-popup-container', + templateUrl: './inbound-outbound-range-selector-for-configuration-popup-container.component.html', + styleUrls: ['./inbound-outbound-range-selector-for-configuration-popup-container.component.css'] +}) +export class InboundOutboundRangeSelectorForConfigurationPopupContainerComponent implements OnInit { + inboundList: string[]; + outboundList: string[]; + selectedInbound: string; + selectedOutbound: string; + + constructor( + private webAppSettingDataService: WebAppSettingDataService, + private analyticsService: AnalyticsService + ) {} + + ngOnInit() { + this.inboundList = this.webAppSettingDataService.getInboundList(); + this.outboundList = this.webAppSettingDataService.getOutboundList(); + this.selectedInbound = this.webAppSettingDataService.getUserDefaultInbound(); + this.selectedOutbound = this.webAppSettingDataService.getUserDefaultOutbound(); + } + + onChangeBound(bound: string[]): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.SET_BOUND_IN_CONFIGURATION, `Inbound: ${bound[0]}, Outbound: ${bound[1]}`); + this.webAppSettingDataService.setUserDefaultInbound(bound[0]); + this.webAppSettingDataService.setUserDefaultOutbound(bound[1]); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector.component.css b/web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector.component.css new file mode 100644 index 000000000000..cbbe302a3d9f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector.component.css @@ -0,0 +1,108 @@ +:host { + display: block; + position: relative; + width: 115px; +} +.fa-sign-in-alt, .fa-sign-out-alt { + color: #33b692; +} +button { + outline: none; +} +.l-wrapper { + border: 1px solid #4488CB; +} +.l-dropdown-button { + text-align: left; + width: 100%; + background-color: #fff; + font-size: 13px; + padding: 7px 0 6px 0; + outline: 0; +} +.l-dropdown-button > .fa-angle-down { + font-size: 15px; + display: inline-block; + margin-left: 9px; + color: #33b692; +} + +.l-bound-text { + display: inline-block; + font-size: 14px; + margin-left: 15px; + color: #333; +} + +.l-dropdown-menu-wrapper { + position: absolute; + top: 100%; + left: 0; + z-index: 9999; + display: flex; + flex-wrap: wrap; + border: 1px solid #e5e8f0; + border-radius: 2px; + margin-top: 2px; + background-color: #fff; + width: 180px; +} + +.l-inbound-list { + border-right: 1px solid #e5e8f0; +} + +.l-inbound-list, .l-outbound-list { + width: 50%; + text-align: center; +} + +.l-bound-list-item { + font-weight: 400; + color: #333; + font-size: 13px; + padding: 5px 10px; + cursor: pointer; +} + +.l-bound-title { + padding: 5px 10px; + color: #333; + background-color: #edf2f8; + font-weight: 600 !important; + font-size: 13px; + border-bottom: 1px solid #e5e8f0; +} + +.l-bound-list-item:hover { + background-color: #eee; +} + +.l-bound-list-item.active { + color: #4b99e3; + background-color: #edf2f8; +} + +.l-button-group-wrapper { + width: 100%; + border-top: 1px solid #e5e8f0; + padding: 1px; + text-align: right; +} + +.l-apply-button { + background-color: #4a8fd2; + border: 1px solid #4a8fd2; + border-radius: 0px; + padding: 5px 11px; + color: #fff; + margin: 2px; +} + +.l-cancel-button { + border: 1px solid #e5e8f0; + border-radius: 0px; + padding: 5px 7px; + color: #333; + margin: 2px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector.component.html b/web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector.component.html new file mode 100644 index 000000000000..cfb72cc7c5d2 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector.component.html @@ -0,0 +1,21 @@ +
+ + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector.component.ts b/web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector.component.ts new file mode 100644 index 000000000000..b89f93730fd0 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector.component.ts @@ -0,0 +1,63 @@ +import { Component, EventEmitter, Input, Output, OnInit, OnChanges, SimpleChanges } from '@angular/core'; + +@Component({ + selector: 'pp-inbound-outbound-range-selector', + templateUrl: './inbound-outbound-range-selector.component.html', + styleUrls: ['./inbound-outbound-range-selector.component.css'] +}) +export class InboundOutboundRangeSelectorComponent implements OnInit, OnChanges { + hideList = true; + prevSelectedInbound: string; + prevSelectedOutbound: string; + @Input() selectedInbound: string; + @Input() selectedOutbound: string; + @Input() inboundList: string[]; + @Input() outboundList: string[]; + @Output() outSelected: EventEmitter = new EventEmitter(); + + constructor() {} + + ngOnChanges(changes: SimpleChanges) { + if (changes['selectedInbound']) { + this.prevSelectedInbound = this.selectedInbound = changes['selectedInbound'].currentValue; + } + if (changes['selectedOutbound']) { + this.prevSelectedOutbound = this.selectedOutbound = changes['selectedOutbound'].currentValue; + } + } + + ngOnInit() { } + onSelectInbound(inbound: string): void { + this.selectedInbound = inbound; + } + + onSelectOutbound(outbound: string): void { + this.selectedOutbound = outbound; + } + + onApply(): void { + if (!(this.selectedInbound === this.prevSelectedInbound && this.selectedOutbound === this.prevSelectedOutbound)) { + this.outSelected.emit([this.selectedInbound, this.selectedOutbound]); + } + this.close(); + } + + onCancel(): void { + this.selectedInbound = this.prevSelectedInbound; + this.selectedOutbound = this.prevSelectedOutbound; + this.close(); + } + + toggleList(): void { + this.hideList = !this.hideList; + } + + onClose(): void { + this.onCancel(); + this.close(); + } + + private close(): void { + this.hideList = true; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/index.ts b/web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/index.ts new file mode 100644 index 000000000000..9935d7cf140a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inbound-outbound-range-selector/index.ts @@ -0,0 +1,23 @@ + +import { NgModule } from '@angular/core'; +import { SharedModule } from 'app/shared'; +import { InboundOutboundRangeSelectorComponent } from './inbound-outbound-range-selector.component'; +import { InboundOutboundRangeSelectorContainerComponent } from './inbound-outbound-range-selector-container.component'; +import { InboundOutboundRangeSelectorForConfigurationPopupContainerComponent } from './inbound-outbound-range-selector-for-configuration-popup-container.component'; + +@NgModule({ + declarations: [ + InboundOutboundRangeSelectorComponent, + InboundOutboundRangeSelectorContainerComponent, + InboundOutboundRangeSelectorForConfigurationPopupContainerComponent + ], + imports: [ + SharedModule + ], + exports: [ + InboundOutboundRangeSelectorContainerComponent, + InboundOutboundRangeSelectorForConfigurationPopupContainerComponent + ], + providers: [] +}) +export class InboundOutboundRangeSelectorModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/info-per-server/index.ts b/web/src/main/webapp/v2/src/app/core/components/info-per-server/index.ts new file mode 100644 index 000000000000..2d99f6436282 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/info-per-server/index.ts @@ -0,0 +1,31 @@ + +import { NgModule } from '@angular/core'; +import { MatTooltipModule } from '@angular/material'; +import { SharedModule } from 'app/shared'; +import { ScatterChartModule } from 'app/core/components/scatter-chart'; +import { ResponseSummaryChartModule } from 'app/core/components/response-summary-chart'; +import { LoadChartModule } from 'app/core/components/load-chart'; +import { ServerListModule } from 'app/core/components/server-list'; +import { InfoPerServerContainerComponent } from './info-per-server-container.component'; +import { InfoPerServerForFilteredMapContainerComponent } from './info-per-server-for-filtered-map-container.component'; + +@NgModule({ + declarations: [ + InfoPerServerContainerComponent, + InfoPerServerForFilteredMapContainerComponent + ], + imports: [ + SharedModule, + MatTooltipModule, + ScatterChartModule, + ResponseSummaryChartModule, + LoadChartModule, + ServerListModule + ], + exports: [ + InfoPerServerContainerComponent, + InfoPerServerForFilteredMapContainerComponent + ], + providers: [] +}) +export class InfoPerServerModule {} diff --git a/web/src/main/webapp/v2/src/app/core/components/info-per-server/info-per-server-container.component.css b/web/src/main/webapp/v2/src/app/core/components/info-per-server/info-per-server-container.component.css new file mode 100644 index 000000000000..555c38936fff --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/info-per-server/info-per-server-container.component.css @@ -0,0 +1,116 @@ +:host { + z-index: 9; +} +.l-sidemenu2 { + position: absolute; + top: 0px; + left: 0px; + width: 461px; + border-left: 1px solid #e5e8f0; + border-right: 1px solid #e5e8f0; + background: #fff; + height: 100%; + overflow-y: auto; + overflow-x: hidden; +} +.l-title-group2 { + display: flex; + flex-flow: row wrap; + color: #666; + justify-content: space-between; + align-items: center; + padding: 0 25px; + background: none; + border: none; + height: 50px; +} +.l-selected-agent { + color: #666; + font-size: 13px; + display: block; + overflow : hidden; + white-space : nowrap; + text-overflow : ellipsis; +} +.l-selected-agent label { + color: #fff; + font-size: 11px; + font-weight: 600; + display: inline-block; + background: #4b99e3; + margin: 0 12px 0 0; + padding: 6px 11px; + line-height: 1em; + position: relative; +} +.l-selected-agent label:after { + content:''; + position:absolute; + width:0; + height:0; + border-top:4px solid transparent; + border-bottom:4px solid transparent; + border-left:3px solid #4b99e3; + right:-3px; + top:50%; + transform:translateY(-50%); +} +.l-contents-group { + padding: 51px 0px 16px; + overflow-y: auto; + overflow-x: hidden; +} +.l-chart-group-list { + flex: 1; +} + +.l-sidemenu3 { + top: 0px; + left: 0px; + width: 348px; + background: #f8f9fb; + border: none; + position: absolute; + height: 100%; + overflow-y: auto; + overflow-x: hidden; +} +.l-title-group3 { + display: flex; + flex-flow: row wrap; + align-items: center; + height: 64px; + padding: 0 25px; + position: relative; +} +.l-title-group3 .fas { + font-size: 14px; + width: 33px; + height: 33px; + border-radius: 50%; + background: #4a8fd2; + color: #fff; + align-items: center; + display: flex; + justify-content: center; + margin: 0 7px 0 0; +} +.l-title-group3 .l-title { + font-size: 24px; + font-weight: 600; + color: #666; +} + + +.sidemenu { + top: 0px; + left: -461px; +} +.title-group2 { + background-color: #f9fafc; + border-bottom: 1px solid #eaeef4; +} +hr { + height: 1px; + border-top: 1px solid #EAEEF4; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/info-per-server/info-per-server-container.component.html b/web/src/main/webapp/v2/src/app/core/components/info-per-server/info-per-server-container.component.html new file mode 100644 index 000000000000..772421c5db8a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/info-per-server/info-per-server-container.component.html @@ -0,0 +1,29 @@ +
+
+
+ + {{ selectedAgent }} +
+
+
+
+ +
+ +
+ +
+
+
+
+
+ + Servers List +
+
+ +
+
diff --git a/web/src/main/webapp/v2/src/app/core/components/info-per-server/info-per-server-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/info-per-server/info-per-server-container.component.ts new file mode 100644 index 000000000000..e2301d6c006a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/info-per-server/info-per-server-container.component.ts @@ -0,0 +1,138 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { trigger, state, style, animate, transition } from '@angular/animations'; +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + +import { + StoreHelperService, + NewUrlStateNotificationService, + UrlRouteManagerService, + AgentHistogramDataService, + AnalyticsService, + TRACKED_EVENT_LIST +} from 'app/shared/services'; +import { Actions } from 'app/shared/store'; +import { UrlPath, UrlPathId } from 'app/shared/models'; +import { ServerMapData } from 'app/core/components/server-map/class/server-map-data.class'; + + +@Component({ + selector: 'pp-info-per-server-container', + templateUrl: './info-per-server-container.component.html', + styleUrls: ['./info-per-server-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush, + animations: [ + trigger('listAnimationTrigger', [ + state('start', style({ + left: '0px' + })), + state('end', style({ + left: '-809px' + })), + transition('* => *', [ + animate('0.2s 0.5s ease-out') + ]) + ]), + trigger('chartAnimationTrigger', [ + state('start', style({ + left: '0px' + })), + state('end', style({ + left: '-461px' + })), + transition('* => *', [ + animate('0.2s 0s ease-out') + ]) + ]), + ] +}) +export class InfoPerServerContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + selectedTarget: ISelectedTarget; + serverMapData: ServerMapData; + agentHistogramData: any; + selectedAgent = ''; + listAnimationTrigger = 'start'; + chartAnimationTrigger = 'start'; + constructor( + private storeHelperService: StoreHelperService, + private changeDetector: ChangeDetectorRef, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private urlRouteManagerService: UrlRouteManagerService, + private agentHistogramDataService: AgentHistogramDataService, + private analyticsService: AnalyticsService, + ) {} + ngOnInit() { + this.connectStore(); + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((urlService: NewUrlStateNotificationService) => { + this.hide(); + this.changeDetector.detectChanges(); + }); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private connectStore(): void { + this.storeHelperService.getServerMapTargetSelected(this.unsubscribe).subscribe((target: ISelectedTarget) => { + this.selectedTarget = target; + }); + this.storeHelperService.getServerMapData(this.unsubscribe).subscribe((serverMapData: ServerMapData) => { + this.serverMapData = serverMapData; + }); + this.storeHelperService.getInfoPerServerState(this.unsubscribe).subscribe((visibleState: boolean) => { + if (this.selectedTarget && this.selectedTarget.isNode) { + const node = this.serverMapData.getNodeData(this.selectedTarget.node[0]); + if (visibleState === true) { + this.agentHistogramDataService.getData(node.key, node.applicationName, node.serviceTypeCode, this.serverMapData).subscribe((histogramData: any) => { + this.show(); + this.agentHistogramData = histogramData || {}; + this.agentHistogramData.isWas = node.isWas; + this.changeDetector.detectChanges(); + this.storeHelperService.dispatch(new Actions.UpdateServerList(this.agentHistogramData)); + this.onSelectAgent(this.getFirstAgent()); + this.storeHelperService.dispatch(new Actions.ChangeInfoPerServerVisibleState(true)); + }); + } else { + this.hide(); + this.changeDetector.detectChanges(); + this.storeHelperService.dispatch(new Actions.ChangeInfoPerServerVisibleState(false)); + } + } + }); + } + private hide(): void { + this.listAnimationTrigger = 'start'; + this.chartAnimationTrigger = 'start'; + } + private show(): void { + this.listAnimationTrigger = 'end'; + this.chartAnimationTrigger = 'end'; + } + getFirstAgent(): string { + const firstKey = Object.keys(this.agentHistogramData['serverList']).sort()[0]; + return Object.keys(this.agentHistogramData['serverList'][firstKey]['instanceList']).sort()[0]; + } + onSelectAgent(agentName: string): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.SELECT_AGENT); + this.storeHelperService.dispatch(new Actions.ChangeAgentForServerList({ + agent: agentName, + responseSummary: this.agentHistogramData['agentHistogram'][agentName], + load: this.agentHistogramData['agentTimeSeriesHistogram'][agentName] + })); + this.selectedAgent = agentName; + this.changeDetector.detectChanges(); + } + onOpenInspector(agentName: string): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.OPEN_INSPECTOR_WITH_AGENT); + this.urlRouteManagerService.openPage([ + UrlPath.INSPECTOR, + this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getUrlStr(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.PERIOD).getValueWithTime(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.END_TIME).getEndTime(), + agentName + ]); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/info-per-server/info-per-server-for-filtered-map-container.component.css b/web/src/main/webapp/v2/src/app/core/components/info-per-server/info-per-server-for-filtered-map-container.component.css new file mode 100644 index 000000000000..510be65bcd4c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/info-per-server/info-per-server-for-filtered-map-container.component.css @@ -0,0 +1,113 @@ +:host { + z-index: 9; +} +.l-sidemenu2 { + position: absolute; + top: 0px; + left: 0px; + width: 461px; + border-left: 1px solid #e5e8f0; + border-right: 1px solid #e5e8f0; + background: #fff; + height: 100%; + overflow-y: auto; + overflow-x: hidden; +} +.l-title-group2 { + display: flex; + flex-flow: row wrap; + color: #666; + justify-content: space-between; + align-items: center; + padding: 0 25px; + background: none; + border: none; + height: 50px; +} +.l-selected-agent { + color: #666; + font-size: 13px; +} +.l-selected-agent button { + color: #fff; + font-size: 11px; + font-weight: 600; + display: inline-block; + background: #4b99e3; + margin: 0 12px 0 0; + padding: 6px 11px; + line-height: 1em; + position: relative; +} +.l-selected-agent button:after { + content:''; + position:absolute; + width:0; + height:0; + border-top:4px solid transparent; + border-bottom:4px solid transparent; + border-left:3px solid #4b99e3; + right:-3px; + top:50%; + transform:translateY(-50%); +} +.l-contents-group { + padding-bottom: 16px; + overflow-y: auto; + overflow-x: hidden; + margin-top: 51px; +} +.l-chart-group-list { + flex: 1; +} + +.l-sidemenu3 { + top: 0px; + left: 0px; + width: 348px; + background: #f8f9fb; + border: none; + position: absolute; + height: 100%; + overflow-y: auto; + overflow-x: hidden; +} +.l-title-group3 { + display: flex; + flex-flow: row wrap; + align-items: center; + height: 64px; + padding: 0 25px; + position: relative; +} +.l-title-group3 .fas { + font-size: 14px; + width: 33px; + height: 33px; + border-radius: 50%; + background: #4a8fd2; + color: #fff; + align-items: center; + display: flex; + justify-content: center; + margin: 0 7px 0 0; +} +.l-title-group3 .l-title { + font-size: 24px; + font-weight: 600; + color: #666; +} + + +.sidemenu { + top: 0px; + left: -461px; +} +.title-group2 { + background-color: #f9fafc; + border-bottom: 1px solid #eaeef4; +} +hr { + height: 1px; + border-top: 1px solid #EAEEF4; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/info-per-server/info-per-server-for-filtered-map-container.component.html b/web/src/main/webapp/v2/src/app/core/components/info-per-server/info-per-server-for-filtered-map-container.component.html new file mode 100644 index 000000000000..16b0da2780e9 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/info-per-server/info-per-server-for-filtered-map-container.component.html @@ -0,0 +1,29 @@ +
+
+

+ + {{ selectedAgent }} +

+
+
+
+ +
+ +
+ +
+
+
+
+
+ + Servers List +
+
+ +
+
diff --git a/web/src/main/webapp/v2/src/app/core/components/info-per-server/info-per-server-for-filtered-map-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/info-per-server/info-per-server-for-filtered-map-container.component.ts new file mode 100644 index 000000000000..c60bb3062f24 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/info-per-server/info-per-server-for-filtered-map-container.component.ts @@ -0,0 +1,133 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { trigger, state, style, animate, transition } from '@angular/animations'; +import { Subject } from 'rxjs'; + +import { + StoreHelperService, + NewUrlStateNotificationService, + UrlRouteManagerService, + AnalyticsService, + TRACKED_EVENT_LIST +} from 'app/shared/services'; +import { Actions } from 'app/shared/store'; +import { UrlPath, UrlPathId } from 'app/shared/models'; +import { ServerMapData } from 'app/core/components/server-map/class/server-map-data.class'; + +@Component({ + selector: 'pp-info-per-server-for-filtered-map-container', + templateUrl: './info-per-server-for-filtered-map-container.component.html', + styleUrls: ['./info-per-server-for-filtered-map-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush, + animations: [ + trigger('listAnimationTrigger', [ + state('start', style({ + left: '0px' + })), + state('end', style({ + left: '-809px' + })), + transition('* => *', [ + animate('0.2s 0.5s ease-out') + ]) + ]), + trigger('chartAnimationTrigger', [ + state('start', style({ + left: '0px' + })), + state('end', style({ + left: '-461px' + })), + transition('* => *', [ + animate('0.2s 0s ease-out') + ]) + ]), + ] +}) +export class InfoPerServerForFilteredMapContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + selectedTarget: ISelectedTarget; + serverMapData: ServerMapData; + agentHistogramData: any; + selectedAgent = ''; + listAnimationTrigger = 'start'; + chartAnimationTrigger = 'start'; + constructor( + private changeDetector: ChangeDetectorRef, + private storeHelperService: StoreHelperService, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private urlRouteManagerService: UrlRouteManagerService, + private analyticsService: AnalyticsService, + ) {} + ngOnInit() { + this.connectStore(); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private connectStore(): void { + this.storeHelperService.getServerMapTargetSelected(this.unsubscribe).subscribe((target: ISelectedTarget) => { + this.selectedTarget = target; + }); + this.storeHelperService.getServerMapData(this.unsubscribe).subscribe((serverMapData: ServerMapData) => { + this.serverMapData = serverMapData; + }); + this.storeHelperService.getInfoPerServerState(this.unsubscribe).subscribe((visibleState: boolean) => { + if (this.selectedTarget && this.selectedTarget.isNode) { + if (visibleState === true) { + const node = this.serverMapData.getNodeData(this.selectedTarget.node[0]); + this.show(); + this.agentHistogramData = { + serverList: node.serverList, + agentHistogram: node.agentHistogram, + agentTimeSeriesHistogram: node.agentTimeSeriesHistogram, + isWas: node.isWas + }; + this.changeDetector.detectChanges(); + this.storeHelperService.dispatch(new Actions.UpdateServerList(this.agentHistogramData)); + this.onSelectAgent(this.getFirstAgent()); + this.storeHelperService.dispatch(new Actions.ChangeInfoPerServerVisibleState(true)); + } else { + this.hide(); + this.changeDetector.detectChanges(); + this.storeHelperService.dispatch(new Actions.ChangeInfoPerServerVisibleState(false)); + } + } + }); + } + private hide(): void { + this.listAnimationTrigger = 'start'; + this.chartAnimationTrigger = 'start'; + } + private show(): void { + this.listAnimationTrigger = 'end'; + this.chartAnimationTrigger = 'end'; + } + isWAS(): boolean { + return this.selectedTarget.isWAS; + } + getFirstAgent(): string { + const firstKey = Object.keys(this.agentHistogramData['serverList']).sort()[0]; + return Object.keys(this.agentHistogramData['serverList'][firstKey]['instanceList']).sort()[0]; + } + onSelectAgent(agentName: string): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.SELECT_AGENT); + this.storeHelperService.dispatch(new Actions.ChangeAgentForServerList({ + agent: agentName, + responseSummary: this.agentHistogramData['agentHistogram'][agentName], + load: this.agentHistogramData['agentTimeSeriesHistogram'][agentName] + })); + this.selectedAgent = agentName; + this.changeDetector.detectChanges(); + } + onOpenInspector(agentName: string): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.OPEN_INSPECTOR_WITH_AGENT); + this.urlRouteManagerService.openPage([ + UrlPath.INSPECTOR, + this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getUrlStr(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.PERIOD).getValueWithTime(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.END_TIME).getEndTime(), + agentName + ]); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-active-thread-chart-container.component.css b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-active-thread-chart-container.component.css new file mode 100644 index 000000000000..7e076f488d6b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-active-thread-chart-container.component.css @@ -0,0 +1,25 @@ +:host { + display: block; + width: calc(50% - 20px); + margin: 10px; +} +.l-content-item { + width: 100%; + margin: 0px; +} +.l-title-group { + height:34px; + font-size:13px; + font-weight:600; + padding:0 20px; + color:#333; + display: flex; + align-items: center; + justify-content:space-between; + background: #f6f8fb; +} +.l-title-group .fas { + font-size: 18px; + color:#a8acb5; + cursor:pointer; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-active-thread-chart-container.component.html b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-active-thread-chart-container.component.html new file mode 100644 index 000000000000..15084f4f991a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-active-thread-chart-container.component.html @@ -0,0 +1,10 @@ +
+
Active Thread
+ + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-active-thread-chart-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-active-thread-chart-container.component.ts new file mode 100644 index 000000000000..e15e4241f8f2 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-active-thread-chart-container.component.ts @@ -0,0 +1,250 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import * as moment from 'moment-timezone'; + +import { + WebAppSettingDataService, + NewUrlStateNotificationService, + AjaxExceptionCheckerService, + AnalyticsService, + StoreHelperService, + DynamicPopupService +} from 'app/shared/services'; +import { Actions } from 'app/shared/store'; +import { AgentActiveThreadChartDataService } from './agent-active-thread-chart-data.service'; +import { HELP_VIEWER_LIST } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; +import { InspectorChartContainer } from 'app/core/components/inspector-chart/inspector-chart-container'; +import { IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; + +@Component({ + selector: 'pp-agent-active-thread-chart-container', + templateUrl: './agent-active-thread-chart-container.component.html', + styleUrls: ['./agent-active-thread-chart-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class AgentActiveThreadChartContainerComponent extends InspectorChartContainer implements OnInit, OnDestroy { + constructor( + storeHelperService: StoreHelperService, + changeDetector: ChangeDetectorRef, + webAppSettingDataService: WebAppSettingDataService, + newUrlStateNotificationService: NewUrlStateNotificationService, + chartDataService: AgentActiveThreadChartDataService, + translateService: TranslateService, + ajaxExceptionCheckerService: AjaxExceptionCheckerService, + analyticsService: AnalyticsService, + dynamicPopupService: DynamicPopupService + ) { + super( + 10, + storeHelperService, + changeDetector, + webAppSettingDataService, + newUrlStateNotificationService, + chartDataService, + translateService, + ajaxExceptionCheckerService, + analyticsService, + dynamicPopupService + ); + } + + ngOnInit() { + this.initI18nText(); + this.initHoveredInfo(); + this.initTimezoneAndDateFormat(); + this.initChartData(); + } + + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + + protected parseData(data: number): number | null { + return data === -1 ? null : Number(data.toFixed(2)); + } + + protected makeChartData(chartData: IChartDataFromServer): {[key: string]: any} { + const xArr = []; + const fastArr = []; + const normalArr = []; + const slowArr = []; + const verySlowArr = []; + + const xData = chartData.charts.x; + const atFast = chartData.charts.y['ACTIVE_TRACE_FAST']; + const atNormal = chartData.charts.y['ACTIVE_TRACE_NORMAL']; + const atSlow = chartData.charts.y['ACTIVE_TRACE_SLOW']; + const atVerySlow = chartData.charts.y['ACTIVE_TRACE_VERY_SLOW']; + const dataCount = xData.length; + + for ( let i = 0 ; i < dataCount ; i++ ) { + xArr.push(moment(xData[i]).tz(this.timezone).format(this.dateFormat[0]) + '#' + moment(xData[i]).tz(this.timezone).format(this.dateFormat[1])); + if ( atFast.length === 0 ) { + continue; + } + fastArr.push(this.parseData(atFast[i][2])); + normalArr.push(this.parseData(atNormal[i][2])); + slowArr.push(this.parseData(atSlow[i][2])); + verySlowArr.push(this.parseData(atVerySlow[i][2])); + } + return { + x: xArr, + fast: fastArr, + normal: normalArr, + slow: slowArr, + verySlow: verySlowArr + }; + } + + protected makeDataOption(data: {[key: string]: any}): {[key: string]: any} { + return { + labels: data.x, + datasets: [{ + label: 'Fast', + data: data.fast, + fill: true, + borderWidth: 0.5, + borderColor: 'rgb(44, 160, 44)', + backgroundColor: 'rgba(44, 160, 44, 0.4)', + pointRadius: 0, + pointHoverRadius: 3 + }, { + label: 'Normal', + data: data.normal, + fill: true, + borderWidth: 0.5, + borderColor: 'rgb(60, 129, 250)', + backgroundColor: 'rgba(60, 129, 250, 0.4)', + pointRadius: 0, + pointHoverRadius: 3 + }, { + label: 'Slow', + data: data.slow, + fill: true, + borderWidth: 0.5, + borderColor: 'rgb(248, 199, 49)', + backgroundColor: 'rgba(248, 199, 49, 0.4)', + pointRadius: 0, + pointHoverRadius: 3 + }, { + label: 'Very Slow', + data: data.verySlow, + fill: true, + borderWidth: 0.5, + borderColor: 'rgb(246, 145, 36)', + backgroundColor: 'rgba(246, 145, 36, 0.4)', + pointRadius: 0, + pointHoverRadius: 3 + }] + }; + } + + protected makeNormalOption(data: {[key: string]: any}): {[key: string]: any} { + return { + responsive: true, + title: { + display: false, + text: 'Active Thread' + }, + tooltips: { + mode: 'index', + intersect: false, + callbacks: { + title: (value: {[key: string]: any}[]): string => { + return value[0].xLabel.join(' '); + }, + label: (value: {[key: string]: any}, d: {[key: string]: any}): string => { + return `${d.datasets[value.datasetIndex].label}: ${isNaN(value.yLabel) ? `-` : this.convertWithUnit(value.yLabel)}`; + } + } + }, + hover: { + mode: 'index', + intersect: false, + onHover: (event: MouseEvent, elements: {[key: string]: any}[]): void => { + if (!this.isDataEmpty(data)) { + this.storeHelperService.dispatch(new Actions.ChangeHoverOnInspectorCharts({ + index: event.type === 'mouseout' ? -1 : elements[0]._index, + offsetX: event.offsetX, + offsetY: event.offsetY + })); + } + }, + }, + scales: { + xAxes: [{ + display: true, + scaleLabel: { + display: false + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + maxTicksLimit: 4, + callback: (label: string): string[] => { + return label.split('#'); + }, + maxRotation: 0, + minRotation: 0, + fontSize: 11, + padding: 5 + } + }], + yAxes: [{ + display: true, + scaleLabel: { + display: true, + labelString: 'Active Thread (count)', + fontSize: 14, + fontStyle: 'bold' + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + beginAtZero: true, + maxTicksLimit: 5, + callback: (label: number): string => { + return this.convertWithUnit(label); + }, + min: 0, + max: this.isDataEmpty(data) ? this.defaultYMax : undefined, + padding: 5 + } + }] + }, + legend: { + display: true, + labels: { + boxWidth: 30, + padding: 10 + } + } + }; + } + + private convertWithUnit(value: number): string { + const unit = ['', 'K', 'M', 'G']; + let result = value; + let index = 0; + while ( result >= 1000 ) { + index++; + result /= 1000; + } + + result = Number.isInteger(result) ? result : Number(result.toFixed(2)); + return result + unit[index]; + } + + onShowHelp($event: MouseEvent): void { + super.onShowHelp($event, HELP_VIEWER_LIST.AGENT_ACTIVE_THREAD); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-active-thread-chart-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-active-thread-chart-data.service.ts new file mode 100644 index 000000000000..406a4aa90244 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-active-thread-chart-data.service.ts @@ -0,0 +1,24 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable } from 'rxjs'; + +import { IChartDataService, IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; +import { NewUrlStateNotificationService } from 'app/shared/services'; +import { UrlPathId } from 'app/shared/models'; +import { getParamForAgentChartData } from 'app/core/utils/chart-data-param-maker'; + +@Injectable() +export class AgentActiveThreadChartDataService implements IChartDataService { + private requestURL = 'getAgentStat/activeTrace/chart.pinpoint'; + + constructor( + private http: HttpClient, + private newUrlStateNotificationService: NewUrlStateNotificationService, + ) {} + + getData(range: number[]): Observable { + return this.http.get(this.requestURL, + getParamForAgentChartData(this.newUrlStateNotificationService.getPathValue(UrlPathId.AGENT_ID), range) + ); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-cpu-chart-container.component.css b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-cpu-chart-container.component.css new file mode 100644 index 000000000000..7e076f488d6b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-cpu-chart-container.component.css @@ -0,0 +1,25 @@ +:host { + display: block; + width: calc(50% - 20px); + margin: 10px; +} +.l-content-item { + width: 100%; + margin: 0px; +} +.l-title-group { + height:34px; + font-size:13px; + font-weight:600; + padding:0 20px; + color:#333; + display: flex; + align-items: center; + justify-content:space-between; + background: #f6f8fb; +} +.l-title-group .fas { + font-size: 18px; + color:#a8acb5; + cursor:pointer; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-cpu-chart-container.component.html b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-cpu-chart-container.component.html new file mode 100644 index 000000000000..deec38222b39 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-cpu-chart-container.component.html @@ -0,0 +1,10 @@ +
+
JVM/System CPU Usage
+ + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-cpu-chart-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-cpu-chart-container.component.ts new file mode 100644 index 000000000000..fb08ac8c7f65 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-cpu-chart-container.component.ts @@ -0,0 +1,213 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import * as moment from 'moment-timezone'; + +import { + WebAppSettingDataService, + NewUrlStateNotificationService, + AjaxExceptionCheckerService, + AnalyticsService, + StoreHelperService, + DynamicPopupService +} from 'app/shared/services'; +import { Actions } from 'app/shared/store'; +import { AgentCPUChartDataService } from './agent-cpu-chart-data.service'; +import { HELP_VIEWER_LIST } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; +import { InspectorChartContainer } from 'app/core/components/inspector-chart/inspector-chart-container'; +import { IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; + +@Component({ + selector: 'pp-agent-cpu-chart-container', + templateUrl: './agent-cpu-chart-container.component.html', + styleUrls: ['./agent-cpu-chart-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class AgentCPUChartContainerComponent extends InspectorChartContainer implements OnInit, OnDestroy { + constructor( + storeHelperService: StoreHelperService, + changeDetector: ChangeDetectorRef, + webAppSettingDataService: WebAppSettingDataService, + newUrlStateNotificationService: NewUrlStateNotificationService, + chartDataService: AgentCPUChartDataService, + translateService: TranslateService, + ajaxExceptionCheckerService: AjaxExceptionCheckerService, + analyticsService: AnalyticsService, + dynamicPopupService: DynamicPopupService + ) { + super( + 100, + storeHelperService, + changeDetector, + webAppSettingDataService, + newUrlStateNotificationService, + chartDataService, + translateService, + ajaxExceptionCheckerService, + analyticsService, + dynamicPopupService + ); + } + + ngOnInit() { + this.initI18nText(); + this.initHoveredInfo(); + this.initTimezoneAndDateFormat(); + this.initChartData(); + } + + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + + protected parseData(data: number): number | null { + return data === -1 ? null : Number(data.toFixed(2)); + } + + protected makeChartData(chartData: IChartDataFromServer): {[key: string]: any} { + const xArr = []; + const jvmArr = []; + const systemArr = []; + const maxArr = []; + + const xData = chartData.charts.x; + const cpuJVM = chartData.charts.y['CPU_LOAD_JVM']; + const cpuSystem = chartData.charts.y['CPU_LOAD_SYSTEM']; + const dataCount = xData.length; + + for ( let i = 0 ; i < dataCount ; i++ ) { + xArr.push(moment(xData[i]).tz(this.timezone).format(this.dateFormat[0]) + '#' + moment(xData[i]).tz(this.timezone).format(this.dateFormat[1])); + maxArr.push(100); + if ( cpuJVM.length === 0 ) { + continue; + } + jvmArr.push(this.parseData(cpuJVM[i][1])); + systemArr.push(this.parseData(cpuSystem[i][1])); + } + return { + x: xArr, + jvm: jvmArr, + system: systemArr + }; + } + + protected makeDataOption(data: {[key: string]: any}): {[key: string]: any} { + return { + labels: data.x, + datasets: [{ + label: 'JVM', + data: data.jvm, + fill: false, + borderWidth: 0.5, + borderColor: 'rgb(31, 119, 180)', + backgroundColor: 'rgba(31, 119, 180, 0.4)', + pointRadius: 0, + pointHoverRadius: 3 + }, { + label: 'System', + data: data.system, + fill: true, + borderWidth: 0.5, + borderColor: 'rgb(174, 199, 232)', + backgroundColor: 'rgba(174, 199, 232, 0.4)', + pointRadius: 0, + pointHoverRadius: 3 + }] + }; + } + + protected makeNormalOption(data: {[key: string]: any}): {[key: string]: any} { + return { + responsive: true, + title: { + display: false, + text: 'JVM/System CPU Usage' + }, + tooltips: { + mode: 'index', + intersect: false, + callbacks: { + title: (value: {[key: string]: any}[]): string => { + return value[0].xLabel.join(' '); + }, + label: (value: {[key: string]: any}, d: {[key: string]: any}): string => { + return `${d.datasets[value.datasetIndex].label}: ${isNaN(value.yLabel) ? `-` : value.yLabel}%`; + } + } + }, + hover: { + mode: 'index', + intersect: false, + onHover: (event: MouseEvent, elements: {[key: string]: any}[]): void => { + if (!this.isDataEmpty(data)) { + this.storeHelperService.dispatch(new Actions.ChangeHoverOnInspectorCharts({ + index: event.type === 'mouseout' ? -1 : elements[0]._index, + offsetX: event.offsetX, + offsetY: event.offsetY + })); + } + }, + }, + scales: { + xAxes: [{ + display: true, + scaleLabel: { + display: false + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + maxTicksLimit: 4, + callback: (label: string): string[] => { + return label.split('#'); + }, + maxRotation: 0, + minRotation: 0, + fontSize: 11, + padding: 5 + } + }], + yAxes: [{ + display: true, + scaleLabel: { + display: true, + labelString: 'CPU Usage (%)', + fontSize: 14, + fontStyle: 'bold' + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + beginAtZero: true, + maxTicksLimit: 5, + callback: (label: number): string => { + return `${label}%`; + }, + min: 0, + max: this.defaultYMax, + padding: 5 + } + }] + }, + legend: { + display: true, + labels: { + boxWidth: 30, + padding: 10 + } + } + }; + } + + onShowHelp($event: MouseEvent): void { + super.onShowHelp($event, HELP_VIEWER_LIST.AGENT_CPU_USAGE); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-cpu-chart-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-cpu-chart-data.service.ts new file mode 100644 index 000000000000..17c0078012b8 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-cpu-chart-data.service.ts @@ -0,0 +1,24 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable } from 'rxjs'; + +import { IChartDataService, IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; +import { NewUrlStateNotificationService } from 'app/shared/services'; +import { UrlPathId } from 'app/shared/models'; +import { getParamForAgentChartData } from 'app/core/utils/chart-data-param-maker'; + +@Injectable() +export class AgentCPUChartDataService implements IChartDataService { + private requestURL = 'getAgentStat/cpuLoad/chart.pinpoint'; + + constructor( + private http: HttpClient, + private newUrlStateNotificationService: NewUrlStateNotificationService, + ) {} + + getData(range: number[]): Observable { + return this.http.get(this.requestURL, + getParamForAgentChartData(this.newUrlStateNotificationService.getPathValue(UrlPathId.AGENT_ID), range) + ); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-container.component.css b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-container.component.css new file mode 100644 index 000000000000..8488ec0b669d --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-container.component.css @@ -0,0 +1,29 @@ +:host { + display: block; + width: calc(50% - 20px); + margin: 10px; +} +.l-content-item { + width: 100%; + margin: 0px; + position: relative; +} +.l-title-group { + height:34px; + font-size:13px; + font-weight:600; + padding:0 20px; + color:#333; + display: flex; + align-items: center; + justify-content:space-between; + background: #f6f8fb; +} +.l-title-text { + flex-basis: 70%; +} +.l-title-group .fas { + font-size: 18px; + color:#a8acb5; + cursor:pointer; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-container.component.html b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-container.component.html new file mode 100644 index 000000000000..6458cf60f67c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-container.component.html @@ -0,0 +1,26 @@ +
+
+

Data Source

+ + + + + +
+ + + + + + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-container.component.ts new file mode 100644 index 000000000000..76c6f2c1b5ee --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-container.component.ts @@ -0,0 +1,275 @@ +import { Component, OnInit, OnDestroy, ViewChild, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { InspectorChartComponent } from './inspector-chart.component'; +import { TranslateService } from '@ngx-translate/core'; +import { filter, skip, tap } from 'rxjs/operators'; +import * as moment from 'moment-timezone'; + +import { + WebAppSettingDataService, + NewUrlStateNotificationService, + AjaxExceptionCheckerService, + AnalyticsService, + StoreHelperService, + DynamicPopupService +} from 'app/shared/services'; +import { Actions } from 'app/shared/store'; +import { AgentDataSourceChartDataService, IAgentDataSourceChart } from './agent-data-source-chart-data.service'; +import { HELP_VIEWER_LIST } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; +import { InspectorChartContainer } from 'app/core/components/inspector-chart/inspector-chart-container'; + +@Component({ + selector: 'pp-agent-data-source-chart-container', + templateUrl: './agent-data-source-chart-container.component.html', + styleUrls: ['./agent-data-source-chart-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class AgentDataSourceChartContainerComponent extends InspectorChartContainer implements OnInit, OnDestroy { + @ViewChild(InspectorChartComponent) inspectorChartComponent: InspectorChartComponent; + private checkedSourceDataArr: {[key: string]: any}[]; + + sourceDataArr: {[key: string]: any}[]; + infoTableObj: {[key: string]: any}; + + constructor( + storeHelperService: StoreHelperService, + changeDetector: ChangeDetectorRef, + webAppSettingDataService: WebAppSettingDataService, + newUrlStateNotificationService: NewUrlStateNotificationService, + chartDataService: AgentDataSourceChartDataService, + translateService: TranslateService, + ajaxExceptionCheckerService: AjaxExceptionCheckerService, + analyticsService: AnalyticsService, + dynamicPopupService: DynamicPopupService + ) { + super( + 10, + storeHelperService, + changeDetector, + webAppSettingDataService, + newUrlStateNotificationService, + chartDataService, + translateService, + ajaxExceptionCheckerService, + analyticsService, + dynamicPopupService + ); + } + + ngOnInit() { + this.initI18nText(); + this.initHoveredInfo(); + this.initTimezoneAndDateFormat(); + this.initInfoTableObj(); + this.initChartData(); + } + + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + + private initInfoTableObj(): void { + this.infoTableObj = { + activeAvg: '-', + activeMax: '-', + totalMax: '-', + id: '-', + serviceType: '-', + databaseName: '-', + jdbcUrl: '-', + }; + } + + protected initHoveredInfo(): void { + this.hoveredInfo$ = this.storeHelperService.getHoverInfo(this.unsubscribe).pipe( + skip(1), + filter(() => { + return !(!this.chartConfig || this.chartConfig.isDataEmpty); + }), + tap((hoverInfo: IHoveredInfo) => this.updateInfoTable(hoverInfo)), + ); + } + + private updateInfoTable(hoverInfo: IHoveredInfo): void { + if (hoverInfo.index !== -1) { + const activeIndex = hoverInfo.index; // x축 기준 index + const activeElements = this.inspectorChartComponent.getActiveTooltipElements(activeIndex); + const eventCord = {x1: hoverInfo.offsetX, y1: hoverInfo.offsetY}; + const distanceArr = activeElements.map((element) => this.getDistanceBetweenPoints(eventCord, {x2: element._view.x, y2: element._view.y})); + const minDistance = Math.min(...distanceArr); + const elementIndex = distanceArr.indexOf(minDistance); // element들 중 event point에 가장 가까운 element의 index + if (elementIndex !== -1) { + this.infoTableObj = { + activeAvg: this.checkedSourceDataArr[elementIndex].activeAvg[activeIndex], + activeMax: this.checkedSourceDataArr[elementIndex].activeMax[activeIndex], + totalMax: this.checkedSourceDataArr[elementIndex].totalMax[activeIndex], + id: this.checkedSourceDataArr[elementIndex].id, + serviceType: this.checkedSourceDataArr[elementIndex].serviceType, + databaseName: this.checkedSourceDataArr[elementIndex].databaseName, + jdbcUrl: this.checkedSourceDataArr[elementIndex].jdbcUrl, + }; + } + } + } + + private getDistanceBetweenPoints({x1, y1}: {x1: number, y1: number}, {x2, y2}: {x2: number, y2: number}): number { + return Math.hypot(x1 - x2, y1 - y2); + } + + protected getChartData(range: number[]): void { + this.chartDataService.getData(range) + .subscribe( + (data: IAgentDataSourceChart[] | AjaxException) => { + if (this.ajaxExceptionCheckerService.isAjaxException(data)) { + this.setErrObj(data); + } else { + this.chartData = data; + this.sourceDataArr = this.makeChartData(data); + this.setChartConfig(this.sourceDataArr); + } + }, + (err) => { + this.setErrObj(); + } + ); + } + + onCheckedIdChange(checkedIdSet: Set): void { + this.setChartConfig(this.getCheckedSourceDataArr(checkedIdSet)); + } + + private getCheckedSourceDataArr(checkedIdSet: Set): {[key: string]: any}[] { + this.checkedSourceDataArr = this.sourceDataArr.filter((sourceData) => checkedIdSet.has(sourceData.id)); + return this.checkedSourceDataArr; + } + + protected makeChartData(chartDataArr: IAgentDataSourceChart[]): {[key: string]: any}[] { + return chartDataArr.map((chartData: IAgentDataSourceChart) => { + return { + x: chartData.charts.x.map((time: number) => moment(time).tz(this.timezone).format(this.dateFormat[0]) + '#' + moment(time).tz(this.timezone).format(this.dateFormat[1])), + activeAvg: chartData.charts.y['ACTIVE_CONNECTION_SIZE'].map((arr: number[]) => this.parseData(arr[2])), + activeMax: chartData.charts.y['ACTIVE_CONNECTION_SIZE'].map((arr: number[]) => this.parseData(arr[1])), + totalMax: chartData.charts.y['MAX_CONNECTION_SIZE'].map((arr: number[]) => this.parseData(arr[1])), + databaseName: chartData.databaseName, + id: chartData.id, + jdbcUrl: chartData.jdbcUrl, + serviceType: chartData.serviceType, + }; + }); + } + + protected makeDataOption(data: {[key: string]: any}[]): {[key: string]: any} { + const colorMap = [ + '#850901', '#969755', '#421416', '#c8814b', '#aa8735', '#cd7af4', '#f6546a', '#1c1a1f', '#127999', '#b7ebd9', + '#f6546a', '#bea87f', '#d1b4b0', '#e0d4ba', '#0795d9', '#43aa83', '#09d05b', '#c26e67', '#ed7575', '#96686a' + ]; + const labels = this.sourceDataArr[0].x; + + return { + labels, + datasets: data.map((obj, i) => { + return { + label: 'ActiveAvg', + data: obj.activeAvg, + fill: false, + borderWidth: 0.5, + borderColor: colorMap[i], + pointRadius: 0, + pointHoverRadius: 3 + }; + }) + }; + } + + protected makeNormalOption(data: {[key: string]: any}[]): {[key: string]: any} { + return { + responsive: true, + title: { + display: false, + text: 'Data Source' + }, + tooltips: { + mode: 'index', + intersect: false, + callbacks: { + title: (value: {[key: string]: any}[]): string => { + return value[0].xLabel.join(' '); + }, + label: (value: {[key: string]: any}, d: {[key: string]: any}): string => { + return ''; + } + } + }, + hover: { + mode: 'index', + intersect: false, + onHover: (event: MouseEvent, elements: {[key: string]: any}[]): void => { + if (!this.isDataEmpty(data)) { + this.storeHelperService.dispatch(new Actions.ChangeHoverOnInspectorCharts({ + index: event.type === 'mouseout' ? -1 : elements[0]._index, + offsetX: event.offsetX, + offsetY: event.offsetY + })); + } + }, + }, + scales: { + xAxes: [{ + display: true, + scaleLabel: { + display: false + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + maxTicksLimit: 4, + callback: (label: string): string[] => { + return label.split('#'); + }, + maxRotation: 0, + minRotation: 0, + fontSize: 11, + padding: 5 + } + }], + yAxes: [{ + display: true, + scaleLabel: { + display: true, + labelString: 'Connection (count)', + fontSize: 14, + fontStyle: 'bold' + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + beginAtZero: true, + maxTicksLimit: 5, + min: 0, + max: this.defaultYMax, + padding: 5 + } + }] + }, + legend: { + display: false, + labels: { + boxWidth: 30, + padding: 10 + } + } + }; + } + + onShowHelp($event: MouseEvent): void { + super.onShowHelp($event, HELP_VIEWER_LIST.AGENT_DATA_SOURCE); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-data.service.ts new file mode 100644 index 000000000000..d4f2faf570ad --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-data.service.ts @@ -0,0 +1,31 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable } from 'rxjs'; + +import { IChartDataService, IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; +import { NewUrlStateNotificationService } from 'app/shared/services'; +import { UrlPathId } from 'app/shared/models'; +import { getParamForAgentChartData } from 'app/core/utils/chart-data-param-maker'; + +export interface IAgentDataSourceChart extends IChartDataFromServer { + databaseName: string; + id: number; + jdbcUrl: string; + serviceType: string; +} + +@Injectable() +export class AgentDataSourceChartDataService implements IChartDataService { + private requestURL = 'getAgentStat/dataSource/chartList.pinpoint'; + + constructor( + private http: HttpClient, + private newUrlStateNotificationService: NewUrlStateNotificationService, + ) {} + + getData(range: number[]): Observable { + return this.http.get(this.requestURL, + getParamForAgentChartData(this.newUrlStateNotificationService.getPathValue(UrlPathId.AGENT_ID), range) + ); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-infotable.component.css b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-infotable.component.css new file mode 100644 index 000000000000..fd4125fa0dd1 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-infotable.component.css @@ -0,0 +1,24 @@ +.l-source-info-wrapper { + background-color: #fff; + font-size: 12px; + padding: 10px; +} +.l-source-info-title { + background-color: #f6f8fb; + border-top: 1px solid #ddd; + border-left: 1px solid #ddd; + border-right: 1px solid #ddd; + padding: 10px; +} +.l-source-info-table { + border: 1px solid #ddd; + width: 100%; +} +.l-source-info-table th, td { + border: 1px solid #ddd; + padding: 4px; + text-align: center; +} +.l-source-info-table th { + width: 20%; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-infotable.component.html b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-infotable.component.html new file mode 100644 index 000000000000..b9d9c7c5a61a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-infotable.component.html @@ -0,0 +1,35 @@ +
+

Data Source Info

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Active Avg{{infoTableObj.activeAvg}}
Active Max{{infoTableObj.activeMax}}
Total Max{{infoTableObj.totalMax}}
ID{{infoTableObj.id}}
Type{{infoTableObj.serviceType}}
Database Name{{infoTableObj.databaseName}}
Jdbc URL{{infoTableObj.jdbcUrl}}
+
diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-infotable.component.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-infotable.component.ts new file mode 100644 index 000000000000..637927d7ff00 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-infotable.component.ts @@ -0,0 +1,14 @@ +import { Component, OnInit, Input } from '@angular/core'; + +@Component({ + selector: 'pp-agent-data-source-chart-infotable', + templateUrl: './agent-data-source-chart-infotable.component.html', + styleUrls: ['./agent-data-source-chart-infotable.component.css'] +}) +export class AgentDataSourceChartInfotableComponent implements OnInit { + @Input() isDataEmpty: boolean; + @Input() infoTableObj: { [key: string]: any }; + + constructor() {} + ngOnInit() {} +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-select-source.component.css b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-select-source.component.css new file mode 100644 index 000000000000..3890e741da8d --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-select-source.component.css @@ -0,0 +1,40 @@ +.l-source-select-text { + cursor: pointer; + text-align: center; + font-weight: 400; +} +.l-source-select-text > .far { + font-size: 15px; + margin-left: 3px; +} +.l-source-select-modal { + position: absolute; + top: 34px; + right: 0px; + border: 1px solid black; + width: 100%; + z-index: 1000; + padding: 15px; + background-color: #fff; + font-weight: 400; +} +.l-select-all-button { + width: 80px; + border: 1px solid #ccc; + border-radius: 3px; + padding: 5px; +} +.l-source-data-list { + margin-top: 10px; + border-top: 1px solid #ddd; + padding: 10px 0; +} +.l-source-data-list-item { + display: inline-block; +} +.l-list-item-label { + margin-right: 20px; +} +.l-list-item-input { + margin-right: 5px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-select-source.component.html b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-select-source.component.html new file mode 100644 index 000000000000..6aec8779aa3c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-select-source.component.html @@ -0,0 +1,12 @@ +

Select Source

+
+ +
    +
  • + +
  • +
+
diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-select-source.component.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-select-source.component.ts new file mode 100644 index 000000000000..d2239bf9d736 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-data-source-chart-select-source.component.ts @@ -0,0 +1,49 @@ +import { Component, OnInit, OnChanges, Input, Output, EventEmitter, SimpleChanges } from '@angular/core'; + +@Component({ + selector: 'pp-agent-data-source-chart-select-source', + templateUrl: './agent-data-source-chart-select-source.component.html', + styleUrls: ['./agent-data-source-chart-select-source.component.css'] +}) +export class AgentDataSourceChartSelectSourceComponent implements OnInit, OnChanges { + @Input() isDataEmpty: boolean; + @Input() sourceDataArr: { [key: string]: any }[]; + @Output() outCheckedIdChange: EventEmitter> = new EventEmitter(); + + showSourceSelectModal = false; + checkedIdSet = new Set(); + + constructor() {} + ngOnInit() {} + ngOnChanges(changes: SimpleChanges) { + Object.keys(changes).map((propName: string) => { + switch (propName) { + case 'sourceDataArr': + this.initCheckedIdSet(); + break; + } + }); + } + + onSourceSelectClick(): void { + this.showSourceSelectModal = !this.showSourceSelectModal; + } + + onCheckAllBtnClick(): void { + this.initCheckedIdSet(); + } + + onSourceCheckboxChange(id: number): void { + this.toggleCheckedId(id); + } + + private initCheckedIdSet(): void { + this.sourceDataArr.map((data) => this.checkedIdSet.add(data.id)); + this.outCheckedIdChange.emit(this.checkedIdSet); + } + + private toggleCheckedId(id: number): void { + this.checkedIdSet.has(id) ? this.checkedIdSet.delete(id) : this.checkedIdSet.add(id); + this.outCheckedIdChange.emit(this.checkedIdSet); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-direct-buffer-chart-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-direct-buffer-chart-data.service.ts new file mode 100644 index 000000000000..941ce135078a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-direct-buffer-chart-data.service.ts @@ -0,0 +1,24 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable } from 'rxjs'; + +import { IChartDataService, IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; +import { NewUrlStateNotificationService } from 'app/shared/services'; +import { UrlPathId } from 'app/shared/models'; +import { getParamForAgentChartData } from 'app/core/utils/chart-data-param-maker'; + +@Injectable() +export class AgentDirectBufferChartDataService implements IChartDataService { + private requestURL = 'getAgentStat/directBuffer/chart.pinpoint'; + + constructor( + private http: HttpClient, + private newUrlStateNotificationService: NewUrlStateNotificationService, + ) {} + + getData(range: number[]): Observable { + return this.http.get(this.requestURL, + getParamForAgentChartData(this.newUrlStateNotificationService.getPathValue(UrlPathId.AGENT_ID), range) + ); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-direct-buffer-count-chart-container.component.css b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-direct-buffer-count-chart-container.component.css new file mode 100644 index 000000000000..7e076f488d6b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-direct-buffer-count-chart-container.component.css @@ -0,0 +1,25 @@ +:host { + display: block; + width: calc(50% - 20px); + margin: 10px; +} +.l-content-item { + width: 100%; + margin: 0px; +} +.l-title-group { + height:34px; + font-size:13px; + font-weight:600; + padding:0 20px; + color:#333; + display: flex; + align-items: center; + justify-content:space-between; + background: #f6f8fb; +} +.l-title-group .fas { + font-size: 18px; + color:#a8acb5; + cursor:pointer; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-direct-buffer-count-chart-container.component.html b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-direct-buffer-count-chart-container.component.html new file mode 100644 index 000000000000..3c458cdafe47 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-direct-buffer-count-chart-container.component.html @@ -0,0 +1,10 @@ +
+
Direct Buffer Count
+ + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-direct-buffer-count-chart-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-direct-buffer-count-chart-container.component.ts new file mode 100644 index 000000000000..d95c82603910 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-direct-buffer-count-chart-container.component.ts @@ -0,0 +1,178 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import * as moment from 'moment-timezone'; + +import { + WebAppSettingDataService, + NewUrlStateNotificationService, + AjaxExceptionCheckerService, + AnalyticsService, + StoreHelperService, + DynamicPopupService +} from 'app/shared/services'; +import { Actions } from 'app/shared/store'; +import { AgentDirectBufferChartDataService } from './agent-direct-buffer-chart-data.service'; +import { HELP_VIEWER_LIST } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; +import { InspectorChartContainer } from 'app/core/components/inspector-chart/inspector-chart-container'; +import { IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; + +@Component({ + selector: 'pp-agent-direct-buffer-count-chart-container', + templateUrl: './agent-direct-buffer-count-chart-container.component.html', + styleUrls: ['./agent-direct-buffer-count-chart-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class AgentDirectBufferCountChartContainerComponent extends InspectorChartContainer implements OnInit, OnDestroy { + constructor( + storeHelperService: StoreHelperService, + changeDetector: ChangeDetectorRef, + webAppSettingDataService: WebAppSettingDataService, + newUrlStateNotificationService: NewUrlStateNotificationService, + chartDataService: AgentDirectBufferChartDataService, + translateService: TranslateService, + ajaxExceptionCheckerService: AjaxExceptionCheckerService, + analyticsService: AnalyticsService, + dynamicPopupService: DynamicPopupService + ) { + super( + 100, + storeHelperService, + changeDetector, + webAppSettingDataService, + newUrlStateNotificationService, + chartDataService, + translateService, + ajaxExceptionCheckerService, + analyticsService, + dynamicPopupService + ); + } + + ngOnInit() { + this.initI18nText(); + this.initHoveredInfo(); + this.initTimezoneAndDateFormat(); + this.initChartData(); + } + + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + + protected makeChartData(data: IChartDataFromServer): {[key: string]: any} { + return { + x: data.charts.x.map((time: number) => moment(time).tz(this.timezone).format(this.dateFormat[0]) + '#' + moment(time).tz(this.timezone).format(this.dateFormat[1])), + directCount: data.charts.y['DIRECT_COUNT'].map((arr: number[]) => this.parseData(arr[2])), + }; + } + + protected makeDataOption(data: {[key: string]: any}): {[key: string]: any} { + return { + labels: data.x, + datasets: [{ + type: 'line', + label: 'Direct Buffer Count', + data: data.directCount, + fill: true, + borderWidth: 0.5, + borderColor: 'rgb(31, 119, 180, 0.4)', + backgroundColor: 'rgb(31, 119, 180, 0.4)', + pointRadius: 0, + pointHoverRadius: 3 + }] + }; + } + + protected makeNormalOption(data: {[key: string]: any}): {[key: string]: any} { + return { + responsive: true, + title: { + display: false, + text: 'Direct Buffer Count' + }, + tooltips: { + mode: 'index', + intersect: false, + callbacks: { + title: (value: {[key: string]: any}[]): string => { + return value[0].xLabel.join(' '); + }, + label: (value: {[key: string]: any}, d: {[key: string]: any}): string => { + return `${d.datasets[value.datasetIndex].label}: ${isNaN(value.yLabel) ? `-` : value.yLabel}`; + } + } + }, + hover: { + mode: 'index', + intersect: false, + onHover: (event: MouseEvent, elements: {[key: string]: any}[]): void => { + if (!this.isDataEmpty(data)) { + this.storeHelperService.dispatch(new Actions.ChangeHoverOnInspectorCharts({ + index: event.type === 'mouseout' ? -1 : elements[0]._index, + offsetX: event.offsetX, + offsetY: event.offsetY + })); + } + }, + }, + scales: { + xAxes: [{ + display: true, + scaleLabel: { + display: false + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + maxTicksLimit: 4, + callback: (label: string): string[] => { + return label.split('#'); + }, + maxRotation: 0, + minRotation: 0, + fontSize: 11, + padding: 5 + } + }], + yAxes: [{ + display: true, + scaleLabel: { + display: true, + labelString: 'Buffer (count)', + fontSize: 14, + fontStyle: 'bold' + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + beginAtZero: true, + maxTicksLimit: 5, + min: 0, + max: this.isDataEmpty(data) ? this.defaultYMax : undefined, + padding: 5 + } + }] + }, + legend: { + display: true, + labels: { + boxWidth: 30, + padding: 10 + } + } + }; + } + + onShowHelp($event: MouseEvent): void { + super.onShowHelp($event, HELP_VIEWER_LIST.AGENT_DIRECT_BUFFER_COUNT); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-direct-buffer-memory-chart-container.component.css b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-direct-buffer-memory-chart-container.component.css new file mode 100644 index 000000000000..7e076f488d6b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-direct-buffer-memory-chart-container.component.css @@ -0,0 +1,25 @@ +:host { + display: block; + width: calc(50% - 20px); + margin: 10px; +} +.l-content-item { + width: 100%; + margin: 0px; +} +.l-title-group { + height:34px; + font-size:13px; + font-weight:600; + padding:0 20px; + color:#333; + display: flex; + align-items: center; + justify-content:space-between; + background: #f6f8fb; +} +.l-title-group .fas { + font-size: 18px; + color:#a8acb5; + cursor:pointer; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-direct-buffer-memory-chart-container.component.html b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-direct-buffer-memory-chart-container.component.html new file mode 100644 index 000000000000..fa23ce97c70c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-direct-buffer-memory-chart-container.component.html @@ -0,0 +1,10 @@ +
+
Direct Buffer Memory
+ + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-direct-buffer-memory-chart-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-direct-buffer-memory-chart-container.component.ts new file mode 100644 index 000000000000..784c8bcf52e0 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-direct-buffer-memory-chart-container.component.ts @@ -0,0 +1,190 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import * as moment from 'moment-timezone'; + +import { Actions } from 'app/shared/store'; +import { WebAppSettingDataService, NewUrlStateNotificationService, AjaxExceptionCheckerService, AnalyticsService, StoreHelperService, DynamicPopupService } from 'app/shared/services'; +import { AgentDirectBufferChartDataService } from 'app/core/components/inspector-chart/agent-direct-buffer-chart-data.service'; +import { HELP_VIEWER_LIST } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; +import { InspectorChartContainer } from 'app/core/components/inspector-chart/inspector-chart-container'; +import { IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; + +@Component({ + selector: 'pp-agent-direct-buffer-memory-chart-container', + templateUrl: './agent-direct-buffer-memory-chart-container.component.html', + styleUrls: ['./agent-direct-buffer-memory-chart-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class AgentDirectBufferMemoryChartContainerComponent extends InspectorChartContainer implements OnInit, OnDestroy { + constructor( + storeHelperService: StoreHelperService, + changeDetector: ChangeDetectorRef, + webAppSettingDataService: WebAppSettingDataService, + newUrlStateNotificationService: NewUrlStateNotificationService, + chartDataService: AgentDirectBufferChartDataService, + translateService: TranslateService, + ajaxExceptionCheckerService: AjaxExceptionCheckerService, + analyticsService: AnalyticsService, + dynamicPopupService: DynamicPopupService + ) { + super( + 100, + storeHelperService, + changeDetector, + webAppSettingDataService, + newUrlStateNotificationService, + chartDataService, + translateService, + ajaxExceptionCheckerService, + analyticsService, + dynamicPopupService + ); + } + + ngOnInit() { + this.initI18nText(); + this.initHoveredInfo(); + this.initTimezoneAndDateFormat(); + this.initChartData(); + } + + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + + protected makeChartData(data: IChartDataFromServer): {[key: string]: any} { + return { + x: data.charts.x.map((time: number) => moment(time).tz(this.timezone).format(this.dateFormat[0]) + '#' + moment(time).tz(this.timezone).format(this.dateFormat[1])), + directMemoryUsed: data.charts.y['DIRECT_MEMORY_USED'].map((arr: number[]) => this.parseData(arr[2])), + }; + } + + protected makeDataOption(data: {[key: string]: any}): {[key: string]: any} { + return { + labels: data.x, + datasets: [{ + type: 'line', + label: 'Direct Buffer Memory', + data: data.directMemoryUsed, + fill: true, + borderWidth: 0.5, + borderColor: 'rgb(31, 119, 180, 0.4)', + backgroundColor: 'rgb(31, 119, 180, 0.4)', + pointRadius: 0, + pointHoverRadius: 3 + }] + }; + } + + protected makeNormalOption(data: {[key: string]: any}): {[key: string]: any} { + return { + responsive: true, + title: { + display: false, + text: 'Direct Buffer Memory' + }, + tooltips: { + mode: 'index', + intersect: false, + callbacks: { + title: (value: {[key: string]: any}[]): string => { + return value[0].xLabel.join(' '); + }, + label: (value: {[key: string]: any}, d: {[key: string]: any}): string => { + return `${d.datasets[value.datasetIndex].label}: ${isNaN(value.yLabel) ? `-` : this.convertWithUnit(value.yLabel)}`; + } + } + }, + hover: { + mode: 'index', + intersect: false, + onHover: (event: MouseEvent, elements: {[key: string]: any}[]): void => { + if (!this.isDataEmpty(data)) { + const hoverInfo: IHoveredInfo = { + index: event.type === 'mouseout' ? -1 : elements[0]._index + }; + if (hoverInfo.index !== -1) { + hoverInfo.offsetX = event.offsetX; + hoverInfo.offsetY = event.offsetY; + } + this.storeHelperService.dispatch(new Actions.ChangeHoverOnInspectorCharts(hoverInfo)); + } + }, + }, + scales: { + xAxes: [{ + display: true, + scaleLabel: { + display: false + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + maxTicksLimit: 4, + callback: (label: string): string[] => { + return label.split('#'); + }, + maxRotation: 0, + minRotation: 0, + fontSize: 11, + padding: 5 + } + }], + yAxes: [{ + display: true, + scaleLabel: { + display: true, + labelString: 'Memory (bytes)', + fontSize: 14, + fontStyle: 'bold' + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + beginAtZero: true, + maxTicksLimit: 5, + callback: (label: number): string => { + return this.convertWithUnit(label); + }, + min: 0, + max: this.isDataEmpty(data) ? this.defaultYMax : undefined, + padding: 5 + } + }] + }, + legend: { + display: true, + labels: { + boxWidth: 30, + padding: 10 + } + } + }; + } + + private convertWithUnit(value: number): string { + const unit = ['', 'K', 'M', 'G']; + let result = value; + let index = 0; + while ( result >= 1000 ) { + index++; + result /= 1000; + } + + result = Number.isInteger(result) ? result : Number(result.toFixed(2)); + return result + unit[index]; + } + + onShowHelp($event: MouseEvent): void { + super.onShowHelp($event, HELP_VIEWER_LIST.AGENT_DIRECT_BUFFER_MEMORY); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-jvm-heap-chart-container.component.css b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-jvm-heap-chart-container.component.css new file mode 100644 index 000000000000..7e076f488d6b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-jvm-heap-chart-container.component.css @@ -0,0 +1,25 @@ +:host { + display: block; + width: calc(50% - 20px); + margin: 10px; +} +.l-content-item { + width: 100%; + margin: 0px; +} +.l-title-group { + height:34px; + font-size:13px; + font-weight:600; + padding:0 20px; + color:#333; + display: flex; + align-items: center; + justify-content:space-between; + background: #f6f8fb; +} +.l-title-group .fas { + font-size: 18px; + color:#a8acb5; + cursor:pointer; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-jvm-heap-chart-container.component.html b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-jvm-heap-chart-container.component.html new file mode 100644 index 000000000000..211d0ea16cd6 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-jvm-heap-chart-container.component.html @@ -0,0 +1,10 @@ +
+
Heap Usage
+ + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-jvm-heap-chart-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-jvm-heap-chart-container.component.ts new file mode 100644 index 000000000000..d8558d1cb5c3 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-jvm-heap-chart-container.component.ts @@ -0,0 +1,282 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import * as moment from 'moment-timezone'; + +import { Actions } from 'app/shared/store'; +import { WebAppSettingDataService, NewUrlStateNotificationService, AjaxExceptionCheckerService, AnalyticsService, StoreHelperService, DynamicPopupService } from 'app/shared/services'; +import { AgentMemoryChartDataService } from './agent-memory-chart-data.service'; +import { HELP_VIEWER_LIST } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; +import { InspectorChartContainer } from 'app/core/components/inspector-chart/inspector-chart-container'; +import { IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; + +@Component({ + selector: 'pp-agent-jvm-heap-chart-container', + templateUrl: './agent-jvm-heap-chart-container.component.html', + styleUrls: ['./agent-jvm-heap-chart-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class AgentJVMHeapChartContainerComponent extends InspectorChartContainer implements OnInit, OnDestroy { + constructor( + storeHelperService: StoreHelperService, + changeDetector: ChangeDetectorRef, + webAppSettingDataService: WebAppSettingDataService, + newUrlStateNotificationService: NewUrlStateNotificationService, + chartDataService: AgentMemoryChartDataService, + translateService: TranslateService, + ajaxExceptionCheckerService: AjaxExceptionCheckerService, + analyticsService: AnalyticsService, + dynamicPopupService: DynamicPopupService + ) { + super( + 100, + storeHelperService, + changeDetector, + webAppSettingDataService, + newUrlStateNotificationService, + chartDataService, + translateService, + ajaxExceptionCheckerService, + analyticsService, + dynamicPopupService + ); + } + + ngOnInit() { + this.initI18nText(); + this.initHoveredInfo(); + this.initTimezoneAndDateFormat(); + this.initChartData(); + } + + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + + protected setChartConfig(data: {[key: string]: any}): void { + this.chartConfig = { + type: 'bar', + dataConfig: this.makeDataOption(data), + elseConfig: this.makeNormalOption(data), + isDataEmpty: this.isDataEmpty(data) + }; + this.changeDetector.detectChanges(); + } + + protected makeChartData(chartData: IChartDataFromServer): {[key: string]: any} { + const xArr = []; + const maxArr = []; + const usedArr = []; + const fgcTimeArr = []; + const fgcCountArr = []; + + const xData = chartData.charts.x; + const gcOldTime = chartData.charts.y['JVM_GC_OLD_TIME']; + const gcOldCount = chartData.charts.y['JVM_GC_OLD_COUNT']; + const memoryUsed = chartData.charts.y['JVM_MEMORY_HEAP_USED']; + const memoryMax = chartData.charts.y['JVM_MEMORY_HEAP_MAX']; + const dataCount = xData.length; + + let totalSumGCTime = 0; + for ( let i = 0 ; i < dataCount ; i++ ) { + xArr.push(moment(xData[i]).tz(this.timezone).format(this.dateFormat[0]) + '#' + moment(xData[i]).tz(this.timezone).format(this.dateFormat[1])); + if ( memoryMax.length === 0 ) { + continue; + } + maxArr.push(this.parseData(memoryMax[i][1])); + usedArr.push(this.parseData(memoryUsed[i][1])); + + const gcOldCountSumValue = gcOldCount[i][3]; + const gcOldTimeSumValue = gcOldTime[i][3]; + + if ( gcOldTimeSumValue > 0 ) { + totalSumGCTime += gcOldTimeSumValue; + } + if ( gcOldCountSumValue > 0 ) { + fgcTimeArr.push(totalSumGCTime); + fgcCountArr.push(gcOldCountSumValue); + totalSumGCTime = 0; + } else { + fgcTimeArr.push(0); + fgcCountArr.push(0); + } + } + return { + x: xArr, + max: maxArr, + used: usedArr, + fgcTime: fgcTimeArr, + fgcCount: fgcCountArr + }; + } + + protected makeDataOption(data: {[key: string]: any}): {[key: string]: any} { + return { + labels: data.x, + datasets: [{ + type: 'line', + label: 'Max', + data: data.max, + fill: false, + borderWidth: 0.5, + borderColor: 'rgb(174, 199, 232)', + backgroundColor: 'rgb(174, 199, 232)', + pointRadius: 0, + pointHoverRadius: 3 + }, { + type: 'line', + label: 'Used', + data: data.used, + fill: true, + borderWidth: 0.5, + borderColor: 'rgb(31, 119, 180)', + backgroundColor: 'rgba(31, 119, 180, 0.4)', + pointRadius: 0, + pointHoverRadius: 3 + }, { + type: 'bar', + label: 'FGC', + data: data.fgcTime, + borderWidth: 1, + borderColor: 'rgb(255, 42, 0)', + backgroundColor: 'rgba(255, 42, 0, 0.3)', + // pointRadius: 0, + // pointHoverRadius: 3, + yAxisID: 'y-axis-2' + }] + }; + } + + protected makeNormalOption(data: {[key: string]: any}): {[key: string]: any} { + return { + responsive: true, + title: { + display: false, + text: 'Heap Usage' + }, + tooltips: { + mode: 'index', + intersect: false, + callbacks: { + title: (value: {[key: string]: any}[]): string => { + return value[0].xLabel.join(' '); + }, + label: (value: {[key: string]: any}, d: {[key: string]: any}): string => { + return `${d.datasets[value.datasetIndex].label}: ${isNaN(value.yLabel) ? `-` : this.convertWithUnit(value.yLabel)}`; + } + } + }, + hover: { + mode: 'index', + intersect: false, + onHover: (event: MouseEvent, elements: {[key: string]: any}[]): void => { + if (!this.isDataEmpty(data)) { + this.storeHelperService.dispatch(new Actions.ChangeHoverOnInspectorCharts({ + index: event.type === 'mouseout' ? -1 : elements[0]._index, + offsetX: event.offsetX, + offsetY: event.offsetY + })); + } + }, + }, + scales: { + xAxes: [{ + display: true, + scaleLabel: { + display: false + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + maxTicksLimit: 4, + callback: (label: string): string[] => { + return label.split('#'); + }, + maxRotation: 0, + minRotation: 0, + fontSize: 11, + padding: 5 + } + }], + yAxes: [{ + id: 'y-axis-1', + display: true, + position: 'left', + scaleLabel: { + display: true, + labelString: 'Memory (bytes)', + fontSize: 14, + fontStyle: 'bold' + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + beginAtZero: true, + maxTicksLimit: 5, + callback: (label: number): string => { + return this.convertWithUnit(label); + }, + min: 0, + max: this.isDataEmpty(data) ? this.defaultYMax : undefined, + padding: 5 + } + }, + { + id: 'y-axis-2', + display: true, + position: 'right', + scaleLabel: { + display: true, + labelString: 'Full GC (ms)', + fontSize: 14, + fontStyle: 'bold' + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + beginAtZero: true, + maxTicksLimit: 5, + min: 0, + padding: 5 + } + }] + }, + legend: { + display: true, + labels: { + boxWidth: 30, + padding: 10 + } + } + }; + } + + private convertWithUnit(value: number): string { + const unit = ['', 'K', 'M', 'G']; + let result = value; + let index = 0; + while ( result >= 1000 ) { + index++; + result /= 1000; + } + + result = Number.isInteger(result) ? result : Number(result.toFixed(2)); + return result + unit[index]; + } + + onShowHelp($event: MouseEvent): void { + super.onShowHelp($event, HELP_VIEWER_LIST.AGENT_HEAP); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-jvm-non-heap-chart-container.component.css b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-jvm-non-heap-chart-container.component.css new file mode 100644 index 000000000000..7e076f488d6b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-jvm-non-heap-chart-container.component.css @@ -0,0 +1,25 @@ +:host { + display: block; + width: calc(50% - 20px); + margin: 10px; +} +.l-content-item { + width: 100%; + margin: 0px; +} +.l-title-group { + height:34px; + font-size:13px; + font-weight:600; + padding:0 20px; + color:#333; + display: flex; + align-items: center; + justify-content:space-between; + background: #f6f8fb; +} +.l-title-group .fas { + font-size: 18px; + color:#a8acb5; + cursor:pointer; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-jvm-non-heap-chart-container.component.html b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-jvm-non-heap-chart-container.component.html new file mode 100644 index 000000000000..e908e6f83fb3 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-jvm-non-heap-chart-container.component.html @@ -0,0 +1,10 @@ +
+
Non Heap Usage
+ + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-jvm-non-heap-chart-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-jvm-non-heap-chart-container.component.ts new file mode 100644 index 000000000000..e1d26871012a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-jvm-non-heap-chart-container.component.ts @@ -0,0 +1,282 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import * as moment from 'moment-timezone'; + +import { Actions } from 'app/shared/store'; +import { WebAppSettingDataService, NewUrlStateNotificationService, AjaxExceptionCheckerService, AnalyticsService, StoreHelperService, DynamicPopupService } from 'app/shared/services'; +import { AgentMemoryChartDataService } from './agent-memory-chart-data.service'; +import { HELP_VIEWER_LIST } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; +import { InspectorChartContainer } from 'app/core/components/inspector-chart/inspector-chart-container'; +import { IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; + +@Component({ + selector: 'pp-agent-jvm-non-heap-chart-container', + templateUrl: './agent-jvm-non-heap-chart-container.component.html', + styleUrls: ['./agent-jvm-non-heap-chart-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class AgentJVMNonHeapChartContainerComponent extends InspectorChartContainer implements OnInit, OnDestroy { + constructor( + storeHelperService: StoreHelperService, + changeDetector: ChangeDetectorRef, + webAppSettingDataService: WebAppSettingDataService, + newUrlStateNotificationService: NewUrlStateNotificationService, + chartDataService: AgentMemoryChartDataService, + translateService: TranslateService, + ajaxExceptionCheckerService: AjaxExceptionCheckerService, + analyticsService: AnalyticsService, + dynamicPopupService: DynamicPopupService + ) { + super( + 100, + storeHelperService, + changeDetector, + webAppSettingDataService, + newUrlStateNotificationService, + chartDataService, + translateService, + ajaxExceptionCheckerService, + analyticsService, + dynamicPopupService + ); + } + + ngOnInit() { + this.initI18nText(); + this.initHoveredInfo(); + this.initTimezoneAndDateFormat(); + this.initChartData(); + } + + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + + protected setChartConfig(data: {[key: string]: any}): void { + this.chartConfig = { + type: 'bar', + dataConfig: this.makeDataOption(data), + elseConfig: this.makeNormalOption(data), + isDataEmpty: this.isDataEmpty(data) + }; + this.changeDetector.detectChanges(); + } + + protected makeChartData(chartData: IChartDataFromServer): {[key: string]: any} { + const xArr = []; + const maxArr = []; + const usedArr = []; + const fgcTimeArr = []; + const fgcCountArr = []; + + const xData = chartData.charts.x; + const gcOldTime = chartData.charts.y['JVM_GC_OLD_TIME']; + const gcOldCount = chartData.charts.y['JVM_GC_OLD_COUNT']; + const memoryUsed = chartData.charts.y['JVM_MEMORY_NON_HEAP_USED']; + const memoryMax = chartData.charts.y['JVM_MEMORY_NON_HEAP_MAX']; + const dataCount = xData.length; + + let totalSumGCTime = 0; + for ( let i = 0 ; i < dataCount ; i++ ) { + xArr.push(moment(xData[i]).tz(this.timezone).format(this.dateFormat[0]) + '#' + moment(xData[i]).tz(this.timezone).format(this.dateFormat[1])); + if ( memoryMax.length === 0 ) { + continue; + } + maxArr.push(this.parseData(memoryMax[i][1])); + usedArr.push(this.parseData(memoryUsed[i][1])); + + const gcOldCountSumValue = gcOldCount[i][3]; + const gcOldTimeSumValue = gcOldTime[i][3]; + + if ( gcOldTimeSumValue > 0 ) { + totalSumGCTime += gcOldTimeSumValue; + } + if ( gcOldCountSumValue > 0 ) { + fgcTimeArr.push(totalSumGCTime); + fgcCountArr.push(gcOldCountSumValue); + totalSumGCTime = 0; + } else { + fgcTimeArr.push(0); + fgcCountArr.push(0); + } + } + return { + x: xArr, + max: maxArr, + used: usedArr, + fgcTime: fgcTimeArr, + fgcCount: fgcCountArr + }; + } + + protected makeDataOption(data: {[key: string]: any}): {[key: string]: any} { + return { + labels: data.x, + datasets: [{ + type: 'line', + label: 'Max', + data: data.max, + fill: false, + borderWidth: 0.5, + borderColor: 'rgb(174, 199, 232)', + backgroundColor: 'rgb(174, 199, 232)', + pointRadius: 0, + pointHoverRadius: 3 + }, { + type: 'line', + label: 'Used', + data: data.used, + fill: true, + borderWidth: 0.5, + borderColor: 'rgb(31, 119, 180)', + backgroundColor: 'rgba(31, 119, 180, 0.4)', + pointRadius: 0, + pointHoverRadius: 3 + }, { + type: 'bar', + label: 'FGC', + data: data.fgcTime, + borderWidth: 1, + borderColor: 'rgb(255, 42, 0)', + backgroundColor: 'rgba(255, 42, 0, 0.3)', + // pointRadius: 0, + // pointHoverRadius: 3, + yAxisID: 'y-axis-2' + }] + }; + } + + protected makeNormalOption(data: {[key: string]: any}): {[key: string]: any} { + return { + responsive: true, + title: { + display: false, + text: 'Heap Usage' + }, + tooltips: { + mode: 'index', + intersect: false, + callbacks: { + title: (value: {[key: string]: any}[]): string => { + return value[0].xLabel.join(' '); + }, + label: (value: {[key: string]: any}, d: {[key: string]: any}): string => { + return `${d.datasets[value.datasetIndex].label}: ${isNaN(value.yLabel) ? `-` : this.convertWithUnit(value.yLabel)}`; + } + } + }, + hover: { + mode: 'index', + intersect: false, + onHover: (event: MouseEvent, elements: any[]): void => { + if (!this.isDataEmpty(data)) { + this.storeHelperService.dispatch(new Actions.ChangeHoverOnInspectorCharts({ + index: event.type === 'mouseout' ? -1 : elements[0]._index, + offsetX: event.offsetX, + offsetY: event.offsetY + })); + } + }, + }, + scales: { + xAxes: [{ + display: true, + scaleLabel: { + display: false + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + maxTicksLimit: 4, + callback: (label: string): string[] => { + return label.split('#'); + }, + maxRotation: 0, + minRotation: 0, + fontSize: 11, + padding: 5 + } + }], + yAxes: [{ + id: 'y-axis-1', + display: true, + position: 'left', + scaleLabel: { + display: true, + labelString: 'Memory (bytes)', + fontSize: 14, + fontStyle: 'bold' + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + beginAtZero: true, + maxTicksLimit: 5, + callback: (label: number): string => { + return this.convertWithUnit(label); + }, + min: 0, + max: this.isDataEmpty(data) ? this.defaultYMax : undefined, + padding: 5 + } + }, + { + id: 'y-axis-2', + display: true, + position: 'right', + scaleLabel: { + display: true, + labelString: 'Full GC (ms)', + fontSize: 14, + fontStyle: 'bold' + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + beginAtZero: true, + maxTicksLimit: 5, + min: 0, + padding: 5 + } + }] + }, + legend: { + display: true, + labels: { + boxWidth: 30, + padding: 10 + } + } + }; + } + + private convertWithUnit(value: number): string { + const unit = ['', 'K', 'M', 'G']; + let result = value; + let index = 0; + while ( result >= 1000 ) { + index++; + result /= 1000; + } + + result = Number.isInteger(result) ? result : Number(result.toFixed(2)); + return result + unit[index]; + } + + onShowHelp($event: MouseEvent): void { + super.onShowHelp($event, HELP_VIEWER_LIST.AGENT_NON_HEAP); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-mapped-buffer-count-chart-container.component.css b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-mapped-buffer-count-chart-container.component.css new file mode 100644 index 000000000000..7e076f488d6b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-mapped-buffer-count-chart-container.component.css @@ -0,0 +1,25 @@ +:host { + display: block; + width: calc(50% - 20px); + margin: 10px; +} +.l-content-item { + width: 100%; + margin: 0px; +} +.l-title-group { + height:34px; + font-size:13px; + font-weight:600; + padding:0 20px; + color:#333; + display: flex; + align-items: center; + justify-content:space-between; + background: #f6f8fb; +} +.l-title-group .fas { + font-size: 18px; + color:#a8acb5; + cursor:pointer; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-mapped-buffer-count-chart-container.component.html b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-mapped-buffer-count-chart-container.component.html new file mode 100644 index 000000000000..08c6f6f0da5d --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-mapped-buffer-count-chart-container.component.html @@ -0,0 +1,10 @@ +
+
Mapped Buffer Count
+ + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-mapped-buffer-count-chart-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-mapped-buffer-count-chart-container.component.ts new file mode 100644 index 000000000000..ee07f7dcc86d --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-mapped-buffer-count-chart-container.component.ts @@ -0,0 +1,171 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import * as moment from 'moment-timezone'; + +import { Actions } from 'app/shared/store'; +import { WebAppSettingDataService, NewUrlStateNotificationService, AjaxExceptionCheckerService, AnalyticsService, StoreHelperService, DynamicPopupService } from 'app/shared/services'; +import { AgentDirectBufferChartDataService } from './agent-direct-buffer-chart-data.service'; +import { HELP_VIEWER_LIST } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; +import { InspectorChartContainer } from 'app/core/components/inspector-chart/inspector-chart-container'; +import { IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; + +@Component({ + selector: 'pp-agent-mapped-buffer-count-chart-container', + templateUrl: './agent-mapped-buffer-count-chart-container.component.html', + styleUrls: ['./agent-mapped-buffer-count-chart-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class AgentMappedBufferCountChartContainerComponent extends InspectorChartContainer implements OnInit, OnDestroy { + constructor( + storeHelperService: StoreHelperService, + changeDetector: ChangeDetectorRef, + webAppSettingDataService: WebAppSettingDataService, + newUrlStateNotificationService: NewUrlStateNotificationService, + chartDataService: AgentDirectBufferChartDataService, + translateService: TranslateService, + ajaxExceptionCheckerService: AjaxExceptionCheckerService, + analyticsService: AnalyticsService, + dynamicPopupService: DynamicPopupService + ) { + super( + 100, + storeHelperService, + changeDetector, + webAppSettingDataService, + newUrlStateNotificationService, + chartDataService, + translateService, + ajaxExceptionCheckerService, + analyticsService, + dynamicPopupService + ); + } + + ngOnInit() { + this.initI18nText(); + this.initHoveredInfo(); + this.initTimezoneAndDateFormat(); + this.initChartData(); + } + + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + + protected makeChartData(data: IChartDataFromServer): {[key: string]: any} { + return { + x: data.charts.x.map((time: number) => moment(time).tz(this.timezone).format(this.dateFormat[0]) + '#' + moment(time).tz(this.timezone).format(this.dateFormat[1])), + mappedCount: data.charts.y['MAPPED_COUNT'].map((arr: number[]) => this.parseData(arr[2])), + }; + } + + protected makeDataOption(data: {[key: string]: any}): {[key: string]: any} { + return { + labels: data.x, + datasets: [{ + type: 'line', + label: 'Mapped Buffer Count', + data: data.mappedCount, + fill: true, + borderWidth: 0.5, + borderColor: 'rgb(31, 119, 180, 0.4)', + backgroundColor: 'rgb(31, 119, 180, 0.4)', + pointRadius: 0, + pointHoverRadius: 3 + }] + }; + } + + protected makeNormalOption(data: {[key: string]: any}): {[key: string]: any} { + return { + responsive: true, + title: { + display: false, + text: 'Mapped Buffer Count' + }, + tooltips: { + mode: 'index', + intersect: false, + callbacks: { + title: (value: {[key: string]: any}[]): string => { + return value[0].xLabel.join(' '); + }, + label: (value: {[key: string]: any}, d: {[key: string]: any}): string => { + return `${d.datasets[value.datasetIndex].label}: ${isNaN(value.yLabel) ? `-` : value.yLabel}`; + } + } + }, + hover: { + mode: 'index', + intersect: false, + onHover: (event: MouseEvent, elements: {[key: string]: any}[]): void => { + if (!this.isDataEmpty(data)) { + this.storeHelperService.dispatch(new Actions.ChangeHoverOnInspectorCharts({ + index: event.type === 'mouseout' ? -1 : elements[0]._index, + offsetX: event.offsetX, + offsetY: event.offsetY + })); + } + }, + }, + scales: { + xAxes: [{ + display: true, + scaleLabel: { + display: false + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + maxTicksLimit: 4, + callback: (label: string): string[] => { + return label.split('#'); + }, + maxRotation: 0, + minRotation: 0, + fontSize: 11, + padding: 5 + } + }], + yAxes: [{ + display: true, + scaleLabel: { + display: true, + labelString: 'Buffer (count)', + fontSize: 14, + fontStyle: 'bold' + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + beginAtZero: true, + maxTicksLimit: 5, + min: 0, + max: this.isDataEmpty(data) ? this.defaultYMax : undefined, + padding: 5 + } + }] + }, + legend: { + display: true, + labels: { + boxWidth: 30, + padding: 10 + } + } + }; + } + + onShowHelp($event: MouseEvent): void { + super.onShowHelp($event, HELP_VIEWER_LIST.AGENT_MAPPED_BUFFER_COUNT); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-mapped-buffer-memory-chart-container.component.css b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-mapped-buffer-memory-chart-container.component.css new file mode 100644 index 000000000000..7e076f488d6b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-mapped-buffer-memory-chart-container.component.css @@ -0,0 +1,25 @@ +:host { + display: block; + width: calc(50% - 20px); + margin: 10px; +} +.l-content-item { + width: 100%; + margin: 0px; +} +.l-title-group { + height:34px; + font-size:13px; + font-weight:600; + padding:0 20px; + color:#333; + display: flex; + align-items: center; + justify-content:space-between; + background: #f6f8fb; +} +.l-title-group .fas { + font-size: 18px; + color:#a8acb5; + cursor:pointer; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-mapped-buffer-memory-chart-container.component.html b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-mapped-buffer-memory-chart-container.component.html new file mode 100644 index 000000000000..59a32928a273 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-mapped-buffer-memory-chart-container.component.html @@ -0,0 +1,10 @@ +
+
Mapped Buffer Memory
+ + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-mapped-buffer-memory-chart-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-mapped-buffer-memory-chart-container.component.ts new file mode 100644 index 000000000000..8cb754a9ad1e --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-mapped-buffer-memory-chart-container.component.ts @@ -0,0 +1,187 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import * as moment from 'moment-timezone'; + +import { Actions } from 'app/shared/store'; +import { WebAppSettingDataService, NewUrlStateNotificationService, AjaxExceptionCheckerService, AnalyticsService, StoreHelperService, DynamicPopupService } from 'app/shared/services'; +import { AgentDirectBufferChartDataService } from './agent-direct-buffer-chart-data.service'; +import { HELP_VIEWER_LIST } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; +import { InspectorChartContainer } from 'app/core/components/inspector-chart/inspector-chart-container'; +import { IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; + +@Component({ + selector: 'pp-agent-mapped-buffer-memory-chart-container', + templateUrl: './agent-mapped-buffer-memory-chart-container.component.html', + styleUrls: ['./agent-mapped-buffer-memory-chart-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class AgentMappedBufferMemoryChartContainerComponent extends InspectorChartContainer implements OnInit, OnDestroy { + constructor( + storeHelperService: StoreHelperService, + changeDetector: ChangeDetectorRef, + webAppSettingDataService: WebAppSettingDataService, + newUrlStateNotificationService: NewUrlStateNotificationService, + chartDataService: AgentDirectBufferChartDataService, + translateService: TranslateService, + ajaxExceptionCheckerService: AjaxExceptionCheckerService, + analyticsService: AnalyticsService, + dynamicPopupService: DynamicPopupService + ) { + super( + 100, + storeHelperService, + changeDetector, + webAppSettingDataService, + newUrlStateNotificationService, + chartDataService, + translateService, + ajaxExceptionCheckerService, + analyticsService, + dynamicPopupService + ); + } + + ngOnInit() { + this.initI18nText(); + this.initHoveredInfo(); + this.initTimezoneAndDateFormat(); + this.initChartData(); + } + + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + + protected makeChartData(data: IChartDataFromServer): {[key: string]: any} { + return { + x: data.charts.x.map((time: number) => moment(time).tz(this.timezone).format(this.dateFormat[0]) + '#' + moment(time).tz(this.timezone).format(this.dateFormat[1])), + mappedMemoryUsed: data.charts.y['MAPPED_MEMORY_USED'].map((arr: number[]) => this.parseData(arr[2])), + }; + } + + protected makeDataOption(data: {[key: string]: any}): {[key: string]: any} { + return { + labels: data.x, + datasets: [{ + type: 'line', + label: 'Mapped Buffer Memory', + data: data.mappedMemoryUsed, + fill: true, + borderWidth: 0.5, + borderColor: 'rgb(31, 119, 180, 0.4)', + backgroundColor: 'rgb(31, 119, 180, 0.4)', + pointRadius: 0, + pointHoverRadius: 3 + }] + }; + } + + protected makeNormalOption(data: {[key: string]: any}): {[key: string]: any} { + return { + responsive: true, + title: { + display: false, + text: 'Mapped Buffer Memory' + }, + tooltips: { + mode: 'index', + intersect: false, + callbacks: { + title: (value: {[key: string]: any}[]): string => { + return value[0].xLabel.join(' '); + }, + label: (value: {[key: string]: any}, d: {[key: string]: any}): string => { + return `${d.datasets[value.datasetIndex].label}: ${isNaN(value.yLabel) ? `-` : this.convertWithUnit(value.yLabel)}`; + } + } + }, + hover: { + mode: 'index', + intersect: false, + onHover: (event: MouseEvent, elements: {[key: string]: any}[]): void => { + if (!this.isDataEmpty(data)) { + this.storeHelperService.dispatch(new Actions.ChangeHoverOnInspectorCharts({ + index: event.type === 'mouseout' ? -1 : elements[0]._index, + offsetX: event.offsetX, + offsetY: event.offsetY + })); + } + }, + }, + scales: { + xAxes: [{ + display: true, + scaleLabel: { + display: false + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + maxTicksLimit: 4, + callback: (label: string): string[] => { + return label.split('#'); + }, + maxRotation: 0, + minRotation: 0, + fontSize: 11, + padding: 5 + } + }], + yAxes: [{ + display: true, + scaleLabel: { + display: true, + labelString: 'Memory (bytes)', + fontSize: 14, + fontStyle: 'bold' + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + beginAtZero: true, + maxTicksLimit: 5, + callback: (label: number): string => { + return this.convertWithUnit(label); + }, + min: 0, + max: this.isDataEmpty(data) ? this.defaultYMax : undefined, + padding: 5 + } + }] + }, + legend: { + display: true, + labels: { + boxWidth: 30, + padding: 10 + } + } + }; + } + + private convertWithUnit(value: number): string { + const unit = ['', 'K', 'M', 'G']; + let result = value; + let index = 0; + while ( result >= 1000 ) { + index++; + result /= 1000; + } + + result = Number.isInteger(result) ? result : Number(result.toFixed(2)); + return result + unit[index]; + } + + onShowHelp($event: MouseEvent): void { + super.onShowHelp($event, HELP_VIEWER_LIST.AGENT_MAPPED_BUFFER_MEMORY); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-memory-chart-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-memory-chart-data.service.ts new file mode 100644 index 000000000000..a28da256264d --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-memory-chart-data.service.ts @@ -0,0 +1,24 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable } from 'rxjs'; + +import { IChartDataService, IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; +import { NewUrlStateNotificationService } from 'app/shared/services'; +import { UrlPathId } from 'app/shared/models'; +import { getParamForAgentChartData } from 'app/core/utils/chart-data-param-maker'; + +@Injectable() +export class AgentMemoryChartDataService implements IChartDataService { + private requestURL = 'getAgentStat/jvmGc/chart.pinpoint'; + + constructor( + private http: HttpClient, + private newUrlStateNotificationService: NewUrlStateNotificationService, + ) {} + + getData(range: number[]): Observable { + return this.http.get(this.requestURL, + getParamForAgentChartData(this.newUrlStateNotificationService.getPathValue(UrlPathId.AGENT_ID), range) + ); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-open-file-descriptor-chart-container.component.css b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-open-file-descriptor-chart-container.component.css new file mode 100644 index 000000000000..7e076f488d6b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-open-file-descriptor-chart-container.component.css @@ -0,0 +1,25 @@ +:host { + display: block; + width: calc(50% - 20px); + margin: 10px; +} +.l-content-item { + width: 100%; + margin: 0px; +} +.l-title-group { + height:34px; + font-size:13px; + font-weight:600; + padding:0 20px; + color:#333; + display: flex; + align-items: center; + justify-content:space-between; + background: #f6f8fb; +} +.l-title-group .fas { + font-size: 18px; + color:#a8acb5; + cursor:pointer; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-open-file-descriptor-chart-container.component.html b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-open-file-descriptor-chart-container.component.html new file mode 100644 index 000000000000..b62d6fb4a1a2 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-open-file-descriptor-chart-container.component.html @@ -0,0 +1,10 @@ +
+
Open File Descriptor
+ + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-open-file-descriptor-chart-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-open-file-descriptor-chart-container.component.ts new file mode 100644 index 000000000000..7b5730252ac0 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-open-file-descriptor-chart-container.component.ts @@ -0,0 +1,171 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import * as moment from 'moment-timezone'; + +import { Actions } from 'app/shared/store'; +import { WebAppSettingDataService, NewUrlStateNotificationService, AjaxExceptionCheckerService, AnalyticsService, StoreHelperService, DynamicPopupService } from 'app/shared/services'; +import { AgentOpenFileDescriptorChartDataService } from './agent-open-file-descriptor-chart-data.service'; +import { HELP_VIEWER_LIST } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; +import { InspectorChartContainer } from 'app/core/components/inspector-chart/inspector-chart-container'; +import { IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; + +@Component({ + selector: 'pp-agent-open-file-descriptor-chart-container', + templateUrl: './agent-open-file-descriptor-chart-container.component.html', + styleUrls: ['./agent-open-file-descriptor-chart-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class AgentOpenFileDescriptorChartContainerComponent extends InspectorChartContainer implements OnInit, OnDestroy { + constructor( + storeHelperService: StoreHelperService, + changeDetector: ChangeDetectorRef, + webAppSettingDataService: WebAppSettingDataService, + newUrlStateNotificationService: NewUrlStateNotificationService, + chartDataService: AgentOpenFileDescriptorChartDataService, + translateService: TranslateService, + ajaxExceptionCheckerService: AjaxExceptionCheckerService, + analyticsService: AnalyticsService, + dynamicPopupService: DynamicPopupService + ) { + super( + 100, + storeHelperService, + changeDetector, + webAppSettingDataService, + newUrlStateNotificationService, + chartDataService, + translateService, + ajaxExceptionCheckerService, + analyticsService, + dynamicPopupService + ); + } + + ngOnInit() { + this.initI18nText(); + this.initHoveredInfo(); + this.initTimezoneAndDateFormat(); + this.initChartData(); + } + + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + + protected makeChartData(data: IChartDataFromServer): {[key: string]: any} { + return { + x: data.charts.x.map((time: number) => moment(time).tz(this.timezone).format(this.dateFormat[0]) + '#' + moment(time).tz(this.timezone).format(this.dateFormat[1])), + openFileDescriptorCount: data.charts.y['OPEN_FILE_DESCRIPTOR_COUNT'].map((arr: number[]) => this.parseData(arr[2])), + }; + } + + protected makeDataOption(data: {[key: string]: any}): {[key: string]: any} { + return { + labels: data.x, + datasets: [{ + type: 'line', + label: 'Open File Descriptor', + data: data.openFileDescriptorCount, + fill: true, + borderWidth: 0.5, + borderColor: 'rgb(31, 119, 180, 0.4)', + backgroundColor: 'rgb(31, 119, 180, 0.4)', + pointRadius: 0, + pointHoverRadius: 3 + }] + }; + } + + protected makeNormalOption(data: {[key: string]: any}): {[key: string]: any} { + return { + responsive: true, + title: { + display: false, + text: 'Open File Descriptor' + }, + tooltips: { + mode: 'index', + intersect: false, + callbacks: { + title: (value: {[key: string]: any}[]): string => { + return value[0].xLabel.join(' '); + }, + label: (value: {[key: string]: any}, d: {[key: string]: any}): string => { + return `${d.datasets[value.datasetIndex].label}: ${isNaN(value.yLabel) ? `-` : value.yLabel}`; + } + } + }, + hover: { + mode: 'index', + intersect: false, + onHover: (event: MouseEvent, elements: {[key: string]: any}[]): void => { + if (!this.isDataEmpty(data)) { + this.storeHelperService.dispatch(new Actions.ChangeHoverOnInspectorCharts({ + index: event.type === 'mouseout' ? -1 : elements[0]._index, + offsetX: event.offsetX, + offsetY: event.offsetY + })); + } + }, + }, + scales: { + xAxes: [{ + display: true, + scaleLabel: { + display: false + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + maxTicksLimit: 4, + callback: (label: string): string[] => { + return label.split('#'); + }, + maxRotation: 0, + minRotation: 0, + fontSize: 11, + padding: 5 + } + }], + yAxes: [{ + display: true, + scaleLabel: { + display: true, + labelString: 'File Descriptor (count)', + fontSize: 14, + fontStyle: 'bold' + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + beginAtZero: true, + maxTicksLimit: 5, + min: 0, + max: this.isDataEmpty(data) ? this.defaultYMax : undefined, + padding: 5 + } + }] + }, + legend: { + display: true, + labels: { + boxWidth: 30, + padding: 10 + } + } + }; + } + + onShowHelp($event: MouseEvent): void { + super.onShowHelp($event, HELP_VIEWER_LIST.AGENT_OPEN_FILE_DESCRIPTOR); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-open-file-descriptor-chart-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-open-file-descriptor-chart-data.service.ts new file mode 100644 index 000000000000..b3de4039e22e --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-open-file-descriptor-chart-data.service.ts @@ -0,0 +1,24 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable } from 'rxjs'; + +import { IChartDataService, IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; +import { NewUrlStateNotificationService } from 'app/shared/services'; +import { UrlPathId } from 'app/shared/models'; +import { getParamForAgentChartData } from 'app/core/utils/chart-data-param-maker'; + +@Injectable() +export class AgentOpenFileDescriptorChartDataService implements IChartDataService { + private requestURL = 'getAgentStat/fileDescriptor/chart.pinpoint'; + + constructor( + private http: HttpClient, + private newUrlStateNotificationService: NewUrlStateNotificationService, + ) {} + + getData(range: number[]): Observable { + return this.http.get(this.requestURL, + getParamForAgentChartData(this.newUrlStateNotificationService.getPathValue(UrlPathId.AGENT_ID), range) + ); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-response-time-chart-container.component.css b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-response-time-chart-container.component.css new file mode 100644 index 000000000000..7e076f488d6b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-response-time-chart-container.component.css @@ -0,0 +1,25 @@ +:host { + display: block; + width: calc(50% - 20px); + margin: 10px; +} +.l-content-item { + width: 100%; + margin: 0px; +} +.l-title-group { + height:34px; + font-size:13px; + font-weight:600; + padding:0 20px; + color:#333; + display: flex; + align-items: center; + justify-content:space-between; + background: #f6f8fb; +} +.l-title-group .fas { + font-size: 18px; + color:#a8acb5; + cursor:pointer; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-response-time-chart-container.component.html b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-response-time-chart-container.component.html new file mode 100644 index 000000000000..971df60336df --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-response-time-chart-container.component.html @@ -0,0 +1,10 @@ +
+
Response Time
+ + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-response-time-chart-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-response-time-chart-container.component.ts new file mode 100644 index 000000000000..2f2df851c60c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-response-time-chart-container.component.ts @@ -0,0 +1,214 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import * as moment from 'moment-timezone'; + +import { Actions } from 'app/shared/store'; +import { WebAppSettingDataService, NewUrlStateNotificationService, AjaxExceptionCheckerService, AnalyticsService, StoreHelperService, DynamicPopupService } from 'app/shared/services'; +import { AgentResponseTimeChartDataService } from './agent-response-time-chart-data.service'; +import { HELP_VIEWER_LIST } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; +import { InspectorChartContainer } from 'app/core/components/inspector-chart/inspector-chart-container'; +import { IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; + +@Component({ + selector: 'pp-agent-response-time-chart-container', + templateUrl: './agent-response-time-chart-container.component.html', + styleUrls: ['./agent-response-time-chart-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class AgentResponseTimeChartContainerComponent extends InspectorChartContainer implements OnInit, OnDestroy { + constructor( + storeHelperService: StoreHelperService, + changeDetector: ChangeDetectorRef, + webAppSettingDataService: WebAppSettingDataService, + newUrlStateNotificationService: NewUrlStateNotificationService, + chartDataService: AgentResponseTimeChartDataService, + translateService: TranslateService, + ajaxExceptionCheckerService: AjaxExceptionCheckerService, + analyticsService: AnalyticsService, + dynamicPopupService: DynamicPopupService + ) { + super( + 100, + storeHelperService, + changeDetector, + webAppSettingDataService, + newUrlStateNotificationService, + chartDataService, + translateService, + ajaxExceptionCheckerService, + analyticsService, + dynamicPopupService + ); + } + + ngOnInit() { + this.initI18nText(); + this.initHoveredInfo(); + this.initTimezoneAndDateFormat(); + this.initChartData(); + } + + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + + protected makeChartData(chartData: IChartDataFromServer): {[key: string]: any} { + const xArr = []; + const avgArr = []; + const maxArr = []; + + const xData = chartData.charts.x; + const responseAVG = chartData.charts.y['AVG']; + const responseMAX = chartData.charts.y['MAX']; + const dataCount = xData.length; + + for ( let i = 0 ; i < dataCount ; i++ ) { + xArr.push(moment(xData[i]).tz(this.timezone).format(this.dateFormat[0]) + '#' + moment(xData[i]).tz(this.timezone).format(this.dateFormat[1])); + if ( responseAVG.length === 0 ) { + continue; + } + avgArr.push(this.parseData(responseAVG[i][2])); + maxArr.push(this.parseData(responseMAX[i][1])); + } + return { + x: xArr, + avg: avgArr, + max: maxArr, + }; + } + + protected makeDataOption(data: {[key: string]: any}): {[key: string]: any} { + return { + labels: data.x, + datasets: [{ + label: 'Avg', + data: data.avg, + fill: true, + borderWidth: 0.5, + borderColor: 'rgb(44, 160, 44)', + backgroundColor: 'rgba(44, 160, 44, 0.4)', + pointRadius: 0, + pointHoverRadius: 3 + }, { + label: 'Max', + data: data.max, + fill: true, + borderWidth: 0.5, + borderColor: 'rgb(246, 145, 36)', + backgroundColor: 'rgba(246, 145, 36, 0.4)', + pointRadius: 0, + pointHoverRadius: 3 + } + ] + }; + } + + protected makeNormalOption(data: {[key: string]: any}): {[key: string]: any} { + return { + responsive: true, + title: { + display: false, + text: 'Response Time' + }, + tooltips: { + mode: 'index', + intersect: false, + callbacks: { + title: (value: {[key: string]: any}[]): string => { + return value[0].xLabel.join(' '); + }, + label: (value: {[key: string]: any}, d: {[key: string]: any}): string => { + return `${d.datasets[value.datasetIndex].label}: ${isNaN(value.yLabel) ? `-` : this.convertWithUnit(value.yLabel)}`; + } + } + }, + hover: { + mode: 'index', + intersect: false, + onHover: (event: MouseEvent, elements: {[key: string]: any}[]): void => { + if (!this.isDataEmpty(data)) { + this.storeHelperService.dispatch(new Actions.ChangeHoverOnInspectorCharts({ + index: event.type === 'mouseout' ? -1 : elements[0]._index, + offsetX: event.offsetX, + offsetY: event.offsetY + })); + } + }, + }, + scales: { + xAxes: [{ + display: true, + scaleLabel: { + display: false + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + maxTicksLimit: 4, + callback: (label: string): string[] => { + return label.split('#'); + }, + maxRotation: 0, + minRotation: 0, + fontSize: 11, + padding: 5 + } + }], + yAxes: [{ + display: true, + scaleLabel: { + display: true, + labelString: 'Response Time (ms)', + fontSize: 14, + fontStyle: 'bold' + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + beginAtZero: true, + maxTicksLimit: 5, + callback: (label: number): string => { + return this.convertWithUnit(label); + }, + min: 0, + max: this.isDataEmpty(data) ? this.defaultYMax : undefined, + padding: 5 + } + }] + }, + legend: { + display: true, + labels: { + boxWidth: 30, + padding: 10 + } + } + }; + } + + private convertWithUnit(value: number): string { + const unit = ['ms', 'sec', 'min']; + let result = value; + let index = 0; + while ( result >= 1000 ) { + index++; + result /= 1000; + } + + result = Number.isInteger(result) ? result : Number(result.toFixed(2)); + return result + unit[index]; + } + + onShowHelp($event: MouseEvent): void { + super.onShowHelp($event, HELP_VIEWER_LIST.AGENT_RESPONSE_TIME); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-response-time-chart-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-response-time-chart-data.service.ts new file mode 100644 index 000000000000..6b54b84b4003 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-response-time-chart-data.service.ts @@ -0,0 +1,24 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable } from 'rxjs'; + +import { IChartDataService, IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; +import { NewUrlStateNotificationService } from 'app/shared/services'; +import { UrlPathId } from 'app/shared/models'; +import { getParamForAgentChartData } from 'app/core/utils/chart-data-param-maker'; + +@Injectable() +export class AgentResponseTimeChartDataService implements IChartDataService { + private requestURL = 'getAgentStat/responseTime/chart.pinpoint'; + + constructor( + private http: HttpClient, + private newUrlStateNotificationService: NewUrlStateNotificationService, + ) {} + + getData(range: number[]): Observable { + return this.http.get(this.requestURL, + getParamForAgentChartData(this.newUrlStateNotificationService.getPathValue(UrlPathId.AGENT_ID), range) + ); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-tps-chart-container.component.css b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-tps-chart-container.component.css new file mode 100644 index 000000000000..7e076f488d6b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-tps-chart-container.component.css @@ -0,0 +1,25 @@ +:host { + display: block; + width: calc(50% - 20px); + margin: 10px; +} +.l-content-item { + width: 100%; + margin: 0px; +} +.l-title-group { + height:34px; + font-size:13px; + font-weight:600; + padding:0 20px; + color:#333; + display: flex; + align-items: center; + justify-content:space-between; + background: #f6f8fb; +} +.l-title-group .fas { + font-size: 18px; + color:#a8acb5; + cursor:pointer; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-tps-chart-container.component.html b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-tps-chart-container.component.html new file mode 100644 index 000000000000..6252a5c933ff --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-tps-chart-container.component.html @@ -0,0 +1,10 @@ +
+
Transactions Per Second
+ + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-tps-chart-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-tps-chart-container.component.ts new file mode 100644 index 000000000000..a0c4af7a8c64 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-tps-chart-container.component.ts @@ -0,0 +1,251 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import * as moment from 'moment-timezone'; + +import { Actions } from 'app/shared/store'; +import { WebAppSettingDataService, NewUrlStateNotificationService, AjaxExceptionCheckerService, AnalyticsService, StoreHelperService, DynamicPopupService } from 'app/shared/services'; +import { AgentTPSChartDataService } from './agent-tps-chart-data.service'; +import { HELP_VIEWER_LIST } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; +import { InspectorChartContainer } from 'app/core/components/inspector-chart/inspector-chart-container'; +import { IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; + +@Component({ + selector: 'pp-agent-tps-chart-container', + templateUrl: './agent-tps-chart-container.component.html', + styleUrls: ['./agent-tps-chart-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class AgentTPSChartContainerComponent extends InspectorChartContainer implements OnInit, OnDestroy { + constructor( + storeHelperService: StoreHelperService, + changeDetector: ChangeDetectorRef, + webAppSettingDataService: WebAppSettingDataService, + newUrlStateNotificationService: NewUrlStateNotificationService, + chartDataService: AgentTPSChartDataService, + translateService: TranslateService, + ajaxExceptionCheckerService: AjaxExceptionCheckerService, + analyticsService: AnalyticsService, + dynamicPopupService: DynamicPopupService + ) { + super( + 10, + storeHelperService, + changeDetector, + webAppSettingDataService, + newUrlStateNotificationService, + chartDataService, + translateService, + ajaxExceptionCheckerService, + analyticsService, + dynamicPopupService + ); + } + + ngOnInit() { + this.initI18nText(); + this.initHoveredInfo(); + this.initTimezoneAndDateFormat(); + this.initChartData(); + } + + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + + protected parseData(data: number): number | null { + return data < 0 ? null : Number(data.toFixed(2)); + } + + protected makeChartData(chartData: IChartDataFromServer): {[key: string]: any} { + const xArr = []; + const tpsSCArr = []; + const tpsSNArr = []; + const tpsUCArr = []; + const tpsUNArr = []; + const tpsTArr = []; + + const xData = chartData.charts.x; + const tpsSC = chartData.charts.y['TPS_SAMPLED_CONTINUATION']; + const tpsSN = chartData.charts.y['TPS_SAMPLED_NEW']; + const tpsUC = chartData.charts.y['TPS_UNSAMPLED_CONTINUATION']; + const tpsUN = chartData.charts.y['TPS_UNSAMPLED_NEW']; + const tpsT = chartData.charts.y['TPS_TOTAL']; + const dataCount = xData.length; + + for ( let i = 0 ; i < dataCount ; i++ ) { + xArr.push(moment(xData[i]).tz(this.timezone).format(this.dateFormat[0]) + '#' + moment(xData[i]).tz(this.timezone).format(this.dateFormat[1])); + if ( tpsSC.length === 0 ) { + continue; + } + tpsSCArr.push(this.parseData(tpsSC[i][2])); + tpsSNArr.push(this.parseData(tpsSN[i][2])); + tpsUCArr.push(this.parseData(tpsUC[i][2])); + tpsUNArr.push(this.parseData(tpsUN[i][2])); + if ( tpsT ) { + tpsTArr.push(this.parseData(tpsT[i][2])); + } else { + tpsTArr.push(this.parseData((tpsSC[i][2] + tpsSN[i][2] + tpsUC[i][2] + tpsUN[i][2]))); + } + } + return { + x: xArr, + tpsSC: tpsSCArr, + tpsSN: tpsSNArr, + tpsUC: tpsUCArr, + tpsUN: tpsUNArr, + tpsT: tpsTArr + }; + } + + protected makeDataOption(data: {[key: string]: any}): {[key: string]: any} { + return { + labels: data.x, + datasets: [{ + label: 'S.C', + data: data.tpsSC, + fill: true, + borderWidth: 0.5, + borderColor: 'rgb(214, 141, 8)', + backgroundColor: 'rgba(214, 141, 8, 0.4)', + pointRadius: 0, + pointHoverRadius: 3 + }, { + label: 'S.N', + data: data.tpsSN, + fill: true, + borderWidth: 0.5, + borderColor: 'rgb(252, 178, 65)', + backgroundColor: 'rgba(252, 178, 65, 0.4)', + pointRadius: 0, + pointHoverRadius: 3 + }, { + label: 'U.C', + data: data.tpsUC, + fill: true, + borderWidth: 0.5, + borderColor: 'rgb(90, 103, 166)', + backgroundColor: 'rgba(90, 103, 166, 0.4)', + pointRadius: 0, + pointHoverRadius: 3 + }, { + label: 'U.N', + data: data.tpsUN, + fill: true, + borderWidth: 0.5, + borderColor: 'rgb(160, 153, 255)', + backgroundColor: 'rgba(160, 153, 255, 0.4)', + pointRadius: 0, + pointHoverRadius: 3 + }, { + label: 'Total', + data: data.tpsT, + fill: false, + borderWidth: 0.5, + // borderColor: 'rgb(31, 119, 180)', + // backgroundColor: 'rgba(31, 119, 180, 0.4)', + borderColor: 'rgba(31, 119, 180, 0)', + backgroundColor: 'rgba(255, 255, 255, 0)', + pointRadius: 0, + pointHoverRadius: 3 + }] + }; + } + protected makeNormalOption(data: {[key: string]: any}): {[key: string]: any} { + return { + responsive: true, + title: { + display: false, + text: 'TPS' + }, + tooltips: { + mode: 'index', + intersect: false, + callbacks: { + title: (value: {[key: string]: any}[]): string => { + return value[0].xLabel.join(' '); + }, + label: (value: {[key: string]: any}, d: {[key: string]: any}): string => { + return `${d.datasets[value.datasetIndex].label}: ${isNaN(value.yLabel) ? `-` : value.yLabel.toFixed(1)}`; + } + } + }, + hover: { + mode: 'index', + intersect: false, + onHover: (event: MouseEvent, elements: {[key: string]: any}[]): void => { + if (!this.isDataEmpty(data)) { + this.storeHelperService.dispatch(new Actions.ChangeHoverOnInspectorCharts({ + index: event.type === 'mouseout' ? -1 : elements[0]._index, + offsetX: event.offsetX, + offsetY: event.offsetY + })); + } + }, + }, + scales: { + xAxes: [{ + stacked: true, + display: true, + scaleLabel: { + display: false + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + maxTicksLimit: 4, + callback: (label: string): string[] => { + return label.split('#'); + }, + maxRotation: 0, + minRotation: 0, + fontSize: 11, + padding: 5 + } + }], + yAxes: [{ + stacked: true, + display: true, + scaleLabel: { + display: true, + labelString: 'Transaction (count)', + fontSize: 14, + fontStyle: 'bold' + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + beginAtZero: true, + maxTicksLimit: 5, + callback: (value: number): number => { + const label = Number.isInteger(value) ? value : Number(value.toFixed(1)); + return label; + }, + min: 0, + max: this.isDataEmpty(data) ? this.defaultYMax : undefined, + padding: 5 + } + }] + }, + legend: { + display: true, + labels: { + boxWidth: 30, + padding: 10 + } + } + }; + } + + onShowHelp($event: MouseEvent): void { + super.onShowHelp($event, HELP_VIEWER_LIST.AGENT_TPS); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-tps-chart-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-tps-chart-data.service.ts new file mode 100644 index 000000000000..cf9ab9c7a108 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/agent-tps-chart-data.service.ts @@ -0,0 +1,24 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable } from 'rxjs'; + +import { IChartDataService, IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; +import { NewUrlStateNotificationService } from 'app/shared/services'; +import { UrlPathId } from 'app/shared/models'; +import { getParamForAgentChartData } from 'app/core/utils/chart-data-param-maker'; + +@Injectable() +export class AgentTPSChartDataService implements IChartDataService { + private requestURL = 'getAgentStat/transaction/chart.pinpoint'; + + constructor( + private http: HttpClient, + private newUrlStateNotificationService: NewUrlStateNotificationService, + ) {} + + getData(range: number[]): Observable { + return this.http.get(this.requestURL, + getParamForAgentChartData(this.newUrlStateNotificationService.getPathValue(UrlPathId.AGENT_ID), range) + ); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-active-thread-chart-container.component.css b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-active-thread-chart-container.component.css new file mode 100644 index 000000000000..7e076f488d6b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-active-thread-chart-container.component.css @@ -0,0 +1,25 @@ +:host { + display: block; + width: calc(50% - 20px); + margin: 10px; +} +.l-content-item { + width: 100%; + margin: 0px; +} +.l-title-group { + height:34px; + font-size:13px; + font-weight:600; + padding:0 20px; + color:#333; + display: flex; + align-items: center; + justify-content:space-between; + background: #f6f8fb; +} +.l-title-group .fas { + font-size: 18px; + color:#a8acb5; + cursor:pointer; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-active-thread-chart-container.component.html b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-active-thread-chart-container.component.html new file mode 100644 index 000000000000..15084f4f991a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-active-thread-chart-container.component.html @@ -0,0 +1,10 @@ +
+
Active Thread
+ + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-active-thread-chart-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-active-thread-chart-container.component.ts new file mode 100644 index 000000000000..518db2213b87 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-active-thread-chart-container.component.ts @@ -0,0 +1,237 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import * as moment from 'moment-timezone'; + +import { Actions } from 'app/shared/store'; +import { WebAppSettingDataService, NewUrlStateNotificationService, AjaxExceptionCheckerService, AnalyticsService, StoreHelperService, DynamicPopupService } from 'app/shared/services'; +import { ApplicationActiveThreadChartDataService } from './application-active-thread-chart-data.service'; +import { HELP_VIEWER_LIST } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; +import { InspectorChartContainer } from 'app/core/components/inspector-chart/inspector-chart-container'; +import { IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; + +@Component({ + selector: 'pp-application-active-thread-chart-container', + templateUrl: './application-active-thread-chart-container.component.html', + styleUrls: ['./application-active-thread-chart-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ApplicationActiveThreadChartContainerComponent extends InspectorChartContainer implements OnInit, OnDestroy { + constructor( + storeHelperService: StoreHelperService, + changeDetector: ChangeDetectorRef, + webAppSettingDataService: WebAppSettingDataService, + newUrlStateNotificationService: NewUrlStateNotificationService, + chartDataService: ApplicationActiveThreadChartDataService, + translateService: TranslateService, + ajaxExceptionCheckerService: AjaxExceptionCheckerService, + analyticsService: AnalyticsService, + dynamicPopupService: DynamicPopupService + ) { + super( + 10, + storeHelperService, + changeDetector, + webAppSettingDataService, + newUrlStateNotificationService, + chartDataService, + translateService, + ajaxExceptionCheckerService, + analyticsService, + dynamicPopupService + ); + } + + ngOnInit() { + this.initI18nText(); + this.initHoveredInfo(); + this.initTimezoneAndDateFormat(); + this.initChartData(); + } + + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + + protected makeChartData(chartData: IChartDataFromServer): {[key: string]: any} { + const xArr = []; + const maxArr = []; + const minArr = []; + const avgArr = []; + const maxAgentIdArr = []; + const minAgentIdArr = []; + + const xData = chartData.charts.x; + const activeTraceCount = chartData.charts.y['ACTIVE_TRACE_COUNT']; + const dataCount = xData.length; + + for (let i = 0; i < dataCount; i++) { + xArr.push(moment(xData[i]).tz(this.timezone).format(this.dateFormat[0]) + '#' + moment(xData[i]).tz(this.timezone).format(this.dateFormat[1])); + if (activeTraceCount[i]) { + minArr.push(this.parseData(activeTraceCount[i][0])); + minAgentIdArr.push(activeTraceCount[i][1]); + maxArr.push(this.parseData(activeTraceCount[i][2])); + maxAgentIdArr.push(activeTraceCount[i][3]); + avgArr.push(this.parseData(activeTraceCount[i][4])); + } + } + return { + x: xArr, + maxArr, + minArr, + avgArr, + minAgentIdArr, + maxAgentIdArr, + }; + } + + protected makeDataOption(data: {[key: string]: any}): {[key: string]: any} { + return { + labels: data.x, + datasets: [{ + label: 'Min', + data: data.minArr, + fill: false, + borderDash: [2, 2], + borderWidth: 1.5, + borderColor: '#66B2FF', + backgroundColor: '#66B2FF', + pointRadius: 0, + pointHoverRadius: 3 + }, { + label: 'Avg', + data: data.avgArr, + fill: false, + borderWidth: 1.5, + borderColor: '#4C0099', + backgroundColor: '#4C0099', + pointRadius: 0, + pointHoverRadius: 3 + }, { + label: 'Max', + data: data.maxArr, + fill: false, + borderDash: [2, 2], + borderWidth: 1.5, + borderColor: '#0000CC', + backgroundColor: '#0000CC', + pointRadius: 0, + pointHoverRadius: 3 + }] + }; + } + + protected makeNormalOption(data: {[key: string]: any}): {[key: string]: any} { + return { + responsive: true, + title: { + display: false + }, + tooltips: { + mode: 'index', + intersect: false, + callbacks: { + title: (value: {[key: string]: any}[]) => { + return value[0].xLabel.join(' '); + }, + label: (value: {[key: string]: any}, d: {[key: string]: any}): string => { + const label = d.datasets[value.datasetIndex].label; + const index = value.index; + + return `${label}: ${isNaN(value.yLabel) ? `-` : this.convertWithUnit(value.yLabel) + ` ` + this.getAgentId(data.minAgentIdArr, data.maxAgentIdArr, label, index)}`; + } + } + }, + hover: { + mode: 'index', + intersect: false, + onHover: (event: MouseEvent, elements: {[key: string]: any}[]): void => { + if (!this.isDataEmpty(data)) { + this.storeHelperService.dispatch(new Actions.ChangeHoverOnInspectorCharts({ + index: event.type === 'mouseout' ? -1 : elements[0]._index, + offsetX: event.offsetX, + offsetY: event.offsetY + })); + } + }, + }, + scales: { + xAxes: [{ + display: true, + scaleLabel: { + display: false + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + maxTicksLimit: 4, + callback: (label: string): string[] => { + return label.split('#'); + }, + maxRotation: 0, + minRotation: 0, + fontSize: 11, + padding: 5 + } + }], + yAxes: [{ + display: true, + scaleLabel: { + display: true, + labelString: 'Active Thread (count)', + fontSize: 14, + fontStyle: 'bold' + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + beginAtZero: true, + maxTicksLimit: 5, + callback: (label: number): string => { + return this.convertWithUnit(label); + }, + min: 0, + max: this.isDataEmpty(data) ? this.defaultYMax : undefined, + padding: 5 + } + }] + }, + legend: { + display: true, + labels: { + boxWidth: 50, + padding: 10 + } + } + }; + } + + private getAgentId(minAgentIdArr: string[], maxAgentIdArr: string[], label: string, index: number): string { + return label === 'Avg' ? '' : `(${label === 'Min' ? minAgentIdArr[index] : maxAgentIdArr[index]})`; + } + + private convertWithUnit(value: number): string { + const unit = ['', 'K', 'M', 'G']; + let result = value; + let index = 0; + while ( result >= 1000 ) { + index++; + result /= 1000; + } + + result = Number.isInteger(result) ? result : Number(result.toFixed(2)); + return result + unit[index]; + } + + onShowHelp($event: MouseEvent): void { + super.onShowHelp($event, HELP_VIEWER_LIST.APPLICATION_ACTIVE_THREAD); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-active-thread-chart-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-active-thread-chart-data.service.ts new file mode 100644 index 000000000000..6d62567d73dc --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-active-thread-chart-data.service.ts @@ -0,0 +1,24 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable } from 'rxjs'; + +import { IChartDataService, IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; +import { NewUrlStateNotificationService } from 'app/shared/services'; +import { UrlPathId } from 'app/shared/models'; +import { getParamForApplicationChartData } from 'app/core/utils/chart-data-param-maker'; + +@Injectable() +export class ApplicationActiveThreadChartDataService implements IChartDataService { + private requestURL = 'getApplicationStat/activeTrace/chart.pinpoint'; + + constructor( + private http: HttpClient, + private newUrlStateNotificationService: NewUrlStateNotificationService, + ) {} + + getData(range: number[]): Observable { + return this.http.get(this.requestURL, + getParamForApplicationChartData(this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getApplicationName(), range) + ); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-cpu-chart-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-cpu-chart-data.service.ts new file mode 100644 index 000000000000..8ba0b3875e25 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-cpu-chart-data.service.ts @@ -0,0 +1,24 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable } from 'rxjs'; + +import { IChartDataService, IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; +import { NewUrlStateNotificationService } from 'app/shared/services'; +import { UrlPathId } from 'app/shared/models'; +import { getParamForApplicationChartData } from 'app/core/utils/chart-data-param-maker'; + +@Injectable() +export class ApplicationCPUChartDataService implements IChartDataService { + private requestURL = 'getApplicationStat/cpuLoad/chart.pinpoint'; + + constructor( + private http: HttpClient, + private newUrlStateNotificationService: NewUrlStateNotificationService, + ) {} + + getData(range: number[]): Observable { + return this.http.get(this.requestURL, + getParamForApplicationChartData(this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getApplicationName(), range) + ); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-data-source-chart-container.component.css b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-data-source-chart-container.component.css new file mode 100644 index 000000000000..7e076f488d6b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-data-source-chart-container.component.css @@ -0,0 +1,25 @@ +:host { + display: block; + width: calc(50% - 20px); + margin: 10px; +} +.l-content-item { + width: 100%; + margin: 0px; +} +.l-title-group { + height:34px; + font-size:13px; + font-weight:600; + padding:0 20px; + color:#333; + display: flex; + align-items: center; + justify-content:space-between; + background: #f6f8fb; +} +.l-title-group .fas { + font-size: 18px; + color:#a8acb5; + cursor:pointer; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-data-source-chart-container.component.html b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-data-source-chart-container.component.html new file mode 100644 index 000000000000..3bd19ce8b449 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-data-source-chart-container.component.html @@ -0,0 +1,20 @@ +
+
+

Data Source

+ +
+ + + + + + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-data-source-chart-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-data-source-chart-container.component.ts new file mode 100644 index 000000000000..d458283ff423 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-data-source-chart-container.component.ts @@ -0,0 +1,227 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import * as moment from 'moment-timezone'; + +import { Actions } from 'app/shared/store'; +import { WebAppSettingDataService, NewUrlStateNotificationService, AjaxExceptionCheckerService, AnalyticsService, StoreHelperService, DynamicPopupService } from 'app/shared/services'; +import { ApplicationDataSourceChartDataService, IApplicationDataSourceChart } from './application-data-source-chart-data.service'; +import { HELP_VIEWER_LIST } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; +import { InspectorChartContainer } from 'app/core/components/inspector-chart/inspector-chart-container'; + +@Component({ + selector: 'pp-application-data-source-chart-container', + templateUrl: './application-data-source-chart-container.component.html', + styleUrls: ['./application-data-source-chart-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ApplicationDataSourceChartContainerComponent extends InspectorChartContainer implements OnInit, OnDestroy { + sourceDataArr: {[key: string]: any}[]; + + constructor( + storeHelperService: StoreHelperService, + changeDetector: ChangeDetectorRef, + webAppSettingDataService: WebAppSettingDataService, + newUrlStateNotificationService: NewUrlStateNotificationService, + chartDataService: ApplicationDataSourceChartDataService, + translateService: TranslateService, + ajaxExceptionCheckerService: AjaxExceptionCheckerService, + analyticsService: AnalyticsService, + dynamicPopupService: DynamicPopupService + ) { + super( + 10, + storeHelperService, + changeDetector, + webAppSettingDataService, + newUrlStateNotificationService, + chartDataService, + translateService, + ajaxExceptionCheckerService, + analyticsService, + dynamicPopupService + ); + } + + ngOnInit() { + this.initI18nText(); + this.initHoveredInfo(); + this.initTimezoneAndDateFormat(); + this.initChartData(); + } + + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + + protected getChartData(range: number[]): void { + this.chartDataService.getData(range) + .subscribe( + (data: IApplicationDataSourceChart[] | AjaxException) => { + if (this.ajaxExceptionCheckerService.isAjaxException(data)) { + this.setErrObj(data); + } else { + this.chartData = data; + this.sourceDataArr = this.makeChartData(data); + this.setChartConfig(this.sourceDataArr[0]); + } + }, + (err) => { + this.setErrObj(); + } + ); + } + + onSourceDataSelected(index: number): void { + this.setChartConfig(this.sourceDataArr[index]); + } + + protected makeChartData(chartDataArr: IApplicationDataSourceChart[]): {[key: string]: any}[] { + return chartDataArr.map((chartData: IApplicationDataSourceChart) => { + return { + x: chartData.charts.x.map((time: number) => moment(time).tz(this.timezone).format(this.dateFormat[0]) + '#' + moment(time).tz(this.timezone).format(this.dateFormat[1])), + minArr: chartData.charts.y['ACTIVE_CONNECTION_SIZE'].map((arr: any[]) => this.parseData(arr[0])), + minAgentIdArr: chartData.charts.y['ACTIVE_CONNECTION_SIZE'].map((arr: any[]) => arr[1]), + maxArr: chartData.charts.y['ACTIVE_CONNECTION_SIZE'].map((arr: any[]) => this.parseData(arr[2])), + maxAgentIdArr: chartData.charts.y['ACTIVE_CONNECTION_SIZE'].map((arr: any[]) => arr[3]), + avgArr: chartData.charts.y['ACTIVE_CONNECTION_SIZE'].map((arr: any[]) => this.parseData(arr[4])), + jdbcUrl: chartData.jdbcUrl, + serviceType: chartData.serviceType + }; + }); + } + + protected makeDataOption(data: {[key: string]: any}): {[key: string]: any} { + return { + labels: data.x, + datasets: [{ + label: 'Min', + data: data.minArr, + fill: false, + borderDash: [2, 2], + borderWidth: 1.5, + borderColor: '#66B2FF', + backgroundColor: '#66B2FF', + pointRadius: 0, + pointHoverRadius: 3 + }, { + label: 'Avg', + data: data.avgArr, + fill: false, + borderWidth: 1.5, + borderColor: '#4C0099', + backgroundColor: '#4C0099', + pointRadius: 0, + pointHoverRadius: 3 + }, { + label: 'Max', + data: data.maxArr, + fill: false, + borderDash: [2, 2], + borderWidth: 1.5, + borderColor: '#0000CC', + backgroundColor: '#0000CC', + pointRadius: 0, + pointHoverRadius: 3 + }] + }; + } + + protected makeNormalOption(data: {[key: string]: any}): {[key: string]: any} { + return { + responsive: true, + title: { + display: false + }, + tooltips: { + mode: 'index', + intersect: false, + callbacks: { + title: (value: {[key: string]: any}[]) => { + return value[0].xLabel.join(' '); + }, + label: (value: {[key: string]: any}, d: {[key: string]: any}): string => { + const label = d.datasets[value.datasetIndex].label; + const index = value.index; + + return `${label}: ${isNaN(value.yLabel) ? `-` : value.yLabel + ` ` + this.getAgentId(data.minAgentIdArr, data.maxAgentIdArr, label, index)}`; + } + } + }, + hover: { + mode: 'index', + intersect: false, + onHover: (event: MouseEvent, elements: {[key: string]: any}[]): void => { + if (!this.isDataEmpty(data)) { + this.storeHelperService.dispatch(new Actions.ChangeHoverOnInspectorCharts({ + index: event.type === 'mouseout' ? -1 : elements[0]._index, + offsetX: event.offsetX, + offsetY: event.offsetY + })); + } + }, + }, + scales: { + xAxes: [{ + display: true, + scaleLabel: { + display: false + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + maxTicksLimit: 4, + callback: (label: string): string[] => { + return label.split('#'); + }, + maxRotation: 0, + minRotation: 0, + fontSize: 11, + padding: 5 + } + }], + yAxes: [{ + display: true, + scaleLabel: { + display: true, + labelString: 'Connection (count)', + fontSize: 14, + fontStyle: 'bold' + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + beginAtZero: true, + maxTicksLimit: 5, + min: 0, + max: this.defaultYMax, + padding: 5 + } + }] + }, + legend: { + display: true, + labels: { + boxWidth: 50, + padding: 10 + } + } + }; + } + + private getAgentId(minAgentIdArr: string[], maxAgentIdArr: string[], label: string, index: number): string { + return label === 'Avg' ? '' : `(${label === 'Min' ? minAgentIdArr[index] : maxAgentIdArr[index]})`; + } + + onShowHelp($event: MouseEvent): void { + super.onShowHelp($event, HELP_VIEWER_LIST.APPLICATION_DATA_SOURCE); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-data-source-chart-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-data-source-chart-data.service.ts new file mode 100644 index 000000000000..02696dc879db --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-data-source-chart-data.service.ts @@ -0,0 +1,29 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable } from 'rxjs'; + +import { IChartDataService, IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; +import { NewUrlStateNotificationService } from 'app/shared/services'; +import { UrlPathId } from 'app/shared/models'; +import { getParamForApplicationChartData } from 'app/core/utils/chart-data-param-maker'; + +export interface IApplicationDataSourceChart extends IChartDataFromServer { + jdbcUrl: string; + serviceType: string; +} + +@Injectable() +export class ApplicationDataSourceChartDataService implements IChartDataService { + private requestURL = 'getApplicationStat/dataSource/chart.pinpoint'; + + constructor( + private http: HttpClient, + private newUrlStateNotificationService: NewUrlStateNotificationService, + ) {} + + getData(range: number[]): Observable { + return this.http.get(this.requestURL, + getParamForApplicationChartData(this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getApplicationName(), range) + ); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-data-source-chart-soucelist.component.css b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-data-source-chart-soucelist.component.css new file mode 100644 index 000000000000..6ef246b6f6fc --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-data-source-chart-soucelist.component.css @@ -0,0 +1,55 @@ +.l-sourcelist-wrapper { + background-color: #fff; + font-size: 12px; + padding: 10px; +} +.l-sourcelist-title { + background-color: #f6f8fb; + border-top: 1px solid #ddd; + border-left: 1px solid #ddd; + border-right: 1px solid #ddd; + padding: 10px; +} +.l-source-data-list { + border: 1px solid #ddd; +} +.l-source-data-list-item { + cursor: pointer; + color: #ddd; + display: flex; + align-items: center; +} +.l-source-data-list-item:hover { + background-color: #ddd; + color: #fff; +} +.l-selected-item { + color: #000; + font-weight: 600; +} +.l-selected-item:hover { + background-color: #fff; + color: #000; +} +.l-source-data-list-item .fas { + width: 7%; + text-align: center; +} +.l-source-data-wrapper { + display: flex; + justify-content: space-evenly; + align-items: center; + border-left: 1px solid #ddd; + padding: 7px 0 7px 7px; + width: 93%; +} +.l-service-type-wrapper { + display: inline-block; + width: 10%; + overflow-wrap: break-word; +} +.l-jdbc-url-wrapper { + display: inline-block; + width: 85%; + overflow-wrap: break-word; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-data-source-chart-soucelist.component.html b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-data-source-chart-soucelist.component.html new file mode 100644 index 000000000000..7cf145ba3eed --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-data-source-chart-soucelist.component.html @@ -0,0 +1,14 @@ +
+

Data Source List

+
    +
  • + +
    + {{sourceData.serviceType}} + {{sourceData.jdbcUrl}} +
    +
  • +
+
diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-data-source-chart-soucelist.component.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-data-source-chart-soucelist.component.ts new file mode 100644 index 000000000000..bbd9bb7849c5 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-data-source-chart-soucelist.component.ts @@ -0,0 +1,45 @@ +import { Component, OnInit, OnChanges, Input, Output, EventEmitter, SimpleChanges } from '@angular/core'; + +@Component({ + selector: 'pp-application-data-source-chart-sourcelist', + templateUrl: './application-data-source-chart-soucelist.component.html', + styleUrls: ['./application-data-source-chart-soucelist.component.css'] +}) +export class ApplicationDataSourceChartSourcelistComponent implements OnInit, OnChanges { + @Input() isDataEmpty: boolean; + @Input() sourceDataArr: { [key: string]: any }[]; + @Output() outSourceDataSelected: EventEmitter = new EventEmitter(); + + private selectedIndex = 0; + + constructor() {} + ngOnInit() {} + ngOnChanges(changes: SimpleChanges) { + Object.keys(changes).map((propName: string) => { + switch (propName) { + case 'sourceDataArr': + this.initSelectedIndex(); + break; + } + }); + } + + private initSelectedIndex(): void { + this.selectedIndex = 0; + } + + isItemSelected(index: number): boolean { + return index === this.selectedIndex; + } + + private selectSource(index: number): void { + this.selectedIndex = index; + this.outSourceDataSelected.emit(this.selectedIndex); + } + + onClickSourceList(index: number): void { + if (index !== this.selectedIndex) { + this.selectSource(index); + } + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-direct-buffer-chart-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-direct-buffer-chart-data.service.ts new file mode 100644 index 000000000000..39904b93c3bd --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-direct-buffer-chart-data.service.ts @@ -0,0 +1,24 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable } from 'rxjs'; + +import { IChartDataService, IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; +import { NewUrlStateNotificationService } from 'app/shared/services'; +import { UrlPathId } from 'app/shared/models'; +import { getParamForApplicationChartData } from 'app/core/utils/chart-data-param-maker'; + +@Injectable() +export class ApplicationDirectBufferChartDataService implements IChartDataService { + private requestURL = 'getApplicationStat/directBuffer/chart.pinpoint'; + + constructor( + private http: HttpClient, + private newUrlStateNotificationService: NewUrlStateNotificationService, + ) {} + + getData(range: number[]): Observable { + return this.http.get(this.requestURL, + getParamForApplicationChartData(this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getApplicationName(), range) + ); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-direct-buffer-count-chart-container.component.css b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-direct-buffer-count-chart-container.component.css new file mode 100644 index 000000000000..7e076f488d6b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-direct-buffer-count-chart-container.component.css @@ -0,0 +1,25 @@ +:host { + display: block; + width: calc(50% - 20px); + margin: 10px; +} +.l-content-item { + width: 100%; + margin: 0px; +} +.l-title-group { + height:34px; + font-size:13px; + font-weight:600; + padding:0 20px; + color:#333; + display: flex; + align-items: center; + justify-content:space-between; + background: #f6f8fb; +} +.l-title-group .fas { + font-size: 18px; + color:#a8acb5; + cursor:pointer; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-direct-buffer-count-chart-container.component.html b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-direct-buffer-count-chart-container.component.html new file mode 100644 index 000000000000..3f86665e24aa --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-direct-buffer-count-chart-container.component.html @@ -0,0 +1,10 @@ +
+
Direct Buffer Count
+ + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-direct-buffer-count-chart-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-direct-buffer-count-chart-container.component.ts new file mode 100644 index 000000000000..a0b27c55ca0c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-direct-buffer-count-chart-container.component.ts @@ -0,0 +1,201 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import * as moment from 'moment-timezone'; + +import { Actions } from 'app/shared/store'; +import { WebAppSettingDataService, NewUrlStateNotificationService, AjaxExceptionCheckerService, AnalyticsService, StoreHelperService, DynamicPopupService } from 'app/shared/services'; +import { ApplicationDirectBufferChartDataService } from './application-direct-buffer-chart-data.service'; +import { HELP_VIEWER_LIST } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; +import { InspectorChartContainer } from 'app/core/components/inspector-chart/inspector-chart-container'; +import { IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; + +@Component({ + selector: 'pp-application-direct-buffer-count-chart-container', + templateUrl: './application-direct-buffer-count-chart-container.component.html', + styleUrls: ['./application-direct-buffer-count-chart-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ApplicationDirectBufferCountChartContainerComponent extends InspectorChartContainer implements OnInit, OnDestroy { + constructor( + storeHelperService: StoreHelperService, + changeDetector: ChangeDetectorRef, + webAppSettingDataService: WebAppSettingDataService, + newUrlStateNotificationService: NewUrlStateNotificationService, + chartDataService: ApplicationDirectBufferChartDataService, + translateService: TranslateService, + ajaxExceptionCheckerService: AjaxExceptionCheckerService, + analyticsService: AnalyticsService, + dynamicPopupService: DynamicPopupService + ) { + super( + 100, + storeHelperService, + changeDetector, + webAppSettingDataService, + newUrlStateNotificationService, + chartDataService, + translateService, + ajaxExceptionCheckerService, + analyticsService, + dynamicPopupService + ); + } + + ngOnInit() { + this.initI18nText(); + this.initHoveredInfo(); + this.initTimezoneAndDateFormat(); + this.initChartData(); + } + + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + + protected makeChartData(data: IChartDataFromServer): {[key: string]: any} { + return { + x: data.charts.x.map((time: number) => moment(time).tz(this.timezone).format(this.dateFormat[0]) + '#' + moment(time).tz(this.timezone).format(this.dateFormat[1])), + minArr: data.charts.y['DIRECT_COUNT'].map((arr: any[]) => this.parseData(arr[0])), + minAgentIdArr: data.charts.y['DIRECT_COUNT'].map((arr: any[]) => arr[1]), + maxArr: data.charts.y['DIRECT_COUNT'].map((arr: any[]) => this.parseData(arr[2])), + maxAgentIdArr: data.charts.y['DIRECT_COUNT'].map((arr: any[]) => arr[3]), + avgArr: data.charts.y['DIRECT_COUNT'].map((arr: any[]) => this.parseData(arr[4])), + }; + } + + protected makeDataOption(data: {[key: string]: any}): {[key: string]: any} { + return { + labels: data.x, + datasets: [{ + label: 'Min', + data: data.minArr, + fill: false, + borderDash: [2, 2], + borderWidth: 1.5, + borderColor: '#66B2FF', + backgroundColor: '#66B2FF', + pointRadius: 0, + pointHoverRadius: 3 + }, { + label: 'Avg', + data: data.avgArr, + fill: false, + borderWidth: 1.5, + borderColor: '#4C0099', + backgroundColor: '#4C0099', + pointRadius: 0, + pointHoverRadius: 3 + }, { + label: 'Max', + data: data.maxArr, + fill: false, + borderDash: [2, 2], + borderWidth: 1.5, + borderColor: '#0000CC', + backgroundColor: '#0000CC', + pointRadius: 0, + pointHoverRadius: 3 + }] + }; + } + + protected makeNormalOption(data: {[key: string]: any}): {[key: string]: any} { + return { + responsive: true, + title: { + display: false, + text: 'Direct Buffer Count' + }, + tooltips: { + mode: 'index', + intersect: false, + callbacks: { + title: (value: {[key: string]: any}[]): string => { + return value[0].xLabel.join(' '); + }, + label: (value: {[key: string]: any}, d: {[key: string]: any}): string => { + const label = d.datasets[value.datasetIndex].label; + const index = value.index; + + return `${label}: ${isNaN(value.yLabel) ? `-` : value.yLabel + ` ` + this.getAgentId(data.minAgentIdArr, data.maxAgentIdArr, label, index)}`; + } + } + }, + hover: { + mode: 'index', + intersect: false, + onHover: (event: MouseEvent, elements: {[key: string]: any}[]): void => { + if (!this.isDataEmpty(data)) { + this.storeHelperService.dispatch(new Actions.ChangeHoverOnInspectorCharts({ + index: event.type === 'mouseout' ? -1 : elements[0]._index, + offsetX: event.offsetX, + offsetY: event.offsetY + })); + } + }, + }, + scales: { + xAxes: [{ + display: true, + scaleLabel: { + display: false + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + maxTicksLimit: 4, + callback: (label: string): string[] => { + return label.split('#'); + }, + maxRotation: 0, + minRotation: 0, + fontSize: 11, + padding: 5 + } + }], + yAxes: [{ + display: true, + scaleLabel: { + display: true, + labelString: 'Buffer (count)', + fontSize: 14, + fontStyle: 'bold' + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + beginAtZero: true, + maxTicksLimit: 5, + min: 0, + max: this.isDataEmpty(data) ? this.defaultYMax : undefined, + padding: 5 + } + }] + }, + legend: { + display: true, + labels: { + boxWidth: 50, + padding: 10 + } + } + }; + } + + private getAgentId(minAgentIdArr: string[], maxAgentIdArr: string[], label: string, index: number): string { + return label === 'Avg' ? '' : `(${label === 'Min' ? minAgentIdArr[index] : maxAgentIdArr[index]})`; + } + + onShowHelp($event: MouseEvent): void { + super.onShowHelp($event, HELP_VIEWER_LIST.APPLICATION_DIRECT_BUFFER_COUNT); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-direct-buffer-memory-chart-container.component.css b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-direct-buffer-memory-chart-container.component.css new file mode 100644 index 000000000000..7e076f488d6b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-direct-buffer-memory-chart-container.component.css @@ -0,0 +1,25 @@ +:host { + display: block; + width: calc(50% - 20px); + margin: 10px; +} +.l-content-item { + width: 100%; + margin: 0px; +} +.l-title-group { + height:34px; + font-size:13px; + font-weight:600; + padding:0 20px; + color:#333; + display: flex; + align-items: center; + justify-content:space-between; + background: #f6f8fb; +} +.l-title-group .fas { + font-size: 18px; + color:#a8acb5; + cursor:pointer; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-direct-buffer-memory-chart-container.component.html b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-direct-buffer-memory-chart-container.component.html new file mode 100644 index 000000000000..67cc6afb6bc1 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-direct-buffer-memory-chart-container.component.html @@ -0,0 +1,10 @@ +
+
Direct Buffer Memory
+ + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-direct-buffer-memory-chart-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-direct-buffer-memory-chart-container.component.ts new file mode 100644 index 000000000000..354ea3fc18ac --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-direct-buffer-memory-chart-container.component.ts @@ -0,0 +1,217 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import * as moment from 'moment-timezone'; + +import { Actions } from 'app/shared/store'; +import { WebAppSettingDataService, NewUrlStateNotificationService, AjaxExceptionCheckerService, AnalyticsService, StoreHelperService, DynamicPopupService } from 'app/shared/services'; +import { ApplicationDirectBufferChartDataService } from './application-direct-buffer-chart-data.service'; +import { HELP_VIEWER_LIST } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; +import { InspectorChartContainer } from 'app/core/components/inspector-chart/inspector-chart-container'; +import { IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; + +@Component({ + selector: 'pp-application-direct-buffer-memory-chart-container', + templateUrl: './application-direct-buffer-memory-chart-container.component.html', + styleUrls: ['./application-direct-buffer-memory-chart-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ApplicationDirectBufferMemoryChartContainerComponent extends InspectorChartContainer implements OnInit, OnDestroy { + constructor( + storeHelperService: StoreHelperService, + changeDetector: ChangeDetectorRef, + webAppSettingDataService: WebAppSettingDataService, + newUrlStateNotificationService: NewUrlStateNotificationService, + chartDataService: ApplicationDirectBufferChartDataService, + translateService: TranslateService, + ajaxExceptionCheckerService: AjaxExceptionCheckerService, + analyticsService: AnalyticsService, + dynamicPopupService: DynamicPopupService + ) { + super( + 100, + storeHelperService, + changeDetector, + webAppSettingDataService, + newUrlStateNotificationService, + chartDataService, + translateService, + ajaxExceptionCheckerService, + analyticsService, + dynamicPopupService + ); + } + + ngOnInit() { + this.initI18nText(); + this.initHoveredInfo(); + this.initTimezoneAndDateFormat(); + this.initChartData(); + } + + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + + protected makeChartData(data: IChartDataFromServer): {[key: string]: any} { + return { + x: data.charts.x.map((time: number) => moment(time).tz(this.timezone).format(this.dateFormat[0]) + '#' + moment(time).tz(this.timezone).format(this.dateFormat[1])), + minArr: data.charts.y['DIRECT_MEMORY_USED'].map((arr: any[]) => this.parseData(arr[0])), + minAgentIdArr: data.charts.y['DIRECT_MEMORY_USED'].map((arr: any[]) => arr[1]), + maxArr: data.charts.y['DIRECT_MEMORY_USED'].map((arr: any[]) => this.parseData(arr[2])), + maxAgentIdArr: data.charts.y['DIRECT_MEMORY_USED'].map((arr: any[]) => arr[3]), + avgArr: data.charts.y['DIRECT_MEMORY_USED'].map((arr: any[]) => this.parseData(arr[4])), + }; + } + + protected makeDataOption(data: {[key: string]: any}): {[key: string]: any} { + return { + labels: data.x, + datasets: [{ + label: 'Min', + data: data.minArr, + fill: false, + borderDash: [2, 2], + borderWidth: 1.5, + borderColor: '#66B2FF', + backgroundColor: '#66B2FF', + pointRadius: 0, + pointHoverRadius: 3 + }, { + label: 'Avg', + data: data.avgArr, + fill: false, + borderWidth: 1.5, + borderColor: '#4C0099', + backgroundColor: '#4C0099', + pointRadius: 0, + pointHoverRadius: 3 + }, { + label: 'Max', + data: data.maxArr, + fill: false, + borderDash: [2, 2], + borderWidth: 1.5, + borderColor: '#0000CC', + backgroundColor: '#0000CC', + pointRadius: 0, + pointHoverRadius: 3 + }] + }; + } + + protected makeNormalOption(data: {[key: string]: any}): {[key: string]: any} { + return { + responsive: true, + title: { + display: false, + text: 'Direct Buffer Memory' + }, + tooltips: { + mode: 'index', + intersect: false, + callbacks: { + title: (value: {[key: string]: any}[]): string => { + return value[0].xLabel.join(' '); + }, + label: (value: {[key: string]: any}, d: {[key: string]: any}): string => { + const label = d.datasets[value.datasetIndex].label; + const index = value.index; + + return `${label}: ${isNaN(value.yLabel) ? `-` : this.convertWithUnit(value.yLabel) + ` ` + this.getAgentId(data.minAgentIdArr, data.maxAgentIdArr, label, index)}`; + } + } + }, + hover: { + mode: 'index', + intersect: false, + onHover: (event: MouseEvent, elements: {[key: string]: any}[]): void => { + if (!this.isDataEmpty(data)) { + this.storeHelperService.dispatch(new Actions.ChangeHoverOnInspectorCharts({ + index: event.type === 'mouseout' ? -1 : elements[0]._index, + offsetX: event.offsetX, + offsetY: event.offsetY + })); + } + }, + }, + scales: { + xAxes: [{ + display: true, + scaleLabel: { + display: false + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + maxTicksLimit: 4, + callback: (label: string): string[] => { + return label.split('#'); + }, + maxRotation: 0, + minRotation: 0, + fontSize: 11, + padding: 5 + } + }], + yAxes: [{ + display: true, + scaleLabel: { + display: true, + labelString: 'Memory (bytes)', + fontSize: 14, + fontStyle: 'bold' + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + beginAtZero: true, + maxTicksLimit: 5, + callback: (label: number): string => { + return this.convertWithUnit(label); + }, + min: 0, + max: this.isDataEmpty(data) ? this.defaultYMax : undefined, + padding: 5 + } + }] + }, + legend: { + display: true, + labels: { + boxWidth: 50, + padding: 10 + } + } + }; + } + + private getAgentId(minAgentIdArr: string[], maxAgentIdArr: string[], label: string, index: number): string { + return label === 'Avg' ? '' : `(${label === 'Min' ? minAgentIdArr[index] : maxAgentIdArr[index]})`; + } + + private convertWithUnit(value: number): string { + const unit = ['', 'K', 'M', 'G']; + let result = value; + let index = 0; + while ( result >= 1000 ) { + index++; + result /= 1000; + } + + result = Number.isInteger(result) ? result : Number(result.toFixed(2)); + return result + unit[index]; + } + + onShowHelp($event: MouseEvent): void { + super.onShowHelp($event, HELP_VIEWER_LIST.APPLICATION_DIRECT_BUFFER_MEMORY); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-jvm-cpu-chart-container.component.css b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-jvm-cpu-chart-container.component.css new file mode 100644 index 000000000000..7e076f488d6b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-jvm-cpu-chart-container.component.css @@ -0,0 +1,25 @@ +:host { + display: block; + width: calc(50% - 20px); + margin: 10px; +} +.l-content-item { + width: 100%; + margin: 0px; +} +.l-title-group { + height:34px; + font-size:13px; + font-weight:600; + padding:0 20px; + color:#333; + display: flex; + align-items: center; + justify-content:space-between; + background: #f6f8fb; +} +.l-title-group .fas { + font-size: 18px; + color:#a8acb5; + cursor:pointer; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-jvm-cpu-chart-container.component.html b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-jvm-cpu-chart-container.component.html new file mode 100644 index 000000000000..d2b8171c754f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-jvm-cpu-chart-container.component.html @@ -0,0 +1,10 @@ +
+
JVM CPU Usage
+ + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-jvm-cpu-chart-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-jvm-cpu-chart-container.component.ts new file mode 100644 index 000000000000..3a974a0b35a9 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-jvm-cpu-chart-container.component.ts @@ -0,0 +1,224 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import * as moment from 'moment-timezone'; + +import { Actions } from 'app/shared/store'; +import { WebAppSettingDataService, NewUrlStateNotificationService, AjaxExceptionCheckerService, AnalyticsService, StoreHelperService, DynamicPopupService } from 'app/shared/services'; +import { ApplicationCPUChartDataService } from './application-cpu-chart-data.service'; +import { HELP_VIEWER_LIST } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; +import { InspectorChartContainer } from 'app/core/components/inspector-chart/inspector-chart-container'; +import { IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; + +@Component({ + selector: 'pp-application-jvm-cpu-chart-container', + templateUrl: './application-jvm-cpu-chart-container.component.html', + styleUrls: ['./application-jvm-cpu-chart-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ApplicationJVMCPUChartContainerComponent extends InspectorChartContainer implements OnInit, OnDestroy { + constructor( + storeHelperService: StoreHelperService, + changeDetector: ChangeDetectorRef, + webAppSettingDataService: WebAppSettingDataService, + newUrlStateNotificationService: NewUrlStateNotificationService, + chartDataService: ApplicationCPUChartDataService, + translateService: TranslateService, + ajaxExceptionCheckerService: AjaxExceptionCheckerService, + analyticsService: AnalyticsService, + dynamicPopupService: DynamicPopupService + ) { + super( + 100, + storeHelperService, + changeDetector, + webAppSettingDataService, + newUrlStateNotificationService, + chartDataService, + translateService, + ajaxExceptionCheckerService, + analyticsService, + dynamicPopupService + ); + } + + ngOnInit() { + this.initI18nText(); + this.initHoveredInfo(); + this.initTimezoneAndDateFormat(); + this.initChartData(); + } + + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + + protected makeChartData(chartData: IChartDataFromServer): {[key: string]: any} { + const xArr = []; + const maxArr = []; + const minArr = []; + const avgArr = []; + const maxAgentIdArr = []; + const minAgentIdArr = []; + + const xData = chartData.charts.x; + const cpuLoadJVM = chartData.charts.y['CPU_LOAD_JVM']; + const dataCount = xData.length; + + for ( let i = 0 ; i < dataCount ; i++ ) { + xArr.push(moment(xData[i]).tz(this.timezone).format(this.dateFormat[0]) + '#' + moment(xData[i]).tz(this.timezone).format(this.dateFormat[1])); + if (cpuLoadJVM[i]) { + minArr.push(this.parseData(cpuLoadJVM[i][0])); + minAgentIdArr.push(cpuLoadJVM[i][1]); + maxArr.push(this.parseData(cpuLoadJVM[i][2])); + maxAgentIdArr.push(cpuLoadJVM[i][3]); + avgArr.push(this.parseData(cpuLoadJVM[i][4])); + } + } + return { + x: xArr, + maxArr, + minArr, + avgArr, + minAgentIdArr, + maxAgentIdArr, + }; + } + + protected makeDataOption(data: {[key: string]: any}): {[key: string]: any} { + return { + labels: data.x, + datasets: [{ + label: 'Min', + data: data.minArr, + fill: false, + borderDash: [2, 2], + borderWidth: 1.5, + borderColor: '#66B2FF', + backgroundColor: '#66B2FF', + pointRadius: 0, + pointHoverRadius: 3 + }, { + label: 'Avg', + data: data.avgArr, + fill: false, + borderWidth: 1.5, + borderColor: '#4C0099', + backgroundColor: '#4C0099', + pointRadius: 0, + pointHoverRadius: 3 + }, { + label: 'Max', + data: data.maxArr, + fill: false, + borderDash: [2, 2], + borderWidth: 1.5, + borderColor: '#0000CC', + backgroundColor: '#0000CC', + pointRadius: 0, + pointHoverRadius: 3 + }] + }; + } + + protected makeNormalOption(data: {[key: string]: any}): {[key: string]: any} { + return { + responsive: true, + title: { + display: false + }, + tooltips: { + mode: 'index', + intersect: false, + callbacks: { + title: (value: {[key: string]: any}[]) => { + return value[0].xLabel.join(' '); + }, + label: (value: {[key: string]: any}, d: {[key: string]: any}): string => { + const label = d.datasets[value.datasetIndex].label; + const index = value.index; + + return `${label}: ${isNaN(value.yLabel) ? `-` : value.yLabel + `% ` + this.getAgentId(data.minAgentIdArr, data.maxAgentIdArr, label, index)}`; + } + } + }, + hover: { + mode: 'index', + intersect: false, + onHover: (event: MouseEvent, elements: {[key: string]: any}[]): void => { + if (!this.isDataEmpty(data)) { + this.storeHelperService.dispatch(new Actions.ChangeHoverOnInspectorCharts({ + index: event.type === 'mouseout' ? -1 : elements[0]._index, + offsetX: event.offsetX, + offsetY: event.offsetY + })); + } + }, + }, + scales: { + xAxes: [{ + display: true, + scaleLabel: { + display: false + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + maxTicksLimit: 4, + callback: (label: string): string[] => { + return label.split('#'); + }, + maxRotation: 0, + minRotation: 0, + fontSize: 11, + padding: 5 + } + }], + yAxes: [{ + display: true, + scaleLabel: { + display: true, + labelString: 'CPU Usage (%)', + fontSize: 14, + fontStyle: 'bold' + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + beginAtZero: true, + maxTicksLimit: 5, + callback: (label: number): string => { + return `${label}%`; + }, + min: 0, + max: this.defaultYMax, + padding: 5 + } + }] + }, + legend: { + display: true, + labels: { + boxWidth: 50, + padding: 10 + } + } + }; + } + + private getAgentId(minAgentIdArr: string[], maxAgentIdArr: string[], label: string, index: number): string { + return label === 'Avg' ? '' : `(${label === 'Min' ? minAgentIdArr[index] : maxAgentIdArr[index]})`; + } + + onShowHelp($event: MouseEvent): void { + super.onShowHelp($event, HELP_VIEWER_LIST.APPLICATION_JVM_CPU_USAGE); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-jvm-heap-chart-container.component.css b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-jvm-heap-chart-container.component.css new file mode 100644 index 000000000000..7e076f488d6b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-jvm-heap-chart-container.component.css @@ -0,0 +1,25 @@ +:host { + display: block; + width: calc(50% - 20px); + margin: 10px; +} +.l-content-item { + width: 100%; + margin: 0px; +} +.l-title-group { + height:34px; + font-size:13px; + font-weight:600; + padding:0 20px; + color:#333; + display: flex; + align-items: center; + justify-content:space-between; + background: #f6f8fb; +} +.l-title-group .fas { + font-size: 18px; + color:#a8acb5; + cursor:pointer; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-jvm-heap-chart-container.component.html b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-jvm-heap-chart-container.component.html new file mode 100644 index 000000000000..211d0ea16cd6 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-jvm-heap-chart-container.component.html @@ -0,0 +1,10 @@ +
+
Heap Usage
+ + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-jvm-heap-chart-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-jvm-heap-chart-container.component.ts new file mode 100644 index 000000000000..ff9f6a1d0efe --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-jvm-heap-chart-container.component.ts @@ -0,0 +1,239 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import * as moment from 'moment-timezone'; + +import { Actions } from 'app/shared/store'; +import { WebAppSettingDataService, NewUrlStateNotificationService, AjaxExceptionCheckerService, AnalyticsService, StoreHelperService, DynamicPopupService } from 'app/shared/services'; +import { ApplicationMemoryChartDataService } from './application-memory-chart-data.service'; +import { HELP_VIEWER_LIST } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; +import { InspectorChartContainer } from 'app/core/components/inspector-chart/inspector-chart-container'; +import { IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; + +@Component({ + selector: 'pp-application-jvm-heap-chart-container', + templateUrl: './application-jvm-heap-chart-container.component.html', + styleUrls: ['./application-jvm-heap-chart-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ApplicationJVMHeapChartContainerComponent extends InspectorChartContainer implements OnInit, OnDestroy { + constructor( + storeHelperService: StoreHelperService, + changeDetector: ChangeDetectorRef, + webAppSettingDataService: WebAppSettingDataService, + newUrlStateNotificationService: NewUrlStateNotificationService, + chartDataService: ApplicationMemoryChartDataService, + translateService: TranslateService, + ajaxExceptionCheckerService: AjaxExceptionCheckerService, + analyticsService: AnalyticsService, + dynamicPopupService: DynamicPopupService + ) { + super( + 100000, + storeHelperService, + changeDetector, + webAppSettingDataService, + newUrlStateNotificationService, + chartDataService, + translateService, + ajaxExceptionCheckerService, + analyticsService, + dynamicPopupService + ); + } + + ngOnInit() { + this.initI18nText(); + this.initHoveredInfo(); + this.initTimezoneAndDateFormat(); + this.initChartData(); + } + + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + + protected makeChartData(chartData: IChartDataFromServer): {[key: string]: any} { + const xArr = []; + const maxArr = []; + const minArr = []; + const avgArr = []; + const maxAgentIdArr = []; + const minAgentIdArr = []; + + const xData = chartData.charts.x; + const memoryHeap = chartData.charts.y['MEMORY_HEAP']; + const dataCount = xData.length; + + for ( let i = 0 ; i < dataCount ; i++ ) { + xArr.push(moment(xData[i]).tz(this.timezone).format(this.dateFormat[0]) + '#' + moment(xData[i]).tz(this.timezone).format(this.dateFormat[1])); + if (memoryHeap[i]) { + minArr.push(this.parseData(memoryHeap[i][0])); + minAgentIdArr.push(memoryHeap[i][1]); + maxArr.push(this.parseData(memoryHeap[i][2])); + maxAgentIdArr.push(memoryHeap[i][3]); + avgArr.push(this.parseData(memoryHeap[i][4])); + } + } + + return { + x: xArr, + maxArr, + minArr, + avgArr, + minAgentIdArr, + maxAgentIdArr, + }; + } + + protected makeDataOption(data: {[key: string]: any}): {[key: string]: any} { + return { + labels: data.x, + datasets: [{ + label: 'Min', + data: data.minArr, + fill: false, + borderDash: [2, 2], + borderWidth: 1.5, + borderColor: '#66B2FF', + backgroundColor: '#66B2FF', + pointRadius: 0, + pointHoverRadius: 3 + }, { + label: 'Avg', + data: data.avgArr, + fill: false, + borderWidth: 1.5, + borderColor: '#4C0099', + backgroundColor: '#4C0099', + pointRadius: 0, + pointHoverRadius: 3 + }, { + label: 'Max', + data: data.maxArr, + fill: false, + borderDash: [2, 2], + borderWidth: 1.5, + borderColor: '#0000CC', + backgroundColor: '#0000CC', + pointRadius: 0, + pointHoverRadius: 3 + }] + }; + } + + protected makeNormalOption(data: {[key: string]: any}): {[key: string]: any} { + return { + responsive: true, + title: { + display: false + }, + tooltips: { + mode: 'index', + intersect: false, + callbacks: { + title: (value: {[key: string]: any}[]) => { + return value[0].xLabel.join(' '); + }, + label: (value: {[key: string]: any}, d: {[key: string]: any}): string => { + const label = d.datasets[value.datasetIndex].label; + const index = value.index; + + return `${label}: ${isNaN(value.yLabel) ? `-` : this.convertWithUnit(value.yLabel) + ` ` + this.getAgentId(data.minAgentIdArr, data.maxAgentIdArr, label, index)}`; + } + } + }, + hover: { + mode: 'index', + intersect: false, + onHover: (event: MouseEvent, elements: {[key: string]: any}[]): void => { + if (!this.isDataEmpty(data)) { + this.storeHelperService.dispatch(new Actions.ChangeHoverOnInspectorCharts({ + index: event.type === 'mouseout' ? -1 : elements[0]._index, + offsetX: event.offsetX, + offsetY: event.offsetY + })); + } + }, + }, + scales: { + xAxes: [{ + display: true, + scaleLabel: { + display: false + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + maxTicksLimit: 4, + callback: (label: string): string[] => { + return label.split('#'); + }, + maxRotation: 0, + minRotation: 0, + fontSize: 11, + padding: 5 + } + }], + yAxes: [{ + display: true, + scaleLabel: { + display: true, + labelString: 'Memory (bytes)', + fontSize: 14, + fontStyle: 'bold' + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + beginAtZero: true, + maxTicksLimit: 5, + callback: (label: number): string => { + return this.convertWithUnit(label); + }, + min: 0, + max: this.isDataEmpty(data) ? this.defaultYMax : undefined, + padding: 5 + } + }] + }, + legend: { + display: true, + labels: { + boxWidth: 50, + padding: 10 + } + } + }; + } + + private getAgentId(minAgentIdArr: string[], maxAgentIdArr: string[], label: string, index: number): string { + return label === 'Avg' ? '' : `(${label === 'Min' ? minAgentIdArr[index] : maxAgentIdArr[index]})`; + } + + private convertWithUnit(value: number): string { + const unit = ['', 'K', 'M', 'G']; + let result = value; + let index = 0; + while ( result >= 1000 ) { + index++; + result /= 1000; + } + + result = Number.isInteger(result) ? result : Number(result.toFixed(2)); + return result + unit[index]; + } + + onShowHelp($event: MouseEvent): void { + super.onShowHelp($event, HELP_VIEWER_LIST.APPLICATION_HEAP); + } +} + diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-jvm-non-heap-chart-container.component.css b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-jvm-non-heap-chart-container.component.css new file mode 100644 index 000000000000..7e076f488d6b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-jvm-non-heap-chart-container.component.css @@ -0,0 +1,25 @@ +:host { + display: block; + width: calc(50% - 20px); + margin: 10px; +} +.l-content-item { + width: 100%; + margin: 0px; +} +.l-title-group { + height:34px; + font-size:13px; + font-weight:600; + padding:0 20px; + color:#333; + display: flex; + align-items: center; + justify-content:space-between; + background: #f6f8fb; +} +.l-title-group .fas { + font-size: 18px; + color:#a8acb5; + cursor:pointer; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-jvm-non-heap-chart-container.component.html b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-jvm-non-heap-chart-container.component.html new file mode 100644 index 000000000000..e908e6f83fb3 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-jvm-non-heap-chart-container.component.html @@ -0,0 +1,10 @@ +
+
Non Heap Usage
+ + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-jvm-non-heap-chart-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-jvm-non-heap-chart-container.component.ts new file mode 100644 index 000000000000..4c8e5625c745 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-jvm-non-heap-chart-container.component.ts @@ -0,0 +1,237 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import * as moment from 'moment-timezone'; + +import { Actions } from 'app/shared/store'; +import { WebAppSettingDataService, NewUrlStateNotificationService, AjaxExceptionCheckerService, AnalyticsService, StoreHelperService, DynamicPopupService } from 'app/shared/services'; +import { ApplicationMemoryChartDataService } from './application-memory-chart-data.service'; +import { HELP_VIEWER_LIST } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; +import { InspectorChartContainer } from 'app/core/components/inspector-chart/inspector-chart-container'; +import { IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; + +@Component({ + selector: 'pp-application-jvm-non-heap-chart-container', + templateUrl: './application-jvm-non-heap-chart-container.component.html', + styleUrls: ['./application-jvm-non-heap-chart-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ApplicationJVMNonHeapChartContainerComponent extends InspectorChartContainer implements OnInit, OnDestroy { + constructor( + storeHelperService: StoreHelperService, + changeDetector: ChangeDetectorRef, + webAppSettingDataService: WebAppSettingDataService, + newUrlStateNotificationService: NewUrlStateNotificationService, + chartDataService: ApplicationMemoryChartDataService, + translateService: TranslateService, + ajaxExceptionCheckerService: AjaxExceptionCheckerService, + analyticsService: AnalyticsService, + dynamicPopupService: DynamicPopupService + ) { + super( + 100000, + storeHelperService, + changeDetector, + webAppSettingDataService, + newUrlStateNotificationService, + chartDataService, + translateService, + ajaxExceptionCheckerService, + analyticsService, + dynamicPopupService + ); + } + + ngOnInit() { + this.initI18nText(); + this.initHoveredInfo(); + this.initTimezoneAndDateFormat(); + this.initChartData(); + } + + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + + protected makeChartData(chartData: IChartDataFromServer): {[key: string]: any} { + const xArr = []; + const maxArr = []; + const minArr = []; + const avgArr = []; + const maxAgentIdArr = []; + const minAgentIdArr = []; + + const xData = chartData.charts.x; + const memoryNonHeap = chartData.charts.y['MEMORY_NON_HEAP']; + const dataCount = xData.length; + + for ( let i = 0 ; i < dataCount ; i++ ) { + xArr.push(moment(xData[i]).tz(this.timezone).format(this.dateFormat[0]) + '#' + moment(xData[i]).tz(this.timezone).format(this.dateFormat[1])); + if (memoryNonHeap[i]) { + minArr.push(this.parseData(memoryNonHeap[i][0])); + minAgentIdArr.push(memoryNonHeap[i][1]); + maxArr.push(this.parseData(memoryNonHeap[i][2])); + maxAgentIdArr.push(memoryNonHeap[i][3]); + avgArr.push(this.parseData(memoryNonHeap[i][4])); + } + } + return { + x: xArr, + maxArr, + minArr, + avgArr, + minAgentIdArr, + maxAgentIdArr, + }; + } + + protected makeDataOption(data: {[key: string]: any}): {[key: string]: any} { + return { + labels: data.x, + datasets: [{ + label: 'Min', + data: data.minArr, + fill: false, + borderDash: [2, 2], + borderWidth: 1.5, + borderColor: '#66B2FF', + backgroundColor: '#66B2FF', + pointRadius: 0, + pointHoverRadius: 3 + }, { + label: 'Avg', + data: data.avgArr, + fill: false, + borderWidth: 1.5, + borderColor: '#4C0099', + backgroundColor: '#4C0099', + pointRadius: 0, + pointHoverRadius: 3 + }, { + label: 'Max', + data: data.maxArr, + fill: false, + borderDash: [2, 2], + borderWidth: 1.5, + borderColor: '#0000CC', + backgroundColor: '#0000CC', + pointRadius: 0, + pointHoverRadius: 3 + }] + }; + } + + protected makeNormalOption(data: {[key: string]: any}): {[key: string]: any} { + return { + responsive: true, + title: { + display: false + }, + tooltips: { + mode: 'index', + intersect: false, + callbacks: { + title: (value: {[key: string]: any}[]) => { + return value[0].xLabel.join(' '); + }, + label: (value: {[key: string]: any}, d: {[key: string]: any}): string => { + const label = d.datasets[value.datasetIndex].label; + const index = value.index; + + return `${label}: ${isNaN(value.yLabel) ? `-` : this.convertWithUnit(value.yLabel) + ` ` + this.getAgentId(data.minAgentIdArr, data.maxAgentIdArr, label, index)}`; + } + } + }, + hover: { + mode: 'index', + intersect: false, + onHover: (event: MouseEvent, elements: {[key: string]: any}[]): void => { + if (!this.isDataEmpty(data)) { + this.storeHelperService.dispatch(new Actions.ChangeHoverOnInspectorCharts({ + index: event.type === 'mouseout' ? -1 : elements[0]._index, + offsetX: event.offsetX, + offsetY: event.offsetY + })); + } + }, + }, + scales: { + xAxes: [{ + display: true, + scaleLabel: { + display: false + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + maxTicksLimit: 4, + callback: (label: string): string[] => { + return label.split('#'); + }, + maxRotation: 0, + minRotation: 0, + fontSize: 11, + padding: 5 + } + }], + yAxes: [{ + display: true, + scaleLabel: { + display: true, + labelString: 'Memory (bytes)', + fontSize: 14, + fontStyle: 'bold' + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + beginAtZero: true, + maxTicksLimit: 5, + callback: (label: number): string => { + return this.convertWithUnit(label); + }, + min: 0, + max: this.isDataEmpty(data) ? this.defaultYMax : undefined, + padding: 5 + } + }] + }, + legend: { + display: true, + labels: { + boxWidth: 50, + padding: 10 + } + } + }; + } + + private getAgentId(minAgentIdArr: string[], maxAgentIdArr: string[], label: string, index: number): string { + return label === 'Avg' ? '' : `(${label === 'Min' ? minAgentIdArr[index] : maxAgentIdArr[index]})`; + } + + private convertWithUnit(value: number): string { + const unit = ['', 'K', 'M', 'G']; + let result = value; + let index = 0; + while ( result >= 1000 ) { + index++; + result /= 1000; + } + + result = Number.isInteger(result) ? result : Number(result.toFixed(2)); + return result + unit[index]; + } + + onShowHelp($event: MouseEvent): void { + super.onShowHelp($event, HELP_VIEWER_LIST.APPLICATION_NON_HEAP); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-mapped-buffer-count-chart-container.component.css b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-mapped-buffer-count-chart-container.component.css new file mode 100644 index 000000000000..7e076f488d6b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-mapped-buffer-count-chart-container.component.css @@ -0,0 +1,25 @@ +:host { + display: block; + width: calc(50% - 20px); + margin: 10px; +} +.l-content-item { + width: 100%; + margin: 0px; +} +.l-title-group { + height:34px; + font-size:13px; + font-weight:600; + padding:0 20px; + color:#333; + display: flex; + align-items: center; + justify-content:space-between; + background: #f6f8fb; +} +.l-title-group .fas { + font-size: 18px; + color:#a8acb5; + cursor:pointer; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-mapped-buffer-count-chart-container.component.html b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-mapped-buffer-count-chart-container.component.html new file mode 100644 index 000000000000..879857bea4b6 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-mapped-buffer-count-chart-container.component.html @@ -0,0 +1,10 @@ +
+
Mapped Buffer Count
+ + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-mapped-buffer-count-chart-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-mapped-buffer-count-chart-container.component.ts new file mode 100644 index 000000000000..8538ca9bbdf9 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-mapped-buffer-count-chart-container.component.ts @@ -0,0 +1,201 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import * as moment from 'moment-timezone'; + +import { Actions } from 'app/shared/store'; +import { WebAppSettingDataService, NewUrlStateNotificationService, AjaxExceptionCheckerService, AnalyticsService, StoreHelperService, DynamicPopupService } from 'app/shared/services'; +import { ApplicationDirectBufferChartDataService } from './application-direct-buffer-chart-data.service'; +import { HELP_VIEWER_LIST } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; +import { InspectorChartContainer } from 'app/core/components/inspector-chart/inspector-chart-container'; +import { IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; + +@Component({ + selector: 'pp-application-mapped-buffer-count-chart-container', + templateUrl: './application-mapped-buffer-count-chart-container.component.html', + styleUrls: ['./application-mapped-buffer-count-chart-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ApplicationMappedBufferCountChartContainerComponent extends InspectorChartContainer implements OnInit, OnDestroy { + constructor( + storeHelperService: StoreHelperService, + changeDetector: ChangeDetectorRef, + webAppSettingDataService: WebAppSettingDataService, + newUrlStateNotificationService: NewUrlStateNotificationService, + chartDataService: ApplicationDirectBufferChartDataService, + translateService: TranslateService, + ajaxExceptionCheckerService: AjaxExceptionCheckerService, + analyticsService: AnalyticsService, + dynamicPopupService: DynamicPopupService + ) { + super( + 100, + storeHelperService, + changeDetector, + webAppSettingDataService, + newUrlStateNotificationService, + chartDataService, + translateService, + ajaxExceptionCheckerService, + analyticsService, + dynamicPopupService + ); + } + + ngOnInit() { + this.initI18nText(); + this.initHoveredInfo(); + this.initTimezoneAndDateFormat(); + this.initChartData(); + } + + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + + protected makeChartData(data: IChartDataFromServer): {[key: string]: any} { + return { + x: data.charts.x.map((time: number) => moment(time).tz(this.timezone).format(this.dateFormat[0]) + '#' + moment(time).tz(this.timezone).format(this.dateFormat[1])), + minArr: data.charts.y['MAPPED_COUNT'].map((arr: any[]) => this.parseData(arr[0])), + minAgentIdArr: data.charts.y['MAPPED_COUNT'].map((arr: any[]) => arr[1]), + maxArr: data.charts.y['MAPPED_COUNT'].map((arr: any[]) => this.parseData(arr[2])), + maxAgentIdArr: data.charts.y['MAPPED_COUNT'].map((arr: any[]) => arr[3]), + avgArr: data.charts.y['MAPPED_COUNT'].map((arr: any[]) => this.parseData(arr[4])), + }; + } + + protected makeDataOption(data: {[key: string]: any}): {[key: string]: any} { + return { + labels: data.x, + datasets: [{ + label: 'Min', + data: data.minArr, + fill: false, + borderDash: [2, 2], + borderWidth: 1.5, + borderColor: '#66B2FF', + backgroundColor: '#66B2FF', + pointRadius: 0, + pointHoverRadius: 3 + }, { + label: 'Avg', + data: data.avgArr, + fill: false, + borderWidth: 1.5, + borderColor: '#4C0099', + backgroundColor: '#4C0099', + pointRadius: 0, + pointHoverRadius: 3 + }, { + label: 'Max', + data: data.maxArr, + fill: false, + borderDash: [2, 2], + borderWidth: 1.5, + borderColor: '#0000CC', + backgroundColor: '#0000CC', + pointRadius: 0, + pointHoverRadius: 3 + }] + }; + } + + protected makeNormalOption(data: {[key: string]: any}): {[key: string]: any} { + return { + responsive: true, + title: { + display: false, + text: 'Mapped Buffer Count' + }, + tooltips: { + mode: 'index', + intersect: false, + callbacks: { + title: (value: {[key: string]: any}[]): string => { + return value[0].xLabel.join(' '); + }, + label: (value: {[key: string]: any}, d: {[key: string]: any}): string => { + const label = d.datasets[value.datasetIndex].label; + const index = value.index; + + return `${label}: ${isNaN(value.yLabel) ? `-` : value.yLabel + ` ` + this.getAgentId(data.minAgentIdArr, data.maxAgentIdArr, label, index)}`; + } + } + }, + hover: { + mode: 'index', + intersect: false, + onHover: (event: MouseEvent, elements: {[key: string]: any}[]): void => { + if (!this.isDataEmpty(data)) { + this.storeHelperService.dispatch(new Actions.ChangeHoverOnInspectorCharts({ + index: event.type === 'mouseout' ? -1 : elements[0]._index, + offsetX: event.offsetX, + offsetY: event.offsetY + })); + } + }, + }, + scales: { + xAxes: [{ + display: true, + scaleLabel: { + display: false + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + maxTicksLimit: 4, + callback: (label: string): string[] => { + return label.split('#'); + }, + maxRotation: 0, + minRotation: 0, + fontSize: 11, + padding: 5 + } + }], + yAxes: [{ + display: true, + scaleLabel: { + display: true, + labelString: 'Buffer (count)', + fontSize: 14, + fontStyle: 'bold' + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + beginAtZero: true, + maxTicksLimit: 5, + min: 0, + max: this.isDataEmpty(data) ? this.defaultYMax : undefined, + padding: 5 + } + }] + }, + legend: { + display: true, + labels: { + boxWidth: 50, + padding: 10 + } + } + }; + } + + private getAgentId(minAgentIdArr: string[], maxAgentIdArr: string[], label: string, index: number): string { + return label === 'Avg' ? '' : `(${label === 'Min' ? minAgentIdArr[index] : maxAgentIdArr[index]})`; + } + + onShowHelp($event: MouseEvent): void { + super.onShowHelp($event, HELP_VIEWER_LIST.APPLICATION_MAPPED_BUFFER_COUNT); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-mapped-buffer-memory-chart-container.component.css b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-mapped-buffer-memory-chart-container.component.css new file mode 100644 index 000000000000..7e076f488d6b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-mapped-buffer-memory-chart-container.component.css @@ -0,0 +1,25 @@ +:host { + display: block; + width: calc(50% - 20px); + margin: 10px; +} +.l-content-item { + width: 100%; + margin: 0px; +} +.l-title-group { + height:34px; + font-size:13px; + font-weight:600; + padding:0 20px; + color:#333; + display: flex; + align-items: center; + justify-content:space-between; + background: #f6f8fb; +} +.l-title-group .fas { + font-size: 18px; + color:#a8acb5; + cursor:pointer; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-mapped-buffer-memory-chart-container.component.html b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-mapped-buffer-memory-chart-container.component.html new file mode 100644 index 000000000000..afb8bb19c95f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-mapped-buffer-memory-chart-container.component.html @@ -0,0 +1,10 @@ +
+
Mapped Buffer Memory
+ + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-mapped-buffer-memory-chart-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-mapped-buffer-memory-chart-container.component.ts new file mode 100644 index 000000000000..1b77c92b5279 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-mapped-buffer-memory-chart-container.component.ts @@ -0,0 +1,217 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import * as moment from 'moment-timezone'; + +import { Actions } from 'app/shared/store'; +import { WebAppSettingDataService, NewUrlStateNotificationService, AjaxExceptionCheckerService, AnalyticsService, StoreHelperService, DynamicPopupService } from 'app/shared/services'; +import { ApplicationDirectBufferChartDataService } from './application-direct-buffer-chart-data.service'; +import { HELP_VIEWER_LIST } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; +import { InspectorChartContainer } from 'app/core/components/inspector-chart/inspector-chart-container'; +import { IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; + +@Component({ + selector: 'pp-application-mapped-buffer-memory-chart-container', + templateUrl: './application-mapped-buffer-memory-chart-container.component.html', + styleUrls: ['./application-mapped-buffer-memory-chart-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ApplicationMappedBufferMemoryChartContainerComponent extends InspectorChartContainer implements OnInit, OnDestroy { + constructor( + storeHelperService: StoreHelperService, + changeDetector: ChangeDetectorRef, + webAppSettingDataService: WebAppSettingDataService, + newUrlStateNotificationService: NewUrlStateNotificationService, + chartDataService: ApplicationDirectBufferChartDataService, + translateService: TranslateService, + ajaxExceptionCheckerService: AjaxExceptionCheckerService, + analyticsService: AnalyticsService, + dynamicPopupService: DynamicPopupService + ) { + super( + 100, + storeHelperService, + changeDetector, + webAppSettingDataService, + newUrlStateNotificationService, + chartDataService, + translateService, + ajaxExceptionCheckerService, + analyticsService, + dynamicPopupService + ); + } + + ngOnInit() { + this.initI18nText(); + this.initHoveredInfo(); + this.initTimezoneAndDateFormat(); + this.initChartData(); + } + + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + + protected makeChartData(data: IChartDataFromServer): {[key: string]: any} { + return { + x: data.charts.x.map((time: number) => moment(time).tz(this.timezone).format(this.dateFormat[0]) + '#' + moment(time).tz(this.timezone).format(this.dateFormat[1])), + minArr: data.charts.y['MAPPED_MEMORY_USED'].map((arr: any[]) => this.parseData(arr[0])), + minAgentIdArr: data.charts.y['MAPPED_MEMORY_USED'].map((arr: any[]) => arr[1]), + maxArr: data.charts.y['MAPPED_MEMORY_USED'].map((arr: any[]) => this.parseData(arr[2])), + maxAgentIdArr: data.charts.y['MAPPED_MEMORY_USED'].map((arr: any[]) => arr[3]), + avgArr: data.charts.y['MAPPED_MEMORY_USED'].map((arr: any[]) => this.parseData(arr[4])), + }; + } + + protected makeDataOption(data: {[key: string]: any}): {[key: string]: any} { + return { + labels: data.x, + datasets: [{ + label: 'Min', + data: data.minArr, + fill: false, + borderDash: [2, 2], + borderWidth: 1.5, + borderColor: '#66B2FF', + backgroundColor: '#66B2FF', + pointRadius: 0, + pointHoverRadius: 3 + }, { + label: 'Avg', + data: data.avgArr, + fill: false, + borderWidth: 1.5, + borderColor: '#4C0099', + backgroundColor: '#4C0099', + pointRadius: 0, + pointHoverRadius: 3 + }, { + label: 'Max', + data: data.maxArr, + fill: false, + borderDash: [2, 2], + borderWidth: 1.5, + borderColor: '#0000CC', + backgroundColor: '#0000CC', + pointRadius: 0, + pointHoverRadius: 3 + }] + }; + } + + protected makeNormalOption(data: {[key: string]: any}): {[key: string]: any} { + return { + responsive: true, + title: { + display: false, + text: 'Mapped Buffer Memory' + }, + tooltips: { + mode: 'index', + intersect: false, + callbacks: { + title: (value: {[key: string]: any}[]): string => { + return value[0].xLabel.join(' '); + }, + label: (value: {[key: string]: any}, d: {[key: string]: any}): string => { + const label = d.datasets[value.datasetIndex].label; + const index = value.index; + + return `${label}: ${isNaN(value.yLabel) ? `-` : this.convertWithUnit(value.yLabel) + ` ` + this.getAgentId(data.minAgentIdArr, data.maxAgentIdArr, label, index)}`; + } + } + }, + hover: { + mode: 'index', + intersect: false, + onHover: (event: MouseEvent, elements: {[key: string]: any}[]): void => { + if (!this.isDataEmpty(data)) { + this.storeHelperService.dispatch(new Actions.ChangeHoverOnInspectorCharts({ + index: event.type === 'mouseout' ? -1 : elements[0]._index, + offsetX: event.offsetX, + offsetY: event.offsetY + })); + } + }, + }, + scales: { + xAxes: [{ + display: true, + scaleLabel: { + display: false + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + maxTicksLimit: 4, + callback: (label: string): string[] => { + return label.split('#'); + }, + maxRotation: 0, + minRotation: 0, + fontSize: 11, + padding: 5 + } + }], + yAxes: [{ + display: true, + scaleLabel: { + display: true, + labelString: 'Memory (bytes)', + fontSize: 14, + fontStyle: 'bold' + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + beginAtZero: true, + maxTicksLimit: 5, + callback: (label: number): string => { + return this.convertWithUnit(label); + }, + min: 0, + max: this.isDataEmpty(data) ? this.defaultYMax : undefined, + padding: 5 + } + }] + }, + legend: { + display: true, + labels: { + boxWidth: 50, + padding: 10 + } + } + }; + } + + private getAgentId(minAgentIdArr: string[], maxAgentIdArr: string[], label: string, index: number): string { + return label === 'Avg' ? '' : `(${label === 'Min' ? minAgentIdArr[index] : maxAgentIdArr[index]})`; + } + + private convertWithUnit(value: number): string { + const unit = ['', 'K', 'M', 'G']; + let result = value; + let index = 0; + while ( result >= 1000 ) { + index++; + result /= 1000; + } + + result = Number.isInteger(result) ? result : Number(result.toFixed(2)); + return result + unit[index]; + } + + onShowHelp($event: MouseEvent): void { + super.onShowHelp($event, HELP_VIEWER_LIST.APPLICATION_MAPPED_BUFFER_MEMORY); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-memory-chart-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-memory-chart-data.service.ts new file mode 100644 index 000000000000..45aec21ffb32 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-memory-chart-data.service.ts @@ -0,0 +1,24 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable } from 'rxjs'; + +import { IChartDataService, IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; +import { NewUrlStateNotificationService } from 'app/shared/services'; +import { UrlPathId } from 'app/shared/models'; +import { getParamForApplicationChartData } from 'app/core/utils/chart-data-param-maker'; + +@Injectable() +export class ApplicationMemoryChartDataService implements IChartDataService { + private requestURL = 'getApplicationStat/memory/chart.pinpoint'; + + constructor( + private http: HttpClient, + private newUrlStateNotificationService: NewUrlStateNotificationService, + ) {} + + getData(range: number[]): Observable { + return this.http.get(this.requestURL, + getParamForApplicationChartData(this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getApplicationName(), range) + ); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-open-file-descriptor-chart-container.component.css b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-open-file-descriptor-chart-container.component.css new file mode 100644 index 000000000000..7e076f488d6b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-open-file-descriptor-chart-container.component.css @@ -0,0 +1,25 @@ +:host { + display: block; + width: calc(50% - 20px); + margin: 10px; +} +.l-content-item { + width: 100%; + margin: 0px; +} +.l-title-group { + height:34px; + font-size:13px; + font-weight:600; + padding:0 20px; + color:#333; + display: flex; + align-items: center; + justify-content:space-between; + background: #f6f8fb; +} +.l-title-group .fas { + font-size: 18px; + color:#a8acb5; + cursor:pointer; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-open-file-descriptor-chart-container.component.html b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-open-file-descriptor-chart-container.component.html new file mode 100644 index 000000000000..b62d6fb4a1a2 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-open-file-descriptor-chart-container.component.html @@ -0,0 +1,10 @@ +
+
Open File Descriptor
+ + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-open-file-descriptor-chart-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-open-file-descriptor-chart-container.component.ts new file mode 100644 index 000000000000..f667613a5b7b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-open-file-descriptor-chart-container.component.ts @@ -0,0 +1,201 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import * as moment from 'moment-timezone'; + +import { Actions } from 'app/shared/store'; +import { WebAppSettingDataService, NewUrlStateNotificationService, AjaxExceptionCheckerService, AnalyticsService, StoreHelperService, DynamicPopupService } from 'app/shared/services'; +import { ApplicationOpenFileDescriptorChartDataService } from './application-open-file-descriptor-chart-data.service'; +import { HELP_VIEWER_LIST } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; +import { InspectorChartContainer } from 'app/core/components/inspector-chart/inspector-chart-container'; +import { IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; + +@Component({ + selector: 'pp-application-open-file-descriptor-chart-container', + templateUrl: './application-open-file-descriptor-chart-container.component.html', + styleUrls: ['./application-open-file-descriptor-chart-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ApplicationOpenFileDescriptorChartContainerComponent extends InspectorChartContainer implements OnInit, OnDestroy { + constructor( + storeHelperService: StoreHelperService, + changeDetector: ChangeDetectorRef, + webAppSettingDataService: WebAppSettingDataService, + newUrlStateNotificationService: NewUrlStateNotificationService, + chartDataService: ApplicationOpenFileDescriptorChartDataService, + translateService: TranslateService, + ajaxExceptionCheckerService: AjaxExceptionCheckerService, + analyticsService: AnalyticsService, + dynamicPopupService: DynamicPopupService + ) { + super( + 100, + storeHelperService, + changeDetector, + webAppSettingDataService, + newUrlStateNotificationService, + chartDataService, + translateService, + ajaxExceptionCheckerService, + analyticsService, + dynamicPopupService + ); + } + + ngOnInit() { + this.initI18nText(); + this.initHoveredInfo(); + this.initTimezoneAndDateFormat(); + this.initChartData(); + } + + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + + protected makeChartData(data: IChartDataFromServer): {[key: string]: any} { + return { + x: data.charts.x.map((time: number) => moment(time).tz(this.timezone).format(this.dateFormat[0]) + '#' + moment(time).tz(this.timezone).format(this.dateFormat[1])), + minArr: data.charts.y['OPEN_FILE_DESCRIPTOR_COUNT'].map((arr: any[]) => this.parseData(arr[0])), + minAgentIdArr: data.charts.y['OPEN_FILE_DESCRIPTOR_COUNT'].map((arr: any[]) => arr[1]), + maxArr: data.charts.y['OPEN_FILE_DESCRIPTOR_COUNT'].map((arr: any[]) => this.parseData(arr[2])), + maxAgentIdArr: data.charts.y['OPEN_FILE_DESCRIPTOR_COUNT'].map((arr: any[]) => arr[3]), + avgArr: data.charts.y['OPEN_FILE_DESCRIPTOR_COUNT'].map((arr: any[]) => this.parseData(arr[4])), + }; + } + + protected makeDataOption(data: {[key: string]: any}): {[key: string]: any} { + return { + labels: data.x, + datasets: [{ + label: 'Min', + data: data.minArr, + fill: false, + borderDash: [2, 2], + borderWidth: 1.5, + borderColor: '#66B2FF', + backgroundColor: '#66B2FF', + pointRadius: 0, + pointHoverRadius: 3 + }, { + label: 'Avg', + data: data.avgArr, + fill: false, + borderWidth: 1.5, + borderColor: '#4C0099', + backgroundColor: '#4C0099', + pointRadius: 0, + pointHoverRadius: 3 + }, { + label: 'Max', + data: data.maxArr, + fill: false, + borderDash: [2, 2], + borderWidth: 1.5, + borderColor: '#0000CC', + backgroundColor: '#0000CC', + pointRadius: 0, + pointHoverRadius: 3 + }] + }; + } + + protected makeNormalOption(data: {[key: string]: any}): {[key: string]: any} { + return { + responsive: true, + title: { + display: false, + text: 'Open File Descriptor' + }, + tooltips: { + mode: 'index', + intersect: false, + callbacks: { + title: (value: {[key: string]: any}[]): string => { + return value[0].xLabel.join(' '); + }, + label: (value: {[key: string]: any}, d: {[key: string]: any}): string => { + const label = d.datasets[value.datasetIndex].label; + const index = value.index; + + return `${label}: ${isNaN(value.yLabel) ? `-` : value.yLabel + ` ` + this.getAgentId(data.minAgentIdArr, data.maxAgentIdArr, label, index)}`; + } + } + }, + hover: { + mode: 'index', + intersect: false, + onHover: (event: MouseEvent, elements: {[key: string]: any}[]): void => { + if (!this.isDataEmpty(data)) { + this.storeHelperService.dispatch(new Actions.ChangeHoverOnInspectorCharts({ + index: event.type === 'mouseout' ? -1 : elements[0]._index, + offsetX: event.offsetX, + offsetY: event.offsetY + })); + } + }, + }, + scales: { + xAxes: [{ + display: true, + scaleLabel: { + display: false + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + maxTicksLimit: 4, + callback: (label: string): string[] => { + return label.split('#'); + }, + maxRotation: 0, + minRotation: 0, + fontSize: 11, + padding: 5 + } + }], + yAxes: [{ + display: true, + scaleLabel: { + display: true, + labelString: 'File Descriptor (count)', + fontSize: 14, + fontStyle: 'bold' + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + beginAtZero: true, + maxTicksLimit: 5, + min: 0, + max: this.isDataEmpty(data) ? this.defaultYMax : undefined, + padding: 5 + } + }] + }, + legend: { + display: true, + labels: { + boxWidth: 50, + padding: 10 + } + } + }; + } + + private getAgentId(minAgentIdArr: string[], maxAgentIdArr: string[], label: string, index: number): string { + return label === 'Avg' ? '' : `(${label === 'Min' ? minAgentIdArr[index] : maxAgentIdArr[index]})`; + } + + onShowHelp($event: MouseEvent): void { + super.onShowHelp($event, HELP_VIEWER_LIST.APPLICATION_OPEN_FILE_DESCRIPTOR); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-open-file-descriptor-chart-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-open-file-descriptor-chart-data.service.ts new file mode 100644 index 000000000000..61fd5a42f510 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-open-file-descriptor-chart-data.service.ts @@ -0,0 +1,24 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable } from 'rxjs'; + +import { IChartDataService, IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; +import { NewUrlStateNotificationService } from 'app/shared/services'; +import { UrlPathId } from 'app/shared/models'; +import { getParamForApplicationChartData } from 'app/core/utils/chart-data-param-maker'; + +@Injectable() +export class ApplicationOpenFileDescriptorChartDataService implements IChartDataService { + private requestURL = 'getApplicationStat/fileDescriptor/chart.pinpoint'; + + constructor( + private http: HttpClient, + private newUrlStateNotificationService: NewUrlStateNotificationService, + ) {} + + getData(range: number[]): Observable { + return this.http.get(this.requestURL, + getParamForApplicationChartData(this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getApplicationName(), range) + ); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-response-time-chart-container.component.css b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-response-time-chart-container.component.css new file mode 100644 index 000000000000..7e076f488d6b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-response-time-chart-container.component.css @@ -0,0 +1,25 @@ +:host { + display: block; + width: calc(50% - 20px); + margin: 10px; +} +.l-content-item { + width: 100%; + margin: 0px; +} +.l-title-group { + height:34px; + font-size:13px; + font-weight:600; + padding:0 20px; + color:#333; + display: flex; + align-items: center; + justify-content:space-between; + background: #f6f8fb; +} +.l-title-group .fas { + font-size: 18px; + color:#a8acb5; + cursor:pointer; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-response-time-chart-container.component.html b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-response-time-chart-container.component.html new file mode 100644 index 000000000000..971df60336df --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-response-time-chart-container.component.html @@ -0,0 +1,10 @@ +
+
Response Time
+ + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-response-time-chart-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-response-time-chart-container.component.ts new file mode 100644 index 000000000000..60f92a3025d0 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-response-time-chart-container.component.ts @@ -0,0 +1,237 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import * as moment from 'moment-timezone'; + +import { Actions } from 'app/shared/store'; +import { WebAppSettingDataService, NewUrlStateNotificationService, AjaxExceptionCheckerService, AnalyticsService, StoreHelperService, DynamicPopupService } from 'app/shared/services'; +import { ApplicationResponseTimeChartDataService } from './application-response-time-chart-data.service'; +import { HELP_VIEWER_LIST } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; +import { InspectorChartContainer } from 'app/core/components/inspector-chart/inspector-chart-container'; +import { IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; + +@Component({ + selector: 'pp-application-response-time-chart-container', + templateUrl: './application-response-time-chart-container.component.html', + styleUrls: ['./application-response-time-chart-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ApplicationResponseTimeChartContainerComponent extends InspectorChartContainer implements OnInit, OnDestroy { + constructor( + storeHelperService: StoreHelperService, + changeDetector: ChangeDetectorRef, + webAppSettingDataService: WebAppSettingDataService, + newUrlStateNotificationService: NewUrlStateNotificationService, + chartDataService: ApplicationResponseTimeChartDataService, + translateService: TranslateService, + ajaxExceptionCheckerService: AjaxExceptionCheckerService, + analyticsService: AnalyticsService, + dynamicPopupService: DynamicPopupService + ) { + super( + 100, + storeHelperService, + changeDetector, + webAppSettingDataService, + newUrlStateNotificationService, + chartDataService, + translateService, + ajaxExceptionCheckerService, + analyticsService, + dynamicPopupService + ); + } + + ngOnInit() { + this.initI18nText(); + this.initHoveredInfo(); + this.initTimezoneAndDateFormat(); + this.initChartData(); + } + + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + + protected makeChartData(chartData: IChartDataFromServer): {[key: string]: any} { + const xArr = []; + const maxArr = []; + const minArr = []; + const avgArr = []; + const maxAgentIdArr = []; + const minAgentIdArr = []; + + const xData = chartData.charts.x; + const responseTime = chartData.charts.y['RESPONSE_TIME']; + const dataCount = xData.length; + + for ( let i = 0 ; i < dataCount ; i++ ) { + xArr.push(moment(xData[i]).tz(this.timezone).format(this.dateFormat[0]) + '#' + moment(xData[i]).tz(this.timezone).format(this.dateFormat[1])); + if (responseTime[i]) { + minArr.push(this.parseData(responseTime[i][0])); + minAgentIdArr.push(responseTime[i][1]); + maxArr.push(this.parseData(responseTime[i][2])); + maxAgentIdArr.push(responseTime[i][3]); + avgArr.push(this.parseData(responseTime[i][4])); + } + } + return { + x: xArr, + maxArr: maxArr, + minArr: minArr, + avgArr: avgArr, + minAgentIdArr, + maxAgentIdArr, + }; + } + + protected makeDataOption(data: {[key: string]: any}): {[key: string]: any} { + return { + labels: data.x, + datasets: [{ + label: 'Min', + data: data.minArr, + fill: false, + borderDash: [2, 2], + borderWidth: 1.5, + borderColor: '#66B2FF', + backgroundColor: '#66B2FF', + pointRadius: 0, + pointHoverRadius: 3 + }, { + label: 'Avg', + data: data.avgArr, + fill: false, + borderWidth: 1.5, + borderColor: '#4C0099', + backgroundColor: '#4C0099', + pointRadius: 0, + pointHoverRadius: 3 + }, { + label: 'Max', + data: data.maxArr, + fill: false, + borderDash: [2, 2], + borderWidth: 1.5, + borderColor: '#0000CC', + backgroundColor: '#0000CC', + pointRadius: 0, + pointHoverRadius: 3 + }] + }; + } + + protected makeNormalOption(data: {[key: string]: any}): {[key: string]: any} { + return { + responsive: true, + title: { + display: false + }, + tooltips: { + mode: 'index', + intersect: false, + callbacks: { + title: (value: {[key: string]: any}[]) => { + return value[0].xLabel.join(' '); + }, + label: (value: {[key: string]: any}, d: {[key: string]: any}): string => { + const label = d.datasets[value.datasetIndex].label; + const index = value.index; + + return `${label}: ${isNaN(value.yLabel) ? `-` : this.convertWithUnit(value.yLabel) + ` ` + this.getAgentId(data.minAgentIdArr, data.maxAgentIdArr, label, index)}`; + } + } + }, + hover: { + mode: 'index', + intersect: false, + onHover: (event: MouseEvent, elements: {[key: string]: any}[]): void => { + if (!this.isDataEmpty(data)) { + this.storeHelperService.dispatch(new Actions.ChangeHoverOnInspectorCharts({ + index: event.type === 'mouseout' ? -1 : elements[0]._index, + offsetX: event.offsetX, + offsetY: event.offsetY + })); + } + }, + }, + scales: { + xAxes: [{ + display: true, + scaleLabel: { + display: false + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + maxTicksLimit: 4, + callback: (label: string): string[] => { + return label.split('#'); + }, + maxRotation: 0, + minRotation: 0, + fontSize: 11, + padding: 5 + } + }], + yAxes: [{ + display: true, + scaleLabel: { + display: true, + labelString: 'Response Time (ms)', + fontSize: 14, + fontStyle: 'bold' + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + beginAtZero: true, + maxTicksLimit: 5, + callback: (label: number): string => { + return this.convertWithUnit(label); + }, + min: 0, + max: this.isDataEmpty(data) ? this.defaultYMax : undefined, + padding: 5 + } + }] + }, + legend: { + display: true, + labels: { + boxWidth: 50, + padding: 10 + } + } + }; + } + + private getAgentId(minAgentIdArr: string[], maxAgentIdArr: string[], label: string, index: number): string { + return label === 'Avg' ? '' : `(${label === 'Min' ? minAgentIdArr[index] : maxAgentIdArr[index]})`; + } + + private convertWithUnit(value: number): string { + const unit = ['ms', 'sec', 'min']; + let result = value; + let index = 0; + while ( result >= 1000 ) { + index++; + result /= 1000; + } + + result = Number.isInteger(result) ? result : Number(result.toFixed(2)); + return result + unit[index]; + } + + onShowHelp($event: MouseEvent): void { + super.onShowHelp($event, HELP_VIEWER_LIST.APPLICATION_RESPONSE_TIME); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-response-time-chart-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-response-time-chart-data.service.ts new file mode 100644 index 000000000000..4d02852df4b2 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-response-time-chart-data.service.ts @@ -0,0 +1,24 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable } from 'rxjs'; + +import { IChartDataService, IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; +import { NewUrlStateNotificationService } from 'app/shared/services'; +import { UrlPathId } from 'app/shared/models'; +import { getParamForApplicationChartData } from 'app/core/utils/chart-data-param-maker'; + +@Injectable() +export class ApplicationResponseTimeChartDataService implements IChartDataService { + private requestURL = 'getApplicationStat/responseTime/chart.pinpoint'; + + constructor( + private http: HttpClient, + private newUrlStateNotificationService: NewUrlStateNotificationService, + ) {} + + getData(range: number[]): Observable { + return this.http.get(this.requestURL, + getParamForApplicationChartData(this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getApplicationName(), range) + ); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-system-cpu-chart-container.component.css b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-system-cpu-chart-container.component.css new file mode 100644 index 000000000000..7e076f488d6b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-system-cpu-chart-container.component.css @@ -0,0 +1,25 @@ +:host { + display: block; + width: calc(50% - 20px); + margin: 10px; +} +.l-content-item { + width: 100%; + margin: 0px; +} +.l-title-group { + height:34px; + font-size:13px; + font-weight:600; + padding:0 20px; + color:#333; + display: flex; + align-items: center; + justify-content:space-between; + background: #f6f8fb; +} +.l-title-group .fas { + font-size: 18px; + color:#a8acb5; + cursor:pointer; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-system-cpu-chart-container.component.html b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-system-cpu-chart-container.component.html new file mode 100644 index 000000000000..b778cd386178 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-system-cpu-chart-container.component.html @@ -0,0 +1,10 @@ +
+
System CPU Usage
+ + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-system-cpu-chart-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-system-cpu-chart-container.component.ts new file mode 100644 index 000000000000..9543c7ea8ea9 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-system-cpu-chart-container.component.ts @@ -0,0 +1,224 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import * as moment from 'moment-timezone'; + +import { Actions } from 'app/shared/store'; +import { WebAppSettingDataService, NewUrlStateNotificationService, AjaxExceptionCheckerService, AnalyticsService, StoreHelperService, DynamicPopupService } from 'app/shared/services'; +import { ApplicationCPUChartDataService } from './application-cpu-chart-data.service'; +import { HELP_VIEWER_LIST } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; +import { InspectorChartContainer } from 'app/core/components/inspector-chart/inspector-chart-container'; +import { IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; + +@Component({ + selector: 'pp-application-system-cpu-chart-container', + templateUrl: './application-system-cpu-chart-container.component.html', + styleUrls: ['./application-system-cpu-chart-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ApplicationSystemCPUChartContainerComponent extends InspectorChartContainer implements OnInit, OnDestroy { + constructor( + storeHelperService: StoreHelperService, + changeDetector: ChangeDetectorRef, + webAppSettingDataService: WebAppSettingDataService, + newUrlStateNotificationService: NewUrlStateNotificationService, + chartDataService: ApplicationCPUChartDataService, + translateService: TranslateService, + ajaxExceptionCheckerService: AjaxExceptionCheckerService, + analyticsService: AnalyticsService, + dynamicPopupService: DynamicPopupService + ) { + super( + 100, + storeHelperService, + changeDetector, + webAppSettingDataService, + newUrlStateNotificationService, + chartDataService, + translateService, + ajaxExceptionCheckerService, + analyticsService, + dynamicPopupService + ); + } + + ngOnInit() { + this.initI18nText(); + this.initHoveredInfo(); + this.initTimezoneAndDateFormat(); + this.initChartData(); + } + + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + + protected makeChartData(chartData: IChartDataFromServer): {[key: string]: any} { + const xArr = []; + const maxArr = []; + const minArr = []; + const avgArr = []; + const maxAgentIdArr = []; + const minAgentIdArr = []; + + const xData = chartData.charts.x; + const cpuLoadSystem = chartData.charts.y['CPU_LOAD_SYSTEM']; + const dataCount = xData.length; + + for ( let i = 0 ; i < dataCount ; i++ ) { + xArr.push(moment(xData[i]).tz(this.timezone).format(this.dateFormat[0]) + '#' + moment(xData[i]).tz(this.timezone).format(this.dateFormat[1])); + if (cpuLoadSystem[i]) { + minArr.push(this.parseData(cpuLoadSystem[i][0])); + minAgentIdArr.push(cpuLoadSystem[i][1]); + maxArr.push(this.parseData(cpuLoadSystem[i][2])); + maxAgentIdArr.push(cpuLoadSystem[i][3]); + avgArr.push(this.parseData(cpuLoadSystem[i][4])); + } + } + return { + x: xArr, + maxArr: maxArr, + minArr: minArr, + avgArr: avgArr, + minAgentIdArr, + maxAgentIdArr, + }; + } + + protected makeDataOption(data: {[key: string]: any}): {[key: string]: any} { + return { + labels: data.x, + datasets: [{ + label: 'Min', + data: data.minArr, + fill: false, + borderDash: [2, 2], + borderWidth: 1.5, + borderColor: '#66B2FF', + backgroundColor: '#66B2FF', + pointRadius: 0, + pointHoverRadius: 3 + }, { + label: 'Avg', + data: data.avgArr, + fill: false, + borderWidth: 1.5, + borderColor: '#4C0099', + backgroundColor: '#4C0099', + pointRadius: 0, + pointHoverRadius: 3 + }, { + label: 'Max', + data: data.maxArr, + fill: false, + borderDash: [2, 2], + borderWidth: 1.5, + borderColor: '#0000CC', + backgroundColor: '#0000CC', + pointRadius: 0, + pointHoverRadius: 3 + }] + }; + } + + protected makeNormalOption(data: {[key: string]: any}): {[key: string]: any} { + return { + responsive: true, + title: { + display: false + }, + tooltips: { + mode: 'index', + intersect: false, + callbacks: { + title: (value: {[key: string]: any}[]) => { + return value[0].xLabel.join(' '); + }, + label: (value: {[key: string]: any}, d: {[key: string]: any}): string => { + const label = d.datasets[value.datasetIndex].label; + const index = value.index; + + return `${label}: ${isNaN(value.yLabel) ? `-` : value.yLabel + `% ` + this.getAgentId(data.minAgentIdArr, data.maxAgentIdArr, label, index)}`; + } + } + }, + hover: { + mode: 'index', + intersect: false, + onHover: (event: MouseEvent, elements: {[key: string]: any}[]): void => { + if (!this.isDataEmpty(data)) { + this.storeHelperService.dispatch(new Actions.ChangeHoverOnInspectorCharts({ + index: event.type === 'mouseout' ? -1 : elements[0]._index, + offsetX: event.offsetX, + offsetY: event.offsetY + })); + } + }, + }, + scales: { + xAxes: [{ + display: true, + scaleLabel: { + display: false + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + maxTicksLimit: 4, + callback: (label: string): string[] => { + return label.split('#'); + }, + maxRotation: 0, + minRotation: 0, + fontSize: 11, + padding: 5 + } + }], + yAxes: [{ + display: true, + scaleLabel: { + display: true, + labelString: 'CPU Usage (%)', + fontSize: 14, + fontStyle: 'bold' + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + beginAtZero: true, + maxTicksLimit: 5, + callback: (label: number): string => { + return `${label}%`; + }, + min: 0, + max: this.defaultYMax, + padding: 5 + } + }] + }, + legend: { + display: true, + labels: { + boxWidth: 50, + padding: 10 + } + } + }; + } + + private getAgentId(minAgentIdArr: string[], maxAgentIdArr: string[], label: string, index: number): string { + return label === 'Avg' ? '' : `(${label === 'Min' ? minAgentIdArr[index] : maxAgentIdArr[index]})`; + } + + onShowHelp($event: MouseEvent): void { + super.onShowHelp($event, HELP_VIEWER_LIST.APPLICATION_SYSTEM_CPU_USAGE); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-tps-chart-container.component.css b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-tps-chart-container.component.css new file mode 100644 index 000000000000..7e076f488d6b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-tps-chart-container.component.css @@ -0,0 +1,25 @@ +:host { + display: block; + width: calc(50% - 20px); + margin: 10px; +} +.l-content-item { + width: 100%; + margin: 0px; +} +.l-title-group { + height:34px; + font-size:13px; + font-weight:600; + padding:0 20px; + color:#333; + display: flex; + align-items: center; + justify-content:space-between; + background: #f6f8fb; +} +.l-title-group .fas { + font-size: 18px; + color:#a8acb5; + cursor:pointer; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-tps-chart-container.component.html b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-tps-chart-container.component.html new file mode 100644 index 000000000000..6252a5c933ff --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-tps-chart-container.component.html @@ -0,0 +1,10 @@ +
+
Transactions Per Second
+ + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-tps-chart-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-tps-chart-container.component.ts new file mode 100644 index 000000000000..b78553df5255 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-tps-chart-container.component.ts @@ -0,0 +1,237 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import * as moment from 'moment-timezone'; + +import { Actions } from 'app/shared/store'; +import { WebAppSettingDataService, NewUrlStateNotificationService, AjaxExceptionCheckerService, AnalyticsService, StoreHelperService, DynamicPopupService } from 'app/shared/services'; +import { ApplicationTPSChartDataService } from './application-tps-chart-data.service'; +import { HELP_VIEWER_LIST } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; +import { InspectorChartContainer } from 'app/core/components/inspector-chart/inspector-chart-container'; +import { IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; + +@Component({ + selector: 'pp-application-tps-chart-container', + templateUrl: './application-tps-chart-container.component.html', + styleUrls: ['./application-tps-chart-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ApplicationTPSChartContainerComponent extends InspectorChartContainer implements OnInit, OnDestroy { + constructor( + storeHelperService: StoreHelperService, + changeDetector: ChangeDetectorRef, + webAppSettingDataService: WebAppSettingDataService, + newUrlStateNotificationService: NewUrlStateNotificationService, + chartDataService: ApplicationTPSChartDataService, + translateService: TranslateService, + ajaxExceptionCheckerService: AjaxExceptionCheckerService, + analyticsService: AnalyticsService, + dynamicPopupService: DynamicPopupService + ) { + super( + 10, + storeHelperService, + changeDetector, + webAppSettingDataService, + newUrlStateNotificationService, + chartDataService, + translateService, + ajaxExceptionCheckerService, + analyticsService, + dynamicPopupService + ); + } + + ngOnInit() { + this.initI18nText(); + this.initHoveredInfo(); + this.initTimezoneAndDateFormat(); + this.initChartData(); + } + + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + + protected makeChartData(chartData: IChartDataFromServer): {[key: string]: any} { + const xArr = []; + const maxArr = []; + const minArr = []; + const avgArr = []; + const maxAgentIdArr = []; + const minAgentIdArr = []; + + const xData = chartData.charts.x; + const transactionCount = chartData.charts.y['TRANSACTION_COUNT']; + const dataCount = xData.length; + + for (let i = 0; i < dataCount; i++) { + xArr.push(moment(xData[i]).tz(this.timezone).format(this.dateFormat[0]) + '#' + moment(xData[i]).tz(this.timezone).format(this.dateFormat[1])); + if (transactionCount[i]) { + minArr.push(this.parseData(transactionCount[i][0])); + minAgentIdArr.push(transactionCount[i][1]); + maxArr.push(this.parseData(transactionCount[i][2])); + maxAgentIdArr.push(transactionCount[i][3]); + avgArr.push(this.parseData(transactionCount[i][4])); + } + } + return { + x: xArr, + maxArr: maxArr, + minArr: minArr, + avgArr: avgArr, + minAgentIdArr, + maxAgentIdArr, + }; + } + + protected makeDataOption(data: {[key: string]: any}): {[key: string]: any} { + return { + labels: data.x, + datasets: [{ + label: 'Min', + data: data.minArr, + fill: false, + borderDash: [2, 2], + borderWidth: 1.5, + borderColor: '#66B2FF', + backgroundColor: '#66B2FF', + pointRadius: 0, + pointHoverRadius: 3 + }, { + label: 'Avg', + data: data.avgArr, + fill: false, + borderWidth: 1.5, + borderColor: '#4C0099', + backgroundColor: '#4C0099', + pointRadius: 0, + pointHoverRadius: 3 + }, { + label: 'Max', + data: data.maxArr, + fill: false, + borderDash: [2, 2], + borderWidth: 1.5, + borderColor: '#0000CC', + backgroundColor: '#0000CC', + pointRadius: 0, + pointHoverRadius: 3 + }] + }; + } + + protected makeNormalOption(data: {[key: string]: any}): {[key: string]: any} { + return { + responsive: true, + title: { + display: false + }, + tooltips: { + mode: 'index', + intersect: false, + callbacks: { + title: (value: {[key: string]: any}[]) => { + return value[0].xLabel.join(' '); + }, + label: (value: {[key: string]: any}, d: {[key: string]: any}): string => { + const label = d.datasets[value.datasetIndex].label; + const index = value.index; + + return `${label}: ${isNaN(value.yLabel) ? `-` : value.yLabel.toFixed(1) + ` ` + this.getAgentId(data.minAgentIdArr, data.maxAgentIdArr, label, index)}`; + } + } + }, + hover: { + mode: 'index', + intersect: false, + onHover: (event: MouseEvent, elements: {[key: string]: any}[]): void => { + if (!this.isDataEmpty(data)) { + this.storeHelperService.dispatch(new Actions.ChangeHoverOnInspectorCharts({ + index: event.type === 'mouseout' ? -1 : elements[0]._index, + offsetX: event.offsetX, + offsetY: event.offsetY + })); + } + }, + }, + scales: { + xAxes: [{ + display: true, + scaleLabel: { + display: false + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + maxTicksLimit: 4, + callback: (label: string): string[] => { + return label.split('#'); + }, + maxRotation: 0, + minRotation: 0, + fontSize: 11, + padding: 5 + } + }], + yAxes: [{ + display: true, + scaleLabel: { + display: true, + labelString: 'Transaction (count)', + fontSize: 14, + fontStyle: 'bold' + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + beginAtZero: true, + maxTicksLimit: 5, + callback: (label: number): string => { + return this.convertWithUnit(label); + }, + min: 0, + max: this.isDataEmpty(data) ? this.defaultYMax : undefined, + padding: 5 + } + }] + }, + legend: { + display: true, + labels: { + boxWidth: 50, + padding: 10 + } + } + }; + } + + private convertWithUnit(value: number): string { + const unit = ['', 'K', 'M', 'G']; + let result = value; + let index = 0; + while ( result >= 1000 ) { + index++; + result /= 1000; + } + + result = Number.isInteger(result) ? result : Number(result.toFixed(1)); + return result + unit[index]; + } + + private getAgentId(minAgentIdArr: string[], maxAgentIdArr: string[], label: string, index: number): string { + return label === 'Avg' ? '' : `(${label === 'Min' ? minAgentIdArr[index] : maxAgentIdArr[index]})`; + } + + onShowHelp($event: MouseEvent): void { + super.onShowHelp($event, HELP_VIEWER_LIST.APPLICATION_TPS); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-tps-chart-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-tps-chart-data.service.ts new file mode 100644 index 000000000000..9395254945b9 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/application-tps-chart-data.service.ts @@ -0,0 +1,24 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable } from 'rxjs'; + +import { IChartDataService, IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; +import { NewUrlStateNotificationService } from 'app/shared/services'; +import { UrlPathId } from 'app/shared/models'; +import { getParamForApplicationChartData } from 'app/core/utils/chart-data-param-maker'; + +@Injectable() +export class ApplicationTPSChartDataService implements IChartDataService { + private requestURL = 'getApplicationStat/transaction/chart.pinpoint'; + + constructor( + private http: HttpClient, + private newUrlStateNotificationService: NewUrlStateNotificationService, + ) {} + + getData(range: number[]): Observable { + return this.http.get(this.requestURL, + getParamForApplicationChartData(this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getApplicationName(), range) + ); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/chart-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/chart-data.service.ts new file mode 100644 index 000000000000..037c87659b71 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/chart-data.service.ts @@ -0,0 +1,17 @@ +import { Observable } from 'rxjs'; + +export interface IChartDataFromServer { + charts: { + schema: { + [key: string]: string[] | string; + }, + x: number[]; + y: { + [key: string]: number[][]; + } + }; +} + +export interface IChartDataService { + getData(range: number[]): Observable; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/index.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/index.ts new file mode 100644 index 000000000000..ca9686e45f75 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/index.ts @@ -0,0 +1,153 @@ + +import { NgModule } from '@angular/core'; +import { SharedModule } from 'app/shared'; +import { RetryComponent } from './retry.component'; +import { NoDataComponent } from './no-data.component'; +import { InspectorChartComponent } from './inspector-chart.component'; +import { AgentActiveThreadChartContainerComponent } from './agent-active-thread-chart-container.component'; +import { AgentCPUChartContainerComponent } from './agent-cpu-chart-container.component'; +import { AgentDataSourceChartContainerComponent } from './agent-data-source-chart-container.component'; +import { AgentJVMHeapChartContainerComponent } from './agent-jvm-heap-chart-container.component'; +import { AgentJVMNonHeapChartContainerComponent } from './agent-jvm-non-heap-chart-container.component'; +import { AgentResponseTimeChartContainerComponent } from './agent-response-time-chart-container.component'; +import { AgentTPSChartContainerComponent } from './agent-tps-chart-container.component'; +import { AgentDataSourceChartInfotableComponent } from './agent-data-source-chart-infotable.component'; +import { AgentDataSourceChartSelectSourceComponent } from './agent-data-source-chart-select-source.component'; +import { AgentOpenFileDescriptorChartContainerComponent } from 'app/core/components/inspector-chart/agent-open-file-descriptor-chart-container.component'; +import { AgentDirectBufferCountChartContainerComponent } from 'app/core/components/inspector-chart/agent-direct-buffer-count-chart-container.component'; +import { AgentDirectBufferMemoryChartContainerComponent } from 'app/core/components/inspector-chart/agent-direct-buffer-memory-chart-container.component'; +import { AgentMappedBufferCountChartContainerComponent } from 'app/core/components/inspector-chart/agent-mapped-buffer-count-chart-container.component'; +import { AgentMappedBufferMemoryChartContainerComponent } from 'app/core/components/inspector-chart/agent-mapped-buffer-memory-chart-container.component'; +import { ApplicationActiveThreadChartContainerComponent } from './application-active-thread-chart-container.component'; +import { ApplicationJVMCPUChartContainerComponent } from './application-jvm-cpu-chart-container.component'; +import { ApplicationJVMHeapChartContainerComponent } from './application-jvm-heap-chart-container.component'; +import { ApplicationJVMNonHeapChartContainerComponent } from './application-jvm-non-heap-chart-container.component'; +import { ApplicationResponseTimeChartContainerComponent } from './application-response-time-chart-container.component'; +import { ApplicationSystemCPUChartContainerComponent } from './application-system-cpu-chart-container.component'; +import { ApplicationDataSourceChartContainerComponent } from 'app/core/components/inspector-chart/application-data-source-chart-container.component'; +import { ApplicationTPSChartContainerComponent } from './application-tps-chart-container.component'; +import { ApplicationOpenFileDescriptorChartContainerComponent } from 'app/core/components/inspector-chart/application-open-file-descriptor-chart-container.component'; +import { ApplicationDataSourceChartSourcelistComponent } from './application-data-source-chart-soucelist.component'; +import { ApplicationDirectBufferCountChartContainerComponent } from 'app/core/components/inspector-chart/application-direct-buffer-count-chart-container.component'; +import { ApplicationDirectBufferMemoryChartContainerComponent } from 'app/core/components/inspector-chart/application-direct-buffer-memory-chart-container.component'; +import { ApplicationMappedBufferCountChartContainerComponent } from 'app/core/components/inspector-chart/application-mapped-buffer-count-chart-container.component'; +import { ApplicationMappedBufferMemoryChartContainerComponent } from 'app/core/components/inspector-chart/application-mapped-buffer-memory-chart-container.component'; +import { TransactionViewJVMHeapChartContainerComponent } from './transaction-view-jvm-heap-chart-container.component'; +import { TransactionViewJVMNonHeapChartContainerComponent } from './transaction-view-jvm-non-heap-chart-container.component'; +import { TransactionViewCPUChartContainerComponent } from './transaction-view-cpu-chart-container.component'; + +import { AgentActiveThreadChartDataService } from './agent-active-thread-chart-data.service'; +import { AgentCPUChartDataService } from './agent-cpu-chart-data.service'; +import { AgentDataSourceChartDataService } from './agent-data-source-chart-data.service'; +import { AgentMemoryChartDataService } from './agent-memory-chart-data.service'; +import { AgentTPSChartDataService } from './agent-tps-chart-data.service'; +import { ApplicationCPUChartDataService } from './application-cpu-chart-data.service'; +import { ApplicationActiveThreadChartDataService } from './application-active-thread-chart-data.service'; +import { ApplicationDataSourceChartDataService } from './application-data-source-chart-data.service'; +import { ApplicationMemoryChartDataService } from './application-memory-chart-data.service'; +import { ApplicationTPSChartDataService } from './application-tps-chart-data.service'; +import { ApplicationResponseTimeChartDataService } from './application-response-time-chart-data.service'; +import { AgentResponseTimeChartDataService } from './agent-response-time-chart-data.service'; +import { TransactionViewMemoryChartDataService } from './transaction-view-memory-chart-data.service'; +import { TransactionViewCPUChartDataService } from './transaction-view-cpu-chart-data.service'; +import { AgentOpenFileDescriptorChartDataService } from 'app/core/components/inspector-chart/agent-open-file-descriptor-chart-data.service'; +import { ApplicationOpenFileDescriptorChartDataService } from 'app/core/components/inspector-chart/application-open-file-descriptor-chart-data.service'; +import { AgentDirectBufferChartDataService } from 'app/core/components/inspector-chart/agent-direct-buffer-chart-data.service'; +import { ApplicationDirectBufferChartDataService } from 'app/core/components/inspector-chart/application-direct-buffer-chart-data.service'; +import { HelpViewerPopupModule } from 'app/core/components/help-viewer-popup'; + +@NgModule({ + declarations: [ + RetryComponent, + NoDataComponent, + InspectorChartComponent, + AgentActiveThreadChartContainerComponent, + AgentCPUChartContainerComponent, + AgentDataSourceChartContainerComponent, + AgentJVMHeapChartContainerComponent, + AgentJVMNonHeapChartContainerComponent, + AgentResponseTimeChartContainerComponent, + AgentTPSChartContainerComponent, + ApplicationActiveThreadChartContainerComponent, + ApplicationJVMCPUChartContainerComponent, + ApplicationJVMHeapChartContainerComponent, + ApplicationJVMNonHeapChartContainerComponent, + ApplicationResponseTimeChartContainerComponent, + ApplicationSystemCPUChartContainerComponent, + ApplicationTPSChartContainerComponent, + ApplicationDataSourceChartContainerComponent, + AgentDataSourceChartInfotableComponent, + AgentDataSourceChartSelectSourceComponent, + ApplicationDataSourceChartSourcelistComponent, + TransactionViewJVMHeapChartContainerComponent, + TransactionViewJVMNonHeapChartContainerComponent, + TransactionViewCPUChartContainerComponent, + AgentOpenFileDescriptorChartContainerComponent, + ApplicationOpenFileDescriptorChartContainerComponent, + AgentDirectBufferCountChartContainerComponent, + AgentDirectBufferMemoryChartContainerComponent, + AgentMappedBufferCountChartContainerComponent, + AgentMappedBufferMemoryChartContainerComponent, + ApplicationDirectBufferCountChartContainerComponent, + ApplicationDirectBufferMemoryChartContainerComponent, + ApplicationMappedBufferCountChartContainerComponent, + ApplicationMappedBufferMemoryChartContainerComponent + ], + imports: [ + SharedModule, + HelpViewerPopupModule + ], + exports: [ + AgentActiveThreadChartContainerComponent, + AgentCPUChartContainerComponent, + AgentDataSourceChartContainerComponent, + AgentJVMHeapChartContainerComponent, + AgentJVMNonHeapChartContainerComponent, + AgentResponseTimeChartContainerComponent, + AgentTPSChartContainerComponent, + ApplicationActiveThreadChartContainerComponent, + ApplicationJVMCPUChartContainerComponent, + ApplicationJVMHeapChartContainerComponent, + ApplicationJVMNonHeapChartContainerComponent, + ApplicationResponseTimeChartContainerComponent, + ApplicationSystemCPUChartContainerComponent, + ApplicationTPSChartContainerComponent, + ApplicationDataSourceChartContainerComponent, + AgentOpenFileDescriptorChartContainerComponent, + ApplicationOpenFileDescriptorChartContainerComponent, + AgentDirectBufferCountChartContainerComponent, + AgentDirectBufferMemoryChartContainerComponent, + AgentMappedBufferCountChartContainerComponent, + AgentMappedBufferMemoryChartContainerComponent, + ApplicationDirectBufferCountChartContainerComponent, + ApplicationDirectBufferMemoryChartContainerComponent, + ApplicationMappedBufferCountChartContainerComponent, + ApplicationMappedBufferMemoryChartContainerComponent + ], + entryComponents: [ + TransactionViewJVMHeapChartContainerComponent, + TransactionViewJVMNonHeapChartContainerComponent, + TransactionViewCPUChartContainerComponent + ], + providers: [ + AgentActiveThreadChartDataService, + AgentCPUChartDataService, + AgentDataSourceChartDataService, + AgentMemoryChartDataService, + AgentTPSChartDataService, + AgentResponseTimeChartDataService, + AgentOpenFileDescriptorChartDataService, + AgentDirectBufferChartDataService, + ApplicationCPUChartDataService, + ApplicationActiveThreadChartDataService, + ApplicationDataSourceChartDataService, + ApplicationMemoryChartDataService, + ApplicationTPSChartDataService, + ApplicationResponseTimeChartDataService, + ApplicationOpenFileDescriptorChartDataService, + ApplicationDirectBufferChartDataService, + TransactionViewMemoryChartDataService, + TransactionViewCPUChartDataService + ] +}) +export class InspectorChartModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/inspector-chart-container.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/inspector-chart-container.ts new file mode 100644 index 000000000000..b84caafe9af8 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/inspector-chart-container.ts @@ -0,0 +1,161 @@ +import { ChangeDetectorRef } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import * as moment from 'moment-timezone'; +import { Subject, Observable, combineLatest } from 'rxjs'; +import { filter, map, skip, takeUntil } from 'rxjs/operators'; + +import { II18nText, IChartConfig, IErrObj } from 'app/core/components/inspector-chart/inspector-chart.component'; +import { WebAppSettingDataService, NewUrlStateNotificationService, AjaxExceptionCheckerService, AnalyticsService, TRACKED_EVENT_LIST, StoreHelperService, DynamicPopupService } from 'app/shared/services'; +import { HELP_VIEWER_LIST, HelpViewerPopupContainerComponent } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; +import { IChartDataService, IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; + +export abstract class InspectorChartContainer { + private previousRange: number[]; + + protected chartData: IChartDataFromServer | IChartDataFromServer[]; + protected timezone: string; + protected dateFormat: string[]; + protected unsubscribe = new Subject(); + + i18nText$: Observable; + chartConfig: IChartConfig; + errObj: IErrObj; + hoveredInfo$: Observable; + + constructor( + protected defaultYMax: number, + protected storeHelperService: StoreHelperService, + protected changeDetector: ChangeDetectorRef, + protected webAppSettingDataService: WebAppSettingDataService, + protected newUrlStateNotificationService: NewUrlStateNotificationService, + protected chartDataService: IChartDataService, + protected translateService: TranslateService, + protected ajaxExceptionCheckerService: AjaxExceptionCheckerService, + protected analyticsService: AnalyticsService, + protected dynamicPopupService: DynamicPopupService + ) {} + + protected initI18nText(): void { + this.i18nText$ = combineLatest( + this.translateService.get('INSPECTOR.FAILED_TO_FETCH_DATA'), + this.translateService.get('INSPECTOR.NO_DATA_COLLECTED'), + ).pipe( + map(([FAILED_TO_FETCH_DATA, NO_DATA_COLLECTED]: string[]) => { + return { FAILED_TO_FETCH_DATA, NO_DATA_COLLECTED }; + }) + ); + } + + protected initHoveredInfo(): void { + this.hoveredInfo$ = this.storeHelperService.getHoverInfo(this.unsubscribe).pipe( + skip(1), + filter(() => { + return !(!this.chartConfig || this.chartConfig.isDataEmpty); + }) + ); + } + + protected initTimezoneAndDateFormat(): void { + combineLatest( + this.storeHelperService.getTimezone(this.unsubscribe), + this.storeHelperService.getDateFormatArray(this.unsubscribe, 3, 4) + ).subscribe(([timezone, dateFormat]: [string, string[]]) => { + this.timezone = timezone; + this.dateFormat = dateFormat; + if (this.chartData) { + const xDataArr = Array.isArray(this.chartData) ? this.chartData[0].charts.x : this.chartData.charts.x; + + this.chartConfig = {...this.chartConfig}; + this.chartConfig.dataConfig.labels = this.getNewFormattedLabels(xDataArr); + this.changeDetector.detectChanges(); + } + }); + } + + private getNewFormattedLabels(xDataArr: number[]): string[] { + return xDataArr.map((xData: number) => { + return `${moment(xData).tz(this.timezone).format(this.dateFormat[0])}#${moment(xData).tz(this.timezone).format(this.dateFormat[1])}`; + }); + } + + protected initChartData(): void { + this.storeHelperService.getInspectorTimelineSelectionRange(this.unsubscribe).pipe( + filter((range: number[]) => { + if (this.previousRange) { + return !(this.previousRange[0] === range[0] && this.previousRange[1] === range[1]); + } + return true; + }) + ).subscribe((range: number[]) => { + this.previousRange = range; + this.getChartData(range); + }); + } + + onRetryGetChartData(): void { + this.getChartData(this.previousRange); + } + + protected getChartData(range: number[]): void { + this.chartDataService.getData(range).pipe( + takeUntil(this.unsubscribe) + ).subscribe((data: IChartDataFromServer | IChartDataFromServer[] | AjaxException) => { + if (this.ajaxExceptionCheckerService.isAjaxException(data)) { + this.setErrObj(data); + } else { + this.chartData = data; + this.setChartConfig(this.makeChartData(data)); + } + }, + (err) => { + this.setErrObj(); + } + ); + } + + protected setChartConfig(data: {[key: string]: any} | {[key: string]: any}[]): void { + this.chartConfig = { + type: 'line', + dataConfig: this.makeDataOption(data), + elseConfig: this.makeNormalOption(data), + isDataEmpty: this.isDataEmpty(data) + }; + this.changeDetector.detectChanges(); + } + + protected setErrObj(data?: AjaxException): void { + this.errObj = { + errType: data ? 'EXCEPTION' : 'ELSE', + errMessage: data ? data.exception.message : null + }; + this.changeDetector.detectChanges(); + } + + protected isDataEmpty(data: {[key: string]: any} | {[key: string]: any}[]): boolean { + const emptyCheckFunc = (d: {[key: string]: any}) => Object.getOwnPropertyNames(d).filter((prop) => prop !== 'x' && Array.isArray(d[prop])).map((yProp) => d[yProp].length).every((l) => l === 0); + + return Array.isArray(data) ? data.length === 0 || data.every((obj) => emptyCheckFunc(obj)) + : emptyCheckFunc(data); + } + + protected parseData(data: number): number | null { + return data === -1 ? null : data; + } + + protected abstract makeChartData(chartData: IChartDataFromServer | IChartDataFromServer[]): {[key: string]: any} | {[key: string]: any}[]; + protected abstract makeDataOption(data: {[key: string]: any} | {[key: string]: any}[]): {[key: string]: any}; + protected abstract makeNormalOption(data: {[key: string]: any} | {[key: string]: any}[]): {[key: string]: any}; + onShowHelp($event: MouseEvent, key: HELP_VIEWER_LIST): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.TOGGLE_HELP_VIEWER, key); + const {left, top, width, height} = ($event.target as HTMLElement).getBoundingClientRect(); + + this.dynamicPopupService.openPopup({ + data: key, + coord: { + coordX: left + width / 2, + coordY: top + height / 2 + }, + component: HelpViewerPopupContainerComponent + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/inspector-chart.component.css b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/inspector-chart.component.css new file mode 100644 index 000000000000..ceda45587477 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/inspector-chart.component.css @@ -0,0 +1,25 @@ +:host { + width: 100%; + display: flex; + align-items: flex-end; +} +.l-chart-section { + background-color: #fff; + padding: 15px 20px; + position: relative; + width: 100%; +} +.show-chart { + visibility: visible; + opacity: 1; + transition: all 1s; +} +.shady-chart { + opacity: 0.5; + pointer-events: none; + transition: all 0.5s; +} +.hide-chart { + visibility: hidden; + opacity: 0; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/inspector-chart.component.html b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/inspector-chart.component.html new file mode 100644 index 000000000000..f2d26bcd9ce9 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/inspector-chart.component.html @@ -0,0 +1,6 @@ +
+ + + + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/inspector-chart.component.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/inspector-chart.component.ts new file mode 100644 index 000000000000..d09994a184a7 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/inspector-chart.component.ts @@ -0,0 +1,188 @@ +import { Component, OnInit, OnChanges, Input, Output, EventEmitter, ViewChild, ElementRef, SimpleChanges, ChangeDetectorRef } from '@angular/core'; +import { Chart } from 'chart.js'; + +export interface IChartConfig { + type: string; + dataConfig: {[key: string]: any}; + elseConfig: {[key: string]: any}; + isDataEmpty: boolean; +} + +export interface II18nText { + FAILED_TO_FETCH_DATA: string; + NO_DATA_COLLECTED: string; +} + +export interface IErrObj { + errType: string; // EXCEPTION or ELSE + errMessage: string; // data.exception.message or null +} + +@Component({ + selector: 'pp-inspector-chart', + templateUrl: './inspector-chart.component.html', + styleUrls: ['./inspector-chart.component.css'] +}) +export class InspectorChartComponent implements OnInit, OnChanges { + @ViewChild('chartElement') el: ElementRef; + @Input() xRawData: number[]; + @Input() chartConfig: IChartConfig; + @Input() i18nText: II18nText; + @Input() errObj: IErrObj; + @Input() hoveredInfo: IHoveredInfo; + @Input() height: string; + @Output() outRetryGetChartData: EventEmitter = new EventEmitter(); + + retryMessage: string; + chartVisibility = {}; + chartSectionLayers = { + loading: true, + chart: false, + retry: false + }; + + private chartObj: any; + + constructor( + private changeDetector: ChangeDetectorRef, + ) {} + + ngOnInit() {} + ngOnChanges(changes: SimpleChanges) { + Object.keys(changes) + .filter((propName: string) => { + return changes[propName].currentValue; + }) + .forEach((propName: string) => { + const changedProp = changes[propName]; + switch (propName) { + case 'chartConfig': + this.setChartSectionVisibility('loading'); + this.initChart(); + break; + case 'errObj': + this.setChartSectionVisibility('loading'); + this.setRetryMessage(changedProp.currentValue); + this.setChartSectionVisibility('retry'); + break; + case 'hoveredInfo': + this.syncHoverOnChart(changedProp.currentValue); + break; + } + }); + } + + getHeightConfig(): {[key: string]: any} { + return { + height: this.height, + setHeightAuto: this.chartSectionLayers.chart, + ratio: 1.92 + }; + } + + private syncHoverOnChart(hoverInfo: IHoveredInfo): void { + let activeElements; + if (hoverInfo.index === -1) { + if (hoverInfo.time) { + activeElements = this.getActiveTooltipElementsByTime(hoverInfo.time); + } else { + activeElements = []; + } + } else { + activeElements = this.getActiveTooltipElements(hoverInfo.index); + } + + this.chartObj.tooltip._active = activeElements; + this.chartObj.tooltip.update(true); + this.chartObj.draw(); + } + getActiveTooltipElementsByTime(time: number): any[] { + let index = -1; + const len = this.xRawData.length; + for (let i = 0 ; i < len ; i++) { + const t = this.xRawData[i]; + if (t === time) { + index = i; + break; + } else if (t > time) { + if (i + 1 === len) { + index = i; + } else { + if (this.xRawData[i] - time >= this.xRawData[i - 1] - time) { + index = i - 1; + } else { + index = i; + } + } + break; + } + } + return this.getActiveTooltipElements(index); + } + getActiveTooltipElements(index: number): any[] { + return this.chartObj.data.datasets.map((val: any, i: number) => this.chartObj.getDatasetMeta(i).data[index]); + } + + private initChart(): void { + if (this.chartObj) { + this.chartObj.data = this.chartConfig.dataConfig; + this.chartObj.options.tooltips.callbacks.label = this.chartConfig.elseConfig.tooltips.callbacks.label; + this.chartObj.options.scales.yAxes[0].ticks.max = this.chartConfig.elseConfig.scales.yAxes[0].ticks.max; + this.chartObj.update(); + } else { + this.chartObj = new Chart(this.el.nativeElement.getContext('2d'), { + type: this.chartConfig.type, + data: this.chartConfig.dataConfig, + options: this.chartConfig.elseConfig, + plugins: [{ + afterRender: (chart, options) => { + this.finishLoading(); + } + }], + }); + } + } + + private finishLoading(): void { + this.setChartSectionVisibility('chart'); + } + + private setRetryMessage(errObj: IErrObj): void { + this.retryMessage = errObj.errType === 'EXCEPTION' ? errObj.errMessage : this.i18nText['FAILED_TO_FETCH_DATA']; + } + + private setChartSectionVisibility(layer: string): void { + this.setChartSectionLayerAs(layer); + this.setChartVisibility(this.chartSectionLayers['chart'], this.chartObj); + this.notifyChanges(); + } + + private setChartSectionLayerAs(whichLayerToShow: string): void { + Object.keys(this.chartSectionLayers).forEach((layer) => { + this.chartSectionLayers[layer] = whichLayerToShow === layer; + }); + } + + private setChartVisibility(showChart: boolean, chartObj: Chart): void { + this.chartVisibility = { + 'show-chart': showChart, + 'shady-chart': !showChart && chartObj !== undefined, + 'hide-chart': !showChart && chartObj === undefined + }; + } + + retryGetChartData(): void { + this.setChartSectionVisibility('loading'); + this.outRetryGetChartData.emit(); + } + + showNoData(): boolean { + return this.chartSectionLayers.chart && this.chartConfig.isDataEmpty; + } + + private notifyChanges(): void { + if (!this.changeDetector['destroyed']) { + this.changeDetector.detectChanges(); + } + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/no-data.component.css b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/no-data.component.css new file mode 100644 index 000000000000..3c65ae892265 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/no-data.component.css @@ -0,0 +1,16 @@ +:host { + display: block; + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; +} + +.l-no-data-text { + position: absolute; + top: 42%; + left: 37%; + padding: 5px 10px; + background-color: #e3e5e8; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/no-data.component.html b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/no-data.component.html new file mode 100644 index 000000000000..1856dec2caeb --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/no-data.component.html @@ -0,0 +1 @@ +

{{message}}

diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/no-data.component.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/no-data.component.ts new file mode 100644 index 000000000000..ecf627e87d6a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/no-data.component.ts @@ -0,0 +1,25 @@ +import { Component, OnInit, Input } from '@angular/core'; +import { style, animate, transition, trigger } from '@angular/animations'; + +@Component({ + selector: 'pp-no-data', + animations: [ + trigger('fadeIn', [ + transition(':enter', [ // is alias to 'void => *' + style({opacity: 0}), + animate(1000, style({opacity: 1})) + ]), + ]) + ], + templateUrl: './no-data.component.html', + styleUrls: ['./no-data.component.css'] +}) +export class NoDataComponent implements OnInit { + @Input() message: string; + @Input() showNoData: boolean; + constructor() { } + + ngOnInit() { + } + +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/retry.component.css b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/retry.component.css new file mode 100644 index 000000000000..acfb236b3df4 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/retry.component.css @@ -0,0 +1,9 @@ +.l-retry { + width: 92%; + position: absolute; + top:40%; + text-align: center; +} +.l-retry-message { + margin-bottom: 10px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/retry.component.html b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/retry.component.html new file mode 100644 index 000000000000..cd491543cc39 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/retry.component.html @@ -0,0 +1,4 @@ +
+

{{message}}

+ +
diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/retry.component.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/retry.component.ts new file mode 100644 index 000000000000..e9547ca95813 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/retry.component.ts @@ -0,0 +1,30 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; +import { style, animate, transition, trigger } from '@angular/animations'; + +@Component({ + selector: 'pp-retry', + animations: [ + trigger('fadeIn', [ + transition(':enter', [ // is alias to 'void => *' + style({opacity: 0}), + animate(2000, style({opacity: 1})) + ]), + ]) + ], + templateUrl: './retry.component.html', + styleUrls: ['./retry.component.css'] +}) +export class RetryComponent implements OnInit { + @Input() showRetry: boolean; + @Input() message: string; + @Output() outRetryGetChartData: EventEmitter = new EventEmitter(); + constructor() { } + + ngOnInit() { + } + + retryGetChartData(): void { + this.outRetryGetChartData.emit(); + } + +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-chart-container.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-chart-container.ts new file mode 100644 index 000000000000..9866c40d4fda --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-chart-container.ts @@ -0,0 +1,148 @@ +import { ChangeDetectorRef, ElementRef } from '@angular/core'; +import { Subject, Observable, combineLatest } from 'rxjs'; +import { filter, map } from 'rxjs/operators'; +import { TranslateService } from '@ngx-translate/core'; +import * as moment from 'moment-timezone'; + +import { II18nText, IChartConfig, IErrObj } from 'app/core/components/inspector-chart/inspector-chart.component'; +import { StoreHelperService, WebAppSettingDataService, NewUrlStateNotificationService, AjaxExceptionCheckerService, GutterEventService } from 'app/shared/services'; +import { IChartDataService, IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; +import { UrlPathId } from 'app/shared/models'; + +export abstract class TransactionViewChartContainer { + protected chartData: IChartDataFromServer; + protected timezone: string; + protected dateFormat: string[]; + protected unsubscribe = new Subject(); + + i18nText$: Observable; + height$: Observable; + chartConfig: IChartConfig; + errObj: IErrObj; + hoveredInfo$: Observable; + xRawData: number[]; + + constructor( + protected defaultYMax: number, + protected storeHelperService: StoreHelperService, + protected changeDetector: ChangeDetectorRef, + protected webAppSettingDataService: WebAppSettingDataService, + protected newUrlStateNotificationService: NewUrlStateNotificationService, + protected chartDataService: IChartDataService, + protected translateService: TranslateService, + protected ajaxExceptionCheckerService: AjaxExceptionCheckerService, + protected gutterEventService: GutterEventService, + protected el: ElementRef + ) {} + + protected initI18nText(): void { + this.i18nText$ = combineLatest( + this.translateService.get('INSPECTOR.FAILED_TO_FETCH_DATA'), + this.translateService.get('INSPECTOR.NO_DATA_COLLECTED'), + ).pipe( + map(([FAILED_TO_FETCH_DATA, NO_DATA_COLLECTED]: string[]) => { + return { FAILED_TO_FETCH_DATA, NO_DATA_COLLECTED }; + }) + ); + } + protected initHoveredInfo(): void { + this.hoveredInfo$ = this.storeHelperService.getHoverInfo(this.unsubscribe).pipe( + filter(() => { + return !(!this.chartConfig || this.chartConfig.isDataEmpty); + }) + ); + } + protected initTimezoneAndDateFormat(): void { + combineLatest( + this.storeHelperService.getTimezone(this.unsubscribe), + this.storeHelperService.getDateFormatArray(this.unsubscribe, 3, 4) + ).subscribe((data: [string, string[]]) => { + this.timezone = data[0]; + this.dateFormat = data[1]; + if (this.chartData) { + const xDataArr = Array.isArray(this.chartData) ? this.chartData[0].charts.x : this.chartData.charts.x; + + this.chartConfig = {...this.chartConfig}; + this.chartConfig.dataConfig.labels = this.getNewFormattedLabels(xDataArr); + this.changeDetector.detectChanges(); + } + }); + } + + protected initHeight(): void { + // TODO: angular-split라이브러리에 minSize옵션 추가되면, filter오퍼레이터 제거. + this.height$ = this.gutterEventService.onGutterResized$.pipe( + map((ratioArr: number[]) => ratioArr[0]), + filter((ratio: number) => ratio >= 30 && ratio <= 55), // 30, 50: 차트가 포함되어 있는 split-area의 최소, 최대 사이즈(비율) + map(() => this.el.nativeElement.offsetHeight + 'px') + ); + } + + private getNewFormattedLabels(xDataArr: number[]): string[] { + return xDataArr.map((xData: number) => { + return `${moment(xData).tz(this.timezone).format(this.dateFormat[0])}#${moment(xData).tz(this.timezone).format(this.dateFormat[1])}`; + }); + } + + protected getTimeRange(): number[] { + const focusTime = Number(this.newUrlStateNotificationService.getPathValue(UrlPathId.FOCUS_TIMESTAMP)); + const range = 600000; + + return [focusTime - range, focusTime + range]; + } + + onRetryGetChartData(): void { + this.getChartData(this.getTimeRange()); + } + + protected getChartData(range: number[]): void { + this.chartDataService.getData(range) + .subscribe( + (data: IChartDataFromServer | AjaxException) => { + if (this.ajaxExceptionCheckerService.isAjaxException(data)) { + this.setErrObj(data); + } else { + this.xRawData = data.charts.x; + this.chartData = data; + this.setChartConfig(this.makeChartData(data)); + } + }, + (err) => { + this.setErrObj(); + } + ); + } + + protected setChartConfig(data: {[key: string]: any} | {[key: string]: any}[]): void { + this.chartConfig = { + type: 'line', + dataConfig: this.makeDataOption(data), + elseConfig: this.makeNormalOption(data), + isDataEmpty: this.isDataEmpty(data) + }; + this.changeDetector.detectChanges(); + } + + protected setErrObj(data?: AjaxException): void { + this.errObj = { + errType: data ? 'EXCEPTION' : 'ELSE', + errMessage: data ? data.exception.message : null + }; + this.changeDetector.detectChanges(); + } + + protected isDataEmpty(data: {[key: string]: any} | {[key: string]: any}[]): boolean { + const emptyCheckFunc = (d: {[key: string]: any}) => Object.getOwnPropertyNames(d).filter((prop) => prop !== 'x' && Array.isArray(d[prop])).map((yProp) => d[yProp].length).every((l) => l === 0); + + return Array.isArray(data) ? data.length === 0 || data.every((obj) => emptyCheckFunc(obj)) + : emptyCheckFunc(data); + } + + protected parseData(data: number): number | null { + return data === -1 ? null : data; + } + + protected abstract makeChartData(chartData: IChartDataFromServer): {[key: string]: any} | {[key: string]: any}[]; + protected abstract makeDataOption(data: {[key: string]: any} | {[key: string]: any}[]): {[key: string]: any}; + protected abstract makeNormalOption(data: {[key: string]: any} | {[key: string]: any}[]): {[key: string]: any}; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-cpu-chart-container.component.css b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-cpu-chart-container.component.css new file mode 100644 index 000000000000..8bc6555c724d --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-cpu-chart-container.component.css @@ -0,0 +1,8 @@ +:host { + display: block; + height: calc(100% - 45px); +} +.l-content-item { + width: 100%; + margin: 0px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-cpu-chart-container.component.html b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-cpu-chart-container.component.html new file mode 100644 index 000000000000..ba6a1c2f48a4 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-cpu-chart-container.component.html @@ -0,0 +1,11 @@ +
+ + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-cpu-chart-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-cpu-chart-container.component.ts new file mode 100644 index 000000000000..378d205da533 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-cpu-chart-container.component.ts @@ -0,0 +1,189 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef, ElementRef } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import * as moment from 'moment-timezone'; + +import { WebAppSettingDataService, NewUrlStateNotificationService, AjaxExceptionCheckerService, GutterEventService, StoreHelperService } from 'app/shared/services'; +import { TransactionViewCPUChartDataService } from './transaction-view-cpu-chart-data.service'; +import { TransactionViewChartContainer } from 'app/core/components/inspector-chart/transaction-view-chart-container'; +import { IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; + +@Component({ + selector: 'pp-transaction-view-cpu-chart-container', + templateUrl: './transaction-view-cpu-chart-container.component.html', + styleUrls: ['./transaction-view-cpu-chart-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class TransactionViewCPUChartContainerComponent extends TransactionViewChartContainer implements OnInit, OnDestroy { + constructor( + storeHelperService: StoreHelperService, + changeDetector: ChangeDetectorRef, + webAppSettingDataService: WebAppSettingDataService, + newUrlStateNotificationService: NewUrlStateNotificationService, + chartDataService: TransactionViewCPUChartDataService, + translateService: TranslateService, + ajaxExceptionCheckerService: AjaxExceptionCheckerService, + gutterEventService: GutterEventService, + el: ElementRef + ) { + super( + 100, + storeHelperService, + changeDetector, + webAppSettingDataService, + newUrlStateNotificationService, + chartDataService, + translateService, + ajaxExceptionCheckerService, + gutterEventService, + el + ); + } + + ngOnInit() { + this.initI18nText(); + this.initHoveredInfo(); + this.initHeight(); + this.initTimezoneAndDateFormat(); + this.getChartData(this.getTimeRange()); + } + + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + + protected parseData(data: number): number | null { + return data === -1 ? null : Number(data.toFixed(2)); + } + + protected makeChartData(chartData: IChartDataFromServer): {[key: string]: any} { + const xArr = []; + const jvmArr = []; + const systemArr = []; + const maxArr = []; + + const xData = chartData.charts.x; + const cpuJVM = chartData.charts.y['CPU_LOAD_JVM']; + const cpuSystem = chartData.charts.y['CPU_LOAD_SYSTEM']; + const dataCount = xData.length; + + for ( let i = 0 ; i < dataCount ; i++ ) { + xArr.push(moment(xData[i]).tz(this.timezone).format(this.dateFormat[0]) + '#' + moment(xData[i]).tz(this.timezone).format(this.dateFormat[1])); + maxArr.push(100); + if ( cpuJVM.length === 0 ) { + continue; + } + jvmArr.push(this.parseData(cpuJVM[i][1])); + systemArr.push(this.parseData(cpuSystem[i][1])); + } + return { + x: xArr, + jvm: jvmArr, + system: systemArr + }; + } + + protected makeDataOption(data: {[key: string]: any}): {[key: string]: any} { + return { + labels: data.x, + datasets: [{ + label: 'JVM', + data: data.jvm, + fill: false, + borderWidth: 0.5, + borderColor: 'rgb(31, 119, 180)', + backgroundColor: 'rgba(31, 119, 180, 0.4)', + pointRadius: 0, + pointHoverRadius: 3 + }, { + label: 'System', + data: data.system, + fill: true, + borderWidth: 0.5, + borderColor: 'rgb(174, 199, 232)', + backgroundColor: 'rgba(174, 199, 232, 0.4)', + pointRadius: 0, + pointHoverRadius: 3 + }] + }; + } + + protected makeNormalOption(data: {[key: string]: any}): {[key: string]: any} { + return { + responsive: true, + maintainAspectRatio: false, + title: { + display: false, + text: 'JVM/System CPU Usage' + }, + tooltips: { + mode: 'index', + intersect: false, + callbacks: { + title: (value: {[key: string]: any}[]): string => { + return value[0].xLabel.join(' '); + }, + label: (value: {[key: string]: any}, d: {[key: string]: any}): string => { + return `${d.datasets[value.datasetIndex].label}: ${isNaN(value.yLabel) ? `-` : value.yLabel + `%`}`; + } + } + }, + scales: { + xAxes: [{ + display: true, + scaleLabel: { + display: false + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + maxTicksLimit: 7, + callback: (label: string): string[] => { + return label.split('#'); + }, + maxRotation: 0, + minRotation: 0, + fontSize: 11, + padding: 5 + } + }], + yAxes: [{ + display: true, + scaleLabel: { + display: true, + labelString: 'CPU Usage (%)', + fontSize: 14, + fontStyle: 'bold' + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + beginAtZero: true, + maxTicksLimit: 5, + callback: (label: number): string => { + return `${label}%`; + }, + min: 0, + max: this.defaultYMax, + padding: 5 + } + }] + }, + legend: { + display: true, + labels: { + boxWidth: 30, + padding: 10 + } + } + }; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-cpu-chart-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-cpu-chart-data.service.ts new file mode 100644 index 000000000000..f3b36a0e01cc --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-cpu-chart-data.service.ts @@ -0,0 +1,33 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { shareReplay } from 'rxjs/operators'; + +import { IChartDataService, IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; +import { NewUrlStateNotificationService } from 'app/shared/services'; +import { UrlPathId } from 'app/shared/models'; +import { getParamForAgentChartData } from 'app/core/utils/chart-data-param-maker'; + +@Injectable() +export class TransactionViewCPUChartDataService implements IChartDataService { + private requestURL = 'getAgentStat/cpuLoad/chart.pinpoint'; + private cache$: Observable; + + constructor( + private http: HttpClient, + private newUrlStateNotificationService: NewUrlStateNotificationService, + ) {} + + getData(range: number[]): Observable { + if (!this.cache$) { + const httpRequest$ = this.http.get(this.requestURL, + getParamForAgentChartData(this.newUrlStateNotificationService.getPathValue(UrlPathId.AGENT_ID), range)); + + this.cache$ = httpRequest$.pipe( + shareReplay(1) + ); + } + + return this.cache$; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-jvm-heap-chart-container.component.css b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-jvm-heap-chart-container.component.css new file mode 100644 index 000000000000..c0f04e531812 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-jvm-heap-chart-container.component.css @@ -0,0 +1,8 @@ +:host { + display: block; + height: calc(100% - 45px); +} +l-content-item { + width: 100%; + margin: 0px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-jvm-heap-chart-container.component.html b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-jvm-heap-chart-container.component.html new file mode 100644 index 000000000000..ba6a1c2f48a4 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-jvm-heap-chart-container.component.html @@ -0,0 +1,11 @@ +
+ + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-jvm-heap-chart-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-jvm-heap-chart-container.component.ts new file mode 100644 index 000000000000..6f1ddb2888c8 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-jvm-heap-chart-container.component.ts @@ -0,0 +1,265 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef, ElementRef } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import * as moment from 'moment-timezone'; + +import { WebAppSettingDataService, NewUrlStateNotificationService, AjaxExceptionCheckerService, GutterEventService, StoreHelperService } from 'app/shared/services'; +import { TransactionViewMemoryChartDataService } from './transaction-view-memory-chart-data.service'; +import { TransactionViewChartContainer } from 'app/core/components/inspector-chart/transaction-view-chart-container'; +import { IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; + +@Component({ + selector: 'pp-trasaction-view-jvm-heap-chart-container', + templateUrl: './transaction-view-jvm-heap-chart-container.component.html', + styleUrls: ['./transaction-view-jvm-heap-chart-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class TransactionViewJVMHeapChartContainerComponent extends TransactionViewChartContainer implements OnInit, OnDestroy { + constructor( + storeHelperService: StoreHelperService, + changeDetector: ChangeDetectorRef, + webAppSettingDataService: WebAppSettingDataService, + newUrlStateNotificationService: NewUrlStateNotificationService, + chartDataService: TransactionViewMemoryChartDataService, + translateService: TranslateService, + ajaxExceptionCheckerService: AjaxExceptionCheckerService, + gutterEventService: GutterEventService, + el: ElementRef + ) { + super( + 100, + storeHelperService, + changeDetector, + webAppSettingDataService, + newUrlStateNotificationService, + chartDataService, + translateService, + ajaxExceptionCheckerService, + gutterEventService, + el + ); + } + + ngOnInit() { + this.initI18nText(); + this.initHoveredInfo(); + this.initHeight(); + this.initTimezoneAndDateFormat(); + this.getChartData(this.getTimeRange()); + } + + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + + protected setChartConfig(data: {[key: string]: any}): void { + this.chartConfig = { + type: 'bar', + dataConfig: this.makeDataOption(data), + elseConfig: this.makeNormalOption(data), + isDataEmpty: this.isDataEmpty(data) + }; + this.changeDetector.detectChanges(); + } + + protected makeChartData(chartData: IChartDataFromServer): {[key: string]: any} { + const xArr = []; + const maxArr = []; + const usedArr = []; + const fgcTimeArr = []; + const fgcCountArr = []; + + const xData = chartData.charts.x; + const gcOldTime = chartData.charts.y['JVM_GC_OLD_TIME']; + const gcOldCount = chartData.charts.y['JVM_GC_OLD_COUNT']; + const memoryUsed = chartData.charts.y['JVM_MEMORY_HEAP_USED']; + const memoryMax = chartData.charts.y['JVM_MEMORY_HEAP_MAX']; + const dataCount = xData.length; + + let totalSumGCTime = 0; + for ( let i = 0 ; i < dataCount ; i++ ) { + xArr.push(moment(xData[i]).tz(this.timezone).format(this.dateFormat[0]) + '#' + moment(xData[i]).tz(this.timezone).format(this.dateFormat[1])); + if ( memoryMax.length === 0 ) { + continue; + } + maxArr.push(this.parseData(memoryMax[i][1])); + usedArr.push(this.parseData(memoryUsed[i][1])); + + const gcOldCountSumValue = gcOldCount[i][3]; + const gcOldTimeSumValue = gcOldTime[i][3]; + + if ( gcOldTimeSumValue > 0 ) { + totalSumGCTime += gcOldTimeSumValue; + } + if ( gcOldCountSumValue > 0 ) { + fgcTimeArr.push(gcOldCountSumValue); + fgcCountArr.push(totalSumGCTime); + totalSumGCTime = 0; + } else { + fgcTimeArr.push(0); + fgcCountArr.push(0); + } + } + return { + x: xArr, + max: maxArr, + used: usedArr, + fgcTime: fgcTimeArr, + fgcCount: fgcCountArr + }; + } + + protected makeDataOption(data: {[key: string]: any}): {[key: string]: any} { + return { + labels: data.x, + datasets: [{ + type: 'line', + label: 'Max', + data: data.max, + fill: false, + borderWidth: 0.5, + borderColor: 'rgb(174, 199, 232)', + backgroundColor: 'rgb(174, 199, 232)', + pointRadius: 0, + pointHoverRadius: 3 + }, { + type: 'line', + label: 'Used', + data: data.used, + fill: true, + borderWidth: 0.5, + borderColor: 'rgb(31, 119, 180)', + backgroundColor: 'rgba(31, 119, 180, 0.4)', + pointRadius: 0, + pointHoverRadius: 3 + }, { + type: 'bar', + label: 'FGC', + data: data.fgcTime, + borderWidth: 1, + borderColor: 'rgb(255, 42, 0)', + backgroundColor: 'rgba(255, 42, 0, 0.3)', + // pointRadius: 0, + // pointHoverRadius: 3, + yAxisID: 'y-axis-2' + }] + }; + } + + protected makeNormalOption(data: {[key: string]: any}): {[key: string]: any} { + return { + responsive: true, + maintainAspectRatio: false, + title: { + display: false, + text: 'Heap Usage' + }, + tooltips: { + mode: 'index', + intersect: false, + callbacks: { + title: (value: {[key: string]: any}[]): string => { + return value[0].xLabel.join(' '); + }, + label: (value: {[key: string]: any}, d: {[key: string]: any}): string => { + return `${d.datasets[value.datasetIndex].label}: ${isNaN(value.yLabel) ? `-` : this.convertWithUnit(value.yLabel)}`; + } + } + }, + scales: { + xAxes: [{ + display: true, + scaleLabel: { + display: false + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + maxTicksLimit: 7, + callback: (label: string): string[] => { + return label.split('#'); + }, + maxRotation: 0, + minRotation: 0, + fontSize: 11, + padding: 5 + } + }], + yAxes: [{ + id: 'y-axis-1', + display: true, + position: 'left', + scaleLabel: { + display: true, + labelString: 'Memory (bytes)', + fontSize: 14, + fontStyle: 'bold' + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + beginAtZero: true, + maxTicksLimit: 5, + callback: (label: number): string => { + return this.convertWithUnit(label); + }, + min: 0, + max: this.isDataEmpty(data) ? this.defaultYMax : undefined, + padding: 5 + } + }, + { + id: 'y-axis-2', + display: true, + position: 'right', + scaleLabel: { + display: true, + labelString: 'Full GC (ms)', + fontSize: 14, + fontStyle: 'bold' + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + beginAtZero: true, + maxTicksLimit: 5, + min: 0, + padding: 5 + } + }] + }, + legend: { + display: true, + labels: { + boxWidth: 30, + padding: 10 + } + } + }; + } + + private convertWithUnit(value: number): string { + const unit = ['', 'K', 'M', 'G']; + let result = value; + let index = 0; + while ( result >= 1000 ) { + index++; + result /= 1000; + } + + result = Number.isInteger(result) ? result : Number(result.toFixed(2)); + return result + unit[index]; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-jvm-non-heap-chart-container.component.css b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-jvm-non-heap-chart-container.component.css new file mode 100644 index 000000000000..734f4f3d0fa2 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-jvm-non-heap-chart-container.component.css @@ -0,0 +1,9 @@ +:host { + display: block; + height: calc(100% - 45px); +} +.l-content-item { + width: 100%; + height: 100%; + margin: 0px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-jvm-non-heap-chart-container.component.html b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-jvm-non-heap-chart-container.component.html new file mode 100644 index 000000000000..ba6a1c2f48a4 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-jvm-non-heap-chart-container.component.html @@ -0,0 +1,11 @@ +
+ + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-jvm-non-heap-chart-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-jvm-non-heap-chart-container.component.ts new file mode 100644 index 000000000000..5d405e08de6c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-jvm-non-heap-chart-container.component.ts @@ -0,0 +1,265 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef, ElementRef } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import * as moment from 'moment-timezone'; + +import { WebAppSettingDataService, NewUrlStateNotificationService, AjaxExceptionCheckerService, GutterEventService, StoreHelperService } from 'app/shared/services'; +import { TransactionViewMemoryChartDataService } from './transaction-view-memory-chart-data.service'; +import { TransactionViewChartContainer } from 'app/core/components/inspector-chart/transaction-view-chart-container'; +import { IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; + +@Component({ + selector: 'pp-transaction-view-jvm-non-heap-chart-container', + templateUrl: './transaction-view-jvm-non-heap-chart-container.component.html', + styleUrls: ['./transaction-view-jvm-non-heap-chart-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class TransactionViewJVMNonHeapChartContainerComponent extends TransactionViewChartContainer implements OnInit, OnDestroy { + constructor( + storeHelperService: StoreHelperService, + changeDetector: ChangeDetectorRef, + webAppSettingDataService: WebAppSettingDataService, + newUrlStateNotificationService: NewUrlStateNotificationService, + chartDataService: TransactionViewMemoryChartDataService, + translateService: TranslateService, + ajaxExceptionCheckerService: AjaxExceptionCheckerService, + gutterEventService: GutterEventService, + el: ElementRef + ) { + super( + 100, + storeHelperService, + changeDetector, + webAppSettingDataService, + newUrlStateNotificationService, + chartDataService, + translateService, + ajaxExceptionCheckerService, + gutterEventService, + el + ); + } + + ngOnInit() { + this.initI18nText(); + this.initHoveredInfo(); + this.initHeight(); + this.initTimezoneAndDateFormat(); + this.getChartData(this.getTimeRange()); + } + + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + + protected setChartConfig(data: {[key: string]: any}): void { + this.chartConfig = { + type: 'bar', + dataConfig: this.makeDataOption(data), + elseConfig: this.makeNormalOption(data), + isDataEmpty: this.isDataEmpty(data) + }; + this.changeDetector.detectChanges(); + } + + protected makeChartData(chartData: IChartDataFromServer): {[key: string]: any} { + const xArr = []; + const maxArr = []; + const usedArr = []; + const fgcTimeArr = []; + const fgcCountArr = []; + + const xData = chartData.charts.x; + const gcOldTime = chartData.charts.y['JVM_GC_OLD_TIME']; + const gcOldCount = chartData.charts.y['JVM_GC_OLD_COUNT']; + const memoryUsed = chartData.charts.y['JVM_MEMORY_NON_HEAP_USED']; + const memoryMax = chartData.charts.y['JVM_MEMORY_NON_HEAP_MAX']; + const dataCount = xData.length; + + let totalSumGCTime = 0; + for ( let i = 0 ; i < dataCount ; i++ ) { + xArr.push(moment(xData[i]).tz(this.timezone).format(this.dateFormat[0]) + '#' + moment(xData[i]).tz(this.timezone).format(this.dateFormat[1])); + if ( memoryMax.length === 0 ) { + continue; + } + maxArr.push(this.parseData(memoryMax[i][1])); + usedArr.push(this.parseData(memoryUsed[i][1])); + + const gcOldCountSumValue = gcOldCount[i][3]; + const gcOldTimeSumValue = gcOldTime[i][3]; + + if ( gcOldTimeSumValue > 0 ) { + totalSumGCTime += gcOldTimeSumValue; + } + if ( gcOldCountSumValue > 0 ) { + fgcTimeArr.push(gcOldCountSumValue); + fgcCountArr.push(totalSumGCTime); + totalSumGCTime = 0; + } else { + fgcTimeArr.push(0); + fgcCountArr.push(0); + } + } + return { + x: xArr, + max: maxArr, + used: usedArr, + fgcTime: fgcTimeArr, + fgcCount: fgcCountArr + }; + } + + protected makeDataOption(data: {[key: string]: any}): {[key: string]: any} { + return { + labels: data.x, + datasets: [{ + type: 'line', + label: 'Max', + data: data.max, + fill: false, + borderWidth: 0.5, + borderColor: 'rgb(174, 199, 232)', + backgroundColor: 'rgb(174, 199, 232)', + pointRadius: 0, + pointHoverRadius: 3 + }, { + type: 'line', + label: 'Used', + data: data.used, + fill: true, + borderWidth: 0.5, + borderColor: 'rgb(31, 119, 180)', + backgroundColor: 'rgba(31, 119, 180, 0.4)', + pointRadius: 0, + pointHoverRadius: 3 + }, { + type: 'bar', + label: 'FGC', + data: data.fgcTime, + borderWidth: 1, + borderColor: 'rgb(255, 42, 0)', + backgroundColor: 'rgba(255, 42, 0, 0.3)', + // pointRadius: 0, + // pointHoverRadius: 3, + yAxisID: 'y-axis-2' + }] + }; + } + + protected makeNormalOption(data: {[key: string]: any}): {[key: string]: any} { + return { + responsive: true, + maintainAspectRatio: false, + title: { + display: false, + text: 'Heap Usage' + }, + tooltips: { + mode: 'index', + intersect: false, + callbacks: { + title: (value: {[key: string]: any}[]): string => { + return value[0].xLabel.join(' '); + }, + label: (value: {[key: string]: any}, d: {[key: string]: any}): string => { + return `${d.datasets[value.datasetIndex].label}: ${isNaN(value.yLabel) ? `-` : this.convertWithUnit(value.yLabel)}`; + } + } + }, + scales: { + xAxes: [{ + display: true, + scaleLabel: { + display: false + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + maxTicksLimit: 7, + callback: (label: string): string[] => { + return label.split('#'); + }, + maxRotation: 0, + minRotation: 0, + fontSize: 11, + padding: 5 + } + }], + yAxes: [{ + id: 'y-axis-1', + display: true, + position: 'left', + scaleLabel: { + display: true, + labelString: 'Memory (bytes)', + fontSize: 14, + fontStyle: 'bold' + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + beginAtZero: true, + maxTicksLimit: 5, + callback: (label: number): string => { + return this.convertWithUnit(label); + }, + min: 0, + max: this.isDataEmpty(data) ? this.defaultYMax : undefined, + padding: 5 + } + }, + { + id: 'y-axis-2', + display: true, + position: 'right', + scaleLabel: { + display: true, + labelString: 'Full GC (ms)', + fontSize: 14, + fontStyle: 'bold' + }, + gridLines: { + color: 'rgb(0, 0, 0)', + lineWidth: 0.5, + drawBorder: true, + drawOnChartArea: false + }, + ticks: { + beginAtZero: true, + maxTicksLimit: 5, + min: 0, + padding: 5 + } + }] + }, + legend: { + display: true, + labels: { + boxWidth: 30, + padding: 10 + } + } + }; + } + + private convertWithUnit(value: number): string { + const unit = ['', 'K', 'M', 'G']; + let result = value; + let index = 0; + while ( result >= 1000 ) { + index++; + result /= 1000; + } + + result = Number.isInteger(result) ? result : Number(result.toFixed(2)); + return result + unit[index]; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-memory-chart-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-memory-chart-data.service.ts new file mode 100644 index 000000000000..ba4034250382 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/inspector-chart/transaction-view-memory-chart-data.service.ts @@ -0,0 +1,33 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { shareReplay } from 'rxjs/operators'; + +import { IChartDataService, IChartDataFromServer } from 'app/core/components/inspector-chart/chart-data.service'; +import { NewUrlStateNotificationService } from 'app/shared/services'; +import { UrlPathId } from 'app/shared/models'; +import { getParamForAgentChartData } from 'app/core/utils/chart-data-param-maker'; + +@Injectable() +export class TransactionViewMemoryChartDataService implements IChartDataService { + private requestURL = 'getAgentStat/jvmGc/chart.pinpoint'; + private cache$: Observable; + + constructor( + private http: HttpClient, + private newUrlStateNotificationService: NewUrlStateNotificationService, + ) {} + + getData(range: number[]): Observable { + if (!this.cache$) { + const httpRequest$ = this.http.get(this.requestURL, + getParamForAgentChartData(this.newUrlStateNotificationService.getPathValue(UrlPathId.AGENT_ID), range)); + + this.cache$ = httpRequest$.pipe( + shareReplay(1) + ); + } + + return this.cache$; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/link-context-popup/index.ts b/web/src/main/webapp/v2/src/app/core/components/link-context-popup/index.ts new file mode 100644 index 000000000000..89adf547f46d --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/link-context-popup/index.ts @@ -0,0 +1,23 @@ +import { NgModule } from '@angular/core'; + +import { SharedModule } from 'app/shared'; +import { LinkContextPopupContainerComponent } from 'app/core/components/link-context-popup/link-context-popup-container.component'; +import { LinkContextPopupComponent } from 'app/core/components/link-context-popup/link-context-popup.component'; +import { FilterTransactionWizardPopupModule } from 'app/core/components/filter-transaction-wizard-popup'; + +@NgModule({ + declarations: [ + LinkContextPopupContainerComponent, + LinkContextPopupComponent + ], + imports: [ + SharedModule, + FilterTransactionWizardPopupModule + ], + exports: [], + entryComponents: [ + LinkContextPopupContainerComponent + ], + providers: [] +}) +export class LinkContextPopupModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/link-context-popup/link-context-popup-container.component.css b/web/src/main/webapp/v2/src/app/core/components/link-context-popup/link-context-popup-container.component.css new file mode 100644 index 000000000000..7f26ddcb5503 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/link-context-popup/link-context-popup-container.component.css @@ -0,0 +1,3 @@ +:host { + display: block; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/link-context-popup/link-context-popup-container.component.html b/web/src/main/webapp/v2/src/app/core/components/link-context-popup/link-context-popup-container.component.html new file mode 100644 index 000000000000..090c469aaea0 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/link-context-popup/link-context-popup-container.component.html @@ -0,0 +1,5 @@ + + \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/link-context-popup/link-context-popup-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/link-context-popup/link-context-popup-container.component.ts new file mode 100644 index 000000000000..8c14682a6bbb --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/link-context-popup/link-context-popup-container.component.ts @@ -0,0 +1,78 @@ +import { Component, OnInit, Input, Output, EventEmitter, AfterViewInit } from '@angular/core'; + +import { + UrlRouteManagerService, + NewUrlStateNotificationService, + AnalyticsService, + TRACKED_EVENT_LIST, + DynamicPopupService, + DynamicPopup +} from 'app/shared/services'; +import { Filter } from 'app/core/models/filter'; +import { UrlPathId } from 'app/shared/models'; +import { FilterTransactionWizardPopupContainerComponent } from 'app/core/components/filter-transaction-wizard-popup/filter-transaction-wizard-popup-container.component'; + +@Component({ + selector: 'pp-link-context-popup-container', + templateUrl: './link-context-popup-container.component.html', + styleUrls: ['./link-context-popup-container.component.css'], +}) +export class LinkContextPopupContainerComponent implements OnInit, AfterViewInit, DynamicPopup { + @Input() data: any; + @Input() coord: ICoordinate; + @Output() outCreated = new EventEmitter(); + @Output() outClose = new EventEmitter(); + + constructor( + private urlRouteManagerService: UrlRouteManagerService, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private dynamicPopupService: DynamicPopupService, + private analyticsService: AnalyticsService, + ) {} + + ngOnInit() {} + ngAfterViewInit() { + this.outCreated.emit(this.coord); + } + + onInputChange({coord}: {coord: ICoordinate}): void { + this.outCreated.emit(coord); + } + + onClickFilterTransaction(): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.CLICK_FILTER_TRANSACTION); + this.outClose.emit(); + const isBothWas = this.data.sourceInfo.isWas && this.data.targetInfo.isWas; + this.urlRouteManagerService.openPage( + this.urlRouteManagerService.makeFilterMapUrl({ + applicationName: this.data.filterApplicationName, + serviceType: this.data.filterApplicationServiceTypeName, + periodStr: this.newUrlStateNotificationService.hasValue(UrlPathId.PERIOD) ? this.newUrlStateNotificationService.getPathValue(UrlPathId.PERIOD).getValueWithTime() : '', + timeStr: this.newUrlStateNotificationService.hasValue(UrlPathId.END_TIME) ? this.newUrlStateNotificationService.getPathValue(UrlPathId.END_TIME).getEndTime() : '', + filterStr: this.newUrlStateNotificationService.hasValue(UrlPathId.FILTER) ? this.newUrlStateNotificationService.getPathValue(UrlPathId.FILTER) : '', + hintStr: this.newUrlStateNotificationService.hasValue(UrlPathId.HINT) ? this.newUrlStateNotificationService.getPathValue(UrlPathId.HINT) : '', + addedFilter: new Filter( + this.data.sourceInfo.applicationName, + this.data.sourceInfo.serviceType, + this.data.targetInfo.applicationName, + this.data.targetInfo.serviceType + ), + addedHint: (isBothWas ? { + [this.data.targetInfo.applicationName]: this.data.filterTargetRpcList + } : null) + }) + ); + } + + onClickFilterTransactionWizard(): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.OPEN_FILTER_TRANSACTION_WIZARD); + this.dynamicPopupService.openPopup({ + data: this.data, + component: FilterTransactionWizardPopupContainerComponent + }); + } + + onClickOutside(): void { + this.outClose.emit(); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/link-context-popup/link-context-popup.component.css b/web/src/main/webapp/v2/src/app/core/components/link-context-popup/link-context-popup.component.css new file mode 100644 index 000000000000..829090e403ac --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/link-context-popup/link-context-popup.component.css @@ -0,0 +1,37 @@ +:host { + display: block; +} +.l-one-depth-list { + width: 100%; + margin: 0 0; + padding: 0 0; + list-style-type: none; +} +.l-one-depth-list > li { + border-bottom: 1px solid #E5E5E5; + padding: 10px; +} +.l-one-depth-list > li:last-of-type { + border-bottom: none; +} +li.l-selectable-command:first-of-type .fa-filter { + color:#4b99e3; +} +li.l-selectable-command:last-of-type .fa-filter { + color: #e95459; +} +li.l-selectable-command { + cursor: pointer; +} +li.l-selectable-command:hover { + background-color: #e4f3eb; +} +.l-two-depth-list { + padding-top: 10px; +} +.l-two-depth-list li { + padding: 4px; +} +.l-fas { + margin-right: 4px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/link-context-popup/link-context-popup.component.html b/web/src/main/webapp/v2/src/app/core/components/link-context-popup/link-context-popup.component.html new file mode 100644 index 000000000000..2f88aa450360 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/link-context-popup/link-context-popup.component.html @@ -0,0 +1,4 @@ +
    +
  • Filter Transaction
  • +
  • Filter Transaction Wizard
  • +
diff --git a/web/src/main/webapp/v2/src/app/core/components/link-context-popup/link-context-popup.component.ts b/web/src/main/webapp/v2/src/app/core/components/link-context-popup/link-context-popup.component.ts new file mode 100644 index 000000000000..c88fdb9d4079 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/link-context-popup/link-context-popup.component.ts @@ -0,0 +1,21 @@ +import { Component, OnInit, Output, EventEmitter } from '@angular/core'; + +@Component({ + selector: 'pp-link-context-popup', + templateUrl: './link-context-popup.component.html', + styleUrls: ['./link-context-popup.component.css'] +}) +export class LinkContextPopupComponent implements OnInit { + @Output() outClickFilterTransaction = new EventEmitter(); + @Output() outClickFilterTransactionWizard = new EventEmitter(); + + constructor() {} + ngOnInit() {} + onClickFilterTransaction(): void { + this.outClickFilterTransaction.emit(); + } + + onClickFilterTransactionWizard(): void { + this.outClickFilterTransactionWizard.emit(); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/load-chart/index.ts b/web/src/main/webapp/v2/src/app/core/components/load-chart/index.ts new file mode 100644 index 000000000000..4bb052142f0f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/load-chart/index.ts @@ -0,0 +1,29 @@ + +import { NgModule } from '@angular/core'; + +import { SharedModule } from 'app/shared'; +import { LoadChartComponent } from './load-chart.component'; +import { LoadChartForSideBarContainerComponent } from './load-chart-for-side-bar-container.component'; +import { LoadChartForInfoPerServerContainerComponent } from './load-chart-for-info-per-server-container.component'; +import { LoadChartForFilteredMapSideBarContainerComponent } from './load-chart-for-filtered-map-side-bar-container.component'; +import { HelpViewerPopupModule } from 'app/core/components/help-viewer-popup'; + +@NgModule({ + declarations: [ + LoadChartComponent, + LoadChartForSideBarContainerComponent, + LoadChartForFilteredMapSideBarContainerComponent, + LoadChartForInfoPerServerContainerComponent + ], + imports: [ + SharedModule, + HelpViewerPopupModule + ], + exports: [ + LoadChartForSideBarContainerComponent, + LoadChartForFilteredMapSideBarContainerComponent, + LoadChartForInfoPerServerContainerComponent + ], + providers: [] +}) +export class LoadChartModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart-for-filtered-map-side-bar-container.component.css b/web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart-for-filtered-map-side-bar-container.component.css new file mode 100644 index 000000000000..0919f4cddd72 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart-for-filtered-map-side-bar-container.component.css @@ -0,0 +1,34 @@ +:host { + display: block; + position: relative; +} +.l-chart-item { + height: 253px; +} +.l-tool-box { + font-size: 14px; + color: #b3b5b9; + text-align: right; + position: relative; + padding: 16px 25px 0; +} +.l-tool-box .l-title { + float: left; + text-align: left; + font-size: 16px; + color: #333; + font-weight: 600; + margin: 0 0 23px; +} +.l-tool-box button { + font-size: 18px; + margin: 0; +} +.l-content-section { + padding: 0 25px 0; +} +.l-no-data { + padding-top: 60px; + text-align: center; + font-weight: 600; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart-for-filtered-map-side-bar-container.component.html b/web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart-for-filtered-map-side-bar-container.component.html new file mode 100644 index 000000000000..8f52d2296740 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart-for-filtered-map-side-bar-container.component.html @@ -0,0 +1,20 @@ +
+
+

Load

+ +
+
+ + +
+ {{i18nText.NO_DATA}} +
+
+
+ + \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart-for-filtered-map-side-bar-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart-for-filtered-map-side-bar-container.component.ts new file mode 100644 index 000000000000..4d24f3fc80cc --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart-for-filtered-map-side-bar-container.component.ts @@ -0,0 +1,157 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { Subject } from 'rxjs'; +import { filter } from 'rxjs/operators'; +import { TranslateService } from '@ngx-translate/core'; + +import { Actions } from 'app/shared/store'; +import { WebAppSettingDataService, StoreHelperService, AgentHistogramDataService, AnalyticsService, TRACKED_EVENT_LIST, DynamicPopupService } from 'app/shared/services'; +import { ServerMapData } from 'app/core/components/server-map/class/server-map-data.class'; +import { HELP_VIEWER_LIST, HelpViewerPopupContainerComponent } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; + +@Component({ + selector: 'pp-load-chart-for-filtered-map-side-bar-container', + templateUrl: './load-chart-for-filtered-map-side-bar-container.component.html', + styleUrls: ['./load-chart-for-filtered-map-side-bar-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class LoadChartForFilteredMapSideBarContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + private timezone: string; + private dateFormatMonth: string; + private dateFormatDay: string; + hiddenComponent = false; + hiddenChart = false; + yMax = -1; + selectedTarget: ISelectedTarget; + selectedAgent = ''; + serverMapData: ServerMapData; + useDisable = false; + showLoading = false; + i18nText = { + NO_DATA: '' + }; + chartData: IHistogram[]; + chartColors: string[]; + constructor( + private changeDetector: ChangeDetectorRef, + private storeHelperService: StoreHelperService, + private translateService: TranslateService, + private webAppSettingDataService: WebAppSettingDataService, + private agentHistogramDataService: AgentHistogramDataService, + private analyticsService: AnalyticsService, + private dynamicPopupService: DynamicPopupService + ) {} + ngOnInit() { + this.chartColors = this.webAppSettingDataService.getColorByRequest(); + this.translateService.get('COMMON.NO_DATA').subscribe((txt: string) => { + this.i18nText.NO_DATA = txt; + }); + this.connectStore(); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private connectStore(): void { + this.storeHelperService.getTimezone(this.unsubscribe).subscribe((timezone: string) => { + this.timezone = timezone; + if (this.chartData) { + this.loadLoadChartData(); + } + }); + this.storeHelperService.getDateFormatArray(this.unsubscribe, 5, 6).subscribe((dateFormat: string[]) => { + this.dateFormatMonth = dateFormat[0]; + this.dateFormatDay = dateFormat[1]; + if (this.chartData) { + this.loadLoadChartData(); + } + }); + this.storeHelperService.getAgentSelection(this.unsubscribe).subscribe((agent: string) => { + this.setDisable(true); + this.selectedAgent = agent; + if (this.selectedTarget) { + this.loadLoadChartData(); + } + this.changeDetector.detectChanges(); + }); + this.storeHelperService.getServerMapData(this.unsubscribe).subscribe((serverMapData: ServerMapData) => { + this.serverMapData = serverMapData; + if (this.selectedTarget && this.selectedTarget.isMerged === false) { + this.yMax = -1; + this.loadLoadChartData(); + } + }); + this.storeHelperService.getServerMapTargetSelected(this.unsubscribe).pipe( + filter((target: ISelectedTarget) => { + return target && (target.isNode === true || target.isNode === false) ? true : false; + }) + ).subscribe((target: ISelectedTarget) => { + this.yMax = -1; + this.selectedTarget = target; + this.hiddenComponent = target.isMerged; + if (target.isMerged === false) { + this.loadLoadChartData(); + } + this.changeDetector.detectChanges(); + }); + this.storeHelperService.getServerMapTargetSelectedByList(this.unsubscribe).subscribe((target: any) => { + this.yMax = -1; + this.hiddenComponent = false; + this.passDownChartData(this.agentHistogramDataService.makeChartDataForLoad(target.timeSeriesHistogram, this.timezone, [this.dateFormatMonth, this.dateFormatDay], this.getChartYMax())); + }); + } + private setDisable(disable: boolean): void { + this.useDisable = disable; + this.showLoading = disable; + } + private getChartYMax(): number { + return this.yMax === -1 ? null : this.yMax; + } + private loadLoadChartData(from?: number, to?: number): void { + const target = this.getTargetInfo(); + if (this.selectedAgent === '') { + this.passDownChartData(this.agentHistogramDataService.makeChartDataForLoad(target.timeSeriesHistogram, this.timezone, [this.dateFormatMonth, this.dateFormatDay], this.getChartYMax())); + } else { + this.passDownChartData(this.agentHistogramDataService.makeChartDataForLoad(target['agentTimeSeriesHistogram'][this.selectedAgent], this.timezone, [this.dateFormatMonth, this.dateFormatDay], this.getChartYMax())); + } + } + private passDownChartData(chartData: any): void { + if (chartData) { + this.hiddenChart = false; + this.chartData = chartData; + } else { + this.hiddenChart = true; + } + this.setDisable(false); + this.changeDetector.detectChanges(); + } + private getTargetInfo(): any { + if (this.selectedTarget.isNode) { + return this.serverMapData.getNodeData(this.selectedTarget.node[0]); + } else { + return this.serverMapData.getLinkData(this.selectedTarget.link[0]); + } + } + onNotifyMax(max: number) { + if (max > this.yMax) { + this.yMax = max; + this.storeHelperService.dispatch(new Actions.ChangeLoadChartYMax(max)); + } + } + onClickColumn($event: string): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.CLICK_LOAD_GRAPH); + } + onShowHelp($event: MouseEvent): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.TOGGLE_HELP_VIEWER, HELP_VIEWER_LIST.LOAD); + const {left, top, width, height} = ($event.target as HTMLElement).getBoundingClientRect(); + + this.dynamicPopupService.openPopup({ + data: HELP_VIEWER_LIST.LOAD, + coord: { + coordX: left + width / 2, + coordY: top + height / 2 + }, + component: HelpViewerPopupContainerComponent + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart-for-info-per-server-container.component.css b/web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart-for-info-per-server-container.component.css new file mode 100644 index 000000000000..28e7365d3a05 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart-for-info-per-server-container.component.css @@ -0,0 +1,29 @@ +:host { + display: block; +} +.l-chart-item { + height: 253px; +} +.l-tool-box { + font-size: 14px; + color: #b3b5b9; + text-align: right; + position: relative; + padding: 16px 25px 0; +} +.l-tool-box .l-title { + float: left; + text-align: left; + font-size: 16px; + color: #333; + font-weight: 600; + margin: 0 0 23px; +} +.l-content-section { + padding: 0 25px 0; +} +.l-no-data { + padding-top: 60px; + text-align: center; + font-weight: 600; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart-for-info-per-server-container.component.html b/web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart-for-info-per-server-container.component.html new file mode 100644 index 000000000000..98c98ad1b784 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart-for-info-per-server-container.component.html @@ -0,0 +1,19 @@ +
+
+

Load

+ +
+
+ + +
+
+ {{i18nText.NO_DATA}} +
+
+ + \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart-for-info-per-server-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart-for-info-per-server-container.component.ts new file mode 100644 index 000000000000..c222f01cc003 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart-for-info-per-server-container.component.ts @@ -0,0 +1,102 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { Subject } from 'rxjs'; +import { filter } from 'rxjs/operators'; +import { TranslateService } from '@ngx-translate/core'; + +import { WebAppSettingDataService, StoreHelperService, AgentHistogramDataService, AnalyticsService, TRACKED_EVENT_LIST, DynamicPopupService } from 'app/shared/services'; +import { HELP_VIEWER_LIST, HelpViewerPopupContainerComponent } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; + +@Component({ + selector: 'pp-load-chart-for-info-per-server-container', + templateUrl: './load-chart-for-info-per-server-container.component.html', + styleUrls: ['./load-chart-for-info-per-server-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class LoadChartForInfoPerServerContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + private lastChartData: any = null; + private timezone: string; + private dateFormatMonth: string; + private dateFormatDay: string; + hiddenChart = false; + yMax: number; + chartData: IHistogram[]; + chartColors: string[]; + i18nText = { + NO_DATA: '' + }; + useDisable = false; + showLoading = false; + constructor( + private changeDetector: ChangeDetectorRef, + private storeHelperService: StoreHelperService, + private translateService: TranslateService, + private webAppSettingDataService: WebAppSettingDataService, + private agentHistogramDataService: AgentHistogramDataService, + private analyticsService: AnalyticsService, + private dynamicPopupService: DynamicPopupService + ) {} + ngOnInit() { + this.chartColors = this.webAppSettingDataService.getColorByRequest(); + this.translateService.get('COMMON.NO_DATA').subscribe((txt: string) => { + this.i18nText.NO_DATA = txt; + }); + this.connectStore(); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private connectStore(): void { + this.storeHelperService.getTimezone(this.unsubscribe).subscribe((timezone: string) => { + this.timezone = timezone; + if (this.lastChartData) { + this.makeChartData(); + } + }); + this.storeHelperService.getDateFormatArray(this.unsubscribe, 5, 6).subscribe((dateFormat: string[]) => { + this.dateFormatMonth = dateFormat[0]; + this.dateFormatDay = dateFormat[1]; + if (this.lastChartData) { + this.makeChartData(); + } + }); + this.storeHelperService.getLoadChartYMax(this.unsubscribe).subscribe((max: number) => { + this.yMax = max; + }); + this.storeHelperService.getAgentSelectionForServerList(this.unsubscribe).pipe( + filter((chartData: IAgentSelection) => { + return (chartData && chartData.agent) ? true : false; + }) + ).subscribe((chartData: IAgentSelection) => { + this.lastChartData = chartData; + this.makeChartData(); + }); + } + private makeChartData(): void { + if (this.lastChartData.load) { + this.hiddenChart = false; + this.chartData = this.agentHistogramDataService.makeChartDataForLoad(this.lastChartData.load, this.timezone, [this.dateFormatMonth, this.dateFormatDay], this.yMax); + } else { + this.hiddenChart = true; + } + this.changeDetector.detectChanges(); + } + onNotifyMax(max: number): void {} + onClickColumn($event: string): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.CLICK_LOAD_GRAPH); + } + onShowHelp($event: MouseEvent): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.TOGGLE_HELP_VIEWER, HELP_VIEWER_LIST.LOAD); + const {left, top, width, height} = ($event.target as HTMLElement).getBoundingClientRect(); + + this.dynamicPopupService.openPopup({ + data: HELP_VIEWER_LIST.LOAD, + coord: { + coordX: left + width / 2, + coordY: top + height / 2 + }, + component: HelpViewerPopupContainerComponent + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart-for-side-bar-container.component.css b/web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart-for-side-bar-container.component.css new file mode 100644 index 000000000000..0919f4cddd72 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart-for-side-bar-container.component.css @@ -0,0 +1,34 @@ +:host { + display: block; + position: relative; +} +.l-chart-item { + height: 253px; +} +.l-tool-box { + font-size: 14px; + color: #b3b5b9; + text-align: right; + position: relative; + padding: 16px 25px 0; +} +.l-tool-box .l-title { + float: left; + text-align: left; + font-size: 16px; + color: #333; + font-weight: 600; + margin: 0 0 23px; +} +.l-tool-box button { + font-size: 18px; + margin: 0; +} +.l-content-section { + padding: 0 25px 0; +} +.l-no-data { + padding-top: 60px; + text-align: center; + font-weight: 600; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart-for-side-bar-container.component.html b/web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart-for-side-bar-container.component.html new file mode 100644 index 000000000000..8f52d2296740 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart-for-side-bar-container.component.html @@ -0,0 +1,20 @@ +
+
+

Load

+ +
+
+ + +
+ {{i18nText.NO_DATA}} +
+
+
+ + \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart-for-side-bar-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart-for-side-bar-container.component.ts new file mode 100644 index 000000000000..60f7c62e6cec --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart-for-side-bar-container.component.ts @@ -0,0 +1,163 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { Subject } from 'rxjs'; +import { filter } from 'rxjs/operators'; +import { TranslateService } from '@ngx-translate/core'; + +import { Actions } from 'app/shared/store'; +import { WebAppSettingDataService, StoreHelperService, AgentHistogramDataService, AnalyticsService, TRACKED_EVENT_LIST, DynamicPopupService } from 'app/shared/services'; +import { ServerMapData } from 'app/core/components/server-map/class/server-map-data.class'; +import { HELP_VIEWER_LIST, HelpViewerPopupContainerComponent } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; + +@Component({ + selector: 'pp-load-chart-for-side-bar-container', + templateUrl: './load-chart-for-side-bar-container.component.html', + styleUrls: ['./load-chart-for-side-bar-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class LoadChartForSideBarContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + private timezone: string; + private dateFormatMonth: string; + private dateFormatDay: string; + hiddenComponent = false; + hiddenChart = false; + yMax = -1; + selectedTarget: ISelectedTarget = null; + selectedAgent = ''; + serverMapData: ServerMapData; + useDisable = false; + showLoading = false; + i18nText = { + NO_DATA: '' + }; + chartData: IHistogram[]; + chartColors: string[]; + constructor( + private changeDetector: ChangeDetectorRef, + private storeHelperService: StoreHelperService, + private translateService: TranslateService, + private webAppSettingDataService: WebAppSettingDataService, + private agentHistogramDataService: AgentHistogramDataService, + private analyticsService: AnalyticsService, + private dynamicPopupService: DynamicPopupService + ) {} + ngOnInit() { + this.chartColors = this.webAppSettingDataService.getColorByRequest(); + this.translateService.get('COMMON.NO_DATA').subscribe((txt: string) => { + this.i18nText.NO_DATA = txt; + }); + this.connectStore(); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private connectStore(): void { + this.storeHelperService.getTimezone(this.unsubscribe).subscribe((timezone: string) => { + this.timezone = timezone; + if (this.selectedTarget) { + this.loadLoadChartData(); + } + }); + this.storeHelperService.getDateFormatArray(this.unsubscribe, 5, 6).subscribe((dateFormat: string[]) => { + this.dateFormatMonth = dateFormat[0]; + this.dateFormatDay = dateFormat[1]; + if (this.selectedTarget) { + this.loadLoadChartData(); + } + }); + this.storeHelperService.getAgentSelection(this.unsubscribe).subscribe((agent: string) => { + this.setDisable(true); + this.selectedAgent = agent; + if (this.selectedTarget) { + this.loadLoadChartData(); + this.changeDetector.detectChanges(); + } + }); + this.storeHelperService.getRealTimeScatterChartRange(this.unsubscribe).subscribe(({ from, to }: IScatterXRange) => { + this.yMax = -1; + this.loadLoadChartData(from, to); + }); + this.storeHelperService.getServerMapData(this.unsubscribe).subscribe((serverMapData: ServerMapData) => { + this.serverMapData = serverMapData; + }); + this.storeHelperService.getServerMapTargetSelected(this.unsubscribe).pipe( + filter((target: ISelectedTarget) => { + return target && (target.isNode === true || target.isNode === false) ? true : false; + }) + ).subscribe((target: ISelectedTarget) => { + this.yMax = -1; + this.selectedTarget = target; + this.hiddenComponent = target.isMerged; + if (target.isMerged === false) { + this.loadLoadChartData(); + } + this.changeDetector.detectChanges(); + }); + this.storeHelperService.getServerMapTargetSelectedByList(this.unsubscribe).subscribe((target: any) => { + this.yMax = -1; + this.hiddenComponent = false; + this.passDownChartData(this.agentHistogramDataService.makeChartDataForLoad(target.timeSeriesHistogram, this.timezone, [this.dateFormatMonth, this.dateFormatDay], this.getChartYMax())); + }); + } + private setDisable(disable: boolean): void { + this.useDisable = disable; + this.showLoading = disable; + } + private getChartYMax(): number { + return this.yMax === -1 ? null : this.yMax; + } + private loadLoadChartData(from?: number, to?: number): void { + const target = this.getTargetInfo(); + if (this.isAllAgent() && arguments.length !== 2) { + this.passDownChartData(this.agentHistogramDataService.makeChartDataForLoad(target.timeSeriesHistogram, this.timezone, [this.dateFormatMonth, this.dateFormatDay], this.getChartYMax())); + } else { + this.agentHistogramDataService.getData(target.key, target.applicationName, target.serviceTypeCode, this.serverMapData, from, to).subscribe((chartData: any) => { + const chartDataForAgent = this.isAllAgent() ? chartData['timeSeriesHistogram'] : chartData['agentTimeSeriesHistogram'][this.selectedAgent]; + this.passDownChartData(this.agentHistogramDataService.makeChartDataForLoad(chartDataForAgent, this.timezone, [this.dateFormatMonth, this.dateFormatDay], this.getChartYMax())); + }); + } + } + private passDownChartData(chartData: any): void { + if (chartData) { + this.hiddenChart = false; + this.chartData = chartData; + } else { + this.hiddenChart = true; + } + this.setDisable(false); + this.changeDetector.detectChanges(); + } + private getTargetInfo(): any { + if (this.selectedTarget.isNode) { + return this.serverMapData.getNodeData(this.selectedTarget.node[0]); + } else { + return this.serverMapData.getLinkData(this.selectedTarget.link[0]); + } + } + private isAllAgent(): boolean { + return this.selectedAgent === ''; + } + onNotifyMax(max: number) { + if (this.yMax === -1) { + this.yMax = max; + this.storeHelperService.dispatch(new Actions.ChangeLoadChartYMax(max)); + } + } + onClickColumn($event: string): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.CLICK_LOAD_GRAPH); + } + onShowHelp($event: MouseEvent): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.TOGGLE_HELP_VIEWER, HELP_VIEWER_LIST.LOAD); + const {left, top, width, height} = ($event.target as HTMLElement).getBoundingClientRect(); + + this.dynamicPopupService.openPopup({ + data: HELP_VIEWER_LIST.LOAD, + coord: { + coordX: left + width / 2, + coordY: top + height / 2 + }, + component: HelpViewerPopupContainerComponent + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart.component.css b/web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart.component.css new file mode 100644 index 000000000000..ca3b73860ccd --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart.component.css @@ -0,0 +1,6 @@ +:host { + width: 100%; + height: 200px; + display: block; + position: relative; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart.component.html b/web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart.component.html new file mode 100644 index 000000000000..214e1a55d8a0 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart.component.html @@ -0,0 +1 @@ + diff --git a/web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart.component.ts b/web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart.component.ts new file mode 100644 index 000000000000..b6ee7cd817d6 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/load-chart/load-chart.component.ts @@ -0,0 +1,138 @@ +import { Component, OnInit, OnChanges, ViewChild, ElementRef, SimpleChanges, Input, Output, EventEmitter } from '@angular/core'; +import { Chart } from 'chart.js'; + +// @TODO Loading 전 화면 처리 +@Component({ + selector: 'pp-load-chart', + templateUrl: './load-chart.component.html', + styleUrls: ['./load-chart.component.css'] +}) +export class LoadChartComponent implements OnInit, OnChanges { + @ViewChild('loadChart') el: ElementRef; + @Input() chartData: any; + @Input() chartColors: string[]; + @Output() outNotifyMax: EventEmitter = new EventEmitter(); + @Output() outClickColumn: EventEmitter = new EventEmitter(); + chartObj: any; + constructor() {} + ngOnInit() {} + ngOnChanges(changes: SimpleChanges) { + if (changes['chartData'] && changes['chartData']['firstChange'] === false) { + this.initChart(); + } + } + private initChart(): void { + if (this.chartObj) { + if (this.chartData.max) { + this.chartObj.config.options.scales.yAxes[0].ticks.max = this.chartData.max; + } + this.chartObj.data.labels = this.chartData.labels; + this.chartData.keyValues.forEach((keyValues: any, index: number) => { + this.chartObj.data.datasets[index].data = keyValues.values; + this.chartObj.data.datasets[index].label = keyValues.key; + }); + this.chartObj.update(); + } else { + this.chartObj = new Chart(this.el.nativeElement.getContext('2d'), { + type: 'bar', + data: this.makeDataOption(), + options: this.makeNormalOption() + }); + } + this.outNotifyMax.emit(this.chartObj.scales['y-axis-0'].max); + } + private makeDataOption(): any { + const dataOption = { + labels: this.chartData.labels, + borderWidth: 0, + datasets: [] + }; + + this.chartData.keyValues.forEach((keyValues: any, index: number) => { + dataOption.datasets.push({ + label: keyValues.key, + data: keyValues.values, + backgroundColor: this.chartColors[index], + borderColor: 'rgba(120, 119, 121, 0.8)', + borderWidth: 0 + }); + }); + return dataOption; + } + private makeNormalOption(): any { + return { + onClick: (event: any, aChartEl: any[]) => { + if ( aChartEl.length > 0 ) { + this.outClickColumn.emit(aChartEl[0]._view.label); + } + event.preventDefault(); + // AnalyticsService.send(AnalyticsService.CONST.MAIN, AnalyticsService.CONST.CLK_LOAD_GRAPH); + }, + maintainAspectRatio: false, + tooltips: { + mode: 'label', + bodySpacing: 6 + }, + scales: { + yAxes: [{ + gridLines: { + display: true, + drawBorder: false, + zeroLineWidth: 1.5, + zeroLineColor: 'rgb(0, 0, 0)' + }, + ticks: { + beginAtZero: true, + maxTicksLimit: 4, + callback: (label: number) => { + return ' ' + (label >= 1000 ? `${label / 1000}k` : label) + ' '; + }, + fontColor: 'rgba(162, 162, 162, 1)', + fontSize: 11, + max: this.chartData.max + }, + stacked: true + }], + xAxes: [{ + gridLines: { + display: false, + drawBorder: false + }, + ticks: { + maxTicksLimit: 6, + callback: (label: string): string[] => { + return label.split('#'); + }, + autoSkip: true, + fontColor: 'rgba(162, 162, 162, 1)', + fontSize: 11, + max: this.chartData.max + }, + categoryPercentage: 1.0, + barPercentage: 1.0, + stacked: true, + display: true + }] + }, + animation: { + duration: 0 + }, + legend: { + display: true, + labels: { + boxWidth: 30, + padding: 10 + }, + position: 'bottom' + } + }; + } + getPreSpace(str: string) { + const space = ' '; // 7 is max space + if (str.length > space.length) { + return str; + } else { + return space.substr(0, space.length - str.length); + } + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/main-contents/index.ts b/web/src/main/webapp/v2/src/app/core/components/main-contents/index.ts new file mode 100644 index 000000000000..670642d831b3 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/main-contents/index.ts @@ -0,0 +1,27 @@ + +import { NgModule } from '@angular/core'; + +import { SharedModule } from 'app/shared'; +import { FixedPeriodMoverModule } from 'app/core/components/fixed-period-mover'; +import { ServerMapSearchResultViewerModule } from 'app/core/components/server-map-search-result-viewer'; +import { ServerMapModule } from 'app/core/components/server-map'; +import { MainContentsContainerComponent } from './main-contents-container.component'; +import { HelpViewerPopupModule } from 'app/core/components/help-viewer-popup'; + +@NgModule({ + declarations: [ + MainContentsContainerComponent + ], + imports: [ + SharedModule, + FixedPeriodMoverModule, + ServerMapSearchResultViewerModule, + ServerMapModule, + HelpViewerPopupModule + ], + exports: [ + MainContentsContainerComponent + ], + providers: [] +}) +export class MainContentsModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/main-contents/main-contents-container.component.css b/web/src/main/webapp/v2/src/app/core/components/main-contents/main-contents-container.component.css new file mode 100644 index 000000000000..f47e448eed3b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/main-contents/main-contents-container.component.css @@ -0,0 +1,17 @@ +.l-main-contents-top { + display: flex; + flex-flow: row wrap; + margin: 11px 0 0 25px; + align-items: center; + top: 0; + right: 0; + z-index: 8; + padding:0 10px; + font-size:13px; + justify-content: flex-end; + position:absolute; +} +.fas { + color:#a8acb5; + font-size:18px; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/main-contents/main-contents-container.component.html b/web/src/main/webapp/v2/src/app/core/components/main-contents/main-contents-container.component.html new file mode 100644 index 000000000000..a2e69aa3a065 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/main-contents/main-contents-container.component.html @@ -0,0 +1,6 @@ +
+ + + +
+ diff --git a/web/src/main/webapp/v2/src/app/core/components/main-contents/main-contents-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/main-contents/main-contents-container.component.ts new file mode 100644 index 000000000000..53b531b52b06 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/main-contents/main-contents-container.component.ts @@ -0,0 +1,28 @@ +import { Component, OnInit } from '@angular/core'; + +import { DynamicPopupService } from 'app/shared/services'; +import { HELP_VIEWER_LIST, HelpViewerPopupContainerComponent } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; + +@Component({ + selector: 'pp-main-contents-container', + templateUrl: './main-contents-container.component.html', + styleUrls: ['./main-contents-container.component.css'] +}) +export class MainContentsContainerComponent implements OnInit { + constructor( + private dynamicPopupService: DynamicPopupService + ) {} + ngOnInit() {} + onShowHelp($event: MouseEvent): void { + const {left, top, width, height} = ($event.target as HTMLElement).getBoundingClientRect(); + + this.dynamicPopupService.openPopup({ + data: HELP_VIEWER_LIST.SERVER_MAP, + coord: { + coordX: left + width / 2, + coordY: top + height / 2 + }, + component: HelpViewerPopupContainerComponent + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/message-popup/index.ts b/web/src/main/webapp/v2/src/app/core/components/message-popup/index.ts new file mode 100644 index 000000000000..2f416d2241da --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/message-popup/index.ts @@ -0,0 +1,22 @@ + +import { NgModule } from '@angular/core'; + +import { SharedModule } from 'app/shared'; +import { MessagePopupContainerComponent } from './message-popup-container.component'; +import { MessagePopupComponent } from 'app/core/components/message-popup/message-popup.component'; + +@NgModule({ + declarations: [ + MessagePopupContainerComponent, + MessagePopupComponent + ], + imports: [ + SharedModule + ], + exports: [], + entryComponents: [ + MessagePopupContainerComponent + ], + providers: [] +}) +export class MessagePopupModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/message-popup/message-popup-container.component.css b/web/src/main/webapp/v2/src/app/core/components/message-popup/message-popup-container.component.css new file mode 100644 index 000000000000..3c6a97654ec4 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/message-popup/message-popup-container.component.css @@ -0,0 +1,18 @@ +:host { + display: block; + background-color: transparent; + width: 100%; + height: 100%; +} + +:host::before { + content: ''; + display: block; + height: 100%; + width: 100%; + background: #000; + opacity: 0.6; + position: absolute; + left: 0; + top: 0; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/message-popup/message-popup-container.component.html b/web/src/main/webapp/v2/src/app/core/components/message-popup/message-popup-container.component.html new file mode 100644 index 000000000000..5cb0e8c1493b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/message-popup/message-popup-container.component.html @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/message-popup/message-popup-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/message-popup/message-popup-container.component.ts new file mode 100644 index 000000000000..cf294dd730c3 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/message-popup/message-popup-container.component.ts @@ -0,0 +1,24 @@ +import { Component, OnInit, Input, Output, EventEmitter, AfterViewInit } from '@angular/core'; + +import { DynamicPopup } from 'app/shared/services'; + +@Component({ + selector: 'pp-message-popup-container', + templateUrl: './message-popup-container.component.html', + styleUrls: ['./message-popup-container.component.css'], +}) +export class MessagePopupContainerComponent implements OnInit, AfterViewInit, DynamicPopup { + @Input() data: ITransactionMessage; + @Output() outClose = new EventEmitter(); + @Output() outCreated = new EventEmitter(); + + constructor() {} + ngOnInit() {} + ngAfterViewInit() { + this.outCreated.emit({ coordX: 0, coordY: 0 }); + } + + onClosePopup() { + this.outClose.emit(); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/message-popup/message-popup.component.css b/web/src/main/webapp/v2/src/app/core/components/message-popup/message-popup.component.css new file mode 100644 index 000000000000..60a9ec136756 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/message-popup/message-popup.component.css @@ -0,0 +1,75 @@ +:host { + display: block; + position: absolute; + width: 100%; + min-width: 500px; + max-width: 1000px; + background-color: #fff; + border: 1px solid #e5e8f0; + box-shadow: 0 0 15px 0 rgba(0, 0, 0, 0.75); + text-align: left; + top: 50%; + transform: translateX(-50%) translateY(-50%); + left: 50%; +} +.l-title-group { + padding: 17px 18px; + height: auto; + background-color: #fff; + border-bottom: 1px solid #e5e8f0; + position: relative; + font-size: 13px; + font-weight: 600; + color: #333; + display: flex; + align-items: center; + justify-content: space-between; +} +.l-title-group dt { + font-size: 20px; + font-weight: 600; + color: #4a8fd2; +} +.l-title-group button { + position:absolute; + right:27px; + top:50%; + transform:translateY(-50%); + color:#4a8fd2; + font-size: 30px; + width:20px; + height:20px; + background:url(../../../../assets/img/icon-close.png) no-repeat 0 0; +} +.l-contents-group { + background: #f6f8fb; + padding: 17px 18px; + overflow: auto; +} +.l-list { + height: 400px; + margin: 30px 0 0 0; +} +.l-list:first-child { + margin: 0; +} +.l-list dt { + color: #333; + margin: 0 0 12px; + font-size: 13px; + font-weight: 600; +} +.l-list dd { + height: 100%; + border: 1px solid #cfd7e1; + display: block; + padding: 28px 28px; + font-size: 13px; + background: #fff; + word-break: break-all; + overflow-y: auto; + line-height: 2em; +} +.l-list a { + color: #4a8fd2; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/message-popup/message-popup.component.html b/web/src/main/webapp/v2/src/app/core/components/message-popup/message-popup.component.html new file mode 100644 index 000000000000..a73f5ca2df9c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/message-popup/message-popup.component.html @@ -0,0 +1,13 @@ +
+
+
{{data.title}}
+
+ +
+
+
+
+
+
+
+
diff --git a/web/src/main/webapp/v2/src/app/core/components/message-popup/message-popup.component.ts b/web/src/main/webapp/v2/src/app/core/components/message-popup/message-popup.component.ts new file mode 100644 index 000000000000..ce9e46c96d13 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/message-popup/message-popup.component.ts @@ -0,0 +1,18 @@ +import { Component, OnInit, Input, Output, EventEmitter, HostBinding } from '@angular/core'; + +@Component({ + selector: 'pp-message-popup', + templateUrl: './message-popup.component.html', + styleUrls: ['./message-popup.component.css'] +}) +export class MessagePopupComponent implements OnInit { + @Input() data: ITransactionMessage; + @Output() outClosePopup = new EventEmitter(); + @HostBinding('class.font-opensans') fontFamily = true; + + constructor() {} + ngOnInit() {} + onClose(): void { + this.outClosePopup.emit(); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/notice/index.ts b/web/src/main/webapp/v2/src/app/core/components/notice/index.ts new file mode 100644 index 000000000000..8f35a438ebda --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/notice/index.ts @@ -0,0 +1,18 @@ +import { NgModule } from '@angular/core'; + +import { SharedModule } from 'app/shared'; +import { NoticeContainerComponent } from 'app/core/components/notice/notice-container.component'; + +@NgModule({ + imports: [ + SharedModule, + ], + exports: [ + NoticeContainerComponent + ], + declarations: [ + NoticeContainerComponent + ], + providers: [], +}) +export class NoticeModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/notice/notice-container.component.css b/web/src/main/webapp/v2/src/app/core/components/notice/notice-container.component.css new file mode 100644 index 000000000000..c8c63d1c4847 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/notice/notice-container.component.css @@ -0,0 +1,22 @@ +:host { + display: none; + position: relative; + padding: 8px 10px; + background-color: #f3e0df; + color: #c04e3f; +} + +.l-notice-message { + font-size: 13px; +} + +.l-notice-message > .fas { + margin-right: 4px; +} + +.l-close-notice-area-button { + position: absolute; + top: 7px; + right: 15px; + font-size: 15px; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/notice/notice-container.component.html b/web/src/main/webapp/v2/src/app/core/components/notice/notice-container.component.html new file mode 100644 index 000000000000..035bfe2d826b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/notice/notice-container.component.html @@ -0,0 +1,4 @@ +

+ diff --git a/web/src/main/webapp/v2/src/app/core/components/notice/notice-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/notice/notice-container.component.ts new file mode 100644 index 000000000000..8576413273bf --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/notice/notice-container.component.ts @@ -0,0 +1,41 @@ +import { Component, OnInit, ElementRef, Renderer2 } from '@angular/core'; +import { Observable } from 'rxjs'; +import { tap, filter } from 'rxjs/operators'; + +import { BrowserSupportCheckService } from 'app/shared/services'; + +@Component({ + selector: 'pp-notice-container', + templateUrl: './notice-container.component.html', + styleUrls: ['./notice-container.component.css'] +}) +export class NoticeContainerComponent implements OnInit { + noticeMessage$: Observable; + + constructor( + private elementRef: ElementRef, + private renderer: Renderer2, + private browserSupportCheckService: BrowserSupportCheckService + ) { } + + ngOnInit() { + this.noticeMessage$ = this.browserSupportCheckService.getMessage().pipe( + filter((message: string) => { + return message.length !== 0; + }), + tap(() => this.show()) + ); + } + + onClose(): void { + this.hide(); + } + + private hide(): void { + this.renderer.setStyle(this.elementRef.nativeElement, 'display', 'none'); + } + + private show(): void { + this.renderer.setStyle(this.elementRef.nativeElement, 'display', 'block'); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/period-selector/index.ts b/web/src/main/webapp/v2/src/app/core/components/period-selector/index.ts new file mode 100644 index 000000000000..dc631dae80bf --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/period-selector/index.ts @@ -0,0 +1,27 @@ + +import { NgModule } from '@angular/core'; +import { NguiDatetimePickerModule } from '@ngui/datetime-picker'; +import { SharedModule } from 'app/shared'; + +import { PeriodSelectorUsingReservedTimeComponent } from './period-selector-using-reserved-time.component'; +import { PeriodSelectorUsingCalendarComponent } from './period-selector-using-calendar.component'; +import { PeriodSelectorComponent } from './period-selector.component'; +import { PeriodSelectorContainerComponent } from './period-selector-container.component'; + +@NgModule({ + declarations: [ + PeriodSelectorUsingReservedTimeComponent, + PeriodSelectorUsingCalendarComponent, + PeriodSelectorComponent, + PeriodSelectorContainerComponent + ], + imports: [ + NguiDatetimePickerModule, + SharedModule + ], + exports: [ + PeriodSelectorContainerComponent + ], + providers: [] +}) +export class PeriodSelectorModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector-container.component.css b/web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector-container.component.css new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector-container.component.html b/web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector-container.component.html new file mode 100644 index 000000000000..ac3e6476d76c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector-container.component.html @@ -0,0 +1,14 @@ + + diff --git a/web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector-container.component.ts new file mode 100644 index 000000000000..4c642c1a288d --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector-container.component.ts @@ -0,0 +1,119 @@ +import { Component, OnInit, OnDestroy } from '@angular/core'; +import { Subject, Observable, combineLatest } from 'rxjs'; +import { takeUntil, tap } from 'rxjs/operators'; +import { TranslateService } from '@ngx-translate/core'; + +import { + TranslateReplaceService, + StoreHelperService, + WebAppSettingDataService, + UrlRouteManagerService, + NewUrlStateNotificationService, + AnalyticsService, + TRACKED_EVENT_LIST +} from 'app/shared/services'; +import { UrlPathId } from 'app/shared/models'; +import { Period } from 'app/core/models/period'; +import { EndTime } from 'app/core/models/end-time'; + +@Component({ + selector: 'pp-period-selector-container', + templateUrl: './period-selector-container.component.html', + styleUrls: ['./period-selector-container.component.css'] +}) +export class PeriodSelectorContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + i18nText = { + MAX_PERIOD: '', + }; + hiddenComponent: boolean; + selectedPeriod: Period; + selectedEndTime: EndTime; + periodList: Array; + maxPeriod: number; + isRealTimeMode: boolean; + showRealTimeButton: boolean; + timezone$: Observable; + dateFormat$: Observable; + constructor( + private webAppSettingDataService: WebAppSettingDataService, + private storeHelperService: StoreHelperService, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private urlRouteManagerService: UrlRouteManagerService, + private translateService: TranslateService, + private translateReplaceService: TranslateReplaceService, + private analyticsService: AnalyticsService, + ) {} + ngOnInit() { + this.periodList = this.webAppSettingDataService.getPeriodList(this.newUrlStateNotificationService.getStartPath()); + this.maxPeriod = this.periodList[this.periodList.length - 1].getValue(); + this.getI18NText(); + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe), + tap((urlService: NewUrlStateNotificationService) => { + this.showRealTimeButton = urlService.showRealTimeButton(); + this.isRealTimeMode = urlService.isRealTimeMode(); + }) + ).subscribe((urlService: NewUrlStateNotificationService) => { + if ( this.showRealTimeButton && this.isRealTimeMode ) { + this.hiddenComponent = false; + this.selectedPeriod = this.webAppSettingDataService.getSystemDefaultPeriod(); + this.selectedEndTime = EndTime.newByNumber(urlService.getUrlServerTimeData()); + } else { + if (urlService.hasValue(UrlPathId.PERIOD, UrlPathId.END_TIME)) { + this.hiddenComponent = false; + this.selectedPeriod = urlService.getPathValue(UrlPathId.PERIOD); + this.selectedEndTime = urlService.getPathValue(UrlPathId.END_TIME); + } else { + this.hiddenComponent = true; + } + } + }); + this.connectStore(); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private connectStore(): void { + this.timezone$ = this.storeHelperService.getTimezone(this.unsubscribe); + this.dateFormat$ = this.storeHelperService.getDateFormat(this.unsubscribe, 1); + } + private getI18NText(): void { + combineLatest( + this.translateService.get('COMMON.MAX_SEARCH_PERIOD') + ).subscribe((i18n: string[]) => { + this.i18nText.MAX_PERIOD = this.translateReplaceService.replace(i18n[0], this.maxPeriod / 24 / 60); + }); + } + onChangePeriodTime(selectedPeriod: string): void { + if (this.newUrlStateNotificationService.isRealTimeMode(selectedPeriod)) { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.SET_PERIOD_AS_REAL_TIME); + this.urlRouteManagerService.moveToRealTime(); + } else { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.SELECT_PERIOD, selectedPeriod); + this.urlRouteManagerService.move({ + url: [ + this.newUrlStateNotificationService.getStartPath(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getUrlStr(), + selectedPeriod + ], + needServerTimeRequest: true, + nextUrl: this.newUrlStateNotificationService.hasValue(UrlPathId.AGENT_ID) ? [this.newUrlStateNotificationService.getPathValue(UrlPathId.AGENT_ID)] : [] + }); + } + } + onChangeCalendarTime(oChangeTime: any): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.SELECT_PERIOD, oChangeTime.period.getValueWithTime()); + this.urlRouteManagerService.move({ + url: [ + this.newUrlStateNotificationService.getStartPath(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getUrlStr(), + oChangeTime.period.getValueWithTime(), + oChangeTime.endTime.getEndTime() + ], + needServerTimeRequest: false, + nextUrl: this.newUrlStateNotificationService.hasValue(UrlPathId.AGENT_ID) ? [this.newUrlStateNotificationService.getPathValue(UrlPathId.AGENT_ID)] : [] + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector-using-calendar.component.css b/web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector-using-calendar.component.css new file mode 100644 index 000000000000..649edca3d89f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector-using-calendar.component.css @@ -0,0 +1,145 @@ +.l-calendar { + height: 100%; + position: relative; +} +.l-input-group { + display: flex; + flex-flow: row wrap; + align-items: center; + height: 100%; + justify-content: space-between; + background: #3e506b; + color: #fff; + width: 427px; +} +.l-input-group input { + font-size: 12px; + width: 180px; + font-weight: 600; + text-align: center; +} + +.l-input-wrap { + display: flex; + flex-flow: row wrap; + flex: 1 1 0; + justify-content: center; + height: 100%; + border-left:1px solid #4c5c75; + box-shadow: -1px 0px 0px #303f59; + align-items: center; +} +.l-input-wrap .l-sy { + display: inline-block; + margin: 0 6px; +} +.l-input-group .fa-search { + width: 35px; + height: 100%; + border-left: 1px solid #4c5c75; + box-shadow: -1px 0px 0px #303f59; +} + +.l-inner-calendar { + height: 260px; + border-bottom: 1px solid #DBDEE6; +} + +.l-calendar-group { + bottom: -439px; + position: absolute; + left: -36px; + background:#fff; + border: 1px solid #4477CB; + width: calc(100% + 37px); + z-index: 701; +} +.l-calendar-group .l-calendar-wrap { + display: flex; + flex-flow: row wrap; +} +.l-calendar-section { + flex:1; +} +.l-calendar-section:nth-last-child(2) { + border-right: 1px solid #dbdee6; +} +.l-calendar-section .l-set-group { + background: #f8f9fb; + color: #777879; + font-size: 12px; + padding: 15px 13px; +} +.l-calendar-section .l-set-group li { + margin: 6px 0 0 0; + padding: 0 0 0 10px; + background:url(../../../../assets/img/icon-calendar-arrow.png) no-repeat 0 center; + border-left: none; +} +.l-calendar-section .l-set-group li:first-child { + margin-top:0; +} +.l-calendar-section .l-set-group li span { + display: inline-block; + width: 52px; + border-right: 1px solid #e6e8ec; + margin: 0 10px 0 0; +} +.l-calendar-section .l-set-group li select { + border: 1px solid #d7dde4; + background:#fff; +} +.l-btn-group { + border: none; + height: 32px; +} +.l-btn-group .l-time-set { + display: flex; + flex-flow: row wrap; + height: 100%; + justify-content: space-between; +} +.l-btn-group .l-time-set li { + color:#777879; + font-size: 13px; + flex: 1; + text-align: center; + border-left:none; +} +.l-btn-group .l-time-set li.active button, .l-btn-group .l-time-set li button:hover, .l-btn-group .l-time-set li button:focus { + border: none; + background:#469ae4; + color:#fff; +} +.l-btn-group .l-time-set button { + background:none; + color:#777879; + border-left:none; + height: 34px; + font-size: 12px; + font-weight: 600; + padding: 0 8px; + border-radius: 0px; + border-bottom: 1px solid #dbdee6; + border-top: 1px solid #dbdee6; + width: 100%; +} + +.l-calendar-group .l-text { + padding: 15px 13px; + font-size: 13px; + color: #38c2a2; +} + +.ngui-datetime-picker { + font: normal 12px sans-serif !important; + border: none !important; +} +.ngui-datetime-picker > .days { + margin: 4px !important; + padding: 0 4px; +} +.ngui-datetime-picker > .days .day.selected { + background: #469ae4 !important; + color: #FFF !important; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector-using-calendar.component.html b/web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector-using-calendar.component.html new file mode 100644 index 000000000000..cd0904deed82 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector-using-calendar.component.html @@ -0,0 +1,70 @@ +
+
+
+ + - + +
+ +
+
+
+
+ + +
+
    +
  • + Time{{getStartTime()}}
  • +
  • + Hour + +
  • +
  • + Minute + +
  • +
+
+
+
+ + +
+
    +
  • + Time{{getEndTime()}}
  • +
  • + Hour + +
  • +
  • + Minute + +
  • +
+
+
+
+
    +
  • + +
  • +
+
+
{{i18nText.MAX_PERIOD}}
+
+
+
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector-using-calendar.component.ts b/web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector-using-calendar.component.ts new file mode 100644 index 000000000000..cbebf580d0e0 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector-using-calendar.component.ts @@ -0,0 +1,122 @@ +import { Component, Input, Output, OnInit, OnChanges, SimpleChanges, EventEmitter, ViewEncapsulation } from '@angular/core'; +import * as moment from 'moment-timezone'; +import { Period } from 'app/core/models/period'; +import { EndTime } from 'app/core/models/end-time'; + +@Component({ + selector: 'pp-period-selector-using-calendar', + templateUrl: './period-selector-using-calendar.component.html', + styleUrls: ['./period-selector-using-calendar.component.css'], + encapsulation: ViewEncapsulation.None +}) +export class PeriodSelectorUsingCalendarComponent implements OnInit, OnChanges { + + @Input() isHidden: boolean; + @Input() i18nText: any; + @Input() maxPeriod: number; + @Input() periodList: Array; + @Input() initPeriod: Period; + @Input() initEndTime: EndTime; + @Input() timezone: string; + @Input() dateFormat: string; + @Output() outChangePeriod = new EventEmitter(); + + isPopupHidden = true; + startDate = moment(); + endDate = moment(); + minDate = new Date(1977, 0, 1); + maxDate = new Date(); + hours: Array = Array(24).fill('').map(function (v, i) { + return { + value: i, + display: ('0' + i).substr(-2) + }; + }); + minutes: Array = Array(60).fill('').map(function (v, i) { + return { + value: i, + display: ('0' + i).substr(-2) + }; + }); + wrongDate = false; + constructor() {} + ngOnChanges(changes: SimpleChanges) { + if ((changes['initEndTime'] && changes['initEndTime']['currentValue']) && (changes['initPeriod'] && changes['initPeriod']['currentValue'])) { + this.startDate = moment(this.initEndTime.calcuStartTime(this.initPeriod.getValue()).getDate()).tz(this.timezone); + this.endDate = moment(this.initEndTime.getDate()).tz(this.timezone); + } + } + ngOnInit() {} + getStartTime(): string { + return this.startDate.format('HH:mm Z'); + } + getEndTime(): string { + return this.endDate.format('HH:mm Z'); + } + getStartDate(): string { + return this.startDate.format(this.dateFormat); + } + getEndDate(): string { + return this.endDate.format(this.dateFormat); + } + checkTimeValid(): void { + if (this.endDate.isBefore(this.startDate) || this.endDate.diff(this.startDate, 'minute') > this.maxPeriod) { + this.wrongDate = true; + } else { + this.wrongDate = false; + } + } + onChangedStartDate(date: Date): void { + this.startDate.set({ + 'year': date.getFullYear(), + 'month': date.getMonth(), + 'date': date.getDate() + }); + this.checkTimeValid(); + } + onChangedEndDate(date: Date): void { + this.endDate.set({ + 'year': date.getFullYear(), + 'month': date.getMonth(), + 'date': date.getDate() + }); + this.checkTimeValid(); + } + onClosePopup(): void { + this.isPopupHidden = true; + } + onTogglePopup(): void { + this.isPopupHidden = !this.isPopupHidden; + } + onChangeStartHour(val: string): void { + this.startDate.hour(parseInt(val, 10)); + this.checkTimeValid(); + } + onChangeStartMinute(val: string): void { + this.startDate.minute(parseInt(val, 10)); + this.checkTimeValid(); + } + onChangeEndHour(val: string): void { + this.endDate.hour(parseInt(val, 10)); + this.checkTimeValid(); + } + onChangeEndMinute(val: string): void { + this.endDate.minute(parseInt(val, 10)); + this.checkTimeValid(); + } + onChangeToReservedPeriod($event: any): void { + if ($event.target.tagName.toUpperCase() === 'BUTTON') { + this.startDate = this.endDate.clone().subtract(Period.parseToMinute($event.target.getAttribute('data-period')), 'minute'); + this.checkTimeValid(); + } + } + onSelectPeriod(): void { + if (this.wrongDate === false) { + this.onClosePopup(); + this.outChangePeriod.emit({ + period: new Period(this.endDate.diff(this.startDate, 'minute')), + endTime: EndTime.newByNumber(this.endDate.valueOf()) + }); + } + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector-using-reserved-time.component.css b/web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector-using-reserved-time.component.css new file mode 100644 index 000000000000..6d0aa99d576e --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector-using-reserved-time.component.css @@ -0,0 +1,28 @@ +.l-time-set { + display: flex; + flex-flow: row wrap; + height: 100%; +} +.l-time-set li { + border-left: 1px solid #364660; +} +.l-time-set button { + height: 100%; + font-size:12px; + font-weight:600; + color:#fff; + padding:0 8px; + background: #3e506b; + border-left:1px solid #4c5c75; + border-radius: 0px; +} +.l-time-set button.active { + background:#33b692; +} +.l-time-set button:focus { + background-color:#469ae4; + color:#fff; +} +.l-time-set button:hover, .l-time-set button:focus { + background:#33b692 +} diff --git a/web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector-using-reserved-time.component.html b/web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector-using-reserved-time.component.html new file mode 100644 index 000000000000..b92799a40c6e --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector-using-reserved-time.component.html @@ -0,0 +1,8 @@ +
    +
  • + +
  • +
  • + +
  • +
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector-using-reserved-time.component.ts b/web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector-using-reserved-time.component.ts new file mode 100644 index 000000000000..865e3b45e7d9 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector-using-reserved-time.component.ts @@ -0,0 +1,28 @@ +import { Component, EventEmitter, Input, Output, OnInit, ChangeDetectionStrategy } from '@angular/core'; +import { Period } from 'app/core/models/period'; + +@Component({ + selector: 'pp-period-selector-using-reserved-time', + templateUrl: './period-selector-using-reserved-time.component.html', + styleUrls: ['./period-selector-using-reserved-time.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class PeriodSelectorUsingReservedTimeComponent implements OnInit { + @Input() showRealTimeButton: boolean; + @Input() isRealTimeMode: boolean; + @Input() isHidden: boolean; + @Input() periodList: Array; + @Input() initPeriod: Period; + @Output() outChangePeriod = new EventEmitter(); + constructor() {} + ngOnInit() {} + onSelectPeriod($event: any): void { + if ($event.target.tagName.toUpperCase() === 'BUTTON') { + this.outChangePeriod.emit($event.target.getAttribute('data-period')); + } + } + isSelectedPeriod(period: Period): boolean { + return this.isRealTimeMode === false && period.equals(this.initPeriod); + } + +} diff --git a/web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector.component.css b/web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector.component.css new file mode 100644 index 000000000000..d14523ded466 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector.component.css @@ -0,0 +1,59 @@ +.l-wrapper { + display: flex; + flex-flow: row wrap; + margin-right: 10px; + border: 1px solid #364660; + border-radius: 0px; + line-height: 1em; + align-items:stretch; + height: 32px; +} +.fas { + font-size: 16px; +} +.l-type-select { + display: flex; + flex-flow: row wrap; + position: relative; +} +.l-type-select li { + position: relative; + border-left: none; +} +.l-type-select button { + height: 100%; + background: #3E506B; + padding: 0 5px; + width: 35px; + color:#38c2a2; +} +.l-type-select li.inactive { + border: 1px solid #364660; + border-radius: 0 0 2px 2px; + overflow: hidden; + bottom: -36px; + left: -1px; + position: absolute; +} +.l-type-select li:after { + content: ''; + width: 0; + height: 0; + border-right: 0 solid #33b692; + border-bottom: 8px solid #33b692; + border-left: 8px solid transparent; + position: absolute; + right: 0; + bottom: 0; +} +.l-type-select li.inactive:after { + display:none; +} +.l-type-select li.inactive button { + color:#7185a2; + height: 34px; + width: 34px; +} +.l-type-select li:first-child button { + border-left: none; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector.component.html b/web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector.component.html new file mode 100644 index 000000000000..d29b48c7d704 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector.component.html @@ -0,0 +1,27 @@ +
+
    +
  • + +
  • +
  • + +
  • +
+ + +
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector.component.ts b/web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector.component.ts new file mode 100644 index 000000000000..44e45d9aa282 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/period-selector/period-selector.component.ts @@ -0,0 +1,72 @@ +import { Component, OnInit, OnChanges, OnDestroy, Input, Output, EventEmitter, SimpleChanges } from '@angular/core'; + +import { Period } from 'app/core/models/period'; +import { EndTime } from 'app/core/models/end-time'; +import { AnalyticsService, TRACKED_EVENT_LIST } from 'app/shared/services'; + +enum PeriodSelectType { + RESERVED_PERIOD, + CALENDAR_PERIOD +} + +@Component({ + selector: 'pp-period-selector', + templateUrl: './period-selector.component.html', + styleUrls: ['./period-selector.component.css'] +}) +export class PeriodSelectorComponent implements OnInit, OnChanges, OnDestroy { + periodSelectType: PeriodSelectType = PeriodSelectType.RESERVED_PERIOD; + @Input() i18nText: any; + @Input() showRealTimeButton: boolean; + @Input() isRealTimeMode: boolean; + @Input() selectedPeriod: Period; + @Input() selectedEndTime: EndTime; + @Input() periodList: Array; + @Input() maxPeriod: number; + @Input() timezone: string; + @Input() dateFormat: string; + @Output() outChangePeriod: EventEmitter = new EventEmitter(); + @Output() outChangeCalendarTime: EventEmitter = new EventEmitter(); + constructor( + private analyticsService: AnalyticsService, + ) {} + ngOnChanges(changes: SimpleChanges) { + if (changes['selectedPeriod'] && changes['selectedEndTime'] || changes['isRealTimeMode']) { + this.checkPeriodType(); + } + } + ngOnInit() {} + ngOnDestroy() {} + onChangePeriodTime(selectedPeriod: string): void { + this.outChangePeriod.emit(selectedPeriod); + } + onChangeCalendarTime(oChangeTime: any): void { + if (this.selectedEndTime.equals(oChangeTime.endTime) === false || this.selectedPeriod.equals(oChangeTime.period) === false) { + this.outChangeCalendarTime.emit(oChangeTime); + } + } + private checkPeriodType(): void { + if (this.isRealTimeMode) { + this.periodSelectType = PeriodSelectType.RESERVED_PERIOD; + return; + } + for (let i = 0; i < this.periodList.length; i++) { + if (this.periodList[i].equals(this.selectedPeriod)) { + this.periodSelectType = PeriodSelectType.RESERVED_PERIOD; + return; + } + } + this.periodSelectType = PeriodSelectType.CALENDAR_PERIOD; + } + isReservedType(): boolean { + return this.periodSelectType === PeriodSelectType.RESERVED_PERIOD; + } + changeToReservedType(): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.TOGGLE_PERIOD_SELECT_TYPE, PeriodSelectType[PeriodSelectType.RESERVED_PERIOD]); + this.periodSelectType = PeriodSelectType.RESERVED_PERIOD; + } + changeToCalendarType(): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.TOGGLE_PERIOD_SELECT_TYPE, PeriodSelectType[PeriodSelectType.CALENDAR_PERIOD]); + this.periodSelectType = PeriodSelectType.CALENDAR_PERIOD; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/pinpoint-user/index.ts b/web/src/main/webapp/v2/src/app/core/components/pinpoint-user/index.ts new file mode 100644 index 000000000000..ca0d4c80b873 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/pinpoint-user/index.ts @@ -0,0 +1,36 @@ + +import { NgModule } from '@angular/core'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { InfiniteScrollModule } from 'ngx-infinite-scroll'; +import { SharedModule } from 'app/shared'; +import { PinpointUserComponent } from './pinpoint-user.component'; +import { PinpointUserCreateAndUpdateComponent } from './pinpoint-user-create-and-update.component'; +import { PinpointUserContainerComponent } from './pinpoint-user-container.component'; +import { PinpointUserInteractionService } from './pinpoint-user-interaction.service'; +import { PinpointUserDataService } from './pinpoint-user-data.service'; + +@NgModule({ + declarations: [ + PinpointUserComponent, + PinpointUserCreateAndUpdateComponent, + PinpointUserContainerComponent + ], + imports: [ + FormsModule, + ReactiveFormsModule, + InfiniteScrollModule, + SharedModule + ], + exports: [ + PinpointUserContainerComponent + ], + entryComponents: [ + PinpointUserComponent, + PinpointUserContainerComponent + ], + providers: [ + PinpointUserInteractionService, + PinpointUserDataService + ] +}) +export class PinpointUserModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user-container.component.css b/web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user-container.component.css new file mode 100644 index 000000000000..9786fa434dff --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user-container.component.css @@ -0,0 +1,56 @@ +:host { + position: relative; +} +.l-pinpoint-user-wrapper { + color: #333; + border: 1px solid #e5e8f0; + height: 100%; + display: grid; + position: relative; + font-size: 13px; + font-family: 'Open Sans', sans-serif; + font-weight: 600; + grid-template-columns: auto; + grid-template-rows: 48px 53px 416px; +} +.l-pinpoint-user-title { + display: flex; + padding: 0px 15px; + align-items: center; + justify-content: space-between; + background-color: #f6f8fb; + border-bottom: 1px solid #e5e8f0; +} +.l-pinpoint-user-search { + padding: 10px 15px; + border-bottom: 1px solid #e5e8f0; +} +.l-pinpoint-user-list { + overflow-y: auto; +} +.l-message { + width: 100%; + height: 100%; + z-index: 15; + display: flex; + position: absolute; + align-items: center; + justify-content: center; + background-color: rgba(226, 226, 226, 0.8); +} +.l-message span { + color: #ff8c00; + text-align: center; +} +.l-message button { + top: 0px; + right: 0px; + position: absolute; +} +.l-search-input { + width: 100%; + color: #b3b3b4; + border: 1px solid #469ae4; + padding: 6px 11px; + font-size: 13px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user-container.component.html b/web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user-container.component.html new file mode 100644 index 000000000000..2593403a37fc --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user-container.component.html @@ -0,0 +1,41 @@ +
+
+ Pinpoint User ({{pinpointUserList.length}}) + +
+ +
+ + +
+
+ + {{message}} +
+ + + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user-container.component.ts new file mode 100644 index 000000000000..34ef43e8bfe9 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user-container.component.ts @@ -0,0 +1,261 @@ +import { Component, OnInit, OnDestroy } from '@angular/core'; +import { Subject, combineLatest } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; +import { TranslateService } from '@ngx-translate/core'; + +import { TranslateReplaceService, WebAppSettingDataService } from 'app/shared/services'; +import { GroupMemberInteractionService } from 'app/core/components/group-member/group-member-interaction.service'; +import { UserGroupInteractionService } from 'app/core/components/user-group/user-group-interaction.service'; +import { PinpointUserInteractionService } from './pinpoint-user-interaction.service'; +import { PinpointUser } from './pinpoint-user-create-and-update.component'; +import { PinpointUserDataService, IPinpointUser, IPinpointUserResponse } from './pinpoint-user-data.service'; + +@Component({ + selector: 'pp-pinpoint-user-container', + templateUrl: './pinpoint-user-container.component.html', + styleUrls: ['./pinpoint-user-container.component.css'] +}) +export class PinpointUserContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + private searchQuery = ''; + i18nLabel = { + USER_ID_LABEL: '', + NAME_LABEL: '', + DEPARTMENT_LABEL: '', + PHONE_LABEL: '', + EMAIL_LABEL: '', + }; + i18nGuide = { + USER_ID_MIN_LENGTH: '', + NAME_MIN_LENGTH: '', + USER_ID_REQUIRED: '', + NAME_REQUIRED: '', + PHONE_REQUIRED: '', + EMAIL_REQUIRED: '', + }; + i18nText = { + SEARCH_INPUT_GUIDE: '' + }; + minLength = { + userId: 3, + name: 3, + search: 2 + }; + allowedUserEdit = false; + searchUseEnter = false; + pinpointUserList: IPinpointUser[] = []; + filteredPinpointUserList: IPinpointUser[] = []; + groupMemberList: string[] = []; + editPinpointUserIndex: number; + editPinpointUser: PinpointUser; + isUserGroupSelected = false; + useDisable = true; + showLoading = true; + showCreate = false; + message = ''; + + displayPinpointUserList: IPinpointUser[] = []; + defaultScrollSize = 100; + currentSize: number; + constructor( + private webAppSettingDataService: WebAppSettingDataService, + private pinpointUserDataService: PinpointUserDataService, + private translateService: TranslateService, + private translateReplaceService: TranslateReplaceService, + private userGroupInteractionService: UserGroupInteractionService, + private groupMemberInteractionService: GroupMemberInteractionService, + private pinpointUserInteractionService: PinpointUserInteractionService + ) {} + ngOnInit() { + this.webAppSettingDataService.useUserEdit().subscribe((allowedUserEdit: boolean) => { + this.allowedUserEdit = allowedUserEdit; + }); + this.userGroupInteractionService.onSelect$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((userGroupId: string) => { + this.isUserGroupSelected = userGroupId === '' ? false : true; + }); + this.groupMemberInteractionService.onChangeGroupMember$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((memberList: string[]) => { + this.groupMemberList = memberList; + this.hideProcessing(); + }); + this.getI18NText(); + this.getPinpointUserList(); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private getI18NText(): void { + combineLatest( + this.translateService.get('COMMON.MIN_LENGTH'), + this.translateService.get('COMMON.REQUIRED'), + this.translateService.get('CONFIGURATION.COMMON.USER_ID'), + this.translateService.get('CONFIGURATION.COMMON.NAME'), + this.translateService.get('CONFIGURATION.COMMON.DEPARTMENT'), + this.translateService.get('CONFIGURATION.COMMON.PHONE'), + this.translateService.get('CONFIGURATION.COMMON.EMAIL'), + this.translateService.get('CONFIGURATION.USER_GROUP.USER_GROUP_REQUIRED') + ).subscribe((i18n: string[]) => { + this.i18nGuide.USER_ID_MIN_LENGTH = this.translateReplaceService.replace(i18n[0], this.minLength.userId); + this.i18nGuide.NAME_MIN_LENGTH = this.translateReplaceService.replace(i18n[0], this.minLength.name); + this.i18nGuide.USER_ID_REQUIRED = this.translateReplaceService.replace(i18n[1], i18n[2]); + this.i18nGuide.NAME_REQUIRED = this.translateReplaceService.replace(i18n[1], i18n[3]); + this.i18nGuide.PHONE_REQUIRED = this.translateReplaceService.replace(i18n[1], i18n[5]); + this.i18nGuide.EMAIL_REQUIRED = this.translateReplaceService.replace(i18n[1], i18n[6]); + + this.i18nText.SEARCH_INPUT_GUIDE = this.translateReplaceService.replace(i18n[0], this.minLength.search); + + this.i18nLabel.USER_ID_LABEL = i18n[2]; + this.i18nLabel.NAME_LABEL = i18n[3]; + this.i18nLabel.DEPARTMENT_LABEL = i18n[4]; + this.i18nLabel.PHONE_LABEL = i18n[5]; + this.i18nLabel.EMAIL_LABEL = i18n[6]; + }); + } + private getPinpointUserList(): void { + this.showProcessing(); + this.webAppSettingDataService.getUserDepartment().subscribe((department: string) => { + this.pinpointUserDataService.retrieve(department).subscribe((pinpointUserData: IPinpointUser[]) => { + this.pinpointUserList = pinpointUserData; + this.filteringPinpointUserList(); + this.hideProcessing(); + }, (error: string) => { + this.hideProcessing(); + this.message = error; + }); + }); + } + private filteringPinpointUserList(): void { + if (this.searchQuery === '') { + this.filteredPinpointUserList = this.pinpointUserList; + } else { + this.filteredPinpointUserList = this.pinpointUserList.filter((pinpointUser: IPinpointUser): boolean => { + return pinpointUser.name.indexOf(this.searchQuery) === -1 ? false : true; + }); + } + this.addListItem(true); + } + isEnable(): boolean { + return false; + } + isChecked(userId: string): boolean { + return this.groupMemberList.indexOf(userId) !== -1; + } + hasMessage(): boolean { + return this.message !== ''; + } + onAddUser(pinpointUserId: string): void { + this.showProcessing(); + this.pinpointUserInteractionService.setAddPinpointUser(pinpointUserId); + } + onCloseMessage(): void { + this.message = ''; + } + onSearch(query: string): void { + this.searchQuery = query; + this.filteringPinpointUserList(); + } + onCloseCreateUserPopup(): void { + this.showCreate = false; + } + onShowCreateUserPopup(): void { + this.showCreate = true; + } + onCreatePinpointUser(pinpointUser: PinpointUser): void { + this.pinpointUserDataService.create({ + userId: pinpointUser.userId, + name: pinpointUser.name, + phoneNumber: pinpointUser.phoneNumber, + email: pinpointUser.email, + department: pinpointUser.department + } as IPinpointUser).subscribe((response: IPinpointUserResponse) => { + this.getPinpointUserList(); + }, (error: string) => { + this.hideProcessing(); + this.message = error; + }); + } + onUpdatePinpointUser(pinpointUser: PinpointUser): void { + const editPinpointUser = this.pinpointUserList[this.editPinpointUserIndex]; + this.pinpointUserDataService.update({ + userId: pinpointUser.userId, + name: pinpointUser.name, + phoneNumber: pinpointUser.phoneNumber, + email: pinpointUser.email, + department: pinpointUser.department, + number: editPinpointUser.number + } as IPinpointUser).subscribe((response: IPinpointUserResponse) => { + this.getPinpointUserList(); + this.pinpointUserInteractionService.setUserUpdated({ + userId: pinpointUser.userId, + department: pinpointUser.department, + name: pinpointUser.name + }); + }, (error: string) => { + this.hideProcessing(); + this.message = error; + }); + } + onRemovePinpointUser(userId: string): void { + this.showProcessing(); + this.pinpointUserDataService.remove(userId).subscribe((response: IPinpointUserResponse) => { + this.pinpointUserList.splice(this.getPinpointUserIndexByUserId(userId), 1); + this.hideProcessing(); + }, (error: string) => { + this.hideProcessing(); + this.message = error; + }); + } + onEditPinpointUser(userId: string): void { + this.editPinpointUserIndex = this.getPinpointUserIndexByUserId(userId); + const editPinpointUser = this.pinpointUserList[this.editPinpointUserIndex]; + this.editPinpointUser = new PinpointUser( + editPinpointUser.userId, + editPinpointUser.name, + editPinpointUser.phoneNumber, + editPinpointUser.email, + editPinpointUser.department + ); + this.onShowCreateUserPopup(); + } + private getPinpointUserIndexByUserId(userId: string): number { + let index = -1; + for (let i = 0 ; i < this.pinpointUserList.length ; i++) { + if (this.pinpointUserList[i].userId === userId) { + index = i; + break; + } + } + return index; + } + private showProcessing(): void { + this.useDisable = true; + this.showLoading = true; + } + private hideProcessing(): void { + this.useDisable = false; + this.showLoading = false; + } + onScroll($event: MouseEvent): void { + this.addListItem(); + } + private addListItem(reset: boolean = false): void { + if (reset) { + this.displayPinpointUserList.length = 0; + this.addScrollItem(0, Math.min(this.defaultScrollSize, this.filteredPinpointUserList.length)); + } else { + if (this.currentSize < this.filteredPinpointUserList.length) { + this.addScrollItem(this.currentSize, Math.min(this.currentSize + this.defaultScrollSize, this.filteredPinpointUserList.length)); + } + } + } + private addScrollItem(start: number, end: number): void { + for (let i = start ; i < end ; i++) { + this.displayPinpointUserList.push(this.filteredPinpointUserList[i]); + } + this.currentSize = end; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user-create-and-update.component.css b/web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user-create-and-update.component.css new file mode 100644 index 000000000000..78db2a42dd5f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user-create-and-update.component.css @@ -0,0 +1,50 @@ +.l-wrapper { + top: 0px; + left: 0px; + width: 100%; + height: 100%; + z-index: 15; + display: flex; + padding: 0px 20px; + position: absolute; + align-items: center; + flex-direction: column; + justify-content: center; + background-color: rgba(226, 226, 226, 0.9); +} +.l-wrapper h1 { + margin-bottom: 6px; +} +.l-wrapper input { + width: 100%; + border: 1px solid #469ae4; + padding: 6px 11px; + font-size: 13px; + margin-bottom: 2px; + background-color: #FFF; +} +.l-wrapper .l-create { + width: 100%; + margin-top: 6px; +} +.l-wrapper .l-close { + top: 0px; + right: 0px; + position: absolute; +} +.l-wrapper .l-alert { + color: #FFF; + padding: 4px; + margin-bottom: 4px; + background-color: #000; +} +.ng-valid[required], .ng-valid.required { + border-left: 5px solid #42A948 !important; +} + +.ng-invalid:not(form) { + border-left: 5px solid #a94442 !important; +} +input[disabled] { + border: 1px solid #DDD !important; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user-create-and-update.component.html b/web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user-create-and-update.component.html new file mode 100644 index 000000000000..0cdcf8e0d5b0 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user-create-and-update.component.html @@ -0,0 +1,41 @@ +
+ +

{{title}}

+
+
+ + +
+
{{i18nGuide.USER_ID_REQUIRED}}
+
{{i18nGuide.USER_ID_MIN_LENGTH}}
+
+
+
+ + +
+
{{i18nGuide.NAME_REQUIRED}}
+
{{i18nGuide.NAME_MIN_LENGTH}}
+
+
+
+ + +
+
+ + +
+
{{i18nGuide.PHONE_REQUIRED}}
+
+
+
+ + +
+
{{i18nGuide.EMAIL_REQUIRED}}
+
+
+ +
+
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user-create-and-update.component.ts b/web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user-create-and-update.component.ts new file mode 100644 index 000000000000..02d3dc1bd53a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user-create-and-update.component.ts @@ -0,0 +1,101 @@ +import { Component, OnInit, OnChanges, SimpleChanges, Input, Output, EventEmitter, AfterViewChecked, ViewChild, ElementRef } from '@angular/core'; +import { FormControl, FormGroup, Validators } from '@angular/forms'; + +export class PinpointUser { + constructor( + public userId: string, + public name: string, + public phoneNumber: string, + public email: string, + public department?: string + ) {} +} + +@Component({ + selector: 'pp-pinpoint-user-create-and-update', + templateUrl: './pinpoint-user-create-and-update.component.html', + styleUrls: ['./pinpoint-user-create-and-update.component.css'] +}) +export class PinpointUserCreateAndUpdateComponent implements OnInit, OnChanges, AfterViewChecked { + @ViewChild('newUserGroupName') userGroupInput: ElementRef; + @Input() showCreate = false; + @Input() i18nLabel: any; + @Input() i18nGuide: any; + @Input() minLength: any; + @Input() editPinpointUser: PinpointUser = null; + @Output() outUpdatePinpointUser: EventEmitter = new EventEmitter(); + @Output() outCreatePinpointUser: EventEmitter = new EventEmitter(); + @Output() outClose: EventEmitter = new EventEmitter(); + newUserModel = new PinpointUser('', '', '', '', ''); + pinpointUserForm: FormGroup; + title = 'Pinpoint User'; + constructor() {} + ngOnInit() { + this.pinpointUserForm = new FormGroup({ + 'userId': new FormControl(this.newUserModel.userId, [ + Validators.required, + Validators.minLength(this.minLength.userId) + ]), + 'name': new FormControl(this.newUserModel.name, [ + Validators.required, + Validators.minLength(this.minLength.name) + ]), + 'phoneNumber': new FormControl(this.newUserModel.phoneNumber, [ + Validators.required, + Validators.pattern(/\d*/) + ]), + 'email': new FormControl(this.newUserModel.email, [ + Validators.required, + Validators.email + ]), + 'department': new FormControl(this.newUserModel.department, []) + }); + } + ngOnChanges(changes: SimpleChanges) { + if (changes['editPinpointUser'] && changes['editPinpointUser'].currentValue) { + this.pinpointUserForm.get('userId').setValue(this.editPinpointUser.userId); + this.pinpointUserForm.get('name').setValue(this.editPinpointUser.name); + this.pinpointUserForm.get('phoneNumber').setValue(this.editPinpointUser.phoneNumber); + this.pinpointUserForm.get('email').setValue(this.editPinpointUser.email); + this.pinpointUserForm.get('department').setValue(this.editPinpointUser.department); + this.pinpointUserForm.get('userId').disable(); + } + } + ngAfterViewChecked() {} + onCreateOrUpdate(): void { + const pinpointUser = new PinpointUser( + this.pinpointUserForm.get('userId').value, + this.pinpointUserForm.get('name').value, + this.pinpointUserForm.get('phoneNumber').value, + this.pinpointUserForm.get('email').value.toString(), + this.pinpointUserForm.get('department').value + ); + if (this.editPinpointUser) { + this.outUpdatePinpointUser.emit(pinpointUser); + } else { + this.outCreatePinpointUser.emit(pinpointUser); + } + this.onClose(); + } + onClose(): void { + this.editPinpointUser = null; + this.outClose.emit(); + this.pinpointUserForm.reset(); + this.pinpointUserForm.get('userId').enable(); + } + get userId() { + return this.pinpointUserForm.get('userId'); + } + get name() { + return this.pinpointUserForm.get('name'); + } + get department() { + return this.pinpointUserForm.get('department'); + } + get phoneNumber() { + return this.pinpointUserForm.get('phoneNumber'); + } + get email() { + return this.pinpointUserForm.get('email'); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user-data.service.ts new file mode 100644 index 000000000000..46a45a11e1cd --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user-data.service.ts @@ -0,0 +1,67 @@ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpErrorResponse } from '@angular/common/http'; +import { Observable, throwError } from 'rxjs'; +import { catchError, tap } from 'rxjs/operators'; + +export interface IPinpointUser { + department?: string; + email: string; + name: string; + number: string; + phoneNumber: string; + userId: string; +} +export interface IPinpointUserResponse { + result: string; +} + +@Injectable() +export class PinpointUserDataService { + url = 'user.pinpoint'; + constructor(private http: HttpClient) { } + retrieve(department?: string): Observable { + return this.http.get(this.url, this.makeRequestOptionsArgs(department)).pipe( + tap((data) => { + if (data['errorCode']) { + throw data['errorMessage']; + } + }), + catchError(this.handleError) + ); + } + create(params: IPinpointUser): Observable { + return this.http.post(this.url, params).pipe( + tap(this.checkError), + catchError(this.handleError) + ); + } + update(params: IPinpointUser): Observable { + return this.http.put(this.url, params).pipe( + tap(this.checkError), + catchError(this.handleError) + ); + } + remove(userId: string): Observable { + return this.http.request('delete', this.url, { + body: { userId } + }).pipe( + tap(this.checkError), + catchError(this.handleError) + ); + } + private checkError(data: any) { + if (data['errorCode']) { + throw data['errorMessage']; + } else if (data['result'] !== 'SUCCESS') { + throw data; + } + } + private handleError(error: HttpErrorResponse | string) { + return throwError(error['statusText'] || error); + } + private makeRequestOptionsArgs(department?: string): object { + return { + params: department ? { searchKey: department } : {} + }; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user-interaction.service.ts b/web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user-interaction.service.ts new file mode 100644 index 000000000000..72f7ee0afe2f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user-interaction.service.ts @@ -0,0 +1,29 @@ +import { Injectable } from '@angular/core'; +import { Subject, Observable } from 'rxjs'; + +@Injectable() +export class PinpointUserInteractionService { + private outAdd = new Subject(); + private outUpdate = new Subject(); + private outRemove = new Subject(); + + onAdd$: Observable; + onRemove$: Observable; + onUpdate$: Observable; + + constructor() { + this.onAdd$ = this.outAdd.asObservable(); + this.onRemove$ = this.outRemove.asObservable(); + this.onUpdate$ = this.outUpdate.asObservable(); + } + setAddPinpointUser(memberId: string): void { + this.outAdd.next(memberId); + } + setRemovePinpointUser(memberId: string): void { + this.outRemove.next(memberId); + } + setUserUpdated(memberInfo: any): void { + this.outUpdate.next(memberInfo); + } +} + diff --git a/web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user.component.css b/web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user.component.css new file mode 100644 index 000000000000..1ada1e8c3f54 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user.component.css @@ -0,0 +1,33 @@ +.l-item-wrapper { + height: 28px; + margin: 0; + color: #333; + padding: 6px 15px 0px 15px; + font-size: 13px; + display: block; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} +.l-item-wrapper:hover { + background:#fff0f0; +} +.l-item-wrapper.selected { + background:#fff0f0; +} + +.l-item-wrapper > div { + float: right; +} +.l-item-wrapper .fa-trash-alt { + color: #b3b6bf; + font-size: 14px; + margin-left: 4px; +} +.l-item-wrapper .fa-check { + color: #F00; + margin-left: 10px; +} +.l-disabled { + color:#DDD; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user.component.html b/web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user.component.html new file mode 100644 index 000000000000..bb6f0ab7932f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user.component.html @@ -0,0 +1,13 @@ +
+
+ + + + +
+ ({{pinpointUser.department}}) {{pinpointUser.name}} +
diff --git a/web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user.component.ts b/web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user.component.ts new file mode 100644 index 000000000000..1f9e24d45e61 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/pinpoint-user/pinpoint-user.component.ts @@ -0,0 +1,49 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; +import { IPinpointUser } from './pinpoint-user-data.service'; + +@Component({ + selector: 'pp-pinpoint-user', + templateUrl: './pinpoint-user.component.html', + styleUrls: ['./pinpoint-user.component.css'] +}) +export class PinpointUserComponent implements OnInit { + @Input() pinpointUser: IPinpointUser; + @Input() allowedUserEdit: boolean; + @Input() isChecked = false; + @Input() isEnabled = false; + @Output() outRemove: EventEmitter = new EventEmitter(); + @Output() outAddUser: EventEmitter = new EventEmitter(); + @Output() outEditUser: EventEmitter = new EventEmitter(); + private removeConformId = ''; + private selectedPinpointUser: string; + + constructor() {} + ngOnInit() {} + onRemove(): void { + this.removeConformId = this.pinpointUser.userId; + } + onEdit(): void { + this.outEditUser.emit(this.pinpointUser.userId); + } + onAddUser(): void { + if (this.isEnableUser()) { + this.outAddUser.emit(this.pinpointUser.userId); + } + } + onCancelRemove(): void { + this.removeConformId = ''; + } + onConfirmRemove(): void { + this.outRemove.emit(this.removeConformId); + this.removeConformId = ''; + } + isRemoveTarget(): boolean { + return this.removeConformId === this.pinpointUser.userId; + } + isSelected(): boolean { + return this.selectedPinpointUser === this.pinpointUser.userId; + } + isEnableUser(): boolean { + return this.isEnabled && !this.isChecked; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/real-time/index.ts b/web/src/main/webapp/v2/src/app/core/components/real-time/index.ts new file mode 100644 index 000000000000..2148706cee40 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/real-time/index.ts @@ -0,0 +1,38 @@ +import { NgModule } from '@angular/core'; + +import { SharedModule } from 'app/shared'; +import { RealTimeChartComponent } from './real-time-chart.component'; +import { RealTimeContainerComponent } from './real-time-container.component'; +import { RealTimePagingContainerComponent } from './real-time-paging-container.component'; +import { RealTimeTotalChartComponent } from './real-time-total-chart.component'; +import { RealTimeAgentChartComponent } from './real-time-agent-chart.component'; +import { RealTimeWebSocketService } from './real-time-websocket.service'; +import { ResizeTopDirective } from './resize-top.directive'; +import { HelpViewerPopupModule } from 'app/core/components/help-viewer-popup'; + +@NgModule({ + declarations: [ + ResizeTopDirective, + RealTimeChartComponent, + RealTimeAgentChartComponent, + RealTimeTotalChartComponent, + RealTimeContainerComponent, + RealTimePagingContainerComponent + ], + imports: [ + SharedModule, + HelpViewerPopupModule + ], + exports: [ + RealTimeContainerComponent, + RealTimePagingContainerComponent + ], + entryComponents: [ + RealTimeTotalChartComponent, + RealTimeAgentChartComponent + ], + providers: [ + RealTimeWebSocketService + ] +}) +export class RealTimeModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-agent-chart.component.css b/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-agent-chart.component.css new file mode 100644 index 000000000000..4f523908b2e0 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-agent-chart.component.css @@ -0,0 +1,55 @@ +:host { + display: block; +} +.l-chart-item { + width: 152px; + height: 84px; + margin: 5px; +} +.l-chart-item dt { + color: #fff; + padding: 10px 20px 10px 2px; + display: block; + overflow: hidden; + font-size: 11px; + text-align: center; + line-height: 1em; + white-space: nowrap; + text-overflow: ellipsis; + border-bottom: 1px solid #687b8e; + background-color: #74879a; +} +i { + float: right; + cursor: pointer; + margin-right: -16px; +} +.l-chart-item dd { + display: flex; + flex-flow: row wrap; + background: #fff; + justify-content: space-around; + align-items: center; +} +.l-chart-section { + background: #fff; + border-top: 1px solid #e5e8f0; + height: 54px; + width: 100%; + position: relative; +} +.l-error-template { + width: 100%; + height: 100%; + position: absolute; + left: 0; + top: 0; + justify-content: center; + align-items: center; + z-index: 2; +} +.l-error-text { + font-size: 14px; + font-weight: 600; + color: #c04e3f; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-agent-chart.component.html b/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-agent-chart.component.html new file mode 100644 index 000000000000..d7b32273a8bc --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-agent-chart.component.html @@ -0,0 +1,17 @@ +
+
+
{{agentName}}
+
+
+ + +
+

{{errorMessage}}

+
+
+
+
+
diff --git a/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-agent-chart.component.ts b/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-agent-chart.component.ts new file mode 100644 index 000000000000..568d129f62f2 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-agent-chart.component.ts @@ -0,0 +1,23 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; +import { IRealTimeChartData } from './real-time-chart.component'; + +@Component({ + selector: 'pp-real-time-agent-chart', + templateUrl: './real-time-agent-chart.component.html', + styleUrls: ['./real-time-agent-chart.component.css'] +}) +export class RealTimeAgentChartComponent implements OnInit { + @Input() agentName: string; + @Input() hasError: boolean; + @Input() errorMessage: string; + @Input() chartData: IRealTimeChartData; + @Output() outOpenThreadDump: EventEmitter = new EventEmitter(); + + showAxis = false; + + constructor() {} + ngOnInit() {} + onOpen(): void { + this.outOpenThreadDump.emit(this.agentName); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-chart.component.css b/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-chart.component.css new file mode 100644 index 000000000000..31b579f87ed9 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-chart.component.css @@ -0,0 +1,52 @@ +:host { + display: block; + width: 100%; + height: 100%; + position: relative; +} + +.l-tooltip { + background-color: rgba(0, 0, 0, 0.8); + color: #fff; + border: 0px solid rgba(0, 0, 0, 0); + border-radius: 5px; + padding: 5px 7px; + position: absolute; + top: 110%; +} + +.l-tooltip-caret { + width: 0; + height: 0; + position: absolute; + top: calc(110% - 7px); + border-bottom: 7px solid rgba(0, 0, 0, 0.8); + border-left: 7px solid transparent; + border-right: 7px solid transparent; +} + +.l-tooltip-title { + font-size: 12px; + font-weight: 600; + margin-bottom: 2px; +} + +.l-tooltip-body { + font-size: 12px; +} + +.l-tooltip-body > dl { + display: flex; +} + +.l-tooltip-body dt { + margin-right: 5px; +} + +.l-tooltip-label { + display: inline-block; + width: 10px; + height: 10px; + margin-right: 2px; + box-shadow: inset 0px 0px 0px 1px rgba(255, 255, 255, 0.4); +} diff --git a/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-chart.component.html b/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-chart.component.html new file mode 100644 index 000000000000..5f556d032afd --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-chart.component.html @@ -0,0 +1,13 @@ + + +
+
{{tooltipDataObj.title}}
+
+
+
{{chartLabels[i]}}:
+
{{value}}
+
+
+
+
+
diff --git a/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-chart.component.ts b/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-chart.component.ts new file mode 100644 index 000000000000..57758147a3b7 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-chart.component.ts @@ -0,0 +1,204 @@ +import { Component, OnInit, ViewChild, ElementRef, Input, OnChanges, SimpleChanges, Renderer2 } from '@angular/core'; +import { Chart, ChartPoint, ChartDataSets } from 'chart.js'; +import 'chartjs-plugin-streaming'; +import * as moment from 'moment-timezone'; + +export interface IRealTimeChartData { + timeStamp: number; + responseCount: number[]; +} + +@Component({ + selector: 'pp-real-time-chart', + templateUrl: './real-time-chart.component.html', + styleUrls: ['./real-time-chart.component.css'] +}) +export class RealTimeChartComponent implements OnInit, OnChanges { + @ViewChild('real') chartElement: ElementRef; + @ViewChild('tooltip') tooltip: ElementRef; + @ViewChild('tooltipCaret') tooltipCaret: ElementRef; + @Input() showAxis: boolean; + @Input() namespace: string; + @Input() timezone: string; + @Input() dateFormat: string; + @Input() chartData: IRealTimeChartData; + + private chartObj: Chart; + private defaultYMax = 5; + + chartColors = ['#33b692', '#51afdf', '#fea63e', '#e76f4b']; + chartLabels = ['1s', '3s', '5s', 'Slow']; + showTooltip: boolean; + tooltipDataObj = { + title: '', + values: [] as number[], + }; + // private yMaxHolder: number[] = []; + + constructor( + private renderer: Renderer2, + private el: ElementRef + ) {} + ngOnChanges(changes: SimpleChanges) { + Object.keys(changes) + .filter(() => this.chartObj !== undefined) + .filter((propName: string) => { + return changes[propName].currentValue; + }) + .forEach((propName: string) => { + const changedProp = changes[propName]; + + switch (propName) { + case 'chartData': + this.updateChartData(changedProp.currentValue); + break; + } + + this.chartObj.update({ + duration: 0 + }); + }); + } + ngOnInit() { + this.chartObj = new Chart(this.chartElement.nativeElement.getContext('2d'), { + type: 'line', + data: { + labels: [], + datasets: this.chartColors.map((color: string, i: number) => { + return { + label: this.chartLabels[i], + backgroundColor: color, + borderColor: color, + borderWidth: 0.5, + fill: true, + pointRadius: 0, + pointHoverRadius: 3, + data: [] + }; + }) + }, + options: { + animation: { + duration: 0 + }, + elements: { + line: { + tension: 0 + } + }, + responsive: true, + maintainAspectRatio: false, + legend: { + display: false + }, + events: this.showAxis ? ['mousemove', 'mouseout', 'click'] : [], + hover: { + animationDuration: 0, + mode: 'index', + intersect: false, + onHover: (event: MouseEvent, elements: {[key: string]: any}[]): void => { + if (event.type !== 'mouseout' && event.offsetX >= 25 && event.offsetX <= 167) { + this.showTooltip = true; + this.setTooltipData(elements); + this.setTooltipPosition(event); + } else { + // * event.type === 'mouseout' + this.showTooltip = false; + } + } + }, + responsiveAnimationDuration: 0, + tooltips: { + enabled: false, + }, + scales: { + xAxes: [{ + type: 'realtime', + gridLines: { + display: !this.showAxis, + drawBorder: false, + tickMarkLength: 0 + }, + ticks: { + display: false + } + }], + yAxes: [{ + gridLines: { + display: this.showAxis, + drawBorder: false, + tickMarkLength: 0 + }, + ticks: { + display: this.showAxis, + beginAtZero: true, + min: 0, + max: this.defaultYMax, + padding: 5 + }, + + }] + }, + plugins: { + streaming: { + duration: 12000, // data in the past 12000 ms will be displayed + // refresh: 1000, // onRefresh callback will be called every 1000 ms + delay: 2000, // delay of 2000 ms, so upcoming values are known before plotting a line + frameRate: 30, // chart is drawn 30 times every second + // pause: false, + } + } + } + }); + } + + private setTooltipData(elements: {[key: string]: any}[]): void { + const datasets = this.chartObj.config.data.datasets; + + this.tooltipDataObj = { + title: moment((datasets[0].data[elements[0]._index] as ChartPoint).x).tz(this.timezone).format(this.dateFormat), + values: elements.map((element: {[key: string]: any}, i: number) => (datasets[i].data[element._index] as ChartPoint).y as number) + }; + } + + private setTooltipPosition(event: MouseEvent): void { + if (this.tooltip) { + const tooltipCaret = this.tooltipCaret.nativeElement; + const tooltip = this.tooltip.nativeElement; + const ratio = event.offsetX / this.el.nativeElement.offsetWidth; + + this.renderer.setStyle(tooltipCaret, 'left', event.offsetX - (tooltipCaret.offsetWidth / 2) + 'px'); + this.renderer.setStyle(tooltip, 'left', event.offsetX - (tooltip.offsetWidth * ratio) + 'px'); + } + } + + private updateChartData({timeStamp, responseCount}: {timeStamp: number, responseCount: number[]}): void { + if (responseCount.length === 0) { + this.chartObj.config.options.plugins.streaming.pause = true; + } else { + this.chartObj.config.data.datasets.forEach(function(dataset, i) { + (dataset.data as ChartPoint[]).push({ + x: timeStamp, + y: responseCount[i] + }); + }); + /** + * 1. 데이터 들어올때 마다 최댓값을 yMaxHolder에 넣음. + * 2. 11초(duration time이랑 비슷한 시간) 지날때마다 맨앞의 element 제거. + * 3. yMaxHolder의 최댓값을 yMax로 세팅. + */ + // this.yMaxHolder.push(Math.max(...responseCount)); + // setTimeout(() => { + // this.yMaxHolder.shift(); + // }, 11000); + // this.chartObj.config.options.scales.yAxes[0].ticks.max = Math.max(this.defaultYMax, Math.round(Math.max(...this.yMaxHolder) * 2)); + this.chartObj.config.options.scales.yAxes[0].ticks.max = + Math.max(...this.chartObj.data.datasets.map(function(dataset: ChartDataSets) { + return Math.max(...(dataset.data as ChartPoint[]).map(function(value) { + return value.y as number; + })); + })) >= this.defaultYMax ? undefined : this.defaultYMax; + this.chartObj.config.options.plugins.streaming.pause = false; + } + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-container.component.css b/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-container.component.css new file mode 100644 index 000000000000..331d3b0ea8d3 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-container.component.css @@ -0,0 +1,118 @@ +:host { + z-index: 30; +} +.l-thread-chart-wrap { + background: #d3dbe6; + border-top: 1px solid #ccd5e0; + position: absolute; + bottom: 0; + left: 0; + width: 100%; +} +.l-title-group { + display: flex; + flex-flow: row wrap; + color: #566370; + font-size: 14px; + font-weight: 600; + height: 34px; + padding: 0 25px; + justify-content: space-between; + align-items: center; + border-bottom: 1px solid #bdc7d5; + cursor: ns-resize; + background: #f6f8fb; +} +.l-title-group .fas { + font-size: 18px; + color: #a8acb5; + cursor: pointer; +} +.l-title-group .l-title .fas { + margin: 0 9px 0 0; + +} +.l-title-group .l-tool-box { + color: #8F9CAF; +} +.l-tool-box button { + margin-left: 10px; +} +.l-pin-up { + color: #F00; +} +.l-chart-group-wrap { + display: flex; + flex-flow: row wrap; + padding: 20px; +} +.l-chart-group-wrap > .l-chart-item { + width: calc(50% - 20px); + width: 277px; + height: 178px; + margin: 5px 10px 5px 5px; +} +.l-chart-group-wrap .l-chart-group-list { + display: flex; + flex-flow: row wrap; + flex: 1; + overflow-y: auto; + height: 100%; +} +.l-message { + top: 0px; + left: 0px; + width: 100%; + height: 100%; + position: absolute; + text-align: center; + background-color: rgba(226, 226, 226, 0.5); + z-index: 9999; +} +.l-message h4 { + padding: 80px 0 10px 0; + font-weight: 100; +} +.l-message h4 span { + padding: 8px 40px 6px 40px; + background-color: #FFF; +} +.l-retry button span { + margin-right: 6px; +} +.l-message.l-no-data h4 span { + background-color: #000; + color: #FFF; +} +.l-paging { + width: 100%; + background-color: #74879a; + color: #FFF; + font-size: 15px; + margin: 5px 5px 4px 5px; + padding: 11px; +} +.l-paging .l-txt { + font-weight: lighter; +} +.l-paging .l-txt-bold { + font-weight: bolder; + font-size: 18px; +} +.l-paging .l-page { + float: right; + cursor: pointer; + padding: 0px 6px; +} +.l-paging .l-page:hover { + color: #4b99e3; +} +.l-paging .l-page:last-child { + color: #000; + cursor: initial; + text-decoration: initial; + background-color: #FFF; +} +.fa-chart-area { + margin-right: 2px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-container.component.html b/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-container.component.html new file mode 100644 index 000000000000..2b3afd680206 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-container.component.html @@ -0,0 +1,40 @@ +
+
+
+ Realtime Active Thread Chart +
+
+ + +
+
+
+
+ +
+
+
+ Total Servers : + {{totalCount}} + [ 1 ~ {{pagingSize}} ] + {{page}} + 1 +
+ +
+ +
+

Waiting Connection...

+ +
+
+

Closed connection

+ +
+
+

This node is not WAS

+
+ +
+
+
diff --git a/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-container.component.ts new file mode 100644 index 000000000000..11a3a4401a6b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-container.component.ts @@ -0,0 +1,329 @@ +import { Component, OnInit, OnDestroy, ViewChild, ViewContainerRef, ComponentFactoryResolver } from '@angular/core'; +import { Subject } from 'rxjs'; +import { takeUntil, filter } from 'rxjs/operators'; + +import { + StoreHelperService, + WebAppSettingDataService, + NewUrlStateNotificationService, + UrlRouteManagerService, + AnalyticsService, + TRACKED_EVENT_LIST, + DynamicPopupService +} from 'app/shared/services'; +import { UrlPath, UrlPathId } from 'app/shared/models'; +import { RealTimeWebSocketService, IWebSocketResponse, IWebSocketDataResult, ResponseCode, IActiveThreadCounts } from './real-time-websocket.service'; +import { RealTimeTotalChartComponent } from './real-time-total-chart.component'; +import { RealTimeAgentChartComponent } from './real-time-agent-chart.component'; +import { HELP_VIEWER_LIST, HelpViewerPopupContainerComponent } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; + +// TODO: 나중에 공통으로 추출. +const enum MessageTemplate { + LOADING = 'LOADING', + RETRY = 'RETRY', + NO_DATA = 'NO_DATA', + NOTHING = 'NOTHING' +} + +@Component({ + selector: 'pp-real-time-container', + templateUrl: './real-time-container.component.html', + styleUrls: ['./real-time-container.component.css'] +}) +export class RealTimeContainerComponent implements OnInit, OnDestroy { + @ViewChild('totalChartPlaceHolder', { read: ViewContainerRef} ) totalChartViewContainerRef: ViewContainerRef; + @ViewChild('agentChartPlaceHolder', { read: ViewContainerRef} ) agentChartViewContainerRef: ViewContainerRef; + + private unsubscribe = new Subject(); + private applicationName = ''; + private serviceType = ''; + private totalComponentRef: any = null; + private componentRefMap: any = {}; + totalCount = 0; + pinUp = true; + lastHeight: number; + minHeight = 343; + maxHeightPadding = 50; // Header Height + timezone: string; + dateFormat: string; + hiddenComponent = true; + messageTemplate = MessageTemplate.LOADING; + constructor( + private componentFactoryResolver: ComponentFactoryResolver, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private urlRouteManagerService: UrlRouteManagerService, + private storeHelperService: StoreHelperService, + private webAppSettingDataService: WebAppSettingDataService, + private realTimeWebSocketService: RealTimeWebSocketService, + private analyticsService: AnalyticsService, + private dynamicPopupService: DynamicPopupService + ) {} + ngOnInit() { + this.lastHeight = this.webAppSettingDataService.getLayerHeight() || this.minHeight; + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe), + filter(() => { + return this.newUrlStateNotificationService.hasValue(UrlPathId.APPLICATION); + }) + ).subscribe(() => { + this.hiddenComponent = true; + this.resetState(); + this.resetAgentComponentRef(); + }); + this.connectStore(); + + this.realTimeWebSocketService.onMessage$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((response: IWebSocketResponse) => { + switch (response.type) { + case 'open': + this.onOpen(); + break; + case 'close': + this.onClose(); + break; + case 'retry': + this.onRetry(); + break; + case 'message': + this.onMessage(response.message as IWebSocketDataResult); + break; + } + }); + } + ngOnDestroy() { + this.realTimeWebSocketService.close(); + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private connectStore(): void { + this.storeHelperService.getTimezone(this.unsubscribe).subscribe((timezone: string) => { + this.timezone = timezone; + }); + this.storeHelperService.getDateFormat(this.unsubscribe, 0).subscribe((dateFormat: string) => { + this.dateFormat = dateFormat; + }); + this.storeHelperService.getServerMapTargetSelected(this.unsubscribe).pipe( + filter((target: ISelectedTarget) => { + return target && (target.isMerged === true || target.isMerged === false) ? true : false; + }) + ).subscribe((target: ISelectedTarget) => { + this.webAppSettingDataService.useActiveThreadChart().subscribe((use: boolean) => { + this.hiddenComponent = false; + const application = target.node[0].split('^'); + if (use === false) { + // this.resetState(); + // this.resetAgentComponentRef(); + this.hide(); + return; + } + if (this.pinUp === true) { + if (this.applicationName !== '') { + return; + } + } + if (target.isWAS) { + if (this.isSameWithCurrentTarget(application[0], application[1]) === false) { + // this.resetState(); + // this.resetAgentComponentRef(); + // this.hide(); + // } else { + this.applicationName = application[0]; + this.serviceType = application[1]; + if (this.realTimeWebSocketService.isOpened()) { + this.resetAgentComponentRef(); + this.startDataRequest(); + } else { + this.realTimeWebSocketService.connect(); + } + } + } else { + this.applicationName = application[0]; + this.serviceType = application[1]; + this.realTimeWebSocketService.close(); + this.stopDataRequest(); + this.resetAgentComponentRef(); + this.hide(); + } + }); + }); + } + private resetAgentComponentRef(): void { + this.totalChartViewContainerRef.clear(); + this.agentChartViewContainerRef.clear(); + this.totalComponentRef = null; + this.componentRefMap = {}; + } + private resetState() { + this.applicationName = ''; + this.serviceType = ''; + this.pinUp = true; + } + private hide() { + this.messageTemplate = MessageTemplate.NO_DATA; + } + private isSameWithCurrentTarget(applicationName: string, serviceType: string): boolean { + return (this.applicationName === applicationName && this.serviceType === serviceType); + } + private startDataRequest(): void { + this.realTimeWebSocketService.send(this.getRequestDataStr(this.applicationName)); + } + private stopDataRequest(): void { + this.realTimeWebSocketService.send(this.getRequestDataStr('')); + } + private getRequestDataStr(name: string): object { + return { + type: 'REQUEST', + command: 'activeThreadCount', + parameters: { + applicationName: name + } + }; + } + private onOpen(): void { + this.startDataRequest(); + } + private onClose(): void { + this.messageTemplate = MessageTemplate.RETRY; + } + private onRetry(): void { + this.retryConnection(); + } + private onMessage(data: IWebSocketDataResult): void { + this.messageTemplate = MessageTemplate.NOTHING; + if (data.applicationName && data.applicationName !== this.applicationName) { + return; + } + this.totalCount = Object.keys(data.activeThreadCounts).length; + this.publishData(data); + } + private setAgentChart({timeStamp, activeThreadCounts}: {timeStamp?: number, activeThreadCounts: { [key: string]: IActiveThreadCounts }}): void { + /** + * 0. MERGE (componentRefMap Key, 넘어온 데이터 Key) as Set + * 1. Set 루핑 + * 2. 넘어온 데이터 object에 대해서 hasOwnProperty(key) + * 2-1. true && componentRefMap에 없음 => init + update + * 2-2. true && componentRefMap에 존재 => update + * 2-3. false => componentRefMap에서 delete, viewContainer에서 지움(.remove(index)) + */ + const mergedKeySet = new Set([...Object.keys(this.componentRefMap), ...Object.keys(activeThreadCounts)]); + + mergedKeySet.forEach((agentName: string) => { + if (activeThreadCounts.hasOwnProperty(agentName)) { + if (typeof this.componentRefMap[agentName] === 'undefined') { + this.initAgentComponent(agentName); + } + const componentInstance = this.componentRefMap[agentName].componentRef.instance; + const isResponseSuccess = activeThreadCounts[agentName].code === ResponseCode.SUCCESS; + + componentInstance.agentName = agentName; + componentInstance.hasError = isResponseSuccess ? false : true; + componentInstance.errorMessage = isResponseSuccess ? '' : activeThreadCounts[agentName].message; + componentInstance.chartData = { + timeStamp, + responseCount: isResponseSuccess ? activeThreadCounts[agentName].status : [] + }; + } else { + this.componentRefMap[agentName].unsubscription.unsubscribe(); + this.agentChartViewContainerRef.remove(this.componentRefMap[agentName].index); + delete this.componentRefMap[agentName]; + } + }); + } + private setTotalChart({timeStamp, applicationName, activeThreadCounts}: {timeStamp?: number, applicationName?: string, activeThreadCounts: { [key: string]: IActiveThreadCounts }}): void { + if (this.totalComponentRef === null) { + this.initTotalComponent(); + } + const componentInstance = this.totalComponentRef.instance; + const successData = this.getSuccessData(activeThreadCounts); + + componentInstance.applicationName = applicationName ? applicationName : this.applicationName; + componentInstance.hasError = successData.length === 0 ? true : false; + componentInstance.errorMessage = successData.length === 0 ? activeThreadCounts[Object.keys(activeThreadCounts)[0]].message : ''; + componentInstance.timezone = this.timezone; + componentInstance.dateFormat = this.dateFormat; + componentInstance.chartData = { + timeStamp, + responseCount: successData.length === 0 ? [] : this.getTotalResponseCount(successData) + }; + } + private getSuccessData(obj: { [key: string]: IActiveThreadCounts }): IActiveThreadCounts[] { + return Object.keys(obj) + .filter((agentName: string) => obj[agentName].code === ResponseCode.SUCCESS) + .map((agentName: string) => obj[agentName]); + } + private getTotalResponseCount(data: IActiveThreadCounts[]): number[] { + return data.reduce((prev: number[], curr: IActiveThreadCounts) => { + return prev.map((a: number, i: number) => a + curr.status[i]); + }, [0, 0, 0, 0]); + } + private publishData(data: IWebSocketDataResult): void { + this.setTotalChart(data); + this.setAgentChart(data); + } + private initTotalComponent(): void { + const componentFactory = this.componentFactoryResolver.resolveComponentFactory(RealTimeTotalChartComponent); + this.totalComponentRef = this.totalChartViewContainerRef.createComponent(componentFactory); + } + private initAgentComponent(namespace: string) { + const componentFactory = this.componentFactoryResolver.resolveComponentFactory(RealTimeAgentChartComponent); + const componentRef = this.agentChartViewContainerRef.createComponent(componentFactory); + const unsubscription = componentRef.instance.outOpenThreadDump.subscribe((agentId: string) => { + this.openThreadDump(agentId); + }); + + this.componentRefMap[namespace] = { + componentRef: componentRef, + index: this.agentChartViewContainerRef.length - 1, + unsubscription: unsubscription + }; + } + needPaging(): boolean { + return this.totalCount > this.realTimeWebSocketService.getPagingSize(); + } + getTotalPage(): number[] { + const totalPage = Math.ceil(this.totalCount / this.realTimeWebSocketService.getPagingSize()); + const pages = []; + for (let i = totalPage ; i > 1 ; i-- ) { + pages.push(i); + } + return pages; + } + retryConnection(): void { + this.messageTemplate = MessageTemplate.LOADING; + this.realTimeWebSocketService.connect(); + } + onPinUp(): void { + this.analyticsService.trackEvent(this.pinUp ? TRACKED_EVENT_LIST.PIN_UP_REAL_TIME_CHART : TRACKED_EVENT_LIST.REMOVE_PIN_ON_REAL_TIME_CHART); + this.pinUp = !this.pinUp; + } + openPage(page: number): void { + this.urlRouteManagerService.openPage([ + UrlPath.REAL_TIME, + this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getUrlStr(), + '' + page + ]); + } + openThreadDump(agentId: string): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.OPEN_THREAD_DUMP); + this.urlRouteManagerService.openPage([ + UrlPath.THREAD_DUMP, + this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getUrlStr(), + agentId, + '' + Date.now() + ]); + } + onShowHelp($event: MouseEvent): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.TOGGLE_HELP_VIEWER, HELP_VIEWER_LIST.REAL_TIME); + const {left, top, width, height} = ($event.target as HTMLElement).getBoundingClientRect(); + + this.dynamicPopupService.openPopup({ + data: HELP_VIEWER_LIST.REAL_TIME, + coord: { + coordX: left + width / 2, + coordY: top + height / 2 + }, + component: HelpViewerPopupContainerComponent + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-paging-container.component.css b/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-paging-container.component.css new file mode 100644 index 000000000000..ce04f966de8a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-paging-container.component.css @@ -0,0 +1,77 @@ +:host { + z-index: 30; +} +.l-thread-chart-wrap { + display: flex; + flex-flow: row wrap; + background:#d3dbe6; + border-top:1px solid #ccd5e0; + position: absolute; + bottom: 0; + left: 0; + width:100%; + height: 100%; +} +.l-chart-group-wrap { + display: flex; + flex-flow: row wrap; +} +.l-chart-group-list { + display: flex; + flex-flow: row wrap; + width: 100%; +} +.l-message { + top: 0px; + left: 0px; + width: 100%; + height: 100%; + position: absolute; + text-align: center; + background-color: rgba(226, 226, 226, 0.5); + z-index: 9999; +} +.l-message h4 { + padding: 80px 0 10px 0; + font-weight: 100; +} +.l-message h4 span { + padding: 8px 40px 6px 40px; + background-color: #FFF; +} +.l-retry button span { + margin-right: 6px; +} +.l-message.l-no-data h4 span { + background-color: #000; + color: #FFF; +} +.l-paging { + width: 100%; + background-color: #74879a; + color: #FFF; + font-size: 15px; + margin: 5px 5px 4px 5px; + padding: 11px; +} +.l-paging .l-txt { + font-weight: lighter; +} +.l-paging .l-txt-bold { + font-weight: bolder; + font-size: 18px; +} +.l-paging .l-page { + float: right; + cursor: pointer; + padding: 0px 6px; +} +.l-paging .l-page:hover { + color: #4b99e3; +} +.l-paging .l-page:last-child { + color: #000; + cursor: initial; + text-decoration: initial; + background-color:#FFF; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-paging-container.component.html b/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-paging-container.component.html new file mode 100644 index 000000000000..8f87ef7629de --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-paging-container.component.html @@ -0,0 +1,26 @@ +
+
+
+
+ Total Servers : + {{totalCount}} + [ {{startCount + 1}} ~ {{endCount}} ] +
+ +
+ +
+

Waiting Connection...

+ +
+
+

Closed connection

+ +
+
+

This node is not WAS

+
+ +
+
+
diff --git a/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-paging-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-paging-container.component.ts new file mode 100644 index 000000000000..471ac40e5a70 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-paging-container.component.ts @@ -0,0 +1,182 @@ +import { Component, OnInit, OnDestroy, ViewChild, ViewContainerRef, ComponentFactoryResolver } from '@angular/core'; +import { Subject } from 'rxjs'; +import { takeUntil, filter } from 'rxjs/operators'; + +import { UrlPathId } from 'app/shared/models'; +import { WebAppSettingDataService, NewUrlStateNotificationService } from 'app/shared/services'; +import { RealTimeWebSocketService, IWebSocketResponse, IWebSocketDataResult, ResponseCode, IActiveThreadCounts } from './real-time-websocket.service'; +import { RealTimeAgentChartComponent } from './real-time-agent-chart.component'; + +// TODO: 나중에 공통으로 추출. +const enum MessageTemplate { + LOADING = 'LOADING', + RETRY = 'RETRY', + NO_DATA = 'NO_DATA', + NOTHING = 'NOTHING' +} + +@Component({ + selector: 'pp-real-time-paging-container', + templateUrl: './real-time-paging-container.component.html', + styleUrls: ['./real-time-paging-container.component.css'] +}) +export class RealTimePagingContainerComponent implements OnInit, OnDestroy { + @ViewChild('agentChartPlaceHolder', { read: ViewContainerRef} ) agentChartViewContainerRef: ViewContainerRef; + + private unsubscribe = new Subject(); + private applicationName = ''; + private serviceType = ''; + private componentRefMap: any = {}; + totalCount = 0; + startCount: number; + endCount: number; + currentPage: number; + messageTemplate = MessageTemplate.LOADING; + constructor( + private componentFactoryResolver: ComponentFactoryResolver, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private webAppSettingDataService: WebAppSettingDataService, + private realTimeWebSocketService: RealTimeWebSocketService + ) {} + ngOnInit() { + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe), + filter(() => { + return this.newUrlStateNotificationService.hasValue(UrlPathId.APPLICATION); + }) + ).subscribe(() => { + this.applicationName = this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getApplicationName(); + this.serviceType = this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getServiceType(); + this.currentPage = Number.parseInt(this.newUrlStateNotificationService.getPathValue(UrlPathId.PAGE)); + this.startCount = this.currentPage * (this.realTimeWebSocketService.getPagingSize() - 1); + this.endCount = this.startCount + this.realTimeWebSocketService.getPagingSize(); + + this.webAppSettingDataService.useActiveThreadChart().subscribe((use: boolean) => { + if (use === false) { + this.resetState(); + this.resetAgentComponentRef(); + this.hide(); + return; + } + if (this.realTimeWebSocketService.isOpened()) { + this.resetAgentComponentRef(); + this.startDataRequest(); + } else { + this.realTimeWebSocketService.connect(); + } + }); + }); + this.realTimeWebSocketService.onMessage$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((response: IWebSocketResponse) => { + switch (response.type) { + case 'open': + this.onOpen(); + break; + case 'close': + this.onClose(); + break; + case 'retry': + this.onRetry(); + break; + case 'message': + this.onMessage(response.message as IWebSocketDataResult); + break; + } + }); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private resetAgentComponentRef(): void { + this.agentChartViewContainerRef.clear(); + this.componentRefMap = {}; + } + private resetState() { + this.applicationName = ''; + this.serviceType = ''; + } + private hide() { + this.messageTemplate = MessageTemplate.NO_DATA; + } + private startDataRequest(): void { + this.realTimeWebSocketService.send(this.getRequestDataStr(this.applicationName)); + } + private getRequestDataStr(name: string): object { + return { + type: 'REQUEST', + command: 'activeThreadCount', + parameters: { + applicationName: name + } + }; + } + private onOpen(): void { + this.startDataRequest(); + } + private onClose(): void { + this.messageTemplate = MessageTemplate.RETRY; + } + private onRetry(): void { + this.retryConnection(); + } + private onMessage(data: IWebSocketDataResult): void { + this.messageTemplate = MessageTemplate.NOTHING; + if (data.applicationName && data.applicationName !== this.applicationName) { + return; + } + this.totalCount = Object.keys(data.activeThreadCounts).length; + this.publishData(data); + } + private setAgentChart({timeStamp, activeThreadCounts}: {timeStamp?: number, activeThreadCounts: { [key: string]: IActiveThreadCounts }}): void { + const mergedKeySet = new Set([...Object.keys(this.componentRefMap), ...Object.keys(activeThreadCounts)]); + + mergedKeySet.forEach((agentName: string) => { + if (activeThreadCounts.hasOwnProperty(agentName)) { + if (typeof this.componentRefMap[agentName] === 'undefined') { + this.initAgentComponent(agentName); + } + const componentInstance = this.componentRefMap[agentName].componentRef.instance; + const isResponseSuccess = activeThreadCounts[agentName].code === ResponseCode.SUCCESS; + + componentInstance.agentName = agentName; + componentInstance.hasError = isResponseSuccess ? false : true; + componentInstance.errorMessage = isResponseSuccess ? '' : activeThreadCounts[agentName].message; + componentInstance.chartData = { + timeStamp, + responseCount: isResponseSuccess ? activeThreadCounts[agentName].status : [] + }; + } else { + this.agentChartViewContainerRef.remove(this.componentRefMap[agentName].index); + delete this.componentRefMap[agentName]; + } + }); + } + private publishData(data: IWebSocketDataResult): void { + this.setAgentChart(data); + } + private initAgentComponent(namespace: string) { + const componentFactory = this.componentFactoryResolver.resolveComponentFactory(RealTimeAgentChartComponent); + const componentRef = this.agentChartViewContainerRef.createComponent(componentFactory); + this.componentRefMap[namespace] = { + componentRef: componentRef, + index: this.agentChartViewContainerRef.length - 1 + }; + } + needPaging(): boolean { + return this.totalCount > this.realTimeWebSocketService.getPagingSize(); + } + getTotalPage(): number[] { + const totalPage = Math.ceil(this.totalCount / this.realTimeWebSocketService.getPagingSize()); + const pages = []; + for (let i = totalPage ; i > 1 ; i-- ) { + pages.push(i); + } + return pages; + } + retryConnection(): void { + this.messageTemplate = MessageTemplate.LOADING; + this.realTimeWebSocketService.connect(); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-total-chart.component.css b/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-total-chart.component.css new file mode 100644 index 000000000000..1ae408e5b373 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-total-chart.component.css @@ -0,0 +1,93 @@ +:host { + display: block; +} +.l-wrapper dt { + color:#fff; + padding: 15px 4px; + display: block; + overflow: hidden; + font-size: 15px; + text-align:center; + line-height: 1em; + white-space: nowrap; + text-overflow: ellipsis; + border-bottom: 1px solid #687b8e; + background-color: #74879a; +} +.l-wrapper dd { + display: flex; + flex-flow: row wrap; + background:#fff; + justify-content:space-around; + align-items:center; + height: 135px; +} +.l-chart-section { + width: 180px; + height: 110px; + border-top: none; + padding: unset; + position: relative; +} +.l-error-template { + width: 100%; + height: 100%; + position: absolute; + left: 0; + top: 0; + justify-content: center; + align-items: center; + z-index: 2; +} +.l-error-text { + font-size: 14px; + font-weight: 600; + color: #c04e3f; +} +.l-legend { + font-size:11px; + width: 70px; + height: 110px; +} +.l-legend li { + margin:7px 0 0; + color:#666; +} +.l-legend li:first-child { + margin:0; + color:#010101; + font-weight:600; +} +.l-legend li span { + display:inline-block; +} +.l-legend li .l-text { + width:30px; + text-align:right; + margin:0 10px 0 0; +} +.l-legend li .l-circle { + width:21px; + height:11px; + color:#fff; + border-radius:10px; + text-align:center; + overflow: hidden; + text-overflow: ellipsis; + line-height: 1em; +} +.l-legend li:nth-child(1) .l-circle { + background:#a8acb5 +} +.l-legend li:nth-child(2) .l-circle { + background:#e76f4b +} +.l-legend li:nth-child(3) .l-circle { + background:#fea63e +} +.l-legend li:nth-child(4) .l-circle { + background:#51afdf +} +.l-legend li:nth-child(5) .l-circle { + background:#33b692 +} diff --git a/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-total-chart.component.html b/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-total-chart.component.html new file mode 100644 index 000000000000..88a4c1f25ef7 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-total-chart.component.html @@ -0,0 +1,39 @@ +
+
{{applicationName}}
+
+
+ + +
+

{{errorMessage}}

+
+
+
    +
  • + Total + {{getTotalCount()}} +
  • +
  • + Slow + {{chartData.responseCount[3]}} +
  • +
  • + 5s + {{chartData.responseCount[2]}} +
  • +
  • + 3s + {{chartData.responseCount[1]}} +
  • +
  • + 1s + {{chartData.responseCount[0]}} +
  • +
+
+
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-total-chart.component.ts b/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-total-chart.component.ts new file mode 100644 index 000000000000..2d17ddcc156d --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-total-chart.component.ts @@ -0,0 +1,23 @@ +import { Component, OnInit, Input } from '@angular/core'; +import { IRealTimeChartData } from './real-time-chart.component'; + +@Component({ + selector: 'pp-real-time-total-chart', + templateUrl: './real-time-total-chart.component.html', + styleUrls: ['./real-time-total-chart.component.css'] +}) +export class RealTimeTotalChartComponent implements OnInit { + @Input() applicationName: string; + @Input() hasError: boolean; + @Input() errorMessage: string; + @Input() timezone: string; + @Input() dateFormat: string; + @Input() chartData: IRealTimeChartData; + + showAxis = true; + constructor() {} + ngOnInit() {} + getTotalCount(): number { + return this.chartData.responseCount.reduce((prev: number, curr: number) => prev + curr, 0); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-websocket.service.ts b/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-websocket.service.ts new file mode 100644 index 000000000000..bf867197c398 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/real-time/real-time-websocket.service.ts @@ -0,0 +1,242 @@ +import { Injectable } from '@angular/core'; +import { Subject, Observable, of, throwError } from 'rxjs'; +import { WebSocketSubject, WebSocketSubjectConfig } from 'rxjs/webSocket'; +import { timeout, catchError, map, filter } from 'rxjs/operators'; + +import { WindowRefService } from 'app/shared/services'; + +interface IWebSocketData { + type: ResponseType; + command: string; + result: IWebSocketDataResult; +} + +export interface IWebSocketDataResult { + timeStamp?: number; + applicationName?: string; + activeThreadCounts: { [key: string]: IActiveThreadCounts }; +} + +export interface IActiveThreadCounts { + code: number; + message: string; + status?: number[]; +} + +export interface IWebSocketResponse { + type: string; + message: string | IWebSocketDataResult; +} + +export const enum ResponseType { + PING = 'PING', + RESPONSE = 'RESPONSE' +} + +export const enum ResponseCode { + SUCCESS = 0, + TIMEOUT = 211, + ERROR_BLACK = 111, + OVER_DELAY = 9999 +} + +@Injectable() +export class RealTimeWebSocketService { + private url = 'agent/activeThread.pinpointws'; + private timeoutLimit = 10; // 서버로부터의 timeout response를 무시하는 최대횟수 + private timeoutCount: { [key: string]: number } = {}; // 각 agent별 timeout된 횟수 + private delayLimit = 10000; // 서버로부터의 응답을 기다리는 최대시간(ms) + private prevData: { [key: string]: IActiveThreadCounts } = {}; // Success일때의 데이터({ code, message, status })를 킵 + + private retryTimeout = 3000; + private retryCount = 0; + private maxRetryCount = 1; + private connectTime: number; + private isOpen = false; + private pagingSize = 30; + + private socket$: WebSocketSubject = null; + + private outMessage: Subject = new Subject(); + onMessage$: Observable; + + constructor( + private windowRefService: WindowRefService + ) { + this.onMessage$ = this.outMessage.asObservable(); + } + connect(): void { + if (this.isOpen === false) { + this.openWebSocket(); + } + } + isOpened(): boolean { + return this.isOpen; + } + close(): void { + if (this.isOpen) { + this.socket$.complete(); + } else { + this.outMessage.next({ + type: 'close', + message: '' + }); + } + } + send(message: object): void { + if (this.isOpen) { + this.socket$.next(message); + } + } + getPagingSize(): number { + return this.pagingSize; + } + private openWebSocket(): void { + const location = this.windowRefService.nativeWindow.location; + const protocol = location.protocol.indexOf('https') === -1 ? 'ws' : 'wss'; + const url = `${protocol}://${location.host}/${this.url}`; + + this.socket$ = new WebSocketSubject({ + url: url, + openObserver: { + next: () => { + this.isOpen = true; + this.connectTime = Date.now(); + this.outMessage.next({ + type: 'open', + message: event.toString() + }); + } + }, + closeObserver: { + next: () => { + this.onCloseEvents(); + } + } + } as WebSocketSubjectConfig); + + this.socket$.pipe( + filter((message: IWebSocketData) => { + return message.type === ResponseType.PING ? (this.send({ type: 'PONG' }), false) : true; + }), + map(({result}: {result: IWebSocketDataResult}) => { + return this.parseResult(result); + }), + // map(({timeStamp, applicationName}) => { + // const activeThreadCounts = {}; + // for (let i = 0; i < 30; i++) { + // activeThreadCounts[i] = { + // code: 0, + // message: 'OK', + // status: [ + // Math.floor(2 * Math.random()), + // Math.floor(3 * Math.random()), + // Math.floor(1 * Math.random()), + // Math.floor(4 * Math.random()) + // ] + // }; + // } + // return { + // timeStamp, + // applicationName, + // activeThreadCounts + // }; + // }), + timeout(this.delayLimit), + catchError((err: any) => err.name === 'TimeoutError' ? this.onTimeout() : throwError(err)), + filter((message: IWebSocketDataResult | null) => { + return !!message; + }), + ).subscribe((message: IWebSocketDataResult) => { + this.outMessage.next({ + type: 'message', + message: message + }); + }, (err: any) => { + console.log(err); + this.closed(); + }, () => { + console.log('Complete'); + this.closed(); + }); + } + + private parseResult(result: IWebSocketDataResult): IWebSocketDataResult { + const activeThreadCounts = Object.keys(result.activeThreadCounts).reduce((prev: IWebSocketDataResult, curr: string) => { + const responseCode = result.activeThreadCounts[curr].code; + let agentData: IActiveThreadCounts; + + switch (responseCode) { + case ResponseCode.SUCCESS: + this.timeoutCount[curr] = 0; + this.prevData[curr] = result.activeThreadCounts[curr]; + agentData = result.activeThreadCounts[curr]; + break; + case ResponseCode.TIMEOUT: + this.timeoutCount[curr] = this.timeoutCount[curr] ? this.timeoutCount[curr] + 1 : 1; + agentData = this.prevData[curr] && this.timeoutCount[curr] < this.timeoutLimit ? this.prevData[curr] : result.activeThreadCounts[curr]; + break; + default: + agentData = result.activeThreadCounts[curr]; + break; + } + return { + ...prev, + ...{ [curr]: agentData } + }; + }, {}); + + return { ...result, ...{ activeThreadCounts } }; + } + + private onTimeout(): Observable { + this.close(); + return this.getDelayMessage(); + } + + private getDelayMessage(): Observable { + const delayObj = { + code: ResponseCode.OVER_DELAY, + message: 'No Response' + }; + + if (Object.keys(this.prevData).length !== 0) { + return of({ + activeThreadCounts: Object.keys(this.prevData).reduce((prev: IWebSocketDataResult, curr: string) => { + return { + ...prev, + ...{ [curr]: delayObj } + }; + }, {}) + }); + } else { + return of(null); + } + } + + private closed(): void { + this.isOpen = false; + this.socket$ = null; + this.outMessage.next({ + type: 'close', + message: '' + }); + } + + private onCloseEvents(): void { + if (Date.now() - this.connectTime < this.retryTimeout) { + if (this.retryCount < this.maxRetryCount) { + this.retryCount++; + this.outMessage.next({ + type: 'retry', + message: '' + }); + } else { + this.outMessage.next({ + type: 'close', + message: '' + }); + } + } + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/real-time/resize-top.directive.ts b/web/src/main/webapp/v2/src/app/core/components/real-time/resize-top.directive.ts new file mode 100644 index 000000000000..28923164c511 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/real-time/resize-top.directive.ts @@ -0,0 +1,61 @@ +import { Directive, ElementRef, OnInit, OnDestroy, Renderer2, Input, HostListener } from '@angular/core'; + +import { WindowRefService, WebAppSettingDataService } from 'app/shared/services'; + +@Directive({ + selector: '[ppResizeTop]' +}) +export class ResizeTopDirective implements OnInit, OnDestroy { + @Input() minHeight: number; + @Input() maxHeightPadding: number; + private resizeElement: HTMLElement; + private maxHeight: number; + private dragging = false; + constructor( + private elementRef: ElementRef, + private renderer: Renderer2, + private webAppSettingDataService: WebAppSettingDataService, + private windowRefService: WindowRefService + ) { + this.resizeElement = this.elementRef.nativeElement.parentElement; + this.maxHeight = this.windowRefService.nativeWindow.innerHeight; + this.windowRefService.nativeWindow.addEventListener('mouseup', this.onWindowMouseUp.bind(this)); + this.windowRefService.nativeWindow.addEventListener('mousemove', this.onWindowMouseMove.bind(this)); + } + ngOnInit() { + this.maxHeight = this.windowRefService.nativeWindow.innerHeight - this.maxHeightPadding; + } + ngOnDestroy() { + this.windowRefService.nativeWindow.removeEventListener('mouseup', this.onWindowMouseUp); + this.windowRefService.nativeWindow.removeEventListener('mousemove', this.onWindowMouseMove); + } + onWindowMouseUp($event: MouseEvent): void { + this.dragging = false; + } + onWindowMouseMove($event: MouseEvent): void { + if (this.dragging) { + this.resizeOn(-$event.movementY); + } + } + @HostListener('mousedown', ['$event']) onMouseDown($event) { + this.dragging = true; + } + @HostListener('mousemove', ['$event']) onMouseMove($event: MouseEvent) { + if (this.dragging) { + this.resizeOn(-$event.movementY); + } + } + @HostListener('mouseup') onMouseUp() { + this.dragging = false; + } + resizeOn(y: number): void { + if (y !== 0) { + const nextHeight = (Number.parseInt(this.resizeElement.style.height, 10) || this.minHeight) + y; + if (nextHeight >= this.minHeight && nextHeight <= this.maxHeight) { + this.webAppSettingDataService.setLayerHeight(nextHeight); + this.renderer.setStyle(this.resizeElement, 'height', nextHeight + 'px'); + + } + } + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/index.ts b/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/index.ts new file mode 100644 index 000000000000..8ddabcfaa461 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/index.ts @@ -0,0 +1,28 @@ +import { NgModule } from '@angular/core'; + +import { SharedModule } from 'app/shared'; +import { ResponseSummaryChartComponent } from './response-summary-chart.component'; +import { ResponseSummaryChartForSideBarContainerComponent } from './response-summary-chart-for-side-bar-container.component'; +import { ResponseSummaryChartForInfoPerServerContainerComponent } from './response-summary-chart-for-info-per-server-container.component'; +import { ResponseSummaryChartForFilteredMapSideBarContainerComponent } from './response-summary-chart-for-filtered-map-side-bar-container.component'; +import { HelpViewerPopupModule } from 'app/core/components/help-viewer-popup'; + +@NgModule({ + declarations: [ + ResponseSummaryChartComponent, + ResponseSummaryChartForSideBarContainerComponent, + ResponseSummaryChartForFilteredMapSideBarContainerComponent, + ResponseSummaryChartForInfoPerServerContainerComponent + ], + imports: [ + SharedModule, + HelpViewerPopupModule + ], + exports: [ + ResponseSummaryChartForSideBarContainerComponent, + ResponseSummaryChartForFilteredMapSideBarContainerComponent, + ResponseSummaryChartForInfoPerServerContainerComponent + ], + providers: [] +}) +export class ResponseSummaryChartModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart-for-filtered-map-side-bar-container.component.css b/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart-for-filtered-map-side-bar-container.component.css new file mode 100644 index 000000000000..099907bb7fd6 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart-for-filtered-map-side-bar-container.component.css @@ -0,0 +1,34 @@ +:host { + display: block; + position: relative; +} +.l-chart-item { + height: 202px; +} +.l-tool-box { + font-size: 14px; + color: #b3b5b9; + text-align: right; + position: relative; + padding: 16px 25px 0; +} +.l-tool-box .l-title { + float: left; + text-align: left; + font-size: 16px; + color: #333; + font-weight: 600; + margin: 0 0 23px; +} +.l-tool-box button { + font-size: 18px; + margin: 0; +} +.l-content-section { + padding: 0 25px 0; +} +.l-no-data { + padding-top: 60px; + text-align: center; + font-weight: 600; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart-for-filtered-map-side-bar-container.component.html b/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart-for-filtered-map-side-bar-container.component.html new file mode 100644 index 000000000000..45c22260aebd --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart-for-filtered-map-side-bar-container.component.html @@ -0,0 +1,20 @@ +
+
+

Response Summary

+ +
+
+ + +
+ {{i18nText.NO_DATA}} +
+
+
+ + \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart-for-filtered-map-side-bar-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart-for-filtered-map-side-bar-container.component.ts new file mode 100644 index 000000000000..202756083517 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart-for-filtered-map-side-bar-container.component.ts @@ -0,0 +1,156 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { Subject } from 'rxjs'; +import { filter } from 'rxjs/operators'; +import { TranslateService } from '@ngx-translate/core'; + +import { Actions } from 'app/shared/store'; +import { StoreHelperService, WebAppSettingDataService, AgentHistogramDataService, AnalyticsService, TRACKED_EVENT_LIST, DynamicPopupService } from 'app/shared/services'; +import { ServerMapData } from 'app/core/components/server-map/class/server-map-data.class'; +import { HELP_VIEWER_LIST, HelpViewerPopupContainerComponent } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; + +@Component({ + selector: 'pp-response-summary-chart-for-filtered-map-side-bar-container', + templateUrl: './response-summary-chart-for-filtered-map-side-bar-container.component.html', + styleUrls: ['./response-summary-chart-for-filtered-map-side-bar-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ResponseSummaryChartForFilteredMapSideBarContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + yMax = -1; + selectedTarget: ISelectedTarget; + selectedAgent = ''; + serverMapData: ServerMapData; + hiddenComponent = false; + hiddenChart = false; + useDisable = false; + showLoading = false; + i18nText = { + NO_DATA: '' + }; + chartData: IResponseTime | IResponseMilliSecondTime; + chartColors: string[]; + constructor( + private changeDetector: ChangeDetectorRef, + private translateService: TranslateService, + private storeHelperService: StoreHelperService, + private webAppSettingDataService: WebAppSettingDataService, + private agentHistogramDataService: AgentHistogramDataService, + private analyticsService: AnalyticsService, + private dynamicPopupService: DynamicPopupService + ) {} + ngOnInit() { + this.chartColors = this.webAppSettingDataService.getColorByRequest(); + this.translateService.get('COMMON.NO_DATA').subscribe((txt: string) => { + this.i18nText.NO_DATA = txt; + }); + this.connectStore(); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private connectStore(): void { + this.storeHelperService.getAgentSelection(this.unsubscribe).subscribe((agent: string) => { + this.setDisable(true); + this.selectedAgent = agent; + if (this.selectedTarget) { + this.loadResponseSummaryChartData(); + } + this.changeDetector.detectChanges(); + }); + this.storeHelperService.getServerMapData(this.unsubscribe).subscribe((serverMapData: ServerMapData) => { + this.serverMapData = serverMapData; + if (this.selectedTarget && this.selectedTarget.isMerged === false) { + this.yMax = -1; + this.loadResponseSummaryChartData(); + } + }); + this.storeHelperService.getServerMapTargetSelected(this.unsubscribe).pipe( + filter((target: ISelectedTarget) => { + return target && (target.isNode === true || target.isNode === false) ? true : false; + }) + ).subscribe((target: ISelectedTarget) => { + this.yMax = -1; + this.selectedTarget = target; + this.hiddenComponent = target.isMerged; + if (target.isMerged === false) { + this.loadResponseSummaryChartData(); + } + this.changeDetector.detectChanges(); + }); + this.storeHelperService.getServerMapTargetSelectedByList(this.unsubscribe).subscribe((target: any) => { + this.yMax = -1; + this.hiddenComponent = false; + this.passDownChartData(this.agentHistogramDataService.makeChartDataForResponseSummary(target.histogram, this.getChartYMax())); + }); + } + private getChartYMax(): number { + return this.yMax === -1 ? null : this.yMax; + } + private setDisable(disable: boolean): void { + this.useDisable = disable; + this.showLoading = disable; + } + private loadResponseSummaryChartData(from?: number, to?: number): void { + const target = this.getTargetInfo(); + if (this.selectedAgent === '') { + this.passDownChartData(this.agentHistogramDataService.makeChartDataForResponseSummary(target.histogram, this.getChartYMax())); + } else { + this.passDownChartData(this.agentHistogramDataService.makeChartDataForResponseSummary(target['agentHistogram'][this.selectedAgent], this.getChartYMax())); + } + } + private passDownChartData(chartData: any): void { + if (chartData) { + this.hiddenChart = false; + this.chartData = chartData; + } else { + this.hiddenChart = true; + } + this.setDisable(false); + this.changeDetector.detectChanges(); + } + private getTargetInfo(): any { + if (this.selectedTarget.isNode) { + return this.serverMapData.getNodeData(this.selectedTarget.node[0]); + } else { + // return this.serverMapData.getNodeData(this.serverMapData.getLinkData(this.selectedTarget.link[0]).to); + return this.serverMapData.getLinkData(this.selectedTarget.link[0]); + } + } + onNotifyMax(max: number): void { + if (max > this.yMax) { + this.yMax = max; + this.storeHelperService.dispatch(new Actions.ChangeResponseSummaryChartYMax(max)); + } + } + onClickColumn(columnName: string): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.CLICK_RESPONSE_GRAPH); + console.log('clicked Column Name :', columnName ); + if (columnName === 'Error') { + // scope.$emit('responseTimeSummaryChartDirective.showErrorTransactionList', type); + // @TODO Scatter Chart의 에러 부분만 Drag 하도록 하는 액션 + } + // @TODO FilteredMap transaction에서 만 처리되는 이벤트 + // if (useFilterTransaction) { + // scope.$emit('responseTimeSummaryChartDirective.itemClicked.' + scope.namespace, { + // "responseTime": type, + // "count": aTarget[0]._chart.config.data.datasets[0].data[aTarget[0]._index] + // }); + // } + + } + + onShowHelp($event: MouseEvent): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.TOGGLE_HELP_VIEWER, HELP_VIEWER_LIST.RESPONSE_SUMMARY); + const {left, top, width, height} = ($event.target as HTMLElement).getBoundingClientRect(); + + this.dynamicPopupService.openPopup({ + data: HELP_VIEWER_LIST.RESPONSE_SUMMARY, + coord: { + coordX: left + width / 2, + coordY: top + height / 2 + }, + component: HelpViewerPopupContainerComponent + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart-for-info-per-server-container.component.css b/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart-for-info-per-server-container.component.css new file mode 100644 index 000000000000..fce05d97d0ac --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart-for-info-per-server-container.component.css @@ -0,0 +1,33 @@ +:host { + display: block; +} +.l-chart-item { + height: 202px; +} +.l-tool-box { + font-size: 14px; + color: #b3b5b9; + text-align: right; + position: relative; + padding: 16px 25px 0; +} +.l-tool-box .l-title { + float: left; + text-align: left; + font-size: 16px; + color: #333; + font-weight: 600; + margin: 0 0 23px; +} +.l-tool-box button { + font-size: 18px; + margin: 0; +} +.l-content-section { + padding: 0 25px 0; +} +.l-no-data { + padding-top: 60px; + text-align: center; + font-weight: 600; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart-for-info-per-server-container.component.html b/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart-for-info-per-server-container.component.html new file mode 100644 index 000000000000..4e1c8ee16a9e --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart-for-info-per-server-container.component.html @@ -0,0 +1,20 @@ +
+
+

Response Summary

+ +
+
+ + +
+ {{i18nText.NO_DATA}} +
+
+
+ + \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart-for-info-per-server-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart-for-info-per-server-container.component.ts new file mode 100644 index 000000000000..5f463539f588 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart-for-info-per-server-container.component.ts @@ -0,0 +1,93 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { Subject } from 'rxjs'; +import { filter } from 'rxjs/operators'; +import { TranslateService } from '@ngx-translate/core'; + +import { WebAppSettingDataService, StoreHelperService, AgentHistogramDataService, AnalyticsService, TRACKED_EVENT_LIST, DynamicPopupService } from 'app/shared/services'; +import { HELP_VIEWER_LIST, HelpViewerPopupContainerComponent } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; + +@Component({ + selector: 'pp-response-summary-chart-for-info-per-server-container', + templateUrl: './response-summary-chart-for-info-per-server-container.component.html', + styleUrls: ['./response-summary-chart-for-info-per-server-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ResponseSummaryChartForInfoPerServerContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + hiddenChart = false; + yMax: number; + chartData: IResponseTime | IResponseMilliSecondTime; + chartColors: string[]; + useDisable = false; + showLoading = false; + i18nText = { + NO_DATA: '' + }; + constructor( + private changeDetector: ChangeDetectorRef, + private storeHelperService: StoreHelperService, + private translateService: TranslateService, + private webAppSettingDataService: WebAppSettingDataService, + private agentHistogramDataService: AgentHistogramDataService, + private analyticsService: AnalyticsService, + private dynamicPopupService: DynamicPopupService + ) {} + ngOnInit() { + this.chartColors = this.webAppSettingDataService.getColorByRequest(); + this.translateService.get('COMMON.NO_DATA').subscribe((txt: string) => { + this.i18nText.NO_DATA = txt; + }); + this.connectStore(); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private connectStore(): void { + this.storeHelperService.getResponseSummaryChartYMax(this.unsubscribe).subscribe((max: number) => { + this.yMax = max; + }); + this.storeHelperService.getAgentSelectionForServerList(this.unsubscribe).pipe( + filter((chartData: IAgentSelection) => { + return (chartData && chartData.agent) ? true : false; + }) + ).subscribe((chartData: IAgentSelection) => { + if (chartData.responseSummary) { + this.hiddenChart = false; + this.chartData = this.agentHistogramDataService.makeChartDataForResponseSummary(chartData.responseSummary, this.yMax); + } else { + this.hiddenChart = true; + } + this.changeDetector.detectChanges(); + }); + } + onNotifyMax(max: number): void {} + onClickColumn(columnName: string): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.CLICK_RESPONSE_GRAPH); + if (columnName === 'Error') { + // scope.$emit('responseTimeSummaryChartDirective.showErrorTransactionList', type); + // @TODO Scatter Chart의 에러 부분만 Drag 하도록 하는 액션 + } + // @TODO FilteredMap transaction에서 만 처리되는 이벤트 + // if (useFilterTransaction) { + // scope.$emit('responseTimeSummaryChartDirective.itemClicked.' + scope.namespace, { + // "responseTime": type, + // "count": aTarget[0]._chart.config.data.datasets[0].data[aTarget[0]._index] + // }); + // } + + } + onShowHelp($event: MouseEvent): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.TOGGLE_HELP_VIEWER, HELP_VIEWER_LIST.RESPONSE_SUMMARY); + const {left, top, width, height} = ($event.target as HTMLElement).getBoundingClientRect(); + + this.dynamicPopupService.openPopup({ + data: HELP_VIEWER_LIST.RESPONSE_SUMMARY, + coord: { + coordX: left + width / 2, + coordY: top + height / 2 + }, + component: HelpViewerPopupContainerComponent + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart-for-side-bar-container.component.css b/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart-for-side-bar-container.component.css new file mode 100644 index 000000000000..f54bc58bff5e --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart-for-side-bar-container.component.css @@ -0,0 +1,30 @@ +.l-chart-item { + height: 202px; +} +.l-tool-box { + font-size: 14px; + color: #b3b5b9; + text-align: right; + position: relative; + padding: 16px 25px 0; +} +.l-tool-box .l-title { + float: left; + text-align: left; + font-size: 16px; + color: #333; + font-weight: 600; + margin: 0 0 23px; +} +.l-tool-box button { + font-size: 18px; + margin: 0; +} +.l-content-section { + padding: 0 25px 0; +} +.l-no-data { + padding-top: 60px; + text-align: center; + font-weight: 600; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart-for-side-bar-container.component.html b/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart-for-side-bar-container.component.html new file mode 100644 index 000000000000..45c22260aebd --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart-for-side-bar-container.component.html @@ -0,0 +1,20 @@ +
+
+

Response Summary

+ +
+
+ + +
+ {{i18nText.NO_DATA}} +
+
+
+ + \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart-for-side-bar-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart-for-side-bar-container.component.ts new file mode 100644 index 000000000000..5414a835a961 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart-for-side-bar-container.component.ts @@ -0,0 +1,161 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { Subject } from 'rxjs'; +import { filter } from 'rxjs/operators'; +import { TranslateService } from '@ngx-translate/core'; + +import { Actions } from 'app/shared/store'; +import { ServerMapData } from 'app/core/components/server-map/class/server-map-data.class'; +import { StoreHelperService, WebAppSettingDataService, AgentHistogramDataService, AnalyticsService, TRACKED_EVENT_LIST, DynamicPopupService } from 'app/shared/services'; +import { HELP_VIEWER_LIST, HelpViewerPopupContainerComponent } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; + +@Component({ + selector: 'pp-response-summary-chart-for-side-bar-container', + templateUrl: './response-summary-chart-for-side-bar-container.component.html', + styleUrls: ['./response-summary-chart-for-side-bar-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ResponseSummaryChartForSideBarContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + selectedTarget: ISelectedTarget; + selectedAgent = ''; + serverMapData: ServerMapData; + hiddenComponent = false; + hiddenChart = false; + yMax = -1; + useDisable = false; + showLoading = false; + i18nText = { + NO_DATA: '' + }; + chartData: IResponseTime | IResponseMilliSecondTime; + chartColors: string[]; + constructor( + private changeDetector: ChangeDetectorRef, + private translateService: TranslateService, + private storeHelperService: StoreHelperService, + private webAppSettingDataService: WebAppSettingDataService, + private agentHistogramDataService: AgentHistogramDataService, + private analyticsService: AnalyticsService, + private dynamicPopupService: DynamicPopupService + ) {} + ngOnInit() { + this.chartColors = this.webAppSettingDataService.getColorByRequest(); + this.translateService.get('COMMON.NO_DATA').subscribe((txt: string) => { + this.i18nText.NO_DATA = txt; + }); + this.connectStore(); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private connectStore(): void { + this.storeHelperService.getAgentSelection(this.unsubscribe).subscribe((agent: string) => { + this.setDisable(true); + this.selectedAgent = agent; + if (this.selectedTarget) { + this.loadResponseSummaryChartData(); + this.changeDetector.detectChanges(); + } + }); + this.storeHelperService.getServerMapData(this.unsubscribe).subscribe((serverMapData: ServerMapData) => { + this.serverMapData = serverMapData; + }); + this.storeHelperService.getServerMapTargetSelected(this.unsubscribe).pipe( + filter((target: ISelectedTarget) => { + return target && (target.isNode === true || target.isNode === false) ? true : false; + }) + ).subscribe((target: ISelectedTarget) => { + this.yMax = -1; + this.selectedTarget = target; + this.hiddenComponent = target.isMerged; + if (target.isMerged === false) { + this.loadResponseSummaryChartData(); + } else { + this.changeDetector.detectChanges(); + } + }); + this.storeHelperService.getRealTimeScatterChartRange(this.unsubscribe).subscribe((range: IScatterXRange) => { + this.yMax = -1; + this.loadResponseSummaryChartData(range.from, range.to); + }); + this.storeHelperService.getServerMapTargetSelectedByList(this.unsubscribe).subscribe((target: any) => { + this.yMax = -1; + this.hiddenComponent = false; + this.passDownChartData(this.agentHistogramDataService.makeChartDataForResponseSummary(target.histogram, this.getChartYMax())); + }); + } + private getChartYMax(): number { + return this.yMax === -1 ? null : this.yMax; + } + private setDisable(disable: boolean): void { + this.useDisable = disable; + this.showLoading = disable; + } + private loadResponseSummaryChartData(from?: number, to?: number): void { + const target = this.getTargetInfo(); + if (this.isAllAgent() && arguments.length !== 2) { + this.passDownChartData(this.agentHistogramDataService.makeChartDataForResponseSummary(target.histogram, this.getChartYMax())); + } else { + this.agentHistogramDataService.getData(target.key, target.applicationName, target.serviceTypeCode, this.serverMapData, from, to).subscribe((chartData: any) => { + const chartDataForAgent = this.isAllAgent() ? chartData['histogram'] : chartData['agentHistogram'][this.selectedAgent]; + this.passDownChartData(this.agentHistogramDataService.makeChartDataForResponseSummary(chartDataForAgent, this.getChartYMax())); + }); + } + } + private passDownChartData(chartData: any): void { + if (chartData) { + this.hiddenChart = false; + this.chartData = chartData; + } else { + this.hiddenChart = true; + } + this.setDisable(false); + this.changeDetector.detectChanges(); + } + private getTargetInfo(): any { + if (this.selectedTarget.isNode) { + return this.serverMapData.getNodeData(this.selectedTarget.node[0]); + } else { + return this.serverMapData.getLinkData(this.selectedTarget.link[0]); + } + } + private isAllAgent(): boolean { + return this.selectedAgent === ''; + } + onNotifyMax(max: number): void { + if (this.yMax === -1) { + this.yMax = max; + this.storeHelperService.dispatch(new Actions.ChangeResponseSummaryChartYMax(max)); + } + } + onClickColumn(columnName: string): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.CLICK_RESPONSE_GRAPH); + console.log('clicked Column Name :', columnName ); + if (columnName === 'Error') { + // scope.$emit('responseTimeSummaryChartDirective.showErrorTransactionList', type); + // @TODO Scatter Chart의 에러 부분만 Drag 하도록 하는 액션 + } + // @TODO FilteredMap transaction에서 만 처리되는 이벤트 + // if (useFilterTransaction) { + // scope.$emit('responseTimeSummaryChartDirective.itemClicked.' + scope.namespace, { + // "responseTime": type, + // "count": aTarget[0]._chart.config.data.datasets[0].data[aTarget[0]._index] + // }); + // } + + } + onShowHelp($event: MouseEvent): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.TOGGLE_HELP_VIEWER, HELP_VIEWER_LIST.RESPONSE_SUMMARY); + const {left, top, width, height} = ($event.target as HTMLElement).getBoundingClientRect(); + + this.dynamicPopupService.openPopup({ + data: HELP_VIEWER_LIST.RESPONSE_SUMMARY, + coord: { + coordX: left + width / 2, + coordY: top + height / 2 + }, + component: HelpViewerPopupContainerComponent + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart.component.css b/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart.component.css new file mode 100644 index 000000000000..116a2a1d8688 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart.component.css @@ -0,0 +1,6 @@ +:host { + width: 100%; + height: 121px; + display: block; + position: relative; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart.component.html b/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart.component.html new file mode 100644 index 000000000000..82928869e15f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart.component.html @@ -0,0 +1 @@ + diff --git a/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart.component.ts b/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart.component.ts new file mode 100644 index 000000000000..8cb1a3a82ba5 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/response-summary-chart/response-summary-chart.component.ts @@ -0,0 +1,135 @@ +import { Component, ViewChild, ElementRef, OnInit, OnChanges, SimpleChanges, Input, Output, EventEmitter } from '@angular/core'; +import { Chart } from 'chart.js'; + +@Component({ + selector: 'pp-response-summary-chart', + templateUrl: './response-summary-chart.component.html', + styleUrls: ['./response-summary-chart.component.css'] +}) +export class ResponseSummaryChartComponent implements OnInit, OnChanges { + @ViewChild('responseSummaryChart') el: ElementRef; + @Input() instanceKey: string; + @Input() chartData: any; + @Input() chartColors: string[]; + @Output() outNotifyMax: EventEmitter = new EventEmitter(); + @Output() outClickColumn: EventEmitter = new EventEmitter(); + chartObj: any; + constructor() {} + ngOnInit() {} + ngOnChanges(changes: SimpleChanges) { + if ( changes['chartData'] && changes['chartData']['firstChange'] === false ) { + this.initChart(); + } + } + private initChart(): void { + if (this.chartObj) { + if (this.chartData.max) { + this.chartObj.config.options.scales.yAxes[0].ticks.max = this.chartData.max; + } + this.chartObj.data.labels = this.chartData.keys; + this.chartObj.data.datasets[0].data = this.chartData.values; + this.chartObj.update(); + } else { + this.chartObj = new Chart(this.el.nativeElement.getContext('2d'), { + type: 'bar', + data: this.makeDataOption(), + options: this.makeNormalOption() + }); + } + this.outNotifyMax.emit(this.chartObj.scales['y-axis-0'].max); + } + private makeDataOption(): any { + return { + labels: this.chartData['keys'], + datasets: [{ + data: this.chartData['values'], + backgroundColor: this.chartColors, + borderColor: [ + 'rgba(120, 119, 121, 0)', + 'rgba(120, 119, 121, 0)', + 'rgba(120, 119, 121, 0)', + 'rgba(120, 119, 121, 0)', + 'rgba(120, 119, 121, 0)' + ], + borderWidth: 0.5 + }] + }; + } + private makeNormalOption(): any { + return { + onClick: (event, aChartEl: any[]) => { + if ( aChartEl.length > 0 ) { + this.outClickColumn.emit(aChartEl[0]._view.label); + } + event.preventDefault(); + }, + layout: { + padding: { + top: 20 + } + }, + maintainAspectRatio: false, + legend: { + display: false + }, + title: { + display: false + }, + scales: { + yAxes: [{ + gridLines: { + display: true, + drawBorder: false, + zeroLineWidth: 1.5, + zeroLineColor: 'rgb(0, 0, 0)' + }, + ticks: { + beginAtZero: true, + maxTicksLimit: 3, + callback: (label: number) => { + return ' ' + (label >= 1000 ? `${label / 1000}k` : label) + ' '; + }, + fontColor: 'rgba(162, 162, 162, 1)', + fontSize: 11, + max: this.chartData.max + } + }], + xAxes: [{ + gridLines: { + display: false, + drawBorder: false + }, + ticks: { + fontColor: 'rgba(162, 162, 162, 1)', + fontSize: 11 + } + }] + }, + animation: { + duration: 0, + onComplete: (chartElement: any) => { + const ctx = chartElement.chart.ctx; + // ctx.font = Chart.helpers.fontString(Chart.defaults.global.defaultFontSize, 'normal', Chart.defaults.global.defaultFontFamily); + ctx.fillStyle = chartElement.chart.config.options.defaultFontColor; + ctx.textAlign = 'center'; + ctx.textBaseline = 'bottom'; + chartElement.chart.data.datasets.forEach((dataset) => { + for (let i = 0 ; i < dataset.data.length ; i++) { + const model = dataset._meta[Object.keys(dataset._meta)[0]].data[i]._model; + ctx.fillText(this.addComma(dataset.data[i] + ''), model.x, model.y - 5); + } + }); + } + }, + hover: { + animationDuration: 0 + }, + tooltips: { + enabled: false + } + }; + } + addComma(str: string): string { + return str.replace(/(\d)(?=(?:\d{3})+(?!\d))/g, '$1,'); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/class/scatter-chart-axis-renderer.class.ts b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/class/scatter-chart-axis-renderer.class.ts new file mode 100644 index 000000000000..5fcda5bdb662 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/class/scatter-chart-axis-renderer.class.ts @@ -0,0 +1,250 @@ +import { interval, of, animationFrameScheduler } from 'rxjs'; +import { map, takeWhile, concat } from 'rxjs/operators'; +import * as moment from 'moment-timezone'; +import { IOptions } from './scatter-chart.class'; +import { ScatterChartSizeCoordinateManager } from './scatter-chart-size-coordinate-manager.class'; + +export class ScatterChartAxisRenderer { + private ticksX: number; + private ticksY: number; + + private elementAxisCanvas: HTMLCanvasElement; + private ctxAxisCanvas: CanvasRenderingContext2D; + private elementAxisContainer: HTMLElement; + private elementsAxisX: HTMLElement[] = []; + private elementsAxisY: HTMLElement[] = []; + private elementAxisXUnit: HTMLElement; + private elementAxisYUnit: HTMLElement; + constructor( + private options: IOptions, + private coordinateManager: ScatterChartSizeCoordinateManager, + private elementContainer: HTMLElement + ) { + this.ticksX = this.options.ticks.x - 1; + this.ticksY = this.options.ticks.y - 1; + + this.makeAxisCanvas(); + this.drawAxisLine(); + this.drawAxisValue(); + this.updateAxisValue(); + } + private makeAxisCanvas(): void { + this.elementAxisCanvas = document.createElement('canvas'); + this.elementAxisCanvas.setAttribute('width', this.coordinateManager.getWidth() + 'px'); + this.elementAxisCanvas.setAttribute('height', this.coordinateManager.getHeight() + 'px'); + this.elementAxisCanvas.setAttribute('style', 'top: 0px; z-index: 10; position: absolute'); + + this.elementContainer.appendChild(this.elementAxisCanvas); + this.ctxAxisCanvas = this.elementAxisCanvas.getContext('2d'); + } + private drawAxisLine(): void { + const width = this.coordinateManager.getWidth(); + const height = this.coordinateManager.getHeight(); + const oPadding = this.coordinateManager.getPadding(); + const bubbleHalfSize = this.coordinateManager.getBubbleHalfSize(); + const lineColor = this.options.lineColor; + const gridAxisStyle = this.options.gridAxisStyle; + const tickX = this.coordinateManager.getWidthOfChartSpace() / this.ticksX; + const tickY = this.coordinateManager.getHeightOfChartSpace() / this.ticksY; + const xTickLength = this.options.tickLength.x; + const yTickLength = this.options.tickLength.y; + + this.ctxAxisCanvas.lineWidth = gridAxisStyle.lineWidth; + this.ctxAxisCanvas.globalAlpha = 1; + this.ctxAxisCanvas.lineCap = 'round'; + this.ctxAxisCanvas.strokeStyle = lineColor; + + this.ctxAxisCanvas.beginPath(); + this.moveTo(this.ctxAxisCanvas, oPadding.left, oPadding.top); + this.lineTo(this.ctxAxisCanvas, oPadding.left, height - oPadding.bottom); + this.lineTo(this.ctxAxisCanvas, width - oPadding.right, height - oPadding.bottom); + this.ctxAxisCanvas.stroke(); + + for (let i = 0 ; i <= this.ticksX ; i++) { + const mov = oPadding.left + bubbleHalfSize + tickX * i; + this.ctxAxisCanvas.beginPath(); + this.moveTo(this.ctxAxisCanvas, mov, height - oPadding.bottom); + this.lineTo(this.ctxAxisCanvas, mov, height - oPadding.bottom + xTickLength); + this.ctxAxisCanvas.stroke(); + } + + for (let i = 0 ; i <= this.ticksY ; i++) { + const mov = height - (oPadding.bottom + bubbleHalfSize + tickY * i); + this.ctxAxisCanvas.beginPath(); + this.moveTo(this.ctxAxisCanvas, oPadding.left, mov); + this.lineTo(this.ctxAxisCanvas, oPadding.left - yTickLength, mov); + this.ctxAxisCanvas.stroke(); + } + } + private moveTo(ctx: any, x: number, y: number): void { + if (x % 1 === 0) { + x += 0.5; + } + if (y % 1 === 0) { + y += 0.5; + } + ctx.moveTo(x, y); + } + private lineTo(ctx: any, x: number, y: number): void { + if (x % 1 === 0) { + x += 0.5; + } + if (y % 1 === 0) { + y += 0.5; + } + ctx.lineTo(x, y); + } + private drawAxisValue() { + const widthTickX = this.coordinateManager.getWidthOfChartSpace() / this.ticksX; + const widthTickY = this.coordinateManager.getHeightOfChartSpace() / this.ticksY; + const width = this.coordinateManager.getWidth(); + const height = this.coordinateManager.getHeight(); + const padding = this.coordinateManager.getPadding(); + const bubbleHalfSize = this.coordinateManager.getBubbleHalfSize(); + const axisColor = this.options.axisColor; + + this.elementAxisContainer = document.createElement('div'); + const elementDivStyle = `top: 0px; width:${width}px ; height:${height}px ;cursor: corsshair; z-index: 10; position: absolute; background-color: rgba(0,0,0,0)`; + this.elementAxisContainer.setAttribute('style', elementDivStyle); + this.elementContainer.appendChild(this.elementAxisContainer); + + // x axis + for (let i = 0 ; i <= this.ticksX ; i++) { + const tempAxisDiv = document.createElement('div'); + const style = ` + top: ${height - padding.bottom + 10}px; + left: ${padding.left - (widthTickX / 2) + (i * widthTickX)}px; + width: ${widthTickX}px; + color: ${axisColor}; + position: absolute; + text-align: center; + `; + tempAxisDiv.setAttribute('style', style + this.options.axisLabelStyle); + tempAxisDiv.textContent = ' '; + this.elementsAxisX.push(tempAxisDiv); + this.elementAxisContainer.appendChild(tempAxisDiv); + } + // y axis + for (let i = 0 ; i <= this.ticksY ; i++) { + const tempAxisDiv = document.createElement('div'); + const style = ` + top: ${bubbleHalfSize + (i * widthTickY) + padding.top - 10}px; + left: 0px; + width: ${padding.left - 10}px; + color: ${axisColor}; + position: absolute; + text-align: center; + vertical-align: middle; + `; + tempAxisDiv.setAttribute('style', style + this.options.axisLabelStyle); + tempAxisDiv.textContent = ' '; + this.elementsAxisY.push(tempAxisDiv); + this.elementAxisContainer.appendChild(tempAxisDiv); + } + + // x axis unit + const xUnit = this.options.axisUnit.x; + if (xUnit !== '') { + this.elementAxisXUnit = document.createElement('div'); + const style = ` + top: ${height - padding.bottom + 10}px; + right: 80px; + color: ${axisColor}; + position: absolute; + text-align: right; + `; + this.elementAxisXUnit.setAttribute('style', style + this.options.axisLabelStyle); + this.elementAxisXUnit.textContent = xUnit; + this.elementAxisContainer.appendChild(this.elementAxisXUnit); + } + // y axis unit + const yUnit = this.options.axisUnit.y; + if (yUnit !== '') { + this.elementAxisYUnit = document.createElement('div'); + const style = ` + top: 0px; + left: 10px; + color: ${axisColor}; + width: ${padding.left - 15}; + position: absolute; + text-align: right; + vertical-align: middle; + `; + this.elementAxisYUnit.setAttribute('style', style + this.options.axisLabelStyle); + this.elementAxisYUnit.textContent = yUnit; + this.elementAxisContainer.appendChild(this.elementAxisYUnit); + } + } + updateAxisValue(animation?: boolean, duration?: number): void { + const xRange = this.coordinateManager.getX(); + const tickX = (this.coordinateManager.getGapX()) / this.ticksX; + this.elementsAxisX.forEach((element: Element, index: number) => { + const xMoment = moment(tickX * index + xRange.from).tz(this.options.timezone); + element.innerHTML = xMoment.format(this.options.dateFormat[0]) + '
' + xMoment.format(this.options.dateFormat[1]); + }); + + const yRange = this.coordinateManager.getY(); + const tickY = (this.coordinateManager.getGapY()) / this.ticksY; + this.elementsAxisY.forEach((element: Element, index: number) => { + element.innerHTML = ((yRange.to + yRange.from) - ((tickY * index) + yRange.from)).toLocaleString(); + }); + if (animation === true) { + this.animateBackground(this.elementsAxisX[this.elementsAxisX.length - 1], duration); + } + } + private animateBackground(element: HTMLElement, duration: number): void { + const start = animationFrameScheduler.now(); + interval(1, animationFrameScheduler).pipe( + map(() => { + return (animationFrameScheduler.now() - start) / duration; + }), + takeWhile((opacity: number) => { + return opacity <= 1; + }), + concat(of(1)) + ).subscribe((opacity: number) => { + element.style.backgroundColor = `rgba(254, 255, 210, ${1 - opacity}`; + }); + + } + drawToCanvas(ctxDownload: CanvasRenderingContext2D, topPadding: number): CanvasRenderingContext2D { + let xLastLabelLeftPosition = 0; + ctxDownload.drawImage(this.elementAxisCanvas, 0, topPadding); + // x axis + ctxDownload.textAlign = 'center'; + this.elementsAxisX.forEach((element: HTMLElement) => { + ctxDownload.font = element.style.font; + ctxDownload.fillStyle = element.style.color; + const axisX = element.innerHTML.replace(/
/gi, ' ').split(' '); + axisX.forEach((txt: string, index: number) => { + ctxDownload.fillText(txt, parseInt(element.style.left, 10) + element.getBoundingClientRect().width / 2, parseInt(element.style.top, 10) + (15 * (index + 1)) + topPadding); + }); + xLastLabelLeftPosition = Math.max(xLastLabelLeftPosition, parseInt(element.style.left, 10)); + }); + // y axis + ctxDownload.textAlign = 'right'; + this.elementsAxisY.forEach((element: HTMLElement) => { + ctxDownload.font = element.style.font; + ctxDownload.fillStyle = element.style.color; + ctxDownload.fillText(element.textContent, element.getBoundingClientRect().width - 10, parseInt(element.style.top, 10) + 15 + + topPadding); + }); + // x label + if (this.options.axisUnit.x !== '' && this.elementAxisXUnit) { + ctxDownload.textAlign = 'right'; + ctxDownload.font = this.elementAxisXUnit.style.fontFamily; + ctxDownload.fillStyle = this.elementAxisXUnit.style.color; + ctxDownload.fillText(this.elementAxisXUnit.textContent, xLastLabelLeftPosition + this.elementAxisXUnit.getBoundingClientRect().width, parseInt(this.elementAxisXUnit.style.top, 10) + 30 + topPadding); + } + // y label + if (this.options.axisUnit.y !== '' && this.elementAxisYUnit) { + ctxDownload.textAlign = 'right'; + ctxDownload.font = this.elementAxisYUnit.style.fontFamily; + ctxDownload.fillStyle = this.elementAxisYUnit.style.color; + ctxDownload.fillText(this.elementAxisYUnit.textContent, parseInt(this.elementAxisYUnit.style.left, 10) + this.elementAxisYUnit.getBoundingClientRect().width, 10 + topPadding); + } + return ctxDownload; + } + reset(): void { + this.updateAxisValue(); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/class/scatter-chart-data-block.class.ts b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/class/scatter-chart-data-block.class.ts new file mode 100644 index 000000000000..1d909cebffa9 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/class/scatter-chart-data-block.class.ts @@ -0,0 +1,183 @@ +import { ITypeInfo } from './scatter-chart.class'; +import { ScatterChartTransactionTypeManager } from './scatter-chart-transaction-type-manager.class'; + +export enum DataIndex { + X, + Y, + META, + TRANSACTION_ID, + TYPE, + GROUP_COUNT +} +export enum MetadataIndex { + AGENT_NAME, TRANSACTION_PREFIX_1, TRANSACTION_PREFIX_2 +} + +export class ScatterChartDataBlock { + private from: number; + private to: number; + private resultFrom: number; + private resultTo: number; + + private agentMetadata: { [key: string]: any[] }; + private transactionData: number[][]; + + private agentList: string[] = []; + private transactionDataByAgent: {[key: string]: any} = {}; + private countByType: {[key: string]: {[key: string]: number}} = {}; + + private fromX: number; + private toX: number; + /* + oPropertyIndex : { + x: 0, + y: 1, + meta: 2, + transactionId: 3, + type: 4, + groupCount: 5 + } + */ + constructor(private originalData: IScatterData, private typeManager: ScatterChartTransactionTypeManager) { + this.initVariable(); + this.initInnerDataStructure(); + this.classifyDataByAgent(); + } + private initVariable() { + this.from = this.originalData.from; + this.to = this.originalData.to; + if (this.originalData.complete) { + this.fromX = this.resultFrom = this.originalData.from; + this.toX = this.resultTo = this.originalData.to; + } else { + this.fromX = this.resultFrom = this.originalData.resultFrom; + this.toX = this.resultTo = this.originalData.resultTo; + } + this.agentMetadata = this.originalData.scatter.metadata; + this.transactionData = []; + } + private initInnerDataStructure(): void { + Object.keys(this.agentMetadata).forEach((key: string) => { + const metaInfo = this.agentMetadata[key]; + const agentName = metaInfo[MetadataIndex.AGENT_NAME]; + this.transactionDataByAgent[agentName] = []; + + this.countByType[agentName] = {}; + this.typeManager.getTypeNameList().forEach((typeName: string) => { + this.countByType[agentName][typeName] = 0; + }); + if (this.agentList.indexOf(agentName) === -1) { + this.agentList.push(agentName); + } + }); + this.agentList.sort(); + } + private classifyDataByAgent(): void { + this.originalData.scatter.dotList.forEach((tData: number[]) => { + const agentName = this.getAgentName(tData); + const typeName = this.typeManager.getNameByIndex(tData[DataIndex.TYPE]); + const tNewData = tData.concat(); + + tNewData[DataIndex.X] += this.from; + this.transactionData.push(tNewData); + this.transactionDataByAgent[agentName].push(tNewData); + this.countByType[agentName][typeName]++; + }); + } + getAgentName(data: number[] | string): string { + if (typeof data === 'string') { + return this.agentMetadata[data][MetadataIndex.AGENT_NAME]; + } else { + return this.agentMetadata[data[DataIndex.META]][MetadataIndex.AGENT_NAME]; + } + } + getDataByAgentAndIndex(agent: string, index: number): number[] { + return this.transactionDataByAgent[agent][index]; + } + getGroupCount(data: number[]): number { + return data[DataIndex.GROUP_COUNT]; + } + getDataByIndex(index: number): number[] { + return this.transactionData[index]; + } + getTotalCount(): number { + return this.transactionData.length; + } + countByAgent(agent: string): number { + if (this.transactionDataByAgent[agent]) { + return this.transactionDataByAgent[agent].length; + } else { + return 0; + } + } + getCount(agentName: string, type: string, fromX?: number, toX?: number): number { + if ( fromX && toX ) { + return this.getCountOfRange(agentName, type, fromX, toX); + } else { + if (agentName === '') { + let sumType = 0; + Object.keys(this.countByType).forEach((innerAgentName: string) => { + sumType += this.countByType[innerAgentName][type]; + }); + return sumType; + } else { + if (this.countByType[agentName]) { + return this.countByType[agentName][type]; + } else { + return 0; + } + } + } + } + private getCountOfRange(agentName: string, type: string, fromX: number, toX: number): number { + // @TODO: agentName : ALL 인 경우 처리 + let sum = 0; + const length = this.transactionDataByAgent[agentName].length; + if (this.from >= toX || this.to <= fromX || length === 0 || (agentName in this.countByType) === false) { + return sum; + } + if (this.from >= fromX && this.to <= toX) { + return this.getCount(agentName, type); + } + for (let i = 0 ; i < length ; i++) { + const data = this.transactionDataByAgent[agentName][i]; + if (data[DataIndex.X] < fromX) { + break; + } + // if (agentName === this.getAgentName(data)) { + if (type === this.typeManager.getNameByIndex(data[DataIndex.TYPE])) { + if (data[DataIndex.X] <= toX) { + sum++; + } + } + // } + } + return sum; + } + getTransactionID(data: number[]): string { + const oMeta = this.agentMetadata[data[DataIndex.META]]; + return `${oMeta[MetadataIndex.TRANSACTION_PREFIX_1]}^${oMeta[MetadataIndex.TRANSACTION_PREFIX_2]}^${data[DataIndex.TRANSACTION_ID]}`; + } + getX(data: number[]): number { + return data[DataIndex.X]; + } + getY(data: number[]): number { + return data[DataIndex.Y]; + } + getTypeIndex(data: number[]): number { + return data[DataIndex.TYPE]; + } + getXRange(): {from: number, to: number} { + return { + 'from': this.fromX, + 'to': this.toX + }; + } + isEmpty(): boolean { + return this.transactionData.length === 0; + } + getAgentList(): string[] { + return this.agentList; + } + +} diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/class/scatter-chart-data-load-manager.class.ts b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/class/scatter-chart-data-load-manager.class.ts new file mode 100644 index 000000000000..f1677e1f66e5 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/class/scatter-chart-data-load-manager.class.ts @@ -0,0 +1,142 @@ +export class ScatterChartDataLoadManager { + constructor(application, filter, option, cbLoaded) { + // this._filter = filter; + // this._option = option; + // this._application = application; + // this._cbLoaded = cbLoaded; + // this._initVar(); + } + // _initVar() { + // this._callCount = 0; + // this._bLoadCompleted = false; + // this._lastLoadTime = -1; + // }; + // option(k) { + // return this._option[k]; + // } + // loadData(cbComplete, cbSuccess, cbFail, widthOfPixel, heightOfPixel) { + // var self = this; + // var oFromTo = this._oSCManager.getX(); + + // this._oAjax = $.ajax({ + // 'url': this.getUrl(), + // 'data': { + // 'to': this._callCount === 0 ? oFromTo.max : this._lastLoadTime - 1, + // 'from': oFromTo.min, + // 'limit': this.option('fetchLimit'), + // 'filter': this._filter || '', + // 'application': this._application, + // 'xGroupUnit': widthOfPixel, + // 'yGroupUnit': heightOfPixel + // }, + // 'headers': { 'accept': 'application/json' }, + // 'dataType': 'json' + // }).done(function (oResultData) { + // if (oResultData.exception) { + // cbFail(); + // } else { + // self._callCount += 1; + // self._bLoadCompleted = oResultData.complete; + // self._lastLoadTime = oResultData.resultFrom; + // cbSuccess(oResultData, !self._bLoadCompleted, self._getIntervalTime()); + // } + // }).always(function () { + // cbComplete(); + // }); + // } + // loadRealtimeData(callbackRealtimeSuccess, callbackRealtimeFail, widthOfPixel, heightOfPixel) { + // var self = this; + // var oFromTo = this._oSCManager.getX(); + + // var beforeRequest = Date.now(); + // var currentFrom = this._nextFrom || oFromTo.max; + // var currentTo = this._nextTo || oFromTo.max + this.option('realtimeInterval'); + + // this._oRealtimeAjax = $.ajax({ + // 'url': this.getUrl(), + // 'data': { + // 'to': currentTo, + // 'from': currentFrom, + // 'limit': this.option('fetchLimit'), + // 'filter': '', + // 'application': this._application, + // 'xGroupUnit': widthOfPixel, + // 'yGroupUnit': heightOfPixel, + // 'backwardDirection': false + // }, + // 'headers': { 'accept': 'application/json' }, + // 'dataType': 'json' + // }).done(function (oResultData) { + // if (oResultData.exception) { + // callbackRealtimeFail(); + // } else { + + // self._nextFrom = oResultData.complete ? oResultData.to : oResultData.resultTo; + // self._nextTo = self._nextFrom + self.option('realtimeInterval'); + + // callbackRealtimeSuccess(oResultData, self._calcuRealtimeIntervalTime(oResultData.currentServerTime, Date.now() - beforeRequest), self._isResetRealtime(oResultData.currentServerTime), oResultData.currentServerTime); + // self._cbLoaded(self._oSCManager.getX(), self._nextFrom, self._nextTo); + // } + // }).fail(function () { + // setTimeout(function () { + // self.loadRealtimeData(callbackRealtimeSuccess, callbackRealtimeFail, widthOfPixel, heightOfPixel); + // }, (self.option('realtimeInterval') / 2)); + // }); + // } + // _isResetRealtime(currentServerTime) { + // return (currentServerTime - this._nextTo) >= this.option('realtimeResetTimeGap'); + // } + // _calcuRealtimeIntervalTime(currentServerTime, requestGap) { + // var interval = parseInt(this.option('realtimeInterval'), 0); + // if (requestGap > interval) { + // return 0; + // } else { + // var gapTime = (currentServerTime - this._nextTo) - this.option('realtimeDefaultTimeGap'); + // if (gapTime < 0) { + // return Math.max(interval - requestGap - gapTime, interval); + // } else { + // return Math.max(interval - requestGap - gapTime, 0); + // } + // } + // } + // setRealtimeFrom(from) { + // this._nextFrom = from; + // this._nextTo = from + this.option('realtimeInteraval'); + // } + // _getIntervalTime() { + // if (this.option('useIntervalForFetching')) { + // return this.option('fetchingInterval'); + // } + // return 0; + // } + // getRealtimeInterval() { + // return this.option('realtimeDefaultTimeGap'); + // } + // getUrl() { + // return this.option('url'); + // } + // initCallCount() { + // this._callCount = 0; + // } + // isFirstRequest() { + // return this._callCount === 0; + // } + // isCompleted() { + // return this._bLoadCompleted; + // } + // abort() { + // if (this._oAjax) { + // this._oAjax.abort(); + // } + // if (this._oRealtimeAjax) { + // this._oRealtimeAjax.abort(); + // } + // } + // setTimeManager(oSCManager) { + // this._oSCManager = oSCManager; + // } + // reset = function () { + // this._bLoadCompleted = false; + // this.initCallCount(); + // } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/class/scatter-chart-grid-renderer.class.ts b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/class/scatter-chart-grid-renderer.class.ts new file mode 100644 index 000000000000..d88d7ebffca7 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/class/scatter-chart-grid-renderer.class.ts @@ -0,0 +1,96 @@ +import { IOptions } from './scatter-chart.class'; +import { ScatterChartSizeCoordinateManager } from './scatter-chart-size-coordinate-manager.class'; + +export class ScatterChartGridRenderer { + private ticksX: number; + private ticksY: number; + private elementGridCanvas: HTMLCanvasElement; + private ctxGridCanvas: CanvasRenderingContext2D; + constructor(private options: IOptions, private coordinateManager: ScatterChartSizeCoordinateManager, private elementContainer: HTMLElement) { + this.ticksX = this.options.ticks.x - 1; + this.ticksY = this.options.ticks.y - 1; + + this.makeGridCanvas(); + this.drawGridLine(); + } + private makeGridCanvas(): void { + this.elementGridCanvas = document.createElement('canvas'); + this.elementGridCanvas.setAttribute('width', this.coordinateManager.getWidth() + 'px'); + this.elementGridCanvas.setAttribute('height', this.coordinateManager.getHeight() + 'px'); + this.elementGridCanvas.setAttribute('style', 'top: 0px; z-index: 0; position: absolute'); + + this.elementContainer.appendChild(this.elementGridCanvas); + this.ctxGridCanvas = this.elementGridCanvas.getContext('2d'); + } + private drawGridLine(): void { + this.setStyle(this.ctxGridCanvas, this.options.gridAxisStyle); + this.drawXGridLine(); + this.drawYGridLine(); + } + private drawXGridLine(): void { + const height = this.coordinateManager.getHeight(); + const padding = this.coordinateManager.getPadding(); + const bubbleHalfSize = this.coordinateManager.getBubbleHalfSize(); + const tickX = this.coordinateManager.getWidthOfChartSpace() / this.ticksX; + + const xStart = padding.left + bubbleHalfSize; + const yStart = padding.top; + const yEnd = height - padding.bottom; + for (let i = 0 ; i <= this.ticksX ; i++) { + const x = xStart + (tickX * i); + this.drawLine(this.ctxGridCanvas, x, yStart, x, yEnd); + } + } + private drawYGridLine(): void { + const width = this.coordinateManager.getWidth(); + const height = this.coordinateManager.getHeight(); + const padding = this.coordinateManager.getPadding(); + const bubbleHalfSize = this.coordinateManager.getBubbleHalfSize(); + const tickY = this.coordinateManager.getHeightOfChartSpace() / this.ticksY; + + const xStart = padding.left; + const xEnd = width - padding.right; + const yZero = padding.bottom + bubbleHalfSize; + for (let i = 0 ; i <= this.ticksY ; i++) { + const y = height - (yZero + tickY * i); + this.drawLine(this.ctxGridCanvas, xStart, y, xEnd, y); + } + } + private drawLine(context: CanvasRenderingContext2D, xStart: number, yStart: number, xEnd: number, yEnd: number): void { + context.beginPath(); + this.moveTo(context, xStart, yStart); + this.lineTo(context, xEnd, yEnd); + context.stroke(); + } + private setStyle(ctx: any, styles: any): void { + Object.keys(styles).forEach((key: string) => { + if (key === 'lineDash') { + ctx.setLineDash(styles[key]); + } else { + ctx[key] = styles[key]; + } + }); + } + private moveTo(ctx: any, x: number, y: number): void { + if (x % 1 === 0) { + x += 0.5; + } + if (y % 1 === 0) { + y += 0.5; + } + ctx.moveTo(x, y); + } + private lineTo(ctx: any, x: number, y: number): void { + if (x % 1 === 0) { + x += 0.5; + } + if (y % 1 === 0) { + y += 0.5; + } + ctx.lineTo(x, y); + } + drawToCanvas(ctxDownload: CanvasRenderingContext2D, topPadding: number): CanvasRenderingContext2D { + ctxDownload.drawImage(this.elementGridCanvas, 0, topPadding); + return ctxDownload; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/class/scatter-chart-mouse-manager.class.ts b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/class/scatter-chart-mouse-manager.class.ts new file mode 100644 index 000000000000..3c421257c3af --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/class/scatter-chart-mouse-manager.class.ts @@ -0,0 +1,332 @@ +import * as moment from 'moment-timezone'; +import { Observable, Subject } from 'rxjs'; +import { IOptions } from './scatter-chart.class'; +import { ScatterChartSizeCoordinateManager } from './scatter-chart-size-coordinate-manager.class'; + +export class ScatterChartMouseManager { + elementAxisWrapper: HTMLElement; + elementXAxisLabelWrapper: HTMLElement; + elementXAxisLabel: HTMLElement; + elementYAxisLabelWrapper: HTMLElement; + elementYAxisLabel: HTMLElement; + elementDragWrapper: HTMLElement; + elementDragArea: HTMLElement; + private outDragArea: Subject; + onDragArea$: Observable; + constructor( + private options: IOptions, + private coordinateManager: ScatterChartSizeCoordinateManager, + private elementContainer: HTMLElement + ) { + this.outDragArea = new Subject(); + this.onDragArea$ = this.outDragArea.asObservable(); + + const padding = this.coordinateManager.getPadding(); + const areaWidth = this.coordinateManager.getWidth() - padding.left - padding.right; + const areaHeight = this.coordinateManager.getHeight() - padding.top - padding.bottom; + const redLineWidth = 10; + + this.initWrapperElement(areaWidth, areaHeight); + this.initXLabelElement(areaHeight, redLineWidth); + this.initYLabelElement(padding.left, redLineWidth); + this.initDragElement(); + this.initEvent(); + } + private initWrapperElement(areaWidth: number, areaHeight: number): void { + this.elementAxisWrapper = document.createElement('div'); + this.elementAxisWrapper.setAttribute('style', ` + top: ${this.coordinateManager.getTopPadding()}px; + left: ${this.coordinateManager.getLeftPadding()}px; + width: ${areaWidth}px; + height: ${areaHeight}px; + cursor: crosshair; + z-index: 600; + position: absolute; + background-color: rgba(0,0,0,0); + `); + this.elementAxisWrapper.setAttribute('class', 'overlay'); + this.elementContainer.appendChild(this.elementAxisWrapper); + } + private initXLabelElement(areaHeight: number, redLineWidth: number): void { + this.elementXAxisLabelWrapper = document.createElement('div'); + this.elementXAxisLabelWrapper.draggable = false; + this.elementXAxisLabelWrapper.setAttribute('style', ` + top: ${areaHeight + redLineWidth}px; + left: 0px; + color: #FFF; + width: 80px; + display: none; + position: absolute; + text-align: center; + background: #000; + font-family: monospace; + margin-left: ${-(56 / 2)}px; + ` + this.options.axisLabelStyle); + this.elementXAxisLabel = document.createElement('span'); + const elementXLine = document.createElement('div'); + elementXLine.setAttribute('style', ` + top: ${-redLineWidth}px; + left: 27px; + height: ${redLineWidth}px; + position: absolute; + border-left: 1px solid red; + `); + this.elementXAxisLabelWrapper.appendChild(this.elementXAxisLabel); + this.elementXAxisLabelWrapper.appendChild(elementXLine); + this.elementAxisWrapper.appendChild(this.elementXAxisLabelWrapper); + } + private initYLabelElement(paddingLeft: number, redLineWidth: number): void { + this.elementYAxisLabelWrapper = document.createElement('div'); + this.elementYAxisLabelWrapper.draggable = false; + this.elementYAxisLabelWrapper.setAttribute('style', ` + top: 0px; + left: ${-(paddingLeft - 2)}px; + color: #fff; + width: ${paddingLeft - 2 - redLineWidth}px; + display: none; + position: absolute; + margin-top: ${-redLineWidth}px; + text-align: right; + background: #000; + font-family: monospace; + padding-right: 3px; + vertical-align: middle; + ` + this.options.axisLabelStyle); + this.elementYAxisLabel = document.createElement('span'); + const elementYLine = document.createElement('div'); + elementYLine.setAttribute('style', ` + top: 9px; + right: -10px; + width: ${redLineWidth}px; + position: absolute; + border-top: 1px solid red; + `); + this.elementYAxisLabelWrapper.appendChild(this.elementYAxisLabel); + this.elementYAxisLabelWrapper.appendChild(elementYLine); + this.elementAxisWrapper.appendChild(this.elementYAxisLabelWrapper); + } + private initDragElement(): void { + this.elementDragWrapper = document.createElement('div'); + this.elementDragWrapper.setAttribute('style', ` + top: 0px; + left: 0px; + width: ${this.coordinateManager.getWidth()}px; + height: ${this.coordinateManager.getHeight()}px; + cursor: crosshair; + z-index: 601; + position: absolute; + background-color: rgba(0,0,0,0); + `); + this.elementDragArea = document.createElement('div'); + this.elementDragArea.setAttribute('style', ` + width: 0px; + height: 0px; + display: none; + position: absolute; + border: 1px solid #469AE4; + background-color: rgba(237, 242, 248, 0.5); + `); + this.elementDragWrapper.appendChild(this.elementDragArea); + this.elementContainer.appendChild(this.elementDragWrapper); + } + private initEvent() { + const padding = this.coordinateManager.getPadding(); + const areaWidth = this.coordinateManager.getWidth(); + const areaHeight = this.coordinateManager.getHeight(); + const axisArea = { + leftRevision: this.coordinateManager.getBubbleHalfSize() + padding.left, + width: areaWidth - this.coordinateManager.getBubbleHalfSize() + padding.left - padding.right, + topRevision: padding.top, + height: areaHeight - padding.top - padding.bottom - this.coordinateManager.getBubbleHalfSize() + }; + + let startDrag = false; + let dragStartX = 0; + let dragStartY = 0; + let calculatedOffsetX = 0; + let calculatedOffsetY = 0; + let previousDragX = -1; + let previousDragY = -1; + function forceMouseUp(userMouseUp: boolean) { + startDrag = false; + this.elementDragArea.style.display = 'none'; + if (userMouseUp) { + const fromX = (calculatedOffsetX >= dragStartX ? dragStartX : calculatedOffsetX) - axisArea.leftRevision; + const toX = (calculatedOffsetX >= dragStartX ? calculatedOffsetX : dragStartX) - axisArea.leftRevision; + const fromY = (calculatedOffsetY >= dragStartY ? calculatedOffsetY : dragStartY) - axisArea.topRevision; + const toY = (calculatedOffsetY >= dragStartY ? dragStartY : calculatedOffsetY) - axisArea.topRevision; + this.outDragArea.next({ + x: { + from: Math.max(fromX, 0), + to: Math.min(toX, axisArea.width) + }, + y: { + // y값은 from과 to를 뒤집어서 보내야 함. + from: Math.max(axisArea.height - fromY, 0), + to: Math.min(axisArea.height - toY, axisArea.height) + } + }); + } + this.elementDragArea.style.top = '0px'; + this.elementDragArea.style.left = '0px'; + this.elementDragArea.style.width = '0px'; + this.elementDragArea.style.height = '0px'; + previousDragX = -1; + previousDragY = -1; + } + this.elementDragWrapper.addEventListener('mousedown', (event: MouseEvent) => { + startDrag = true; + dragStartX = calculatedOffsetX = event.offsetX; + dragStartY = calculatedOffsetY = event.offsetY; + this.elementDragArea.style.display = 'block'; + this.elementDragArea.style.top = dragStartY + 'px'; + this.elementDragArea.style.left = dragStartX + 'px'; + event.preventDefault(); + }); + this.elementDragWrapper.addEventListener('mouseup', (event: MouseEvent) => { + forceMouseUp.call(this, true); + event.preventDefault(); + }); + + this.elementDragWrapper.addEventListener('mousemove', (event: MouseEvent) => { + calculatedOffsetX += event.movementX; + calculatedOffsetY += event.movementY; + if (startDrag) { + this.checkAxisLabel(calculatedOffsetX, calculatedOffsetY, axisArea); + if (previousDragX !== calculatedOffsetX) { + if (calculatedOffsetX <= areaWidth) { + if (calculatedOffsetX >= dragStartX) { + this.elementDragArea.style.left = dragStartX + 'px'; + this.elementDragArea.style.width = (calculatedOffsetX - dragStartX) + 'px'; + } else { + this.elementDragArea.style.left = calculatedOffsetX + 'px'; + this.elementDragArea.style.width = (dragStartX - calculatedOffsetX) + 'px'; + } + previousDragX = calculatedOffsetX; + } + } + if (previousDragY !== calculatedOffsetY) { + if (calculatedOffsetY <= areaHeight) { + if (calculatedOffsetY >= dragStartY) { + this.elementDragArea.style.top = dragStartY + 'px'; + this.elementDragArea.style.height = (calculatedOffsetY - dragStartY) + 'px'; + } else { + this.elementDragArea.style.top = calculatedOffsetY + 'px'; + this.elementDragArea.style.height = (dragStartY - calculatedOffsetY) + 'px'; + } + previousDragY = calculatedOffsetY; + } + } + } else { + this.checkAxisLabel(event.offsetX, event.offsetY, axisArea); + } + event.preventDefault(); + }); + this.elementDragWrapper.addEventListener('mouseleave', (event: MouseEvent) => { + forceMouseUp.call(this, false); + this.hideAxisLabel(); + event.preventDefault(); + return false; + }); + } + private checkAxisLabel(offsetX: number, offsetY: number, axisArea: any): void { + if (!this.options.showMouseGuideLine) { + return; + } + const x = offsetX - axisArea.leftRevision; + const y = offsetY - axisArea.topRevision; + if (x >= 0 && x <= axisArea.width || y >= 0 && y <= axisArea.height) { + if (x >= 0 && x <= axisArea.width) { + this.showXAxisLabel(); + } else { + this.hideXAxisLabel(); + } + if (y >= 0 && y <= axisArea.height) { + this.showYAxisLabel(); + } else { + this.hideYAxisLabel(); + } + this.setAndMoveAxisLabel(x, y); + } else { + this.hideAxisLabel(); + } + // if (x >= 0 && x <= axisArea.width && y >= 0 && y <= axisArea.height) { + // this.showAxisLabel(); + // this.setAndMoveAxisLabel(x, y); + // } else { + // this.hideAxisLabel(); + // } + } + private setAndMoveAxisLabel(x: number, y: number): void { + const height = this.coordinateManager.getHeight(); + const padding = this.coordinateManager.getPadding(); + const bubbleHalfSize = this.coordinateManager.getBubbleHalfSize(); + const xLabel = moment(this.coordinateManager.parseMouseXToXData(x - bubbleHalfSize)).tz(this.options.timezone).format(this.options.dateFormat[1]); + const yLabel = this.coordinateManager.parseMouseYToYData(height - y - padding.bottom - padding.top - bubbleHalfSize); + this.elementXAxisLabel.textContent = xLabel; + this.elementYAxisLabel.textContent = yLabel.toLocaleString(); + this.elementXAxisLabelWrapper.style.left = (x + bubbleHalfSize) + 'px'; + this.elementYAxisLabelWrapper.style.top = (y + bubbleHalfSize) + 'px'; + } + showXAxisLabel(): void { + this.elementXAxisLabelWrapper.style.display = 'block'; + } + showYAxisLabel(): void { + this.elementYAxisLabelWrapper.style.display = 'block'; + } + showAxisLabel(): void { + this.showXAxisLabel(); + this.showYAxisLabel(); + } + hideXAxisLabel(): void { + this.elementXAxisLabelWrapper.style.display = 'none'; + } + hideYAxisLabel(): void { + this.elementYAxisLabelWrapper.style.display = 'none'; + } + hideAxisLabel(): void { + this.hideXAxisLabel(); + this.hideYAxisLabel(); + } + // triggerDrag(welFakeSelectBox) { + // var oDragAreaPosition = this._adjustSelectBoxForChart(welFakeSelectBox); + // this._oCallback.onSelect(oDragAreaPosition, this._parseCoordinatesToXY(oDragAreaPosition)); + // } + // _adjustSelectBoxForChart(welSelectBox) { + // var oPadding = this._oSCManager.getPadding(); + // var bubbleSize = this._oSCManager.getBubbleSize(); + // var nMinTop = oPadding.top + bubbleSize; + // var nMinLeft = oPadding.left + bubbleSize; + // var nMaxRight = this._oSCManager.getWidth() - oPadding.right - bubbleSize; + // var nMaxBottom = this._oSCManager.getHeight() - oPadding.bottom - bubbleSize; + + // var nLeft = parseInt(welSelectBox.css("left"), 10); + // var nRight = nLeft + welSelectBox.width(); + // var nTop = parseInt(welSelectBox.css("top"), 10); + // var nBottom = nTop + welSelectBox.height(); + + // nTop = Math.max(nTop, nMinTop); + // nLeft = Math.max(nLeft, nMinLeft); + // nRight = Math.min(nRight, nMaxRight); + // nBottom = Math.min(nBottom, nMaxBottom); + + // var oNextInfo = { + // "top": nTop, + // "left": nLeft, + // "width": nRight - nLeft, + // "height": nBottom - nTop + // }; + // welSelectBox.animate(oNextInfo, 200); + // return oNextInfo; + // } + // _parseCoordinatesToXY(oPosition) { + // var oPadding = this._oSCManager.getPadding(); + // var bubbleSize = this._oSCManager.getBubbleSize(); + // return { + // "fromX": this._oSCManager.parseMouseXToXData(oPosition.left - oPadding.left - bubbleSize), + // "toX": this._oSCManager.parseMouseXToXData(oPosition.left + oPosition.width - oPadding.left - bubbleSize), + // "fromY": this._oSCManager.parseMouseYToYData(this._oSCManager.getHeight() - (oPadding.bottom + bubbleSize) - (oPosition.top + oPosition.height)), + // "toY": this._oSCManager.parseMouseYToYData(this._oSCManager.getHeight() - (oPadding.bottom + bubbleSize) - oPosition.top) + // }; + // } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/class/scatter-chart-renderer-manager.class.ts b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/class/scatter-chart-renderer-manager.class.ts new file mode 100644 index 000000000000..7a45a8a2cf5a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/class/scatter-chart-renderer-manager.class.ts @@ -0,0 +1,247 @@ +import { IOptions } from './scatter-chart.class'; +import { DataIndex, ScatterChartDataBlock } from './scatter-chart-data-block.class'; +import { ScatterChartSizeCoordinateManager } from './scatter-chart-size-coordinate-manager.class'; +import { ScatterChartTransactionTypeManager } from './scatter-chart-transaction-type-manager.class'; + +export class ScatterChartRendererManager { + private canvasMap: {[key: string]: HTMLCanvasElement[]}; + private ctxMap: {[key: string]: CanvasRenderingContext2D[]}; + + private elementScroller: HTMLElement; + private scrollOrder: number[]; + private requestAnimationFrameRef: any; + constructor(private options: IOptions, private coordinateManager: ScatterChartSizeCoordinateManager, private elementContainer: any, private typeManager: ScatterChartTransactionTypeManager) { + this.initVariable(); + this.initCanvasWrapper(); + } + private initVariable(): void { + this.canvasMap = {}; + this.ctxMap = {}; + } + private initCanvasWrapper() { + let zIndex = 100; + const bubbleSize = this.coordinateManager.getBubbleSize(); + const bubbleHalfSize = this.coordinateManager.getBubbleHalfSize(); + const widthOfChartSpace = this.coordinateManager.getWidthOfChartSpace(); + const heightOfChartSpace = this.coordinateManager.getHeightOfChartSpace(); + + this.elementScroller = document.createElement('div'); + this.elementScroller.setAttribute('style', 'top: 0px; left: 0px; position: absolute; background-color: grey; height:' + (heightOfChartSpace + bubbleSize) + 'px' ); + this.elementScroller.setAttribute('class', 'canvas-scroller'); + + const elementCanvasWrapper = document.createElement('div'); + const elementCanvasWrapperStyles = ` + top: ${this.coordinateManager.getTopPadding()}px; + left: ${(this.coordinateManager.getLeftPadding() + bubbleHalfSize)}px; + width: ${widthOfChartSpace}px; + height: ${heightOfChartSpace + bubbleSize}px; + z-index: ${zIndex++}; + overflow: hidden; + position: absolute; + `; + elementCanvasWrapper.setAttribute('class', 'canvas-wrapper'); + elementCanvasWrapper.setAttribute('style', elementCanvasWrapperStyles); + elementCanvasWrapper.appendChild(this.elementScroller); + this.elementContainer.appendChild(elementCanvasWrapper); + } + makeDataCanvas(dataBlock: ScatterChartDataBlock, agentList: string[]): void { + let zIndex = 110; + const bubbleSize = this.coordinateManager.getBubbleSize(); + const prefix = this.options.prefix; + const heightOfChartSpace = this.coordinateManager.getHeightOfChartSpace(); + const canvasWidth = this.coordinateManager.getCanvasWidth(); + + agentList.forEach((agentName: string, index: number) => { + this.typeManager.getTypeNameList().forEach((typeName: string) => { + const key = `${agentName}-${prefix}-${typeName}`; + if ((key in this.canvasMap) === false) { + const canvas1 = this.createCanvas({ + width: canvasWidth + 'px', + height: (heightOfChartSpace + bubbleSize) + 'px', + 'data-agent': agentName, + 'data-type': typeName, + 'data-key': key + }, ` + top: 0px; + left: 0px; + z-index: ${zIndex++}; + position: absolute; + `); + const canvas2 = this.createCanvas({ + width: canvasWidth + 'px', + height: (heightOfChartSpace + bubbleSize) + 'px', + 'data-agent': agentName, + 'data-type': typeName, + 'data-key': key + }, ` + top: 0px; + left: ${canvasWidth}px; + z-index: ${zIndex++}; + position: absolute; + `); + this.elementScroller.appendChild(canvas1); + this.elementScroller.appendChild(canvas2); + this.canvasMap[key] = [canvas1, canvas2]; + this.ctxMap[key] = [canvas1.getContext('2d'), canvas2.getContext('2d')]; + } + }); + }); + this.scrollOrder = [0, 1]; + } + private createCanvas(attrs: object, styles: string): HTMLCanvasElement { + const elementCanvas = document.createElement('canvas'); + Object.keys(attrs).forEach((key: string) => { + elementCanvas.setAttribute(key, attrs[key]); + }); + elementCanvas.setAttribute('style', styles); + return elementCanvas; + } + setTypeView(agentName: string, typeName: string, typeChecked: boolean): void { + const viewType = typeChecked ? 'block' : 'none'; + Object.keys(this.canvasMap).forEach((key: string) => { + this.canvasMap[key].forEach((canvas: HTMLCanvasElement) => { + if (key.endsWith(typeName)) { + canvas.style.display = viewType; + } + }); + }); + } + toggle(bIsAll: boolean, agentName: string, type: string): void { + Object.keys(this.canvasMap).forEach((key: string) => { + this.canvasMap[key].forEach((canvas: HTMLCanvasElement) => { + if ((bIsAll || key.startsWith(agentName)) && key.endsWith(type)) { + if ( canvas.style.display === 'none' ) { + canvas.style.display = 'block'; + } else { + canvas.style.display = 'none'; + } + } + }); + }); + } + showSelectedAgent(agentName: string): void { + if (agentName === '') { + Object.keys(this.canvasMap).forEach((key: string) => { + this.canvasMap[key].forEach((canvas: HTMLCanvasElement) => { + if (this.typeManager.isCheckedByName(key.split('-').pop())) { + canvas.style.display = 'block'; + } else { + canvas.style.display = 'none'; + } + }); + }); + } else { + Object.keys(this.canvasMap).forEach((key: string) => { + if (key.startsWith(agentName)) { + this.canvasMap[key].forEach((canvas: HTMLCanvasElement) => { + if (this.typeManager.isCheckedByName(key.split('-').pop())) { + canvas.style.display = 'block'; + } + }); + } else { + this.canvasMap[key].forEach((canvas: HTMLCanvasElement) => { + canvas.style.display = 'none'; + }); + } + }); + } + } + drawTransaction(key: string, color: string, data: number[]): void { + const bubbleRadius = this.options.bubbleRadius; + const rangeY = this.coordinateManager.getY(); + + let x = (data[DataIndex.X] - this.coordinateManager.getInitFromX()) * this.coordinateManager.getPixelPerTime(); + const y = this.coordinateManager.parseYDataToYChart(Math.min(rangeY.to, Math.max(rangeY.from, data[DataIndex.Y]))); + const r = this.coordinateManager.parseZDataToZChart(bubbleRadius); + + let ctxIndex = this.scrollOrder[0]; + const canvasWidth = this.coordinateManager.getCanvasWidth(); + const zeroLeft = Math.round(parseInt(this.canvasMap[key][ctxIndex].style.left, 10)); + const currentMaxX = zeroLeft + canvasWidth; + if (x > currentMaxX) { + ctxIndex = this.scrollOrder[1]; + x -= currentMaxX; + } else { + x -= zeroLeft; + } + + this.ctxMap[key][ctxIndex].beginPath(); + this.ctxMap[key][ctxIndex].fillStyle = color; + this.ctxMap[key][ctxIndex].strokeStyle = color; + this.ctxMap[key][ctxIndex].arc(x, y, r, 0, Math.PI * 2, true); + this.ctxMap[key][ctxIndex].globalAlpha = 0.3 + (0.1 * data[DataIndex.GROUP_COUNT]); + this.ctxMap[key][ctxIndex].fill(); + } + moveChart(moveXValue: number, duration: number): void { + const canvasWidth = this.coordinateManager.getCanvasWidth(); + const height = this.coordinateManager.getHeight(); + const baseLeft = parseInt(this.elementScroller.style.left, 10); + const nextLeft = baseLeft - moveXValue; + + const self = this; + let startTime = -1; + function moveElement(timestamp: number, inMoveXValue: number, inDuration: number): void { + const runTime = timestamp - startTime; + let progress = runTime / inDuration; + progress = Math.min(progress, 1); + + self.elementScroller.style.left = (baseLeft + -(inMoveXValue * progress)).toFixed(2) + 'px'; + if (runTime < inDuration) { + self.requestAnimationFrameRef = window.requestAnimationFrame((time: number) => { + moveElement(time, inMoveXValue, inDuration); + }); + } else { + const orderFirst = self.scrollOrder[0]; + const orderSecond = self.scrollOrder[1]; + let bOverBoundary = false; + Object.keys(self.canvasMap).forEach((key: string): void => { + const canvasArr = self.canvasMap[key]; + if (Math.abs(nextLeft) > (parseInt(canvasArr[orderFirst].style.left, 10) + canvasWidth)) { + bOverBoundary = true; + canvasArr[orderFirst].style.left = (parseInt(canvasArr[orderSecond].style.left, 10) + canvasWidth) + 'px'; + self.ctxMap[key][orderFirst].clearRect(0, 0, canvasWidth, height); + } + }); + if (bOverBoundary) { + self.scrollOrder[0] = orderSecond; + self.scrollOrder[1] = orderFirst; + } + } + } + this.requestAnimationFrameRef = window.requestAnimationFrame((timestamp: number) => { + startTime = timestamp; + moveElement(timestamp, moveXValue, 300); + }); + } + reset() { + window.cancelAnimationFrame(this.requestAnimationFrameRef); + this.scrollOrder = [0, 1]; + this.elementScroller.style.left = '0px'; + this.elementScroller.innerHTML = ''; + this.initVariable(); + } + clear() { + const width = this.coordinateManager.getCanvasWidth(); + const height = this.coordinateManager.getHeight(); + + Object.keys(this.ctxMap).forEach((key: string) => { + this.ctxMap[key].forEach((ctx: CanvasRenderingContext2D) => { + ctx.clearRect(0, 0, width, height); + }); + }); + } + drawToCanvas(ctxDownload: CanvasRenderingContext2D, topPadding: number): CanvasRenderingContext2D { + const padding = this.coordinateManager.getPadding(); + const bubbleHalfSize = this.coordinateManager.getBubbleHalfSize(); + // scatter + Object.keys(this.canvasMap).forEach((key: string) => { + this.canvasMap[key].forEach((canvas: HTMLCanvasElement) => { + if (canvas.style.display !== 'none') { + ctxDownload.drawImage(canvas, padding.left + bubbleHalfSize, padding.top + topPadding); + } + }); + }); + ctxDownload.textBaseline = 'top'; + return ctxDownload; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/class/scatter-chart-size-coordinate-manager.class.ts b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/class/scatter-chart-size-coordinate-manager.class.ts new file mode 100644 index 000000000000..473072c8f132 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/class/scatter-chart-size-coordinate-manager.class.ts @@ -0,0 +1,123 @@ +import { IOptions } from './scatter-chart.class'; + +export class ScatterChartSizeCoordinateManager { + private initFromX: number; // for realtime + private widthOfChartSpace: number; + private heightOfChartSpace: number; + private timePerPixel: number; + private pixelPerTime: number; + constructor(private options: IOptions) { + this.initVar(); + } + private initVar(): void { + const bubbleRaduis = this.options.bubbleRadius; + + this.initFromX = this.options.x.from; + this.widthOfChartSpace = (this.options.width - (this.options.padding.left + this.options.padding.right)) - bubbleRaduis * 2; + this.heightOfChartSpace = (this.options.height - (this.options.padding.top + this.options.padding.bottom)) - bubbleRaduis * 2; + + this.calcuUnitValue(); + } + private calcuUnitValue(): void { + this.timePerPixel = this.getGapX() / this.widthOfChartSpace; + this.pixelPerTime = this.widthOfChartSpace / this.getGapX(); + } + getInitFromX(): number { + return this.initFromX; + } + getLeftPadding(): number { + return this.options.padding.left; + } + getTopPadding(): number { + return this.options.padding.top; + } + getCanvasWidth(): number { + return this.widthOfChartSpace; + } + getWidth(): number { + return this.options.width; + } + getHeight(): number { + return this.options.height; + } + getX(): {from: number, to: number} { + return { + from: this.options.x.from, + to: this.options.x.to + }; + } + resetInitX(fromX: number): void { + this.initFromX = fromX; + } + setX(from: number, to: number, bReset?: boolean): void { + this.options.x.from = from; + this.options.x.to = to; + this.calcuUnitValue(); + } + getY(): {from: number, to: number} { + return { + from: this.options.y.from, + to: this.options.y.to + }; + } + setY(from: number, to: number): void { + this.options.y.from = from; + this.options.y.to = to; + } + getPadding(): {top: number, left: number, right: number, bottom: number} { + return { + top: this.options.padding.top, + left: this.options.padding.left, + right: this.options.padding.right, + bottom: this.options.padding.bottom + }; + } + getBubbleHalfSize(): number { + return this.options.bubbleRadius; + } + getBubbleSize(): number { + return this.options.bubbleRadius * 2; + } + getWidthOfChartSpace(): number { + return this.widthOfChartSpace; + } + getHeightOfChartSpace(): number { + return this.heightOfChartSpace; + } + getPixelPerTime(): number { + return this.pixelPerTime; + } + getTimePerPixel(): number { + return this.timePerPixel; + } + parseXDataToXChart(x: number, plusPadding: boolean): number { + return Math.round( ( ( x - this.options.x.from ) / this.getGapX() ) * this.widthOfChartSpace ) + this.getBubbleHalfSize() + ( plusPadding ? this.options.padding.left : 0 ); + } + parseYDataToYChart(y: number): number { + return Math.round(this.heightOfChartSpace - (((y - this.options.y.from) / this.getGapY()) * this.heightOfChartSpace)) + this.getBubbleHalfSize(); + } + parseZDataToZChart(z: number): number { + return Math.round(((z - this.options.z.from) / this.getGapZ()) * this.getBubbleHalfSize()); + } + getXOfPixel(): number { + return Math.round(this.getGapX() / this.widthOfChartSpace); + } + getYOfPixel(): number { + return Math.round(this.getGapY() / this.heightOfChartSpace); + } + parseMouseXToXData(x: number): number { + return Math.round((x / this.widthOfChartSpace) * this.getGapX()) + this.options.x.from; + } + parseMouseYToYData(y: number): number { + return Math.round(this.options.y.from + ((y / this.heightOfChartSpace) * this.getGapY())); + } + getGapX(): number { + return this.options.x.to - this.options.x.from; + } + getGapY(): number { + return this.options.y.to - this.options.y.from; + } + getGapZ(): number { + return this.options.z.to - this.options.z.from; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/class/scatter-chart-transaction-type-manager.class.ts b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/class/scatter-chart-transaction-type-manager.class.ts new file mode 100644 index 000000000000..6219843cb74e --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/class/scatter-chart-transaction-type-manager.class.ts @@ -0,0 +1,53 @@ +import { ITypeInfo } from './scatter-chart.class'; + +export class ScatterChartTransactionTypeManager { + private dataByIndex: { [key: number]: ITypeInfo } = {}; + private dataByName: { [key: string]: ITypeInfo } = {}; + + constructor(typeInfos: ITypeInfo[]) { + this.initData(typeInfos); + } + private initData(typeInfos: ITypeInfo[]): void { + typeInfos.forEach((typeInfo: ITypeInfo, index: number) => { + const newTypeInfo = { + name: typeInfo.name, + color: typeInfo.color, + order: typeInfo.order, + index: index, + checked: true + }; + this.dataByName[typeInfo.name] = newTypeInfo; + this.dataByIndex[index] = newTypeInfo; + }); + } + getTypeNameList(): string[] { + return Object.keys(this.dataByName); + } + setChecked(name: string, checked: boolean): void { + this.dataByName[name].checked = checked; + } + isCheckedByName(name: string): boolean { + return this.dataByName[name].checked; + } + isCheckedByIndex(index: number): boolean { + return this.dataByIndex[index].checked; + } + getColorByIndex(index: number): string { + return this.dataByIndex[index].color; + } + getColorByName(name: string): string { + return this.dataByName[name].color; + } + getNameByIndex(index: number): string { + return this.dataByIndex[index].name; + } + getCheckedTypeNameList(): string[] { + const list = []; + Object.keys(this.dataByName).forEach((name: string) => { + if (this.dataByName[name].checked) { + list.push(name); + } + }); + return list; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/class/scatter-chart.class.ts b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/class/scatter-chart.class.ts new file mode 100644 index 000000000000..9e24b05c21f4 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/class/scatter-chart.class.ts @@ -0,0 +1,520 @@ +import * as moment from 'moment-timezone'; +import { Subject, BehaviorSubject, Observable } from 'rxjs'; +import { ScatterChartSizeCoordinateManager } from './scatter-chart-size-coordinate-manager.class'; +import { ScatterChartRendererManager } from './scatter-chart-renderer-manager.class'; +import { ScatterChartDataBlock } from './scatter-chart-data-block.class'; +import { ScatterChartGridRenderer } from './scatter-chart-grid-renderer.class'; +import { ScatterChartAxisRenderer } from './scatter-chart-axis-renderer.class'; +import { ScatterChartTransactionTypeManager } from './scatter-chart-transaction-type-manager.class'; +import { ScatterChartMouseManager } from './scatter-chart-mouse-manager.class'; + +export interface IOptions { + mode: string; + prefix: string; + width: number; + height: number; + bubbleRadius: number; + padding: { + top: number; + left: number; + right: number; + bottom: number; + }; + axisLabelStyle: string; + axisColor: string; + lineColor: string; + x: { + from: number; + to: number; + }; + y: { + from: number; + to: number; + }; + z: { + from: number; + to: number; + }; + ticks: { + x: number; + y: number; + }; + tickLength: { + x: number; + y: number; + }; + gridAxisStyle: { + lineDash: number[]; + lineWidth: number; + globalAlpha: number; + strokeStyle: string + }; + axisUnit: { + x: string; + y: string; + }; + showMouseGuideLine: boolean; + animationDuration: number; + timezone: string; + dateFormat: string[]; +} +export interface ITypeInfo { + index?: number; + name?: string; + color: string; + order: number; + checked?: boolean; +} + +export class ScatterChart { + static MODE = { + REALTIME: 'realtime', + STATIC: 'static' + }; + private options: IOptions; + private typeManager: ScatterChartTransactionTypeManager; + private gridRenderer: ScatterChartGridRenderer; + private axisRenderer: ScatterChartAxisRenderer; + private coordinateManager: ScatterChartSizeCoordinateManager; + private rendererManager: ScatterChartRendererManager; + private mouseManager: ScatterChartMouseManager; + private dataBlocks: ScatterChartDataBlock[] = []; + private agentList: string[] = []; + private selectedAgent = ''; + + private downloadElement: HTMLElement; + + private outTransactionCount: BehaviorSubject<{ [key: string]: number }>; + private outSelect: Subject = new Subject(); + private outError: Subject = new Subject(); + private outChangeRangeX: Subject<{from: number, to: number}> = new Subject(); + onSelect$: Observable; + onError$: Observable; + onChangeRangeX$: Observable<{from: number, to: number}>; + onChangeTransactionCount$: Observable<{ [key: string]: number }>; + + constructor( + private mode: string, + private element: any, + private fromX: number, + private toX: number, + private fromY: number, + private toY: number, + typeInfos: ITypeInfo[], + private application: string, + agent: string, + private width: number, + private height: number, + private timezone: string, + private dateFormat: string[] + ) { + this.downloadElement = document.createElement('a'); + this.selectedAgent = agent; + this.setOptions(); + this.initManagers(typeInfos); + + this.onSelect$ = this.outSelect.asObservable(); + this.onError$ = this.outError.asObservable(); + this.onChangeRangeX$ = this.outChangeRangeX.asObservable(); + this.outTransactionCount = new BehaviorSubject(this.getTransactionCount(true)); + this.onChangeTransactionCount$ = this.outTransactionCount.asObservable(); + } + private isAllowedAgent(agent: string): boolean { + return this.selectedAgent === '' || this.selectedAgent === agent; + } + private getTransactionCount(isInit: boolean) { + const count: { [key: string]: number } = { }; + const xRange = this.coordinateManager.getX(); + if (isInit) { + this.typeManager.getTypeNameList().forEach((typeName: string) => { + count[typeName] = 0; + }); + } else { + this.typeManager.getTypeNameList().forEach((typeName: string) => { + count[typeName] = 0; + this.dataBlocks.forEach((dataBlock: ScatterChartDataBlock) => { + const dataBlockXRange = dataBlock.getXRange(); + if (dataBlockXRange.to >= xRange.from) { + const agentList = dataBlock.getAgentList(); + agentList.forEach((agentName: string) => { + if (this.isAllowedAgent(agentName)) { + count[typeName] += dataBlock.getCount(agentName, typeName, xRange.from, xRange.to); + } + }); + } + }); + }); + } + return count; + } + private setOptions() { + this.options = { + mode: this.mode, + prefix: 'scatter-chart-' + (Math.random() * 10000), + width: this.width, + height: this.height, + bubbleRadius: 3, + padding: { + top: 20, + left: 60, + right: 40, + bottom: 40 + }, + axisLabelStyle: 'font-size:10px; line-height: 12px; padding-top: 3px', + axisColor: '#000', + lineColor: '#3D3D3D', + x: { + from: this.fromX, + to: this.toX + }, + y: { + from: this.fromY, + to: this.toY + }, + z: { + from: 0, + to: 5 + }, + ticks: { + x: 5, + y: 5 + }, + tickLength: { + x: 10, + y: 10 + }, + gridAxisStyle: { + lineDash: [1, 0], + lineWidth: 1, + globalAlpha: 1, + strokeStyle : '#e3e3e3' + }, + axisUnit: { + x: '', + y: '(ms)' + }, + showMouseGuideLine: true, + animationDuration: 300, + timezone: this.timezone, + dateFormat: this.dateFormat + }; + } + private initManagers(typeInfos: ITypeInfo[]): void { + this.typeManager = new ScatterChartTransactionTypeManager(typeInfos); + this.coordinateManager = new ScatterChartSizeCoordinateManager(this.options); + this.gridRenderer = new ScatterChartGridRenderer(this.options, this.coordinateManager, this.element); + this.axisRenderer = new ScatterChartAxisRenderer(this.options, this.coordinateManager, this.element); + this.rendererManager = new ScatterChartRendererManager(this.options, this.coordinateManager, this.element, this.typeManager); + this.mouseManager = new ScatterChartMouseManager(this.options, this.coordinateManager, this.element); + this.mouseManager.onDragArea$.subscribe((area: any) => { + const fromX = this.coordinateManager.parseMouseXToXData(area.x.from); + const toX = this.coordinateManager.parseMouseXToXData(area.x.to); + const fromY = this.coordinateManager.parseMouseYToYData(area.y.from); + const toY = this.coordinateManager.parseMouseYToYData(area.y.to); + if (this.hasDataByXY(fromX, toX, fromY, toY)) { + this.outSelect.next({ + x: { + from: fromX, + to: toX + }, + y: { + from: fromY, + to: toY + }, + drag: area, + type: this.typeManager.getCheckedTypeNameList(), + agent: this.selectedAgent + }); + } + }); + } + changeShowType(typeInfo: {name: string, checked: boolean}): void { + this.typeManager.setChecked(typeInfo.name, typeInfo.checked); + this.rendererManager.setTypeView(this.selectedAgent, typeInfo.name, typeInfo.checked); + } + private redrawDataBlock(): void { + this.dataBlocks.forEach((dataBlock: ScatterChartDataBlock) => { + this.drawDataBlock(dataBlock); + }); + } + reset(application: string, agent: string, fromX: number, toX: number, mode: string): void { + this.fromX = fromX; + this.toX = toX; + this.options.mode = this.mode = mode; + this.coordinateManager.resetInitX(fromX); + this.coordinateManager.setX(fromX, toX); + this.application = application; + this.selectedAgent = agent; + + this.dataBlocks = []; + this.agentList = []; + this.axisRenderer.reset(); + this.rendererManager.reset(); + this.outTransactionCount.next(this.getTransactionCount(true)); + } + addAgent(agentList: string[]): void { + agentList.forEach((agentName: string) => { + if (this.agentList.lastIndexOf(agentName) === -1) { + this.agentList.push(agentName); + } + }); + this.agentList.sort(); + } + addData(dataBlock: ScatterChartDataBlock, nextRequestTime?: number): void { + const xRange = this.coordinateManager.getX(); + const dataBlockRange = dataBlock.getXRange(); + if (this.options.mode === ScatterChart.MODE.STATIC && dataBlockRange.from >= xRange.to) { + return; + } + this.addAgent(dataBlock.getAgentList()); + this.dataBlocks.push(dataBlock); + // if (this._bPause === true) return; + this.drawDataBlock(dataBlock); + if (this.options.mode !== ScatterChart.MODE.STATIC) { + this.moveChart(dataBlock, nextRequestTime || 300); + this.removeBubble(); + } + this.changeSelectedAgent(this.selectedAgent); + this.outTransactionCount.next(this.getTransactionCount(false)); + } + private drawDataBlock(dataBlock: ScatterChartDataBlock): void { + const prefix = this.options.prefix; + this.rendererManager.makeDataCanvas(dataBlock, dataBlock.getAgentList()); + this.agentList.forEach((agentName: string) => { + for (let i = 0, nLen = dataBlock.countByAgent(agentName) ; i < nLen ; i++) { + const data = dataBlock.getDataByAgentAndIndex(agentName, i); + const groupCount = dataBlock.getGroupCount(data); + if (groupCount !== 0) { + const typeIndex = dataBlock.getTypeIndex(data); + const typeName = this.typeManager.getNameByIndex(typeIndex); + const typeColor = this.typeManager.getColorByIndex(typeIndex); + this.rendererManager.drawTransaction(`${agentName}-${prefix}-${typeName}`, typeColor, data); + } + } + }); + } + private moveChart(dataBlock: ScatterChartDataBlock, nextRequestTime: number): void { + const xRange = this.coordinateManager.getX(); + const dataBlockXRange = dataBlock.getXRange(); + const duration = this.options.animationDuration; + + if (dataBlockXRange.from >= xRange.to) { + const moveXTime = dataBlockXRange.to - xRange.to; + const moveXValue = moveXTime * this.coordinateManager.getPixelPerTime(); + this.coordinateManager.setX(xRange.from + moveXTime, xRange.to + moveXTime); + this.axisRenderer.updateAxisValue(true, duration * 2); + this.rendererManager.moveChart(Math.floor(moveXValue), nextRequestTime < duration ? 0 : duration); + this.outChangeRangeX.next({ + from: xRange.from + moveXTime, + to: xRange.to + moveXTime + }); + } + } + private removeBubble() { + const fromX = this.coordinateManager.getX().from; + for (let i = 0 ; i < this.dataBlocks.length ; i++) { + const dataBlock = this.dataBlocks[i]; + if (dataBlock.getXRange().to < fromX) { + this.dataBlocks.shift(); + i--; + } else { + break; + } + } + } + getDataByRange(fromX: number, toX: number, fromY: number, toY: number, selectedAgent: string, selectedType: string[]): any[] { + fromX = +fromX; + toX = +toX; + fromY = +fromY; + toY = +toY; + + const data = []; + const yRange = this.coordinateManager.getY(); + const typeChecker = {}; + selectedType.forEach((type: string) => { + typeChecker[type] = true; + }); + for (let i = 0 ; i < this.dataBlocks.length ; i++) { + const dataBlock = this.dataBlocks[i]; + for (let j = 0, len = dataBlock.getTotalCount(); j < len ; j++) { + const xRange = dataBlock.getXRange(); + if ( xRange.to < fromX || xRange.from > toX ) { + continue; + } + const transactionData = dataBlock.getDataByIndex(j); + const agentName = dataBlock.getAgentName(transactionData); + if (selectedAgent === '' || selectedAgent === agentName) { + const x = dataBlock.getX(transactionData); + const y = dataBlock.getY(transactionData); + + if (this.isInRange(fromX, toX, x)) { + if (this.isInRange(fromY, toY, y) || (y > toY && toY <= yRange.to)) { + if (typeChecker[this.typeManager.getNameByIndex(dataBlock.getTypeIndex(transactionData))] === true) { + data.push([dataBlock.getTransactionID(transactionData), x, y]); + } + } + } + } + + } + } + return data; + } + hasDataByXY(fromX: number, toX: number, fromY: number, toY: number): boolean { + fromX = +fromX; + toX = +toX; + fromY = +fromY; + toY = +toY; + + const yRange = this.coordinateManager.getY(); + for (let i = 0 ; i < this.dataBlocks.length ; i++) { + const dataBlock = this.dataBlocks[i]; + for (let j = 0, len = dataBlock.getTotalCount() ; j < len ; j++) { + const transactionData = dataBlock.getDataByIndex(j); + const agentName = dataBlock.getAgentName(transactionData); + if (this.isAllowedAgent(agentName)) { + const x = dataBlock.getX(transactionData); + const y = dataBlock.getY(transactionData); + if (this.isInRange(fromX, toX, x)) { + if (this.typeManager.isCheckedByIndex(dataBlock.getTypeIndex(transactionData))) { + if (this.isInRange(fromY, toY, y) || y > toY && toY <= yRange.to) { + return true; + } + } + } + } + } + } + return false; + } + private isInRange(from: number, to: number, value: number): boolean { + return value >= from && value <= to; + } + // //destroy = function() { + // // var self = this; + // // this._unbindAllEvents(); + // // //this._empty(); + // // $.each(this, function (property, content) { + // // delete self[property]; + // // }); + // // this._bDestroied = true; + // // + // //}; + // //_empty = function() { + // // this._$elContainer.empty(); + // //}; + // //_unbindAllEvents = function() { + // // // this is for drag-selecting. it should be unbinded. + // // jQuery(document).unbind('mousemove').unbind('mouseup'); + // //}; + downloadChartAsImage(extension: string): void { + const xRange = this.coordinateManager.getX(); + const titleArea = 60; + const countArea = 40; + const width = this.coordinateManager.getWidth(); + const height = this.coordinateManager.getHeight() + titleArea + countArea; + + const elementDownloadCanvas = document.createElement('canvas'); + elementDownloadCanvas.setAttribute('width', width + 'px'); + elementDownloadCanvas.setAttribute('height', height + 'px'); + + const ctxDownloadCanvas = elementDownloadCanvas.getContext('2d'); + ctxDownloadCanvas.fillStyle = '#FFFFFF'; + ctxDownloadCanvas.fillRect(0, 0, width, height); + + this.gridRenderer.drawToCanvas(ctxDownloadCanvas, titleArea); + this.axisRenderer.drawToCanvas(ctxDownloadCanvas, titleArea); + this.rendererManager.drawToCanvas(ctxDownloadCanvas, titleArea); + + // draw Title + ctxDownloadCanvas.textAlign = 'left'; + ctxDownloadCanvas.font = '24px monospace'; + ctxDownloadCanvas.fillText(this.application, 10, 10); + ctxDownloadCanvas.font = '14px monospace'; + ctxDownloadCanvas.fillText(moment(xRange.from).tz(this.timezone).format(this.dateFormat[0] + ' ' + this.dateFormat[1]) + ' ~ ' + moment(xRange.to).tz(this.timezone).format(this.dateFormat[0] + ' ' + this.dateFormat[1]), 10, 40); + + // draw Count By Type + this.typeManager.getTypeNameList().forEach((typeName: string, index: number) => { + const color = this.typeManager.getColorByName(typeName); + const check = this.typeManager.isCheckedByName(typeName); + let sumType = 0; + this.dataBlocks.forEach((dataBlock: ScatterChartDataBlock) => { + sumType += dataBlock.getCount(this.selectedAgent, typeName); + }); + ctxDownloadCanvas.textAlign = 'left'; + ctxDownloadCanvas.font = '16px monospace'; + if (check) { + ctxDownloadCanvas.fillStyle = color; + ctxDownloadCanvas.fillRect((index * 200) + 10, height - countArea + 10, 20, 20); + } else { + ctxDownloadCanvas.lineWidth = 4; + ctxDownloadCanvas.strokeStyle = color; + ctxDownloadCanvas.strokeRect((index * 200) + 10, height - countArea + 10, 20, 20); + } + ctxDownloadCanvas.fillStyle = '#000'; + ctxDownloadCanvas.fillText(`${typeName} : ${sumType}`, (index * 200) + 40, height - countArea + 10); + }); + + this.downloadElement.setAttribute('href', elementDownloadCanvas.toDataURL('image/' + extension)); + this.downloadElement.setAttribute('download', `Pinpoint_Scatter_Chart[${moment(xRange.from).tz(this.timezone).format(this.dateFormat[0] + '_' + this.dateFormat[1])}~${moment(xRange.to).tz(this.timezone).format(this.dateFormat[0] + '_' + this.dateFormat[1])}].png`); + this.downloadElement.dispatchEvent(new MouseEvent('click')); + } + // _hideServerError() { + // this._$elContainer.css({ + // 'backgroundImage': 'none' + // }); + // } + // _showServerError() { + // this._$elContainer.css({ + // 'backgroundImage': 'url(' + this.option('errorImage') + ')', + // 'backgroundRepeat': 'no-repeat', + // 'backgroundPosition': '88% 21%', + // 'backgroundSize': '30px 30px' + // }); + // } + redraw() { + this.rendererManager.clear(); + this.axisRenderer.updateAxisValue(); + this.redrawDataBlock(); + } + // abort() { + // this._bPause = true; + // if (this._oDataLoadManager) { + // this._oDataLoadManager.abort(); + // } + // } + changeYRange(newYRange: {from: number, to: number}): void { + this.fromY = +newYRange.from; + this.toY = +newYRange.to; + this.coordinateManager.setY(+newYRange.from, +newYRange.to); + this.redraw(); + } + changeSelectedAgent(agentName: string): void { + this.selectedAgent = agentName; + this.rendererManager.showSelectedAgent(agentName); + this.outTransactionCount.next(this.getTransactionCount(false)); + } + getCurrentAgent(): string { + return this.selectedAgent; + } + isEmpty(): boolean { + if (this.options.mode === ScatterChart.MODE.STATIC) { + let empty = true; + this.dataBlocks.forEach((dataBlock: ScatterChartDataBlock) => { + empty = empty && dataBlock.isEmpty(); + }); + return empty; + } else { + return false; + } + } + getTypeManager(): ScatterChartTransactionTypeManager { + return this.typeManager; + } + setTimezone(timezone: string): void { + this.options.timezone = this.timezone = timezone; + } + setDateFormat(dateFormat: string[]): void { + this.options.dateFormat = this.dateFormat = dateFormat; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/index.ts b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/index.ts new file mode 100644 index 000000000000..1e78ea568c2d --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/index.ts @@ -0,0 +1,45 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { ScatterChartSettingPopupComponent } from './scatter-chart-setting-popup.component'; +import { ScatterChartOptionsComponent } from './scatter-chart-options.component'; +import { ScatterChartStateViewComponent } from './scatter-chart-state-view.component'; +import { ScatterChartComponent } from './scatter-chart.component'; +import { ScatterChartContainerComponent } from './scatter-chart-container.component'; +import { ScatterChartForFilteredMapSideBarContainerComponent } from './scatter-chart-for-filtered-map-side-bar-container.component'; +import { ScatterChartForFilteredMapInfoPerServerContainerComponent } from './scatter-chart-for-filtered-map-info-per-server-container.component'; +import { ScatterChartForInfoPerServerContainerComponent } from './scatter-chart-for-info-per-server-container.component'; +import { ScatterChartForFullScreenModeContainerComponent } from './scatter-chart-for-full-screen-mode-container.component'; +import { ScatterChartInteractionService } from './scatter-chart-interaction.service'; +import { ScatterChartDataService } from './scatter-chart-data.service'; +import { HelpViewerPopupModule } from 'app/core/components/help-viewer-popup'; + +@NgModule({ + declarations: [ + ScatterChartSettingPopupComponent, + ScatterChartOptionsComponent, + ScatterChartStateViewComponent, + ScatterChartComponent, + ScatterChartContainerComponent, + ScatterChartForFilteredMapSideBarContainerComponent, + ScatterChartForFilteredMapInfoPerServerContainerComponent, + ScatterChartForInfoPerServerContainerComponent, + ScatterChartForFullScreenModeContainerComponent + ], + imports: [ + CommonModule, + HelpViewerPopupModule + ], + exports: [ + ScatterChartContainerComponent, + ScatterChartForFilteredMapSideBarContainerComponent, + ScatterChartForFilteredMapInfoPerServerContainerComponent, + ScatterChartForInfoPerServerContainerComponent, + ScatterChartForFullScreenModeContainerComponent + ], + providers: [ + ScatterChartInteractionService, + ScatterChartDataService + ] +}) +export class ScatterChartModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-container.component.css b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-container.component.css new file mode 100644 index 000000000000..5297343d37ac --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-container.component.css @@ -0,0 +1,19 @@ +:host { + position: relative; +} +.l-chart-item { + margin: 15px 0; + height: 285px; + position: relative; + border-top: none; +} +.l-chart-item.l-popup-on:before { + display: block; + z-index: 490; + position: absolute; + content: ''; + width: 100%; + height: 100%; + background: #FFF; + opacity: 0.8; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-container.component.html b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-container.component.html new file mode 100644 index 000000000000..63fe24300af9 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-container.component.html @@ -0,0 +1,42 @@ +
+ + + + +
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-container.component.ts new file mode 100644 index 000000000000..fd1f6ce17b33 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-container.component.ts @@ -0,0 +1,291 @@ +import { Component, ChangeDetectionStrategy, ChangeDetectorRef, OnInit, OnDestroy } from '@angular/core'; +import { combineLatest, of, Subject } from 'rxjs'; +import { takeUntil, filter, delay } from 'rxjs/operators'; +import { TranslateService } from '@ngx-translate/core'; + +import { + WebAppSettingDataService, + NewUrlStateNotificationService, + UrlRouteManagerService, + StoreHelperService, + AnalyticsService, + TRACKED_EVENT_LIST, + DynamicPopupService +} from 'app/shared/services'; +import { Actions } from 'app/shared/store'; +import { UrlPath, UrlPathId } from 'app/shared/models'; +import { EndTime } from 'app/core/models'; +import { ScatterChartDataService } from './scatter-chart-data.service'; +import { ScatterChart } from './class/scatter-chart.class'; +import { ScatterChartComponent } from './scatter-chart.component'; +import { ScatterChartInteractionService } from './scatter-chart-interaction.service'; +import { HELP_VIEWER_LIST, HelpViewerPopupContainerComponent } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; + +@Component({ + selector: 'pp-scatter-chart-container', + templateUrl: './scatter-chart-container.component.html', + styleUrls: ['./scatter-chart-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ScatterChartContainerComponent implements OnInit, OnDestroy { + instanceKey = 'side-bar'; + addWindow = true; + i18nText: { [key: string]: string } = { + NO_DATA: '' + }; + currentRange: { from: number, to: number } = { + from : 0, + to: 0 + }; + selectedTarget: ISelectedTarget; + selectedApplication: string; + unsubscribe: Subject = new Subject(); + hideSettingPopup = true; + selectedAgent: string; + typeInfo = [{ + name: 'failed', + color: '#E95459', + order: 10 + }, { + name: 'success', + color: '#34B994', + order: 20 + }]; + typeCount: object; + width = 460; + height = 230; + min: number; + max: number; + fromX: number; + toX: number; + fromY: number; + toY: number; + application: string; + scatterChartMode: string; + timezone: string; + dateFormat: string[]; + constructor( + private changeDetectorRef: ChangeDetectorRef, + private storeHelperService: StoreHelperService, + private translateService: TranslateService, + private webAppSettingDataService: WebAppSettingDataService, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private urlRouteManagerService: UrlRouteManagerService, + private scatterChartDataService: ScatterChartDataService, + private scatterChartInteractionService: ScatterChartInteractionService, + private analyticsService: AnalyticsService, + private dynamicPopupService: DynamicPopupService + ) {} + ngOnInit() { + this.setScatterY(); + combineLatest( + this.translateService.get('COMMON.NO_DATA') + ).subscribe((i18n: Array) => { + this.i18nText = { + [ScatterChartComponent.I18NTEXT.NO_DATA]: i18n[0] + }; + }); + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe), + filter((urlService: NewUrlStateNotificationService) => { + return urlService.hasValue(UrlPathId.APPLICATION); + }) + ).subscribe((urlService: NewUrlStateNotificationService) => { + this.scatterChartMode = urlService.isRealTimeMode() ? ScatterChart.MODE.REALTIME : ScatterChart.MODE.STATIC; + this.scatterChartDataService.setCurrentMode(this.scatterChartMode); + this.application = urlService.getPathValue(UrlPathId.APPLICATION).getKeyStr(); + this.selectedAgent = ''; + this.currentRange.from = this.fromX = urlService.getStartTimeToNumber(); + this.currentRange.to = this.toX = urlService.getEndTimeToNumber(); + this.changeDetectorRef.detectChanges(); + }); + this.scatterChartDataService.outScatterData$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((scatterData: IScatterData) => { + if (this.scatterChartMode === ScatterChart.MODE.STATIC) { + this.scatterChartInteractionService.addChartData(this.instanceKey, scatterData); + if (scatterData.complete === false) { + this.scatterChartDataService.loadData( + this.selectedApplication.split('^')[0], + this.fromX, + scatterData.resultFrom - 1, + this.getGroupUnitX(), + this.getGroupUnitY(), + false + ); + } + } else if (this.scatterChartMode === ScatterChart.MODE.REALTIME) { + if (scatterData.reset === true) { + this.fromX = scatterData.currentServerTime - this.webAppSettingDataService.getSystemDefaultPeriod().getMiliSeconds(); + this.toX = scatterData.currentServerTime; + this.scatterChartInteractionService.reset(this.instanceKey, this.selectedApplication, this.selectedAgent, this.fromX, this.toX, this.scatterChartMode); + of(1).pipe(delay(1000)).subscribe((useless: number) => { + this.getScatterData(); + }); + } else { + this.scatterChartInteractionService.addChartData(this.instanceKey, scatterData); + } + } + }); + this.connectStore(); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private setScatterY() { + const scatterYData = this.webAppSettingDataService.getScatterY(this.instanceKey); + this.fromY = scatterYData.min; + this.toY = scatterYData.max; + } + private connectStore(): void { + this.storeHelperService.getTimezone(this.unsubscribe).subscribe((timezone: string) => { + this.timezone = timezone; + this.changeDetectorRef.detectChanges(); + }); + this.storeHelperService.getDateFormatArray(this.unsubscribe, 3, 4).subscribe((format: string[]) => { + this.dateFormat = format; + this.changeDetectorRef.detectChanges(); + }); + this.storeHelperService.getAgentSelection(this.unsubscribe).subscribe((agent: string) => { + if (this.selectedAgent !== agent) { + this.selectedAgent = agent; + this.scatterChartInteractionService.changeAgent(this.instanceKey, agent); + } + }); + this.storeHelperService.getServerMapTargetSelected(this.unsubscribe).pipe( + filter((target: ISelectedTarget) => { + return target && (target.isNode === true || target.isNode === false) ? true : false; + }) + ).subscribe((target: ISelectedTarget) => { + this.selectedTarget = target; + if (this.isHide() === false) { + this.selectedAgent = ''; + this.selectedApplication = this.selectedTarget.node[0]; + this.scatterChartInteractionService.reset(this.instanceKey, this.selectedApplication, this.selectedAgent, this.fromX, this.toX, this.scatterChartMode); + this.getScatterData(); + } + this.changeDetectorRef.detectChanges(); + }); + } + getScatterData(): void { + if (this.scatterChartMode === ScatterChart.MODE.STATIC) { + this.scatterChartDataService.loadData( + this.selectedApplication.split('^')[0], + this.fromX, + this.toX, + this.getGroupUnitX(), + this.getGroupUnitY() + ); + } else { + this.scatterChartDataService.loadRealTimeData( + this.selectedApplication.split('^')[0], + this.fromX, + this.toX, + this.getGroupUnitX(), + this.getGroupUnitY() + ); + } + } + getGroupUnitX(): number { + return Math.round((this.toX - this.fromX) / this.width); + } + getGroupUnitY(): number { + return Math.round((this.toY - this.fromY) / this.height); + } + isHide(): boolean { + if (this.selectedTarget) { + return !(this.selectedTarget.isNode && this.selectedTarget.isWAS && this.selectedTarget.isMerged === false); + } + return true; + } + checkClass(): string { + return this.hideSettingPopup ? '' : 'l-popup-on'; + } + isHideSettingPopup(): boolean { + return this.hideSettingPopup; + } + onApplySetting(params: any): void { + this.fromY = params.min; + this.toY = params.max; + this.scatterChartInteractionService.changeYRange({ + instanceKey: this.instanceKey, + from: params.min, + to: params.max + }); + this.hideSettingPopup = true; + this.webAppSettingDataService.setScatterY(this.instanceKey, { min: params.min, max: params.max }); + } + onCancelSetting(): void { + this.hideSettingPopup = true; + } + onShowSetting(): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.CLICK_SCATTER_SETTING); + this.hideSettingPopup = false; + } + onDownload(): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.DOWNLOAD_SCATTER); + this.scatterChartInteractionService.downloadChart(this.instanceKey); + } + onOpenScatterPage(): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.GO_TO_FULL_SCREEN_SCATTER); + if (this.scatterChartMode === ScatterChart.MODE.STATIC) { + this.urlRouteManagerService.openPage([ + UrlPath.SCATTER_FULL_SCREEN_MODE, + this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getUrlStr(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.PERIOD).getValueWithTime(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.END_TIME).getEndTime(), + this.selectedAgent + ]); + } else { + this.urlRouteManagerService.openPage([ + UrlPath.SCATTER_FULL_SCREEN_MODE, + this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getUrlStr(), + UrlPathId.REAL_TIME + ]); + } + } + onShowHelp($event: MouseEvent): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.TOGGLE_HELP_VIEWER, HELP_VIEWER_LIST.SCATTER); + const {left, top, width, height} = ($event.target as HTMLElement).getBoundingClientRect(); + + this.dynamicPopupService.openPopup({ + data: HELP_VIEWER_LIST.SCATTER, + coord: { + coordX: left + width / 2, + coordY: top + height / 2 + }, + component: HelpViewerPopupContainerComponent + }); + } + onChangedSelectType(params: {instanceKey: string, name: string, checked: boolean}): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.CHANGE_SCATTER_CHART_STATE, `${params.name}: ${params.checked ? `on` : `off`}`); + this.scatterChartInteractionService.changeViewType(params); + } + onChangeTransactionCount(params: object): void { + this.typeCount = params; + } + onChangeRangeX(params: { from: number, to: number }): void { + this.currentRange.from = params.from; + this.currentRange.to = params.to; + this.storeHelperService.dispatch(new Actions.UpdateRealTimeScatterChartXRange(params)); + } + onSelectArea(params: any): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.OPEN_TRANSACTION_LIST); + if (this.newUrlStateNotificationService.isRealTimeMode()) { + this.urlRouteManagerService.openPage([ + UrlPath.TRANSACTION_LIST, + this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getUrlStr(), + this.webAppSettingDataService.getSystemDefaultPeriod().getValueWithTime(), + EndTime.newByNumber(this.currentRange.to).getEndTime(), + ], `${this.selectedApplication}|${params.x.from}|${params.x.to}|${params.y.from}|${params.y.to}|${this.selectedAgent}|${params.type.join(',')}`); + } else { + this.urlRouteManagerService.openPage([ + UrlPath.TRANSACTION_LIST, + this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getUrlStr(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.PERIOD).getValueWithTime(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.END_TIME).getEndTime() + ], `${this.selectedApplication}|${params.x.from}|${params.x.to}|${params.y.from}|${params.y.to}|${this.selectedAgent}|${params.type.join(',')}`); + } + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-data.service.ts new file mode 100644 index 000000000000..e201e7b980b9 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-data.service.ts @@ -0,0 +1,144 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable, of, Subject } from 'rxjs'; +import { switchMap, delay } from 'rxjs/operators'; +import { ScatterChart } from 'app/core/components/scatter-chart/class/scatter-chart.class'; + +interface IScatterRequest { + application: string; + fromX: number; + toX: number; + groupUnitX: number; + groupUnitY: number; + backwardDirection: boolean; +} + +@Injectable() +export class ScatterChartDataService { + private url = 'getScatterData.pinpoint'; + private realtime = { + interval: 2000, + // interval: 5000, + resetTimeGap: 20000 + }; + private currentMode: string; + private lastScatterData: IScatterData[] = []; + private requestTime: number; + private application: string; + private groupUnitX: number; + private groupUnitY: number; + private innerDataRequest = new Subject(); + private innerDataRequest$: Observable; + private outScatterData = new Subject(); + outScatterData$: Observable; + constructor(private http: HttpClient) { + this.innerDataRequest$ = this.innerDataRequest.asObservable(); + this.outScatterData$ = this.outScatterData.asObservable(); + this.connectDataRequest(); + } + private connectDataRequest(): void { + this.innerDataRequest$.pipe( + switchMap((params: IScatterRequest) => { + return this.http.get(this.url, this.makeRequestOptionsArgs( + params.application, + params.fromX, + params.toX, + params.groupUnitX, + params.groupUnitY, + params.backwardDirection) + ); + }) + ).subscribe((scatterData: IScatterData) => { + if ( this.currentMode === ScatterChart.MODE.REALTIME) { + this.subscribeRealTimeRequest(scatterData); + } else { + this.subscribeStaticRequest(scatterData); + } + }); + } + private getData(fromX: number, toX: number, backwardDirection: boolean): void { + this.requestTime = Date.now(); + return this.innerDataRequest.next({ + application: this.application, + fromX: fromX, + toX: toX, + groupUnitX: this.groupUnitX, + groupUnitY: this.groupUnitY, + backwardDirection: backwardDirection + }); + } + loadData(application: string, fromX: number, toX: number, groupUnitX: number, groupUnitY: number, initLastData?: boolean): void { + this.application = application; + this.groupUnitX = groupUnitX; + this.groupUnitY = groupUnitY; + this.lastScatterData = initLastData === false ? this.lastScatterData : []; + this.getData(fromX, toX, true); + } + private subscribeStaticRequest(scatterData: IScatterData): void { + this.lastScatterData.push(scatterData); + this.outScatterData.next(scatterData); + } + loadLastData(): IScatterData[] { + return this.lastScatterData; + } + loadRealTimeData(application: string, fromX: number, toX: number, groupUnitX: number, groupUnitY: number): void { + this.application = application; + this.groupUnitX = groupUnitX; + this.groupUnitY = groupUnitY; + this.getData(fromX, toX, false); + } + setCurrentMode(mode: string): void { + this.currentMode = mode; + } + private subscribeRealTimeRequest(scatterData: IScatterData): void { + const roundTripTime = Date.now() - this.requestTime; + let fromNext = 0; + let toNext = 0; + let delayTime = this.realtime.interval - roundTripTime; + + if (scatterData.complete) { + fromNext = scatterData.to; + toNext = fromNext + this.realtime.interval; + if (delayTime > 0) { + const timeGapInterServerAndClient = scatterData.currentServerTime - toNext; + if (timeGapInterServerAndClient >= delayTime) { + if ( timeGapInterServerAndClient >= this.realtime.interval ) { + delayTime = 0; + } else { + delayTime = Math.min(Math.abs(timeGapInterServerAndClient), delayTime); + } + } + } else { + delayTime = 0; + } + } else { + // TODO: 처리해야 함. + fromNext = scatterData.from; + toNext = scatterData.resultFrom; + delayTime = 0; + } + if (scatterData.currentServerTime - toNext >= this.realtime.resetTimeGap) { + scatterData.reset = true; + this.outScatterData.next(scatterData); + } else { + this.outScatterData.next(scatterData); + of(1).pipe(delay(delayTime)).subscribe((useless: number) => { + this.getData(fromNext, toNext, false); + }); + } + } + private makeRequestOptionsArgs(application: string, fromX: number, toX: number, groupUnitX: number, groupUnitY: number, backwardDirection: boolean): object { + return { + params: { + application: application, + from: fromX, + to: toX, + limit: 5000, + filter: '', + xGroupUnit: groupUnitX, + yGroupUnit: groupUnitY, + backwardDirection: backwardDirection + } + }; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-download-plugin.ts b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-download-plugin.ts new file mode 100644 index 000000000000..b7923e727f11 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-download-plugin.ts @@ -0,0 +1,52 @@ +export class ScatterChartDownloadPlugin { + constructor(imageData) { + // this._init(imageData); + } + // _init(imageData) { + // this._featureImage = imageData; + // this._aCallback = []; + // this._bDisabled = false; + // } + // initElement($elParent, $elPlugin, option) { + // this._bDisabled = option['realtime']; + // this._$element = $('
').css({ + // 'cursor': 'pointer', + // 'padding': '4px 0px 4px 20px' + // }).append( + // $('').attr({ + // 'alt': 'Download Scatter Chart', + // 'href': '', + // 'title': 'Download Scatter Chart', + // 'download': '' + // }).append( + // $('').attr({ + // 'src': this._featureImage + // }).css({ + // 'opacity': this._bDisabled ? 0.2 : 1 + // }) + // ) + // ).appendTo($elPlugin); + // return this; + // } + // initEvent(oChart) { + // var self = this; + // this._$element.find('a').on('click', function (event) { + // if (self._bDisabled) { + // event.preventDefault(); + // return; + // } + // $(this).attr({ + // 'href': oChart.getChartAsImage('png'), + // 'download': 'Pinpoint_Scatter_Chart[' + moment(oChart.option('minX')).format('YYYYMMDD_HHmm') + '~' + moment(oChart.option('maxX')).format('YYYYMMDD_HHmm') + ']' + // }); + // $.each(self._aCallback, function (index, fn) { + // fn(oChart); + // }); + // }); + // return this; + // } + // addCallback(fn) { + // this._aCallback.push(fn); + // return this; + // } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-filtered-map-info-per-server-container.component.css b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-filtered-map-info-per-server-container.component.css new file mode 100644 index 000000000000..5297343d37ac --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-filtered-map-info-per-server-container.component.css @@ -0,0 +1,19 @@ +:host { + position: relative; +} +.l-chart-item { + margin: 15px 0; + height: 285px; + position: relative; + border-top: none; +} +.l-chart-item.l-popup-on:before { + display: block; + z-index: 490; + position: absolute; + content: ''; + width: 100%; + height: 100%; + background: #FFF; + opacity: 0.8; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-filtered-map-info-per-server-container.component.html b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-filtered-map-info-per-server-container.component.html new file mode 100644 index 000000000000..63fe24300af9 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-filtered-map-info-per-server-container.component.html @@ -0,0 +1,42 @@ +
+ + + + +
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-filtered-map-info-per-server-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-filtered-map-info-per-server-container.component.ts new file mode 100644 index 000000000000..9c1e71c9cc8e --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-filtered-map-info-per-server-container.component.ts @@ -0,0 +1,227 @@ +import { Component, ChangeDetectionStrategy, ChangeDetectorRef, OnInit, AfterViewInit, OnDestroy } from '@angular/core'; +import { combineLatest, Subject } from 'rxjs'; +import { takeUntil, filter } from 'rxjs/operators'; +import { TranslateService } from '@ngx-translate/core'; + +import { + WebAppSettingDataService, + NewUrlStateNotificationService, + UrlRouteManagerService, + StoreHelperService, + AnalyticsService, + TRACKED_EVENT_LIST, + DynamicPopupService +} from 'app/shared/services'; +import { Actions } from 'app/shared/store'; +import { UrlPath, UrlPathId } from 'app/shared/models'; +import { ScatterChartDataService } from './scatter-chart-data.service'; +import { ScatterChart } from './class/scatter-chart.class'; +import { ScatterChartComponent } from './scatter-chart.component'; +import { ScatterChartInteractionService } from './scatter-chart-interaction.service'; +import { HELP_VIEWER_LIST, HelpViewerPopupContainerComponent } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; + +@Component({ + selector: 'pp-scatter-chart-for-filtered-map-info-per-server-container', + templateUrl: './scatter-chart-for-filtered-map-info-per-server-container.component.html', + styleUrls: ['./scatter-chart-for-filtered-map-info-per-server-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ScatterChartForFilteredMapInfoPerServerContainerComponent implements OnInit, AfterViewInit, OnDestroy { + instanceKey = 'filtered-map-info-per-server'; + addWindow = false; + i18nText: { [key: string]: string } = { + NO_DATA: '' + }; + isChangedTarget: boolean; + selectedTarget: ISelectedTarget; + selectedApplication: string; + unsubscribe: Subject = new Subject(); + hideSettingPopup = true; + selectedAgent: string; + typeInfo = [{ + name: 'failed', + color: '#E95459', + order: 10 + }, { + name: 'success', + color: '#34B994', + order: 20 + }]; + typeCount: object; + width = 460; + height = 230; + min: number; + max: number; + fromX: number; + toX: number; + fromY: number; + toY: number; + application: string; + scatterChartMode: string; + scatterChartDataOfAllNode: any[] = []; + timezone: string; + dateFormat: string[]; + constructor( + private changeDetectorRef: ChangeDetectorRef, + private storeHelperService: StoreHelperService, + private translateService: TranslateService, + private webAppSettingDataService: WebAppSettingDataService, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private urlRouteManagerService: UrlRouteManagerService, + private scatterChartDataService: ScatterChartDataService, + private scatterChartInteractionService: ScatterChartInteractionService, + private analyticsService: AnalyticsService, + private dynamicPopupService: DynamicPopupService + ) {} + ngOnInit() { + this.setScatterY(); + combineLatest( + this.translateService.get('COMMON.NO_DATA') + ).subscribe((i18n: string[]) => { + this.i18nText = { + [ScatterChartComponent.I18NTEXT.NO_DATA]: i18n[0] + }; + }); + this.connectStore(); + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe), + filter((urlService: NewUrlStateNotificationService) => { + return urlService.hasValue(UrlPathId.APPLICATION); + }) + ).subscribe((urlService: NewUrlStateNotificationService) => { + this.scatterChartMode = urlService.isRealTimeMode() ? ScatterChart.MODE.REALTIME : ScatterChart.MODE.STATIC; + this.scatterChartDataService.setCurrentMode(this.scatterChartMode); + this.application = urlService.getPathValue(UrlPathId.APPLICATION).getKeyStr(); + this.selectedAgent = ''; + this.fromX = urlService.getStartTimeToNumber(); + this.toX = urlService.getEndTimeToNumber(); + this.changeDetectorRef.detectChanges(); + }); + } + ngAfterViewInit() { + this.storeHelperService.getInfoPerServerState(this.unsubscribe).subscribe((visibleState: boolean) => { + if (visibleState && this.isChangedTarget) { + this.scatterChartDataOfAllNode.forEach((scatterData: any) => { + this.scatterChartInteractionService.addChartData(this.instanceKey, scatterData[this.selectedApplication]); + }); + this.isChangedTarget = false; + } + }); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private setScatterY() { + const scatterYData = this.webAppSettingDataService.getScatterY(this.instanceKey); + this.fromY = scatterYData.min; + this.toY = scatterYData.max; + } + private connectStore(): void { + this.storeHelperService.getTimezone(this.unsubscribe).subscribe((timezone: string) => { + this.timezone = timezone; + this.changeDetectorRef.detectChanges(); + }); + this.storeHelperService.getDateFormatArray(this.unsubscribe, 3, 4).subscribe((format: string[]) => { + this.dateFormat = format; + this.changeDetectorRef.detectChanges(); + }); + this.storeHelperService.getAgentSelectionForServerList(this.unsubscribe).pipe( + filter((chartData: IAgentSelection) => { + return (chartData && chartData.agent) ? true : false; + }) + ).subscribe((chartData: IAgentSelection) => { + this.selectedAgent = chartData.agent; + this.changeDetectorRef.detectChanges(); + this.scatterChartInteractionService.changeAgent(this.instanceKey, chartData.agent); + }); + this.storeHelperService.getScatterChartData(this.unsubscribe).subscribe((scatterChartData: IScatterData[]) => { + this.scatterChartDataOfAllNode = scatterChartData; + }); + this.storeHelperService.getServerMapTargetSelected(this.unsubscribe).pipe( + filter((target: ISelectedTarget) => { + return target && (target.isNode === true || target.isNode === false) ? true : false; + }) + ).subscribe((target: ISelectedTarget) => { + this.isChangedTarget = true; + this.selectedTarget = target; + this.selectedAgent = ''; + this.selectedApplication = this.selectedTarget.node[0]; + this.scatterChartInteractionService.reset(this.instanceKey, this.selectedApplication, this.selectedAgent, this.fromX, this.toX, this.scatterChartMode); + this.changeDetectorRef.detectChanges(); + }); + } + isHide(): boolean { + return false; + } + checkClass(): string { + return this.hideSettingPopup ? '' : 'l-popup-on'; + } + isHideSettingPopup(): boolean { + return this.hideSettingPopup; + } + onApplySetting(params: any): void { + this.fromY = params.min; + this.toY = params.max; + this.scatterChartInteractionService.changeYRange({ + instanceKey: this.instanceKey, + from: params.min, + to: params.max + }); + this.hideSettingPopup = true; + this.webAppSettingDataService.setScatterY(this.instanceKey, { min: params.min, max: params.max }); + } + onCancelSetting(): void { + this.hideSettingPopup = true; + } + onShowSetting(): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.CLICK_SCATTER_SETTING); + this.hideSettingPopup = false; + } + onDownload(): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.DOWNLOAD_SCATTER); + this.scatterChartInteractionService.downloadChart(this.instanceKey); + } + onOpenScatterPage(): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.GO_TO_FULL_SCREEN_SCATTER); + this.urlRouteManagerService.openPage([ + UrlPath.SCATTER_FULL_SCREEN_MODE, + this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getUrlStr(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.PERIOD).getValueWithTime(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.END_TIME).getEndTime(), + this.selectedAgent + ]); + } + onShowHelp($event: MouseEvent): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.TOGGLE_HELP_VIEWER, HELP_VIEWER_LIST.SCATTER); + const {left, top, width, height} = ($event.target as HTMLElement).getBoundingClientRect(); + + this.dynamicPopupService.openPopup({ + data: HELP_VIEWER_LIST.SCATTER, + coord: { + coordX: left + width / 2, + coordY: top + height / 2 + }, + component: HelpViewerPopupContainerComponent + }); + } + onChangedSelectType(params: {instanceKey: string, name: string, checked: boolean}): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.CHANGE_SCATTER_CHART_STATE, `${params.name}: ${params.checked ? `on` : `off`}`); + this.scatterChartInteractionService.changeViewType(params); + } + onChangeTransactionCount(params: object): void { + this.typeCount = params; + } + onChangeRangeX(params: IScatterXRange): void { + this.storeHelperService.dispatch(new Actions.UpdateRealTimeScatterChartXRange(params)); + } + onSelectArea(params: any): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.OPEN_TRANSACTION_LIST); + this.urlRouteManagerService.openPage([ + UrlPath.TRANSACTION_LIST, + this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getUrlStr(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.PERIOD).getValueWithTime(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.END_TIME).getEndTime() + ], `${this.selectedApplication}|${params.x.from}|${params.x.to}|${params.y.from}|${params.y.to}|${this.selectedAgent}|${params.type.join(',')}`); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-filtered-map-side-bar-container.component.css b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-filtered-map-side-bar-container.component.css new file mode 100644 index 000000000000..5297343d37ac --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-filtered-map-side-bar-container.component.css @@ -0,0 +1,19 @@ +:host { + position: relative; +} +.l-chart-item { + margin: 15px 0; + height: 285px; + position: relative; + border-top: none; +} +.l-chart-item.l-popup-on:before { + display: block; + z-index: 490; + position: absolute; + content: ''; + width: 100%; + height: 100%; + background: #FFF; + opacity: 0.8; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-filtered-map-side-bar-container.component.html b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-filtered-map-side-bar-container.component.html new file mode 100644 index 000000000000..63fe24300af9 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-filtered-map-side-bar-container.component.html @@ -0,0 +1,42 @@ +
+ + + + +
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-filtered-map-side-bar-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-filtered-map-side-bar-container.component.ts new file mode 100644 index 000000000000..d8ea285b17d2 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-filtered-map-side-bar-container.component.ts @@ -0,0 +1,238 @@ +import { Component, ChangeDetectionStrategy, ChangeDetectorRef, OnInit, OnDestroy } from '@angular/core'; +import { combineLatest, Subject } from 'rxjs'; +import { takeUntil, filter } from 'rxjs/operators'; +import { TranslateService } from '@ngx-translate/core'; + +import { + StoreHelperService, + WebAppSettingDataService, + NewUrlStateNotificationService, + UrlRouteManagerService, + AnalyticsService, + TRACKED_EVENT_LIST, + DynamicPopupService +} from 'app/shared/services'; +import { Actions } from 'app/shared/store'; +import { UrlPath, UrlPathId } from 'app/shared/models'; +import { ScatterChart } from './class/scatter-chart.class'; +import { ScatterChartComponent } from './scatter-chart.component'; +import { ScatterChartInteractionService } from './scatter-chart-interaction.service'; +import { ScatterChartDataService } from './scatter-chart-data.service'; +import { HELP_VIEWER_LIST, HelpViewerPopupContainerComponent } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; + +@Component({ + selector: 'pp-scatter-chart-for-filtered-map-side-bar-container', + templateUrl: './scatter-chart-for-filtered-map-side-bar-container.component.html', + styleUrls: ['./scatter-chart-for-filtered-map-side-bar-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ScatterChartForFilteredMapSideBarContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + instanceKey = 'filtered-map-side-bar'; + addWindow = true; + i18nText: { [key: string]: string } = { + NO_DATA: '' + }; + selectedTarget: ISelectedTarget; + selectedApplication: string; + hideSettingPopup = true; + selectedAgent: string; + typeInfo = [{ + name: 'failed', + color: '#E95459', + order: 10 + }, { + name: 'success', + color: '#34B994', + order: 20 + }]; + typeCount: object; + width = 460; + height = 230; + min: number; + max: number; + fromX: number; + toX: number; + fromY: number; + toY: number; + application: string; + scatterChartMode: string; + scatterChartDataOfAllNode: any[] = []; + timezone: string; + dateFormat: string[]; + constructor( + private changeDetectorRef: ChangeDetectorRef, + private storeHelperService: StoreHelperService, + private translateService: TranslateService, + private webAppSettingDataService: WebAppSettingDataService, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private urlRouteManagerService: UrlRouteManagerService, + private scatterChartDataService: ScatterChartDataService, + private scatterChartInteractionService: ScatterChartInteractionService, + private analyticsService: AnalyticsService, + private dynamicPopupService: DynamicPopupService + ) {} + ngOnInit() { + this.setScatterY(); + combineLatest( + this.translateService.get('COMMON.NO_DATA') + ).subscribe((i18n: Array) => { + this.i18nText = { + [ScatterChartComponent.I18NTEXT.NO_DATA]: i18n[0] + }; + }); + this.connectStore(); + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe), + filter((urlService: NewUrlStateNotificationService) => { + return urlService.hasValue(UrlPathId.APPLICATION); + }) + ).subscribe((urlService: NewUrlStateNotificationService) => { + this.scatterChartMode = ScatterChart.MODE.STATIC; + this.scatterChartDataService.setCurrentMode(this.scatterChartMode); + this.application = urlService.getPathValue(UrlPathId.APPLICATION).getKeyStr(); + this.selectedAgent = ''; + this.fromX = urlService.getStartTimeToNumber(); + this.toX = urlService.getEndTimeToNumber(); + this.changeDetectorRef.detectChanges(); + }); + + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private setScatterY(): void { + const scatterYData = this.webAppSettingDataService.getScatterY(this.instanceKey); + this.fromY = scatterYData.min; + this.toY = scatterYData.max; + } + private connectStore(): void { + this.storeHelperService.getTimezone(this.unsubscribe).subscribe((timezone: string) => { + this.timezone = timezone; + this.changeDetectorRef.detectChanges(); + }); + this.storeHelperService.getDateFormatArray(this.unsubscribe, 3, 4).subscribe((format: string[]) => { + this.dateFormat = format; + this.changeDetectorRef.detectChanges(); + }); + this.storeHelperService.getAgentSelection(this.unsubscribe).subscribe((agent: string) => { + if (this.selectedAgent !== agent) { + this.selectedAgent = agent; + this.scatterChartInteractionService.changeAgent(this.instanceKey, agent); + } + }); + this.storeHelperService.getScatterChartData(this.unsubscribe).pipe( + filter((data: any) => { + return data.length > 0 && data.length > this.scatterChartDataOfAllNode.length; + }) + ).subscribe((scatterChartData: IScatterData[]) => { + const startIndex = this.scatterChartDataOfAllNode.length; + this.scatterChartDataOfAllNode = scatterChartData; + if (this.selectedTarget) { + this.getScatterData(startIndex); + } + }); + this.storeHelperService.getServerMapTargetSelected(this.unsubscribe).pipe( + filter((target: ISelectedTarget) => { + return target && (target.isNode === true || target.isNode === false) ? true : false; + }) + ).subscribe((target: ISelectedTarget) => { + this.selectedTarget = target; + if (this.isHide() === false) { + this.selectedAgent = ''; + this.selectedApplication = this.selectedTarget.node[0]; + this.scatterChartInteractionService.reset(this.instanceKey, this.selectedApplication, this.selectedAgent, this.fromX, this.toX, this.scatterChartMode); + this.getScatterData(0); + } + this.changeDetectorRef.detectChanges(); + }); + } + getScatterData(startIndex: number): void { + for (let i = startIndex ; i < this.scatterChartDataOfAllNode.length ; i++) { + this.scatterChartInteractionService.addChartData(this.instanceKey, this.scatterChartDataOfAllNode[i][this.selectedApplication]); + } + } + getGroupUnitX(): number { + return Math.round((this.toX - this.fromX) / this.width); + } + getGroupUnitY(): number { + return Math.round((this.toY - this.fromY) / this.height); + } + isHide(): boolean { + if (this.selectedTarget) { + return !(this.selectedTarget.isNode && this.selectedTarget.isWAS && this.selectedTarget.isMerged === false); + } + return true; + } + checkClass(): string { + return this.hideSettingPopup ? '' : 'l-popup-on'; + } + isHideSettingPopup(): boolean { + return this.hideSettingPopup; + } + onApplySetting(params: any): void { + this.fromY = params.min; + this.toY = params.max; + this.scatterChartInteractionService.changeYRange({ + instanceKey: this.instanceKey, + from: params.min, + to: params.max + }); + this.hideSettingPopup = true; + this.webAppSettingDataService.setScatterY(this.instanceKey, { min: params.min, max: params.max }); + } + onCancelSetting(): void { + this.hideSettingPopup = true; + } + onShowSetting(): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.CLICK_SCATTER_SETTING); + this.hideSettingPopup = false; + } + onDownload(): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.DOWNLOAD_SCATTER); + this.scatterChartInteractionService.downloadChart(this.instanceKey); + } + onOpenScatterPage(): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.GO_TO_FULL_SCREEN_SCATTER); + this.urlRouteManagerService.openPage([ + UrlPath.SCATTER_FULL_SCREEN_MODE, + this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getUrlStr(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.PERIOD).getValueWithTime(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.END_TIME).getEndTime(), + this.selectedAgent + ]); + } + onShowHelp($event: MouseEvent): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.TOGGLE_HELP_VIEWER, HELP_VIEWER_LIST.SCATTER); + const {left, top, width, height} = ($event.target as HTMLElement).getBoundingClientRect(); + + this.dynamicPopupService.openPopup({ + data: HELP_VIEWER_LIST.SCATTER, + coord: { + coordX: left + width / 2, + coordY: top + height / 2 + }, + component: HelpViewerPopupContainerComponent + }); + } + onChangedSelectType(params: {instanceKey: string, name: string, checked: boolean}): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.CHANGE_SCATTER_CHART_STATE, `${params.name}: ${params.checked ? `on` : `off`}`); + this.scatterChartInteractionService.changeViewType(params); + } + onChangeTransactionCount(params: object): void { + this.typeCount = params; + } + onChangeRangeX(params: IScatterXRange): void { + this.storeHelperService.dispatch(new Actions.UpdateRealTimeScatterChartXRange(params)); + } + onSelectArea(params: any): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.OPEN_TRANSACTION_LIST); + this.urlRouteManagerService.openPage([ + UrlPath.TRANSACTION_LIST, + this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getUrlStr(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.PERIOD).getValueWithTime(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.END_TIME).getEndTime() + ], `${this.selectedApplication}|${params.x.from}|${params.x.to}|${params.y.from}|${params.y.to}|${this.selectedAgent}|${params.type.join(',')}`); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-full-screen-mode-container.component.css b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-full-screen-mode-container.component.css new file mode 100644 index 000000000000..e179f7e6cf0e --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-full-screen-mode-container.component.css @@ -0,0 +1,17 @@ +:host { + position: relative; +} +.l-chart-item { + margin: 15px 0 0 0; + height: 285px; + position: relative; + border-top: none; +} +.l-layer-background { + top: 0; + display: none; + opacity: 0.8; + z-index: 490; + position: absolute; + background: #FFF; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-full-screen-mode-container.component.html b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-full-screen-mode-container.component.html new file mode 100644 index 000000000000..78ce29d11f39 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-full-screen-mode-container.component.html @@ -0,0 +1,42 @@ +
+ + + + +
+
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-full-screen-mode-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-full-screen-mode-container.component.ts new file mode 100644 index 000000000000..4f17b5134c5a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-full-screen-mode-container.component.ts @@ -0,0 +1,236 @@ +import { Component, ChangeDetectionStrategy, ChangeDetectorRef, OnInit, OnDestroy, ViewChild, ElementRef, Renderer2 } from '@angular/core'; +import { Observable, Subject, of, combineLatest, Subscription } from 'rxjs'; +import { takeUntil, delay } from 'rxjs/operators'; +import { TranslateService } from '@ngx-translate/core'; + +import { + StoreHelperService, + WebAppSettingDataService, + NewUrlStateNotificationService, + UrlRouteManagerService, + AnalyticsService, + TRACKED_EVENT_LIST, + DynamicPopupService +} from 'app/shared/services'; +import { Actions } from 'app/shared/store'; +import { UrlPath, UrlPathId } from 'app/shared/models'; +import { ScatterChartDataService } from './scatter-chart-data.service'; +import { ScatterChart } from './class/scatter-chart.class'; +import { ScatterChartComponent } from './scatter-chart.component'; +import { ScatterChartInteractionService } from './scatter-chart-interaction.service'; +import { HELP_VIEWER_LIST, HelpViewerPopupContainerComponent } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; + +@Component({ + selector: 'pp-scatter-chart-for-full-screen-mode-container', + templateUrl: './scatter-chart-for-full-screen-mode-container.component.html', + styleUrls: ['./scatter-chart-for-full-screen-mode-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ScatterChartForFullScreenModeContainerComponent implements OnInit, OnDestroy { + @ViewChild('layerBackground') layerBackground: ElementRef; + private unsubscribe: Subject = new Subject(); + instanceKey = 'full-screen-mode'; + addWindow = true; + i18nText: { [key: string]: string } = { + NO_DATA: '' + }; + selectedTarget: ISelectedTarget; + selectedApplication: string; + scatterDataServiceSubscription: Subscription; + hideSettingPopup = true; + selectedAgent: string; + typeInfo = [{ + name: 'failed', + color: '#E95459', + order: 10 + }, { + name: 'success', + color: '#34B994', + order: 20 + }]; + typeCount: object; + width = 690; + height = 345; + min: number; + max: number; + fromX: number; + toX: number; + fromY: number; + toY: number; + application: string; + scatterChartMode: string; + timezone$: Observable; + dateFormat: string[]; + constructor( + private changeDetectorRef: ChangeDetectorRef, + private renderer: Renderer2, + private translateService: TranslateService, + private storeHelperService: StoreHelperService, + private webAppSettingDataService: WebAppSettingDataService, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private urlRouteManagerService: UrlRouteManagerService, + private scatterChartDataService: ScatterChartDataService, + private scatterChartInteractionService: ScatterChartInteractionService, + private analyticsService: AnalyticsService, + private dynamicPopupService: DynamicPopupService + ) {} + ngOnInit() { + this.setScatterY(); + this.getI18NText(); + this.connectStore(); + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((urlService: NewUrlStateNotificationService) => { + this.scatterChartMode = urlService.isRealTimeMode() ? ScatterChart.MODE.REALTIME : ScatterChart.MODE.STATIC; + this.scatterChartDataService.setCurrentMode(this.scatterChartMode); + this.selectedApplication = this.application = urlService.getPathValue(UrlPathId.APPLICATION).getKeyStr(); + this.selectedAgent = urlService.hasValue(UrlPathId.AGENT_ID) ? urlService.getPathValue(UrlPathId.AGENT_ID) : ''; + this.fromX = urlService.getStartTimeToNumber(); + this.toX = urlService.getEndTimeToNumber(); + of(1).pipe(delay(1)).subscribe((num: number) => { + this.scatterChartInteractionService.reset(this.instanceKey, this.selectedApplication, this.selectedAgent, this.fromX, this.toX, this.scatterChartMode); + this.getScatterData(); + this.changeDetectorRef.detectChanges(); + }); + }); + this.scatterChartDataService.outScatterData$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((scatterData: IScatterData) => { + if (this.scatterChartMode === ScatterChart.MODE.STATIC) { + this.scatterChartInteractionService.addChartData(this.instanceKey, scatterData); + if (scatterData.complete === false) { + this.scatterChartDataService.loadData( + this.selectedApplication.split('^')[0], + this.fromX, + scatterData.resultFrom - 1, + this.getGroupUnitX(), + this.getGroupUnitY(), + false + ); + } + } else { + if (scatterData.reset === true) { + this.fromX = scatterData.currentServerTime - this.webAppSettingDataService.getSystemDefaultPeriod().getMiliSeconds(); + this.toX = scatterData.currentServerTime; + this.scatterChartInteractionService.reset(this.instanceKey, this.selectedApplication, this.selectedAgent, this.fromX, this.toX, this.scatterChartMode); + of(1).pipe(delay(1000)).subscribe((useless: number) => { + this.getScatterData(); + }); + } else { + this.scatterChartInteractionService.addChartData(this.instanceKey, scatterData); + } + } + }); + } + ngOnDestroy() { + if (this.scatterDataServiceSubscription) { + this.scatterDataServiceSubscription.unsubscribe(); + } + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private setScatterY(): void { + const scatterYData = this.webAppSettingDataService.getScatterY(this.instanceKey); + this.fromY = scatterYData.min; + this.toY = scatterYData.max; + } + private getI18NText(): void { + combineLatest( + this.translateService.get('COMMON.NO_DATA') + ).subscribe((i18n: Array) => { + this.i18nText = { + [ScatterChartComponent.I18NTEXT.NO_DATA]: i18n[0] + }; + }); + } + private connectStore(): void { + this.timezone$ = this.storeHelperService.getTimezone(this.unsubscribe); + this.storeHelperService.getDateFormatArray(this.unsubscribe, 3, 4).subscribe((dateFormat: string[]) => { + this.dateFormat = dateFormat; + }); + } + getScatterData(): void { + if (this.scatterChartMode === ScatterChart.MODE.STATIC) { + this.scatterChartDataService.loadData( + this.selectedApplication.split('^')[0], + this.fromX, + this.toX, + this.getGroupUnitX(), + this.getGroupUnitY() + ); + } else { + this.scatterChartDataService.loadRealTimeData( + this.selectedApplication.split('^')[0], + this.fromX, + this.toX, + this.getGroupUnitX(), + this.getGroupUnitY() + ); + } + } + getGroupUnitX(): number { + return Math.round((this.toX - this.fromX) / this.width); + } + getGroupUnitY(): number { + return Math.round((this.toY - this.fromY) / this.height); + } + isHideSettingPopup(): boolean { + return this.hideSettingPopup; + } + onApplySetting(params: any): void { + this.fromY = params.min; + this.toY = params.max; + this.scatterChartInteractionService.changeYRange({ + instanceKey: this.instanceKey, + from: params.min, + to: params.max + }); + this.onHideSetting(); + this.webAppSettingDataService.setScatterY(this.instanceKey, { min: params.min, max: params.max }); + } + onHideSetting(): void { + this.renderer.setStyle(this.layerBackground.nativeElement, 'display', 'none'); + this.hideSettingPopup = true; + } + onShowSetting(): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.CLICK_SCATTER_SETTING); + this.renderer.setStyle(this.layerBackground.nativeElement, 'display', 'block'); + this.hideSettingPopup = false; + } + onDownload(): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.DOWNLOAD_SCATTER); + this.scatterChartInteractionService.downloadChart(this.instanceKey); + } + onShowHelp($event: MouseEvent): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.TOGGLE_HELP_VIEWER, HELP_VIEWER_LIST.SCATTER); + const {left, top, width, height} = ($event.target as HTMLElement).getBoundingClientRect(); + + this.dynamicPopupService.openPopup({ + data: HELP_VIEWER_LIST.SCATTER, + coord: { + coordX: left + width / 2, + coordY: top + height / 2 + }, + component: HelpViewerPopupContainerComponent + }); + } + onChangedSelectType(params: {instanceKey: string, name: string, checked: boolean}): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.CHANGE_SCATTER_CHART_STATE, `${params.name}: ${params.checked ? `on` : `off`}`); + this.scatterChartInteractionService.changeViewType(params); + } + onChangeTransactionCount(params: object): void { + this.typeCount = params; + } + onChangeRangeX(params: IScatterXRange): void { + this.storeHelperService.dispatch(new Actions.UpdateRealTimeScatterChartXRange(params)); + } + onSelectArea(params: any): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.OPEN_TRANSACTION_LIST); + this.urlRouteManagerService.openPage([ + UrlPath.TRANSACTION_LIST, + this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getUrlStr(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.PERIOD).getValueWithTime(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.END_TIME).getEndTime() + ], `${this.selectedApplication}|${params.x.from}|${params.x.to}|${params.y.from}|${params.y.to}|${this.selectedAgent}|${params.type.join(',')}`); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-info-per-server-container.component.css b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-info-per-server-container.component.css new file mode 100644 index 000000000000..5297343d37ac --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-info-per-server-container.component.css @@ -0,0 +1,19 @@ +:host { + position: relative; +} +.l-chart-item { + margin: 15px 0; + height: 285px; + position: relative; + border-top: none; +} +.l-chart-item.l-popup-on:before { + display: block; + z-index: 490; + position: absolute; + content: ''; + width: 100%; + height: 100%; + background: #FFF; + opacity: 0.8; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-info-per-server-container.component.html b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-info-per-server-container.component.html new file mode 100644 index 000000000000..ce9cbabe420d --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-info-per-server-container.component.html @@ -0,0 +1,42 @@ +
+ + + + +
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-info-per-server-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-info-per-server-container.component.ts new file mode 100644 index 000000000000..013c7d1e1266 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-for-info-per-server-container.component.ts @@ -0,0 +1,222 @@ +import { Component, ChangeDetectionStrategy, ChangeDetectorRef, OnInit, AfterViewInit, OnDestroy } from '@angular/core'; +import { combineLatest, Subject } from 'rxjs'; +import { takeUntil, filter } from 'rxjs/operators'; +import { TranslateService } from '@ngx-translate/core'; + +import { + StoreHelperService, + WebAppSettingDataService, + NewUrlStateNotificationService, + UrlRouteManagerService, + AnalyticsService, + TRACKED_EVENT_LIST, + DynamicPopupService +} from 'app/shared/services'; +import { Actions } from 'app/shared/store'; +import { UrlPath, UrlPathId } from 'app/shared/models'; +import { ScatterChart } from './class/scatter-chart.class'; +import { ScatterChartComponent } from './scatter-chart.component'; +import { ScatterChartInteractionService } from './scatter-chart-interaction.service'; +import { ScatterChartDataService } from './scatter-chart-data.service'; +import { HELP_VIEWER_LIST, HelpViewerPopupContainerComponent } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; + +@Component({ + selector: 'pp-scatter-chart-for-info-per-server-container', + templateUrl: './scatter-chart-for-info-per-server-container.component.html', + styleUrls: ['./scatter-chart-for-info-per-server-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ScatterChartForInfoPerServerContainerComponent implements OnInit, AfterViewInit, OnDestroy { + instanceKey = 'info-per-server'; + addWindow = false; + i18nText: { [key: string]: string } = { + NO_DATA: '' + }; + isChangedTarget: boolean; + selectedTarget: ISelectedTarget; + selectedApplication: string; + unsubscribe: Subject = new Subject(); + hideSettingPopup = true; + selectedAgent: string; + typeInfo = [{ + name: 'failed', + color: '#E95459', + order: 10 + }, { + name: 'success', + color: '#34B994', + order: 20 + }]; + typeCount: object; + width = 460; + height = 230; + min: number; + max: number; + fromX: number; + toX: number; + fromY: number; + toY: number; + application: string; + scatterChartMode: string; + timezone: string; + dateFormat: string[]; + constructor( + private changeDetectorRef: ChangeDetectorRef, + private storeHelperService: StoreHelperService, + private translateService: TranslateService, + private webAppSettingDataService: WebAppSettingDataService, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private urlRouteManagerService: UrlRouteManagerService, + private scatterChartDataService: ScatterChartDataService, + private scatterChartInteractionService: ScatterChartInteractionService, + private analyticsService: AnalyticsService, + private dynamicPopupService: DynamicPopupService + ) {} + ngOnInit() { + this.setScatterY(); + combineLatest( + this.translateService.get('COMMON.NO_DATA') + ).subscribe((i18n: string[]) => { + this.i18nText = { + [ScatterChartComponent.I18NTEXT.NO_DATA]: i18n[0] + }; + }); + this.connectStore(); + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe), + filter((urlService: NewUrlStateNotificationService) => { + return urlService.hasValue(UrlPathId.APPLICATION); + }) + ).subscribe((urlService: NewUrlStateNotificationService) => { + this.scatterChartMode = urlService.isRealTimeMode() ? ScatterChart.MODE.REALTIME : ScatterChart.MODE.STATIC; + this.scatterChartDataService.setCurrentMode(this.scatterChartMode); + this.application = urlService.getPathValue(UrlPathId.APPLICATION).getKeyStr(); + this.selectedAgent = ''; + this.fromX = urlService.getStartTimeToNumber(); + this.toX = urlService.getEndTimeToNumber(); + this.changeDetectorRef.detectChanges(); + }); + } + ngAfterViewInit() { + this.storeHelperService.getInfoPerServerState(this.unsubscribe).subscribe((visibleState: boolean) => { + if (visibleState && this.isChangedTarget) { + this.scatterChartDataService.loadLastData().forEach((data: IScatterData) => { + this.scatterChartInteractionService.addChartData(this.instanceKey, data); + }); + this.isChangedTarget = false; + } + }); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private setScatterY(): void { + const scatterYData = this.webAppSettingDataService.getScatterY(this.instanceKey); + this.fromY = scatterYData.min; + this.toY = scatterYData.max; + } + private connectStore(): void { + this.storeHelperService.getTimezone(this.unsubscribe).subscribe((timezone: string) => { + this.timezone = timezone; + this.changeDetectorRef.detectChanges(); + }); + this.storeHelperService.getDateFormatArray(this.unsubscribe, 3, 4).subscribe((format: string[]) => { + this.dateFormat = format; + this.changeDetectorRef.detectChanges(); + }); + this.storeHelperService.getAgentSelectionForServerList(this.unsubscribe).pipe( + filter((chartData: IAgentSelection) => { + return (chartData && chartData.agent) ? true : false; + }) + ).subscribe((chartData: IAgentSelection) => { + this.selectedAgent = chartData.agent; + this.scatterChartInteractionService.changeAgent(this.instanceKey, chartData.agent); + }); + this.storeHelperService.getServerMapTargetSelected(this.unsubscribe).pipe( + filter((target: ISelectedTarget) => { + return target && (target.isNode === true || target.isNode === false) ? true : false; + }) + ).subscribe((target: ISelectedTarget) => { + this.isChangedTarget = true; + this.selectedTarget = target; + this.selectedAgent = ''; + this.selectedApplication = this.selectedTarget.node[0]; + this.scatterChartInteractionService.reset(this.instanceKey, this.selectedApplication, this.selectedAgent, this.fromX, this.toX, this.scatterChartMode); + this.changeDetectorRef.detectChanges(); + }); + } + isHide(): boolean { + return false; + } + checkClass(): string { + return this.hideSettingPopup ? '' : 'l-popup-on'; + } + isHideSettingPopup(): boolean { + return this.hideSettingPopup; + } + onApplySetting(params: any): void { + this.fromY = params.min; + this.toY = params.max; + this.scatterChartInteractionService.changeYRange({ + instanceKey: this.instanceKey, + from: params.min, + to: params.max + }); + this.hideSettingPopup = true; + this.webAppSettingDataService.setScatterY(this.instanceKey, { min: params.min, max: params.max }); + } + onCancelSetting(): void { + this.hideSettingPopup = true; + } + onShowSetting(): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.CLICK_SCATTER_SETTING); + this.hideSettingPopup = false; + } + onDownload(): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.DOWNLOAD_SCATTER); + this.scatterChartInteractionService.downloadChart(this.instanceKey); + } + onOpenScatterPage(): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.GO_TO_FULL_SCREEN_SCATTER); + this.urlRouteManagerService.openPage([ + UrlPath.SCATTER_FULL_SCREEN_MODE, + this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getUrlStr(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.PERIOD).getValueWithTime(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.END_TIME).getEndTime(), + this.selectedAgent + ]); + } + onShowHelp($event: MouseEvent): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.TOGGLE_HELP_VIEWER, HELP_VIEWER_LIST.SCATTER); + const {left, top, width, height} = ($event.target as HTMLElement).getBoundingClientRect(); + + this.dynamicPopupService.openPopup({ + data: HELP_VIEWER_LIST.SCATTER, + coord: { + coordX: left + width / 2, + coordY: top + height / 2 + }, + component: HelpViewerPopupContainerComponent + }); + } + onChangedSelectType(params: {instanceKey: string, name: string, checked: boolean}): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.CHANGE_SCATTER_CHART_STATE, `${params.name}: ${params.checked ? `on` : `off`}`); + this.scatterChartInteractionService.changeViewType(params); + } + onChangeTransactionCount(params: object): void { + this.typeCount = params; + } + onChangeRangeX(params: IScatterXRange): void { + this.storeHelperService.dispatch(new Actions.UpdateRealTimeScatterChartXRange(params)); + } + onSelectArea(params: any): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.OPEN_TRANSACTION_LIST); + this.urlRouteManagerService.openPage([ + UrlPath.TRANSACTION_LIST, + this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getUrlStr(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.PERIOD).getValueWithTime(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.END_TIME).getEndTime() + ], `${this.selectedApplication}|${params.x.from}|${params.x.to}|${params.y.from}|${params.y.to}|${this.selectedAgent}|${params.type.join(',')}`); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-interaction.service.ts b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-interaction.service.ts new file mode 100644 index 000000000000..9b2bc0164c0d --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-interaction.service.ts @@ -0,0 +1,86 @@ +import { Injectable } from '@angular/core'; +import { Subject, Observable } from 'rxjs'; + +export interface IChangedAgentParam { + instanceKey: string; + agent: string; +} +export interface IChangedViewTypeParam { + instanceKey: string; + name: string; + checked: boolean; +} +export interface IRangeParam { + instanceKey: string; + from: number; + to: number; +} +export interface IResetParam { + instanceKey: string; + application: string; + agent: string; + from: number; + to: number; + mode: string; +} + +@Injectable() +export class ScatterChartInteractionService { + + private outChartData = new Subject<{instanceKey: string, data: IScatterData}>(); + public onChartData$: Observable<{instanceKey: string, data: IScatterData}>; + + private outViewType = new Subject(); + public onViewType$: Observable; + + private outChangeYRange = new Subject(); + public onChangeYRange$: Observable; + + private outSelectedAgent = new Subject(); + public onSelectedAgent$: Observable; + + private outInvokeDownloadChart = new Subject(); + public onInvokeDownloadChart$: Observable; + + private outReset = new Subject(); + public onReset$: Observable; + constructor() { + this.onChartData$ = this.outChartData.asObservable(); + this.onViewType$ = this.outViewType.asObservable(); + this.onChangeYRange$ = this.outChangeYRange.asObservable(); + this.onSelectedAgent$ = this.outSelectedAgent.asObservable(); + this.onInvokeDownloadChart$ = this.outInvokeDownloadChart.asObservable(); + this.onReset$ = this.outReset.asObservable(); + } + addChartData(instanceKey: string, data: IScatterData): void { + this.outChartData.next({ + instanceKey: instanceKey, + data: data + }); + } + changeViewType(params: IChangedViewTypeParam): void { + this.outViewType.next(params); + } + changeYRange(yRange: IRangeParam): void { + this.outChangeYRange.next(yRange); + } + changeAgent(instanceKey: string, agent: string): void { + this.outSelectedAgent.next({ + instanceKey: instanceKey, + agent: agent + }); + } + downloadChart(instanceKey: string): void { + this.outInvokeDownloadChart.next(instanceKey); + } + reset(instanceKey: string, application: string, agent: string, from: number, to: number, mode: string): void { + this.outReset.next({ + instanceKey: instanceKey, + application: application, + agent: agent, + from: from, + to: to, + mode: mode + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-message-plugin.ts b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-message-plugin.ts new file mode 100644 index 000000000000..bf2cd6dc037f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-message-plugin.ts @@ -0,0 +1,46 @@ +export class ScatterChartMessagePlugin { + constructor() { + // this._init(); + } + // _init() { + // this._aCallback = []; + // } + // initElement($elParent, $elPlugin, option) { + // this._$element = $('
') + // .css({ + // 'top': 0, + // 'width': option['width'], + // 'height': option['height'], + // 'cursor': 'crosshair', + // 'display': 'none', + // 'z-index': 1100, + // 'position': 'absolute', + // 'background-color': 'rgba(0,0,0,0)' // for ie10 + // }) + // .addClass('message-display') + // .append( + // $('
') + // .css(option['noDataStyle']) + // .css({ + // 'top': (option['height'] / 2) + 'px', + // 'width': option['width'] + 'px', + // 'position': 'absolute', + // 'text-align': 'center' + // } + // )).appendTo($elParent); + + // return this; + // } + // initEvent( /* oChart */) { + // return this; + // } + // addCallback(fn) { + // this._aCallback.push(fn); + // } + // show(message) { + // this._$element.find('> div').html(message).end().show(); + // } + // hide() { + // this._$element.hide(); + // } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-options.component.css b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-options.component.css new file mode 100644 index 000000000000..f4172f3425a5 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-options.component.css @@ -0,0 +1,21 @@ +.l-tool-box { + font-size:14px; + color:#b3b5b9; + text-align:right; + position:relative; + padding: 0 25px 0 +} +.l-tool-box button { + margin:0 0 0 14px; +} +.l-tool-box button.l-last-child { + font-size:18px; + +} +.l-tool-box button.l-last-child:before { + padding-left: 14px; + border-left: 1px solid #e9ebec; +} +.fas { + font-size: 18px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-options.component.html b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-options.component.html new file mode 100644 index 000000000000..50bac318f8be --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-options.component.html @@ -0,0 +1,6 @@ +
+ + + + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-options.component.ts b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-options.component.ts new file mode 100644 index 000000000000..9bc36104e042 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-options.component.ts @@ -0,0 +1,20 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; + +@Component({ + selector: 'pp-scatter-chart-options', + templateUrl: './scatter-chart-options.component.html', + styleUrls: ['./scatter-chart-options.component.css'] +}) +export class ScatterChartOptionsComponent implements OnInit { + @Output() outShowSetting: EventEmitter = new EventEmitter(); + @Output() outDownload: EventEmitter = new EventEmitter(); + @Output() outOpenScatterPage: EventEmitter = new EventEmitter(); + @Output() outShowHelp: EventEmitter = new EventEmitter(); + @Input() instanceKey: string; + @Input() hiddenOptions: { setting: boolean, download: boolean, open: boolean, help: boolean }; + constructor() {} + ngOnInit() {} + onShowHelp($event: MouseEvent): void { + this.outShowHelp.emit($event); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-setting-popup.component.css b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-setting-popup.component.css new file mode 100644 index 000000000000..022bf5bed571 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-setting-popup.component.css @@ -0,0 +1,58 @@ +:host { + width: 100%; + z-index: 1000; + position: absolute; +} +.l-chart-setting { + display: flex; + flex-flow: column; + align-items: center; + justify-content: center; + width: 60%; + border: 1px solid #E5E8F0; + text-align: left; + box-shadow: 1px 1px 10px rgba(0, 0, 0, 0.15); + background: #FFF; + margin: 15% 20%; +} +.l-title-group { + height:auto; + padding: 10px 20px; + background-color: #FFF; +} +.l-title-group dt { + color: #4A8FD2; + font-size: 20px; + font-weight: 600; +} +.l-contents-group { + padding: 20px 20px 15px 20px +} +.l-contents-group ul li { + margin: 5px 0 0 0; + font-size: 13px; + font-weight: 600; +} +.l-contents-group ul li label { + width: 50%; + display: inline-block +} +.l-contents-group input { + border:1px solid #d7dde4; + font-size:13px; + color:#666; + height:22px; + padding:0 8px; +} +.l-bottom-group { + text-align: center; + margin: 0 0 20px; +} +input { + color: #666; + width: 40%; + height: 22px; + border: 1px solid #d7dde4; + padding: 0 8px; + font-size: 13px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-setting-popup.component.html b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-setting-popup.component.html new file mode 100644 index 000000000000..48e47839ab8f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-setting-popup.component.html @@ -0,0 +1,17 @@ +
+
+
+
Setting
+
+
+
+
    +
  • +
  • +
+
+
+ + +
+
diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-setting-popup.component.ts b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-setting-popup.component.ts new file mode 100644 index 000000000000..ef87c85f80af --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-setting-popup.component.ts @@ -0,0 +1,32 @@ +import { Component, OnInit, Input, Output, ViewChild, ElementRef, EventEmitter } from '@angular/core'; + +@Component({ + selector: 'pp-scatter-chart-setting-popup', + templateUrl: './scatter-chart-setting-popup.component.html', + styleUrls: ['./scatter-chart-setting-popup.component.css'] +}) +export class ScatterChartSettingPopupComponent implements OnInit { + @ViewChild('minInput') minInput: ElementRef; + @ViewChild('maxInput') maxInput: ElementRef; + @Input() instanceKey: string; + @Input() min: number; + @Input() max: number; + @Output() outApply: EventEmitter<{key: string, min: number, max: number}> = new EventEmitter(); + @Output() outCancel: EventEmitter = new EventEmitter(); + constructor() {} + ngOnInit() {} + onApply(): void { + this.min = Number.parseInt(this.minInput.nativeElement.value, 10); + this.max = Number.parseInt(this.maxInput.nativeElement.value, 10); + this.outApply.emit({ + key: this.instanceKey, + min: this.min, + max: this.max + }); + } + onCancel(): void { + this.minInput.nativeElement.value = this.min; + this.maxInput.nativeElement.value = this.max; + this.outCancel.emit(); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-state-view.component.css b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-state-view.component.css new file mode 100644 index 000000000000..f69f6cac9436 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-state-view.component.css @@ -0,0 +1,36 @@ +:host { + display: block; +} +.l-checkbox-group { + color:#b3b3b4; + margin: 24px 0 0 0; + display: flex; + flex-flow: row wrap; + font-size:12px; + justify-content: space-around; +} +.l-checkbox-group span { + color:#333; + font-size:22px; +} +.l-checkbox-group .success:before { + width: 13px; + height: 13px; + margin: 0 6px 0 0; + content: ''; + display: inline-block; + background: #34b994; + border-radius: 50%; +} +.l-checkbox-group .failed:before { + width: 13px; + height: 13px; + margin: 0 6px 0 0; + content: ''; + display: inline-block; + background: #e95459; + border-radius: 50%; +} +input { + margin-left: 10px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-state-view.component.html b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-state-view.component.html new file mode 100644 index 000000000000..ebf8c88bea5e --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-state-view.component.html @@ -0,0 +1,8 @@ +
+
+ + +
+
diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-state-view.component.ts b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-state-view.component.ts new file mode 100644 index 000000000000..633371a6d97d --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-state-view.component.ts @@ -0,0 +1,53 @@ +import { Component, OnInit, OnChanges, SimpleChanges, Input, Output, EventEmitter } from '@angular/core'; + +@Component({ + selector: 'pp-scatter-chart-state-view', + templateUrl: './scatter-chart-state-view.component.html', + styleUrls: ['./scatter-chart-state-view.component.css'] +}) +export class ScatterChartStateViewComponent implements OnInit, OnChanges { + innerTypeInfo: any[] = []; + @Input() instanceKey: string; + @Input() typeInfo: any[]; + @Input() typeCount: object; + @Output() outChanged: EventEmitter<{instanceKey: string, name: string, checked: boolean}> = new EventEmitter(); + constructor() {} + ngOnInit() {} + ngOnChanges(simpleChanges: SimpleChanges) { + if (simpleChanges['typeInfo'] && simpleChanges['typeInfo'].isFirstChange()) { + this.setInnerTypeInfo(); + } + } + private setInnerTypeInfo() { + this.typeInfo.forEach((info: object, index: number) => { + const obj = { + checked: true + }; + Object.keys(info).forEach((key: string) => { + obj[key] = info[key]; + }); + this.innerTypeInfo[index] = obj; + }); + const temp = this.innerTypeInfo[0]; + this.innerTypeInfo[0] = this.innerTypeInfo[1]; + this.innerTypeInfo[1] = temp; + } + upperFirstChar(str: string): string { + return str ? str.substr(0, 1).toUpperCase() + str.substr(1) : ''; + } + getTypeCount(name: string): number { + if (this.typeCount && this.typeCount[name]) { + return this.typeCount[name]; + } else { + return 0; + } + } + onCheck(type: any): void { + type.checked = !type.checked; + this.outChanged.emit({ + instanceKey: this.instanceKey, + name: type.name, + checked: type.checked + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-util.ts b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-util.ts new file mode 100644 index 000000000000..f33edc790378 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart-util.ts @@ -0,0 +1,45 @@ +export default { + // compare(aData: any[][], dataIndex: number, fnCompare: (result: number) => boolean): any { + // let targetIndex = 0; + // for (let i = 1, len = aData.length; i < len; i++) { + // const result = aData[targetIndex][dataIndex] - aData[i][dataIndex]; + // if (fnCompare(result)) { + // targetIndex = i; + // } + // } + // return aData[targetIndex][dataIndex]; + // }, + // min(result: number): boolean { + // return result > 0; + // }, + // max(result: number): boolean { + // return result < 0; + // }, + // indexOf(aData: any[], value: any): number { + // for (let i = 0 ; i < aData.length ; i++) { + // if (aData[i] === value) { + // return i; + // } + // } + // return -1; + // }, + // getBoundaryValue(oRange: { min: number, max: number}, value: number): number { + // return Math.min(oRange.max, Math.max(oRange.min, value)); + // }, + // isInRange(from: number, to: number, value: number): boolean { + // return value >= from && value <= to; + // }, + // isEmpty(obj: any): boolean { + // let count = 0; + // Object.keys(obj).forEach((key: string) => { + // count += obj[key].length; + // }); + // return count === 0; + // }, + // makeKey(a: any, b: any, c: any): string { + // return a + '-' + b + '-' + c; + // }, + // isString(v: any): boolean { + // return typeof v === 'string'; + // }, +}; diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart.component.css b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart.component.css new file mode 100644 index 000000000000..1bc8488bc47f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart.component.css @@ -0,0 +1,30 @@ +:host { + display: block; + height: 100%; +} +.l-wrapper { + display: block; +} +.l-scatter { + width: 100%; + height: 100%; + display: block; + position: relative; +} +.l-message { + top: 0px; + width: 100%; + height: 100%; + display: flex; + position: absolute; + text-align: center; + justify-content: center; + align-items: center; +} +.l-message span { + font-weight: 600; +} +canvas { + width: 100%; + height: 100%; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart.component.html b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart.component.html new file mode 100644 index 000000000000..3bf95e6b02d9 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart.component.html @@ -0,0 +1,5 @@ +
+
+
Loading...
+
{{i18nText.NO_DATA}}
+
diff --git a/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart.component.ts b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart.component.ts new file mode 100644 index 000000000000..91ff5ba94c20 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/scatter-chart/scatter-chart.component.ts @@ -0,0 +1,175 @@ +import { Component, OnInit, OnDestroy, OnChanges, Input, Output, EventEmitter, ViewChild, ElementRef, SimpleChanges } from '@angular/core'; +import { Subject } from 'rxjs'; +import { takeUntil, filter } from 'rxjs/operators'; +import { WindowRefService } from 'app/shared/services'; +import { ScatterChart, ITypeInfo } from './class/scatter-chart.class'; +import { ScatterChartDataBlock } from './class/scatter-chart-data-block.class'; +import { ScatterChartInteractionService, IChangedViewTypeParam, IRangeParam, IResetParam, IChangedAgentParam } from './scatter-chart-interaction.service'; + +@Component({ + selector: 'pp-scatter-chart', + templateUrl: './scatter-chart.component.html', + styleUrls: ['./scatter-chart.component.css'] +}) +export class ScatterChartComponent implements OnInit, OnDestroy, OnChanges { + static I18NTEXT = { + NO_DATA: 'NO_DATA', + }; + @ViewChild('scatter') elementScatter: ElementRef; + @Input() instanceKey: string; + @Input() addWindow: boolean; + @Input() width: number; + @Input() height: number; + @Input() fromX: number; + @Input() toX: number; + @Input() fromY: number; + @Input() toY: number; + @Input() mode: string; + @Input() application: string; + @Input() agent: string; + @Input() typeInfo: ITypeInfo[]; + @Input() i18nText = { + [ScatterChartComponent.I18NTEXT.NO_DATA]: 'No Data' + }; + @Input() timezone: string; + @Input() dateFormat: string[]; + @Output() outTransactionCount: EventEmitter = new EventEmitter(); + @Output() outSelectArea: EventEmitter = new EventEmitter(); + @Output() outChangeRangeX: EventEmitter = new EventEmitter(); + private unsubscribe: Subject = new Subject(); + dataLoaded = false; + scatterChartInstance: ScatterChart = null; + constructor( + private windowRefService: WindowRefService, + private scatterChartInteractionService: ScatterChartInteractionService + ) {} + ngOnInit() {} + ngOnChanges(changes: SimpleChanges) { + if (this.mode && (this.fromX >= 0) && (this.toX >= 0) && (this.fromY >= 0) && (this.toY >= 0) && this.typeInfo && this.application && this.timezone && this.dateFormat) { + if (this.scatterChartInstance === null) { + this.scatterChartInstance = new ScatterChart( + this.mode, + this.elementScatter.nativeElement, + this.fromX, + this.toX, + this.fromY, + this.toY, + this.typeInfo, + this.application, + this.agent, + this.width, + this.height, + this.timezone, + this.dateFormat + ); + this.addSubscribeForInstance(); + this.addSubscribeForService(); + this.addToWindow(); + } else { + if (changes['timezone'] && changes['timezone'].currentValue) { + this.scatterChartInstance.setTimezone(this.timezone); + this.scatterChartInstance.redraw(); + } + if (changes['dateFormat'] && changes['dateFormat'].currentValue) { + this.scatterChartInstance.setDateFormat(this.dateFormat); + this.scatterChartInstance.redraw(); + } + } + } + } + private addToWindow(): void { + if (this.addWindow) { + if ('scatterChartInstance' in this.windowRefService.nativeWindow === false) { + this.windowRefService.nativeWindow['scatterChartInstance'] = {}; + } + this.windowRefService.nativeWindow['scatterChartInstance'][this.application] = this.scatterChartInstance; + } + } + private addSubscribeForInstance(): void { + this.scatterChartInstance.onSelect$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((area: any) => { + this.outSelectArea.emit(area); + }); + this.scatterChartInstance.onChangeTransactionCount$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((typeCount: any) => { + this.outTransactionCount.emit(typeCount); + }); + this.scatterChartInstance.onChangeRangeX$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((range: any) => { + this.outChangeRangeX.emit(range); + }); + } + private addSubscribeForService(): void { + this.scatterChartInteractionService.onChartData$.pipe( + takeUntil(this.unsubscribe), + filter((dataWrapper: any) => { + return dataWrapper.instanceKey === this.instanceKey ? true : false; + }) + ).subscribe((dataWrapper: {instanceKey: string, data: IScatterData}) => { + this.scatterChartInstance.addData(new ScatterChartDataBlock(dataWrapper.data, this.scatterChartInstance.getTypeManager())); + this.dataLoaded = true; + }); + this.scatterChartInteractionService.onViewType$.pipe( + takeUntil(this.unsubscribe), + filter((data: any) => { + return data.instanceKey === this.instanceKey ? true : false; + }) + ).subscribe((typeCheck: IChangedViewTypeParam) => { + this.scatterChartInstance.changeShowType(typeCheck); + }); + this.scatterChartInteractionService.onChangeYRange$.pipe( + takeUntil(this.unsubscribe), + filter((data: any) => { + return data.instanceKey === this.instanceKey ? true : false; + }) + ).subscribe((yRange: IRangeParam) => { + this.scatterChartInstance.changeYRange(yRange); + }); + this.scatterChartInteractionService.onSelectedAgent$.pipe( + takeUntil(this.unsubscribe), + filter((data: any) => { + return data.instanceKey === this.instanceKey ? true : false; + }) + ).subscribe((data: IChangedAgentParam) => { + this.scatterChartInstance.changeSelectedAgent(data.agent); + }); + this.scatterChartInteractionService.onInvokeDownloadChart$.pipe( + takeUntil(this.unsubscribe), + filter((instanceKey: string) => { + return instanceKey === this.instanceKey ? true : false; + }) + ).subscribe(() => { + this.scatterChartInstance.downloadChartAsImage('png'); + }); + this.scatterChartInteractionService.onReset$.pipe( + takeUntil(this.unsubscribe), + filter((data: any) => { + return data.instanceKey === this.instanceKey ? true : false; + }) + ).subscribe((params: IResetParam) => { + this.application = params.application; + this.agent = params.agent; + this.fromX = params.from; + this.toX = params.to; + this.mode = params.mode; + this.scatterChartInstance.reset(params.application, params.agent, params.from, params.to, params.mode); + this.addToWindow(); + }); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + hideNoData(): boolean { + if (this.dataLoaded === false) { + return true; + } + if (this.mode === ScatterChart.MODE.REALTIME) { + return true; + } + return !this.scatterChartInstance.isEmpty(); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/search-period/index.ts b/web/src/main/webapp/v2/src/app/core/components/search-period/index.ts new file mode 100644 index 000000000000..ee06fbf443fe --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/search-period/index.ts @@ -0,0 +1,21 @@ + +import { NgModule } from '@angular/core'; +import { SharedModule } from 'app/shared'; +import { SearchPeriodContainerComponent } from './search-period-container.component'; +import { SearchPeriodComponent } from './search-period.component'; + +@NgModule({ + declarations: [ + SearchPeriodContainerComponent, + SearchPeriodComponent + ], + imports: [ + SharedModule + ], + exports: [ + SearchPeriodContainerComponent, + SearchPeriodComponent + ], + providers: [] +}) +export class SearchPeriodModule {} diff --git a/web/src/main/webapp/v2/src/app/core/components/search-period/search-period-container.component.css b/web/src/main/webapp/v2/src/app/core/components/search-period/search-period-container.component.css new file mode 100644 index 000000000000..65dd9f6ca2e9 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/search-period/search-period-container.component.css @@ -0,0 +1,5 @@ +:host { + display: inline-block; + margin-left: 15px; + width: 115px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/search-period/search-period-container.component.html b/web/src/main/webapp/v2/src/app/core/components/search-period/search-period-container.component.html new file mode 100644 index 000000000000..0603bb09033a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/search-period/search-period-container.component.html @@ -0,0 +1,5 @@ + + diff --git a/web/src/main/webapp/v2/src/app/core/components/search-period/search-period-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/search-period/search-period-container.component.ts new file mode 100644 index 000000000000..bf5582c0e5f4 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/search-period/search-period-container.component.ts @@ -0,0 +1,31 @@ +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; + +import { Period } from 'app/core/models/period'; +import { UrlPath } from 'app/shared/models'; +import { WebAppSettingDataService, AnalyticsService, TRACKED_EVENT_LIST } from 'app/shared/services'; + +@Component({ + selector: 'pp-search-period-container', + templateUrl: './search-period-container.component.html', + styleUrls: ['./search-period-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class SearchPeriodContainerComponent implements OnInit { + periodList: Period[]; + userDefaultPeriod: Period; + + constructor( + private webAppSettingDataService: WebAppSettingDataService, + private analyticsService: AnalyticsService, + ) {} + + ngOnInit() { + this.periodList = this.webAppSettingDataService.getPeriodList(UrlPath.MAIN); + this.userDefaultPeriod = this.webAppSettingDataService.getUserDefaultPeriod(); + } + + onChangeUserDefaultPeriod(value: Period): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.SET_SEARCH_PERIOD_IN_CONFIGURATION, value.getValueWithTime()); + this.webAppSettingDataService.setUserDefaultPeriod(value); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/search-period/search-period.component.css b/web/src/main/webapp/v2/src/app/core/components/search-period/search-period.component.css new file mode 100644 index 000000000000..dd1adaee7acc --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/search-period/search-period.component.css @@ -0,0 +1,25 @@ +:host { + display: block; + position: relative; + width: 100%; +} +.fa-angle-down { + position: absolute; + top: 8px; + right: 8px; + font-size: 15px; +} + +.l-app-select { + width: 100%; + cursor: pointer; + padding: 6px 12px; + background-color: #fff; + border: 1px solid #d7dde4 !important; + border-radius: 0px; + font-size: 13px; + color: #666; + appearance: none; + -webkit-appearance: none; + outline: 0; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/search-period/search-period.component.html b/web/src/main/webapp/v2/src/app/core/components/search-period/search-period.component.html new file mode 100644 index 000000000000..5acd8ea60632 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/search-period/search-period.component.html @@ -0,0 +1,4 @@ + + diff --git a/web/src/main/webapp/v2/src/app/core/components/search-period/search-period.component.ts b/web/src/main/webapp/v2/src/app/core/components/search-period/search-period.component.ts new file mode 100644 index 000000000000..037125eaf5d0 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/search-period/search-period.component.ts @@ -0,0 +1,24 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; +import { Period } from 'app/core/models/period'; + +@Component({ + selector: 'pp-search-period', + templateUrl: './search-period.component.html', + styleUrls: ['./search-period.component.css'], +}) +export class SearchPeriodComponent implements OnInit { + @Input() periodList: Period[]; + @Input() userDefaultPeriod: Period; + @Output() outChangeUserDefaultPeriod = new EventEmitter(); + + constructor() {} + ngOnInit() {} + + onChangeUserDefaultPeriod(value: Period): void { + this.outChangeUserDefaultPeriod.emit(value); + } + + compareFn(o1: Period, o2: Period): boolean { + return o1 && o2 ? o1.equals(o2) : o1 === o2; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-and-agent-list/index.ts b/web/src/main/webapp/v2/src/app/core/components/server-and-agent-list/index.ts new file mode 100644 index 000000000000..8aedf8579a91 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-and-agent-list/index.ts @@ -0,0 +1,27 @@ + +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +// import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { MatTooltipModule } from '@angular/material'; +import { ServerAndAgentListComponent } from './server-and-agent-list.component'; +import { ServerAndAgentListContainerComponent } from './server-and-agent-list-container.component'; +import { ServerAndAgentListDataService } from './server-and-agent-list-data.service'; + +@NgModule({ + declarations: [ + ServerAndAgentListComponent, + ServerAndAgentListContainerComponent + ], + imports: [ + CommonModule, + // BrowserAnimationsModule, + MatTooltipModule + ], + exports: [ + ServerAndAgentListContainerComponent + ], + providers: [ + ServerAndAgentListDataService + ] +}) +export class ServerAndAgentListModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/server-and-agent-list/server-and-agent-list-container.component.css b/web/src/main/webapp/v2/src/app/core/components/server-and-agent-list/server-and-agent-list-container.component.css new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/web/src/main/webapp/v2/src/app/core/components/server-and-agent-list/server-and-agent-list-container.component.html b/web/src/main/webapp/v2/src/app/core/components/server-and-agent-list/server-and-agent-list-container.component.html new file mode 100644 index 000000000000..27f8cf398229 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-and-agent-list/server-and-agent-list-container.component.html @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/server-and-agent-list/server-and-agent-list-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/server-and-agent-list/server-and-agent-list-container.component.ts new file mode 100644 index 000000000000..233a2c32d42a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-and-agent-list/server-and-agent-list-container.component.ts @@ -0,0 +1,114 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { Subject } from 'rxjs'; +import { switchMap, takeUntil, filter } from 'rxjs/operators'; + +import { + NewUrlStateNotificationService, + UrlRouteManagerService, + WebAppSettingDataService, + StoreHelperService, + AnalyticsService, + TRACKED_EVENT_LIST +} from 'app/shared/services'; +import { Actions } from 'app/shared/store'; +import { UrlPath, UrlPathId } from 'app/shared/models'; +import { ServerAndAgentListDataService } from './server-and-agent-list-data.service'; + +@Component({ + selector: 'pp-server-and-agent-list-container', + templateUrl: './server-and-agent-list-container.component.html', + styleUrls: ['./server-and-agent-list-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ServerAndAgentListContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + filterStr: string; + agentId: string; + serverList: { [key: string]: IServerAndAgentData[] } = {}; + serverKeyList: string[]; + filteredServerList: { [key: string]: IServerAndAgentData[] }; + filteredServerKeyList: string[]; + funcImagePath: Function; + constructor( + private changeDetectorRef: ChangeDetectorRef, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private urlRouteManagerService: UrlRouteManagerService, + private webAppSettingDataService: WebAppSettingDataService, + private storeHelperService: StoreHelperService, + private serverAndAgentListDataService: ServerAndAgentListDataService, + private analyticsService: AnalyticsService, + ) {} + ngOnInit() { + this.funcImagePath = this.webAppSettingDataService.getImagePathMakeFunc(); + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe), + filter((urlService: NewUrlStateNotificationService) => { + return urlService.hasValue(UrlPathId.END_TIME); + }), + switchMap((urlService: NewUrlStateNotificationService) => { + this.agentId = urlService.hasValue(UrlPathId.AGENT_ID) ? urlService.getPathValue(UrlPathId.AGENT_ID) : ''; + return this.serverAndAgentListDataService.getData(); + }) + ).subscribe((res: { [key: string]: IServerAndAgentData[] }) => { + this.serverKeyList = this.filteredServerKeyList = Object.keys(res).sort(); + this.serverList = this.filteredServerList = res; + if (this.agentId) { + this.dispatchAgentData(); + } + this.changeDetectorRef.detectChanges(); + }); + this.storeHelperService.getServerAndAgentQuery(this.unsubscribe).subscribe((query: string) => { + this.filteringServerList(query); + this.changeDetectorRef.detectChanges(); + }); + } + private dispatchAgentData(): void { + this.serverKeyList.forEach((key: string) => { + this.serverList[key].forEach((agent: IServerAndAgentData) => { + if ( this.agentId === agent.agentId ) { + this.storeHelperService.dispatch(new Actions.UpdateAgentInfo(agent)); + } + }); + }); + } + private filteringServerList(query: string): void { + if ( query === '' ) { + this.filteredServerKeyList = this.serverKeyList; + this.filteredServerList = this.serverList; + } else { + const filteredKeyList: string[] = []; + const filteredServerList: { [key: string]: IServerAndAgentData[] } = {}; + this.serverKeyList.forEach((key: string) => { + let hasKey = false; + this.serverList[key].forEach((agent: IServerAndAgentData) => { + if ( agent.agentId.toLowerCase().indexOf(query.toLowerCase()) !== -1 ) { + if ( hasKey === false ) { + filteredKeyList.push(key); + filteredServerList[key] = []; + hasKey = true; + } + filteredServerList[key].push(agent); + } + }); + }); + this.filteredServerKeyList = filteredKeyList.sort(); + this.filteredServerList = filteredServerList; + } + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + onSelectAgent(agentName: string) { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.GO_TO_AGENT_INSPECTOR); + this.urlRouteManagerService.moveOnPage({ + url: [ + UrlPath.INSPECTOR, + this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getUrlStr(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.PERIOD).getValueWithTime(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.END_TIME).getEndTime(), + agentName + ] + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-and-agent-list/server-and-agent-list-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/server-and-agent-list/server-and-agent-list-data.service.ts new file mode 100644 index 000000000000..f8dd3c969951 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-and-agent-list/server-and-agent-list-data.service.ts @@ -0,0 +1,25 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { UrlPathId } from 'app/shared/models'; +import { NewUrlStateNotificationService } from 'app/shared/services'; + +@Injectable() +export class ServerAndAgentListDataService { + constructor( + private http: HttpClient, + private newUrlStateNotificationService: NewUrlStateNotificationService + ) { } + getData(): Observable<{ [key: string]: IServerAndAgentData[] }> { + return this.http.get<{ [key: string]: IServerAndAgentData[] }>('getAgentList.pinpoint', this.makeRequestOptionsArgs()); + } + private makeRequestOptionsArgs(): object { + return { + params: { + application: this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).applicationName, + from: this.newUrlStateNotificationService.getStartTimeToNumber(), + to: this.newUrlStateNotificationService.getEndTimeToNumber() + } + }; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-and-agent-list/server-and-agent-list.component.css b/web/src/main/webapp/v2/src/app/core/components/server-and-agent-list/server-and-agent-list.component.css new file mode 100644 index 000000000000..c27ad425bdb7 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-and-agent-list/server-and-agent-list.component.css @@ -0,0 +1,68 @@ +.l-servers-list { + height: 100%; + padding: 0 10px; + overflow-y: auto; + overflow-x: hidden; +} +.l-servers-list li { + color:#999; + margin: 15px 0 0 0; + font-size: 13px; + font-weight: 600; +} +.l-servers-list li.first-child { + margin:0; +} +.l-servers-list li.first-child:before { + color: #999; + margin: 0 8px 0 0; + content: '\f0ae'; + font-size: 14px; + font-weight: normal; + font-family: FontAwesome; +} +.l-server-name { + display: block; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} +.l-server-name i { + float :left; + margin: 2px 4px 0px 0px; +} +.l-agent-list { + margin: 8px 0 0 10px; +} +.l-agent-list li { + color: #333; + margin: 0px 0px; + display: block; + padding: 4px 4px 4px 10px; + font-size: 12px; + font-weight: 400; + align-items: center; +} +.l-agent-list li:hover { + color: #FFF; + cursor: pointer; + background-color: #418CD3; +} +.l-agent-name { + display: block; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} +.l-agent-name i { + float: left; + margin: 4px 4px 0px 0px; +} +.l-icon-alert { + float: right; + margin: 0 0 0 13px; + height: 1em; +} +li.active { + box-shadow: 1px 1px 1px 0px rgba(53,61,117,1); +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/server-and-agent-list/server-and-agent-list.component.html b/web/src/main/webapp/v2/src/app/core/components/server-and-agent-list/server-and-agent-list.component.html new file mode 100644 index 000000000000..f1e72894b462 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-and-agent-list/server-and-agent-list.component.html @@ -0,0 +1,18 @@ +
    +
  • +
    {{serverName}}
    +
      +
    • + +
      + {{agent.agentId}} +
      +
    • +
    +
  • +
+
    +
  • + There is no agent. +
  • +
diff --git a/web/src/main/webapp/v2/src/app/core/components/server-and-agent-list/server-and-agent-list.component.ts b/web/src/main/webapp/v2/src/app/core/components/server-and-agent-list/server-and-agent-list.component.ts new file mode 100644 index 000000000000..1da8aa01f005 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-and-agent-list/server-and-agent-list.component.ts @@ -0,0 +1,37 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; + +@Component({ + selector: 'pp-server-and-agent-list', + templateUrl: './server-and-agent-list.component.html', + styleUrls: ['./server-and-agent-list.component.css'] +}) +export class ServerAndAgentListComponent implements OnInit { + @Input() funcImagePath: Function; + @Input() serverKeyList: string[] = []; + @Input() serverList: any = {}; + @Input() agentId: string; + @Output() outSelectAgent: EventEmitter = new EventEmitter(); + constructor() {} + ngOnInit() {} + getIconPath(iconState: number) { + let iconName = ''; + switch (iconState) { + case 200: + case 201: + iconName = 'icon-down'; + break; + case 300: + iconName = 'icon-disconnect'; + break; + case -1: + iconName = 'icon-error'; + break; + default: + break; + } + return this.funcImagePath(iconName); + } + onSelectAgent(agentName: string) { + this.outSelectAgent.emit(agentName); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-list/index.ts b/web/src/main/webapp/v2/src/app/core/components/server-list/index.ts new file mode 100644 index 000000000000..d00c3d4efb2c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-list/index.ts @@ -0,0 +1,24 @@ + +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +// import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { MatTooltipModule } from '@angular/material'; +import { ServerListComponent } from './server-list.component'; +import { ServerListContainerComponent } from './server-list-container.component'; + +@NgModule({ + declarations: [ + ServerListComponent, + ServerListContainerComponent + ], + imports: [ + CommonModule, + // BrowserAnimationsModule, + MatTooltipModule + ], + exports: [ + ServerListContainerComponent + ], + providers: [] +}) +export class ServerListModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/server-list/server-list-container.component.css b/web/src/main/webapp/v2/src/app/core/components/server-list/server-list-container.component.css new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/web/src/main/webapp/v2/src/app/core/components/server-list/server-list-container.component.html b/web/src/main/webapp/v2/src/app/core/components/server-list/server-list-container.component.html new file mode 100644 index 000000000000..8cd50314b116 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-list/server-list-container.component.html @@ -0,0 +1,8 @@ + diff --git a/web/src/main/webapp/v2/src/app/core/components/server-list/server-list-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/server-list/server-list-container.component.ts new file mode 100644 index 000000000000..e5e7b2b2c430 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-list/server-list-container.component.ts @@ -0,0 +1,47 @@ +import { Component, OnInit, OnDestroy, Output, EventEmitter, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { Subject } from 'rxjs'; + +import { WebAppSettingDataService, StoreHelperService } from 'app/shared/services'; + +@Component({ + selector: 'pp-server-list-container', + templateUrl: './server-list-container.component.html', + styleUrls: ['./server-list-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ServerListContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + @Output() outSelectAgent: EventEmitter = new EventEmitter(); + @Output() outOpenInspector: EventEmitter = new EventEmitter(); + serverList: any = {}; + agentData: any = {}; + isWas: boolean; + funcImagePath: Function; + constructor( + private changeDetectorRef: ChangeDetectorRef, + private storeHelperService: StoreHelperService, + private webAppSettingDataService: WebAppSettingDataService, + ) { + this.funcImagePath = this.webAppSettingDataService.getImagePathMakeFunc(); + } + ngOnInit() { + this.storeHelperService.getServerListData(this.unsubscribe).subscribe((agentData: any) => { + if ( agentData && agentData['serverList'] ) { + this.serverList = agentData['serverList']; + this.agentData = agentData['agentHistogram']; + this.isWas = agentData['isWas']; + this.changeDetectorRef.detectChanges(); + } + }); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + onSelectAgent(agentName: string) { + this.outSelectAgent.emit(agentName); + } + onOpenInspector(agentName: string) { + this.outOpenInspector.emit(agentName); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-list/server-list.component.css b/web/src/main/webapp/v2/src/app/core/components/server-list/server-list.component.css new file mode 100644 index 000000000000..4e3f10d5db9f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-list/server-list.component.css @@ -0,0 +1,97 @@ +.l-servers-list { + padding: 0 10px; +} +.l-server-name { + display: block; + overflow : hidden; + white-space : nowrap; + text-overflow : ellipsis; +} +.l-servers-list li { + font-size: 13px; + color:#333; + font-weight: 600; +} +.l-servers-list li { + margin: 15px 0 0 0; +} +.l-servers-list li.first-child { + margin:0; +} +.l-servers-list li.first-child:before { + font-family: FontAwesome; + content: '\f0ae'; + font-size: 14px; + margin: 0 8px 0 0; + color: #999; + font-weight: normal; +} +.l-servers-list li .l-category { + margin: 10px 0 0 27px; +} +.l-servers-list li .l-category span { + display: inline-block; + padding: 2px 5px; + font-size: 10px; + color: #fff; + font-weight: 600; +} +.l-servers-list li ul { + margin: 14px 0 0 27px; +} +.l-servers-list li ul li { + font-size: 12px; + color: #666; + font-weight: 400; + height: 20px; + margin: 5px 0px; + color: #999; +} +.l-servers-list li ul li input { + margin: 0 5px; +} +.l-servers-list li ul li div { + float: right; +} +.l-servers-list li ul li label { + display: block; + overflow : hidden; + white-space : nowrap; + text-overflow : ellipsis; +} +.l-servers-list li ul li:hover { + background:#f1f3f7; +} +.l-text-box { + padding: 3px 5px; + font-size: 10px; + color: #FFF; + margin-left: 13px; + background-color: #4b99e3; +} +.l-icon-alert { + height: 1em; +} +.l-servers-list ul li { + height: 30px; +} +.l-servers-list ul span { + cursor: pointer; +} +i.fas { + margin-right: 4px; +} +.l-category { + display: inline-block; + padding: 2px 5px; + font-size: 10px; + color: #fff; + font-weight: 600; + cursor: pointer; +} +.l-category.l-green { + background:#23c6c8; +} +.l-category.l-blue { + background:#5597d5; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/server-list/server-list.component.html b/web/src/main/webapp/v2/src/app/core/components/server-list/server-list.component.html new file mode 100644 index 000000000000..c834bdb9d05a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-list/server-list.component.html @@ -0,0 +1,17 @@ +
    +
  • +
    {{ serverName }}
    +
      +
    • +
      + + +
      + +
    • +
    +
  • +
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/server-list/server-list.component.ts b/web/src/main/webapp/v2/src/app/core/components/server-list/server-list.component.ts new file mode 100644 index 000000000000..b10e66f99e19 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-list/server-list.component.ts @@ -0,0 +1,36 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; + +@Component({ + selector: 'pp-server-list', + templateUrl: './server-list.component.html', + styleUrls: ['./server-list.component.css'], +}) +export class ServerListComponent implements OnInit { + @Input() serverList: any = {}; + @Input() agentData: any = {}; + @Input() isWas: boolean; + @Input() funcImagePath: Function; + @Output() outSelectAgent: EventEmitter = new EventEmitter(); + @Output() outOpenInspector: EventEmitter = new EventEmitter(); + isChanged = false; + constructor() {} + ngOnInit() {} + getServerKeys(): string[] { + return Object.keys(this.serverList).sort(); + } + getAgentKeys(serverName: string): string[] { + return Object.keys(this.serverList[serverName]['instanceList']).sort(); + } + hasError(agentName: string): boolean { + return this.agentData[agentName] && this.agentData[agentName]['Error'] > 0; + } + getAlertImgPath(): string { + return this.funcImagePath('icon-alert'); + } + onSelectAgent(agentName: string) { + this.outSelectAgent.emit(agentName); + } + onOpenInspector(agentName: string): void { + this.outOpenInspector.emit(agentName); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map-context-popup/index.ts b/web/src/main/webapp/v2/src/app/core/components/server-map-context-popup/index.ts new file mode 100644 index 000000000000..25f0f1e020da --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map-context-popup/index.ts @@ -0,0 +1,21 @@ +import { NgModule } from '@angular/core'; + +import { SharedModule } from 'app/shared'; +import { ServerMapContextPopupContainerComponent } from 'app/core/components/server-map-context-popup/server-map-context-popup-container.component'; +import { ServerMapContextPopupComponent } from 'app/core/components/server-map-context-popup/server-map-context-popup.component'; + +@NgModule({ + declarations: [ + ServerMapContextPopupContainerComponent, + ServerMapContextPopupComponent + ], + imports: [ + SharedModule + ], + exports: [], + entryComponents: [ + ServerMapContextPopupContainerComponent + ], + providers: [], +}) +export class ServerMapContextPopupModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map-context-popup/server-map-context-popup-container.component.css b/web/src/main/webapp/v2/src/app/core/components/server-map-context-popup/server-map-context-popup-container.component.css new file mode 100644 index 000000000000..7f26ddcb5503 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map-context-popup/server-map-context-popup-container.component.css @@ -0,0 +1,3 @@ +:host { + display: block; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map-context-popup/server-map-context-popup-container.component.html b/web/src/main/webapp/v2/src/app/core/components/server-map-context-popup/server-map-context-popup-container.component.html new file mode 100644 index 000000000000..6d7b441729d3 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map-context-popup/server-map-context-popup-container.component.html @@ -0,0 +1,6 @@ + + \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map-context-popup/server-map-context-popup-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/server-map-context-popup/server-map-context-popup-container.component.ts new file mode 100644 index 000000000000..986badbb2be2 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map-context-popup/server-map-context-popup-container.component.ts @@ -0,0 +1,44 @@ +import { Component, OnInit, Input, Output, EventEmitter, AfterViewInit } from '@angular/core'; + +import { ServerMapInteractionService } from 'app/core/components/server-map/server-map-interaction.service'; +import { ServerMapData } from 'app/core/components/server-map/class'; +import { DynamicPopup } from 'app/shared/services/dynamic-popup.service'; + +@Component({ + selector: 'pp-server-map-context-popup-container', + templateUrl: './server-map-context-popup-container.component.html', + styleUrls: ['./server-map-context-popup-container.component.css'] +}) +export class ServerMapContextPopupContainerComponent implements OnInit, AfterViewInit, DynamicPopup { + @Input() data: ServerMapData; + @Input() coord: ICoordinate; + @Output() outCreated = new EventEmitter(); + @Output() outClose = new EventEmitter(); + + constructor( + private serverMapInteractionService: ServerMapInteractionService, + ) {} + + ngOnInit() {} + ngAfterViewInit() { + this.outCreated.emit(this.coord); + } + + onInputChange({coord}: {coord: ICoordinate}): void { + this.outCreated.emit(coord); + } + + onClickMergeCheck(mergeState: IServerMapMergeState): void { + this.serverMapInteractionService.setMergeState(mergeState); + this.outClose.emit(); + } + + onClickRefresh(): void { + this.serverMapInteractionService.setRefresh(); + this.outClose.emit(); + } + + onClickOutside(): void { + this.outClose.emit(); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map-context-popup/server-map-context-popup.component.css b/web/src/main/webapp/v2/src/app/core/components/server-map-context-popup/server-map-context-popup.component.css new file mode 100644 index 000000000000..afa53b60d74c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map-context-popup/server-map-context-popup.component.css @@ -0,0 +1,40 @@ +:host { + display: block; +} +ul { + width: 100%; + margin: 0 0; + padding: 0 0; + list-style-type: none; +} +li { + padding: 10px; + list-style: none; +} +.l-one-depth-list > li { + border-bottom: 1px solid #E5E5E5; +} + +.l-one-depth-list > li > div { + padding: 2px 4px; +} + +.l-one-depth-list > li:last-of-type { + border-bottom: none; +} +li.l-selectable-command { + cursor: pointer; +} +li.l-selectable-command:hover { + color: #FFF; + background-color: #4B99E3; +} +.l-two-depth-list { + padding-top: 10px; +} +.l-two-depth-list li { + padding: 2px 4px 2px 14px; +} +.fas { + margin-right: 4px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map-context-popup/server-map-context-popup.component.html b/web/src/main/webapp/v2/src/app/core/components/server-map-context-popup/server-map-context-popup.component.html new file mode 100644 index 000000000000..0eab9a24f83f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map-context-popup/server-map-context-popup.component.html @@ -0,0 +1,11 @@ +
    +
  • +
    Merge
    +
      +
    • + {{key}} +
    • +
    +
  • +
  • Refresh
  • +
diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map-context-popup/server-map-context-popup.component.ts b/web/src/main/webapp/v2/src/app/core/components/server-map-context-popup/server-map-context-popup.component.ts new file mode 100644 index 000000000000..460b79b298f5 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map-context-popup/server-map-context-popup.component.ts @@ -0,0 +1,42 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; + +import { ServerMapData } from 'app/core/components/server-map/class'; + +@Component({ + selector: 'pp-server-map-context-popup', + templateUrl: './server-map-context-popup.component.html', + styleUrls: ['./server-map-context-popup.component.css'] +}) +export class ServerMapContextPopupComponent implements OnInit { + @Input() data: ServerMapData; + @Output() outClickMergeCheck = new EventEmitter(); + @Output() outClickRefresh = new EventEmitter(); + + mergeNodeStateMap: { [key: string]: boolean }; + objectKeys = Object.keys; + + constructor() {} + ngOnInit() { + this.mergeNodeStateMap = this.data.getMergeState(); + } + + onClickMergeCheck(name: string): void { + this.mergeNodeStateMap[name] = !this.mergeNodeStateMap[name]; + this.outClickMergeCheck.emit({ + name, + state: this.mergeNodeStateMap[name] + }); + } + onClickRefresh(): void { + this.outClickRefresh.emit(); + } + getClassState(key: string): any { + return this.mergeNodeStateMap[key] ? { + fas: true, + 'fa-check-square': true + } : { + far: true, + 'fa-square': true + }; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map-options/index.ts b/web/src/main/webapp/v2/src/app/core/components/server-map-options/index.ts new file mode 100644 index 000000000000..113d5df62677 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map-options/index.ts @@ -0,0 +1,20 @@ + +import { NgModule } from '@angular/core'; +import { SharedModule } from 'app/shared'; +import { ServerMapOptionsComponent } from './server-map-options.component'; +import { ServerMapOptionsContainerComponent } from './server-map-options-container.component'; + +@NgModule({ + declarations: [ + ServerMapOptionsComponent, + ServerMapOptionsContainerComponent + ], + imports: [ + SharedModule + ], + exports: [ + ServerMapOptionsContainerComponent + ], + providers: [] +}) +export class ServerMapOptionsModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map-options/server-map-options-container.component.css b/web/src/main/webapp/v2/src/app/core/components/server-map-options/server-map-options-container.component.css new file mode 100644 index 000000000000..bc32c5675c9f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map-options/server-map-options-container.component.css @@ -0,0 +1,4 @@ +:host { + display: block; + margin-right: 10px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map-options/server-map-options-container.component.html b/web/src/main/webapp/v2/src/app/core/components/server-map-options/server-map-options-container.component.html new file mode 100644 index 000000000000..bf0dd79b6d2d --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map-options/server-map-options-container.component.html @@ -0,0 +1,11 @@ + + diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map-options/server-map-options-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/server-map-options/server-map-options-container.component.ts new file mode 100644 index 000000000000..cfe9bd2bfb67 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map-options/server-map-options-container.component.ts @@ -0,0 +1,91 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { Subject } from 'rxjs'; +import { takeUntil, tap, map } from 'rxjs/operators'; + +import { + WebAppSettingDataService, + NewUrlStateNotificationService, + UrlRouteManagerService, + AnalyticsService, + TRACKED_EVENT_LIST +} from 'app/shared/services'; +import { UrlQuery, UrlPathId } from 'app/shared/models'; + +@Component({ + selector: 'pp-server-map-options-container', + templateUrl: './server-map-options-container.component.html', + styleUrls: ['./server-map-options-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ServerMapOptionsContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + + funcImagePath: Function; + hiddenComponent: boolean; + inboundList: string[]; + outboundList: string[]; + selectedInbound: string; + selectedOutbound: string; + selectedBidirectional: boolean; + selectedWasOnly: boolean; + constructor( + private changeDetectorRef: ChangeDetectorRef, + private webAppSettingDataService: WebAppSettingDataService, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private urlRouteManagerService: UrlRouteManagerService, + private analyticsService: AnalyticsService + ) { + this.funcImagePath = this.webAppSettingDataService.getImagePathMakeFunc(); + } + + ngOnInit() { + this.inboundList = this.webAppSettingDataService.getInboundList(); + this.outboundList = this.webAppSettingDataService.getOutboundList(); + + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe), + tap((urlService: NewUrlStateNotificationService) => { + if (urlService.hasValue(UrlPathId.APPLICATION, UrlPathId.PERIOD, UrlPathId.END_TIME)) { + this.hiddenComponent = false; + } else { + this.hiddenComponent = true; + } + }), + map((urlService: NewUrlStateNotificationService) => { + return { + inbound: urlService.hasValue(UrlQuery.INBOUND) ? urlService.getQueryValue(UrlQuery.INBOUND) : this.webAppSettingDataService.getUserDefaultInbound(), + outbound: urlService.hasValue(UrlQuery.OUTBOUND) ? urlService.getQueryValue(UrlQuery.OUTBOUND) : this.webAppSettingDataService.getUserDefaultOutbound(), + bidirectional: urlService.hasValue(UrlQuery.BIDIRECTIONAL) ? urlService.getQueryValue(UrlQuery.BIDIRECTIONAL) === 'true' : false, + wasOnly: urlService.hasValue(UrlQuery.WAS_ONLY) ? urlService.getQueryValue(UrlQuery.WAS_ONLY) === 'true' : false + }; + }) + ).subscribe(({inbound, outbound, bidirectional, wasOnly}: {inbound: string, outbound: string, bidirectional: boolean, wasOnly: boolean}) => { + this.selectedInbound = inbound; + this.selectedOutbound = outbound; + this.selectedBidirectional = bidirectional; + this.selectedWasOnly = wasOnly; + this.changeDetectorRef.detectChanges(); + }); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + onChangeBound(options: { inbound: string, outbound: string, wasOnly: boolean, bidirectional: boolean }): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.SET_SERVER_MAP_OPTION, `inbound: ${options.inbound}, outbound: ${options.outbound}, wasOnly: ${options.wasOnly}, bidirectional: ${options.bidirectional}`); + this.urlRouteManagerService.moveOnPage({ + url: [ + this.newUrlStateNotificationService.getStartPath(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getUrlStr(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.PERIOD).getValueWithTime(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.END_TIME).getEndTime() + ], + queryParam: { + [UrlQuery.INBOUND]: options.inbound, + [UrlQuery.OUTBOUND]: options.outbound, + [UrlQuery.WAS_ONLY]: options.wasOnly, + [UrlQuery.BIDIRECTIONAL]: options.bidirectional + } + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map-options/server-map-options.component.css b/web/src/main/webapp/v2/src/app/core/components/server-map-options/server-map-options.component.css new file mode 100644 index 000000000000..e6375865bf3e --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map-options/server-map-options.component.css @@ -0,0 +1,130 @@ +:host { + display: block; + position: relative; + width: 180px; +} +.fa-sign-in-alt, .fa-sign-out-alt { + color: #33b692; +} +button { + outline: none; +} +.l-dropdown-button { + width: 100%; + height: 32px; + border: 1px solid #4488CB; + padding: 4px 0 4px 0; + display: flex; + font-size: 13px; + text-align: left; + align-items: center; + background-color: #fff; +} +.l-dropdown-button .fa-angle-down { + font-size: 15px; + display: inline-block; + margin-left: 16px; + color: #33b692; +} + +.l-bound-text { + display: inline-block; + font-size: 14px; + margin-left: 11px; + color: #333; +} +.l-bound-double-text { + color: #DDD; + font-size: 8px; + text-align: center; + font-weight: 600; +} +.l-bound-double-text.selected { + color: #469ae4; +} + +.l-dropdown-menu-wrapper { + position: absolute; + top: 32px; + left: 0; + z-index: 9999; + display: flex; + flex-wrap: wrap; + border: 1px solid #4488CB; + background-color: #fff; + width: 180px; +} + +.l-inbound-list { + border-right: 1px solid #e5e8f0; +} + +.l-inbound-list, .l-outbound-list { + width: 50%; + text-align: center; +} + +.l-bound-list-item { + font-weight: 400; + color: #333; + font-size: 13px; + padding: 5px 10px; + cursor: pointer; +} + +.l-bound-title { + padding: 5px 10px; + color: #333; + background-color: #edf2f8; + font-weight: 600 !important; + font-size: 12px; + border-bottom: 1px solid #e5e8f0; +} +.l-bidirectional-title { + letter-spacing: -0.5px; +} + +.l-bound-list-item:hover { + background-color: #eee; +} + +.l-bound-list-item.active { + color: #edf2f8; + background-color: #4b99e3; +} +.l-bidirectional-selector { + text-align: center; + color: #469ae4; + margin: 10px; + cursor: pointer; +} +.l-was-only-selector { + text-align: center; + color: #DDD; + margin: 12px 10px 10px 10px; + font-size: 20px; + cursor:pointer; +} +.l-was-only-selector .selected { + color: #469ae4; +} + +.l-button-group-wrapper { + width: 100%; + border-top: 1px solid #e5e8f0; + padding: 6px; + text-align: right; +} +.l-apply-button { + background-color: #4a8fd2; + border: 1px solid #4a8fd2; + padding: 5px 11px; + margin-left: 2px; + color: #fff; +} + +.l-cancel-button { + border: 1px solid #e5e8f0; + padding: 5px 7px; + color: #333; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map-options/server-map-options.component.html b/web/src/main/webapp/v2/src/app/core/components/server-map-options/server-map-options.component.html new file mode 100644 index 000000000000..69f9ceb2efd7 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map-options/server-map-options.component.html @@ -0,0 +1,36 @@ +
+ + +
+ \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map-options/server-map-options.component.ts b/web/src/main/webapp/v2/src/app/core/components/server-map-options/server-map-options.component.ts new file mode 100644 index 000000000000..a6e17e651141 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map-options/server-map-options.component.ts @@ -0,0 +1,92 @@ +import { Component, EventEmitter, Input, Output, OnInit, OnChanges, SimpleChanges } from '@angular/core'; + +@Component({ + selector: 'pp-server-map-options', + templateUrl: './server-map-options.component.html', + styleUrls: ['./server-map-options.component.css'] +}) +export class ServerMapOptionsComponent implements OnInit, OnChanges { + hideList = true; + prevWasOnly: boolean; + prevBidirectional: boolean; + prevSelectedInbound: string; + prevSelectedOutbound: string; + bidirectionalPath: string; + @Input() funcImagePath: Function; + @Input() selectedWasOnly: boolean; + @Input() selectedBidirectional: boolean; + @Input() selectedInbound: string; + @Input() selectedOutbound: string; + @Input() inboundList: string[]; + @Input() outboundList: string[]; + @Output() outSelected: EventEmitter<{ + inbound: string, + outbound: string, + wasOnly: boolean, + bidirectional: boolean + }> = new EventEmitter(); + + constructor() {} + ngOnInit() {} + ngOnChanges(changes: SimpleChanges) { + if (changes['selectedBidirectional']) { + this.prevBidirectional = this.selectedBidirectional = changes['selectedBidirectional'].currentValue; + } + if (changes['selectedWasOnly']) { + this.prevWasOnly = this.selectedWasOnly = changes['selectedWasOnly'].currentValue; + } + if (changes['selectedInbound']) { + this.prevSelectedInbound = this.selectedInbound = changes['selectedInbound'].currentValue; + } + if (changes['selectedOutbound']) { + this.prevSelectedOutbound = this.selectedOutbound = changes['selectedOutbound'].currentValue; + } + } + private close(): void { + this.hideList = true; + } + getBidirectional(): string { + return this.funcImagePath('bidirect_' + (this.selectedBidirectional ? 'on' : 'off')); + } + isWasOnlySelected(): boolean { + return this.selectedWasOnly; + } + onChangeWasOnly(): void { + this.selectedWasOnly = !this.selectedWasOnly; + } + onChangeBidirectional(): void { + this.selectedBidirectional = !this.selectedBidirectional; + } + onSelectInbound(inbound: string): void { + this.selectedInbound = inbound; + } + + onSelectOutbound(outbound: string): void { + this.selectedOutbound = outbound; + } + onApply(): void { + if (!(this.selectedInbound === this.prevSelectedInbound && this.selectedOutbound === this.prevSelectedOutbound && this.selectedWasOnly === this.prevWasOnly && this.selectedBidirectional === this.prevBidirectional)) { + this.outSelected.emit({ + inbound: this.selectedInbound, + outbound: this.selectedOutbound, + wasOnly: this.selectedWasOnly, + bidirectional: this.selectedBidirectional + }); + } + this.close(); + } + + onCancel(): void { + this.selectedWasOnly = this.prevWasOnly; + this.selectedBidirectional = this.prevBidirectional; + this.selectedInbound = this.prevSelectedInbound; + this.selectedOutbound = this.prevSelectedOutbound; + this.close(); + } + toggleList(): void { + this.hideList = !this.hideList; + } + onClose(): void { + this.onCancel(); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map-search-result-viewer/index.ts b/web/src/main/webapp/v2/src/app/core/components/server-map-search-result-viewer/index.ts new file mode 100644 index 000000000000..cc8b5a37a936 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map-search-result-viewer/index.ts @@ -0,0 +1,20 @@ + +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { ServerMapSearchResultViewerComponent } from './server-map-search-result-viewer.component'; +import { ServerMapSearchResultViewerContainerComponent } from './server-map-search-result-viewer-container.component'; + +@NgModule({ + declarations: [ + ServerMapSearchResultViewerComponent, + ServerMapSearchResultViewerContainerComponent + ], + imports: [ + CommonModule + ], + exports: [ + ServerMapSearchResultViewerContainerComponent + ], + providers: [] +}) +export class ServerMapSearchResultViewerModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map-search-result-viewer/server-map-search-result-viewer-container.component.css b/web/src/main/webapp/v2/src/app/core/components/server-map-search-result-viewer/server-map-search-result-viewer-container.component.css new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map-search-result-viewer/server-map-search-result-viewer-container.component.html b/web/src/main/webapp/v2/src/app/core/components/server-map-search-result-viewer/server-map-search-result-viewer-container.component.html new file mode 100644 index 000000000000..e5c0bb15ea8b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map-search-result-viewer/server-map-search-result-viewer-container.component.html @@ -0,0 +1,7 @@ + + diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map-search-result-viewer/server-map-search-result-viewer-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/server-map-search-result-viewer/server-map-search-result-viewer-container.component.ts new file mode 100644 index 000000000000..f93dd123e837 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map-search-result-viewer/server-map-search-result-viewer-container.component.ts @@ -0,0 +1,72 @@ +import { Component, OnInit, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import { Subject, combineLatest } from 'rxjs'; +import { distinctUntilChanged, filter, takeUntil } from 'rxjs/operators'; + +import { UrlPathId } from 'app/shared/models'; +import { NewUrlStateNotificationService, AnalyticsService, TRACKED_EVENT_LIST } from 'app/shared/services'; +import { ServerMapInteractionService } from 'app/core/components/server-map/server-map-interaction.service'; +import { ServerMapSearchResultViewerComponent } from './server-map-search-result-viewer.component'; + +@Component({ + selector: 'pp-server-map-search-result-viewer-container', + templateUrl: './server-map-search-result-viewer-container.component.html', + styleUrls: ['./server-map-search-result-viewer-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ServerMapSearchResultViewerContainerComponent implements OnInit { + private unsubscribe: Subject = new Subject(); + private minLength = 3; + i18nText: { [key: string]: string } = {}; + hiddenComponent = true; + searchResultList: IApplication[] = []; + userInput: Subject = new Subject(); + + constructor( + private changeDetectorRef: ChangeDetectorRef, + private translateService: TranslateService, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private serverMapInteractionService: ServerMapInteractionService, + private analyticsService: AnalyticsService + ) {} + ngOnInit() { + this.getI18NText(); + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe), + ).subscribe((urlService: NewUrlStateNotificationService) => { + this.hiddenComponent = urlService.hasValue(UrlPathId.PERIOD, UrlPathId.END_TIME) ? false : true; + this.changeDetectorRef.detectChanges(); + }); + this.userInput.pipe( + distinctUntilChanged(), + filter((query: string) => { + return query.length >= this.minLength; + }) + ).subscribe((query: string) => { + this.serverMapInteractionService.setSearchWord(query); + }); + this.serverMapInteractionService.onSearchResult$.subscribe((resultList: IApplication[]) => { + this.searchResultList = resultList; + this.changeDetectorRef.detectChanges(); + }); + } + private getI18NText() { + combineLatest( + this.translateService.get('MAIN.SEARCH_SERVER_MAP_PLACE_HOLDER'), + this.translateService.get('MAIN.EMPTY_RESULT') + ).subscribe((i18n: string[]) => { + this.i18nText = { + [ServerMapSearchResultViewerComponent.I18NTEXT.PLACE_HOLDER]: i18n[0], + [ServerMapSearchResultViewerComponent.I18NTEXT.EMPTY_RESULT]: i18n[1] + }; + }); + } + onSearch($event: string): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.SEARCH_NODE); + this.userInput.next($event); + } + onSelectApplication(app: IApplication): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.SELECT_APPLICATION_IN_SEARCH_RESULT); + this.serverMapInteractionService.setSelectedApplication(app.getKeyStr()); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map-search-result-viewer/server-map-search-result-viewer.component.css b/web/src/main/webapp/v2/src/app/core/components/server-map-search-result-viewer/server-map-search-result-viewer.component.css new file mode 100644 index 000000000000..8722ec0d7084 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map-search-result-viewer/server-map-search-result-viewer.component.css @@ -0,0 +1,81 @@ +.l-search-group { + background: #fff; + height: 32px; + width: 183px; + color:#b3b3b4; + position:relative; + margin-right: 10px; +} +.l-search-group input { + width: 100%; + height: 100%; + border: 1px solid #d7dde4; + padding: 0 10px 0 10px; +} +.l-search-group input:focus { + border-color:#469ae4; + box-shadow: 0 0 10px -3px #4b99e3; + outline: none; +} +.l-search-group button { + position:absolute; + top: 50%; + right: 10px; + transform: translateY(-50%); +} +.fas { + color:#a8acb5; + font-size:18px; +} +.l-search-div { + position: absolute; + top: 35px; + right: 0px; + width: 231px; + height: 472px; +} +.l-search-div > div { + background-color: #3e506b; + border-bottom: 1px solid #D0D7DF; + padding: 4px 0px 4px 10px; + color: #FFF; +} +.l-search-div > div button { + position: absolute; + top: 13px; + color: white; +} +.l-search-div ul { + top: 26px; + height: 446px; + padding: 15px 10px; +} +.l-search-div li { + cursor: pointer; + padding: 0px 1px; +} +.l-search-div li:hover, .l-search-div li.selected { + color: #FFF; + background-color: #469AE4; +} +.l-search-list { + padding:15px; + background:#f8fafc; + position:absolute; + width:231px; + top: 35px; + right: 0; + overflow-y: auto; + height: 472px; +} +.l-search-list li { + color:#8a939e; + font-size:12px; + margin:8px 0 0; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.l-search-list li:first-child { + margin:0; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map-search-result-viewer/server-map-search-result-viewer.component.html b/web/src/main/webapp/v2/src/app/core/components/server-map-search-result-viewer/server-map-search-result-viewer.component.html new file mode 100644 index 000000000000..acb762155cea --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map-search-result-viewer/server-map-search-result-viewer.component.html @@ -0,0 +1,13 @@ +
+ +
+
+ Result +
+
    +
  • {{app.applicationName}}({{app.serviceType}})
  • +
  • {{i18nText.EMPTY_RESULT}}
  • +
+
+ +
diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map-search-result-viewer/server-map-search-result-viewer.component.ts b/web/src/main/webapp/v2/src/app/core/components/server-map-search-result-viewer/server-map-search-result-viewer.component.ts new file mode 100644 index 000000000000..40fe842de36e --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map-search-result-viewer/server-map-search-result-viewer.component.ts @@ -0,0 +1,47 @@ +import { Component, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges } from '@angular/core'; + +@Component({ + selector: 'pp-server-map-search-result-viewer', + templateUrl: './server-map-search-result-viewer.component.html', + styleUrls: ['./server-map-search-result-viewer.component.css'] +}) +export class ServerMapSearchResultViewerComponent implements OnInit, OnChanges { + static I18NTEXT = { + PLACE_HOLDER: 'PLACE_HOLDER', + EMPTY_RESULT: 'EMPTY_RESULT' + }; + selectedApplication: IApplication; + hiddenList = true; + listCountZero = false; + @Input() i18nText = { + [ServerMapSearchResultViewerComponent.I18NTEXT.PLACE_HOLDER]: 'Favorite List' + }; + @Input() hiddenComponent = true; + @Input() applicationResultList: IApplication[]; + @Output() outSearch: EventEmitter = new EventEmitter(); + @Output() outSelectApplication: EventEmitter = new EventEmitter(); + constructor() {} + ngOnChanges(changes: SimpleChanges) { + if (changes['applicationResultList']) { + if (changes['applicationResultList'].firstChange) { + this.hiddenList = true; + } else { + this.hiddenList = false; + this.listCountZero = this.applicationResultList.length === 0; + } + } + } + ngOnInit() {} + onSearch(query: string): void { + if (query !== '') { + this.outSearch.emit(query); + } + } + onCloseResult() { + this.hiddenList = true; + } + onSelectApplication(application: IApplication): void { + this.selectedApplication = application; + this.outSelectApplication.emit(application); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map/class/index.ts b/web/src/main/webapp/v2/src/app/core/components/server-map/class/index.ts new file mode 100644 index 000000000000..180cbf58d3a4 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map/class/index.ts @@ -0,0 +1,10 @@ +export * from './link-group.class'; +export * from './merge-server-map-data.class'; +export * from './multi-connect-node-group.class'; +export * from './node-group.class'; +export * from './server-map-data.class'; +export * from './server-map-diagram.class'; +export * from './server-map-factory'; +export * from './server-map-template-with-gojs.class'; +export * from './server-map-template'; +export * from './server-map-theme'; diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map/class/link-group.class.ts b/web/src/main/webapp/v2/src/app/core/components/server-map/class/link-group.class.ts new file mode 100644 index 000000000000..ddc2a6b676b8 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map/class/link-group.class.ts @@ -0,0 +1,40 @@ +export class LinkGroup { + SEPERATOR = '~'; + linkData: any; + constructor(private fromNodeKey: string, private toNodeKey: string) { + this.init(); + } + init() { + this.linkData = { + 'key': this.fromNodeKey + this.SEPERATOR + this.toNodeKey, + 'from': this.fromNodeKey, + 'to': this.toNodeKey, + 'hasAlert': false, + 'slowCount': 0, + 'histogram': {}, + 'sourceInfo': {}, + 'targetInfo': [], + 'totalCount': 0, + 'errorCount': 0 + }; + } + addLinkData(link: any): void { + this.linkData.totalCount += link.totalCount; + this.linkData.errorCount += link.errorCount; + this.linkData.slowCount += link.slowCount; + this.linkData.sourceInfo = link.sourceInfo; + if (link.hasAlert) { + this.linkData.hasAlert = link.hasAlert; + } + this.linkData['targetInfo'].push(link); + } + sortLinkData(): LinkGroup { + this.linkData['targetInfo'].sort((v1, v2) => { + return v2.totalCount - v1.totalCount; + }); + return this; + } + getLinkGroupData(): any { + return this.linkData; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map/class/merge-server-map-data.class.ts b/web/src/main/webapp/v2/src/app/core/components/server-map/class/merge-server-map-data.class.ts new file mode 100644 index 000000000000..e91f642c0cc4 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map/class/merge-server-map-data.class.ts @@ -0,0 +1,134 @@ +export class MergeServerMapData { + static mergeNodeData(currentNodeData: INodeInfo, newNodeData: INodeInfo): void { + const old = currentNodeData; + const neo = newNodeData; + + old.hasAlert = neo.hasAlert; + old.slowCount += neo.slowCount; + old.errorCount += neo.errorCount; + old.totalCount += neo.totalCount; + old.instanceCount = Math.max(old.instanceCount, neo.instanceCount); + old.instanceErrorCount = Math.max(old.instanceErrorCount, neo.instanceErrorCount); + + mergeAgentIds(old, neo); + mergeHistogram(old, neo); + mergeAgentHistogram(old, neo); + mergeTimeSeriesHistogram(old, neo); + mergeAgentTimeSeriesHistogramByType(old, neo, 'agentTimeSeriesHistogram'); + mergeServerList(old, neo); + } + static mergeLinkData(currentLinkData: ILinkInfo, newLinkData: ILinkInfo): void { + const old = currentLinkData; + const neo = newLinkData; + + old.hasAlert = neo.hasAlert; + old.slowCount += neo.slowCount; + old.errorCount += neo.errorCount; + old.totalCount += neo.totalCount; + + mergeHistogram(old, neo); + mergeTimeSeriesHistogram(old, neo); + mergeAgentTimeSeriesHistogramByType(old, neo, 'sourceTimeSeriesHistogram'); + mergeHistogramByType(old, neo, 'sourceHistogram'); + mergeHistogramByType(old, neo, 'targetHistogram'); + } +} +function mergeAgentIds(old: INodeInfo, neo: INodeInfo): void { + neo.agentIds.forEach((agentId: string) => { + if (old.agentIds.indexOf(agentId) === -1) { + old.agentIds.push(agentId); + } + }); +} +function mergeHistogram(old: INodeInfo | ILinkInfo, neo: INodeInfo | ILinkInfo): void { + if (neo.histogram) { + if (old.histogram) { + mergeHistogramType(old.histogram, neo.histogram); + } else { + old.histogram = neo.histogram; + } + } +} +function mergeHistogramType(oldHistogram: IResponseTime | IResponseMilliSecondTime, neoHistogram: IResponseTime | IResponseMilliSecondTime): void { + if (neoHistogram) { + Object.keys(neoHistogram).forEach((key: string) => { + oldHistogram[key] += neoHistogram[key]; + }); + } +} +function mergeAgentHistogram(old: INodeInfo, neo: INodeInfo): void { + Object.keys(neo.agentHistogram).forEach((key: string) => { + if (old.agentHistogram[key]) { + mergeHistogramType(old.agentHistogram[key], neo.agentHistogram[key]); + } else { + old.agentHistogram[key] = neo.agentHistogram[key]; + } + }); +} +// 내부 값의 순서가 보장되어야한 유의미한 코드 +function mergeTimeSeriesHistogram(old: INodeInfo | ILinkInfo, neo: INodeInfo | ILinkInfo): void { + if (neo.timeSeriesHistogram) { + if (old.timeSeriesHistogram) { + neo.timeSeriesHistogram.forEach((obj: any, outerIndex: number) => { + obj.values.forEach((chartValue: any, innerIndex: number) => { + old.timeSeriesHistogram[outerIndex].values[innerIndex][1] += chartValue[1]; + }); + }); + } else { + old.timeSeriesHistogram = neo.timeSeriesHistogram; + } + } +} +function mergeAgentTimeSeriesHistogramByType(old: INodeInfo | ILinkInfo, neo: INodeInfo | ILinkInfo, type: string): void { + if (neo[type]) { + if (old[type]) { + Object.keys(neo[type]).forEach((agentId: string) => { + if (old[type][agentId]) { + neo[type][agentId].forEach((obj: any, outerIndex: number) => { + obj.values.forEach((chartValue: any, innerIndex: number) => { + old[type][agentId][outerIndex].values[innerIndex][1] += chartValue[1]; + }); + }); + } else { + old[type][agentId] = neo[type][agentId]; + } + }); + } else { + old[type] = neo[type]; + } + } +} +function mergeServerList(old: INodeInfo, neo: INodeInfo): void { + if (neo.serverList) { + if (old.serverList) { + Object.keys(neo.serverList).forEach((key: string) => { + if (old.serverList[key]) { + Object.keys(neo.serverList[key].instanceList).forEach((instanceKey: string) => { + if ((instanceKey in old.serverList[key].instanceList) === false) { + old.serverList[key].instanceList[instanceKey] = neo.serverList[key].instanceList[instanceKey]; + } + }); + } else { + old.serverList[key] = neo.serverList[key]; + } + }); + } else { + old.serverList = neo.serverList; + } + } +} +function mergeHistogramByType(old: ILinkInfo, neo: ILinkInfo, histogramType: string): void { + if (old[histogramType]) { + Object.keys(neo[histogramType]).forEach((key: string) => { + if (old[histogramType][key]) { + Object.keys(neo[histogramType][key]).forEach((histogramKey: string) => { + old[histogramType][key][histogramKey] += neo[histogramType][key][histogramKey]; + }); + } else { + old[histogramType][key] = neo[histogramType][key]; + } + }); + } else { + old[histogramType] = neo[histogramType]; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map/class/multi-connect-node-group.class.ts b/web/src/main/webapp/v2/src/app/core/components/server-map/class/multi-connect-node-group.class.ts new file mode 100644 index 000000000000..af75157af158 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map/class/multi-connect-node-group.class.ts @@ -0,0 +1,120 @@ +import { NodeGroup } from './node-group.class'; + +interface ShortCutNode { + key: string; + isWas: boolean; + category: string; + serviceType: string; + mergedNodes: Array; + isAuthorized: boolean; + instanceCount: number; + topCountNodes: Array; + applicationName: string; + mergedSourceNodes: Array; + +} +export class MultiConnectNodeGroup extends NodeGroup { + // KEY_SEPERATOR: string = '^'; + // SEPERATOR: string = '_'; + NAME_PREFIX = 'MULTI_MERGE'; + // GROUP_POSTFIX: string = 'GROUP'; + // TOP_LIST_MAX_COUNT: number = 3; + // applicationName: string; + // groupKey: string; + // groupType: string; + // nodeData: any; + nodeData: ShortCutNode; + subNodeGroup: Array; + subNodeGroupMap: any; + constructor(protected type: string) { + super(type); + // this.init(); + } + init() { + super.init(); + // this.applicationName = this.NAME_PREFIX + this.SEPERATOR + this.randomValue(); + // this.groupType = this.type + this.SEPERATOR + this.GROUP_POSTFIX; + // this.groupKey = this.groupType + this.KEY_SEPERATOR + this.applicationName; + this.subNodeGroup = []; + this.subNodeGroupMap = {}; + } + initTemplateSet() { + this.nodeData = { + 'key': this.groupKey, + 'isWas': false, + 'category': this.groupType, + 'serviceType': this.groupType, + 'mergedNodes': [], + 'isAuthorized': false, + 'instanceCount': 0, + 'topCountNodes': [], + 'applicationName': this.applicationName, + 'mergedSourceNodes': [] + }; + } + // private randomValue(): string { + // return Math.floor(Math.random() * 10000000).toString(); + // } + // private setTopCountNodes(): void { + // this.nodeData['topCountNodes'].length = 0; + // this.nodeData['topCountNodes'].push({ + // 'applicationName': `Total : ${this.nodeData['mergedNodes'].length}`, + // 'totalCount': this.nodeData['mergedNodes'].reduce((preValue, nowNode) => { return preValue + nowNode.totalCount; }, 0), + // 'tableHeader': true + // }); + // for (let i = 0 ; i < Math.min(this.nodeData['mergedNodes'].length, this.TOP_LIST_MAX_COUNT) ; i++ ) { + // this.nodeData['topCountNodes'].push(this.nodeData['mergedNodes'][i]); + // } + // if ( this.nodeData['mergedNodes'].length > this.TOP_LIST_MAX_COUNT ) { + // this.nodeData['topCountNodes'].push({ + // 'applicationName': '...', + // 'totalCount': '' + // }); + // } + // } + // addNodeData(node: any): void { + // delete node.category; + // this.nodeData['instanceCount'] += node.instanceCount; + // this.nodeData['mergedNodes'].push(node); + // } + addSubNodeGroup(key: string): void { + const subNodeGroup = { + group: [], + isLast: false, + applicationName: key + }; + this.subNodeGroupMap[key] = subNodeGroup; + this.subNodeGroup.push(subNodeGroup); + } + addSubNodeGroupData(key: string, link: any): void { + this.subNodeGroupMap[key].group.push({ + key: link.to, + hasAlert: link.hasAlert || false, + totalCount: link.totalCount, + serviceType: link.serviceType, + applicationName: link.targetInfo.applicationName + }); + } + sortNodeData(): MultiConnectNodeGroup { + function fnSort(v1, v2) { + return v2.totalCount - v1.totalCount; + } + this.nodeData['mergedNodes'].sort(fnSort); + this.subNodeGroup.sort(fnSort); + this.subNodeGroup.forEach((subGroup) => { + subGroup['group'].sort(fnSort); + }); + return this; + } + // getGroupKey(): string{ + // return this.groupKey; + // } + // getGroupServiceType(): string { + // return this.groupType; + // } + + // getNodeGroupData(): any { + // this.setTopCountNodes(); + // return this.nodeData; + // } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map/class/node-group.class.ts b/web/src/main/webapp/v2/src/app/core/components/server-map/class/node-group.class.ts new file mode 100644 index 000000000000..eb8da2525d5d --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map/class/node-group.class.ts @@ -0,0 +1,99 @@ +interface ShortCutNode { + key: string; + category: string; + serviceType: string; + mergedNodes: Array; + instanceCount: number; + topCountNodes: Array; + applicationName: string; +} + +const SPECIAL_STR = { + KEY_SEPERATOR: '^', + SEPERATOR: '_', + NAME_PREFIX: 'MERGE', + GROUP_POSTFIX: 'GROUP' +}; +export class NodeGroup { + TOP_LIST_MAX_COUNT = 3; + applicationName: string; + groupKey: string; + groupType: string; + nodeData: ShortCutNode; + static isGroupKey(key: string): boolean { + return new RegExp( + '.*' + + '\\' + SPECIAL_STR.SEPERATOR + + SPECIAL_STR.GROUP_POSTFIX + + '\\' + SPECIAL_STR.KEY_SEPERATOR + + SPECIAL_STR.NAME_PREFIX + + '\\' + SPECIAL_STR.SEPERATOR + + '\\' + 'd{7}$', + 'g' + ).test(key); + } + constructor(protected type: string) { + this.init(); + } + init() { + this.applicationName = SPECIAL_STR.NAME_PREFIX + SPECIAL_STR.SEPERATOR + this.randomValue(); + this.groupType = this.type + SPECIAL_STR.SEPERATOR + SPECIAL_STR.GROUP_POSTFIX; + this.groupKey = this.groupType + SPECIAL_STR.KEY_SEPERATOR + this.applicationName; + this.initTemplateSet(); + } + protected initTemplateSet() { + this.nodeData = { + 'key': this.groupKey, + 'category': this.groupType, + 'mergedNodes': [], + 'serviceType': this.groupType, + 'instanceCount': 0, + 'topCountNodes': [], + 'applicationName': this.applicationName + }; + } + protected randomValue(): string { + return Math.random().toString().slice(2, 9); + } + protected setTopCountNodes(): void { + this.nodeData['topCountNodes'].length = 0; + this.nodeData['topCountNodes'].push({ + 'applicationName': `Total: ${this.nodeData['mergedNodes'].length}`, + 'totalCount': this.nodeData['mergedNodes'].reduce((preValue, nowNode) => { return preValue + nowNode.totalCount; }, 0), + 'tableHeader': true + }); + for (let i = 0; i < Math.min(this.nodeData['mergedNodes'].length, this.TOP_LIST_MAX_COUNT); i++) { + this.nodeData['topCountNodes'].push(this.nodeData['mergedNodes'][i]); + } + if (this.nodeData['mergedNodes'].length > this.TOP_LIST_MAX_COUNT) { + this.nodeData['topCountNodes'].push({ + 'applicationName': '...', + 'totalCount': '' + }); + } + } + addNodeData(node: any): void { + delete node.category; + this.nodeData['instanceCount'] += node.instanceCount; + this.nodeData['mergedNodes'].push(node); + } + sortNodeData(): NodeGroup { + this.nodeData['mergedNodes'].sort((v1, v2) => { + return v2.totalCount - v1.totalCount; + }); + return this; + } + getGroupKey(): string { + return this.groupKey; + } + getType(): string { + return this.type; + } + getGroupServiceType(): string { + return this.groupType; + } + getNodeGroupData(): ShortCutNode { + this.setTopCountNodes(); + return this.nodeData; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map/class/server-map-data.class.ts b/web/src/main/webapp/v2/src/app/core/components/server-map/class/server-map-data.class.ts new file mode 100644 index 000000000000..cef9ca2e6c1f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map/class/server-map-data.class.ts @@ -0,0 +1,382 @@ +import { NodeGroup } from './node-group.class'; +import { LinkGroup } from './link-group.class'; +import { MultiConnectNodeGroup } from './multi-connect-node-group.class'; +import { Filter } from 'app/core/models'; + +export class ServerMapData { + private nodeList: { [key: string]: any }[]; + private linkList: { [key: string]: any }[]; + private usableNodePropertyInServerMap: string[] = [ + 'key', + 'isWas', + 'isQueue', + 'category', + 'hasAlert', + 'slowCount', + 'histogram', + 'errorCount', + 'totalCount', + 'serviceType', + 'isAuthorized', + 'instanceCount', + 'applicationName' + ]; + private usableLinkPropertyInServerMap: string[] = [ + 'to', + 'key', + 'from', + 'hasAlert', + 'slowCount', + 'targetInfo', + 'totalCount', + 'sourceInfo', + 'errorCount' + ]; + private mergeableServiceType: { [key: string]: boolean } = {}; + private canNotMergeableServiceTypeList: string[] = ['USER']; + private countMap: { [key: string]: any } = {}; + private nodeMap: { [key: string]: any } = {}; + private linkMap: { [key: string]: any } = {}; + private mergeStateMap: { [key: string]: boolean } = {}; + private groupServiceTypeMap: { [key: string]: boolean } = {}; + private originalNodeMap: { [key: string]: INodeInfo } = {}; + private originalLinkMap: { [key: string]: ILinkInfo } = {}; + + constructor( + private originalNodeList: INodeInfo[], + private originalLinkList: ILinkInfo[], + private filters?: Filter[]) { + this.init(); + } + reset(originalNodeList: INodeInfo[], originalLinkList: ILinkInfo[]) { + this.originalNodeList = originalNodeList; + this.originalLinkList = originalLinkList; + this.init(); + } + private init() { + this.convertToMap(); + this.extractUsableData(); + this.extractInboundAndOutboundCountOfEachNode(); + this.extractServiceTypeWhichCanMerge(); + // option set merge + // if ( showMergedStatus ) { + this.mergeGroup(); + this.mergeMultiLinkGroup(); + this.addFilterFlag(); + // } + } + private convertToMap(): void { + console.time('convertTimeToMapFromList'); + this.originalNodeList.forEach((value: INodeInfo) => { + this.originalNodeMap[value.key] = value; + }); + this.originalLinkList.forEach((value: ILinkInfo) => { + this.originalLinkMap[value.key] = value; + }); + console.timeEnd('convertTimeToMapFromList'); + } + private extractUsableData(): void { + this.nodeList = this.extractData(this.originalNodeList, this.usableNodePropertyInServerMap, this.nodeMap); + this.linkList = this.extractData(this.originalLinkList, this.usableLinkPropertyInServerMap, this.linkMap); + } + // extract necessary data from source data. + private extractData(dataList: any[], keys: string[], map: any): any[] { + const necessaryData = []; + dataList.forEach((data) => { + const oNew = {}; + keys.forEach((key) => { + oNew[key] = data[key]; + }); + necessaryData.push(oNew); + map[oNew['key']] = oNew; + }); + return necessaryData; + } + /** + * collect in and out node count of each node + */ + private extractInboundAndOutboundCountOfEachNode(): void { + this.nodeList.forEach((node: any) => { + this.countMap[node.key] = { + inCount: 0, + outCount: 0 + }; + }); + this.linkList.forEach((link: any) => { + this.countMap[link.to].inCount++; + this.countMap[link.from].outCount++; + }); + } + // extract serviceType list which can merge from source data. + private extractServiceTypeWhichCanMerge() { + this.mergeableServiceType = {}; + this.nodeList.forEach((node) => { + if (this.canMergeType(node)) { + this.mergeableServiceType[node.serviceType] = true; + } + }); + } + // @TODO 병합 가능한 serviceType에 대한 조건이 좀 이상한 듯... + // @TODO isQueue는 뭐지? + private canMergeType(nodeData: any): boolean { + return nodeData.isWas === false && nodeData.isQueue === false && this.canNotMergeableServiceTypeList.indexOf(nodeData.serviceType) === -1; + } + private isRootNode(key: string) { + return this.countMap[key].inCount === 0; + } + private isLeafNode(key: string) { + return this.countMap[key].outCount === 0; + } + private mergeGroup(): void { + console.time('mergeGroup()'); + // from 이 동일한 servcieType을 하나의 데이터로 묶음. + const collectMergeLink = {}; + this.linkList.forEach((link) => { + if (this.hasMergeableNode(link) === false) { + return; + } + if ((link.from in collectMergeLink) === false) { + collectMergeLink[link.from] = {}; + } + if ((link.targetInfo.serviceType in collectMergeLink[link.from]) === false) { + collectMergeLink[link.from][link.targetInfo.serviceType] = { + relatedLink: [] + }; + } + // same from-key and same service-type + collectMergeLink[link.from][link.targetInfo.serviceType].relatedLink.push(link); + }); + const removeNodeKeys = {}; + const removeLinkKeys = {}; + for (const nodeKey in collectMergeLink) { + if (collectMergeLink.hasOwnProperty(nodeKey)) { + for (const type in collectMergeLink[nodeKey]) { + if (collectMergeLink[nodeKey][type].relatedLink.length < 2 || this.mergeStateMap[type] === false) { + continue; + } + const nodeGroup = new NodeGroup(type); + const linkGroup = new LinkGroup(nodeKey, nodeGroup.getGroupKey()); + + collectMergeLink[nodeKey][type].relatedLink.forEach((link) => { + nodeGroup.addNodeData(this.nodeMap[link.to]); + linkGroup.addLinkData(link); + removeNodeKeys[link.to] = true; // link.to is key of target node. + removeLinkKeys[link.key] = true; + delete this.nodeMap[link.to]; + delete this.linkMap[link.key]; + }); + this.countMap[nodeGroup.getGroupKey()] = { + inCount: 1, + outCount: 0 + }; + this.nodeList.push(nodeGroup.sortNodeData().getNodeGroupData()); + this.linkList.push(linkGroup.sortLinkData().getLinkGroupData()); + this.groupServiceTypeMap[nodeGroup.getGroupServiceType()] = true; + this.mergeStateMap[type] = true; + } + } + } + this.removeByKey(this.nodeList, removeNodeKeys); + this.removeByKey(this.linkList, removeLinkKeys); + console.timeEnd('mergeGroup()'); + } + private hasMergeableNode(link: any): boolean { + if (this.mergeableServiceType[link.targetInfo.serviceType] !== true) { + return false; + } + if (this.countMap[link.to].inCount !== 1) { + return false; + } + if (this.isLeafNode(link.to) === false) { + return false; + } + return true; + } + setMergeState({name, state}: IServerMapMergeState): void { + this.mergeStateMap[name] = state; + } + resetMergeState(): void { + this.extractUsableData(); + this.mergeGroup(); + this.mergeMultiLinkGroup(); + } + removeByKey(data: any, removeList: any) { + const removeIndex: Array = []; + data.forEach((thing, index) => { + if (removeList[thing.key] === true) { + removeIndex.push(index); + } + }); + removeIndex.sort(function (v1, v2) { + return v1 - v2; + }); + for (let i = removeIndex.length - 1; i >= 0; i--) { + data.splice(removeIndex[i], 1); + } + } + mergeMultiLinkGroup(): void { + console.time('mergeMultiLinkGroup()'); + // 일단 두번째 병합 조건에 해당하는 노드들을 추림 + const targetNodeList = this.getMergeTargetNodes(); + const checkedNodes = {}; + const removeNodeKeys = {}; + const removeLinkKeys = {}; + + targetNodeList.forEach((outerNode) => { + const outerLoopNodeKey = outerNode.key; + if (checkedNodes[outerLoopNodeKey] === true) { + return; + } + checkedNodes[outerLoopNodeKey] = true; + const outerLoopNodeFromKeys: Array = this.getFromNodeKeys(outerLoopNodeKey); + const mergeTargetLinks: any = {}; + const mergeTargetNodeList: Array = []; + + targetNodeList.forEach((innerNode) => { + const innerLoopNodeKey = innerNode.key; + if (checkedNodes[innerLoopNodeKey] === true) { + return; + } + if (outerNode.serviceType !== innerNode.serviceType) { + return; + } + const innerLoopNodeFromKeys: Array = this.getFromNodeKeys(innerLoopNodeKey); + if (this.hasSameNodeList(outerLoopNodeFromKeys, innerLoopNodeFromKeys) === false) { + return; + } + checkedNodes[innerLoopNodeKey] = true; + + this.extractConnectLink(mergeTargetLinks, innerLoopNodeFromKeys, innerLoopNodeKey); + mergeTargetNodeList.push(innerNode); + }); + if (mergeTargetNodeList.length > 0) { + this.extractConnectLink(mergeTargetLinks, outerLoopNodeFromKeys, outerLoopNodeKey); + mergeTargetNodeList.push(outerNode); + + const multiConnectNodeGroup = new MultiConnectNodeGroup(outerNode.serviceType); + mergeTargetNodeList.forEach((node) => { + multiConnectNodeGroup.addNodeData(node); + removeNodeKeys[node.key] = true; + delete this.nodeMap[node.key]; + }); + + for (const fromKey in mergeTargetLinks) { + if (mergeTargetLinks.hasOwnProperty(fromKey)) { + multiConnectNodeGroup.addSubNodeGroup(fromKey); + const linkGroup = new LinkGroup(fromKey, multiConnectNodeGroup.getGroupKey()); + for (let i = 0; i < mergeTargetLinks[fromKey].length; i++) { + const link = mergeTargetLinks[fromKey][i]; + multiConnectNodeGroup.addSubNodeGroupData(fromKey, link); + linkGroup.addLinkData(link); + removeLinkKeys[link.key] = true; + delete this.linkMap[link.key]; + } + this.linkList.push(linkGroup.sortLinkData().getLinkGroupData()); + } + } + this.nodeList.push(multiConnectNodeGroup.sortNodeData().getNodeGroupData()); + this.groupServiceTypeMap[multiConnectNodeGroup.getGroupServiceType()] = true; + } + }); + this.removeByKey(this.nodeList, removeNodeKeys); + this.removeByKey(this.linkList, removeLinkKeys); + console.timeEnd('mergeMultiLinkGroup()'); + } + private extractConnectLink(mergeTargetLinks: any, fromKeys: Array, key: string): void { + fromKeys.forEach((fromKey) => { + if ((fromKey in mergeTargetLinks) === false) { + mergeTargetLinks[fromKey] = []; + } + mergeTargetLinks[fromKey].push(this.linkMap[fromKey + '~' + key]); + }); + } + private getMergeTargetNodes(): any { + const targetNodeList = []; + this.nodeList.forEach((node) => { + if (this.countMap[node.key].outCount > 0) { + return; + } + if (this.countMap[node.key].inCount < 2) { + return; + } + targetNodeList.push(node); + }); + return targetNodeList; + } + private hasSameNodeList(firstNodeList: Array, secondNodeList: Array): boolean { + if (firstNodeList.length !== secondNodeList.length) { + return false; + } + for (let i = 0; i < firstNodeList.length; i++) { + if (secondNodeList.indexOf(firstNodeList[i]) === -1) { + return false; + } + } + return true; + } + private getFromNodeKeys(nodeKey: string): any { + const fromNodeKeys = []; + this.linkList.forEach((link) => { + if (link.to === nodeKey) { + fromNodeKeys.push(link.from); + } + }); + return fromNodeKeys; + } + getNodeList(): { [key: string]: any }[] { + return this.nodeList; + } + getLinkList(): { [key: string]: any }[] { + return this.linkList; + } + getGroupTypes(): Array { + const types: Array = []; + for (const type in this.groupServiceTypeMap) { + if (this.groupServiceTypeMap.hasOwnProperty(type)) { + types.push(type); + } + } + return types; + } + getMergeState(): any { + return Object.keys(this.mergeStateMap).reduce((accumulator, key) => { + accumulator[key] = this.mergeStateMap[key]; + return accumulator; + }, {}); + } + getMergedNodeData(key: string): any { + return this.nodeList.find((node: {[key: string]: any}) => node.key === key); + } + getMergedLinkData(key: string): any { + return this.linkList.find((link: {[key: string]: any}) => link.key === key); + } + getNodeData(key: string): INodeInfo { + return this.originalNodeMap[key]; + } + getLinkData(key: string): ILinkInfo { + return this.originalLinkMap[key]; + } + addFilterFlag(): void { + if (this.filters) { + // this.nodeList.forEach((node: any) => { + // this.filters.forEach((filter: Filter) => { + // if ( filter.getFromKey() === node.key || filter.getToKey() === node.key ) { + // node['isFiltered'] = true; + // return; + // } + // }); + // }); + this.linkList.forEach((link: any) => { + this.filters.forEach((filter: Filter) => { + if (filter.getFromKey() === link.from && filter.getToKey() === link.to) { + link['isFiltered'] = true; + return; + } + }); + }); + } + } + getNodeCount(): number { + return this.nodeList.length; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map/class/server-map-diagram-with-gojs.class.ts b/web/src/main/webapp/v2/src/app/core/components/server-map/class/server-map-diagram-with-gojs.class.ts new file mode 100644 index 000000000000..21200401f8d0 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map/class/server-map-diagram-with-gojs.class.ts @@ -0,0 +1,262 @@ +import * as go from 'gojs'; + +import ServerMapTheme from './server-map-theme'; +import { ServerMapTemplateWithGojs } from './server-map-template-with-gojs.class'; +import { ServerMapDiagram } from './server-map-diagram.class'; +import { ServerMapData } from './server-map-data.class'; +import { IServerMapOption } from './server-map-factory'; + +export class ServerMapDiagramWithGojs extends ServerMapDiagram { + private diagram: go.Diagram = null; + private groupServiceTypeList: string[]; + + constructor( + private option: IServerMapOption + ) { + super(); + ServerMapTheme.general.common.funcServerMapImagePath = this.option.funcServerMapImagePath; + this.makeDiagram(); + this.setNodeDefaultTemplate(); + this.setLinkTemplate(); + this.setDiagramEnvironment(); + this.setEvent(); + } + makeDiagram(): void { + this.diagram = go.GraphObject.make(go.Diagram, this.option.container, { + allowDelete: false, + maxSelectionCount: 1, + initialContentAlignment: go.Spot.Center + }); + this.diagram.animationManager.isEnabled = false; + this.diagram.scrollMode = go.Diagram.InfiniteScroll; + } + setNodeDefaultTemplate(): void { + this.diagram.nodeTemplate = ServerMapTemplateWithGojs.makeNodeTemplate(this); + } + setNodeTemplateMap(): void { + this.groupServiceTypeList.forEach((groupType) => { + this.diagram.nodeTemplateMap.add(groupType, ServerMapTemplateWithGojs.makeNodeGroupTemplate(this)); + }); + } + setLinkTemplate(): void { + this.diagram.linkTemplate = ServerMapTemplateWithGojs.makeLinkTemplate(this); + } + setDiagramEnvironment(): void { + const $ = go.GraphObject.make; + + this.diagram.toolManager.mouseWheelBehavior = go.ToolManager.WheelZoom; + this.diagram.allowDrop = false; + + this.diagram.initialAutoScale = go.Diagram.Uniform; + this.diagram.toolManager.draggingTool.doCancel(); + this.diagram.toolManager.draggingTool.doDeactivate(); + this.diagram.toolManager.dragSelectingTool.isEnabled = false; + this.diagram.initialContentAlignment = go.Spot.Center; + this.diagram.padding = new go.Margin(10, 10, 10, 10); + this.diagram.layout = $( + go.LayeredDigraphLayout, + { + isOngoing: false, + layerSpacing: 100, + columnSpacing: 30, + setsPortSpots: false + } + ); + } + setEvent(): void { + const self = this; + this.diagram.addDiagramListener('InitialLayoutCompleted', (event: go.DiagramEvent) => { + if (self.serverMapData) { + self.outRenderCompleted.emit(event.diagram); + } + }); + this.diagram.addDiagramListener('BackgroundSingleClicked', () => { + self.outClickBackground.emit(); + }); + this.diagram.addDiagramListener('BackgroundDoubleClicked', (event: go.DiagramEvent) => { + event.diagram.zoomToFit(); + self.outDoubleClickBackground.emit('dbclickBackground'); + }); + // this.diagram.addDiagramListener('BackgroundContextClicked', (event: go.DiagramEvent) => { + // console.log('Background context click', event); + // self.outContextClickBackground.emit({ + // event: event + // }); + // }); + this.diagram.addDiagramListener('BackgroundContextClicked', (event: go.DiagramEvent) => { + const { pageX, pageY } = event.diagram.lastInput.event as MouseEvent; + + self.outContextClickBackground.emit({ + coordX: pageX, + coordY: pageY + }); + }); + } + setMapData(serverMapData: ServerMapData, baseApplicationKey = '') { + this.serverMapData = serverMapData; + this.groupServiceTypeList = serverMapData.getGroupTypes(); + this.baseApplicationKey = baseApplicationKey; + this.setNodeTemplateMap(); + + this.diagram.model = go.Model.fromJson({ + nodeDataArray: this.serverMapData.getNodeList(), + linkDataArray: this.serverMapData.getLinkList() + }); + // this.diagram.undoManager.isEnabled = true; + this.selectBaseApplication(); + } + private selectBaseApplication() { + if (this.baseApplicationKey !== '') { + const node = this.diagram.findNodeForKey(this.baseApplicationKey); + if (node) { + const part = this.diagram.findPartForKey(this.baseApplicationKey); + this.diagram.select(part); + this.onClickNodeManually(part); + } + } + } + private onClickNodeManually(obj: go.Part): void { + this.updateHighlights(obj); + this.outClickNode.emit(obj['data']); + } + private updateHighlights(selection: go.Part): void { + this.removeHighlightMark(); + selection['highlight'] = 'self'; + if (selection instanceof go.Node) { + this.addHighlightMarkToLink(selection); + } else if (selection instanceof go.Link) { + this.addHighlightMarkToNode(selection); + } + this.drawHighlight(); + } + private removeHighlightMark(): void { + const allNodes = this.diagram.nodes; + const allLinks = this.diagram.links; + while (allNodes.next()) { + delete allNodes.value['highlight']; + } + while (allLinks.next()) { + delete allLinks.value['highlight']; + } + } + private addHighlightMarkToLink(selection: go.Part) { + const intoLinks = (selection).findLinksInto(); + while (intoLinks.next()) { + intoLinks.value['highlight'] = 'from'; + } + const outofLinks = (selection).findLinksOutOf(); + while (outofLinks.next()) { + outofLinks.value['highlight'] = 'to'; + } + } + private addHighlightMarkToNode(selection: go.Part) { + (selection).fromNode['highlight'] = 'from'; + (selection).toNode['highlight'] = 'to'; + } + private drawHighlight(): void { + const allNodes = this.diagram.nodes; + const allLinks = this.diagram.links; + + while (allNodes.next()) { + this.highlightNode(allNodes.value); + } + while (allLinks.next()) { + this.highlightLink(allLinks.value); + } + } + private highlightNode(targetNode: go.Node): void { + const shape: go.Shape = targetNode.findObject('BORDER_SHAPE'); + const nodeStyle = targetNode['highlight'] ? ServerMapTheme.general.node.highlight : ServerMapTheme.general.node.normal; + + shape['stroke'] = nodeStyle.border.stroke; + shape['strokeWidth'] = nodeStyle.border.strokeWidth; + shape.part.isShadowed = false; + } + private highlightLink(selectedLink: go.Link, theme?: any, toFill?: any): void { + const line: go.Shape = selectedLink.findObject('LINK'); + const arrow: go.Shape = selectedLink.findObject('ARROW'); + const text: go.TextBlock = selectedLink.findObject('LINK_TEXT'); + const linkStyle = selectedLink['highlight'] ? ServerMapTheme.general.link.highlight : ServerMapTheme.general.link.normal; + + line['stroke'] = linkStyle.line.stroke; + arrow['stroke'] = linkStyle.arrow.stroke; + arrow['fill'] = linkStyle.arrow.fill; + text['font'] = linkStyle.fontFamily; + } + isBaseApplication(key: string): boolean { + return this.baseApplicationKey === key; + } + selectNodeBySearch(highlightApplicationKey: string): void { + const node: go.Node = this.searchHighlightNode(highlightApplicationKey); + this.diagram.select(node); + this.diagram.centerRect(node.actualBounds); + this.updateHighlights(node); + this.outClickNode.emit(node['data']); + } + private searchHighlightNode(highlightApplicationKey: string): go.Node { + const allNodes = this.diagram.nodes; + let resultNode: go.Node; + + while (allNodes.next()) { + const node: go.Node = allNodes.value; + if (node.data.mergedNodes) { + const mergedNodes = node.data.mergedNodes; + for (let i = 0; i < mergedNodes.length ; i++ ) { + if (mergedNodes[i].key === highlightApplicationKey) { + resultNode = node; + break; + } + } + } else { + if (node.data.key === highlightApplicationKey) { + resultNode = node; + break; + } + } + } + return resultNode; + } + refresh(): void { + this.diagram.model = go.Model.fromJson({ + nodeDataArray: this.serverMapData.getNodeList(), + linkDataArray: this.serverMapData.getLinkList() + }); + this.diagram.rebuildParts(); + this.selectBaseApplication(); + } + clear(): void { + this.diagram.model = go.Model.fromJson({}); + } + onClickNode(event: go.DiagramEvent, obj: go.GraphObject): void { + this.updateHighlights(obj); + this.outClickNode.emit(obj['data']); + } + onDoubleClickNode(event: go.DiagramEvent, obj: go.GraphObject): void { + console.log('onDoubleClick-Node :', event, obj); + this.diagram.centerRect(obj.actualBounds); + this.diagram.scale *= 1.3; + } + onContextClickNode(event: go.DiagramEvent, obj: go.GraphObject): void { + console.log('onContextClick-Node :', event, obj); + this.outContextClickNode.emit(obj); + } + onClickLink(event: go.DiagramEvent, obj: go.GraphObject): void { + console.log('onClick-Link :', event, obj); + this.updateHighlights(obj); + this.outClickLink.emit(obj['data']); + } + onContextClickLink(event: any, obj: go.GraphObject): void { + const { key, targetInfo } = (obj as go.Link).data; + const { pageX, pageY } = event.event; + + if (!Array.isArray(targetInfo)) { + this.outContextClickLink.emit({ + key, + coord: { + coordX: pageX, + coordY: pageY + } + }); + } + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map/class/server-map-diagram-with-visjs.class.ts b/web/src/main/webapp/v2/src/app/core/components/server-map/class/server-map-diagram-with-visjs.class.ts new file mode 100644 index 000000000000..b8723254feb1 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map/class/server-map-diagram-with-visjs.class.ts @@ -0,0 +1,299 @@ +import { Network, NodeOptions, EdgeOptions, Color, Node, Edge, Options } from 'vis'; +import { from as fromArray, fromEvent, iif, zip, merge } from 'rxjs'; +import { mergeMap, map, pluck, take, reduce, switchMap } from 'rxjs/operators'; + +import ServerMapTheme from './server-map-theme'; +import { ServerMapDiagram } from './server-map-diagram.class'; +import { ServerMapData } from './server-map-data.class'; +import { IServerMapOption } from './server-map-factory'; +import { ServerMapTemplate } from './server-map-template'; +import { NodeGroup } from './node-group.class'; + +export class ServerMapDiagramWithVisjs extends ServerMapDiagram { + private diagram: Network; + + constructor( + private option: IServerMapOption + ) { + super(); + ServerMapTheme.general.common.funcServerMapImagePath = this.option.funcServerMapImagePath; + this.makeDiagram(); + this.setEvent(); + } + + private makeDiagram(): void { + const container = this.option.container; + const data = { + nodes: [] as Node[], + edges: [] as Edge[] + }; + const options = { + interaction: { + hover: true, + }, + nodes: { + borderWidth: 2.5, + color: { + border: 'transparent', + highlight: { + border: ServerMapTheme.general.node.highlight.border.stroke, + } + } as Color, + labelHighlightBold: false, + shape: 'circularImage', + shapeProperties: { + useBorderWithImage: false, + useImageSize: true + }, + size: 65 + } as NodeOptions, + edges: { + arrows: { + to: { + enabled: true, + scaleFactor: 0.75 + } + }, + // arrowStrikethrough: false, + color: { + color: ServerMapTheme.general.link.normal.line.stroke, + highlight: ServerMapTheme.general.link.highlight.line.stroke + }, + font: { + align: 'horizontal', + size: 18, + background: ServerMapTheme.general.link.normal.textBox.fill, + }, + } as EdgeOptions, + groups: { + main: { + color: { + background: ServerMapTheme.general.node.main.fill.top, + highlight: { + background: ServerMapTheme.general.node.main.fill.top + } + } + }, + normal: { + color: { + background: ServerMapTheme.general.node.normal.fill.top, + highlight: { + background: ServerMapTheme.general.node.normal.fill.top + } + } + } + }, + layout: { + hierarchical: { + enabled: true, + levelSeparation: 300, + nodeSpacing: 235, + // blockShifting: false, + // edgeMinimization: false, + direction: 'LR', + sortMethod: 'directed' + } + }, + physics: { + enabled: false + } + } as Options; + this.diagram = new Network(container, data, options); + } + + private setEvent(): void { + this.diagram.on('afterDrawing', () => { + if (!this.serverMapData) { + return; + } + + this.outRenderCompleted.emit(); + }); + this.diagram.on('click', (({nodes, edges}: {nodes: string[], edges: string[]}) => { + const isNodeClicked = nodes.length !== 0; + const isEdgeClicked = !isNodeClicked && edges.length !== 0; + const isBackgroundClicked = !(isNodeClicked || isEdgeClicked); + + if (isNodeClicked) { + const nodeId = nodes[0]; + const nodeData = this.getNodeData(nodeId); + + this.outClickNode.emit(nodeData); + } else if (isEdgeClicked) { + const edgeId = edges[0]; + const linkData = this.getLinkData(edgeId); + + this.outClickLink.emit(linkData); + } else if (isBackgroundClicked) { + this.outClickBackground.emit(); + } + })); + this.diagram.on('hoverNode', () => this.changeCursor('pointer')); + this.diagram.on('hoverEdge', () => this.changeCursor('pointer')); + this.diagram.on('blurNode', () => this.changeCursor('default')); + this.diagram.on('blurEdge', () => this.changeCursor('default')); + this.diagram.on('oncontext', (({event, pointer}: {event: MouseEvent, pointer: {[key: string]: any}}) => { + event.preventDefault(); + const { x, y } = pointer.DOM; + const nodeId = this.diagram.getNodeAt({x, y}) as string; + const edgeId = this.diagram.getEdgeAt({x, y}) as string; + + if (nodeId || NodeGroup.isGroupKey(edgeId)) { + return; + } + + edgeId ? ( + this.outContextClickLink.emit({ + key: edgeId, + coord: { + coordX: x, + coordY: y + } + }) + ) : ( + this.outContextClickBackground.emit({ + coordX: x, + coordY: y + }) + ); + })); + } + + setMapData(serverMapData: ServerMapData, baseApplicationKey = ''): void { + const nodeList = serverMapData.getNodeList(); + const isDataEmpty = nodeList.length === 0; + + if (isDataEmpty) { + return; + } + + const edges = serverMapData.getLinkList().map((link: {[key: string]: any}) => { + const { from, to, key, totalCount, isFiltered, hasAlert } = link; + + return { + from, + to, + id: key, + // [임시]label에서 이미지를 지원하지않아서, filteredMap페이지에서 필터아이콘을 "Filtered" 텍스트로 대체. + label: isFiltered ? ` [Filtered]\n${totalCount.toLocaleString()} ` : ` ${totalCount.toLocaleString()} `, + font: { + color: hasAlert ? ServerMapTheme.general.link.normal.fontColor.alert : ServerMapTheme.general.link.normal.fontColor.normal + } + }; + }); + + fromArray(nodeList).pipe( + mergeMap((node: {[key: string]: any}) => { + const { key, applicationName, serviceType, isAuthorized, topCountNodes, hasAlert } = node; + const isMergedNode = NodeGroup.isGroupKey(key); + const serviceTypeImg = new Image(); + + serviceTypeImg.src = ServerMapTheme.general.common.funcServerMapImagePath(serviceType); + + const serviceTypeImgLoadEvent$ = merge( + fromEvent(serviceTypeImg, 'load'), + fromEvent(serviceTypeImg, 'error').pipe( + switchMap(() => { + // 해당 serviceType 이름의 이미지가 없을 경우, NO_IMAGE_FOUND 이미지로 대체 + const tempImg = new Image(); + + tempImg.src = ServerMapTheme.general.common.funcServerMapImagePath('NO_IMAGE_FOUND'); + return fromEvent(tempImg, 'load'); + }) + ) + ); + const innerObs$ = iif(() => hasAlert && isAuthorized, + (() => { + const alertImg = new Image(); + + alertImg.src = ServerMapTheme.general.common.funcServerMapImagePath(ServerMapTheme.general.common.icon.error); + return zip( + serviceTypeImgLoadEvent$.pipe(pluck('target')), + fromEvent(alertImg, 'load').pipe(pluck('target')) + ); + })(), + serviceTypeImgLoadEvent$.pipe(map((v: Event) => [v.target])) + ); + + return innerObs$.pipe( + map((img: HTMLImageElement[]) => { + const svg = ServerMapTemplate.getSVGString(img, node); + + return 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(svg); + }), + map((image: string) => { + return { + id: key, + label: isMergedNode ? this.getMergedNodeLabel(topCountNodes) : applicationName, + image, + group: key === baseApplicationKey ? 'main' : 'normal' + }; + }) + ); + }), + take(nodeList.length), + reduce((acc: Node[], curr: Node) => { + return [...acc, curr]; + }, [] as Node[]), + ).subscribe((nodes: Node[]) => { + this.diagram.setData({nodes, edges}); + this.serverMapData = serverMapData; + this.baseApplicationKey = baseApplicationKey; + this.selectBaseApplication(); + }); + } + + private getMergedNodeLabel(topCountNodes: {[key: string]: any}[]): string { + // [임시] 일단은 "Total: 4(Merge된 노드 개수)"만 표시 + return topCountNodes[0].applicationName; + } + + private getNodeData(key: string): {[key: string]: any} { + return NodeGroup.isGroupKey(key) ? this.serverMapData.getMergedNodeData(key) : this.serverMapData.getNodeData(key); + } + + private getLinkData(key: string): {[key: string]: any} { + return NodeGroup.isGroupKey(key) ? this.serverMapData.getMergedLinkData(key) : this.serverMapData.getLinkData(key); + } + + private selectBaseApplication(): void { + if (this.baseApplicationKey === '') { + return; + } + + this.setNodeClicked(this.baseApplicationKey); + } + private setNodeClicked(key: string): void { + this.diagram.selectNodes([key]); + this.outClickNode.emit(this.getNodeData(key)); + } + + private changeCursor(cursorStyle: string): void { + this.option.container.querySelector('canvas').style.cursor = cursorStyle; + } + + refresh(): void { + this.setMapData(this.serverMapData, this.baseApplicationKey); + } + + clear(): void { + this.diagram.destroy(); + } + + selectNodeBySearch(selectedAppKey: string): void { + let selectedNodeId = selectedAppKey; + const isMergedNode = this.diagram.findNode(selectedAppKey).length === 0; + + if (isMergedNode) { + const groupKey = selectedAppKey.split('^')[1]; + const selectedMergedNode = this.serverMapData.getNodeList().find(({key}: {key: string}) => { + return NodeGroup.isGroupKey(key) && key.includes(groupKey); + }); + + selectedNodeId = selectedMergedNode.key; + } + + this.diagram.focus(selectedNodeId); + this.setNodeClicked(selectedNodeId); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map/class/server-map-diagram.class.ts b/web/src/main/webapp/v2/src/app/core/components/server-map/class/server-map-diagram.class.ts new file mode 100644 index 000000000000..d1ba06f102c2 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map/class/server-map-diagram.class.ts @@ -0,0 +1,51 @@ +import { EventEmitter } from '@angular/core'; + +import { ServerMapData } from './server-map-data.class'; +import { NodeGroup } from './node-group.class'; +import { Application } from 'app/core/models'; + +export abstract class ServerMapDiagram { + protected serverMapData: ServerMapData; + protected baseApplicationKey: string; + + outClickNode: EventEmitter = new EventEmitter(); + outClickGroupNode: EventEmitter = new EventEmitter(); + outContextClickNode: EventEmitter = new EventEmitter(); + outClickLink: EventEmitter = new EventEmitter(); + outContextClickLink: EventEmitter = new EventEmitter(); + outClickBackground: EventEmitter = new EventEmitter(); + outContextClickBackground: EventEmitter = new EventEmitter(); + outDoubleClickBackground: EventEmitter = new EventEmitter(); + outRenderCompleted: EventEmitter = new EventEmitter(); + + abstract setMapData(mapData: ServerMapData, baseApplicationKey?: string): void; + abstract selectNodeBySearch(appKey: string): void; + abstract refresh(): void; + abstract clear(): void; + + searchNode(query: string): IApplication[] { + return this.serverMapData.getNodeList() + .reduce((prev: {[key: string]: any}[], curr: {[key: string]: any}) => { + const { key, mergedNodes } = curr; + + return NodeGroup.isGroupKey(key) ? [...prev, ...mergedNodes] : [...prev, curr]; + }, []) + .filter(({applicationName}: {applicationName: string}) => { + const regCheckQuery = new RegExp(query, 'i'); + + return regCheckQuery.test(applicationName); + }) + .map(({key, applicationName, serviceType}: {key: string, applicationName: string, serviceType: string}) => { + return new Application(applicationName, serviceType, 0, key); + }); + } + + setMergeState(mergeState: IServerMapMergeState): void { + this.serverMapData.setMergeState(mergeState); + } + + resetMergeState(): void { + this.serverMapData.resetMergeState(); + this.refresh(); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map/class/server-map-factory.ts b/web/src/main/webapp/v2/src/app/core/components/server-map/class/server-map-factory.ts new file mode 100644 index 000000000000..fdeebc4c7d92 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map/class/server-map-factory.ts @@ -0,0 +1,26 @@ +import { InjectionToken } from '@angular/core'; + +import { ServerMapDiagram } from 'app/core/components/server-map/class/server-map-diagram.class'; +import { ServerMapDiagramWithGojs } from 'app/core/components/server-map/class/server-map-diagram-with-gojs.class'; +import { ServerMapDiagramWithVisjs } from 'app/core/components/server-map/class/server-map-diagram-with-visjs.class'; + +export const SERVER_MAP_TYPE = new InjectionToken('server-map-type'); +export const enum ServerMapType { + GOJS = 'gojs', + VISJS = 'visjs' +} +export interface IServerMapOption { + container: HTMLElement; + funcServerMapImagePath: Function; +} + +export class ServerMapFactory { + static createServerMap(type: ServerMapType, option: IServerMapOption): ServerMapDiagram { + switch (type) { + case ServerMapType.GOJS: + return new ServerMapDiagramWithGojs(option); + case ServerMapType.VISJS: + return new ServerMapDiagramWithVisjs(option); + } + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map/class/server-map-template-with-gojs.class.ts b/web/src/main/webapp/v2/src/app/core/components/server-map/class/server-map-template-with-gojs.class.ts new file mode 100644 index 000000000000..51d59e2b99ab --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map/class/server-map-template-with-gojs.class.ts @@ -0,0 +1,635 @@ +import * as go from 'gojs'; +import ServerMapTheme from './server-map-theme'; + +export class ServerMapTemplateWithGojs { + public static NO_IMAGE_FOUND = 'NO_IMAGE_FOUND'; + public static circleMaxSize = 360; + public static circleMinPercentage = 5; + public static calcuResponseSummaryCircleSize(sum: number, value: number) { + let size = 0; + if (value === 0) { + return 0; + } + const percentage = (value * 100) / sum; + if (percentage < ServerMapTemplateWithGojs.circleMinPercentage) { + size = Math.floor((ServerMapTemplateWithGojs.circleMaxSize * ServerMapTemplateWithGojs.circleMinPercentage) / 100); + } else { + size = Math.floor((ServerMapTemplateWithGojs.circleMaxSize * percentage) / 100); + } + return size; + } + public static makeNodeTemplate(serverMapComponent: any) { + /* + template structure + Node + Panel.Auto + Shape + Panel.Table + Shape ( row: 0 ) - background + Picture ( row: 0, col: 0 ) - icon + Shape ( row: 0, col: 0 ) - red circle + Shape( yellow circle ) + Shape( green circle) + Shape ( row: 1 ) - background + TextBlock ( applicationName ) + Panel.Auto + Shape + TextBlock ( instance count ) + Panel.Vertical + Picture ( error.png ) + Picture ( filter.png ) + */ + const $ = go.GraphObject.make; + return $( + go.Node, + go.Panel.Auto, + { + position: new go.Point(0, 0), + selectionAdorned: false, + click: function (event: go.DiagramEvent, obj: go.GraphObject) { + serverMapComponent.onClickNode(event, obj); + }, + doubleClick: function(event: go.DiagramEvent, obj: go.GraphObject) { + serverMapComponent.onDoubleClickNode(event, obj); + }, + contextClick: function(event: go.DiagramEvent, obj: go.GraphObject) { + serverMapComponent.onContextClickNode(event, obj); + } + }, + new go.Binding('key', 'key'), + new go.Binding('category', 'serviceType'), + $( + go.Shape, + 'Rectangle', + { + name: 'BORDER_SHAPE', + stroke: '#D0D7DF', + strokeWidth: 0, + portId: '', + fromLinkable: true, fromLinkableSelfNode: true, fromLinkableDuplicates: true, + toLinkable: true, toLinkableSelfNode: true, toLinkableDuplicates: true, + } + ), + $( + go.Panel, + go.Panel.Table, + { + cursor: 'pointer' + // locationSpot: go.Spot.Center, + // selectionAdorned: false, + }, + // new go.Binding('scale', 'isSelected', (isSelected) => { + // return isSelected ? 1.2 : 1.0; + // }).ofObject(), + $(go.RowColumnDefinition, {column: 0, minimum: 140}), + $( + go.Shape, + 'Rectangle', + { + row: 0, + column: 0, + height: 95, + stretch: go.GraphObject.Horizontal, + }, + new go.Binding('fill', 'key', function(key) { + const type = serverMapComponent.isBaseApplication(key) ? 'main' : 'normal'; + return ServerMapTheme.general.node[type].fill.top; + }), + new go.Binding('stroke', 'key', function(key, node) { + const type = serverMapComponent.isBaseApplication(key) ? 'main' : 'normal'; + return ServerMapTheme.general.node[type].stroke; + }), + new go.Binding('strokeWidth', 'key', function(key) { + const type = serverMapComponent.isBaseApplication(key) ? 'main' : 'normal'; + return ServerMapTheme.general.node[type].strokeWidth; + }) + ), + $( + go.Picture, + { + row: 0, + column: 0, + width: 90, + height: 90, + imageStretch: go.GraphObject.Uniform, + errorFunction: function(e: any) { + e.source = ServerMapTheme.general.common.funcServerMapImagePath(ServerMapTemplateWithGojs.NO_IMAGE_FOUND); + } + }, + new go.Binding('source', 'serviceType', function (type) { + return ServerMapTheme.general.common.funcServerMapImagePath(type); + }) + ), + $( + go.Shape, { + row: 0, + column: 0, + stroke: ServerMapTheme.general.circle.bad.stroke, + strokeWidth: ServerMapTheme.general.circle.bad.strokeWidth + }, + new go.Binding('visible', '', function (data) { + return data.isAuthorized && data.isWas; + }), + new go.Binding('geometry', 'histogram', function (histogram) { + return go.Geometry.parse('M30 0 B270 360 30 30 30 30'); + }) + ), + $( + go.Shape, { + row: 0, + column: 0, + stroke: ServerMapTheme.general.circle.slow.stroke, + strokeWidth: ServerMapTheme.general.circle.slow.strokeWidth + }, + new go.Binding('visible', '', function (data) { + return data.isAuthorized && data.isWas; + }), + new go.Binding('geometry', 'histogram', function (histogram) { + if (histogram['Slow'] === 0) { + return go.Geometry.parse('M30 0'); + } + const sum = Object.keys(histogram).reduce((prevSum: number, curKey: string) => { + return prevSum + histogram[curKey]; + }, 0); + return go.Geometry.parse('M30 0 B270 ' + (ServerMapTemplateWithGojs.circleMaxSize - ServerMapTemplateWithGojs.calcuResponseSummaryCircleSize(sum, histogram['Error'])) + ' 30 30 30 30'); + }) + ), + $( + go.Shape, { + row: 0, + column: 0, + stroke: ServerMapTheme.general.circle.good.stroke, + strokeWidth: ServerMapTheme.general.circle.good.strokeWidth + }, + new go.Binding('visible', '', function (data) { + return data.isAuthorized && data.isWas; + }), + new go.Binding('geometry', 'histogram', function (histogram) { + const sum = Object.keys(histogram).reduce((prevSum: number, curKey: string) => { + return prevSum + histogram[curKey]; + }, 0); + const size = ServerMapTemplateWithGojs.circleMaxSize - ServerMapTemplateWithGojs.calcuResponseSummaryCircleSize(sum, histogram['Slow']) - ServerMapTemplateWithGojs.calcuResponseSummaryCircleSize(sum, histogram['Error']); + if (size >= 180) { + return go.Geometry.parse('M30 0 B270 ' + size + ' 30 30 30 30'); + } else { + return go.Geometry.parse('M30 -60 B270 ' + size + ' 30 -30 30 30'); + } + }) + ), + $( + go.Shape, + 'Rectangle', + { + row: 1, + column: 0, + height: 34, + margin: new go.Margin(-1, 0, 0, 0), + stretch: go.GraphObject.Horizontal, + }, + new go.Binding('fill', 'key', function(key) { + const type = serverMapComponent.isBaseApplication(key) ? 'main' : 'normal'; + return ServerMapTheme.general.node[type].fill.bottom; + }), + new go.Binding('stroke', 'key', function(key) { + const type = serverMapComponent.isBaseApplication(key) ? 'main' : 'normal'; + return ServerMapTheme.general.node[type].stroke; + }), + new go.Binding('strokeWidth', 'key', function(key) { + const type = serverMapComponent.isBaseApplication(key) ? 'main' : 'normal'; + return ServerMapTheme.general.node[type].strokeWidth; + }) + ), + $( + go.TextBlock, + { + row: 1, + column: 0, + margin: new go.Margin(0, 10, 0, 10) + }, + new go .Binding('font', '', function() { + return ServerMapTheme.general.common.font.normal; + }), + new go .Binding('stroke', '', function() { + return ServerMapTheme.general.node.normal.text.stroke; + }), + new go.Binding('text', 'applicationName') + ), + $( + go.Panel, + go.Panel.Auto, + { + minSize: new go.Size(20, 20), + alignment: go.Spot.TopRight + }, + new go.Binding('visible', 'instanceCount', function (v) { + return v > 1 ? true : false; + }), + $( + go.Shape, + { + figure: 'Rectangle' + }, + new go .Binding('fill', '', function() { + return ServerMapTheme.general.instance.shape.fill; + }), + new go .Binding('stroke', '', function() { + return ServerMapTheme.general.instance.shape.stroke; + }), + new go .Binding('strokeWidth', '', function() { + return ServerMapTheme.general.instance.shape.strokeWidth; + }) + ), + $( + go.TextBlock, + { + height: 20, + editable: false, + textAlign: 'center', + verticalAlignment: go.Spot.Center + }, + new go .Binding('font', '', function() { + return ServerMapTheme.general.common.font.small; + }), + new go .Binding('stroke', '', function() { + return ServerMapTheme.general.instance.text.stroke; + }), + new go.Binding('text', 'instanceCount') + ) + ), + $( + go.Panel, + go.Panel.Vertical, + { + margin: new go.Margin(0, 0, 0, 0), + alignment: go.Spot.TopLeft + }, + $( + go.Picture, + { + width: 20, + height: 20, + source: ServerMapTheme.general.common.funcServerMapImagePath(ServerMapTheme.general.common.icon.error), + imageStretch: go.GraphObject.Uniform + }, + new go.Binding('visible', '', function (data) { + return data.isAuthorized && data.hasAlert; + }) + ), + $( + go.Picture, + { + width: 28, + height: 28, + source: ServerMapTheme.general.common.funcServerMapImagePath(ServerMapTheme.general.common.icon.filter), + visible: false, + imageStretch: go.GraphObject.Uniform + }, + new go.Binding('visible', 'isFiltered') + ) + ) + ) + ); + } + public static makeNodeGroupTemplate(serverMapComponent: any) { + /* + template structure + Node + Panel.Auto + Shape + Panel.Table + Shape ( row: 0, col: 0 ) - background + Button + Picture ( row: 1, col: 0 ) - icon + Shape ( row: 1, col: 0 ) - background + Panel.Vertical( row: 1, col: 0 ) : bind>mergedNodes + Panel.Table + Panel.TableRow + Picture ( Error.png ) + TextBlock ( index ) + TextBlock ( applicationName ) + TextBlock ( totalCount ) + + Panel.Vertical( row: 1, col: 0 ) : bind>mergedMultiSourceNodes + Panel.Vertical + TextBlock - applicaitonName + Panel.Table : bind>group + Panel.TableRow + Picture ( Error.png ) + TextBlock ( index ) + TextBlock ( applicationName ) + TextBlock ( totalCount ) + Panel + Shape + TextBlock ( instaceCount ) + */ + const $ = go.GraphObject.make; + const groupTableTemplate = $( + go.Panel, + go.Panel.TableRow, + $( + go.Picture, { + column: 1, + source: ServerMapTheme.general.common.funcServerMapImagePath(ServerMapTheme.general.common.icon.error), + margin: new go.Margin(1, 2), + visible: false, + desiredSize: new go.Size(10, 10), + imageStretch: go.GraphObject.Uniform + }, + new go.Binding('visible', 'hasAlert') + ), + $( + go.TextBlock, { + name: 'NODE_APPLICATION_NAME', + font: ServerMapTheme.general.common.font.small, + margin: new go.Margin(1, 2), + column: 2, + alignment: go.Spot.Left + }, + new go.Binding('stroke', 'tableHeader', function( tableHeader ) { + return tableHeader === true ? '#1BABF4' : '#000'; + }), + new go.Binding('text', 'applicationName') + ), + $( + go.TextBlock, { + font: ServerMapTheme.general.common.font.small, + margin: new go.Margin(1, 2), + column: 3, + alignment: go.Spot.Right + }, + new go.Binding('text', 'totalCount', function (val) { + return val === '' ? '' : parseInt(val, 10).toLocaleString(); + }) + ) + ); + return $( + go.Node, + go.Panel.Auto, + { + position: new go.Point(0, 0), + selectionAdorned: false, + click: function (event: go.DiagramEvent, obj: go.GraphObject) { + serverMapComponent.onClickNode(event, obj); + }, + doubleClick: function(event: go.DiagramEvent, obj: go.GraphObject) { + serverMapComponent.onDoubleClickNode(event, obj); + }, + contextClick: function(event: go.DiagramEvent, obj: go.GraphObject) { + serverMapComponent.onContextClickNode(event, obj); + } + }, + $( + go.Shape, + 'Rectangle', + { + name: 'BORDER_SHAPE', + fill: '#FFF', + stroke: '#D0D7DF', + strokeWidth: 0 + } + ), + $( + go.Panel, + go.Panel.Table, + { + cursor: 'pointer' + }, + $(go.RowColumnDefinition, {row: 0, column: 0, width: 140, height: 95}), + $(go.RowColumnDefinition, {row: 1, minimum: 30, stretch: go.GraphObject.Fill}), + $( + go.Shape, + 'Rectangle', + { + row: 0, + name: 'TOP_RECT', + column: 0, + height: 95, + strokeWidth: 1, + stretch: go.GraphObject.Horizontal, + stroke: '#D0D7DF' + }, + new go.Binding('fill', 'key', function(key) { + const type = serverMapComponent.isBaseApplication(key) ? 'main' : 'normal'; + return ServerMapTheme.general.node[type].fill.top; + }), + new go.Binding('stroke', 'key', function(key) { + const type = serverMapComponent.isBaseApplication(key) ? 'main' : 'normal'; + return ServerMapTheme.general.node[type].stroke; + }), + new go.Binding('strokeWidth', 'key', function(key) { + const type = serverMapComponent.isBaseApplication(key) ? 'main' : 'normal'; + return ServerMapTheme.general.node[type].strokeWidth; + }) + ), + $( + go.Picture, + { + row: 0, + column: 0, + width: 90, + height: 90, + imageStretch: go.GraphObject.Uniform, + errorFunction: function(e: any) { + e.source = ServerMapTheme.general.common.funcServerMapImagePath(ServerMapTemplateWithGojs.NO_IMAGE_FOUND); + } + }, + new go.Binding('source', 'serviceType', function (type) { + return ServerMapTheme.general.common.funcServerMapImagePath(type); + }) + ), + $( + go.Shape, + 'Rectangle', + { + row: 1, + name: 'BOTTOM_RECT', + column: 0, + margin: new go.Margin(-1, 0, 0, 0), + minSize: new go.Size(140, 30), + stretch: go.GraphObject.Fill + }, + new go.Binding('fill', 'key', function(key) { + const type = serverMapComponent.isBaseApplication(key) ? 'main' : 'normal'; + return ServerMapTheme.general.node[type].fill.bottom; + }), + new go.Binding('stroke', 'key', function(key) { + const type = serverMapComponent.isBaseApplication(key) ? 'main' : 'normal'; + return ServerMapTheme.general.node[type].stroke; + }), + new go.Binding('strokeWidth', 'key', function(key) { + const type = serverMapComponent.isBaseApplication(key) ? 'main' : 'normal'; + return ServerMapTheme.general.node[type].strokeWidth; + }) + ), + $( + go.Panel, + go.Panel.Vertical, { + row: 1, + column: 0, + margin: new go.Margin(3, 0, 3, 0), + minSize: new go.Size(138, NaN), + alignment: go.Spot.TopLeft, + alignmentFocus: go.Spot.TopLeft + }, + $( + go.Panel, + go.Panel.Table, { + padding: 6, + visible: true, + minSize: new go.Size(138, NaN), + itemTemplate: groupTableTemplate, + defaultStretch: go.GraphObject.Horizontal + }, + new go.Binding('itemArray', 'topCountNodes') + ) + ), + $( + go.Panel, + go.Panel.Auto, + { + minSize: new go.Size(20, 20), + alignment: go.Spot.TopRight + }, + new go.Binding('visible', 'instanceCount', function (v) { + return v > 1 ? true : false; + }), + $( + go.Shape, + { + figure: 'Rectangle' + }, + new go .Binding('fill', '', function() { + return ServerMapTheme.general.instance.shape.fill; + }), + new go .Binding('stroke', '', function() { + return ServerMapTheme.general.instance.shape.stroke; + }), + new go .Binding('strokeWidth', '', function() { + return ServerMapTheme.general.instance.shape.strokeWidth; + }) + ), + $( + go.TextBlock, + { + height: 20, + editable: false, + textAlign: 'center', + verticalAlignment: go.Spot.Center + }, + new go .Binding('font', '', function() { + return ServerMapTheme.general.common.font.small; + }), + new go .Binding('stroke', '', function() { + return ServerMapTheme.general.instance.text.stroke; + }), + new go.Binding('text', 'instanceCount') + ) + ) + ) + ); + } + public static makeLinkTemplate(serverMapComponent: any) { + const $ = go.GraphObject.make; + return $( + go.Link, + { + corner: 10, + cursor: 'pointer', + layerName: 'Foreground', + reshapable: false, + selectionAdorned: false, + click: function (event: go.DiagramEvent, obj: go.GraphObject) { + serverMapComponent.onClickLink(event, obj); + }, + doubleClick: function(event: go.DiagramEvent, obj: go.GraphObject) { + serverMapComponent.onDoubleClickLink(event, obj); + }, + contextClick: function (event: go.DiagramEvent, obj: go.GraphObject) { + serverMapComponent.onContextClickLink(event, obj); + } + }, + $( + go.Shape, + { + name: 'LINK', + stroke: ServerMapTheme.general.link.normal.line.stroke, + isPanelMain: true, + strokeWidth: ServerMapTheme.general.link.normal.line.strokeWidth + } + ), + $( + go.Shape, + { + name: 'ARROW', + fill: ServerMapTheme.general.link.normal.arrow.fill, + scale: 1.5, + stroke: ServerMapTheme.general.link.normal.arrow.stroke, + toArrow: 'standard' + } + ), + $( + go.Panel, + go.Panel.Auto, + $( + go.Shape, + 'Rectangle', + { + fill: ServerMapTheme.general.link.normal.textBox.fill, + stroke: ServerMapTheme.general.link.normal.textBox.stroke, + portId: '', + fromLinkable: true, + toLinkable: true + } + ), + $( + go.Panel, + go.Panel.Horizontal, + { + margin: 4 + }, + $( + go.Picture, + { + source: ServerMapTheme.general.common.funcServerMapImagePath(ServerMapTheme.general.common.icon.filter), + width: 28, + height: 28, + margin: 1, + visible: false, + imageStretch: go.GraphObject.Uniform + }, + new go.Binding('visible', 'isFiltered') + ), + $( + go.TextBlock, + { + name: 'LINK_TEXT', + font: ServerMapTheme.general.common.font.normal, + margin: new go.Margin(1), + textAlign: 'center' + }, + new go.Binding('text', 'totalCount', function (val) { + return parseInt(val, 10).toLocaleString(); + }), + new go.Binding('stroke', 'hasAlert', function (hasAlert) { + if ( hasAlert ) { + return ServerMapTheme.general.link.normal.fontColor.alert; + } else { + return ServerMapTheme.general.link.normal.fontColor.normal; + } + }) + ) + ) + ), + new go.Binding('curve', 'curve', function (val) { + console.log( 'curve', val ); + return go.Link[val]; + }), + new go.Binding('routing', 'routing', function (val) { + console.log( 'routing', val ); + return go.Link[val]; + }), + new go.Binding('curviness', 'curviness') + ); + } + +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map/class/server-map-template.ts b/web/src/main/webapp/v2/src/app/core/components/server-map/class/server-map-template.ts new file mode 100644 index 000000000000..f67c64baf94b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map/class/server-map-template.ts @@ -0,0 +1,111 @@ +import ServerMapTheme from './server-map-theme'; +import { NodeGroup } from './node-group.class'; + +export abstract class ServerMapTemplate { + private static readonly MIN_ARC_RATIO = 0.05; + private static readonly RADIUS = 62; + private static readonly DIAMETER = 2 * Math.PI * ServerMapTemplate.RADIUS; + + private static getCompleteSVGCircleString(showDefault: boolean, responseTime: IResponseTime): string { + if (showDefault) { + return ServerMapTemplate.getSVGCircleString({ + stroke: ServerMapTheme.general.circle.default.stroke, + strokeWidth: ServerMapTheme.general.circle.default.strokeWidth + }); + } else { + const sum = Object.keys(responseTime).reduce((prev: number, curr: keyof IResponseTime) => prev + responseTime[curr], 0); + const slowArc = ServerMapTemplate.calcArc(sum, responseTime.Slow); + const badArc = ServerMapTemplate.calcArc(sum, responseTime.Error); + // 원의 중심을 (0,0)이라고 할때, stroke-dashoffset 시작점이 12시방향(0,r)이 아니라 3시방향(r,0)이라서 3/4지름을 기준으로 사용 + const slowArcOffset = -1 * (0.75 * ServerMapTemplate.DIAMETER - (slowArc + badArc)); + const badArcOffset = -1 * (0.75 * ServerMapTemplate.DIAMETER - badArc); + + return ServerMapTemplate.getSVGCircleString({ + stroke: ServerMapTheme.general.circle.good.stroke, + strokeWidth: ServerMapTheme.general.circle.default.strokeWidth, + }) + ServerMapTemplate.getSVGCircleString({ + stroke: ServerMapTheme.general.circle.slow.stroke, + strokeWidth: ServerMapTheme.general.circle.default.strokeWidth, + strokeDashOffset: slowArcOffset, + strokeDashArray: slowArc + }) + ServerMapTemplate.getSVGCircleString({ + stroke: ServerMapTheme.general.circle.bad.stroke, + strokeWidth: ServerMapTheme.general.circle.default.strokeWidth, + strokeDashOffset: badArcOffset, + strokeDashArray: badArc + }); + } + } + + private static getSVGCircleString(styleOption: {[key: string]: any}): string { + const { stroke, strokeWidth, strokeDashOffset = 0, strokeDashArray = 'none' } = styleOption; + + return ` + `; + } + + private static calcArc(sum: number, value: number): number { + return value === 0 ? 0 + : value / sum < ServerMapTemplate.MIN_ARC_RATIO ? ServerMapTemplate.DIAMETER * ServerMapTemplate.MIN_ARC_RATIO + : value / sum * ServerMapTemplate.DIAMETER; + } + + private static getAlertSVGImgString(img: HTMLImageElement): string { + const dataURL = this.getDataURLFromImg(img); + + return ``; + } + + private static getDataURLFromImg(img: HTMLImageElement): string { + const canvas = document.createElement('canvas'); + + canvas.getContext('2d').drawImage(img, 0, 0); + return canvas.toDataURL(); + } + + private static getSVGImageStyle(width: number, height: number): {[key: string]: any} { + /** + * ServerMap Image Size Group + * 1. 100 * 65 + * 2. 142 * 74 + * 3. 92 * 25 + * 4. 63 * 87? + */ + // TODO: static한 수치가아니라 비율로? + return { + size: width > 100 ? 200 : 300, + transform: { + translateX: width > 100 ? -45 : -50, + translateY: height > 65 ? -20 : height > 30 ? -45 : -20 + } + }; + } + + private static getServiceTypeSVGImgString(img: HTMLImageElement): string { + const dataURL = ServerMapTemplate.getDataURLFromImg(img); + const { size, transform } = ServerMapTemplate.getSVGImageStyle(img.width, img.height); + + return ``; + } + + private static getInstanceCountTextString(instanceCount: number): string { + return `${instanceCount >= 2 ? instanceCount : ''}`; + } + + public static getSVGString(img: HTMLImageElement[], nodeData: {[key: string]: any}): string { + const { key, isAuthorized, isWas, histogram, instanceCount } = nodeData; + const isMergedNode = NodeGroup.isGroupKey(key); + + return `` + + ServerMapTemplate.getCompleteSVGCircleString(isMergedNode || !(isAuthorized && isWas), histogram) + + (img[1] ? ServerMapTemplate.getAlertSVGImgString(img[1]) : ``) + + ServerMapTemplate.getServiceTypeSVGImgString(img[0]) + + ServerMapTemplate.getInstanceCountTextString(instanceCount) + + ``; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map/class/server-map-theme.ts b/web/src/main/webapp/v2/src/app/core/components/server-map/class/server-map-theme.ts new file mode 100644 index 000000000000..98c9e15a9c9e --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map/class/server-map-theme.ts @@ -0,0 +1,122 @@ +export default { + general: { + common: { + funcServerMapImagePath: null, + icon: { + error: 'ERROR_s', + filter: 'FILTER' + }, + font: { + small: '8pt avn55,NanumGothic,ng,dotum,AppleGothic,sans-serif', + normal: '10pt avn85,NanumGothic,ng,dotum,AppleGothic,sans-serif', + big: 'bold 12pt avn55,NanumGothic,ng,dotum,AppleGothic,sans-serif' + } + }, + circle: { + default: { + stroke: '#D0D7DF', + strokeWidth: 6 + }, + good: { + stroke: '#32BA94', + strokeWidth: 4, + }, + slow: { + stroke: '#E48022', + strokeWidth: 4, + }, + bad: { + stroke: '#F0515B', + strokeWidth: 4, + } + }, + instance: { + shape: { + fill: '#90A1AB', + stroke: '#90A1AB', + strokeWidth: 1 + }, + text: { + stroke: '#FFF' + } + }, + node: { + main: { + border: { + stroke: '#FFF', + strokeWidth: 0 + }, + stroke: '#D0D7DF', + strokeWidth: 1, + fill: { + top: '#F3F4F6', + bottom: '#FFF' + }, + text: { + stroke: '#000' + } + }, + normal: { + border: { + stroke: '#FFF', + strokeWidth: 0 + }, + stroke: '#D0D7DF', + strokeWidth: 1, + fill: { + top: '#FFF', + bottom: '#F3F4F6' + }, + text: { + stroke: '#000' + } + }, + highlight: { + border: { + stroke: '#4A61D1', + strokeWidth: 4 + } + } + }, + link: { + normal: { + line: { + stroke: '#C0C3C8', + strokeWidth: 1.5 + }, + arrow: { + fill: '#C0C3C8', + stroke: '#C0C3C8', + }, + textBox: { + fill: '#EDF2F8', + stroke: '#EDF2F8' + }, + fontColor: { + normal: '#000', + alert: '#FF1300' + }, + fontFamily: '10pt avn85,NanumGothic,ng,dotum,AppleGothic,sans-serif' + }, + highlight: { + line: { + stroke: '#4763D0', + strokeWidth: 1.5 + }, + arrow: { + fill: '#4763D0', + stroke: '#4763D0', + }, + textBox: { + fill: '#EDF2F8', + stroke: '#EDF2F8' + }, + fontColor: { + normal: '#000', + alert: '#FF1300' + }, + fontFamily: 'bold 12pt avn55,NanumGothic,ng,dotum,AppleGothic,sans-serif' + } + } + } +}; diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map/index.ts b/web/src/main/webapp/v2/src/app/core/components/server-map/index.ts new file mode 100644 index 000000000000..d09335130791 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map/index.ts @@ -0,0 +1,44 @@ + +import { NgModule } from '@angular/core'; +import { SharedModule } from 'app/shared'; +import { ServerMapInteractionService } from './server-map-interaction.service'; +import { ServerMapOverviewComponent } from './server-map-overview.component'; +import { ServerMapComponent } from './server-map.component'; +import { ServerMapContainerComponent } from './server-map-container.component'; +import { ServerMapForFilteredMapContainerComponent } from './server-map-for-filtered-map-container.component'; +import { ServerMapForTransactionListContainerComponent } from './server-map-for-transaction-list-container.component'; +import { ServerMapForTransactionViewContainerComponent } from './server-map-for-transaction-view-container.component'; +import { ServerMapDataService } from './server-map-data.service'; +import { ServerMapForFilteredMapDataService } from './server-map-for-filtered-map-data.service'; +import { LinkContextPopupModule } from 'app/core/components/link-context-popup'; +import { ServerMapContextPopupModule } from 'app/core/components/server-map-context-popup'; + +@NgModule({ + declarations: [ + ServerMapComponent, + ServerMapOverviewComponent, + ServerMapContainerComponent, + ServerMapForFilteredMapContainerComponent, + ServerMapForTransactionListContainerComponent, + ServerMapForTransactionViewContainerComponent + ], + imports: [ + SharedModule, + LinkContextPopupModule, + ServerMapContextPopupModule + ], + exports: [ + ServerMapComponent, + ServerMapOverviewComponent, + ServerMapContainerComponent, + ServerMapForFilteredMapContainerComponent, + ServerMapForTransactionListContainerComponent, + ServerMapForTransactionViewContainerComponent + ], + providers: [ + ServerMapInteractionService, + ServerMapDataService, + ServerMapForFilteredMapDataService + ] +}) +export class ServerMapModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-container.component.css b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-container.component.css new file mode 100644 index 000000000000..36925ca792b8 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-container.component.css @@ -0,0 +1,56 @@ +.l-popup-section { + display: flex; + z-index: 9; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + justify-content: center; + align-items: center; +} +.l-popup-section:before { + content:''; + display:block; + height:100%; + width:100%; + background:#000; + opacity:0.6; + position:absolute; + left:0; + top:0; +} +.l-popup-section article { + width: 90%; + min-width: 500px; + max-width: 1000px; + box-shadow: 1 1 10px 0 rgba(0, 0, 0, 0.75); + position: static; + background: #fff; + border: 1px solid #e5e8f0; + text-align: left; + z-index: 10; +} +.l-contents-group { + background: #F6F8FB; + padding: 17px 18px; + overflow-y: auto; +} +.l-sql-list { + margin: 0; +} +.l-sql-list dt { + font-size: 13px; + font-weight: 600; + color: #333; + margin: 0 0 12px; +} +.l-sql-list dd { + border: 1px solid #cfd7e1; + background: #fff; + padding: 28px 28px; + font-size: 13px; + color: #999; + line-height: 2em; + position: relative; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-container.component.html b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-container.component.html new file mode 100644 index 000000000000..d84fdd0920b8 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-container.component.html @@ -0,0 +1,27 @@ + + + + + +
+
+
+
+
Notice
+
{{i18nText['NO_AGENTS']}}
+
+
+
+
diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-container.component.ts new file mode 100644 index 000000000000..97e72fe62b4c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-container.component.ts @@ -0,0 +1,215 @@ +import { Component, OnInit, OnDestroy, Inject } from '@angular/core'; +import { Router, NavigationStart, RouterEvent } from '@angular/router'; +import { Subject } from 'rxjs'; +import { takeUntil, filter, map, switchMap } from 'rxjs/operators'; +import { TranslateService } from '@ngx-translate/core'; + +import { + StoreHelperService, + NewUrlStateNotificationService, + WebAppSettingDataService, + AnalyticsService, + TRACKED_EVENT_LIST, + DynamicPopupService +} from 'app/shared/services'; +import { Actions } from 'app/shared/store'; +import { UrlPathId } from 'app/shared/models'; +import { EndTime } from 'app/core/models'; +import { SERVER_MAP_TYPE, ServerMapType, NodeGroup, ServerMapData } from 'app/core/components/server-map/class'; +import { ServerMapDataService } from './server-map-data.service'; +import { LinkContextPopupContainerComponent } from 'app/core/components/link-context-popup/link-context-popup-container.component'; +import { ServerMapContextPopupContainerComponent } from 'app/core/components/server-map-context-popup/server-map-context-popup-container.component'; + +@Component({ + selector: 'pp-server-map-container', + templateUrl: './server-map-container.component.html', + styleUrls: ['./server-map-container.component.css'] +}) +export class ServerMapContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + i18nText: { [key: string]: string } = { + NO_AGENTS: '' + }; + funcServerMapImagePath: Function; + baseApplicationKey: string; + showOverview = false; + showLoading = true; + useDisable = true; + mapData: ServerMapData; + endTime: string; + period: string; + constructor( + private router: Router, + private storeHelperService: StoreHelperService, + private translateService: TranslateService, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private serverMapDataService: ServerMapDataService, + private webAppSettingDataService: WebAppSettingDataService, + private dynamicPopupService: DynamicPopupService, + private analyticsService: AnalyticsService, + @Inject(SERVER_MAP_TYPE) public type: ServerMapType + ) {} + ngOnInit() { + this.funcServerMapImagePath = this.webAppSettingDataService.getServerMapIconPathMakeFunc(); + this.addPageLoadingHandler(); + this.getI18NText(); + + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe), + map((urlService: NewUrlStateNotificationService) => { + if (urlService.isRealTimeMode()) { + const endTime = urlService.getUrlServerTimeData(); + const period = this.webAppSettingDataService.getSystemDefaultPeriod(); + this.initVarBeforeDataLoad( + EndTime.formatDate(endTime), + period.getValueWithTime(), + urlService.getPathValue(UrlPathId.APPLICATION) + ); + return [endTime - (period.getValue() * 60 * 1000), endTime]; + } else { + this.storeHelperService.dispatch(new Actions.UpdateServerMapTargetSelected(null)); + this.initVarBeforeDataLoad( + urlService.getPathValue(UrlPathId.END_TIME).getEndTime(), + urlService.getPathValue(UrlPathId.PERIOD).getValueWithTime(), + urlService.getPathValue(UrlPathId.APPLICATION) + ); + return [urlService.getStartTimeToNumber(), urlService.getEndTimeToNumber()]; + } + }), + switchMap((range: number[]) => { + return this.serverMapDataService.getData(range); + }) + ).subscribe((res: IServerMapInfo) => { + this.mapData = new ServerMapData(res.applicationMapData.nodeDataArray, res.applicationMapData.linkDataArray); + this.storeHelperService.dispatch(new Actions.UpdateServerMapData(this.mapData)); + if (this.hasNodeData() === false) { + this.storeHelperService.dispatch(new Actions.UpdateServerMapTargetSelected(null)); + } + }); + this.storeHelperService.getServerMapDisableState(this.unsubscribe).subscribe((disabled: boolean) => { + this.useDisable = disabled; + }); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private addPageLoadingHandler(): void { + this.router.events.pipe( + filter((e: RouterEvent) => { + return e instanceof NavigationStart; + }) + ).subscribe((e) => { + this.showLoading = true; + this.useDisable = true; + }); + } + private getI18NText(): void { + this.translateService.get('COMMON.NO_AGENTS').subscribe((i18n: string) => { + this.i18nText['NO_AGENTS'] = i18n; + }); + } + private initVarBeforeDataLoad(endTime: string, period: string, application: IApplication): void { + this.endTime = endTime; + this.period = period; + this.showLoading = true; + this.useDisable = true; + this.baseApplicationKey = application.getKeyStr(); + } + private hasNodeData(): boolean { + return this.mapData && this.mapData.getNodeCount() !== 0; + } + showGuide(): boolean { + return this.hasNodeData() === false && this.showLoading === false; + } + onRenderCompleted({showOverView}: {showOverView: boolean}): void { + this.showLoading = false; + this.useDisable = false; + this.showOverview = this.hasNodeData() && showOverView; + } + onClickBackground($event: any): void { + } + onClickNode(nodeData: any): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.CLICK_NODE); + let payload; + if (NodeGroup.isGroupKey(nodeData.key)) { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.SHOW_GROUPED_NODE_VIEW); + payload = { + period: this.period, + endTime: this.endTime, + isAuthorized: nodeData.isAuthorized, + isNode: true, + isLink: false, + isMerged: true, + isWAS: nodeData.isWas, + node: nodeData.mergedNodes.map((nodeInfo: any) => { + return nodeInfo.key; + }) + }; + } else { + payload = { + period: this.period, + endTime: this.endTime, + isAuthorized: nodeData.isAuthorized, + isNode: true, + isLink: false, + isMerged: false, + isWAS: nodeData.isWas, + node: [nodeData.key], + hasServerList: nodeData.instanceCount > 0 ? true : false + }; + } + this.storeHelperService.dispatch(new Actions.UpdateServerMapTargetSelected(payload)); + } + onClickLink(linkData: any): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.CLICK_LINK); + let payload; + if (NodeGroup.isGroupKey(linkData.key)) { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.SHOW_GROUPED_LINK_VIEW); + payload = { + period: this.period, + endTime: this.endTime, + isAuthorized: linkData.isAuthorized, + isNode: false, + isLink: true, + isMerged: true, + isWAS: false, + node: [linkData.from], + link: linkData.targetInfo.map((linkInfo: any) => { + return linkInfo.key; + }), + hasServerList: false + }; + } else { + payload = { + period: this.period, + endTime: this.endTime, + isAuthorized: linkData.isAuthorized, + isNode: false, + isLink: true, + isMerged: false, + isWAS: false, + node: [linkData.from], + link: [linkData.key], + hasServerList: false + }; + } + this.storeHelperService.dispatch(new Actions.UpdateServerMapTargetSelected(payload)); + } + onDoubleClickBackground($event: any): void {} + onContextClickBackground(coord: ICoordinate): void { + this.dynamicPopupService.openPopup({ + data: this.mapData, + coord, + component: ServerMapContextPopupContainerComponent + }); + } + onContextClickNode($event: any): void {} + onContextClickLink({key, coord}: {key: string, coord: ICoordinate}): void { + this.dynamicPopupService.openPopup({ + data: this.mapData.getLinkData(key), + coord, + component: LinkContextPopupContainerComponent + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-data.service.ts new file mode 100644 index 000000000000..09bb15e843fa --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-data.service.ts @@ -0,0 +1,35 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable } from 'rxjs'; + +import { UrlQuery, UrlPathId } from 'app/shared/models'; +import { NewUrlStateNotificationService, WebAppSettingDataService } from 'app/shared/services'; + +@Injectable() +export class ServerMapDataService { + private url = 'getServerMapDataV2.pinpoint'; + constructor( + private http: HttpClient, + private webAppSettingDataService: WebAppSettingDataService, + private newUrlStateNotificationService: NewUrlStateNotificationService + ) {} + + getData([from, to]: number[]): Observable { + return this.http.get(this.url, this.makeRequestOptionsArgs(from, to)); + } + + private makeRequestOptionsArgs(from: number, to: number): object { + return { + params: { + applicationName: this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getApplicationName(), + serviceTypeName: this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getServiceType(), + from, + to, + calleeRange: this.newUrlStateNotificationService.hasValue(UrlQuery.INBOUND) ? this.newUrlStateNotificationService.getQueryValue(UrlQuery.INBOUND) : this.webAppSettingDataService.getSystemDefaultInbound(), + callerRange: this.newUrlStateNotificationService.hasValue(UrlQuery.OUTBOUND) ? this.newUrlStateNotificationService.getQueryValue(UrlQuery.OUTBOUND) : this.webAppSettingDataService.getSystemDefaultOutbound(), + wasOnly: this.newUrlStateNotificationService.hasValue(UrlQuery.WAS_ONLY) ? this.newUrlStateNotificationService.getQueryValue(UrlQuery.WAS_ONLY) : false, + bidirectional: this.newUrlStateNotificationService.hasValue(UrlQuery.BIDIRECTIONAL) ? this.newUrlStateNotificationService.getQueryValue(UrlQuery.BIDIRECTIONAL) : false + } + }; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-filtered-map-container.component.css b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-filtered-map-container.component.css new file mode 100644 index 000000000000..36925ca792b8 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-filtered-map-container.component.css @@ -0,0 +1,56 @@ +.l-popup-section { + display: flex; + z-index: 9; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + justify-content: center; + align-items: center; +} +.l-popup-section:before { + content:''; + display:block; + height:100%; + width:100%; + background:#000; + opacity:0.6; + position:absolute; + left:0; + top:0; +} +.l-popup-section article { + width: 90%; + min-width: 500px; + max-width: 1000px; + box-shadow: 1 1 10px 0 rgba(0, 0, 0, 0.75); + position: static; + background: #fff; + border: 1px solid #e5e8f0; + text-align: left; + z-index: 10; +} +.l-contents-group { + background: #F6F8FB; + padding: 17px 18px; + overflow-y: auto; +} +.l-sql-list { + margin: 0; +} +.l-sql-list dt { + font-size: 13px; + font-weight: 600; + color: #333; + margin: 0 0 12px; +} +.l-sql-list dd { + border: 1px solid #cfd7e1; + background: #fff; + padding: 28px 28px; + font-size: 13px; + color: #999; + line-height: 2em; + position: relative; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-filtered-map-container.component.html b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-filtered-map-container.component.html new file mode 100644 index 000000000000..469691ba1cc9 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-filtered-map-container.component.html @@ -0,0 +1,28 @@ + + + + + +
+
+
+
+
Notice
+
{{i18nText['NO_AGENTS']}}
+
+
+
+
diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-filtered-map-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-filtered-map-container.component.ts new file mode 100644 index 000000000000..c95d22b0e35b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-filtered-map-container.component.ts @@ -0,0 +1,258 @@ +import { Component, OnInit, OnDestroy, Inject } from '@angular/core'; +import { Router, NavigationStart } from '@angular/router'; +import { Subject, combineLatest } from 'rxjs'; +import { takeUntil, filter } from 'rxjs/operators'; +import { TranslateService } from '@ngx-translate/core'; + +import { Actions } from 'app/shared/store'; +import { + StoreHelperService, + NewUrlStateNotificationService, + WebAppSettingDataService, + AnalyticsService, + TRACKED_EVENT_LIST, + DynamicPopupService +} from 'app/shared/services'; +import { UrlPathId } from 'app/shared/models'; +import { Filter } from 'app/core/models'; +import { SERVER_MAP_TYPE, ServerMapType, NodeGroup, ServerMapData, MergeServerMapData } from 'app/core/components/server-map/class'; +import { ServerMapForFilteredMapDataService } from './server-map-for-filtered-map-data.service'; +import { LinkContextPopupContainerComponent } from 'app/core/components/link-context-popup/link-context-popup-container.component'; +import { ServerMapContextPopupContainerComponent } from 'app/core/components/server-map-context-popup/server-map-context-popup-container.component'; + +@Component({ + selector: 'pp-server-map-for-filtered-map-container', + templateUrl: './server-map-for-filtered-map-container.component.html', + styleUrls: ['./server-map-for-filtered-map-container.component.css'] +}) +export class ServerMapForFilteredMapContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + i18nText: { [key: string]: string } = { + NO_AGENTS: '' + }; + mergedNodeDataList: INodeInfo[] = []; + mergedLinkDataList: ILinkInfo[] = []; + mergedServerMapData: any = {}; + mergedScatterData: any; + loadingCompleted = false; + + mapData: ServerMapData; + baseApplicationKey: string; + showOverview = false; + useDisable = true; + showLoading = true; + funcServerMapImagePath: Function; + endTime: string; + period: string; + constructor( + private router: Router, + private storeHelperService: StoreHelperService, + private translateService: TranslateService, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private serverMapForFilteredMapDataService: ServerMapForFilteredMapDataService, + private webAppSettingDataService: WebAppSettingDataService, + private dynamicPopupService: DynamicPopupService, + private analyticsService: AnalyticsService, + @Inject(SERVER_MAP_TYPE) public type: ServerMapType + ) {} + ngOnInit() { + this.funcServerMapImagePath = this.webAppSettingDataService.getServerMapIconPathMakeFunc(); + this.getI18NText(); + this.router.events.pipe( + filter(e => e instanceof NavigationStart) + ).subscribe((e) => { + this.showLoading = true; + this.useDisable = true; + }); + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((urlService: NewUrlStateNotificationService) => { + this.endTime = urlService.getPathValue(UrlPathId.END_TIME).getEndTime(); + this.period = urlService.getPathValue(UrlPathId.PERIOD).getValueWithTime(); + this.showLoading = true; + this.useDisable = true; + this.baseApplicationKey = urlService.getPathValue(UrlPathId.APPLICATION).getKeyStr(); + this.serverMapForFilteredMapDataService.startDataLoad(); + }); + this.serverMapForFilteredMapDataService.onServerMapData$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((serverMapAndScatterData: any) => { + this.storeHelperService.dispatch(new Actions.AddScatterChartData(serverMapAndScatterData.applicationScatterData)); + this.mergeServerMapData(serverMapAndScatterData); + this.mapData = new ServerMapData(this.mergedNodeDataList, this.mergedLinkDataList, Filter.instanceFromString(this.newUrlStateNotificationService.hasValue(UrlPathId.FILTER) ? this.newUrlStateNotificationService.getPathValue(UrlPathId.FILTER) : '')); + this.storeHelperService.dispatch(new Actions.UpdateServerMapData(this.mapData)); + if (this.hasNodeData() === false) { + this.storeHelperService.dispatch(new Actions.UpdateServerMapTargetSelected(null)); + } + }); + this.connectStore(); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private connectStore(): void { + this.storeHelperService.getServerMapLoadingState(this.unsubscribe).subscribe((state: string) => { + switch (state) { + case 'loading': + this.loadingCompleted = false; + this.showLoading = true; + this.useDisable = true; + break; + case 'pause': + this.loadingCompleted = false; + this.showLoading = false; + this.useDisable = false; + break; + case 'completed': + this.loadingCompleted = true; + break; + } + }); + this.storeHelperService.getServerMapDisableState(this.unsubscribe).subscribe((disabled: boolean) => { + this.useDisable = disabled; + }); + } + private getI18NText(): void { + combineLatest( + this.translateService.get('COMMON.NO_AGENTS') + ).pipe(takeUntil(this.unsubscribe)).subscribe((i18n: string[]) => { + this.i18nText['NO_AGENTS'] = i18n[0]; + }); + } + private hasNodeData(): boolean { + return this.mapData && this.mapData.getNodeCount() !== 0; + } + showGuide(): boolean { + return this.hasNodeData() === false && this.showLoading === false; + } + onRenderCompleted({showOverView}: {showOverView: boolean}): void { + if (this.loadingCompleted === true) { + this.showLoading = false; + this.useDisable = false; + this.showOverview = this.hasNodeData() && showOverView; + } + } + onClickBackground($event: any): void { + } + onClickGroupNode($event: any): void { + } + onClickNode(nodeData: any): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.CLICK_NODE); + let payload; + if (NodeGroup.isGroupKey(nodeData.key)) { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.SHOW_GROUPED_NODE_VIEW); + payload = { + period: this.period, + endTime: this.endTime, + isAuthorized: nodeData.isAuthorized, + isNode: true, + isLink: false, + isMerged: true, + isWAS: nodeData.isWas, + node: nodeData.mergedNodes.map((nodeInfo: any) => { + return nodeInfo.key; + }) + }; + } else { + payload = { + period: this.period, + endTime: this.endTime, + isAuthorized: nodeData.isAuthorized, + isNode: true, + isLink: false, + isMerged: false, + isWAS: nodeData.isWas, + node: [nodeData.key], + hasServerList: nodeData.instanceCount > 0 ? true : false + }; + } + this.storeHelperService.dispatch(new Actions.UpdateServerMapTargetSelected(payload)); + } + onClickLink(linkData: any): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.CLICK_LINK); + let payload; + if (NodeGroup.isGroupKey(linkData.key)) { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.SHOW_GROUPED_LINK_VIEW); + payload = { + period: this.period, + endTime: this.endTime, + isAuthorized: linkData.isAuthorized, + isNode: false, + isLink: true, + isMerged: true, + isWAS: false, + node: [linkData.from], + link: linkData.targetInfo.map((linkInfo: any) => { + return linkInfo.key; + }) + }; + } else { + payload = { + period: this.period, + endTime: this.endTime, + isAuthorized: linkData.isAuthorized, + isNode: false, + isLink: true, + isMerged: false, + isWAS: false, + node: [linkData.from], + link: [linkData.key] + }; + } + this.storeHelperService.dispatch(new Actions.UpdateServerMapTargetSelected(payload)); + } + onDoubleClickBackground($event: any): void {} + onContextClickBackground(coord: ICoordinate): void { + this.dynamicPopupService.openPopup({ + data: this.mapData, + coord, + component: ServerMapContextPopupContainerComponent + }); + } + onContextClickNode($event: any): void {} + onContextClickLink({key, coord}: {key: string, coord: ICoordinate}): void { + this.dynamicPopupService.openPopup({ + data: this.mapData.getLinkData(key), + coord, + component: LinkContextPopupContainerComponent + }); + } + mergeServerMapData(serverMapAndScatterData: any): void { + console.time('merge server-map data'); + const newNodeDataList = serverMapAndScatterData.applicationMapData.nodeDataArray; + const newLinkDataList = serverMapAndScatterData.applicationMapData.linkDataArray; + + if (this.mergedNodeDataList.length === 0) { + this.mergedNodeDataList = newNodeDataList; + } else { + this.mergeNodeDataList(newNodeDataList); + } + if (this.mergedLinkDataList.length === 0) { + this.mergedLinkDataList = newLinkDataList; + } else { + this.mergeLinkDataList(newLinkDataList); + } + console.timeEnd('merge server-map data'); + } + mergeNodeDataList(newNodeData: INodeInfo[]): void { + newNodeData.forEach((nodeData: INodeInfo) => { + if (this.mapData && this.mapData.getNodeData(nodeData.key)) { + const currentNodeData = this.mapData.getNodeData(nodeData.key); + MergeServerMapData.mergeNodeData(currentNodeData, nodeData); + } else { + this.mergedNodeDataList.push(nodeData); + } + }); + } + mergeLinkDataList(newLinkData: ILinkInfo[]): void { + newLinkData.forEach((linkData: ILinkInfo) => { + if (this.mapData && this.mapData.getLinkData(linkData.key)) { + const currentLinkData = this.mapData.getLinkData(linkData.key); + MergeServerMapData.mergeLinkData(currentLinkData, linkData); + } else { + this.mergedLinkDataList.push(linkData); + } + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-filtered-map-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-filtered-map-data.service.ts new file mode 100644 index 000000000000..239845f88b8f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-filtered-map-data.service.ts @@ -0,0 +1,83 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Subject, Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; + +import { Actions } from 'app/shared/store'; +import { UrlQuery, UrlPathId } from 'app/shared/models'; +import { WebAppSettingDataService, NewUrlStateNotificationService, StoreHelperService } from 'app/shared/services'; + +@Injectable() +export class ServerMapForFilteredMapDataService { + private url = 'getFilteredServerMapDataMadeOfDotGroup.pinpoint'; + private REQUEST_LIMIT = 5000; + // 아래 두 값은 scatter-chart에서 사용되는 파라미터 값 + private X_GROUP_UNIT = 987; + private Y_GROUP_UNIT = 57; + private requsting = false; + private flagLoadData = true; + private nextTo: number; + private serverMapData = new Subject(); + onServerMapData$: Observable; + constructor( + private http: HttpClient, + private storeHelperService: StoreHelperService, + private webAppSettingDataService: WebAppSettingDataService, + private newUrlStateNotificationService: NewUrlStateNotificationService + ) { + this.onServerMapData$ = this.serverMapData.asObservable(); + } + startDataLoad(to?: number): void { + this.loadData(to); + } + stopDataLoad(): void { + this.flagLoadData = false; + } + resumeDataLoad(): void { + if (this.requsting === false) { + this.flagLoadData = true; + this.startDataLoad(this.nextTo); + } + } + private loadData(to?: number): void { + this.requsting = true; + this.storeHelperService.dispatch(new Actions.UpdateServerMapLoadingState('loading')); + this.http.get(this.url, this.makeRequestOptionsArgs(to)).pipe( + map(res => { + return res || {}; + }) + ).subscribe((res: any) => { + if (res['lastFetchedTimestamp'] > res['applicationMapData']['range']['from']) { + this.nextTo = res['lastFetchedTimestamp'] - 1; + if (this.flagLoadData) { + this.loadData(this.nextTo); + } else { + this.storeHelperService.dispatch(new Actions.UpdateServerMapLoadingState('pause')); + } + } else { + this.storeHelperService.dispatch(new Actions.UpdateServerMapLoadingState('completed')); + } + this.serverMapData.next(res); + this.requsting = false; + }); + } + private makeRequestOptionsArgs(to?: number): any { + return { + params: { + applicationName: this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).applicationName, + serviceTypeName: this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).serviceType, + from: this.newUrlStateNotificationService.getStartTimeToNumber(), + to: (to || this.newUrlStateNotificationService.getEndTimeToNumber()), + originTo: this.newUrlStateNotificationService.getEndTimeToNumber(), + calleeRange: this.newUrlStateNotificationService.hasValue(UrlQuery.INBOUND) ? this.newUrlStateNotificationService.getQueryValue(UrlQuery.INBOUND) : this.webAppSettingDataService.getUserDefaultInbound(), + callerRange: this.newUrlStateNotificationService.hasValue(UrlQuery.OUTBOUND) ? this.newUrlStateNotificationService.getQueryValue(UrlQuery.OUTBOUND) : this.webAppSettingDataService.getUserDefaultOutbound(), + filter: this.newUrlStateNotificationService.hasValue(UrlPathId.FILTER) ? encodeURIComponent(this.newUrlStateNotificationService.getPathValue(UrlPathId.FILTER)) : '', + hint: this.newUrlStateNotificationService.hasValue(UrlPathId.HINT) ? encodeURIComponent(this.newUrlStateNotificationService.getPathValue(UrlPathId.HINT)) : '', + v: 4, + limit: this.REQUEST_LIMIT, + xGroupUnit: this.X_GROUP_UNIT, // for scatter-chart + yGroupUnit: this.Y_GROUP_UNIT // for scatter-chart + } + }; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-transaction-list-container.component.css b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-transaction-list-container.component.css new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-transaction-list-container.component.html b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-transaction-list-container.component.html new file mode 100644 index 000000000000..1c3f9895ce2b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-transaction-list-container.component.html @@ -0,0 +1,16 @@ + + diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-transaction-list-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-transaction-list-container.component.ts new file mode 100644 index 000000000000..505d0f11a353 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-transaction-list-container.component.ts @@ -0,0 +1,96 @@ +import { Component, OnInit, OnDestroy, Inject, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { Subject } from 'rxjs'; +import { takeUntil, filter } from 'rxjs/operators'; + +import { UrlPathId } from 'app/shared/models'; +import { StoreHelperService, NewUrlStateNotificationService, WebAppSettingDataService , TransactionViewTypeService, VIEW_TYPE } from 'app/shared/services'; +import { ServerMapData } from './class/server-map-data.class'; +import { SERVER_MAP_TYPE, ServerMapType } from './class/server-map-factory'; + + +@Component({ + selector: 'pp-server-map-for-transaction-list-container', + templateUrl: './server-map-for-transaction-list-container.component.html', + styleUrls: ['./server-map-for-transaction-list-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ServerMapForTransactionListContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + private transactionDetailInfo: ITransactionDetailData; + transactionInfo: ITransactionMetaData; + hiddenComponent = false; + baseApplicationKey = ''; + mapData: ServerMapData; + showLoading = true; + funcServerMapImagePath: Function; + constructor( + private changeDetectorRef: ChangeDetectorRef, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private storeHelperService: StoreHelperService, + private webAppSettingDataService: WebAppSettingDataService, + private transactionViewTypeService: TransactionViewTypeService, + @Inject(SERVER_MAP_TYPE) public type: ServerMapType + ) { + this.funcServerMapImagePath = this.webAppSettingDataService.getServerMapIconPathMakeFunc(); + this.showLoading = false; + } + ngOnInit() { + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe), + filter((urlService: NewUrlStateNotificationService) => { + return urlService.hasValue(UrlPathId.APPLICATION); + }) + ).subscribe((urlService: NewUrlStateNotificationService) => { + this.baseApplicationKey = urlService.getPathValue(UrlPathId.APPLICATION).getKeyStr(); + this.changeDetectorRef.detectChanges(); + }); + this.transactionViewTypeService.onChangeViewType$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((viewType: string) => { + if ( viewType === VIEW_TYPE.SERVER_MAP ) { + this.hiddenComponent = false; + this.initCheck(); + } else { + this.hiddenComponent = true; + } + this.changeDetectorRef.detectChanges(); + }); + this.connectStore(); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private connectStore(): void { + this.storeHelperService.getTransactionDetailData(this.unsubscribe).pipe( + filter((transactionDetailInfo: ITransactionDetailData) => { + return transactionDetailInfo && transactionDetailInfo.transactionId ? true : false; + }) + ).subscribe((transactionDetailInfo: ITransactionDetailData) => { + this.mapData = null; + this.transactionDetailInfo = transactionDetailInfo; + this.initCheck(); + this.changeDetectorRef.detectChanges(); + }); + } + private initCheck() { + if (this.hiddenComponent === false && this.transactionDetailInfo) { + this.loadTransactionData(); + } + } + private loadTransactionData(): void { + this.mapData = new ServerMapData(this.transactionDetailInfo.applicationMapData.nodeDataArray, this.transactionDetailInfo.applicationMapData.linkDataArray); + } + onRenderCompleted(msg: string): void { + this.showLoading = false; + this.changeDetectorRef.detectChanges(); + } + onClickBackground($event: any): void {} + onClickGroupNode($event: any): void {} + onClickNode($event: any): void {} + onClickLink($event: any): void {} + onDoubleClickBackground($event: any): void {} + onContextClickBackground($event: any): void {} + onContextClickNode($event: any): void {} + onContextClickLink($param: any): void {} +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-transaction-view-container.component.css b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-transaction-view-container.component.css new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-transaction-view-container.component.html b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-transaction-view-container.component.html new file mode 100644 index 000000000000..b3c53702c8f6 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-transaction-view-container.component.html @@ -0,0 +1,18 @@ + + + + + diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-transaction-view-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-transaction-view-container.component.ts new file mode 100644 index 000000000000..c1341bfbdaf8 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-for-transaction-view-container.component.ts @@ -0,0 +1,61 @@ +import { Component, OnInit, Inject, ChangeDetectionStrategy } from '@angular/core'; +import { Subject, Observable } from 'rxjs'; +import { switchMap, map, takeUntil } from 'rxjs/operators'; + +import { UrlPathId } from 'app/shared/models'; +import { NewUrlStateNotificationService, WebAppSettingDataService, TransactionDetailDataService, GutterEventService } from 'app/shared/services'; +import { ServerMapInteractionService } from './server-map-interaction.service'; +import { ServerMapData } from './class/server-map-data.class'; +import { SERVER_MAP_TYPE, ServerMapType } from './class/server-map-factory'; + +@Component({ + selector: 'pp-server-map-for-transaction-view-container', + templateUrl: './server-map-for-transaction-view-container.component.html', + styleUrls: ['./server-map-for-transaction-view-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ServerMapForTransactionViewContainerComponent implements OnInit { + private unsubscribe$: Subject = new Subject(); + baseApplicationKey = ''; + mapData$: Observable; + funcServerMapImagePath: Function; + showLoading = true; + constructor( + private newUrlStateNotificationService: NewUrlStateNotificationService, + private webAppSettingDataService: WebAppSettingDataService, + private transactionDetailDataService: TransactionDetailDataService, + private gutterEventService: GutterEventService, + private serverMapInteractionService: ServerMapInteractionService, + @Inject(SERVER_MAP_TYPE) public type: ServerMapType + ) { } + + ngOnInit() { + this.funcServerMapImagePath = this.webAppSettingDataService.getServerMapIconPathMakeFunc(); + // TODO: ServiceType Empty이슈 체크 #174 + this.mapData$ = this.newUrlStateNotificationService.onUrlStateChange$.pipe( + switchMap((urlService: NewUrlStateNotificationService) => this.transactionDetailDataService.getData( + urlService.getPathValue(UrlPathId.AGENT_ID), + urlService.getPathValue(UrlPathId.SPAN_ID), + urlService.getPathValue(UrlPathId.TRACE_ID), + urlService.getPathValue(UrlPathId.FOCUS_TIMESTAMP) + )), + map((applicationMapData: ITransactionDetailData) => { + return new ServerMapData(applicationMapData.applicationMapData.nodeDataArray, applicationMapData.applicationMapData.linkDataArray); + }) + ); + this.gutterEventService.onGutterResized$.pipe( + takeUntil(this.unsubscribe$) + ).subscribe(() => this.serverMapInteractionService.setRefresh()); + } + onRenderCompleted(msg: string): void { + this.showLoading = false; + } + onClickBackground($event: any): void {} + onClickGroupNode($event: any): void {} + onClickNode($event: any): void {} + onClickLink($event: any): void {} + onDoubleClickBackground($event: any): void {} + onContextClickBackground($event: any): void {} + onContextClickNode($event: any): void {} + onContextClickLink($param: any): void {} +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-interaction.service.ts b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-interaction.service.ts new file mode 100644 index 000000000000..77c57361273f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-interaction.service.ts @@ -0,0 +1,48 @@ +import { Injectable } from '@angular/core'; +import * as go from 'gojs'; +import { Subject, Observable } from 'rxjs'; + +@Injectable() +export class ServerMapInteractionService { + private outSearchWordSource = new Subject(); + private outSearchResultSource = new Subject(); + private outSelectedApplicationSource = new Subject(); + private outCurrentDiagramSource = new Subject(); + private outRefresh = new Subject(); + private outChangeMergeState = new Subject(); + + public onSearchWord$: Observable; + public onSearchResult$: Observable; + public onSelectedApplication$: Observable; + public onCurrentDiagram$: Observable; + public onRefresh$: Observable; + public onChangeMergeState$: Observable; + + constructor() { + this.onSearchWord$ = this.outSearchWordSource.asObservable(); + this.onSearchResult$ = this.outSearchResultSource.asObservable(); + this.onSelectedApplication$ = this.outSelectedApplicationSource.asObservable(); + this.onCurrentDiagram$ = this.outCurrentDiagramSource.asObservable(); + this.onRefresh$ = this.outRefresh.asObservable(); + this.onChangeMergeState$ = this.outChangeMergeState.asObservable(); + } + + setSearchWord(word: string): void { + this.outSearchWordSource.next(word); + } + setSearchResult(result: IApplication[]): void { + this.outSearchResultSource.next(result); + } + setSelectedApplication(appKey: string): void { + this.outSelectedApplicationSource.next(appKey); + } + setCurrentDiagram(diagram: go.Diagram): void { + this.outCurrentDiagramSource.next(diagram); + } + setRefresh(): void { + this.outRefresh.next(); + } + setMergeState(mergeState: IServerMapMergeState): void { + this.outChangeMergeState.next(mergeState); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-overview.component.css b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-overview.component.css new file mode 100644 index 000000000000..dadedc20f03a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-overview.component.css @@ -0,0 +1,10 @@ +div { + width: 180px; + height: 160px; + right: 20px; + bottom: 20px; + z-index: 8; + position: absolute; + background-color: #FFF; + border: 2px solid #BCBFC5; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-overview.component.html b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-overview.component.html new file mode 100644 index 000000000000..edc0374881cd --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-overview.component.html @@ -0,0 +1 @@ +
diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-overview.component.ts b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-overview.component.ts new file mode 100644 index 000000000000..262a1b15c17d --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map-overview.component.ts @@ -0,0 +1,47 @@ +import { Component, OnInit, ElementRef, Input, ViewChild, OnDestroy } from '@angular/core'; +import * as go from 'gojs'; +import { Subject } from 'rxjs'; +import { takeUntil, filter } from 'rxjs/operators'; + +import { ServerMapInteractionService } from './server-map-interaction.service'; + +@Component({ + selector: 'pp-server-map-overview', + templateUrl: './server-map-overview.component.html', + styleUrls: ['./server-map-overview.component.css'] +}) +export class ServerMapOverviewComponent implements OnInit, OnDestroy { + @ViewChild('wrapper') overviewWrapper: ElementRef; + @Input() showOverview = false; + overview: go.Overview; + initialized = false; + unsubscribe: Subject = new Subject(); + constructor( + private serverMapInteractionService: ServerMapInteractionService + ) {} + ngOnInit() { + this.serverMapInteractionService.onCurrentDiagram$.pipe( + takeUntil(this.unsubscribe), + filter((diagram: go.Diagram) => { + // TODO: visjs구현체에서 overview핸들링이 되기전까지 visjs옵션의 경우(null)엔 잠시 막아둠. + return !!diagram; + }) + ).subscribe((diagram: go.Diagram) => { + if (this.initialized === true) { + this.overview.observed = diagram; + } else { + this.overview = go.GraphObject.make(go.Overview, this.overviewWrapper.nativeElement, { + observed: diagram + }); + this.overview.box.elt(0)['figure'] = 'Rectangle'; + this.overview.box.elt(0)['stroke'] = '#E7555A'; + this.overview.box.elt(0)['strokeWidth'] = .5; + this.initialized = true; + } + }); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map/server-map.component.css b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map.component.css new file mode 100644 index 000000000000..8b14713a6ba5 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map.component.css @@ -0,0 +1,14 @@ +div { + width: 100%; + height: 100%; + position: relative; +} +.show-map { + visibility: visible; + opacity: 1; + transition: all 1.5s; +} +.hide-map { + visibility: hidden; + opacity: 0; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map/server-map.component.html b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map.component.html new file mode 100644 index 000000000000..b07125417d4f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map.component.html @@ -0,0 +1 @@ +
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map/server-map.component.ts b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map.component.ts new file mode 100644 index 000000000000..75c1542fa3fd --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map.component.ts @@ -0,0 +1,129 @@ +import { Component, Input, Output, EventEmitter, OnInit, OnChanges, OnDestroy, AfterViewInit, SimpleChanges, ElementRef, ViewChild } from '@angular/core'; +import * as go from 'gojs'; +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + +import { ServerMapData } from './class/server-map-data.class'; +import { ServerMapInteractionService } from './server-map-interaction.service'; +import { ServerMapDiagram } from './class/server-map-diagram.class'; +import { AnalyticsService, TRACKED_EVENT_LIST } from 'app/shared/services'; +import { ServerMapFactory, ServerMapType } from './class/server-map-factory'; + +@Component({ + selector: 'pp-server-map', + templateUrl: './server-map.component.html', + styleUrls: ['./server-map.component.css'], +}) + +export class ServerMapComponent implements OnInit, OnChanges, OnDestroy, AfterViewInit { + @ViewChild('serverMap') el: ElementRef; + @Input() mapData: ServerMapData; + @Input() baseApplicationKey: string; + @Input() funcImagePath: Function; + @Input() funcServerMapImagePath: Function; + @Input() type: ServerMapType; + @Output() outClickNode: EventEmitter = new EventEmitter(); + @Output() outClickGroupNode: EventEmitter = new EventEmitter(); + @Output() outContextClickNode: EventEmitter = new EventEmitter(); + @Output() outClickLink: EventEmitter = new EventEmitter(); + @Output() outContextClickLink: EventEmitter = new EventEmitter(); + @Output() outClickBackground: EventEmitter = new EventEmitter(); + @Output() outDoubleClickBackground: EventEmitter = new EventEmitter(); + @Output() outContextClickBackground: EventEmitter = new EventEmitter(); + @Output() outRenderCompleted: EventEmitter<{[key: string]: boolean}> = new EventEmitter(); + + private hasRenderData = false; + private serverMapDiagram: ServerMapDiagram; + private unsubscribe: Subject = new Subject(); + + constructor( + private serverMapInteractionService: ServerMapInteractionService, + private analyticsService: AnalyticsService, + ) {} + ngOnChanges(changes: SimpleChanges) { + if (changes['mapData'] && changes['mapData']['currentValue']) { + if (this.serverMapDiagram) { + this.serverMapDiagram.setMapData(this.mapData, this.baseApplicationKey); + this.hasRenderData = false; + } else { + this.hasRenderData = true; + } + } + } + ngOnInit() { + this.serverMapInteractionService.onSearchWord$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((query: string) => { + this.serverMapInteractionService.setSearchResult(this.serverMapDiagram.searchNode(query)); + }); + this.serverMapInteractionService.onSelectedApplication$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((appKey: string) => { + this.serverMapDiagram.selectNodeBySearch(appKey); + }); + this.serverMapInteractionService.onRefresh$.pipe( + takeUntil(this.unsubscribe) + ).subscribe(() => { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.REFRESH_SERVER_MAP); + this.serverMapDiagram.refresh(); + }); + this.serverMapInteractionService.onChangeMergeState$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((params: IServerMapMergeState) => { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.TOGGLE_SERVER_MAP_MERGE_STATE, `${params.state}`); + this.serverMapDiagram.setMergeState(params); + this.serverMapDiagram.resetMergeState(); + }); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + + ngAfterViewInit() { + this.serverMapDiagram = ServerMapFactory.createServerMap(this.type, { + container: this.el.nativeElement, + funcServerMapImagePath: this.funcServerMapImagePath + }); + this.addEventHandler(); + if (this.hasRenderData) { + this.serverMapDiagram.setMapData(this.mapData, this.baseApplicationKey); + this.hasRenderData = false; + } + } + addEventHandler(): void { + this.serverMapDiagram.outRenderCompleted.subscribe((diagram: go.Diagram) => { + this.serverMapInteractionService.setCurrentDiagram(diagram); + this.outRenderCompleted.emit({ + showOverView: !!diagram + }); + }); + this.serverMapDiagram.outClickNode.subscribe((nodeData: any) => { + this.outClickNode.emit(nodeData); + }); + this.serverMapDiagram.outClickGroupNode.subscribe((nodeData: any) => { + this.outClickGroupNode.emit(nodeData); + }); + this.serverMapDiagram.outContextClickNode.subscribe((node: any) => { + this.outContextClickNode.emit(node); + }); + this.serverMapDiagram.outClickLink.subscribe((linkData: any) => { + this.outClickLink.emit(linkData); + }); + this.serverMapDiagram.outContextClickLink.subscribe((linkObj: any) => { + this.outContextClickLink.emit(linkObj); + }); + this.serverMapDiagram.outClickBackground.subscribe(() => { + this.outClickBackground.emit(); + }); + this.serverMapDiagram.outDoubleClickBackground.subscribe((msg: any) => { + this.outDoubleClickBackground.emit(msg); + }); + this.serverMapDiagram.outContextClickBackground.subscribe((coord: ICoordinate) => { + this.outContextClickBackground.emit(coord); + }); + } + clear(): void { + this.serverMapDiagram.clear(); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-map/server-map.interface.ts b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map.interface.ts new file mode 100644 index 000000000000..9269f65024b9 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-map/server-map.interface.ts @@ -0,0 +1,18 @@ +export interface IHistogramType1 { + '1s': number; + '3s': number; + '5s': number; + 'Slow': number; + 'Error': number; +} +export interface IHistogramType2 { + '100ms': number; + '300ms': number; + '500ms': number; + Error: number; + Slow: number; +} +export interface IHistogramType3 { + key: string; + values: number[]; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/server-status/index.ts b/web/src/main/webapp/v2/src/app/core/components/server-status/index.ts new file mode 100644 index 000000000000..33dcee3bcb53 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-status/index.ts @@ -0,0 +1 @@ +export * from './server-status-container.component'; diff --git a/web/src/main/webapp/v2/src/app/core/components/server-status/server-status-container.component.css b/web/src/main/webapp/v2/src/app/core/components/server-status/server-status-container.component.css new file mode 100644 index 000000000000..1214e029d60e --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-status/server-status-container.component.css @@ -0,0 +1,41 @@ +.l-status { + padding: 10px 16px 10px 16px; +} +.l-status:after { + content:""; + display:block; + width:100%; + height:0; + visibility:hidden; + clear:both; +} +.l-status button { + float: left; +} +.l-status button.disable { + background-color: #CCC; +} +.l-status-count { + float: right; +} +.l-status-count li { + font-size: 12px; + color: #B3B3B4; + float: left; +} +.l-status-count li:first-child { + margin: 0 15px 0 0; + padding: 0 15px 0 0; + position: relative; +} +.l-status-count span { + font-size: 18px; + font-weight: 600; + color: #EB4747; +} +.l-status-count span.l-total { + color: #000; +} +button:first-child { + margin-right: 10px; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/server-status/server-status-container.component.html b/web/src/main/webapp/v2/src/app/core/components/server-status/server-status-container.component.html new file mode 100644 index 000000000000..2d89e1754818 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-status/server-status-container.component.html @@ -0,0 +1,8 @@ +
+ + +
    +
  • Total {{node.instanceCount}}
  • +
  • Error {{node.instanceErrorCount || 0}}
  • +
+
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/server-status/server-status-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/server-status/server-status-container.component.ts new file mode 100644 index 000000000000..417c93778100 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/server-status/server-status-container.component.ts @@ -0,0 +1,91 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { Subject } from 'rxjs'; +import { takeUntil, filter } from 'rxjs/operators'; + +import { Actions } from 'app/shared/store'; +import { StoreHelperService, NewUrlStateNotificationService, UrlRouteManagerService, AnalyticsService, TRACKED_EVENT_LIST } from 'app/shared/services'; +import { ServerMapData } from 'app/core/components/server-map/class/server-map-data.class'; + +@Component({ + selector: 'pp-server-status-container', + templateUrl: './server-status-container.component.html', + styleUrls: ['./server-status-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ServerStatusContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + private enableRealTime: boolean; + node: INodeInfo; + isInfoPerServerShow = false; + isLoading = false; + serverMapData: ServerMapData; + selectedTarget: ISelectedTarget; + constructor( + private changeDetector: ChangeDetectorRef, + private storeHelperService: StoreHelperService, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private urlRouteManagerService: UrlRouteManagerService, + private analyticsService: AnalyticsService + ) {} + ngOnInit() { + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((urlService: NewUrlStateNotificationService) => { + this.enableRealTime = urlService.isRealTimeMode(); + }); + this.connectStore(); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private connectStore(): void { + this.storeHelperService.getServerMapData(this.unsubscribe).subscribe((serverMapData: ServerMapData) => { + this.serverMapData = serverMapData; + }); + this.storeHelperService.getServerMapTargetSelected(this.unsubscribe).pipe( + filter((target: ISelectedTarget) => { + return (target) ? true : false; + }) + ).subscribe((target: ISelectedTarget) => { + this.selectedTarget = target; + this.node = (target.isNode === true ? this.serverMapData.getNodeData(target.node[0]) : null); + this.changeDetector.detectChanges(); + }); + this.storeHelperService.getInfoPerServerState(this.unsubscribe).subscribe((visibleState: boolean) => { + this.isLoading = false; + this.isInfoPerServerShow = visibleState; + this.changeDetector.detectChanges(); + }); + } + onClickViewServer(): void { + if (this.isLoading === true || this.enableRealTime === true) { + return; + } + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.SHOW_SERVER_LIST); + this.isLoading = !this.isLoading; + this.storeHelperService.dispatch(new Actions.ChangeServerMapDisableState(!this.isInfoPerServerShow)); + this.storeHelperService.dispatch(new Actions.ChangeInfoPerServerVisibleState(!this.isInfoPerServerShow)); + } + hasServerList(): boolean { + if (this.selectedTarget) { + if (this.selectedTarget.isNode && this.selectedTarget.isMerged === false) { + return this.selectedTarget.hasServerList; + } + } + return false; + } + enableViewServer(): boolean { + return !this.enableRealTime; + } + onClickOpenInspector(): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.OPEN_INSPECTOR); + this.urlRouteManagerService.openInspectorPage(this.enableRealTime); + } + getAngle(): string { + return this.isInfoPerServerShow ? 'right' : 'left'; + } + isWAS(): boolean { + return this.selectedTarget.isWAS; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/side-bar-title/index.ts b/web/src/main/webapp/v2/src/app/core/components/side-bar-title/index.ts new file mode 100644 index 000000000000..f877102d8044 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/side-bar-title/index.ts @@ -0,0 +1,24 @@ + +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +// import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { MatTooltipModule } from '@angular/material'; +import { SideBarTitleComponent } from './side-bar-title.component'; +import { SideBarTitleContainerComponent } from './side-bar-title-container.component'; + +@NgModule({ + declarations: [ + SideBarTitleComponent, + SideBarTitleContainerComponent + ], + imports: [ + CommonModule, + // BrowserAnimationsModule, + MatTooltipModule + ], + exports: [ + SideBarTitleContainerComponent + ], + providers: [] +}) +export class SideBarTitleModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/side-bar-title/side-bar-title-container.component.css b/web/src/main/webapp/v2/src/app/core/components/side-bar-title/side-bar-title-container.component.css new file mode 100644 index 000000000000..10e12cc739ba --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/side-bar-title/side-bar-title-container.component.css @@ -0,0 +1,5 @@ +:host { + width: 100%; + align-items: center; + justify-content: space-between; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/side-bar-title/side-bar-title-container.component.html b/web/src/main/webapp/v2/src/app/core/components/side-bar-title/side-bar-title-container.component.html new file mode 100644 index 000000000000..e33587b64538 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/side-bar-title/side-bar-title-container.component.html @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/side-bar-title/side-bar-title-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/side-bar-title/side-bar-title-container.component.ts new file mode 100644 index 000000000000..a419e569dd61 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/side-bar-title/side-bar-title-container.component.ts @@ -0,0 +1,121 @@ +import { Component, OnInit, OnDestroy, HostBinding, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { Subject } from 'rxjs'; +import { filter } from 'rxjs/operators'; + +import { Actions } from 'app/shared/store'; +import { WebAppSettingDataService, StoreHelperService, AnalyticsService, TRACKED_EVENT_LIST } from 'app/shared/services'; + +interface IAppData { + applicationName: string; + serviceType: string; + agentList?: string[]; +} + +@Component({ + selector: 'pp-side-bar-title-container', + templateUrl: './side-bar-title-container.component.html', + styleUrls: ['./side-bar-title-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class SideBarTitleContainerComponent implements OnInit, OnDestroy { + @HostBinding('class.flex-container') flexContainerClass = true; + @HostBinding('class.flex-row') flexRowClass = true; + isWAS: boolean; + isNode: boolean; + fromAppData: IAppData = null; + toAppData: IAppData = null; + selectedTarget: ISelectedTarget; + serverMapData: any; + funcImagePath: Function; + unsubscribe: Subject = new Subject(); + constructor( + private changeDetector: ChangeDetectorRef, + private storeHelperService: StoreHelperService, + private webAppSettingDataService: WebAppSettingDataService, + private analyticsService: AnalyticsService, + ) { + } + ngOnInit() { + this.funcImagePath = this.webAppSettingDataService.getIconPathMakeFunc(); + this.connectStore(); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private connectStore(): void { + this.storeHelperService.getServerMapData(this.unsubscribe).subscribe((serverMapData: IServerMapInfo) => { + this.serverMapData = serverMapData; + }); + this.storeHelperService.getServerMapTargetSelected(this.unsubscribe).pipe( + filter((target: ISelectedTarget) => { + return target && (target.isNode === true || target.isNode === false) ? true : false; + }) + ).subscribe((target: ISelectedTarget) => { + if ( target.isNode || target.isLink ) { + this.selectedTarget = target; + this.makeFromToData(); + this.changeDetector.detectChanges(); + } + }); + } + makeFromToData() { + if ( this.selectedTarget.isNode ) { + this.isWAS = this.selectedTarget.isWAS; + this.isNode = true; + const node = this.serverMapData.getNodeData(this.selectedTarget.node[0]); + this.toAppData = this.formatToAppData({ node: node }); + } else if ( this.selectedTarget.isLink ) { + this.isWAS = false; + this.isNode = false; + const link = this.serverMapData.getLinkData(this.selectedTarget.link[0]); + this.fromAppData = this.formatFromAppData(link); + this.toAppData = this.formatToAppData({ link: link }); + } + } + private isUserType(type: string): boolean { + return type.toUpperCase() === 'USER'; + } + private formatFromAppData(link: any): IAppData { + return { + applicationName: this.isUserType(link.sourceInfo.serviceType) ? link.sourceInfo.serviceType : link.sourceInfo.applicationName, + serviceType: link.sourceInfo.serviceType + }; + } + private formatToAppData({ node, link }: { node?: any, link?: any }): IAppData { + if (this.isNode) { + if (this.selectedTarget.isMerged) { + return { + applicationName: `[ ${this.selectedTarget.node.length} ] ${node.serviceType} GROUP`, + serviceType: node.serviceType, + agentList: [] + }; + } else { + return { + applicationName: node.applicationName, + serviceType: node.serviceType, + agentList: node.agentIds.sort() + }; + } + } else { + if (this.selectedTarget.isMerged) { + return { + applicationName: `[ ${this.selectedTarget.link.length} ] ${link.targetInfo.serviceType} GROUP`, + serviceType: link.targetInfo.serviceType, + agentList: [] + }; + } else { + return { + applicationName: link.targetInfo.applicationName, + serviceType: link.targetInfo.serviceType, + agentList: [] + }; + } + } + } + onChangeAgent(agentName: string): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.SELECT_AGENT); + agentName = agentName === 'All' ? '' : agentName; + this.storeHelperService.dispatch(new Actions.ChangeAgent(agentName)); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/side-bar-title/side-bar-title.component.css b/web/src/main/webapp/v2/src/app/core/components/side-bar-title/side-bar-title.component.css new file mode 100644 index 000000000000..4c5a7a6365a5 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/side-bar-title/side-bar-title.component.css @@ -0,0 +1,45 @@ +:host { + width: 100%; +} + +.l-wrapper { + width: 100%; + display:flex; + flex-wrap: nowrap; + flex-flow: row; + align-items: center; + justify-content: space-between; +} +.l-wrapper select { + width: 152px; + border: 1px solid #d7dde4; + height: 32px; + padding: 0 9px; + font-size: 13px; + border-radius: 2px; + color: #666; + appearance: none; + -webkit-appearance:none; + background:url(../../../../assets/img/select-down-arrow.png) no-repeat right 10px center; +} +.l-wrapper-grid { + display: grid; + grid-template-columns: 50% 20px 50%; + grid-template-rows: auto; +} + +.l-wrapper .l-title, .l-wrapper-grid .l-title { + display: block; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + font-size: 16px; + font-weight: 600; + padding: 0px; +} +.l-wrapper .l-title img, .l-wrapper-grid .l-title img { + float: left; +} +.l-wrapper .l-title span, .l-wrapper-grid .l-title span { + margin-left: 6px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/side-bar-title/side-bar-title.component.html b/web/src/main/webapp/v2/src/app/core/components/side-bar-title/side-bar-title.component.html new file mode 100644 index 000000000000..d1e4293279c6 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/side-bar-title/side-bar-title.component.html @@ -0,0 +1,18 @@ +
+
+ {{toAppData?.applicationName}} +
+ +
+
+
+ {{fromAppData?.applicationName}} +
+
+
+ {{toAppData?.applicationName}} +
+
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/side-bar-title/side-bar-title.component.ts b/web/src/main/webapp/v2/src/app/core/components/side-bar-title/side-bar-title.component.ts new file mode 100644 index 000000000000..a883d6f649a7 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/side-bar-title/side-bar-title.component.ts @@ -0,0 +1,33 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; + +@Component({ + selector: 'pp-side-bar-title', + templateUrl: './side-bar-title.component.html', + styleUrls: ['./side-bar-title.component.css'] +}) +export class SideBarTitleComponent implements OnInit { + @Input() isWAS: boolean; + @Input() isNode: boolean; + @Input() fromAppData: any; + @Input() toAppData: any; + @Input() funcImagePath: Function; + @Output() outChangeAgent: EventEmitter = new EventEmitter(); + constructor() {} + ngOnInit() {} + getIconPath(serviceType: string): string { + return this.funcImagePath(serviceType); + } + onChangeAgent($agent: string): void { + this.outChangeAgent.emit($agent); + } + showAgentList(): boolean { + if (this.toAppData) { + return this.toAppData.agentList.length > 0; + } else { + return false; + } + } + onLoadError(img: HTMLImageElement): void { + img.src = this.funcImagePath('NO_IMAGE_FOUND'); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/side-bar/index.ts b/web/src/main/webapp/v2/src/app/core/components/side-bar/index.ts new file mode 100644 index 000000000000..ed1446f66d9f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/side-bar/index.ts @@ -0,0 +1,37 @@ + +import { NgModule } from '@angular/core'; +import { SharedModule } from 'app/shared'; +import { LoadChartModule } from 'app/core/components/load-chart'; +import { TargetListModule } from 'app/core/components/target-list'; +import { SideBarTitleModule } from 'app/core/components/side-bar-title'; +import { ScatterChartModule } from 'app/core/components/scatter-chart'; +import { InfoPerServerModule } from 'app/core/components/info-per-server'; +import { ResponseSummaryChartModule } from 'app/core/components/response-summary-chart'; +import { ServerStatusContainerComponent } from 'app/core/components/server-status'; +import { FilterInformationContainerComponent } from 'app/core/components/filter-information'; +import { SideBarContainerComponent } from './side-bar-container.component'; +import { SideBarForFilteredMapContainerComponent } from './side-bar-for-filtered-map-container.component'; + +@NgModule({ + declarations: [ + SideBarContainerComponent, + SideBarForFilteredMapContainerComponent, + ServerStatusContainerComponent, + FilterInformationContainerComponent + ], + imports: [ + SharedModule, + InfoPerServerModule, + SideBarTitleModule, + ScatterChartModule, + TargetListModule, + ResponseSummaryChartModule, + LoadChartModule + ], + exports: [ + SideBarContainerComponent, + SideBarForFilteredMapContainerComponent + ], + providers: [] +}) +export class SideBarModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/side-bar/side-bar-container.component.css b/web/src/main/webapp/v2/src/app/core/components/side-bar/side-bar-container.component.css new file mode 100644 index 000000000000..15cfddb82d08 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/side-bar/side-bar-container.component.css @@ -0,0 +1,40 @@ +:host { + position: relative; + border-left: 1px solid #e5e8f0; + border-right: 1px solid #e5e8f0; +} +.l-sidemenu-wrap { + display: flex; + flex-flow: column nowrap; + height: 100%; + overflow-y: auto; + overflow-x: hidden; +} +.l-sidemenu { + height: 100%; + z-index: 10; + background-color: #fff; +} +.l-title-group { + display: flex; + flex-flow: row wrap; + color: #666; + justify-content: space-between; + align-items: center; + padding: 0 15px; + background: #F9FAFC; + border-bottom: 1px solid #EAEEF4; + height: 50px; +} +.l-contents-group { + padding-bottom: 16px; + overflow-y: auto; + overflow-x: hidden; +} +.l-chart-group-list { + flex: 1; +} +hr { + height: 1px; + border-top: 1px solid #EAEEF4; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/side-bar/side-bar-container.component.html b/web/src/main/webapp/v2/src/app/core/components/side-bar/side-bar-container.component.html new file mode 100644 index 000000000000..76d48d8c726b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/side-bar/side-bar-container.component.html @@ -0,0 +1,21 @@ +
+
+
+ +
+
+ +
+ + +
+ +
+ +
+
+
+ +
+ + diff --git a/web/src/main/webapp/v2/src/app/core/components/side-bar/side-bar-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/side-bar/side-bar-container.component.ts new file mode 100644 index 000000000000..50b4e2dbaa96 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/side-bar/side-bar-container.component.ts @@ -0,0 +1,75 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { Subject } from 'rxjs'; +import { takeUntil, filter } from 'rxjs/operators'; + +import { UrlPathId } from 'app/shared/models'; +import { StoreHelperService, NewUrlStateNotificationService } from 'app/shared/services'; + +@Component({ + selector: 'pp-side-bar-container', + templateUrl: './side-bar-container.component.html', + styleUrls: ['./side-bar-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class SideBarContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + target: any; + sideBarWidth = 0; + useDisable = true; + showLoading = true; + constructor( + private changeDetectorRef: ChangeDetectorRef, + private storeHelperService: StoreHelperService, + private newUrlStateNotificationService: NewUrlStateNotificationService + ) {} + ngOnInit() { + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((urlService: NewUrlStateNotificationService) => { + if (urlService.hasValue(UrlPathId.APPLICATION)) { + this.showLoading = true; + this.useDisable = true; + } else { + this.sideBarWidth = 0; + this.showLoading = false; + this.useDisable = false; + } + this.changeDetectorRef.detectChanges(); + }); + this.connectStore(); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private connectStore(): void { + this.storeHelperService.getServerMapData(this.unsubscribe).pipe( + filter((target: any) => { + return target.nodeList ? true : false; + }) + ).subscribe((target: any) => { + if (target.nodeList.length === 0) { + this.sideBarWidth = 0; + } + this.changeDetectorRef.detectChanges(); + }); + this.storeHelperService.getServerMapTargetSelected(this.unsubscribe).pipe( + filter((target: ISelectedTarget) => { + return target && (target.isNode === true || target.isNode === false) ? true : false; + }) + ).subscribe((target: ISelectedTarget) => { + this.target = target; + if ( target.isNode === true || target.isLink === true ) { + this.sideBarWidth = 461; + } else { + this.sideBarWidth = 0; + } + this.showLoading = false; + this.useDisable = false; + this.changeDetectorRef.detectChanges(); + }); + } + hasTopElement(): boolean { + return this.target && (this.target.isNode || this.target.isMerged); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/side-bar/side-bar-for-filtered-map-container.component.css b/web/src/main/webapp/v2/src/app/core/components/side-bar/side-bar-for-filtered-map-container.component.css new file mode 100644 index 000000000000..15cfddb82d08 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/side-bar/side-bar-for-filtered-map-container.component.css @@ -0,0 +1,40 @@ +:host { + position: relative; + border-left: 1px solid #e5e8f0; + border-right: 1px solid #e5e8f0; +} +.l-sidemenu-wrap { + display: flex; + flex-flow: column nowrap; + height: 100%; + overflow-y: auto; + overflow-x: hidden; +} +.l-sidemenu { + height: 100%; + z-index: 10; + background-color: #fff; +} +.l-title-group { + display: flex; + flex-flow: row wrap; + color: #666; + justify-content: space-between; + align-items: center; + padding: 0 15px; + background: #F9FAFC; + border-bottom: 1px solid #EAEEF4; + height: 50px; +} +.l-contents-group { + padding-bottom: 16px; + overflow-y: auto; + overflow-x: hidden; +} +.l-chart-group-list { + flex: 1; +} +hr { + height: 1px; + border-top: 1px solid #EAEEF4; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/side-bar/side-bar-for-filtered-map-container.component.html b/web/src/main/webapp/v2/src/app/core/components/side-bar/side-bar-for-filtered-map-container.component.html new file mode 100644 index 000000000000..f31272f073fe --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/side-bar/side-bar-for-filtered-map-container.component.html @@ -0,0 +1,22 @@ +
+
+
+ +
+
+ + +
+ + +
+ +
+ +
+
+
+ +
+ + diff --git a/web/src/main/webapp/v2/src/app/core/components/side-bar/side-bar-for-filtered-map-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/side-bar/side-bar-for-filtered-map-container.component.ts new file mode 100644 index 000000000000..7673ad852248 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/side-bar/side-bar-for-filtered-map-container.component.ts @@ -0,0 +1,58 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { Subject } from 'rxjs'; +import { filter } from 'rxjs/operators'; + +import { StoreHelperService } from 'app/shared/services'; + +@Component({ + selector: 'pp-side-bar-for-filtered-map-container', + templateUrl: './side-bar-for-filtered-map-container.component.html', + styleUrls: ['./side-bar-for-filtered-map-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class SideBarForFilteredMapContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + target: any; + sideBarWidth = 0; + useDisable = true; + showLoading = true; + constructor( + private changeDetectorRef: ChangeDetectorRef, + private storeHelperService: StoreHelperService + ) {} + ngOnInit() { + this.connectStore(); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private connectStore(): void { + this.storeHelperService.getServerMapLoadingState(this.unsubscribe).subscribe((state: string) => { + switch (state) { + case 'loading': + this.showLoading = true; + this.useDisable = true; + break; + case 'pause': + case 'completed': + this.showLoading = false; + this.useDisable = false; + break; + } + this.changeDetectorRef.detectChanges(); + }); + this.storeHelperService.getServerMapTargetSelected(this.unsubscribe).pipe( + filter((target: ISelectedTarget) => { + return target && (target.isNode === true || target.isNode === false) ? true : false; + }) + ).subscribe((target: any) => { + this.target = target; + this.sideBarWidth = 461; + this.changeDetectorRef.detectChanges(); + }); + } + hasTopElement(): boolean { + return this.target && (this.target.isNode || this.target.isMerged); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/state-button/index.ts b/web/src/main/webapp/v2/src/app/core/components/state-button/index.ts new file mode 100644 index 000000000000..6ea0bfd30820 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/state-button/index.ts @@ -0,0 +1,25 @@ + +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { StateButtonComponent } from './state-button.component'; +import { StateButtonForFilteredMapContainerComponent } from './state-button-for-filtered-map-container.component'; +import { StateButtonForTransactionListContainerComponent } from './state-button-for-transaction-list-container.component'; +import { TransactionTableGridModule } from 'app/core/components/transaction-table-grid'; + +@NgModule({ + declarations: [ + StateButtonComponent, + StateButtonForFilteredMapContainerComponent, + StateButtonForTransactionListContainerComponent + ], + imports: [ + CommonModule, + TransactionTableGridModule + ], + exports: [ + StateButtonForFilteredMapContainerComponent, + StateButtonForTransactionListContainerComponent + ], + providers: [] +}) +export class StateButtonModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/state-button/state-button-for-filtered-map-container.component.css b/web/src/main/webapp/v2/src/app/core/components/state-button/state-button-for-filtered-map-container.component.css new file mode 100644 index 000000000000..c3329127e37a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/state-button/state-button-for-filtered-map-container.component.css @@ -0,0 +1,3 @@ +:host { + display: flex; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/state-button/state-button-for-filtered-map-container.component.html b/web/src/main/webapp/v2/src/app/core/components/state-button/state-button-for-filtered-map-container.component.html new file mode 100644 index 000000000000..559ca402504e --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/state-button/state-button-for-filtered-map-container.component.html @@ -0,0 +1,7 @@ + + \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/state-button/state-button-for-filtered-map-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/state-button/state-button-for-filtered-map-container.component.ts new file mode 100644 index 000000000000..9600c6eedbc3 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/state-button/state-button-for-filtered-map-container.component.ts @@ -0,0 +1,53 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { Subject } from 'rxjs'; + +import { StoreHelperService } from 'app/shared/services'; +import { ServerMapForFilteredMapDataService } from 'app/core/components/server-map/server-map-for-filtered-map-data.service'; +import { BUTTON_STATE } from './state-button.component'; + +@Component({ + selector: 'pp-state-button-for-filtered-map-container', + templateUrl: './state-button-for-filtered-map-container.component.html', + styleUrls: ['./state-button-for-filtered-map-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class StateButtonForFilteredMapContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + showCountInfo = false; + currentState = BUTTON_STATE.PAUSE; + constructor( + private changeDetectorRef: ChangeDetectorRef, + private storeHelperService: StoreHelperService, + private serverMapForFilteredMapDataService: ServerMapForFilteredMapDataService + ) {} + ngOnInit() { + this.connectStore(); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private connectStore(): void { + this.storeHelperService.getServerMapLoadingState(this.unsubscribe).subscribe((state: string) => { + switch (state) { + case 'loading': + this.currentState = BUTTON_STATE.PAUSE; + break; + case 'pause': + this.currentState = BUTTON_STATE.RESUME; + break; + case 'completed': + this.currentState = BUTTON_STATE.COMPLETED; + break; + } + this.changeDetectorRef.detectChanges(); + }); + } + onChangeState(event: string) { + if ( event === BUTTON_STATE.RESUME ) { + this.serverMapForFilteredMapDataService.resumeDataLoad(); + } else if ( event === BUTTON_STATE.PAUSE ) { + this.serverMapForFilteredMapDataService.stopDataLoad(); + } + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/state-button/state-button-for-transaction-list-container.component.css b/web/src/main/webapp/v2/src/app/core/components/state-button/state-button-for-transaction-list-container.component.css new file mode 100644 index 000000000000..c3329127e37a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/state-button/state-button-for-transaction-list-container.component.css @@ -0,0 +1,3 @@ +:host { + display: flex; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/state-button/state-button-for-transaction-list-container.component.html b/web/src/main/webapp/v2/src/app/core/components/state-button/state-button-for-transaction-list-container.component.html new file mode 100644 index 000000000000..1ce6d47d1b6c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/state-button/state-button-for-transaction-list-container.component.html @@ -0,0 +1,7 @@ + + \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/state-button/state-button-for-transaction-list-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/state-button/state-button-for-transaction-list-container.component.ts new file mode 100644 index 000000000000..7f09a26009c4 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/state-button/state-button-for-transaction-list-container.component.ts @@ -0,0 +1,33 @@ +import { Component, OnInit, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; + +import { TransactionMetaDataService } from 'app/core/components/transaction-table-grid/transaction-meta-data.service'; +import { BUTTON_STATE } from './state-button.component'; + +@Component({ + selector: 'pp-state-button-for-transaction-list-container', + templateUrl: './state-button-for-transaction-list-container.component.html', + styleUrls: ['./state-button-for-transaction-list-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class StateButtonForTransactionListContainerComponent implements OnInit { + countInfo = [0, 0]; + showCountInfo = true; + currentState = BUTTON_STATE.MORE; + constructor( + private changeDetectorRef: ChangeDetectorRef, + private transactionMetaDataService: TransactionMetaDataService + ) {} + ngOnInit() { + this.transactionMetaDataService.onTransactionDataCount$.subscribe((counter: number[]) => { + this.countInfo = counter.concat(); + this.currentState = this.isLoadCompleted() ? BUTTON_STATE.DONE : BUTTON_STATE.MORE; + this.changeDetectorRef.detectChanges(); + }); + } + private isLoadCompleted(): boolean { + return this.countInfo[0] === this.countInfo[1]; + } + onChangeState(state: string) { + this.transactionMetaDataService.loadData(); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/state-button/state-button.component.css b/web/src/main/webapp/v2/src/app/core/components/state-button/state-button.component.css new file mode 100644 index 000000000000..16c293648f0c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/state-button/state-button.component.css @@ -0,0 +1,4 @@ +.l-wrapper { + display: flex; + padding: 10px 20px 10px 10px; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/state-button/state-button.component.html b/web/src/main/webapp/v2/src/app/core/components/state-button/state-button.component.html new file mode 100644 index 000000000000..d178ffb2d67c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/state-button/state-button.component.html @@ -0,0 +1,3 @@ +
+ +
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/state-button/state-button.component.ts b/web/src/main/webapp/v2/src/app/core/components/state-button/state-button.component.ts new file mode 100644 index 000000000000..a8cc1cc19449 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/state-button/state-button.component.ts @@ -0,0 +1,64 @@ +import { Component, OnInit, Output, OnChanges, EventEmitter, SimpleChanges, Input } from '@angular/core'; + +import { AnalyticsService, TRACKED_EVENT_LIST } from 'app/shared/services'; + +export enum BUTTON_STATE { + PAUSE = 'Pause', + RESUME = 'Resume', + COMPLETED = 'Completed', + MORE = 'More', + DONE = 'Done' +} + +@Component({ + selector: 'pp-state-button', + templateUrl: './state-button.component.html', + styleUrls: ['./state-button.component.css'] +}) +export class StateButtonComponent implements OnInit, OnChanges { + currentStateText = BUTTON_STATE.PAUSE.toString(); + @Input() width: number; + @Input() showCountInfo: boolean; + @Input() countInfo: number[]; + @Input() currentState = BUTTON_STATE.PAUSE; + @Output() outChangeState: EventEmitter = new EventEmitter(); + constructor( + private analyticsService: AnalyticsService, + ) { + this.currentStateText = this.currentState.toString(); + } + ngOnInit() {} + ngOnChanges(changes: SimpleChanges) { + if (changes['currentState'] && changes['currentState']['currentValue']) { + this.currentStateText = this.currentState.toString(); + } + } + private changeState(state: BUTTON_STATE): void { + this.currentState = state; + this.currentStateText = this.currentState.toString(); + } + onClick() { + switch (this.currentState) { + case BUTTON_STATE.COMPLETED: + this.outChangeState.emit(this.currentState); + this.changeState(BUTTON_STATE.COMPLETED); + break; + case BUTTON_STATE.DONE: + this.outChangeState.emit(this.currentState); + this.changeState(BUTTON_STATE.DONE); + break; + case BUTTON_STATE.PAUSE: + this.outChangeState.emit(this.currentState); + this.changeState(BUTTON_STATE.RESUME); + break; + case BUTTON_STATE.RESUME: + this.outChangeState.emit(this.currentState); + this.changeState(BUTTON_STATE.PAUSE); + break; + case BUTTON_STATE.MORE: + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.CLICK_MORE_STATE_BUTTON); + this.outChangeState.emit(this.currentState); + break; + } + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/syntax-highlight-popup/index.ts b/web/src/main/webapp/v2/src/app/core/components/syntax-highlight-popup/index.ts new file mode 100644 index 000000000000..c317c0713f54 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/syntax-highlight-popup/index.ts @@ -0,0 +1,31 @@ + +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { ClipboardModule } from 'ngx-clipboard'; +import { HighlightModule } from 'ngx-highlightjs'; + +import { SyntaxHighlightPopupComponent } from './syntax-highlight-popup.component'; +import { SyntaxHighlightPopupContainerComponent } from './syntax-highlight-popup-container.component'; +import { SyntaxHighlightDataService } from './syntax-highlight-data.service'; + +@NgModule({ + declarations: [ + SyntaxHighlightPopupComponent, + SyntaxHighlightPopupContainerComponent + ], + imports: [ + CommonModule, + ClipboardModule, + HighlightModule.forRoot({ + theme: 'sunburst' + }), + ], + exports: [], + entryComponents: [ + SyntaxHighlightPopupContainerComponent + ], + providers: [ + SyntaxHighlightDataService + ] +}) +export class SyntaxHighlightPopupModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/syntax-highlight-popup/syntax-highlight-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/syntax-highlight-popup/syntax-highlight-data.service.ts new file mode 100644 index 000000000000..bae260200c77 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/syntax-highlight-popup/syntax-highlight-data.service.ts @@ -0,0 +1,35 @@ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpHeaders } from '@angular/common/http'; +import { Observable } from 'rxjs'; + +enum TYPE { + SQL = 'SQL', + JSON = 'JSON' +} + +@Injectable() +export class SyntaxHighlightDataService { + private sqlRequestURL = 'sqlBind.pinpoint'; + private jsonRequestURL = 'jsonBind.pinpoint'; + constructor( + private http: HttpClient + ) { } + getData({type, originalContents, bindValue}: ISyntaxHighlightData): Observable { + let requestURL; + switch (type) { + case TYPE.SQL: + requestURL = this.sqlRequestURL; + break; + case TYPE.JSON: + requestURL = this.jsonRequestURL; + break; + } + return this.http.post( + requestURL, + `${type.toLowerCase()}=${encodeURIComponent(originalContents)}&bind=${encodeURIComponent(bindValue)}`, + { + headers: new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded') + } + ); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/syntax-highlight-popup/syntax-highlight-popup-container.component.css b/web/src/main/webapp/v2/src/app/core/components/syntax-highlight-popup/syntax-highlight-popup-container.component.css new file mode 100644 index 000000000000..3c6a97654ec4 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/syntax-highlight-popup/syntax-highlight-popup-container.component.css @@ -0,0 +1,18 @@ +:host { + display: block; + background-color: transparent; + width: 100%; + height: 100%; +} + +:host::before { + content: ''; + display: block; + height: 100%; + width: 100%; + background: #000; + opacity: 0.6; + position: absolute; + left: 0; + top: 0; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/syntax-highlight-popup/syntax-highlight-popup-container.component.html b/web/src/main/webapp/v2/src/app/core/components/syntax-highlight-popup/syntax-highlight-popup-container.component.html new file mode 100644 index 000000000000..78be554fce0e --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/syntax-highlight-popup/syntax-highlight-popup-container.component.html @@ -0,0 +1,6 @@ +
+ + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/syntax-highlight-popup/syntax-highlight-popup-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/syntax-highlight-popup/syntax-highlight-popup-container.component.ts new file mode 100644 index 000000000000..7d3748317a2a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/syntax-highlight-popup/syntax-highlight-popup-container.component.ts @@ -0,0 +1,42 @@ +import { Component, OnInit, Input, Output, EventEmitter, AfterViewInit } from '@angular/core'; +import { Observable, iif, of } from 'rxjs'; +import { map } from 'rxjs/operators'; + +import { DynamicPopup } from 'app/shared/services'; +import { SyntaxHighlightDataService } from './syntax-highlight-data.service'; + +@Component({ + selector: 'pp-syntax-highlight-popup-container', + templateUrl: './syntax-highlight-popup-container.component.html', + styleUrls: ['./syntax-highlight-popup-container.component.css'], +}) +export class SyntaxHighlightPopupContainerComponent implements OnInit, AfterViewInit, DynamicPopup { + @Input() data: ISyntaxHighlightData; + @Output() outClose = new EventEmitter(); + @Output() outCreated = new EventEmitter(); + + data$: Observable; + + constructor( + private syntaxHighlightDataService: SyntaxHighlightDataService + ) {} + + ngOnInit() { + this.data$ = iif(() => !!this.data.bindValue, + this.syntaxHighlightDataService.getData(this.data).pipe( + map((bindedContents: string) => { + return { ...this.data, bindedContents }; + }) + ), + of(this.data) + ); + } + + ngAfterViewInit() { + this.outCreated.emit({ coordX: 0, coordY: 0 }); + } + + onClosePopup(): void { + this.outClose.emit(); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/syntax-highlight-popup/syntax-highlight-popup.component.css b/web/src/main/webapp/v2/src/app/core/components/syntax-highlight-popup/syntax-highlight-popup.component.css new file mode 100644 index 000000000000..2238be4a310e --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/syntax-highlight-popup/syntax-highlight-popup.component.css @@ -0,0 +1,81 @@ +:host{ + display: block; + position: absolute; + width: 100%; + min-width: 500px; + max-width: 1000px; + background-color: #fff; + border: 1px solid #e5e8f0; + box-shadow: 0 0 15px 0 rgba(0, 0, 0, 0.75); + text-align: left; + top: 50%; + transform: translateX(-50%) translateY(-50%); + left: 50%; +} +.l-title-group { + padding: 17px 18px; + height: auto; + background-color: #fff; + border-bottom: 1px solid #e5e8f0; + position: relative; + font-size: 13px; + font-weight: 600; + color: #333; + display: flex; + align-items: center; + justify-content: space-between; +} +.l-title-group dt { + font-size: 20px; + font-weight: 600; + color: #4a8fd2; +} +.l-title-group button { + position:absolute; + right:27px; + top:50%; + transform:translateY(-50%); + color:#4a8fd2; + font-size: 30px; + width:20px; + height:20px; + background:url(../../../../assets/img/icon-close.png) no-repeat 0 0; +} +.l-contents-group { + background: #f6f8fb; + padding: 17px 18px; + overflow: auto; +} +.l-sql-list { + margin: 10px 0 0 0; +} +.l-sql-list:first-child { + margin: 0; +} +.l-sql-list dt { + font-size: 13px; + font-weight: 600; + color: #333; + margin: 0 0 12px; +} +.l-sql-list dd { + border: 1px solid #cfd7e1; + background: #fff; + padding: 18px 18px; + font-size: 13px; + color: #999; + line-height: 2em; + position: relative; +} +.l-sql-list button { + position: absolute; + right: 0; + bottom: 0; +} +pre { + height: 250px; +} +code { + height: 100%; + white-space: normal; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/syntax-highlight-popup/syntax-highlight-popup.component.html b/web/src/main/webapp/v2/src/app/core/components/syntax-highlight-popup/syntax-highlight-popup.component.html new file mode 100644 index 000000000000..00816fb9d5ed --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/syntax-highlight-popup/syntax-highlight-popup.component.html @@ -0,0 +1,27 @@ +
+
{{data.type}}
+ +
+
+
+
Binded {{data.type}}
+
+
+ +
+
+
+
Original {{data.type}}
+
+
+ +
+
+
+
{{data.type}} Bind Value
+
+ {{data.bindValue}} + +
+
+
diff --git a/web/src/main/webapp/v2/src/app/core/components/syntax-highlight-popup/syntax-highlight-popup.component.ts b/web/src/main/webapp/v2/src/app/core/components/syntax-highlight-popup/syntax-highlight-popup.component.ts new file mode 100644 index 000000000000..6230a7eb2cb0 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/syntax-highlight-popup/syntax-highlight-popup.component.ts @@ -0,0 +1,33 @@ +import { Component, OnInit, Input, Output, EventEmitter, HostBinding } from '@angular/core'; +import { ClipboardService } from 'ngx-clipboard'; + +@Component({ + selector: 'pp-syntax-highlight-popup', + templateUrl: './syntax-highlight-popup.component.html', + styleUrls: ['./syntax-highlight-popup.component.css'] +}) +export class SyntaxHighlightPopupComponent implements OnInit { + @Input() data: ISyntaxHighlightData; + @Output() outClosePopup = new EventEmitter(); + @HostBinding('class.font-opensans') fontFamily = true; + + constructor( + private clipboardService: ClipboardService + ) {} + ngOnInit() {} + onCopyOriginalContents() { + this.clipboardService.copyFromContent(this.data.originalContents); + } + onCopyBindedContents() { + this.clipboardService.copyFromContent(this.data.bindedContents); + } + onCopyBindValue() { + this.clipboardService.copyFromContent(this.data.bindValue); + } + onClose() { + this.outClosePopup.emit(); + } + hasBind(): boolean { + return !!this.data.bindValue; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/target-list/index.ts b/web/src/main/webapp/v2/src/app/core/components/target-list/index.ts new file mode 100644 index 000000000000..2553bb3825e1 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/target-list/index.ts @@ -0,0 +1,23 @@ + +import { NgModule } from '@angular/core'; + +import { CommonModule } from '@angular/common'; +import { TargetListComponent } from './target-list.component'; +import { TargetListContainerComponent } from './target-list-container.component'; +import { FilterTransactionWizardPopupModule } from 'app/core/components/filter-transaction-wizard-popup'; + +@NgModule({ + declarations: [ + TargetListComponent, + TargetListContainerComponent + ], + imports: [ + CommonModule, + FilterTransactionWizardPopupModule + ], + exports: [ + TargetListContainerComponent + ], + providers: [] +}) +export class TargetListModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/target-list/target-list-container.component.css b/web/src/main/webapp/v2/src/app/core/components/target-list/target-list-container.component.css new file mode 100644 index 000000000000..e91a2913301f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/target-list/target-list-container.component.css @@ -0,0 +1,63 @@ +.l-target-container-wrapper { + margin: 0; + position: relative; + width: 459px; + height: 361px; + font-size: 14px; +} +.l-target-container { + display: grid; + grid-template-columns: auto; + grid-template-rows: 32px 299px 30px; +} +.l-target-container .l-search-header { + /* autoprefixer: off */ + color: #B3B3B4; + grid-column: 1 / 2; + grid-row: 1 / 2; +} +.l-target-container .l-search-header input { + width: 457px; + height: 30px; + padding: 0px 8px; + margin: 0px; + border: 1px solid #D7DDE4; +} +.l-target-container .l-search-header button { + position: absolute; + right: 10px; + top: 8px; + color: #B3B3B4; +} +.l-target-container .l-target-list { + /* autoprefixer: off */ + grid-column: 1 / 2; + grid-row: 2 / 3; + padding: 4px 0px; + overflow-x: hidden; + overflow-y: auto; +} + +.l-target-container .l-summary { + /* autoprefixer: off */ + grid-column: 1 / 2; + grid-row: 3 / 4; + background-color: #469ae4; +} +.l-target-container .l-summary > div { + display: flex; + color: #FFF; + cursor: pointer; + flex-wrap: nowrap; + align-items: center; + flex-direction: row; + justify-content: space-between; + height: 100%; + padding: 0px 28px 0px 8px; +} +button { + cursor: pointer; + background: none; + border: none; + font-size: 14px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/target-list/target-list-container.component.html b/web/src/main/webapp/v2/src/app/core/components/target-list/target-list-container.component.html new file mode 100644 index 000000000000..6c56da0ada07 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/target-list/target-list-container.component.html @@ -0,0 +1,23 @@ +
+
+
+ + +
+
+ + +
+
+
+ {{targetList.length}} application{{targetList.length > 1 ? 's' : ''}} + {{getRequestSum() | number}} +
+
+
+
diff --git a/web/src/main/webapp/v2/src/app/core/components/target-list/target-list-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/target-list/target-list-container.component.ts new file mode 100644 index 000000000000..5bad897cfaf3 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/target-list/target-list-container.component.ts @@ -0,0 +1,172 @@ +import { Component, OnInit, OnDestroy, AfterViewInit, AfterViewChecked, ElementRef, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { Subject } from 'rxjs'; +import { takeUntil, debounceTime, distinctUntilChanged, filter } from 'rxjs/operators'; + +import { Actions } from 'app/shared/store'; +import { UrlPathId } from 'app/shared/models'; +import { Filter } from 'app/core/models/filter'; +import { + UrlRouteManagerService, + StoreHelperService, + NewUrlStateNotificationService, + AnalyticsService, + TRACKED_EVENT_LIST, + DynamicPopupService +} from 'app/shared/services'; +import { ServerMapData } from 'app/core/components/server-map/class/server-map-data.class'; +import { FilterTransactionWizardPopupContainerComponent } from 'app/core/components/filter-transaction-wizard-popup/filter-transaction-wizard-popup-container.component'; + +@Component({ + selector: 'pp-target-list-container', + templateUrl: './target-list-container.component.html', + styleUrls: ['./target-list-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class TargetListContainerComponent implements OnInit, OnDestroy, AfterViewInit, AfterViewChecked { + minLength = 2; + isLink = false; + filterQuery = ''; + selectedTarget: ISelectedTarget; + serverMapData: ServerMapData; + notFilteredTargetList: any[]; + targetList: any[]; + unsubscribe: Subject = new Subject(); + userInputChange = new Subject(); + inputElement: HTMLInputElement; + constructor( + private changeDetector: ChangeDetectorRef, + private elementRef: ElementRef, + private urlRouteManagerService: UrlRouteManagerService, + private storeHelperService: StoreHelperService, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private dynamicPopupService: DynamicPopupService, + private analyticsService: AnalyticsService + ) {} + ngOnInit() { + this.connectStore(); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + ngAfterViewInit(): void { + this.inputElement = this.elementRef.nativeElement.querySelector('input'); + this.setFocusToInput(); + } + ngAfterViewChecked(): void { + this.inputElement = this.elementRef.nativeElement.querySelector('input'); + } + private connectStore(): void { + this.storeHelperService.getServerMapTargetSelected(this.unsubscribe).pipe( + filter((target: ISelectedTarget) => { + return target && (target.isNode === true || target.isNode === false) ? true : false; + }) + ).subscribe((target: ISelectedTarget) => { + this.selectedTarget = target; + if (target.isMerged === true) { + this.isLink = target.isLink; + if ( this.inputElement ) { + this.inputElement.value = ''; + } + this.gatherTargets(); + } + this.changeDetector.detectChanges(); + }); + this.storeHelperService.getServerMapData(this.unsubscribe).subscribe((serverMapData: ServerMapData) => { + this.serverMapData = serverMapData; + }); + this.userInputChange.pipe( + debounceTime(300), + distinctUntilChanged(), + takeUntil(this.unsubscribe) + ).subscribe((res: string) => { + const len = res.length; + if ( len === 0 || len >= this.minLength ) { + this.setFilterQuery(res); + } + }); + } + isGroup(): boolean { + return this.selectedTarget && this.selectedTarget.isMerged === true ? true : false; + } + gatherTargets(): void { + if ( this.selectedTarget.isMerged ) { + const targetList: any = []; + if ( this.selectedTarget.isNode ) { + this.selectedTarget.node.forEach(nodeKey => { + targetList.push([this.serverMapData.getNodeData(nodeKey), '']); + }); + } else if ( this.selectedTarget.isLink ) { + // Link 인 경우 필터 관련 버튼을 추가해야 함. + this.selectedTarget.link.forEach(linkKey => { + targetList.push([this.serverMapData.getNodeData(this.serverMapData.getLinkData(linkKey).to), linkKey]); + }); + } + this.notFilteredTargetList = this.targetList = targetList; + } + } + onSelectTarget(target: any): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.CLICK_NODE_IN_GROUPED_VIEW); + this.storeHelperService.dispatch(new Actions.UpdateServerMapSelectedTargetByList(target[0])); + } + onOpenFilter(target: any): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.CLICK_FILTER_TRANSACTION); + const link = this.serverMapData.getLinkData(target[1]); + this.urlRouteManagerService.openPage(this.urlRouteManagerService.makeFilterMapUrl({ + applicationName: link.filterApplicationName, + serviceType: link.filterApplicationServiceTypeName, + periodStr: this.newUrlStateNotificationService.getPathValue(UrlPathId.PERIOD).getValueWithAddedWords(), + timeStr: this.newUrlStateNotificationService.getPathValue(UrlPathId.PERIOD).getEndTime(), + filterStr: this.newUrlStateNotificationService.getPathValue(UrlPathId.FILTER), + hintStr: this.newUrlStateNotificationService.getPathValue(UrlPathId.HINT), + addedFilter: new Filter( + link.sourceInfo.applicationName, + link.sourceInfo.serviceType, + link.targetInfo.applicationName, + link.targetInfo.serviceType + )} + )); + } + getRequestSum(): number { + return this.targetList.reduce((accumulator: number, target: any) => { + return accumulator + target[0].totalCount; + }, 0); + } + onOpenFilterWizard(target: any): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.OPEN_FILTER_TRANSACTION_WIZARD); + this.dynamicPopupService.openPopup({ + data: this.serverMapData.getLinkData(target[1]), + component: FilterTransactionWizardPopupContainerComponent + }); + } + onKeyUp($event: any): void { + if ( $event.keyCode === 27 ) { + this.inputElement.value = ''; + this.setFilterQuery(''); + } else { + this.userInputChange.next($event.target.value); + } + } + setFocusToInput(): void { + if ( this.inputElement ) { + this.inputElement.focus(); + } + } + setFilterQuery(query: string): void { + this.filterQuery = query; + this.targetList = this.filterList(); + this.changeDetector.detectChanges(); + } + filterList(): any[] { + if ( this.filterQuery === '' ) { + return this.notFilteredTargetList; + } + const filteredList: any = []; + this.notFilteredTargetList.forEach(aTarget => { + if ( aTarget[0].applicationName.indexOf(this.filterQuery) !== -1 ) { + filteredList.push(aTarget); + } + }); + return filteredList; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/target-list/target-list.component.css b/web/src/main/webapp/v2/src/app/core/components/target-list/target-list.component.css new file mode 100644 index 000000000000..1ae0b6ff9cbc --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/target-list/target-list.component.css @@ -0,0 +1,42 @@ +.l-target-item { + display: flex; + padding: 4px 10px 4px 4px; + cursor: pointer; + flex-wrap: nowrap; + align-items: center; + flex-direction: row; + justify-content: space-between; + border-bottom: 1px solid #F3F3F3; +} +.l-target-item:hover { + background-color: #c1ecff; +} +.l-target-item.selected { + color: #1BABF4; + font-weight: 600; +} +.l-target-item:last-of-type { + border-bottom: none; +} +.l-application-name { + display: block; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} +button { + font-size: 11px; + padding: 1px 3px 0px 3px; +} + +button:first-of-type { + color: #4b99e3; + border: #CCC 1px solid; + margin-right: 1px; +} +button:last-of-type { + color: #e95459; + border: #CCC 1px solid; + margin-right: 8px; +} + diff --git a/web/src/main/webapp/v2/src/app/core/components/target-list/target-list.component.html b/web/src/main/webapp/v2/src/app/core/components/target-list/target-list.component.html new file mode 100644 index 000000000000..18049e33a3ce --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/target-list/target-list.component.html @@ -0,0 +1,8 @@ +
+ + + + {{target[0].applicationName}} + + {{target[0].totalCount | number}} +
diff --git a/web/src/main/webapp/v2/src/app/core/components/target-list/target-list.component.ts b/web/src/main/webapp/v2/src/app/core/components/target-list/target-list.component.ts new file mode 100644 index 000000000000..5a5a81f445e6 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/target-list/target-list.component.ts @@ -0,0 +1,28 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; + +@Component({ + selector: 'pp-target-list', + templateUrl: './target-list.component.html', + styleUrls: ['./target-list.component.css'] +}) +export class TargetListComponent implements OnInit { + selectedAppName = ''; + @Input() isLink: boolean; + @Input() targetList: any[]; + @Output() outSelectTarget: EventEmitter = new EventEmitter(); + @Output() outOpenFilter: EventEmitter = new EventEmitter(); + @Output() outOpenFilterWizard: EventEmitter = new EventEmitter(); + constructor() { } + ngOnInit() { + } + onSelectTarget(target): void { + this.selectedAppName = target[0].applicationName; + this.outSelectTarget.emit(target); + } + onOpenFilter($event, target): void { + this.outOpenFilter.emit(target); + } + onOpenFilterWizard($event, target): void { + this.outOpenFilterWizard.emit(target); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/thread-dump-list/active-thread-dump-list-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/thread-dump-list/active-thread-dump-list-data.service.ts new file mode 100644 index 000000000000..acf625d4e885 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/thread-dump-list/active-thread-dump-list-data.service.ts @@ -0,0 +1,52 @@ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpErrorResponse, HttpParams } from '@angular/common/http'; +import { Observable, throwError } from 'rxjs'; +import { catchError, retry, tap } from 'rxjs/operators'; + +export interface IActiveThreadDump { + threadId: string; + threadName: string; + threadState: string; + startTime: number; + execTime: number; + localTraceId: number; + sampled: boolean; + transactionId: string; + entryPoint: string; + detailMessage: string; +} + +export interface IActiveThreadDumpResponse { + code: number; + message: { + subType: string; + threadDumpData: IActiveThreadDump[]; + type: string; + version: string; + }; +} + +@Injectable() +export class ActiveThreadDumpListDataService { + requestURL = 'agent/activeThreadLightDump.pinpoint'; + constructor(private http: HttpClient) {} + getData(applicationName: string, agentId: string): Observable { + return this.http.get(this.requestURL, this.makeRequestOptionsArgs(applicationName, agentId)).pipe( + retry(3), + tap((data: any) => { + if (data['exception']) { + throw data['exception']['message']; + } + }), + catchError(this.handleError) + ); + } + private handleError(error: HttpErrorResponse | string) { + return throwError(error['message'] || error); + } + private makeRequestOptionsArgs(applicationName: string, agentId: string): object { + return { + params: new HttpParams().set('applicationName', applicationName).set('agentId', agentId) + }; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/thread-dump-list/index.ts b/web/src/main/webapp/v2/src/app/core/components/thread-dump-list/index.ts new file mode 100644 index 000000000000..8f2018b77fe3 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/thread-dump-list/index.ts @@ -0,0 +1,24 @@ +import { NgModule } from '@angular/core'; +import { SharedModule } from 'app/shared'; +import { AgGridModule } from 'ag-grid-angular/main'; +import { ThreadDumpListContainerComponent } from './thread-dump-list-container.component'; +import { ThreadDumpListComponent } from './thread-dump-list.component'; +import { ActiveThreadDumpListDataService } from './active-thread-dump-list-data.service'; + +@NgModule({ + declarations: [ + ThreadDumpListComponent, + ThreadDumpListContainerComponent + ], + imports: [ + SharedModule, + AgGridModule.withComponents([]) + ], + exports: [ + ThreadDumpListContainerComponent + ], + providers: [ + ActiveThreadDumpListDataService + ] +}) +export class ThreadDumpListModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/thread-dump-list/thread-dump-list-container.component.css b/web/src/main/webapp/v2/src/app/core/components/thread-dump-list/thread-dump-list-container.component.css new file mode 100644 index 000000000000..cbb7ab917be5 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/thread-dump-list/thread-dump-list-container.component.css @@ -0,0 +1,17 @@ +.there-is-no-data { + position: absolute; + width: 100%; + height: 100%; + padding-top: 40%; + text-align: center; +} +.when-has-message > span { + color: #F00; +} +.when-has-message > div { + padding-top: 10px; +} +.when-has-message > ul { + list-style: none; + padding-top: 10px; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/thread-dump-list/thread-dump-list-container.component.html b/web/src/main/webapp/v2/src/app/core/components/thread-dump-list/thread-dump-list-container.component.html new file mode 100644 index 000000000000..85f2675a4598 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/thread-dump-list/thread-dump-list-container.component.html @@ -0,0 +1,21 @@ + +
+ There is no data +
+
+ {{errorMessage}} +
+
For the above reasons, this agent does not support thread dump.
+
    +
  • 1. check this agent version is 1.6.1+
  • +
  • 2. check cluster feature is enabled.
  • +
+
+
+ \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/thread-dump-list/thread-dump-list-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/thread-dump-list/thread-dump-list-container.component.ts new file mode 100644 index 000000000000..72ebdaa06b50 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/thread-dump-list/thread-dump-list-container.component.ts @@ -0,0 +1,93 @@ +import { Component, OnInit, OnDestroy } from '@angular/core'; +import { Subject, Observable } from 'rxjs'; +import { takeUntil, filter, switchMap } from 'rxjs/operators'; + +import { UrlPathId } from 'app/shared/models'; +import { StoreHelperService, NewUrlStateNotificationService} from 'app/shared/services'; +import { ThreadDumpLogInteractionService, IParam } from 'app/core/components/thread-dump-log/thread-dump-log-interaction.service'; +import { ActiveThreadDumpListDataService, IActiveThreadDump } from './active-thread-dump-list-data.service'; +import { IThreadDumpData } from './thread-dump-list.component'; + + +@Component({ + selector: 'pp-thread-dump-list-container', + templateUrl: './thread-dump-list-container.component.html', + styleUrls: ['./thread-dump-list-container.component.css'] +}) +export class ThreadDumpListContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + private applicationName: string; + private agentId: string; + rowData: IThreadDumpData[] = []; + serverResponseError = true; + hasErrorResponse = false; + errorMessage: string; + showLoading = true; + loaded = false; + timezone$: Observable; + dateFormat$: Observable; + constructor( + private storeHelperService: StoreHelperService, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private activeThreadDumpListDataService: ActiveThreadDumpListDataService, + private threadDumpLogInteractionService: ThreadDumpLogInteractionService + ) {} + ngOnInit() { + this.connectStore(); + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe), + filter((urlService: NewUrlStateNotificationService) => { + return urlService.hasValue(UrlPathId.APPLICATION, UrlPathId.AGENT_ID); + }), + switchMap((urlService: NewUrlStateNotificationService) => { + this.applicationName = urlService.getPathValue(UrlPathId.APPLICATION).getApplicationName(); + this.agentId = urlService.getPathValue(UrlPathId.AGENT_ID); + return this.activeThreadDumpListDataService.getData(this.applicationName, this.agentId); + }) + ).subscribe((data: any) => { + if (data.code === -1) { + this.serverResponseError = true; + this.hasErrorResponse = true; + this.errorMessage = data.message; + } else { + this.rowData = data.message.threadDumpData.map((threadDump: IActiveThreadDump, index: number) => { + return { + index: index + 1, + id: threadDump.threadId, + name: threadDump.threadName, + state: threadDump.threadState, + startTime: threadDump.startTime, + exec: threadDump.execTime, + sampled: threadDump.sampled, + path: threadDump.entryPoint, + transactionId: threadDump.transactionId, + localTraceId: threadDump.localTraceId + }; + }); + } + this.showLoading = false; + }, (errorMessage: string) => { + this.serverResponseError = false; + this.hasErrorResponse = true; + this.errorMessage = errorMessage; + this.showLoading = false; + }); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private connectStore(): void { + this.timezone$ = this.storeHelperService.getTimezone(this.unsubscribe); + this.dateFormat$ = this.storeHelperService.getDateFormat(this.unsubscribe, 2); + } + hasData(): boolean { + return this.rowData.length > 0; + } + hasError(): boolean { + return this.hasErrorResponse; + } + onSelectThread($param: IParam): void { + this.threadDumpLogInteractionService.sendParam($param); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/thread-dump-list/thread-dump-list.component.css b/web/src/main/webapp/v2/src/app/core/components/thread-dump-list/thread-dump-list.component.css new file mode 100644 index 000000000000..f943a2791973 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/thread-dump-list/thread-dump-list.component.css @@ -0,0 +1,76 @@ +:host { + width: 100%; + height: 100%; +} +#thread-dump-table .ag-root { + border: none; + font-size: 12px; + font-family: 'Open Sans', sans-serif; +} +#thread-dump-table .ag-cell { + padding: 4px; + font-family: 'Open Sans', sans-serif; +} +#thread-dump-table .ag-column-moving .ag-cell { + transition: left 0.2s; +} +#thread-dump-table .ag-header-cell-moving .ag-header-cell-label { + opacity: 0; + filter: alpha(opacity=0); +} +#thread-dump-table .ag-header-cell-moving { + background-color: #bebebe; +} +#thread-dump-table .ag-header-cell-moving-clone { + border-right: 1px solid #808080; + border-left: 1px solid #808080; + background-color: rgba(220,220,220,0.8); +} +#thread-dump-table .ag-header { + background: #f6f8fb; + border-top: 1px solid #e6e8ec; + line-height: 2; +} +#thread-dump-table .ag-header-cell { + font-size: 12px; + font-weight: 600; + font-family: 'Open Sans', sans-serif; + padding-left: 2px; + padding-right: 2px; +} +#thread-dump-table .ag-header-cell-resize:after { + border-right: none; +} +#thread-dump-table .ag-header-cell-label { + padding: 4px; +} +#thread-dump-table .ag-group-expanded span { + margin-right: 4px; +} +#thread-dump-table .ag-row:hover { + cursor: pointer; + background-color: #F5F5F5; +} +#thread-dump-table .ag-row { + line-height: 2; + border-bottom: 1px solid #e6e8ec; +} +#thread-dump-table .ag-body { + background-color: #ffffff; +} +#thread-dump-table .ag-body-viewport { + background-color: #ffffff; +} +#thread-dump-table .ag-menu { + background-color: #ffffff; + border: 1px solid grey; +} +#thread-dump-table .fa { + font-size: 14px; +} +#thread-dump-table .ag-row-exception { + background-color: #fff1f1; +} +#thread-dump-table .ag-row-selected { + background-color: #e4f5e3; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/thread-dump-list/thread-dump-list.component.html b/web/src/main/webapp/v2/src/app/core/components/thread-dump-list/thread-dump-list.component.html new file mode 100644 index 000000000000..13fcc4a3fc83 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/thread-dump-list/thread-dump-list.component.html @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/thread-dump-list/thread-dump-list.component.ts b/web/src/main/webapp/v2/src/app/core/components/thread-dump-list/thread-dump-list.component.ts new file mode 100644 index 000000000000..e12c21e2ae9a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/thread-dump-list/thread-dump-list.component.ts @@ -0,0 +1,147 @@ +import { Component, OnInit, OnDestroy, Input, Output, EventEmitter, ViewEncapsulation } from '@angular/core'; +import * as moment from 'moment-timezone'; +import { GridOptions } from 'ag-grid'; + +export interface IThreadDumpData { + index: number; + id: string; + name: string; + state: string; + startTime: number; + exec: number; + sampled: boolean; + path: string; + transactionId: string; + localTraceId: number; +} + +@Component({ + selector: 'pp-thread-dump-list', + templateUrl: './thread-dump-list.component.html', + styleUrls: ['./thread-dump-list.component.css'], + encapsulation: ViewEncapsulation.None +}) +export class ThreadDumpListComponent implements OnInit, OnDestroy { + @Input() rowData: IThreadDumpData[]; + @Input() timezone: string; + @Input() dateFormat: string; + @Output() outSelectThread: EventEmitter = new EventEmitter(); + gridOptions: GridOptions; + constructor() {} + ngOnInit() { + this.initGridOptions(); + } + private initGridOptions(): void { + this.gridOptions = { + rowHeight: 30, + columnDefs: this.makeColumnDefs(), + animateRows: true, + rowSelection: 'single', + headerHeight: 34, + enableSorting: false, + enableColResize: true, + onCellClicked: (params: any) => { + if ( params.colDef.field === 'localTraceId' ) { + const tag = params.event.target.tagName.toUpperCase(); + if (tag === 'I' || tag === 'BUTTON' ) { + this.outSelectThread.next({ + threadName: params.data.name, + localTraceId: params.data.localTraceId + }); + return; + } + } + } + }; + } + private makeColumnDefs(): any { + return [ + { + headerName: '#', + field: 'index', + width: 30, + cellStyle: () => { + return {'text-align': 'center'}; + }, + suppressSizeToFit: true + }, + { + headerName: 'id', + field: 'id', + width: 60, + cellStyle: () => { + return {'text-align': 'center'}; + }, + suppressSizeToFit: true + }, + { + headerName: 'name', + field: 'name', + width: 150, + tooltipField: 'name' + }, + { + headerName: 'state', + field: 'state', + width: 120, + suppressSizeToFit: true + }, + { + headerName: 'start time', + field: 'startTime', + width: 140, + valueFormatter: (params: any) => { + return moment(params.value).tz(this.timezone).format(this.dateFormat); + }, + suppressSizeToFit: true, + tooltipField: 'startTime' + }, + { + headerName: 'exec(ms)', + field: 'exec', + width: 120, + suppressSizeToFit: true + }, + { + headerName: 'sampled', + field: 'sampled', + width: 90, + suppressSizeToFit: true + }, + { + headerName: 'path', + field: 'path', + width: 200, + tooltipField: 'path' + }, + { + headerName: 'transaction id', + field: 'transactionId', + width: 220, + suppressSizeToFit: true, + tooltipField: 'transactionId' + }, + { + headerName: '', + field: 'localTraceId', + width: 40, + cellStyle: () => { + return {'text-align': 'center'}; + }, + cellRenderer: () => { + return ''; + }, + suppressSizeToFit: true + } + ]; + } + ngOnDestroy() { + } + onGridReady(params: GridOptions): void { + this.gridOptions.api.sizeColumnsToFit(); + } + onGridSizeChanged(params: GridOptions): void { + this.gridOptions.api.sizeColumnsToFit(); + } + +} diff --git a/web/src/main/webapp/v2/src/app/core/components/thread-dump-log/active-thread-dump-detail-info-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/thread-dump-log/active-thread-dump-detail-info-data.service.ts new file mode 100644 index 000000000000..6089e8cb8245 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/thread-dump-log/active-thread-dump-detail-info-data.service.ts @@ -0,0 +1,55 @@ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpErrorResponse, HttpParams } from '@angular/common/http'; +import { Observable, throwError } from 'rxjs'; +import { catchError, retry, tap } from 'rxjs/operators'; + +export interface IActiveThreadDump { + threadId: string; + threadName: string; + threadState: string; + startTime: number; + execTime: number; + localTraceId: number; + sampled: boolean; + transactionId: string; + entryPoint: string; + detailMessage: string; +} +export interface IActiveThreadDumpResponse { + code: number; + message: { + subType: string; + threadDumpData: IActiveThreadDump[]; + type: string; + version: string; + }; +} + +@Injectable() +export class ActiveThreadDumpDetailInfoDataService { + requestURL = 'agent/activeThreadDump.pinpoint'; + constructor(private http: HttpClient) {} + getData(applicationName: string, agentId: string, threadName: string, localTraceId: number): Observable { + return this.http.get(this.requestURL, this.makeRequestOptionsArgs(applicationName, agentId, threadName, localTraceId)).pipe( + retry(3), + tap((data: any) => { + if (data.exception) { + throw data.exception.message; + } + }), + catchError(this.handleError) + ); + } + private handleError(error: HttpErrorResponse | string) { + return throwError(error['message'] || error); + } + private makeRequestOptionsArgs(applicationName: string, agentId: string, threadName: string, localTraceId: number): object { + return { + params: new HttpParams() + .set('applicationName', applicationName) + .set('agentId', agentId) + .set('threadName', threadName) + .set('localTraceId', '' + localTraceId) + }; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/thread-dump-log/index.ts b/web/src/main/webapp/v2/src/app/core/components/thread-dump-log/index.ts new file mode 100644 index 000000000000..6dda36aad50f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/thread-dump-log/index.ts @@ -0,0 +1,23 @@ +import { NgModule } from '@angular/core'; +import { SharedModule } from 'app/shared'; + +import { ThreadDumpLogContainerComponent } from './thread-dump-log-container.component'; +import { ThreadDumpLogInteractionService } from './thread-dump-log-interaction.service'; +import { ActiveThreadDumpDetailInfoDataService } from './active-thread-dump-detail-info-data.service'; + +@NgModule({ + declarations: [ + ThreadDumpLogContainerComponent + ], + imports: [ + SharedModule + ], + exports: [ + ThreadDumpLogContainerComponent + ], + providers: [ + ThreadDumpLogInteractionService, + ActiveThreadDumpDetailInfoDataService + ] +}) +export class ThreadDumpLogModule {} diff --git a/web/src/main/webapp/v2/src/app/core/components/thread-dump-log/thread-dump-log-container.component.css b/web/src/main/webapp/v2/src/app/core/components/thread-dump-log/thread-dump-log-container.component.css new file mode 100644 index 000000000000..3fb81075194e --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/thread-dump-log/thread-dump-log-container.component.css @@ -0,0 +1,9 @@ +textarea { + width: calc(100% - 40px); + height: calc(100% - 65px); + resize: none; + padding: 10px; + margin: 20px; + background-color: #FFF; + border: 1px solid #D0D7E1; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/thread-dump-log/thread-dump-log-container.component.html b/web/src/main/webapp/v2/src/app/core/components/thread-dump-log/thread-dump-log-container.component.html new file mode 100644 index 000000000000..3b9086fdc4ea --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/thread-dump-log/thread-dump-log-container.component.html @@ -0,0 +1,2 @@ + + diff --git a/web/src/main/webapp/v2/src/app/core/components/thread-dump-log/thread-dump-log-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/thread-dump-log/thread-dump-log-container.component.ts new file mode 100644 index 000000000000..ab53f065d3e1 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/thread-dump-log/thread-dump-log-container.component.ts @@ -0,0 +1,66 @@ +import { Component, OnInit, OnDestroy, ViewChild, ElementRef } from '@angular/core'; +import { Subject } from 'rxjs'; +import { takeUntil, filter } from 'rxjs/operators'; + +import { UrlPathId } from 'app/shared/models'; +import { NewUrlStateNotificationService } from 'app/shared/services'; +import { ActiveThreadDumpDetailInfoDataService } from './active-thread-dump-detail-info-data.service'; +import { ThreadDumpLogInteractionService, IParam } from './thread-dump-log-interaction.service'; + +@Component({ + selector: 'pp-thread-dump-log-container', + templateUrl: './thread-dump-log-container.component.html', + styleUrls: ['./thread-dump-log-container.component.css'], +}) +export class ThreadDumpLogContainerComponent implements OnInit, OnDestroy { + @ViewChild('logDisplay') target: ElementRef; + private unsubscribe: Subject = new Subject(); + private applicationName: string; + private agentId: string; + showLoading = false; + constructor( + private newUrlStateNotificationService: NewUrlStateNotificationService, + private activeThreadDumpDetailInfoDataService: ActiveThreadDumpDetailInfoDataService, + private threadDumpLogInteractionService: ThreadDumpLogInteractionService + ) {} + ngOnInit() { + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe), + filter((urlService: NewUrlStateNotificationService) => { + return urlService.hasValue(UrlPathId.APPLICATION, UrlPathId.AGENT_ID); + } + )).subscribe((urlService: NewUrlStateNotificationService) => { + this.applicationName = urlService.getPathValue(UrlPathId.APPLICATION).getApplicationName(); + this.agentId = urlService.getPathValue(UrlPathId.AGENT_ID); + }); + this.threadDumpLogInteractionService.onParam$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((param: IParam) => { + this.showLoading = true; + this.loadData(param.threadName, param.localTraceId); + }); + } + private loadData(threadName: string, localTraceId: number): void { + this.activeThreadDumpDetailInfoDataService.getData(this.applicationName, this.agentId, threadName, localTraceId).subscribe((data: any) => { + let msg = ''; + if (data.code === -1) { + msg = data.message; + } else { + if (data.message.threadDumpData.length > 0) { + msg = data.message.threadDumpData[0].detailMessage; + } else { + msg = 'There is no message( may be completed )'; + } + } + this.target.nativeElement.value = msg; + this.showLoading = false; + }, (errorMessage: string) => { + this.target.nativeElement.value = errorMessage; + this.showLoading = false; + }); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/thread-dump-log/thread-dump-log-interaction.service.ts b/web/src/main/webapp/v2/src/app/core/components/thread-dump-log/thread-dump-log-interaction.service.ts new file mode 100644 index 000000000000..c7563354b6df --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/thread-dump-log/thread-dump-log-interaction.service.ts @@ -0,0 +1,20 @@ +import { Injectable } from '@angular/core'; +import { Subject, Observable } from 'rxjs'; + +export interface IParam { + threadName: string; + localTraceId: number; +} + +@Injectable() +export class ThreadDumpLogInteractionService { + private outParam: Subject = new Subject(); + onParam$: Observable; + constructor() { + this.onParam$ = this.outParam.asObservable(); + } + sendParam(param: IParam): void { + this.outParam.next(param); + } +} + diff --git a/web/src/main/webapp/v2/src/app/core/components/timeline-command-group/index.ts b/web/src/main/webapp/v2/src/app/core/components/timeline-command-group/index.ts new file mode 100644 index 000000000000..6edf79987899 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timeline-command-group/index.ts @@ -0,0 +1,22 @@ + +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { TimelineCommandGroupComponent } from './timeline-command-group.component'; +import { TimelineCommandGroupContainerComponent } from './timeline-command-group-container.component'; + +@NgModule({ + declarations: [ + TimelineCommandGroupComponent, + TimelineCommandGroupContainerComponent + ], + imports: [ + CommonModule + ], + exports: [ + TimelineCommandGroupContainerComponent + ], + providers: [ + + ] +}) +export class TimelineCommandGroupModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/timeline-command-group/timeline-command-group-container.component.css b/web/src/main/webapp/v2/src/app/core/components/timeline-command-group/timeline-command-group-container.component.css new file mode 100644 index 000000000000..1620771952cf --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timeline-command-group/timeline-command-group-container.component.css @@ -0,0 +1,6 @@ +.l-command-group { + display: flex; + padding: 4px 12px; + justify-content: flex-end; + background-color: #F5F5F5; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/timeline-command-group/timeline-command-group-container.component.html b/web/src/main/webapp/v2/src/app/core/components/timeline-command-group/timeline-command-group-container.component.html new file mode 100644 index 000000000000..86a6d9bf04ee --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timeline-command-group/timeline-command-group-container.component.html @@ -0,0 +1,3 @@ +
+ +
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/timeline-command-group/timeline-command-group-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/timeline-command-group/timeline-command-group-container.component.ts new file mode 100644 index 000000000000..e912d4137a21 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timeline-command-group/timeline-command-group-container.component.ts @@ -0,0 +1,43 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import * as moment from 'moment-timezone'; +import { Subject, Observable, combineLatest } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + +import { StoreHelperService } from 'app/shared/services'; + +@Component({ + selector: 'pp-timeline-command-group-container', + templateUrl: './timeline-command-group-container.component.html', + styleUrls: ['./timeline-command-group-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class TimelineCommandGroupContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + pointingTime: string; + pointingTime$: Observable; + constructor( + private changeDetectorRef: ChangeDetectorRef, + private storeHelperService: StoreHelperService + ) {} + ngOnInit() { + this.connectStore(); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private connectStore(): void { + combineLatest( + this.storeHelperService.getDateFormat(this.unsubscribe, 0), + this.storeHelperService.getTimezone(this.unsubscribe), + this.storeHelperService.getInspectorTimelineSelectedTime(this.unsubscribe) + ).pipe( + takeUntil(this.unsubscribe) + ).subscribe((data: [string, string, number]) => { + const dateFormat = data[0]; + const timezone = data[1]; + this.pointingTime = moment(data[2]).tz(timezone).format(dateFormat); + this.changeDetectorRef.detectChanges(); + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/timeline-command-group/timeline-command-group.component.css b/web/src/main/webapp/v2/src/app/core/components/timeline-command-group/timeline-command-group.component.css new file mode 100644 index 000000000000..41c09c3f6814 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timeline-command-group/timeline-command-group.component.css @@ -0,0 +1,42 @@ +:host { + display: flex; +} +.l-current-time { + height: 28px; + display: flex; +} +.l-current-time label { + color: #FFF; + cursor: pointer; + height: 100%; + display: inline-block; + padding: 7px 10px; + font-size: 13px; + font-weight: 600; + background-color: #4A8FD2; +} +.l-current-time input { + width: 180px; + height: 100%; + border: 1px solid #4A8FD2; + display: inline-block; + font-size: 13px; + text-align: center; + background-color: #FFF; +} +.l-command-group { + display: inline-block; +} +.l-command-group:first-child { + margin-right: 30px; +} +.l-command-group:nth-child(2) { + margin-right: 10px; +} +.l-command-group .current-time { + font-size: 14px; + text-decoration: underline; +} +.l-command-group button { + border-radius: 0px; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/timeline-command-group/timeline-command-group.component.html b/web/src/main/webapp/v2/src/app/core/components/timeline-command-group/timeline-command-group.component.html new file mode 100644 index 000000000000..6621bc822c17 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timeline-command-group/timeline-command-group.component.html @@ -0,0 +1,12 @@ +
+
+ + +
+
+
+ +
+
+ +
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/timeline-command-group/timeline-command-group.component.ts b/web/src/main/webapp/v2/src/app/core/components/timeline-command-group/timeline-command-group.component.ts new file mode 100644 index 000000000000..41d00f858f2a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timeline-command-group/timeline-command-group.component.ts @@ -0,0 +1,28 @@ +import { Component, OnInit, Input } from '@angular/core'; +import { TimelineInteractionService } from 'app/core/components/timeline/timeline-interaction.service'; + +@Component({ + selector: 'pp-timeline-command-group', + templateUrl: './timeline-command-group.component.html', + styleUrls: ['./timeline-command-group.component.css'], +}) +export class TimelineCommandGroupComponent implements OnInit { + @Input() pointingTime: string; + constructor(private timelineInteractionService: TimelineInteractionService) {} + ngOnInit() {} + onClickZoomIn(): void { + this.timelineInteractionService.setZoomIn(); + } + onClickZoomOut(): void { + this.timelineInteractionService.setZoomOut(); + } + onClickPrev(): void { + this.timelineInteractionService.setPrev(); + } + onClickNext(): void { + this.timelineInteractionService.setNext(); + } + onClickNow(): void { + this.timelineInteractionService.setNow(); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/timeline/agent-inspector-timeline-container.component.css b/web/src/main/webapp/v2/src/app/core/components/timeline/agent-inspector-timeline-container.component.css new file mode 100644 index 000000000000..da48c3f40268 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timeline/agent-inspector-timeline-container.component.css @@ -0,0 +1,4 @@ +:host { + display: block; + margin: 18px 12px 0px 12px; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/timeline/agent-inspector-timeline-container.component.html b/web/src/main/webapp/v2/src/app/core/components/timeline/agent-inspector-timeline-container.component.html new file mode 100644 index 000000000000..923ae4fdedd0 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timeline/agent-inspector-timeline-container.component.html @@ -0,0 +1,13 @@ + \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/timeline/agent-inspector-timeline-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/timeline/agent-inspector-timeline-container.component.ts new file mode 100644 index 000000000000..baac808c1cbd --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timeline/agent-inspector-timeline-container.component.ts @@ -0,0 +1,149 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef, ViewChild } from '@angular/core'; +import { Subject, Observable } from 'rxjs'; +import { takeUntil, withLatestFrom } from 'rxjs/operators'; + +import { UrlPathId } from 'app/shared/models'; +import { Actions } from 'app/shared/store'; +import { StoreHelperService, NewUrlStateNotificationService, AnalyticsService, TRACKED_EVENT_LIST } from 'app/shared/services'; +import { Timeline, ITimelineEventSegment, TimelineUIEvent } from './class'; +import { TimelineComponent } from './timeline.component'; +import { TimelineInteractionService, ITimelineCommandParam, TimelineCommand } from './timeline-interaction.service'; +import { AgentTimelineDataService, IAgentTimeline, IRetrieveTime } from './agent-timeline-data.service'; + +@Component({ + selector: 'pp-agent-inspector-timeline-container', + templateUrl: './agent-inspector-timeline-container.component.html', + styleUrls: ['./agent-inspector-timeline-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class AgentInspectorTimelineContainerComponent implements OnInit, OnDestroy { + @ViewChild(TimelineComponent) + private timelineComponent: TimelineComponent; + private unsubscribe: Subject = new Subject(); + private agentId = ''; + timelineStartTime: number; + timelineEndTime: number; + selectionStartTime: number; + selectionEndTime: number; + pointingTime: number; + timelineData: IAgentTimeline; + timezone$: Observable; + dateFormat$: Observable; + + constructor( + private changeDetector: ChangeDetectorRef, + private storeHelperService: StoreHelperService, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private agentTimelineDataService: AgentTimelineDataService, + private timelineInteractionService: TimelineInteractionService, + private analyticsService: AnalyticsService, + ) {} + + ngOnInit() { + this.connectStore(); + this.timelineInteractionService.onCommand$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((param: ITimelineCommandParam) => { + switch (param.command) { + case TimelineCommand.zoomIn: + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.ZOOM_IN_TIMELINE); + this.timelineComponent.zoomIn(); + break; + case TimelineCommand.zoomOut: + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.ZOOM_OUT_TIMELINE); + this.timelineComponent.zoomOut(); + break; + case TimelineCommand.prev: + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.MOVE_TO_PREV_ON_TIMELINE); + this.timelineComponent.movePrev(); + break; + case TimelineCommand.next: + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.MOVE_TO_NEXT_ON_TIMELINE); + this.timelineComponent.moveNext(); + break; + case TimelineCommand.now: + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.MOVE_TO_NOW_ON_TIMELINE); + this.timelineComponent.moveNow(); + break; + } + this.updateTimelineData(); + }); + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe), + withLatestFrom(this.storeHelperService.getInspectorTimelineData(this.unsubscribe)) + ).subscribe(([urlService, savedTimelineData]: [NewUrlStateNotificationService, ITimelineInfo]) => { + this.agentId = this.newUrlStateNotificationService.getPathValue(UrlPathId.AGENT_ID); + const selectionStartTime = urlService.getStartTimeToNumber(); + const selectionEndTime = urlService.getEndTimeToNumber(); + const range = this.calcuRetrieveTime(selectionStartTime, selectionEndTime); + let timelineInfo: ITimelineInfo = { + range: [range.start, range.end], + selectedTime: selectionEndTime, + selectionRange: [selectionStartTime, selectionEndTime] + }; + if (urlService.isChanged(UrlPathId.APPLICATION) === false && urlService.isChanged(UrlPathId.PERIOD) === false) { + if (savedTimelineData.selectedTime !== 0) { + timelineInfo = savedTimelineData; + } + } + this.agentTimelineDataService.getData(this.agentId, { + start: timelineInfo.range[0], + end: timelineInfo.range[1] + }).subscribe((response: IAgentTimeline) => { + this.timelineStartTime = timelineInfo.range[0]; + this.timelineEndTime = timelineInfo.range[1]; + this.selectionStartTime = timelineInfo.selectionRange[0]; + this.selectionEndTime = timelineInfo.selectionRange[1]; + this.pointingTime = timelineInfo.selectedTime; + this.timelineData = response; + this.storeHelperService.dispatch(new Actions.UpdateTimelineData(timelineInfo)); + this.changeDetector.detectChanges(); + }); + }); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private connectStore(): void { + this.timezone$ = this.storeHelperService.getTimezone(this.unsubscribe); + this.dateFormat$ = this.storeHelperService.getDateFormatArray(this.unsubscribe, 0, 5, 6); + } + calcuRetrieveTime(startTime: number, endTime: number ): IRetrieveTime { + const allowedMaxRagne = Timeline.MAX_TIME_RANGE; + const timeGap = endTime - startTime; + if ( timeGap > allowedMaxRagne ) { + return { + start: endTime - allowedMaxRagne, + end: endTime + }; + } else { + const calcuStart = timeGap * 3; + return { + start: endTime - (calcuStart > allowedMaxRagne ? allowedMaxRagne : calcuStart), + end: endTime + }; + } + } + updateTimelineData(): void { + const range = this.timelineComponent.getTimelineRange(); + this.agentTimelineDataService.getData(this.agentId, { + start: range[0], + end: range[1] + }).subscribe((response: IAgentTimeline) => { + this.timelineComponent.updateData(response); + }); + } + onSelectEventStatus($eventObj: ITimelineEventSegment): void { + this.timelineInteractionService.sendSelectedEventStatus($eventObj); + } + onChangeTimelineUIEvent(event: TimelineUIEvent): void { + if (event.changedSelectedTime) { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.CHANGE_POINTING_TIME_ON_TIMELINE); + } + if (event.changedSelectionRange) { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.CHANGE_SELECTION_RANGE_ON_TIMELINE); + } + this.storeHelperService.dispatch(new Actions.UpdateTimelineData(event.data)); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/timeline/agent-timeline-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/timeline/agent-timeline-data.service.ts new file mode 100644 index 000000000000..0a6492d4392d --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timeline/agent-timeline-data.service.ts @@ -0,0 +1,42 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable } from 'rxjs'; + +export interface IAgentTimeline { + agentEventTimeline: { + timelineSegments: any + }; + agentStatusTimeline: { + includeWarning: boolean; + timelineSegments: { + endTimestamp: number; + startTimestamp: number; + value: string; + }[] + }; +} +export interface IRetrieveTime { + start: number; + end: number; +} + +@Injectable() +export class AgentTimelineDataService { + requestURL = 'getAgentStatusTimeline.pinpoint'; + constructor(private http: HttpClient) { } + getData(agentId: string, retrieveTime: IRetrieveTime): Observable { + return this.http.get(this.requestURL, this.makeRequestOptionsArgs(agentId, retrieveTime)); + } + private makeRequestOptionsArgs(agentId: string, { start: from, end: to }: IRetrieveTime): { 'params': { [key: string]: any } } { + return { + params: { + agentId, + from, + to, + exclude: 10199 + // DESC: + // [exclude] 요청에 대한 응답에서 제외하고 싶은 eventCode를 넣어줌. + } + }; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/timeline/application-inspector-timeline-container.component.css b/web/src/main/webapp/v2/src/app/core/components/timeline/application-inspector-timeline-container.component.css new file mode 100644 index 000000000000..da48c3f40268 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timeline/application-inspector-timeline-container.component.css @@ -0,0 +1,4 @@ +:host { + display: block; + margin: 18px 12px 0px 12px; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/timeline/application-inspector-timeline-container.component.html b/web/src/main/webapp/v2/src/app/core/components/timeline/application-inspector-timeline-container.component.html new file mode 100644 index 000000000000..923ae4fdedd0 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timeline/application-inspector-timeline-container.component.html @@ -0,0 +1,13 @@ + \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/timeline/application-inspector-timeline-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/timeline/application-inspector-timeline-container.component.ts new file mode 100644 index 000000000000..e639536a7dc4 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timeline/application-inspector-timeline-container.component.ts @@ -0,0 +1,152 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef, ViewChild } from '@angular/core'; +import { Subject, Observable } from 'rxjs'; +import { takeUntil, withLatestFrom } from 'rxjs/operators'; + +import { UrlPathId } from 'app/shared/models'; +import { Actions } from 'app/shared/store'; +import { StoreHelperService, NewUrlStateNotificationService, AnalyticsService, TRACKED_EVENT_LIST } from 'app/shared/services'; +import { Timeline, ITimelineEventSegment, TimelineUIEvent } from './class'; +import { TimelineComponent } from './timeline.component'; +import { TimelineInteractionService, ITimelineCommandParam, TimelineCommand } from './timeline-interaction.service'; +import { IAgentTimeline, IRetrieveTime } from './agent-timeline-data.service'; + +@Component({ + selector: 'pp-application-inspector-timeline-container', + templateUrl: './application-inspector-timeline-container.component.html', + styleUrls: ['./application-inspector-timeline-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ApplicationInspectorTimelineContainerComponent implements OnInit, OnDestroy { + @ViewChild(TimelineComponent) + private timelineComponent: TimelineComponent; + private unsubscribe: Subject = new Subject(); + timelineStartTime: number; + timelineEndTime: number; + selectionStartTime: number; + selectionEndTime: number; + pointingTime: number; + timelineData: IAgentTimeline; + timezone$: Observable; + dateFormat$: Observable; + + constructor( + private changeDetector: ChangeDetectorRef, + private storeHelperService: StoreHelperService, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private timelineInteractionService: TimelineInteractionService, + private analyticsService: AnalyticsService, + ) {} + + ngOnInit() { + this.connectStore(); + this.timelineInteractionService.onCommand$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((param: ITimelineCommandParam) => { + switch (param.command) { + case TimelineCommand.zoomIn: + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.ZOOM_IN_TIMELINE); + this.timelineComponent.zoomIn(); + break; + case TimelineCommand.zoomOut: + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.ZOOM_OUT_TIMELINE); + this.timelineComponent.zoomOut(); + break; + case TimelineCommand.prev: + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.MOVE_TO_PREV_ON_TIMELINE); + this.timelineComponent.movePrev(); + break; + case TimelineCommand.next: + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.MOVE_TO_NEXT_ON_TIMELINE); + this.timelineComponent.moveNext(); + break; + case TimelineCommand.now: + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.MOVE_TO_NOW_ON_TIMELINE); + this.timelineComponent.moveNow(); + break; + } + }); + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe), + withLatestFrom(this.storeHelperService.getInspectorTimelineData(this.unsubscribe)), + ).subscribe(([urlService, savedTimelineData]: [NewUrlStateNotificationService, ITimelineInfo]) => { + /* + if ( application.changed or period.changed ) { + url 값 사용 + } else { + store에 저장된 값 있나? + - 있다면 사용 + - 없다면 URL 값 사용 + } + */ + const selectionStartTime = urlService.getStartTimeToNumber(); + const selectionEndTime = urlService.getEndTimeToNumber(); + const range = this.calcuRetrieveTime(selectionStartTime, selectionEndTime); + let timelineInfo: ITimelineInfo = { + range: [range.start, range.end], + selectedTime: selectionEndTime, + selectionRange: [selectionStartTime, selectionEndTime] + }; + if (urlService.isChanged(UrlPathId.APPLICATION) === false && urlService.isChanged(UrlPathId.PERIOD) === false) { + if (savedTimelineData.selectedTime !== 0) { + timelineInfo = savedTimelineData; + } + } + this.timelineStartTime = timelineInfo.range[0]; + this.timelineEndTime = timelineInfo.range[1]; + this.selectionStartTime = timelineInfo.selectionRange[0]; + this.selectionEndTime = timelineInfo.selectionRange[1]; + this.pointingTime = timelineInfo.selectedTime; + this.timelineData = { + 'agentStatusTimeline': { + 'timelineSegments': [ + { + 'startTimestamp': timelineInfo.range[0], + 'endTimestamp': timelineInfo.range[1], + 'value': 'EMPTY' + } + ], + 'includeWarning': false + }, + 'agentEventTimeline': { + 'timelineSegments': [] + } + }; + this.storeHelperService.dispatch(new Actions.UpdateTimelineData(timelineInfo)); + this.changeDetector.detectChanges(); + }); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private connectStore(): void { + this.timezone$ = this.storeHelperService.getTimezone(this.unsubscribe); + this.dateFormat$ = this.storeHelperService.getDateFormatArray(this.unsubscribe, 0, 5, 6); + } + calcuRetrieveTime(startTime: number, endTime: number ): IRetrieveTime { + const allowedMaxRagne = Timeline.MAX_TIME_RANGE; + const timeGap = endTime - startTime; + if ( timeGap > allowedMaxRagne ) { + return { + start: endTime - allowedMaxRagne, + end: endTime + }; + } else { + const calcuStart = timeGap * 3; + return { + start: endTime - (calcuStart > allowedMaxRagne ? allowedMaxRagne : calcuStart), + end: endTime + }; + } + } + onSelectEventStatus($eventObj: ITimelineEventSegment): void {} + onChangeTimelineUIEvent(event: TimelineUIEvent): void { + if (event.changedSelectedTime) { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.CHANGE_POINTING_TIME_ON_TIMELINE); + } + if (event.changedSelectionRange) { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.CHANGE_SELECTION_RANGE_ON_TIMELINE); + } + this.storeHelperService.dispatch(new Actions.UpdateTimelineData(event.data)); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/timeline/class/index.ts b/web/src/main/webapp/v2/src/app/core/components/timeline/class/index.ts new file mode 100644 index 000000000000..abd5e75590c0 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timeline/class/index.ts @@ -0,0 +1,13 @@ +export * from './timeline-background.class'; +export * from './timeline-data.class'; +export * from './timeline-events.class'; +export * from './timeline-handler.class'; +export * from './timeline-loading-indicator.class'; +export * from './timeline-position-manager.class'; +export * from './timeline-selection-manager.class'; +export * from './timeline-selection-point.class'; +export * from './timeline-signboard.class'; +export * from './timeline-state-line.class'; +export * from './timeline-x-axis.class'; +export * from './timeline-ui-event'; +export * from './timeline.class'; diff --git a/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-background.class.ts b/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-background.class.ts new file mode 100644 index 000000000000..e2faaa846b96 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-background.class.ts @@ -0,0 +1,17 @@ +declare var Snap: any; +declare var mina: any; + +export class TimelineBackground { + private backgroundRect: any; + constructor(private snap: any, private group: any, private options: { [key: string]: number }) { + this.addElements(); + } + addElements(): void { + this.backgroundRect = this.snap.rect(this.options.left, this.options.top, this.options.width, this.options.height); + this.group.add(this.backgroundRect); + } + reset(width: number): void { + this.backgroundRect.animate({ 'width': width }, this.options.duration, mina.easein); + } + destroy(): void {} +} diff --git a/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-data.class.ts b/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-data.class.ts new file mode 100644 index 000000000000..6c444b9cc21d --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-data.class.ts @@ -0,0 +1,88 @@ +import { BehaviorSubject } from 'rxjs'; + +export interface ITimelineData { + agentEventTimeline: IAgentEventTimeline; + agentStatusTimeline: IAgentStatusTimeline; +} +export interface IAgentEventTimeline { + timelineSegments: ITimelineEventSegment[]; +} +export interface ITimelineEventSegment { + startTimestamp: number; + endTimestamp: number; + value: { + totalCount: number; + typeCounts: ITimelineEventSegmentTypeCount[]; + }; +} +export interface ITimelineEventSegmentTypeCount { + code: number; + desc: string; + count: number; +} +export interface IAgentStatusTimeline { + includeWarning: boolean; + timelineSegments: ITimelineStatusSegment[]; +} +export interface ITimelineStatusSegment { + endTimestamp: number; + startTimestamp: number; + value: string; +} + +export class TimelineData { + aStatusRawData: ITimelineStatusSegment[]; + oStatusRawHash: { [key: string]: ITimelineStatusSegment }; + aEventRawData: ITimelineEventSegment[]; + + onChangeStatusData$: BehaviorSubject = new BehaviorSubject(null); + onChangeEventData$: BehaviorSubject = new BehaviorSubject(null); + constructor(aRawData: ITimelineData) { + this.initData(aRawData); + this.onChangeStatusData$.next(this.aStatusRawData); + this.onChangeEventData$.next(this.aEventRawData); + } + initData(aRawData: ITimelineData): void { + this.initStatusData(aRawData.agentStatusTimeline); + this.initEventData(aRawData.agentEventTimeline); + } + initStatusData(oStatusRawData: IAgentStatusTimeline): void { + this.aStatusRawData = oStatusRawData.timelineSegments || []; + this.oStatusRawHash = {}; + this.aStatusRawData.forEach((segment: ITimelineStatusSegment) => { + this.oStatusRawHash[this.makeID(segment)] = segment; + }); + } + initEventData(oEventRawData: IAgentEventTimeline): void { + this.aEventRawData = oEventRawData.timelineSegments || []; + } + makeID(segment: ITimelineStatusSegment): string { + return segment.endTimestamp + ''; + } + eventCount(): number { + return this.aEventRawData.length; + } + statusCount(): number { + return this.aStatusRawData.length; + } + getDataByIndex(index: number): ITimelineStatusSegment { + return this.aStatusRawData[index]; + } + getDataByKey(key: string): ITimelineStatusSegment { + return this.oStatusRawHash[key]; + } + getEventDataByIndex(index: number): ITimelineEventSegment { + return this.aEventRawData[index]; + } + emptyData(): void { + this.aStatusRawData = []; + this.oStatusRawHash = {}; + this.aEventRawData = []; + } + addData(oNewData: ITimelineData): void { + this.initData(oNewData); + this.onChangeStatusData$.next(this.aStatusRawData); + this.onChangeEventData$.next(this.aEventRawData); + } + destroy(): void {} +} diff --git a/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-events.class.ts b/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-events.class.ts new file mode 100644 index 000000000000..11b5aa2a564b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-events.class.ts @@ -0,0 +1,127 @@ +declare var Snap: any; +import { Subject } from 'rxjs'; +import { ITimelineEventSegment } from './timeline-data.class'; +import { TimelinePositionManager } from './timeline-position-manager.class'; + +export class TimelineEvents { + private aEventGroupElement: any[] = []; + private aEventStatusData: ITimelineEventSegment[]; + clickEvent$: Subject = new Subject(); + constructor(private snap: any, private group: any, private options: { [key: string]: any }, private oPositionManager: TimelinePositionManager ) { + this.initOptions(); + this.addEvents(); + } + initOptions() { + const options = { + 'y': 4, + 'barLength': 4, + 'gapBarNCircle': 2, + 'circleRadius': 8, + 'filter': this.snap.filter( Snap.filter.shadow(1, 1, 1, '#000', 0.3)) + }; + Object.keys(options).forEach((key) => { + this.options[key] = options[key]; + }); + } + addEvents() { + this.group.click((event: any, x: number, y: number) => { + const targetElement = this.getElement(event, 'g'); + const dataIndex = Math.floor(targetElement.getAttribute('data-id')); + // const dataTime = targetElement.getAttribute('data-time'); + this.clickEvent$.next(this.aEventStatusData[dataIndex]); + }); + } + getElement(event: any, elementName: string): any | null { + let target = event.target; + while (target) { + if ( target.tagName.toLowerCase() === elementName ) { + break; + } + target = target.parentElement; + } + return target; + } + updateData(data: ITimelineEventSegment[]): void { + this.aEventStatusData = data; + this.emptyData(); + this.reset(); + } + emptyData(): void { + this.aEventGroupElement.forEach((g: any) => { + g.attr('display', 'none'); + }); + } + reset(): void { + const oldLen = this.aEventGroupElement.length; + const newLen = this.aEventStatusData.length; + let index; + + if ( oldLen === newLen ) { + for ( index = 0 ; index < newLen ; index++ ) { + this.reposition(this.aEventGroupElement[index], index); + } + } else if ( oldLen > newLen ) { + for ( index = newLen ; index < oldLen ; index++ ) { + this.aEventGroupElement[index].attr('display', 'none'); + } + for ( index = 0 ; index < newLen ; index++ ) { + this.reposition(this.aEventGroupElement[index], index); + } + } else { // oldLen < newLen + for ( index = 0 ; index < oldLen ; index++ ) { + this.reposition(this.aEventGroupElement[index], index); + } + for ( index = oldLen ; index < newLen ; index++ ) { + this.addEventElement(this.aEventStatusData[index], index); + } + } + } + reposition(elEventGroup: any, index: number): void { + const oEvent = this.aEventStatusData[index]; + const time = oEvent.startTimestamp + (oEvent.endTimestamp - oEvent.startTimestamp) / 2; + const x = this.oPositionManager.getPositionByTime(time); + const oTextInfo = this.getEventTextInfo(oEvent.value.totalCount); + elEventGroup[2].attr({ + x: oTextInfo.x, + y: oTextInfo.y, + text: oTextInfo.text + }); + elEventGroup.attr('display', 'block'); + elEventGroup.animate({ + 'transform': `translate(${x}, 0)` + }, this.options.duration); + } + addEventElement(oEvent: ITimelineEventSegment, index: number): void { + this.group.add(this.makeElement(oEvent, index)); + } + makeElement(oEvent: ITimelineEventSegment, index: number): any { + const time = oEvent.startTimestamp + (oEvent.endTimestamp - oEvent.startTimestamp) / 2; + const oTextInfo = this.getEventTextInfo(oEvent.value.totalCount); + const elEventGroup = this.group.g().attr({ + 'data-id': index, + 'data-time': time, + 'transform': `translate(${this.oPositionManager.getPositionByTime(time)}, 0)` + }); + elEventGroup.add( + this.snap.line(0, this.options.y, 0, this.options.y + this.options.barLength), + this.snap.circle(0, this.options.y + this.options.circleRadius + this.options.gapBarNCircle + this.options.barLength, this.options.circleRadius).attr({ + 'class': 'event', + 'filter': this.options.filter, + 'data-time': time + }), + this.snap.text(oTextInfo.x, oTextInfo.y, oTextInfo.text).attr({ + 'class': 'event' + }) + ); + this.aEventGroupElement.push(elEventGroup); + return elEventGroup; + } + getEventTextInfo(totalCount: number): { x: number, y: number, text: string } { + return { + x: totalCount < 10 ? -(this.options.circleRadius / 3 ) : -(this.options.circleRadius / 4 ) * 3, + y: this.options.y + this.options.circleRadius + (this.options.circleRadius / 2) + this.options.gapBarNCircle + this.options.barLength, + text: totalCount >= 100 ? '...' : totalCount + '' + }; + } + destroy(): void {} +} diff --git a/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-handler.class.ts b/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-handler.class.ts new file mode 100644 index 000000000000..baba9ea5031f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-handler.class.ts @@ -0,0 +1,87 @@ +declare var Snap: any; +declare var mina: any; +import { Subject } from 'rxjs'; + +export class TimelineHandler { + static HANDLER_IMAGE_WIDTH = 30; + static HANDLER_IMAGE_HEIGHT = 18; + + previousX: number; + handlerGrip: any; + handlerGroup: any; + onDragStart$: Subject = new Subject(); + onDragging$: Subject = new Subject(); + onDragEnd$: Subject<{ dragged: boolean, x: number }> = new Subject(); + + constructor(private snap: any, private group: any, private options: { [key: string]: any }) { + this.previousX = options.x; + this.addElements(); + this.setX(options.x); + this.addEvent(); + } + addElements(): void { + this.handlerGrip = this.snap.circle(0, 3, 5).attr({ + 'fill': '#777af9', + 'cursor': 'pointer', + 'stroke': '#4E50C8', + 'stroke-width': '3px' + }); + this.handlerGroup = this.group.g(); + this.handlerGroup.add( + this.snap.line( 0, 0, 0, this.options.height ), + this.snap.circle(0, 3, 7).attr({ + 'fill': '#000', + 'filter': Snap.filter.shadow(0, 0, 2, '#000', .5) + }), + this.handlerGrip + ); + } + addEvent(): void { + let lastX = -1; + this.handlerGrip.click((event: any) => { + event.stopPropagation(); + }); + this.handlerGrip.mousedown((event: any) => { + event.stopPropagation(); + }); + this.handlerGrip.drag((dx: number, dy: number, x: number, y: number, event: any) => { + const newX = x - this.options.margin; + if ( this.isInRestrictionZone(newX) === false ) { + return; + } + this.handlerGroup.attr({ + 'transform': `translate(${newX}, 0)` + }); + lastX = newX; + this.onDragging$.next(newX); + }, (x: number, y: number, event: any) => { + event.stopPropagation(); + this.onDragStart$.next(x - this.options.margin); + }, (event: any) => { + event.stopPropagation(); + if ( this.previousX !== lastX && lastX !== -1 ) { + this.onDragEnd$.next({ dragged: true, x: lastX }); + this.previousX = lastX; + } else { + this.onDragEnd$.next({ dragged: false, x: -1 }); + } + }); + } + setX(x: number): void { + this.handlerGroup.animate({ + 'transform': `translate(${x}, 0)` + }, this.options.duration, mina.easeout); + } + isInRestrictionZone(x: number): boolean { + return (x <= this.options.zone[0] || x >= this.options.zone[1]) ? false : true; + } + setZone(start: number, end: number): void { + this.options.zone = [start, end]; + } + setPositionAndZone(x: number, aZone: number[]): void { + this.setX(x); + this.onDragging$.next(x); + this.setZone(aZone[0], aZone[1]); + } + destroy(): void {} +} diff --git a/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-loading-indicator.class.ts b/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-loading-indicator.class.ts new file mode 100644 index 000000000000..101a18fa3a23 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-loading-indicator.class.ts @@ -0,0 +1,52 @@ +declare var Snap: any; +declare var mina: any; + +export class TimelineLoadingIndicator { + private clockWiseRect: any; + private antiClockWiseRect: any; + private bRun = false; + + constructor(private snap: any, private group: any, private options: { [key: string]: number }) { + this.addElements(); + this.show(); + } + addElements(): void { + const centerPosition = this.getCenterPosition(this.options.width, this.options.height, this.options.size); + const backgroundRect = this.snap.rect(0, 0, this.options.width, this.options.height); + + this.clockWiseRect = this.snap.rect(centerPosition.x, centerPosition.y, this.options.size, this.options.size).attr({ + 'stroke': 'rgba(197, 197, 197, .9)' + }); + this.antiClockWiseRect = this.snap.rect(centerPosition.x, centerPosition.y, this.options.size, this.options.size).attr({ + 'stroke': 'rgba(239, 246, 105)' + }); + this.group.add(backgroundRect, this.clockWiseRect, this.antiClockWiseRect); + } + getCenterPosition(width: number, height: number, size: number): {x: number, y: number} { + const halfSize = size / 2; + return { + x: width / 2 - halfSize, + y: height / 2 - halfSize + }; + } + show() { + this.group.attr('display', 'block'); + this.bRun = true; + this.animate( this.clockWiseRect, 0, 360, mina.easeout ); + this.animate( this.antiClockWiseRect, 45, -315, mina.easein ); + } + animate(ele, from, to, fnEase) { + Snap.animate(from, to, (val) => { + ele.attr('transform', 'rotate(' + val + 'deg)'); + }, this.options.duration, fnEase, () => { + if ( this.bRun === true ) { + this.animate( ele, to, from, fnEase ); + } + }); + } + hide() { + this.group.attr('display', 'none'); + this.bRun = false; + } + destroy(): void {} +} diff --git a/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-position-manager.class.ts b/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-position-manager.class.ts new file mode 100644 index 000000000000..34f1db70fb6a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-position-manager.class.ts @@ -0,0 +1,254 @@ +import * as moment from 'moment-timezone'; + +export class TimelinePositionManager { + static X_AXIS_TICKS = 5; + + width: number; + startTime: number; + endTime: number; + timePerPoint: number; + xAxisTicks: number; + pointingTime: number; + pointingPosition: number; + minTimeRange: number; + maxSelectionTimeRange; + aSelectionTimeRange: number[] = []; + aSelectionPosition: number[] = []; + + constructor(private options: any) { + this.width = options.width; + this.minTimeRange = options.minTimeRange; + this.maxSelectionTimeRange = options.maxSelectionTimeRange; + + this.initInnerVar(); + this.setTimelineRange(options.timelineRange[0], options.timelineRange[1]); + this.initSelectionTimeRange(options.selectionTimeRange || []); + this.resetSelectionByTime(); + this.xAxisTicks = options.xAxisTicks || TimelinePositionManager.X_AXIS_TICKS; + this.setPointingTime( options.pointingTime ); + } + initInnerVar(): void { + this.aSelectionTimeRange = []; + this.aSelectionPosition = []; + } + setTimelineRange(start: number, end: number): void { + this.startTime = start; + this.endTime = end; + this.calcuTimePerPoint(); + } + initSelectionTimeRange(aTime: number[]): void { + if ( aTime.length !== 2 ) { + aTime = [ this.startTime, this.endTime ]; + } + if ( aTime[1] - aTime[0] > this.maxSelectionTimeRange ) { + aTime[0] = aTime[1] - this.maxSelectionTimeRange; + } + this.setSelectionTimeRange(aTime[0], aTime[1]); + } + resetSelectionByTime(): void { + this.setSelectionPosition(this.getPositionByTime(this.aSelectionTimeRange[0]), this.getPositionByTime(this.aSelectionTimeRange[1])); + } + + calcuTimePerPoint(): void { + this.timePerPoint = ( this.endTime - this.startTime ) / this.width; + } + setSelectionTimeRange(start: number, end: number): void { + this.aSelectionTimeRange[0] = start === null ? this.aSelectionTimeRange[0] : start; + this.aSelectionTimeRange[1] = end === null ? this.aSelectionTimeRange[1] : end; + } + setSelectionPosition(start: number, end: number): void { + this.aSelectionPosition[0] = start === null ? this.aSelectionPosition[0] : start; + this.aSelectionPosition[1] = end === null ? this.aSelectionPosition[1] : end; + } + getPositionByTime(time: number): number { + return Math.floor((time - this.startTime) / this.timePerPoint); + } + setPointingTime(time: number ): void { + this.pointingTime = time; + this.pointingPosition = this.getPositionByTime(time); + } + isInMaxSelectionTimeRange(start: number, end: number): boolean { + return (end - start) <= this.maxSelectionTimeRange; + } + getNewSelectionTimeRangeFromStart(start: number): number[] { + return [start, start + this.maxSelectionTimeRange]; + } + getNewSelectionTimeRangeFromEnd(end: number): number[] { + return [end - this.maxSelectionTimeRange, end]; + } + isBeforeSliderStartTime(time: number): boolean { + return time < this.startTime; + } + isAfterSliderEndTime(time: number): boolean { + return time > this.endTime; + } + getTimelineEndTime(): number { + return this.endTime; + } + setWidth(width: number): void { + this.width = width; + this.calcuTimePerPoint(); + this.reset(); + } + getTimelineEndPosition(): number { + return this.width; + } + getTimelineStartTimeStr(): string { + return this.formatDate(new Date(this.startTime)); + } + getTimelineEndTimeStr(): string { + return this.formatDate( new Date(this.endTime) ); + } + getFullTimeStr(x: number): string { + return this.formatDate( new Date(this.getTimeFromPosition(x)) ); + } + formatDate(d: Date): string { + return moment(d).tz(this.options.timezone).format(this.options.dateFormat[0]); + } + isInSelectionZone(): boolean { + return (this.pointingTime >= this.aSelectionTimeRange[0] && this.pointingTime <= this.aSelectionTimeRange[1] ) ? true : false; + } + isInTimelineRange(time: number): boolean { + return (time >= this.startTime && time <= this.endTime ) ? true : false; + } + getTimelineRange(): number[] { + return [this.startTime, this.endTime]; + } + getSelectionTimeRange(): number[] { + return [this.aSelectionTimeRange[0], this.aSelectionTimeRange[1]]; + } + getSelectionPosition(): number[] { + return [this.aSelectionPosition[0], this.aSelectionPosition[1]]; + } + getPointingPosition(): number { + return this.pointingPosition; + } + getPointingTime(): number { + return this.pointingTime; + } + getPrevTime(): number { + const gap = this.aSelectionTimeRange[1] - this.aSelectionTimeRange[0]; + return this.aSelectionTimeRange[0] - Math.floor(gap / 2) - 1; + } + getNextTime(): number { + const gap = this.aSelectionTimeRange[1] - this.aSelectionTimeRange[0]; + const nextTime = this.aSelectionTimeRange[1] + Math.floor(gap / 2) + 1; + if ( nextTime > Date.now() ) { + return Date.now(); + } else { + return nextTime; + } + } + getTimeFromPosition(x: number): number { + return this.startTime + Math.floor(this.timePerPoint * x); + } + calcuSelectionZone(): void { + const currentSelectionSize = this.aSelectionTimeRange[1] - this.aSelectionTimeRange[0]; + const currentSelectionHalfSize = Math.round( currentSelectionSize / 2 ); + let selectionStart = this.pointingTime - currentSelectionHalfSize; + let selectionEnd = this.pointingTime + currentSelectionHalfSize; + if ( selectionStart < this.startTime ) { + selectionEnd = selectionStart + currentSelectionSize; + selectionStart = this.startTime; + } else if ( selectionEnd > this.endTime ) { + selectionStart = this.endTime - currentSelectionSize; + selectionEnd = this.endTime; + } + this.setSelectionTimeRange(selectionStart, selectionEnd); + this.setSelectionPosition(this.getPositionByTime(selectionStart), this.getPositionByTime(selectionEnd)); + } + getXAxisPositionData(): any { + const max = TimelinePositionManager.X_AXIS_TICKS + 1; + const space = Math.floor(this.width / max); + const a = []; + for ( let i = 0 ; i < max ; i++ ) { + if ( i === 0 ) { + continue; + } + const x = i * space; + a.push( { + x: x, + time: this.getTimeStr(x) + }); + } + return a; + } + getTimeStr(x: number): string { + const timeX = Math.floor( x * this.timePerPoint ) + this.startTime; + return moment(new Date(timeX)).tz(this.options.timezone).format(this.options.dateFormat[1]) + ' ' + moment(new Date(timeX)).tz(this.options.timezone).format(this.options.dateFormat[2]); + } + setSelectionStartTime(time: number): void { + this.setSelectionTimeRange(time, null); + this.setSelectionPosition(this.getPositionByTime(time), null); + } + setSelectionEndTime(time: number): void { + this.setSelectionTimeRange( null, time ); + this.setSelectionPosition( null, this.getPositionByTime( time ) ); + } + setSelectionStartPosition(x: number): void { + this.setSelectionTimeRange(this.getTimeFromPosition(x), null); + this.setSelectionPosition(x, null); + } + setSelectionEndPosition(x: number): void { + this.setSelectionTimeRange(null, this.getTimeFromPosition(x)); + this.setSelectionPosition(null, x); + } + zoomIn(): void { + // 선택 영역 중심으로 확대 + if ( this.startTime === this.aSelectionTimeRange[0] && this.endTime === this.aSelectionTimeRange[1] ) { + return; + } + const quarterTimeline = Math.floor((this.endTime - this.startTime) / 4); + let tempStartTime = this.pointingTime - quarterTimeline; + let tempEndTime = this.pointingTime + quarterTimeline; + + if ( tempEndTime - tempStartTime < this.minTimeRange ) { + const minHalf = Math.floor(this.minTimeRange / 2); + tempStartTime = this.pointingTime - minHalf; + tempEndTime = this.pointingTime + minHalf; + } + let gap; + if ( this.aSelectionTimeRange[0] < tempStartTime ) { + gap = tempStartTime - this.aSelectionTimeRange[0]; + const tempSelectionEndTime = (this.aSelectionTimeRange[1] + gap > tempEndTime) ? tempEndTime : this.aSelectionTimeRange[1] + gap; + this.setSelectionTimeRange(tempStartTime, tempSelectionEndTime); + } + if ( this.aSelectionTimeRange[1] > tempEndTime ) { + gap = this.aSelectionTimeRange[1] - tempEndTime; + const tempSelectionStartTime = (this.aSelectionTimeRange[0] - gap < tempStartTime) ? tempStartTime : this.aSelectionTimeRange[0] - gap; + this.setSelectionTimeRange(tempSelectionStartTime, tempEndTime); + } + this.setTimelineRange(tempStartTime, tempEndTime); + this.reset(); + } + zoomOut(): void { + const one = this.endTime - this.startTime; + const tempCenterTime = this.aSelectionTimeRange[0] + Math.floor((this.aSelectionTimeRange[1] - this.aSelectionTimeRange[0] ) / 2); + this.setTimelineRange(tempCenterTime - one, tempCenterTime + one); + this.reset(); + } + resetBySelectTime(time: number, bIsNow: boolean): void { + const halfSliderTimeRange = Math.floor((this.endTime - this.startTime) / 2); + const halfSelectionTimeRange = Math.floor((this.aSelectionTimeRange[1] - this.aSelectionTimeRange[0] ) / 2); + if ( bIsNow === true ) { + this.setTimelineRange(time - halfSliderTimeRange * 2, time); + this.setSelectionTimeRange(time - halfSelectionTimeRange * 2, time); + } else { + this.setTimelineRange(time - halfSliderTimeRange, time + halfSliderTimeRange); + this.setSelectionTimeRange(time - halfSelectionTimeRange, time + halfSelectionTimeRange); + } + this.resetSelectionByTime(); + this.setPointingTime(time); + } + reset(): void { + this.setPointingTime(this.pointingTime); + this.resetSelectionByTime(); + } + setTimezone(timezone: string): void { + this.options.timezone = timezone; + } + setDateFormat(dateFormat: string[]): void { + this.options.dateFormat = dateFormat; + } + destroy(): void {} +} diff --git a/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-selection-manager.class.ts b/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-selection-manager.class.ts new file mode 100644 index 000000000000..de12c0f0ac63 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-selection-manager.class.ts @@ -0,0 +1,179 @@ +import { Subject, Subscription } from 'rxjs'; +import { TimelinePositionManager } from './timeline-position-manager.class'; +import { TimelineSelectionZone } from './timeline-selection-zone.class'; +import { TimelineSelectionPoint } from './timeline-selection-point.class'; +import { TimelineHandler } from './timeline-handler.class'; +import { TimelineSignboard } from './timeline-signboard.class'; +import { TimelineUIEvent } from './timeline-ui-event'; + +export class TimelineSelectionManager { + + unsubscribe: Subscription; + onChangeTimelineUIEvent$: Subject = new Subject(); + onReset$: Subject = new Subject(); + constructor( + private options: { [key: string]: any }, + private oSelectionZone: TimelineSelectionZone, + private oSelectionPoint: TimelineSelectionPoint, + private oLeftHandler: TimelineHandler, + private oRightHandler: TimelineHandler, + private oLeftTimeSignboard: TimelineSignboard, + private oRightTimeSignboard: TimelineSignboard, + private oPositionManager: TimelinePositionManager + ) { + this.initClass(); + } + initClass(): void { + this.unsubscribe = this.oLeftHandler.onDragStart$.subscribe((x: number) => { + this.oLeftTimeSignboard.onDragStart(x); + }); + this.unsubscribe.add(this.oLeftHandler.onDragging$.subscribe((x: number) => { + this.oSelectionZone.onDragXStart(x); + this.oLeftTimeSignboard.onDrag(x); + })); + this.unsubscribe.add(this.oLeftHandler.onDragEnd$.subscribe((res: { dragged: boolean, x: number }) => { + this.oLeftTimeSignboard.onDragEnd(); + if (res.dragged) { + this.movedLeftHandler(res.x); + } + })); + + this.unsubscribe.add(this.oRightHandler.onDragStart$.subscribe((x: number) => { + this.oRightTimeSignboard.onDragStart(x); + })); + this.unsubscribe.add(this.oRightHandler.onDragging$.subscribe((x: number) => { + this.oSelectionZone.onDragXEnd(x); + this.oRightTimeSignboard.onDrag(x); + })); + this.unsubscribe.add(this.oRightHandler.onDragEnd$.subscribe((res: { dragged: boolean, x: number }) => { + this.oRightTimeSignboard.onDragEnd(); + if (res.dragged) { + this.movedRightHandler(res.x); + } + })); + } + movedLeftHandler(x: number): void { + let selectedTime = this.oPositionManager.getPointingTime(); + const event = new TimelineUIEvent(); + const aCurrentSelectionTimeRange = this.oPositionManager.getSelectionTimeRange(); + const newLeftTime = this.oPositionManager.getTimeFromPosition(x); + if ( this.oPositionManager.isInMaxSelectionTimeRange(newLeftTime, aCurrentSelectionTimeRange[1])) { + this.oRightHandler.setZone(x, this.oPositionManager.getTimelineEndPosition()); + this.oPositionManager.setSelectionStartPosition(x); + + if ( this.oPositionManager.isInSelectionZone() === false ) { + this.oPositionManager.setPointingTime(newLeftTime); + this.oSelectionPoint.setPointing(x); + selectedTime = newLeftTime; + event.setOnChangedSelectedTime(); + } + } else { + const aNewSelectionTimeSeries = this.oPositionManager.getNewSelectionTimeRangeFromStart(newLeftTime); + const newRightX = this.oPositionManager.getPositionByTime(aNewSelectionTimeSeries[1]); + this.oRightHandler.setZone(x, this.oPositionManager.getTimelineEndPosition()); + this.oPositionManager.setSelectionStartPosition(x); + this.oRightHandler.setX(newRightX); + this.oRightTimeSignboard.onDrag(newRightX); + this.oLeftHandler.setZone(0, newRightX); + this.oPositionManager.setSelectionEndPosition(newRightX); + + if ( this.oPositionManager.isInSelectionZone() === false ) { + this.oPositionManager.setPointingTime(aNewSelectionTimeSeries[1]); + this.oSelectionPoint.setPointing(newRightX); + selectedTime = aNewSelectionTimeSeries[1]; + event.setOnChangedSelectedTime(); + } + } + this.oSelectionZone.redraw(); + event.setOnChangedSelectionRange(); + event.setData( + selectedTime, + this.oPositionManager.getSelectionTimeRange(), + this.oPositionManager.getTimelineRange() + ); + this.onChangeTimelineUIEvent$.next(event); + } + movedRightHandler(x: number): void { + let selectedTime = this.oPositionManager.getPointingTime(); + const event = new TimelineUIEvent(); + const aCurrentSelectionTimeRange = this.oPositionManager.getSelectionTimeRange(); + const newRightTime = this.oPositionManager.getTimeFromPosition(x); + if ( this.oPositionManager.isInMaxSelectionTimeRange(aCurrentSelectionTimeRange[0], newRightTime) ) { + this.oLeftHandler.setZone(0, x); + this.oPositionManager.setSelectionEndPosition(x); + + if ( this.oPositionManager.isInSelectionZone() === false ) { + this.oPositionManager.setPointingTime(newRightTime); + this.oSelectionPoint.setPointing(x); + selectedTime = newRightTime; + event.setOnChangedSelectedTime(); + } + } else { + const aNewSelectionTimeSeries = this.oPositionManager.getNewSelectionTimeRangeFromEnd(newRightTime); + const newLeftX = this.oPositionManager.getPositionByTime(aNewSelectionTimeSeries[0]); + this.oLeftHandler.setZone(0, x); + this.oPositionManager.setSelectionEndPosition(x); + this.oLeftHandler.setX(newLeftX); + this.oLeftTimeSignboard.onDrag(newLeftX); + this.oRightHandler.setZone(newLeftX, this.oPositionManager.getTimelineEndPosition()); + this.oPositionManager.setSelectionStartPosition(newLeftX); + + if ( this.oPositionManager.isInSelectionZone() === false ) { + this.oPositionManager.setPointingTime(aNewSelectionTimeSeries[0]); + this.oSelectionPoint.setPointing(newLeftX); + selectedTime = aNewSelectionTimeSeries[0]; + event.setOnChangedSelectedTime(); + } + } + this.oSelectionZone.redraw(); + event.setOnChangedSelectionRange(); + event.setData( + selectedTime, + this.oPositionManager.getSelectionTimeRange(), + this.oPositionManager.getTimelineRange() + ); + this.onChangeTimelineUIEvent$.next(event); + } + moveSelectionAndHandler(): void { + const aNewSelectionZone = this.oPositionManager.getSelectionPosition(); + this.oLeftHandler.setPositionAndZone(aNewSelectionZone[0], [0, aNewSelectionZone[1]]); + this.oRightHandler.setPositionAndZone(aNewSelectionZone[1], [aNewSelectionZone[0], this.oPositionManager.getTimelineEndPosition()]); + this.oSelectionZone.redraw(); + } + onSetPointingByPosition(x: number): void { + this.onSetPointingByTime(this.oPositionManager.getTimeFromPosition(x)); + } + onSetPointingByTime(time: number, bIsNow?: boolean): void { + const event = new TimelineUIEvent(); + event.setOnChangedSelectedTime(); + if ( this.oPositionManager.isInTimelineRange(time) ) { + this.oPositionManager.setPointingTime(time); + if ( this.oPositionManager.isInSelectionZone() === false ) { + this.oPositionManager.calcuSelectionZone(); + this.moveSelectionAndHandler(); + event.setOnChangedSelectionRange(); + } + this.oSelectionPoint.setPointing(this.oPositionManager.getPointingPosition()); + } else { + this.oPositionManager.resetBySelectTime(time, bIsNow); + this.onReset$.next(); + event.setOnChangedSelectionRange(); + } + event.setData( + this.oPositionManager.getPointingTime(), + this.oPositionManager.getSelectionTimeRange(), + this.oPositionManager.getTimelineRange() + ); + this.onChangeTimelineUIEvent$.next(event); + } + reset(): void { + const aNewSelectionZone = this.oPositionManager.getSelectionPosition(); + this.oLeftHandler.setPositionAndZone(aNewSelectionZone[0], [0, aNewSelectionZone[1]]); + this.oRightHandler.setPositionAndZone(aNewSelectionZone[1], [aNewSelectionZone[0], this.oPositionManager.getTimelineEndPosition()]); + this.oSelectionZone.redraw(); + this.oSelectionPoint.setPointing(this.oPositionManager.getPointingPosition()); + } + destroy(): void { + this.unsubscribe.unsubscribe(); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-selection-point.class.ts b/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-selection-point.class.ts new file mode 100644 index 000000000000..3659b6d33ded --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-selection-point.class.ts @@ -0,0 +1,24 @@ +declare var Snap: any; +declare var mina: any; + +export class TimelineSelectionPoint { + constructor(private snap: any, private group: any, private options: { [key: string]: number } ) { + this.addElements(); + this.setPointing( options.x ); + } + addElements(): void { + const halfRadius = this.options.radius / 2; + this.group.add( + this.snap.line(0, 0, 0, this.options.height), + this.snap.circle(0, this.options.height / 2, this.options.radius).attr({ + 'filter': this.snap.filter( Snap.filter.shadow(0, 0, 4, '#FF0', 1)) + }) + ); + } + setPointing(x: number): void { + this.group.animate({ + 'transform': `translate(${x}, ${this.options.y})` + }, this.options.duration, mina.easein); + } + destroy(): void {} +} diff --git a/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-selection-zone.class.ts b/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-selection-zone.class.ts new file mode 100644 index 000000000000..bcf88b289771 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-selection-zone.class.ts @@ -0,0 +1,36 @@ +declare var Snap: any; +import { TimelinePositionManager } from './timeline-position-manager.class'; + +export class TimelineSelectionZone { + private elZone: any; + constructor(private snap: any, private group: any, private options: { [key: string]: number }, private oPositionManager: TimelinePositionManager ) { + this.addElements(); + } + addElements() { + const aSelectionZone = this.oPositionManager.getSelectionPosition(); + this.elZone = this.snap.rect(aSelectionZone[0], this.options.top, aSelectionZone[1] - aSelectionZone[0], this.options.height); + this.group.add(this.elZone); + } + redraw() { + const aSelectionZone = this.oPositionManager.getSelectionPosition(); + this.elZone.animate({ + 'x': aSelectionZone[0], + 'width': aSelectionZone[1] - aSelectionZone[0] + }, this.options.duration); + } + onDragXStart(x: number): void { + const width = this.oPositionManager.getSelectionPosition()[1] - x; + this.elZone.attr({ + 'x': x, + 'width': width + }); + } + onDragXEnd(x: number): void { + const selectionStartPosition = this.oPositionManager.getSelectionPosition()[0]; + this.elZone.attr({ + 'x': selectionStartPosition, + 'width': x - selectionStartPosition + }); + } + destroy(): void {} +} diff --git a/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-signboard.class.ts b/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-signboard.class.ts new file mode 100644 index 000000000000..e7f912a52421 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-signboard.class.ts @@ -0,0 +1,45 @@ +declare var Snap: any; +import { TimelinePositionManager } from './timeline-position-manager.class'; + +export class TimelineSignboard { + private timeText: any; + private textMaxWidth = 10; + private xPadding = 10; + constructor(private snap: any, private group: any, private options: { [key: string]: any }, private oPositionManager: TimelinePositionManager ) { + this.addElements(); + } + addElements(): void { + const isIn = this.isIn(this.options.x); + const x = this.options.x + (isIn ? this.xPadding : -this.xPadding); + this.timeText = this.group.text(x, 26, this.oPositionManager.getFullTimeStr(this.options.x) ).attr({ + 'text-anchor': this.getAnchorPosition(isIn) + }); + this.group.add( this.timeText ); + } + setX(x: number): void { + const isIn = this.isIn(x); + this.timeText.attr({ + 'x': x + ( isIn ? this.xPadding : -this.xPadding ), + 'text': this.oPositionManager.getFullTimeStr(x), + 'text-anchor': this.getAnchorPosition(isIn) + }); + } + getAnchorPosition(innerPosition: boolean): string { + return innerPosition ? 'start' : 'end'; + } + isIn(x: number): boolean { + if ( this.options.direction === 'left' ) { + return x < this.textMaxWidth; + } else { + return x + this.textMaxWidth < this.oPositionManager.getTimelineEndPosition(); + } + } + onDragStart(x: number): void { + this.setX(x); + } + onDragEnd(): void {} + onDrag(x: number): void { + this.setX(x); + } + destroy(): void {} +} diff --git a/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-state-line.class.ts b/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-state-line.class.ts new file mode 100644 index 000000000000..ce92a2a2b784 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-state-line.class.ts @@ -0,0 +1,119 @@ +declare var Snap: any; +declare var mina: any; +import { TimelinePositionManager } from './timeline-position-manager.class'; +import { ITimelineStatusSegment } from './timeline-data.class'; + +export class TimelineStateLine { + static ID_SPLITER = '+'; + static ID_PREFIX_BASE = 'base-'; + static ID_POSTFIX = '+state-line'; + + statusData: ITimelineStatusSegment[]; + aBaseLine: any[] = []; + aLineElement: any[] = []; + + constructor(private snap: any, private group: any, private options: { [key: string]: any }, private oPositionManager: TimelinePositionManager) { + this.initBaseLine(); + } + initBaseLine(): void { + this.aBaseLine.push( + this.makeRect(0, this.options.width, 0, this.options.height, this.options.statusColor['BASE'], TimelineStateLine.ID_PREFIX_BASE + Date.now()) + ); + this.aBaseLine.forEach((line: any) => { + this.group.add(line); + }); + } + addStatus(oStatus: ITimelineStatusSegment, index: number): void { + if ( this.isOutsideOfTimeline(oStatus.startTimestamp, oStatus.endTimestamp) ) { + return; + } + this.addLine( + this.oPositionManager.getPositionByTime(oStatus.startTimestamp), + this.getX2(oStatus.endTimestamp), + this.options.statusColor[oStatus.value], + this.makeID(oStatus) + ); + } + isOutsideOfTimeline(start: number, end: number): boolean { + return this.oPositionManager.isInTimelineRange(start) === false && this.oPositionManager.isInTimelineRange(end) === false; + } + makeID(oStatus: ITimelineStatusSegment): string { + return oStatus.endTimestamp + TimelineStateLine.ID_POSTFIX; + } + addLine(x: number, x2: number, backgroundColor: string, id: string): void { + const line = this.makeRect(x, x2, 0, this.options.height, backgroundColor, id); + this.aLineElement.push(line); + this.group.add(line); + } + makeRect(x: number, x2: number, y: number, y2: number, color: string, id: string): any { + return this.snap.rect(x, y, x2, y2).attr({ + 'fill': color, + 'data-id': id + }); + } + getX2(end: number): number { + return this.oPositionManager.getPositionByTime(end === -1 ? this.oPositionManager.getTimelineEndTime() : end); + } + updateData(statusData: ITimelineStatusSegment[]): void { + this.statusData = statusData; + this.updateRender(); + } + updateRender(): void { + let index; + const curLen = this.aLineElement.length; + const newLen = this.statusData.length; + if ( curLen === newLen ) { + for ( index = 0 ; index < curLen ; index++ ) { + this.show(this.aLineElement[index]); + } + } else if ( curLen > newLen ) { + for ( index = newLen ; index < curLen ; index++ ) { + this.hide(this.aLineElement[index]); + } + } else { // curLen < newLen + for ( index = 0 ; index < curLen ; index++ ) { + this.show(this.aLineElement[index]); + } + for ( index = curLen ; index < newLen ; index++ ) { + this.addStatus(this.statusData[index], index); + } + } + this.reset(); + } + emptyData(): void { + this.aLineElement.forEach((line: any) => { + this.hide(line); + }); + } + reset() { + for ( let i = 0 ; i < this.aLineElement.length ; i++ ) { + const line = this.aLineElement[i]; + const oStatus = this.statusData[i]; + if ( oStatus ) { + const x = this.oPositionManager.getPositionByTime(oStatus.startTimestamp); + this.show(line); + line.animate({ + 'x': x, + 'width': this.getX2(oStatus.endTimestamp) - x + }, this.options.duration, mina.easeOut, () => { + line.attr('fill', this.options.statusColor[oStatus.value]); + }); + } else { + this.hide(line); + } + } + const endPosition = this.oPositionManager.getTimelineEndPosition(); + this.aBaseLine.forEach((elBase: any) => { + elBase.animate({ + 'width': endPosition + }, this.options.duration); + }); + } + show(el: any) { + el.attr('display', 'block'); + } + hide(el: any) { + el.attr('display', 'none'); + } + destroy(): void {} +} diff --git a/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-ui-event.ts b/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-ui-event.ts new file mode 100644 index 000000000000..755662264891 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-ui-event.ts @@ -0,0 +1,46 @@ +export class TimelineUIEvent { + changedSelectedTime = false; + changedSelectionRange = false; + changedRange = false; + data = { + selectedTime: 0, + range: [0, 0], + selectionRange: [0, 0] + }; + setData(time: number, selectionRange: number[], range: number[]): TimelineUIEvent { + this.data.selectedTime = time; + this.data.selectionRange = selectionRange; + this.data.range = range; + return this; + } + setSelectedTime(time: number): TimelineUIEvent { + this.data.selectedTime = time; + return this; + } + setSelectionRange(range: number[]): TimelineUIEvent { + this.data.selectionRange = range; + return this; + } + setRange(range: number[]): TimelineUIEvent { + this.data.range = range; + return this; + } + setOnChangedSelectedTime(): void { + this.changedSelectedTime = true; + } + setOffChangedSelectedTime(): void { + this.changedSelectedTime = false; + } + setOnChangedSelectionRange(): void { + this.changedSelectionRange = true; + } + setOffChangedSelectionRange(): void { + this.changedSelectionRange = false; + } + setOnRange(): void { + this.changedRange = true; + } + setOffRange(): void { + this.changedRange = false; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-x-axis.class.ts b/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-x-axis.class.ts new file mode 100644 index 000000000000..589a8d2bda01 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline-x-axis.class.ts @@ -0,0 +1,40 @@ +declare var Snap: any; +import { TimelinePositionManager } from './timeline-position-manager.class'; + +export class TimelineXAxis { + aText: any[]; + aAxisGroup: any[] = []; + + constructor(private snap: any, private group: any, private options: { [key: string]: any }, private oPositionManager: TimelinePositionManager) { + this.aText = []; + this.init(); + } + init() { + const aXBarPosition = this.oPositionManager.getXAxisPositionData(); + const centerX = this.options.width / 2; + + aXBarPosition.forEach((xBar: any, index: number) => { + const g = this.group.g(); + const text = this.snap.text(0, this.options.textY, aXBarPosition[index].time); + this.aText.push(text); + g.attr('transform', 'translate(' + centerX + ', 0)'); + g.add(text, this.snap.line(0, this.options.startY, 0, this.options.endY)); + this.group.add(g); + this.aAxisGroup.push(g); + this.resetXPosition(g, aXBarPosition[index].x, centerX); + }); + } + resetXPosition(g: any, x: number, startX: number): void { + Snap.animate(startX, x, (val: number) => { + g.attr('transform', `translate(${val}, 0)`); + }, this.options.duration); + } + reset() { + const aYBarPosition = this.oPositionManager.getXAxisPositionData(); + for ( let i = 0 ; i < aYBarPosition.length ; i++ ) { + this.aAxisGroup[i].attr('transform', `translate(${aYBarPosition[i].x}, 0)`); + this.aText[i].attr('text', aYBarPosition[i].time); + } + } + destroy(): void {} +} diff --git a/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline.class.ts b/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline.class.ts new file mode 100644 index 000000000000..62cf161a75cb --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timeline/class/timeline.class.ts @@ -0,0 +1,386 @@ +import { Subject } from 'rxjs'; +import { TimelineData, ITimelineData, ITimelineStatusSegment, ITimelineEventSegment } from './timeline-data.class'; +import { TimelinePositionManager } from './timeline-position-manager.class'; +import { TimelineLoadingIndicator } from './timeline-loading-indicator.class'; +import { TimelineBackground } from './timeline-background.class'; +import { TimelineStateLine } from './timeline-state-line.class'; +import { TimelineSelectionZone } from './timeline-selection-zone.class'; +import { TimelineSelectionPoint } from './timeline-selection-point.class'; +import { TimelineHandler } from './timeline-handler.class'; +import { TimelineSignboard } from './timeline-signboard.class'; +import { TimelineSelectionManager } from './timeline-selection-manager.class'; +import { TimelineXAxis } from './timeline-x-axis.class'; +import { TimelineEvents } from './timeline-events.class'; +import { TimelineUIEvent } from './timeline-ui-event'; + +declare var Snap: any; + +// TODO: Reset 확인 +// TODO: Resize 확인 +// TODO: 데이터 업데이트시 동작 확인 +// TODO: timeline-selection-manager.onSetPointingByTime의 timeline.reset() 확인 +export class Timeline { + static MAX_TIME_RANGE = 604800000; // 7day + static GROUP_TYPE: { [key: string]: string } = { + TOP_BASE: 'TOP-BASE', + CONTENT_BASE: 'CONTENT-BASE', + BOTTOM_BASE: 'BOTTOM-BASE' + }; + static DRAWING_ORDER: { [key: string]: number } = { + 'background': 0, + 'state-line': 3, + 'selection-zone': 5, + 'x-axis': 10, + 'events': 10, + 'time-signboard': 15, + 'selection-point': 15, + 'left-handler': 25, + 'right-handler': 25, + 'guide': 30, + 'loading': 100 + }; + static DEFAULT_STATUS_COLOR: { [key: string]: string } = { + 'BASE': 'rgba(187, 187, 187, 0.3)', + 'UNKNOWN': 'rgba(220, 214, 214, 0.8)', + 'RUNNING': 'rgba(0, 158, 0, 0.4)', + 'SHUTDOWN': 'rgba(209, 82, 96, 0.7)', + 'UNSTABLE_RUNNING': 'rgba(255, 102, 0, 0.4)', + 'EMPTY': 'rgba(165, 219, 245, 0.7)' + }; + private snap: any; + + private oLoading: TimelineLoadingIndicator; + private oBackground: TimelineBackground; + private oTimelineData: TimelineData; + private oPositionManager: TimelinePositionManager; + private oStateLine: TimelineStateLine; + private oSelectionManager: TimelineSelectionManager; + private oXAxis: TimelineXAxis; + private oEvents: TimelineEvents; + + private svgGroups: { [key: string]: any} = {}; + private options: { [key: string]: any } = { + 'top': 0, + 'left': 0, + 'duration': 50, + 'xAxisTicks': 5, + 'minTimeRange': 6000, // 6sec + 'eventZoneHeight': 30, // 하단 이벤트 영역의 height + 'headerZoneHeight': 20, // 상단 시간 표시영역의 height + 'stateLineThickness': 4, // 상태선의 두께 + 'maxSelectionTimeRange': Timeline.MAX_TIME_RANGE, // 7day + 'headerTextTopPadding': 10, // 상단 상태선과 시간 text의 간격 + 'pointerRadius': 6 + }; + onChangeTimelineUIEvent$: Subject = new Subject(); + onSelectEventStatus$: Subject = new Subject(); + + constructor(private element: any, options: { [key: string]: any }) { + this.snap = Snap(element); + this.snap.attr({'height': options.height }); + this.initOptions(options); + this.initDataClass(options.timelineData); + this.checkOffset(); + this.initControlClass(); + this.addEventListener(); + } + initOptions(options: { [key: string]: any }) { + Object.keys(options).forEach((key: string) => { + this.options[key] = options[key]; + }); + this.setDefaultStatusColor(); + this.checkOffset(); + } + setDefaultStatusColor() { + if ( this.options['statusColor'] ) { + Object.keys(Timeline.DEFAULT_STATUS_COLOR).forEach((key: string) => { + if ( !this.options['statusColor'][key] ) { + this.options['statusColor'][key] = Timeline.DEFAULT_STATUS_COLOR[key]; + } + }); + } else { + const statusColor = {}; + Object.keys(Timeline.DEFAULT_STATUS_COLOR).forEach((key: string) => { + statusColor[key] = Timeline.DEFAULT_STATUS_COLOR[key]; + }); + this.options['statusColor'] = statusColor; + } + } + initDataClass(timelineData: ITimelineData) { + this.oTimelineData = new TimelineData(timelineData || { + agentEventTimeline: { + timelineSegments: [] + }, + agentStatusTimeline: { + includeWarning: false, + timelineSegments: [] + } + }); + } + checkOffset() { + const offset = this.element.getBoundingClientRect(); + this.options.top = offset.top; + this.options.left = offset.left; + } + initControlClass() { + this.oPositionManager = new TimelinePositionManager( { + 'width': this.options.width, + 'xAxisTicks': this.options.xAxisTicks, + 'pointingTime': this.options.pointingTime, + 'minTimeRange': this.options.minTimeRange, + 'timelineRange': this.options.timelineRange, + 'selectionTimeRange': this.options.selectionTimeRange, + 'maxSelectionTimeRange': this.options.maxSelectionTimeRange, + 'timezone': this.options.timezone, + 'dateFormat': this.options.dateFormat + }); + const contentZoneHeight = this.options.height - this.options.headerZoneHeight - this.options.eventZoneHeight; + + this.oLoading = new TimelineLoadingIndicator(this.snap, this.getGroup('loading', Timeline.GROUP_TYPE.TOP_BASE, Timeline.DRAWING_ORDER['loading']), { + 'size': 30, + 'width': this.options.width, + 'height': this.options.height, + 'duration': 2000 + }); + this.oBackground = new TimelineBackground(this.snap, this.getGroup('background', Timeline.GROUP_TYPE.CONTENT_BASE, Timeline.DRAWING_ORDER['background']), { + 'top': 0, + 'left': 0, + 'size': 30, + 'width': this.options.width, + 'height': contentZoneHeight, + 'duration': this.options.duration + }); + this.oStateLine = new TimelineStateLine(this.snap, this.getGroup('state-line', Timeline.GROUP_TYPE.CONTENT_BASE, Timeline.DRAWING_ORDER['state-line']), { + 'width': this.options.width, + 'height': contentZoneHeight, + 'duration': this.options.duration, + 'thickness': this.options.stateLineThickness, + 'statusColor': this.options.statusColor + }, this.oPositionManager); + + const aSelectionZone = this.oPositionManager.getSelectionPosition(); + const oSelectionZone = new TimelineSelectionZone(this.snap, this.getGroup('selection-zone', Timeline.GROUP_TYPE.CONTENT_BASE, Timeline.DRAWING_ORDER['selection-zone']), { + 'top': 0, + 'left': aSelectionZone[0], + 'width': aSelectionZone[1] - aSelectionZone[0], + 'height': contentZoneHeight, + 'duration': this.options.duration + }, this.oPositionManager); + const oSelectionPoint = new TimelineSelectionPoint(this.snap, this.getGroup('selection-point', Timeline.GROUP_TYPE.CONTENT_BASE, Timeline.DRAWING_ORDER['selection-point']), { + 'y': this.options.headerZoneHeight, + 'x': this.oPositionManager.getPointingPosition(), + 'radius': this.options.pointerRadius, + 'height': contentZoneHeight, + 'duration': this.options.duration + }); + const oLeftHandler = new TimelineHandler(this.snap, this.getGroup('left-handler', Timeline.GROUP_TYPE.CONTENT_BASE, Timeline.DRAWING_ORDER['left-handler']), { + 'x': aSelectionZone[0], + 'zone': [0, aSelectionZone[1]], + 'height': contentZoneHeight, + 'margin': this.options.left, + 'duration': this.options.duration + }); + const oRightHandler = new TimelineHandler(this.snap, this.getGroup('right-handler', Timeline.GROUP_TYPE.CONTENT_BASE, Timeline.DRAWING_ORDER['right-handler']), { + 'x': aSelectionZone[1], + 'zone': [ aSelectionZone[0], this.oPositionManager.getTimelineEndPosition() ], + 'height': contentZoneHeight, + 'margin': this.options.left, + 'duration': this.options.duration + }); + const oLeftTimeSignboard = new TimelineSignboard(this.snap, this.getGroup('time-left-signboard', Timeline.GROUP_TYPE.CONTENT_BASE, Timeline.DRAWING_ORDER['time-signboard']), { + 'x': aSelectionZone[0], + 'direction': 'left' + }, this.oPositionManager); + const oRightTimeSignboard = new TimelineSignboard(this.snap, this.getGroup('time-right-signboard', Timeline.GROUP_TYPE.CONTENT_BASE, Timeline.DRAWING_ORDER['time-signboard']), { + 'x': aSelectionZone[1], + 'direction': 'right' + }, this.oPositionManager); + this.oSelectionManager = new TimelineSelectionManager({ + 'headerZoneHeight': this.options.headerZoneHeight, + 'contentZoneHeight': contentZoneHeight + }, oSelectionZone, oSelectionPoint, oLeftHandler, oRightHandler, oLeftTimeSignboard, oRightTimeSignboard, this.oPositionManager); + + this.oXAxis = new TimelineXAxis(this.snap, this.getGroup('x-axis', Timeline.GROUP_TYPE.TOP_BASE, Timeline.DRAWING_ORDER['x-axis']), { + 'endY': this.options.height - this.options.eventZoneHeight, + 'width': this.options.width, + 'textY': this.options.headerTextTopPadding, + 'startY': this.options.headerZoneHeight, + 'duration': this.options.duration + }, this.oPositionManager); + this.oEvents = new TimelineEvents(this.snap, this.getGroup('events', Timeline.GROUP_TYPE.BOTTOM_BASE, Timeline.DRAWING_ORDER['events']), { + 'duration': this.options.duration + }, this.oPositionManager ); + + this.oLoading.hide(); + } + getGroup(name: string, type: string, zIndex: number) { + if ( this.svgGroups[name] ) { + return this.svgGroups[name]; + } + const g: any = this.svgGroups[name] = this.snap.g().attr({ + 'class': name, + 'data-order': zIndex + }); + this.setTransform(g, type); + this.sortGroup(g, zIndex); + return g; + } + setTransform(newGroup: any, type: string) { + switch ( type ) { + case Timeline.GROUP_TYPE.TOP_BASE: + newGroup.attr({ 'transform': `translate(0, 0)` }); + break; + case Timeline.GROUP_TYPE.CONTENT_BASE: + newGroup.attr({ 'transform': `translate(0, ${this.options.headerZoneHeight})` }); + break; + case Timeline.GROUP_TYPE.BOTTOM_BASE: + newGroup.attr({ 'transform': `translate(0, ${this.options.height - this.options.eventZoneHeight})` }); + break; + } + } + sortGroup(newGroup: any, zIndex: number) { + const aGroups = this.snap.selectAll('g'); + let afterGroup = null; + for ( let i = aGroups.length - 1; i >= 0 ; i-- ) { + if ( aGroups[i] === newGroup ) { + continue; + } + if ( zIndex < Math.floor(aGroups[i].attr('data-order')) ) { + afterGroup = aGroups[i]; + } + } + if ( afterGroup !== null ) { + afterGroup.before(newGroup); + } + } + addEventListener() { + let mousedownX = -1; + window.addEventListener('resize', () => { + this.checkOffset(); + this.resize(); + }); + this.snap.mousedown((event: any, x: number, y: number) => { + mousedownX = x; + }); + this.oEvents.clickEvent$.subscribe((eventData: ITimelineEventSegment) => { + this.onSelectEventStatus$.next(eventData); + }); + this.oTimelineData.onChangeStatusData$.subscribe((statusData: ITimelineStatusSegment[]) => { + this.oStateLine.updateData(statusData); + }); + this.oTimelineData.onChangeEventData$.subscribe((eventData: ITimelineEventSegment[]) => { + this.oEvents.updateData(eventData); + }); + this.oSelectionManager.onChangeTimelineUIEvent$.subscribe((event: TimelineUIEvent) => { + this.onChangeTimelineUIEvent$.next(event); + }); + this.oSelectionManager.onReset$.subscribe(() => { + this.reset(); + }); + + const eventStartPosition = this.options.headerZoneHeight; + const eventEndPosition = this.options.height - this.options.eventZoneHeight; + this.snap.click((event: any, x: number, y: number) => { + if ( mousedownX !== x ) { + return; + } + if ( event.offsetY > eventStartPosition && event.offsetY < eventEndPosition ) { + this.oSelectionManager.onSetPointingByPosition(event.offsetX); + } + }); + } + addData(oNewData: any) { + this.oLoading.show(); + this.oTimelineData.addData( oNewData ); + this.oLoading.hide(); + } + reset() { + this.oXAxis.reset(); + this.oSelectionManager.reset(); + this.oStateLine.reset(); + this.oEvents.reset(); + } + resize() { + this.oPositionManager.setWidth(this.element.getBoundingClientRect().width); + this.oBackground.reset(this.oPositionManager.getTimelineEndPosition()); + this.reset(); + } + zoomIn() { + // 1/2배씩 + this.oPositionManager.zoomIn(); + this.reset(); + this.fireChangedRangeEvent(); + } + zoomOut() { + // 2배씩 + this.oPositionManager.zoomOut(); + this.reset(); + this.fireChangedRangeEvent(); + } + private fireChangedRangeEvent(): void { + const event = new TimelineUIEvent(); + event.setOnRange(); + event.setData( + this.oPositionManager.getPointingTime(), + this.oPositionManager.getSelectionTimeRange(), + this.oPositionManager.getTimelineRange() + ); + this.onChangeTimelineUIEvent$.next(event); + } + resetTimeRangeAndSelectionZone(aSelectionFromTo: number[], aFromTo: number[], selectedTime: number) { + this.oPositionManager.setTimelineRange(aFromTo[0], aFromTo[1]); + this.oPositionManager.setSelectionStartTime(aSelectionFromTo[0]); + this.oPositionManager.setSelectionEndTime(aSelectionFromTo[1]); + this.oPositionManager.setPointingTime(selectedTime || aSelectionFromTo[1]); + this.emptyData(); + this.reset(); + } + movePrev() { + this.oSelectionManager.onSetPointingByTime(this.oPositionManager.getPrevTime()); + } + moveNext() { + this.oSelectionManager.onSetPointingByTime(this.oPositionManager.getNextTime()); + } + moveHead() { + this.oSelectionManager.onSetPointingByTime(Date.now(), true); + } + getTimelineRange() { + return this.oPositionManager.getTimelineRange(); + } + getSelectionTimeRange() { + return this.oPositionManager.getSelectionTimeRange(); + } + emptyData() { + this.oLoading.show(); + this.oTimelineData.emptyData(); + this.oEvents.emptyData(); + this.oStateLine.emptyData(); + this.oLoading.hide(); + } + setPointingTime(time: number): void { + this.oSelectionManager.onSetPointingByTime(time); + } + getPointingTime() { + return this.oPositionManager.getPointingTime(); + } + setTimezone(timezone: string): void { + this.options.timezone = timezone; + this.oPositionManager.setTimezone(timezone); + this.reset(); + } + setDateFormat(dateFormat: string[]): void { + this.options.dateFormat = dateFormat; + this.oPositionManager.setDateFormat(dateFormat); + this.reset(); + } + destroy() { + this.oLoading.destroy(); + this.oBackground.destroy(); + this.oTimelineData.destroy(); + this.oPositionManager.destroy(); + this.oStateLine.destroy(); + this.oSelectionManager.destroy(); + this.oXAxis.destroy(); + this.oEvents.destroy(); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/timeline/index.ts b/web/src/main/webapp/v2/src/app/core/components/timeline/index.ts new file mode 100644 index 000000000000..4e5d830d3c3a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timeline/index.ts @@ -0,0 +1,28 @@ + +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { TimelineComponent } from './timeline.component'; +import { TimelineInteractionService } from './timeline-interaction.service'; +import { AgentInspectorTimelineContainerComponent } from './agent-inspector-timeline-container.component'; +import { ApplicationInspectorTimelineContainerComponent } from './application-inspector-timeline-container.component'; +import { AgentTimelineDataService } from './agent-timeline-data.service'; + +@NgModule({ + declarations: [ + TimelineComponent, + AgentInspectorTimelineContainerComponent, + ApplicationInspectorTimelineContainerComponent + ], + imports: [ + CommonModule + ], + exports: [ + AgentInspectorTimelineContainerComponent, + ApplicationInspectorTimelineContainerComponent + ], + providers: [ + TimelineInteractionService, + AgentTimelineDataService + ] +}) +export class TimelineModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/timeline/timeline-interaction.service.ts b/web/src/main/webapp/v2/src/app/core/components/timeline/timeline-interaction.service.ts new file mode 100644 index 000000000000..e577b5af2285 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timeline/timeline-interaction.service.ts @@ -0,0 +1,64 @@ +import { Injectable } from '@angular/core'; +import { Subject, Observable } from 'rxjs'; +import { ITimelineEventSegment } from './class/timeline-data.class'; +export enum TimelineCommand { + zoomIn = 'ZOOM_IN', + zoomOut = 'ZOOM_OUT', + prev = 'PREV', + next = 'NEXT', + now = 'NOW' +} + +export interface ITimelineCommandParam { + command: TimelineCommand; + payload?: any; +} + +@Injectable() +export class TimelineInteractionService { + public onSelectPointingTime$: Observable; + public onSelectEventStatus$: Observable; + public onCommand$: Observable; + + private changePointingTimeSource = new Subject(); + private selectEventStatusSource = new Subject(); + private commandSource = new Subject(); + + constructor() { + this.onSelectPointingTime$ = this.changePointingTimeSource.asObservable(); + this.onSelectEventStatus$ = this.selectEventStatusSource.asObservable(); + this.onCommand$ = this.commandSource.asObservable(); + } + sendSelectedPointingTime(pointingTime: number): void { + this.changePointingTimeSource.next(pointingTime); + } + sendSelectedEventStatus(eventSegment: ITimelineEventSegment): void { + this.selectEventStatusSource.next(eventSegment); + } + setZoomIn(): void { + this.commandSource.next({ + command: TimelineCommand.zoomIn + }); + } + setZoomOut(): void { + this.commandSource.next({ + command: TimelineCommand.zoomOut + }); + } + setPrev(): void { + this.commandSource.next({ + command: TimelineCommand.prev + }); + } + setNext(): void { + this.commandSource.next({ + command: TimelineCommand.next + }); + } + setNow(): void { + this.commandSource.next({ + command: TimelineCommand.now + }); + } +} + diff --git a/web/src/main/webapp/v2/src/app/core/components/timeline/timeline.component.css b/web/src/main/webapp/v2/src/app/core/components/timeline/timeline.component.css new file mode 100644 index 000000000000..edb330555024 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timeline/timeline.component.css @@ -0,0 +1,91 @@ +:host { + display: block; + user-select: none; +} +svg { + width: 100%; +} +svg text { + user-select: none; +} +.hide { + display: none; +} +.background rect { + fill: #EEE; +} + +.selection-zone rect { + fill: rgba(255, 255, 255, 0.5); +} +.x-axis text { + font-size: 12px; + text-anchor: middle; +} +.x-axis line { + stroke: #FFF; + stroke-width: 0.5; + stroke-linecap: square; +} +.left-handler rect, .right-handler rect { + fill: #FFF; +} +.left-handler line, .right-handler line { + stroke: #000; + stroke-width: 2; +} +.guide line { + stroke: #F00; + stroke-width: .5; + stroke-linecap: square; + stroke-dasharray: 2, 2; +} +.guide circle { + stroke: #F00; + stroke-width: 2; +} +.selection-point line { + stroke: #FF0; + stroke-width: 1; +} +.selection-point circle { + fill: #FF0; + stroke: #000; + stroke-width: 2; +} +.events line { + stroke: #000; + stroke-width: 1; +} +.events circle { + fill: #BDB76B; +} +.events text { + fill: #FFF; + font-size: 11px; +} +image { + cursor: pointer; +} +.event { + cursor: pointer; +} +.loading { + fill: rgba(170, 170, 170, 0.1); +} +.loading rect { + stroke-width: 2px; +} +.loading rect:nth-child(2) { + stroke: rgba(197, 197, 197, .9); +} +.loading rect:nth-child(3) { + stroke: rgba(239, 246, 105, .9); +} +.time-left-signboard text, .time-right-signboard text { + fill: #000; + font-size: 13px; +} +.time-series-signboard text { + fill: #BBB; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/timeline/timeline.component.html b/web/src/main/webapp/v2/src/app/core/components/timeline/timeline.component.html new file mode 100644 index 000000000000..e30fc442523d --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timeline/timeline.component.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/timeline/timeline.component.ts b/web/src/main/webapp/v2/src/app/core/components/timeline/timeline.component.ts new file mode 100644 index 000000000000..36594afbca7b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timeline/timeline.component.ts @@ -0,0 +1,103 @@ +import { Component, OnInit, ViewEncapsulation, ChangeDetectionStrategy, OnChanges, OnDestroy, SimpleChanges, Input, Output, EventEmitter, ViewChild, ElementRef } from '@angular/core'; +import { Timeline, ITimelineData, ITimelineEventSegment, TimelineUIEvent } from './class'; + +@Component({ + selector: 'pp-timeline', + templateUrl: './timeline.component.html', + styleUrls: ['./timeline.component.css'], + encapsulation: ViewEncapsulation.None, + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class TimelineComponent implements OnInit, OnChanges, OnDestroy { + @ViewChild('timeline') el: ElementRef; + + @Input() data: any; + @Input() height: number; + @Input() pointingTime: number; + @Input() timelineStartTime: number; + @Input() timelineEndTime: number; + @Input() selectionStartTime: number; + @Input() selectionEndTime: number; + @Input() timezone: string; + @Input() dateFormat: string[]; + + @Output() outChangeTimelineUIEvent: EventEmitter = new EventEmitter(); + @Output() outSelectEventStatus: EventEmitter = new EventEmitter(); + + timeline: Timeline; + constructor(private hostElRef: ElementRef) {} + ngOnInit() {} + ngOnChanges(changes: SimpleChanges) { + if (changes['data'] && changes['data'].currentValue) { + this.initTimeline(); + } + if (changes['timezone'] && this.timeline) { + this.timeline.setTimezone(this.timezone); + } + if (changes['dateFormat'] && this.timeline) { + this.timeline.setDateFormat(this.dateFormat); + } + } + // selectionTime : 전체 조회 기간 중 선택 구간 + // start - from : timeline의 전체 조회 구간 + // pointingTime : 포인팅 지점 + initTimeline() { + if ( this.timeline ) { + this.timeline.resetTimeRangeAndSelectionZone( + [this.selectionStartTime, this.selectionEndTime], + [this.timelineStartTime, this.timelineEndTime], + this.pointingTime + ); + this.timeline.addData(this.data); + } else { + this.timeline = new Timeline(this.el.nativeElement, { + 'width': this.hostElRef.nativeElement.offsetWidth, + 'height': this.height, + 'timelineRange': [this.timelineStartTime, this.timelineEndTime], + 'selectionTimeRange': [this.selectionStartTime, this.selectionEndTime], + 'pointingTime': this.pointingTime, + 'timelineData': this.data, + 'timezone': this.timezone, + 'dateFormat': this.dateFormat, + 'statusColor': { + 'BASE': 'rgba(187, 187, 187, .3)', + 'UNKNOWN': 'rgba(220, 214, 214, .8)', + 'RUNNING': 'rgba(0, 158, 0, .4 )', + 'SHUTDOWN': 'rgba(209, 82, 96, .7)', + 'UNSTABLE_RUNNING': 'rgba(255, 102, 0, .4)', + 'EMPTY': 'rgba(165, 219, 245, .7)' + } + }); + this.timeline.onSelectEventStatus$.subscribe((eventSegment: ITimelineEventSegment) => { + this.outSelectEventStatus.emit(eventSegment); + }); + this.timeline.onChangeTimelineUIEvent$.subscribe((event: TimelineUIEvent) => { + this.outChangeTimelineUIEvent.emit(event); + }); + } + } + zoomIn(): void { + this.timeline.zoomIn(); + } + zoomOut(): void { + this.timeline.zoomOut(); + } + movePrev(): void { + this.timeline.movePrev(); + } + moveNext(): void { + this.timeline.moveNext(); + } + moveNow(): void { + this.timeline.moveHead(); + } + getTimelineRange(): number[] { + return this.timeline.getTimelineRange(); + } + updateData(data: any): void { + this.timeline.addData(data); + } + ngOnDestroy() { + // this.timeline.destroy(); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/timezone/index.ts b/web/src/main/webapp/v2/src/app/core/components/timezone/index.ts new file mode 100644 index 000000000000..2a66aa18175b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timezone/index.ts @@ -0,0 +1,21 @@ + +import { NgModule } from '@angular/core'; +import { SharedModule } from 'app/shared'; +import { TimezoneSelectContainerComponent } from './timezone-select-container.component'; +import { TimezoneSelectComponent } from './timezone-select.component'; + +@NgModule({ + declarations: [ + TimezoneSelectContainerComponent, + TimezoneSelectComponent + ], + imports: [ + SharedModule + ], + exports: [ + TimezoneSelectContainerComponent, + ], + providers: [ + ] +}) +export class TimezoneModule {} diff --git a/web/src/main/webapp/v2/src/app/core/components/timezone/timezone-select-container.component.css b/web/src/main/webapp/v2/src/app/core/components/timezone/timezone-select-container.component.css new file mode 100644 index 000000000000..7f26ddcb5503 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timezone/timezone-select-container.component.css @@ -0,0 +1,3 @@ +:host { + display: block; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/timezone/timezone-select-container.component.html b/web/src/main/webapp/v2/src/app/core/components/timezone/timezone-select-container.component.html new file mode 100644 index 000000000000..15cfaa0bf78d --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timezone/timezone-select-container.component.html @@ -0,0 +1,5 @@ + + \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/timezone/timezone-select-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/timezone/timezone-select-container.component.ts new file mode 100644 index 000000000000..fdbe26021570 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timezone/timezone-select-container.component.ts @@ -0,0 +1,43 @@ +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; +import * as moment from 'moment-timezone'; +import { Observable, Subject } from 'rxjs'; + +import { Actions } from 'app/shared/store'; +import { StoreHelperService, WebAppSettingDataService, AnalyticsService, TRACKED_EVENT_LIST } from 'app/shared/services'; + +@Component({ + selector: 'pp-timezone-select-container', + templateUrl: './timezone-select-container.component.html', + styleUrls: ['./timezone-select-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class TimezoneSelectContainerComponent implements OnInit { + private unsubscribe: Subject = new Subject(); + timezoneList: string[]; + currentTimezone$: Observable; + + constructor( + private storeHelperService: StoreHelperService, + private webAppSettingDataService: WebAppSettingDataService, + private analyticsService: AnalyticsService, + ) {} + + ngOnInit() { + this.initTimezoneList(); + this.initCurrentTimezone(); + } + + private initTimezoneList(): void { + this.timezoneList = moment.tz.names(); + } + + private initCurrentTimezone(): void { + this.currentTimezone$ = this.storeHelperService.getTimezone(this.unsubscribe); + } + + onChangeTimezone(timezone: string): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.SET_TIMEZONE_IN_CONFIGURATION, timezone); + this.webAppSettingDataService.setTimezone(timezone); + this.storeHelperService.dispatch(new Actions.ChangeTimezone(timezone)); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/timezone/timezone-select.component.css b/web/src/main/webapp/v2/src/app/core/components/timezone/timezone-select.component.css new file mode 100644 index 000000000000..b2b8789c1cdc --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timezone/timezone-select.component.css @@ -0,0 +1,26 @@ +:host { + display: block; + position: relative; + width: 100%; +} + +.fa-angle-down { + position: absolute; + top: 8px; + right: 8px; + font-size: 15px; +} + +.l-app-select { + width: 100%; + cursor: pointer; + padding: 6px 12px; + background-color: #fff; + border: 1px solid #d7dde4 !important; + border-radius: 0px; + font-size: 13px; + color: #666; + appearance: none; + -webkit-appearance: none; + outline: 0; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/timezone/timezone-select.component.html b/web/src/main/webapp/v2/src/app/core/components/timezone/timezone-select.component.html new file mode 100644 index 000000000000..47390e84e189 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timezone/timezone-select.component.html @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/timezone/timezone-select.component.ts b/web/src/main/webapp/v2/src/app/core/components/timezone/timezone-select.component.ts new file mode 100644 index 000000000000..91a1ea8782be --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/timezone/timezone-select.component.ts @@ -0,0 +1,24 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; + +@Component({ + selector: 'pp-timezone-select', + templateUrl: './timezone-select.component.html', + styleUrls: ['./timezone-select.component.css'], +}) +export class TimezoneSelectComponent implements OnInit { + @Input() timezoneList: string[]; + @Input() currentTimezone: string; + @Output() outChangeTimezone = new EventEmitter(); + + constructor() {} + ngOnInit() { + } + + onChangeTimezone(value: string): void { + this.outChangeTimezone.emit(value); + } + + compareFn(o1: string, o2: string): boolean { + return o1 && o2 ? o1 === o2 : false; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-detail-contents/index.ts b/web/src/main/webapp/v2/src/app/core/components/transaction-detail-contents/index.ts new file mode 100644 index 000000000000..864afadbe8f1 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-detail-contents/index.ts @@ -0,0 +1,35 @@ + +import { NgModule } from '@angular/core'; + +import { SharedModule } from 'app/shared'; +import { TransactionShortInfoModule } from 'app/core/components/transaction-short-info'; +import { TransactionDetailMenuModule } from 'app/core/components/transaction-detail-menu'; +import { TransactionSearchModule } from 'app/core/components/transaction-search'; +import { CallTreeModule } from 'app/core/components/call-tree'; +import { ServerMapModule } from 'app/core/components/server-map'; +import { TransactionTimelineModule } from 'app/core/components/transaction-timeline'; +import { SyntaxHighlightPopupModule } from 'app/core/components/syntax-highlight-popup'; +import { TransactionDetailContentsContainerComponent } from './transaction-detail-contents-container.component'; +import { HelpViewerPopupModule } from 'app/core/components/help-viewer-popup'; + +@NgModule({ + declarations: [ + TransactionDetailContentsContainerComponent + ], + imports: [ + SharedModule, + TransactionShortInfoModule, + TransactionDetailMenuModule, + TransactionSearchModule, + CallTreeModule, + ServerMapModule, + TransactionTimelineModule, + SyntaxHighlightPopupModule, + HelpViewerPopupModule + ], + exports: [ + TransactionDetailContentsContainerComponent + ], + providers: [] +}) +export class TransactionDetailContentsModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-detail-contents/transaction-detail-contents-container.component.css b/web/src/main/webapp/v2/src/app/core/components/transaction-detail-contents/transaction-detail-contents-container.component.css new file mode 100644 index 000000000000..edfceb22aea7 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-detail-contents/transaction-detail-contents-container.component.css @@ -0,0 +1,24 @@ +.l-content-section { + height: 100%; + position: relative; +} +.l-tab-menu-options { + display: flex; + flex-flow: row wrap; +} +.l-component-wrapper { + width: 100%; + height: calc(100% - 84px); + position: relative; +} +.l-middle-tool-box { + height: 54px; + align-items: center; + justify-content: space-between; + padding: 0 25px; + position:relative; +} +.l-middle-tool-box, .l-middle-tool-box-tip { + color:#a8acb5; + font-size: 18px +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-detail-contents/transaction-detail-contents-container.component.html b/web/src/main/webapp/v2/src/app/core/components/transaction-detail-contents/transaction-detail-contents-container.component.html new file mode 100644 index 000000000000..857c3f81ea97 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-detail-contents/transaction-detail-contents-container.component.html @@ -0,0 +1,15 @@ +
+ +
+ + +
+ +
+
+
+ + + +
+
diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-detail-contents/transaction-detail-contents-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/transaction-detail-contents/transaction-detail-contents-container.component.ts new file mode 100644 index 000000000000..a6629f31d8a8 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-detail-contents/transaction-detail-contents-container.component.ts @@ -0,0 +1,40 @@ +import { Component, OnInit } from '@angular/core'; + +import { TransactionViewTypeService, VIEW_TYPE, AnalyticsService, TRACKED_EVENT_LIST, DynamicPopupService } from 'app/shared/services'; +import { HELP_VIEWER_LIST, HelpViewerPopupContainerComponent } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; + +@Component({ + selector: 'pp-transaction-detail-contents-container', + templateUrl: './transaction-detail-contents-container.component.html', + styleUrls: ['./transaction-detail-contents-container.component.css'] +}) +export class TransactionDetailContentsContainerComponent implements OnInit { + private currentViewType: string; + constructor( + private transactionViewTypeService: TransactionViewTypeService, + private analyticsService: AnalyticsService, + private dynamicPopupService: DynamicPopupService + ) {} + + ngOnInit() { + this.transactionViewTypeService.onChangeViewType$.subscribe((viewType: string) => { + this.currentViewType = viewType; + }); + } + isHiddenSearchComponent(): boolean { + return this.currentViewType !== VIEW_TYPE.CALL_TREE && this.currentViewType !== VIEW_TYPE.TIMELINE; + } + onShowHelp($event: MouseEvent): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.TOGGLE_HELP_VIEWER, HELP_VIEWER_LIST.CALL_TREE); + const {left, top, width, height} = ($event.target as HTMLElement).getBoundingClientRect(); + + this.dynamicPopupService.openPopup({ + data: HELP_VIEWER_LIST.CALL_TREE, + coord: { + coordX: left + width / 2, + coordY: top + height / 2 + }, + component: HelpViewerPopupContainerComponent + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/index.ts b/web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/index.ts new file mode 100644 index 000000000000..bdd1c1b49361 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/index.ts @@ -0,0 +1,26 @@ + +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { TransactionDetailMenuComponent } from './transaction-detail-menu.component'; +import { TransactionDetailMenuContainerComponent } from './transaction-detail-menu-container.component'; +import { TransactionDetailMenuForDetailContainerComponent } from './transaction-detail-menu-for-detail-container.component'; +import { MessagePopupModule } from 'app/core/components/message-popup'; + +@NgModule({ + declarations: [ + TransactionDetailMenuComponent, + TransactionDetailMenuContainerComponent, + TransactionDetailMenuForDetailContainerComponent + ], + imports: [ + CommonModule, + MessagePopupModule + ], + exports: [ + TransactionDetailMenuContainerComponent, + TransactionDetailMenuForDetailContainerComponent + ], + providers: [] +}) +export class TransactionDetailMenuModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/transaction-detail-menu-container.component.css b/web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/transaction-detail-menu-container.component.css new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/transaction-detail-menu-container.component.html b/web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/transaction-detail-menu-container.component.html new file mode 100644 index 000000000000..952f08f59823 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/transaction-detail-menu-container.component.html @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/transaction-detail-menu-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/transaction-detail-menu-container.component.ts new file mode 100644 index 000000000000..29a0e3a33bc8 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/transaction-detail-menu-container.component.ts @@ -0,0 +1,110 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { Subject } from 'rxjs'; +import { filter, takeUntil } from 'rxjs/operators'; + +import { + StoreHelperService, + NewUrlStateNotificationService, + UrlRouteManagerService, + TransactionViewTypeService, + IViewType, TransactionDetailDataService, + ITransactionDetailPartInfo, + AnalyticsService, + TRACKED_EVENT_LIST, + DynamicPopupService +} from 'app/shared/services'; +import { UrlPath, UrlPathId } from 'app/shared/models'; +import { MessagePopupContainerComponent } from 'app/core/components/message-popup/message-popup-container.component'; + +@Component({ + selector: 'pp-transaction-detail-menu-container', + templateUrl: './transaction-detail-menu-container.component.html', + styleUrls: ['./transaction-detail-menu-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class TransactionDetailMenuContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + private transactionInfo: ITransactionMetaData; + viewTypeList: IViewType[]; + viewType: string; + partInfo: ITransactionDetailPartInfo; + constructor( + private changeDetectorRef: ChangeDetectorRef, + private storeHelperService: StoreHelperService, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private urlRouteManagerService: UrlRouteManagerService, + private transactionViewTypeService: TransactionViewTypeService, + private transactionDetailDataService: TransactionDetailDataService, + private analyticsService: AnalyticsService, + private dynamicPopupService: DynamicPopupService + ) {} + ngOnInit() { + this.viewTypeList = this.transactionViewTypeService.getViewTypeList(); + this.transactionViewTypeService.onChangeViewType$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((viewType: string) => { + this.viewType = viewType; + this.changeDetectorRef.detectChanges(); + }); + this.transactionDetailDataService.partInfo$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((partInfo: ITransactionDetailPartInfo) => { + this.partInfo = partInfo; + this.changeDetectorRef.detectChanges(); + }); + this.connectStore(); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private connectStore(): void { + this.storeHelperService.getTransactionData(this.unsubscribe).pipe( + filter((data: ITransactionMetaData) => { + if (data && data.application && data.agentId && data.traceId) { + return true; + } + return false; + }) + ).subscribe((transactionInfo: ITransactionMetaData) => { + this.transactionInfo = transactionInfo; + this.changeDetectorRef.detectChanges(); + }); + } + onSelectViewType(viewType: string): void { + this.analyticsService.trackEvent((TRACKED_EVENT_LIST as any)[`CLICK_${viewType}`]); + this.urlRouteManagerService.moveOnPage({ + url: [ + UrlPath.TRANSACTION_LIST, + this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getUrlStr(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.PERIOD).getValueWithTime(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.END_TIME).getEndTime(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.TRANSACTION_INFO), + viewType + ] + }); + } + onOpenDetailView(): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.OPEN_TRANSACTION_VIEW); + this.urlRouteManagerService.openPage([ + UrlPath.TRANSACTION_VIEW, + this.transactionInfo.agentId, + this.transactionInfo.traceId, + this.transactionInfo.collectorAcceptTime + '', + this.transactionInfo.spanId, + ]); + } + onOpenExtraView(param: any): void { + if (param.open) { + this.urlRouteManagerService.openPage(param.url); + } else { + this.dynamicPopupService.openPopup({ + data: { + title: 'Notice', + contents: this.partInfo.disableButtonMessage + }, + component: MessagePopupContainerComponent + }); + } + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/transaction-detail-menu-for-detail-container.component.css b/web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/transaction-detail-menu-for-detail-container.component.css new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/transaction-detail-menu-for-detail-container.component.html b/web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/transaction-detail-menu-for-detail-container.component.html new file mode 100644 index 000000000000..952f08f59823 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/transaction-detail-menu-for-detail-container.component.html @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/transaction-detail-menu-for-detail-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/transaction-detail-menu-for-detail-container.component.ts new file mode 100644 index 000000000000..93fa6b5ad4b2 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/transaction-detail-menu-for-detail-container.component.ts @@ -0,0 +1,79 @@ +import { Component, OnInit } from '@angular/core'; + +import { + NewUrlStateNotificationService, + UrlRouteManagerService, + TransactionViewTypeService, + IViewType, + TransactionDetailDataService, + ITransactionDetailPartInfo, + AnalyticsService, + TRACKED_EVENT_LIST, + DynamicPopupService +} from 'app/shared/services'; +import { UrlPath, UrlPathId } from 'app/shared/models'; +import { MessagePopupContainerComponent } from 'app/core/components/message-popup/message-popup-container.component'; + +@Component({ + selector: 'pp-transaction-detail-menu-for-detail-container', + templateUrl: './transaction-detail-menu-for-detail-container.component.html', + styleUrls: ['./transaction-detail-menu-for-detail-container.component.css'] +}) +export class TransactionDetailMenuForDetailContainerComponent implements OnInit { + viewTypeList: IViewType[]; + viewType: string; + partInfo: ITransactionDetailPartInfo; + constructor( + private newUrlStateNotificationService: NewUrlStateNotificationService, + private urlRouteManagerService: UrlRouteManagerService, + private transactionViewTypeService: TransactionViewTypeService, + private transactionDetailDataService: TransactionDetailDataService, + private analyticsService: AnalyticsService, + private dynamicPopupService: DynamicPopupService + ) {} + ngOnInit() { + this.viewTypeList = this.transactionViewTypeService.getViewTypeList(); + this.transactionViewTypeService.onChangeViewType$.subscribe((viewType: string) => { + this.viewType = viewType; + }); + this.transactionDetailDataService.partInfo$.subscribe((partInfo: ITransactionDetailPartInfo) => { + this.partInfo = partInfo; + }); + } + onSelectViewType(viewType: string): void { + this.analyticsService.trackEvent((TRACKED_EVENT_LIST as any)[`CLICK_${viewType}`]); + this.urlRouteManagerService.moveOnPage({ + url: [ + UrlPath.TRANSACTION_DETAIL, + this.newUrlStateNotificationService.getPathValue(UrlPathId.TRACE_ID), + this.newUrlStateNotificationService.getPathValue(UrlPathId.FOCUS_TIMESTAMP), + this.newUrlStateNotificationService.getPathValue(UrlPathId.AGENT_ID), + this.newUrlStateNotificationService.getPathValue(UrlPathId.SPAN_ID), + viewType + ] + }); + } + onOpenDetailView(): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.OPEN_TRANSACTION_VIEW); + this.urlRouteManagerService.openPage([ + UrlPath.TRANSACTION_VIEW, + this.newUrlStateNotificationService.getPathValue(UrlPathId.AGENT_ID), + this.newUrlStateNotificationService.getPathValue(UrlPathId.TRACE_ID), + this.newUrlStateNotificationService.getPathValue(UrlPathId.FOCUS_TIMESTAMP), + this.newUrlStateNotificationService.getPathValue(UrlPathId.SPAN_ID) + ]); + } + onOpenExtraView(param: any): void { + if (param.open) { + this.urlRouteManagerService.openPage(param.url); + } else { + this.dynamicPopupService.openPopup({ + data: { + title: 'Notice', + contents: this.partInfo.disableButtonMessage + }, + component: MessagePopupContainerComponent + }); + } + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/transaction-detail-menu.component.css b/web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/transaction-detail-menu.component.css new file mode 100644 index 000000000000..e2eb9160ec67 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/transaction-detail-menu.component.css @@ -0,0 +1,38 @@ +.l-wrapper { + display: flex; + flex-flow: row wrap; +} +.l-btn-group { + border:1px solid #e5e8ea; + height:32px; +} +.l-btn-group button { + background:#fff; + float:left; + padding:0 15px; + height:100%; +} +.l-btn-group button.active, .l-btn-group button:hover { + color:#fff; + font-weight:600; + background:#4a8fd2; +} +.l-transaction-state { + color: #FFF; + height: 32px; + padding: 8px; + font-size: 12px; + margin-left: 10px; +} +.l-transaction-complete { + background-color: #5CB85C; +} +.l-transaction-progress { + background-color: rgb(91, 192, 222); +} +.l-transaction-error { + background-color: #D9534F; +} +.l-log-info.disable { + color: #BBBABA; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/transaction-detail-menu.component.html b/web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/transaction-detail-menu.component.html new file mode 100644 index 000000000000..3bad8e5d42bf --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/transaction-detail-menu.component.html @@ -0,0 +1,10 @@ +
+
+ + + +
+ {{partInfo?.completeState}} +
diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/transaction-detail-menu.component.ts b/web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/transaction-detail-menu.component.ts new file mode 100644 index 000000000000..23e00c742ae5 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-detail-menu/transaction-detail-menu.component.ts @@ -0,0 +1,59 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; + +@Component({ + selector: 'pp-transaction-detail-menu', + templateUrl: './transaction-detail-menu.component.html', + styleUrls: ['./transaction-detail-menu.component.css'] +}) + +export class TransactionDetailMenuComponent implements OnInit { + @Input() viewTypeList: object[]; + @Input() viewType: string; + @Input() partInfo: any; + @Output() outSelectViewType: EventEmitter = new EventEmitter(); + @Output() outOpenDetailView: EventEmitter = new EventEmitter(); + @Output() outOpenExtraView: EventEmitter = new EventEmitter(); + constructor() {} + ngOnInit() {} + isCurrentView(viewType: string): boolean { + return this.viewType === viewType; + } + onSelectView(viewType: string): void { + if ( this.viewType === viewType ) { + return; + } + this.outSelectViewType.next(viewType); + } + openDetailView(): void { + this.outOpenDetailView.next(); + } + hasLogView(): boolean { + return this.partInfo && this.partInfo.logLinkEnable; + } + openLogView(): void { + if (this.partInfo.loggingTransactionInfo === true ) { + this.outOpenExtraView.next({ + open: true, + url: this.partInfo.logPageUrl + }); + } else { + this.outOpenExtraView.next({ + open: false, + message: this.partInfo.disableButtonMessage + }); + } + } + hasInfo(): boolean { + return this.partInfo && !this.partInfo.loggingTransactionInfo; + } + getStateClass(): string { + if ( this.partInfo ) { + return 'l-transaction-' + this.partInfo.completeState.toLowerCase(); + } else { + return ''; + } + } + hasState(): boolean { + return !!this.partInfo; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-list-bottom-contents/index.ts b/web/src/main/webapp/v2/src/app/core/components/transaction-list-bottom-contents/index.ts new file mode 100644 index 000000000000..c5afafe8738b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-list-bottom-contents/index.ts @@ -0,0 +1,37 @@ + +import { NgModule } from '@angular/core'; + +import { SharedModule } from 'app/shared'; +import { TransactionShortInfoModule } from 'app/core/components/transaction-short-info'; +import { TransactionDetailMenuModule } from 'app/core/components/transaction-detail-menu'; +import { TransactionSearchModule } from 'app/core/components/transaction-search'; +import { CallTreeModule } from 'app/core/components/call-tree'; +import { ServerMapModule } from 'app/core/components/server-map'; +import { TransactionTimelineModule } from 'app/core/components/transaction-timeline'; +import { TransactionTableGridModule } from 'app/core/components/transaction-table-grid'; +import { SyntaxHighlightPopupModule } from 'app/core/components/syntax-highlight-popup'; +import { TransactionListBottomContentsContainerComponent } from './transaction-list-bottom-contents-container.component'; +import { HelpViewerPopupModule } from 'app/core/components/help-viewer-popup'; + +@NgModule({ + declarations: [ + TransactionListBottomContentsContainerComponent + ], + imports: [ + SharedModule, + TransactionTableGridModule, + TransactionShortInfoModule, + TransactionDetailMenuModule, + TransactionSearchModule, + ServerMapModule, + TransactionTimelineModule, + CallTreeModule, + SyntaxHighlightPopupModule, + HelpViewerPopupModule + ], + exports: [ + TransactionListBottomContentsContainerComponent + ], + providers: [] +}) +export class TransactionListBottomContentsModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-list-bottom-contents/transaction-list-bottom-contents-container.component.css b/web/src/main/webapp/v2/src/app/core/components/transaction-list-bottom-contents/transaction-list-bottom-contents-container.component.css new file mode 100644 index 000000000000..849ae5c5f46e --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-list-bottom-contents/transaction-list-bottom-contents-container.component.css @@ -0,0 +1,26 @@ +.l-content-section { + height: 100%; + position: relative; +} +.l-middle-tool-box { + background-color: #edf2f8; +} +.l-component-wrapper { + width: 100%; + height: calc(100% - 84px); + position: relative; +} +.l-middle-tool-box { + display: flex; + flex-flow: row wrap; + height: 54px; + background-color: #edf2f8; + align-items: center; + justify-content: space-between; + padding: 0 25px; + position:relative; +} +.l-middle-tool-box, .l-middle-tool-box-tip { + color:#a8acb5; + font-size: 18px +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-list-bottom-contents/transaction-list-bottom-contents-container.component.html b/web/src/main/webapp/v2/src/app/core/components/transaction-list-bottom-contents/transaction-list-bottom-contents-container.component.html new file mode 100644 index 000000000000..c439859621b5 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-list-bottom-contents/transaction-list-bottom-contents-container.component.html @@ -0,0 +1,21 @@ +
+ +
+ + +
+ +   + +
+
+
+ + + +
+ + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-list-bottom-contents/transaction-list-bottom-contents-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/transaction-list-bottom-contents/transaction-list-bottom-contents-container.component.ts new file mode 100644 index 000000000000..58815fd3deed --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-list-bottom-contents/transaction-list-bottom-contents-container.component.ts @@ -0,0 +1,103 @@ +import { Component, OnInit, OnDestroy } from '@angular/core'; +import { Subject } from 'rxjs'; +import { filter } from 'rxjs/operators'; + +import { + StoreHelperService, + UrlRouteManagerService, + TransactionViewTypeService, VIEW_TYPE, + TransactionDetailDataService, + AnalyticsService, TRACKED_EVENT_LIST, DynamicPopupService +} from 'app/shared/services'; +import { Actions } from 'app/shared/store'; +import { UrlPath } from 'app/shared/models'; +import { HELP_VIEWER_LIST, HelpViewerPopupContainerComponent } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; + + +@Component({ + selector: 'pp-transaction-list-bottom-contents-container', + templateUrl: './transaction-list-bottom-contents-container.component.html', + styleUrls: ['./transaction-list-bottom-contents-container.component.css'] +}) +export class TransactionListBottomContentsContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + currentViewType: string; + transactionInfo: ITransactionMetaData; + useDisable = false; + showLoading = false; + constructor( + private storeHelperService: StoreHelperService, + private urlRouteManagerService: UrlRouteManagerService, + private transactionDetailDataService: TransactionDetailDataService, + private transactionViewTypeService: TransactionViewTypeService, + private analyticsService: AnalyticsService, + private dynamicPopupService: DynamicPopupService + ) {} + ngOnInit() { + this.transactionViewTypeService.onChangeViewType$.subscribe((viewType: string) => { + this.currentViewType = viewType; + }); + this.connectStore(); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private connectStore(): void { + this.storeHelperService.getTransactionData(this.unsubscribe).pipe( + filter((data: ITransactionMetaData) => { + if ( data && data.agentId && data.spanId && data.traceId && data.collectorAcceptTime ) { + return true; + } + return false; + }) + ).subscribe((transactionInfo: ITransactionMetaData) => { + if (this.transactionInfo) { + this.setDisplayGuide(true); + } + this.transactionInfo = transactionInfo; + this.transactionDetailDataService.getData( + transactionInfo.agentId, + transactionInfo.spanId, + transactionInfo.traceId, + transactionInfo.collectorAcceptTime + ).subscribe((transactionDetailInfo: ITransactionDetailData) => { + this.storeHelperService.dispatch(new Actions.UpdateTransactionDetailData(transactionDetailInfo)); + this.setDisplayGuide(false); + }); + }); + } + private setDisplayGuide(state: boolean): void { + this.showLoading = state; + this.useDisable = state; + } + isSameType(type: string): boolean { + return this.currentViewType === type; + } + isCallTreeView(): boolean { + return this.currentViewType === VIEW_TYPE.CALL_TREE || this.currentViewType === VIEW_TYPE.TIMELINE; + } + onOpenTransactionDetailPage(): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.OPEN_TRANSACTION_DETAIL); + this.urlRouteManagerService.openPage([ + UrlPath.TRANSACTION_DETAIL, + this.transactionInfo.traceId, + this.transactionInfo.collectorAcceptTime + '', + this.transactionInfo.agentId, + this.transactionInfo.spanId + ]); + } + onShowHelp($event: MouseEvent): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.TOGGLE_HELP_VIEWER, HELP_VIEWER_LIST.CALL_TREE); + const {left, top, width, height} = ($event.target as HTMLElement).getBoundingClientRect(); + + this.dynamicPopupService.openPopup({ + data: HELP_VIEWER_LIST.CALL_TREE, + coord: { + coordX: left + width / 2, + coordY: top + height / 2 + }, + component: HelpViewerPopupContainerComponent + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-search/index.ts b/web/src/main/webapp/v2/src/app/core/components/transaction-search/index.ts new file mode 100644 index 000000000000..ad549f27e85f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-search/index.ts @@ -0,0 +1,23 @@ + +import { NgModule } from '@angular/core'; +import { SharedModule } from 'app/shared'; +import { TransactionSearchComponent } from './transaction-search.component'; +import { TransactionSearchContainerComponent } from './transaction-search-container.component'; +import { TransactionSearchInteractionService } from './transaction-search-interaction.service'; + +@NgModule({ + declarations: [ + TransactionSearchComponent, + TransactionSearchContainerComponent + ], + imports: [ + SharedModule + ], + exports: [ + TransactionSearchContainerComponent + ], + providers: [ + TransactionSearchInteractionService + ] +}) +export class TransactionSearchModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-search/transaction-search-container.component.css b/web/src/main/webapp/v2/src/app/core/components/transaction-search/transaction-search-container.component.css new file mode 100644 index 000000000000..c3329127e37a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-search/transaction-search-container.component.css @@ -0,0 +1,3 @@ +:host { + display: flex; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-search/transaction-search-container.component.html b/web/src/main/webapp/v2/src/app/core/components/transaction-search/transaction-search-container.component.html new file mode 100644 index 000000000000..3b114adc6978 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-search/transaction-search-container.component.html @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-search/transaction-search-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/transaction-search/transaction-search-container.component.ts new file mode 100644 index 000000000000..34ce20fafd97 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-search/transaction-search-container.component.ts @@ -0,0 +1,73 @@ +import { Component, OnInit, ChangeDetectionStrategy, ChangeDetectorRef, OnDestroy } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import { combineLatest, Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + +import { + TranslateReplaceService, + TransactionViewTypeService, VIEW_TYPE, + AnalyticsService, TRACKED_EVENT_LIST +} from 'app/shared/services'; +import { TransactionSearchInteractionService, ISearchParam } from './transaction-search-interaction.service'; + +@Component({ + selector: 'pp-transaction-search-container', + templateUrl: './transaction-search-container.component.html', + styleUrls: ['./transaction-search-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class TransactionSearchContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + private i18nText: { [key: string]: string } = { + HAS_RESULTS: '', + EMPTY_RESULT: '' + }; + currentViewType: string; + useArgument: boolean; + resultMessage: string; + constructor( + private changeDetectorRef: ChangeDetectorRef, + private transactionSearchInteractionService: TransactionSearchInteractionService, + private translateService: TranslateService, + private translateReplaceService: TranslateReplaceService, + private transactionViewTypeService: TransactionViewTypeService, + private analyticsService: AnalyticsService, + ) {} + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + ngOnInit() { + this.getI18NText(); + this.transactionSearchInteractionService.onSearchResult$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((result: any) => { + const resultMessage = result.result === 0 ? this.i18nText.EMPTY_RESULT : this.i18nText.HAS_RESULTS; + this.resultMessage = this.translateReplaceService.replace(resultMessage, result.result); + this.changeDetectorRef.detectChanges(); + }); + this.transactionViewTypeService.onChangeViewType$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((viewType: string) => { + this.currentViewType = viewType; + this.useArgument = viewType === VIEW_TYPE.TIMELINE ? false : true; + this.changeDetectorRef.detectChanges(); + }); + } + private getI18NText(): void { + combineLatest( + this.translateService.get('TRANSACTION.HAS_RESULTS'), + this.translateService.get('TRANSACTION.EMPTY_RESULT') + ).subscribe((i18n: string[]) => { + this.i18nText.HAS_RESULTS = i18n[0]; + this.i18nText.EMPTY_RESULT = i18n[1]; + }); + } + onSearch(params: ISearchParam): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.SEARCH_TRANSACTION, `Search Type: ${params.type}`); + this.transactionSearchInteractionService.setSearchParmas({ + type: params.type, + query: params.query === 'self' ? +params.query : params.query + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-search/transaction-search-interaction.service.ts b/web/src/main/webapp/v2/src/app/core/components/transaction-search/transaction-search-interaction.service.ts new file mode 100644 index 000000000000..5ea90f9494ce --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-search/transaction-search-interaction.service.ts @@ -0,0 +1,34 @@ +import { Injectable } from '@angular/core'; +import { Subject, Observable } from 'rxjs'; + +export interface ISearchParam { + type: string; + query: string | number; +} + +@Injectable() +export class TransactionSearchInteractionService { + private search = new Subject(); + private searchResult = new Subject(); + private moveRow = new Subject(); + + onSearch$: Observable; + onSearchResult$: Observable; + onMoveRow$: Observable; + + constructor() { + this.onSearch$ = this.search.asObservable(); + this.onSearchResult$ = this.searchResult.asObservable(); + this.onMoveRow$ = this.moveRow.asObservable(); + } + setSearchParmas(params: ISearchParam): void { + this.search.next(params); + } + setSearchResult(result: any): void { + this.searchResult.next(result); + } + setRow(id: string): void { + this.moveRow.next(id); + } +} + diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-search/transaction-search.component.css b/web/src/main/webapp/v2/src/app/core/components/transaction-search/transaction-search.component.css new file mode 100644 index 000000000000..17de9d4033e7 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-search/transaction-search.component.css @@ -0,0 +1,60 @@ +:host { + display: flex; +} +.l-search-group-wrap { + display: flex; + flex-flow: row wrap; + padding: 0 10px; + font-size: 13px; + justify-content: flex-end; + position:relative; +} +.l-search-group-wrap .fas { + color:#a8acb5; + font-size:18px; +} +.l-search-group-wrap .l-search-group2 { + height:32px; +} +.l-search-group-wrap .l-search-group2 input { + float: left; + display: inline-block; + height: 100%; + border: 1px solid #4a8fd2; + padding:0 10px; + background:#fff; +} +.l-search-group-wrap button { + margin-left: 10px; +} +.l-search-group-wrap .l-error-message { + width: 300px; + color:#e95459; + margin-left: 10px; +} +select { + appearance: none; + -webkit-appearance: none; + outline: 0; + border-radius: 0px; + color: #FFF; + float: left; + height: 100%; + display: inline-block; + padding: 7px 10px; + font-size: 13px; + font-weight: 600; + background-color: #4A8FD2; + width: 100px; +} +.l-search-group-wrap .l-search-group2 .fa-angle-down { + position: absolute; + color: #FFF; + top: 8px; + left: 94px; + font-size: 15px; +} +.l-error-message { + margin-left: 10px; + margin-top: 8px; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-search/transaction-search.component.html b/web/src/main/webapp/v2/src/app/core/components/transaction-search/transaction-search.component.html new file mode 100644 index 000000000000..e8dfa4f79a7e --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-search/transaction-search.component.html @@ -0,0 +1,13 @@ +
+
+ + + +
+ + {{resultMessage}} +
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-search/transaction-search.component.ts b/web/src/main/webapp/v2/src/app/core/components/transaction-search/transaction-search.component.ts new file mode 100644 index 000000000000..47e65fc8ea93 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-search/transaction-search.component.ts @@ -0,0 +1,37 @@ +import { Component, Renderer2, OnInit, OnChanges, SimpleChanges, Output, Input, EventEmitter, ViewChild, ElementRef } from '@angular/core'; + +@Component({ + selector: 'pp-transaction-search', + templateUrl: './transaction-search.component.html', + styleUrls: ['./transaction-search.component.css'] +}) +export class TransactionSearchComponent implements OnInit, OnChanges { + @ViewChild('searchType') searchType: ElementRef; + @Output() outSearch: EventEmitter<{type: string, query: string}> = new EventEmitter(); + @Input() viewType: string; + @Input() useArgument: boolean; + @Input() resultMessage = ''; + inputValue: string; + constructor(private renderer: Renderer2) { } + ngOnInit() {} + ngOnChanges(changes: SimpleChanges) { + if (changes['viewType'] && changes['viewType'].currentValue) { + this.onClear(); + // this.renderer.setAttribute(this.searchType.nativeElement.options[0], 'selected', 'selected'); + this.searchType.nativeElement.options[0].selected = true; + } + } + onSearch(type: string): void { + const query = this.inputValue.trim(); + if (query !== '') { + this.outSearch.emit({ + type: type, + query: query + }); + } + } + onClear() { + this.inputValue = ''; + this.resultMessage = ''; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-short-info/index.ts b/web/src/main/webapp/v2/src/app/core/components/transaction-short-info/index.ts new file mode 100644 index 000000000000..c61c3250261c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-short-info/index.ts @@ -0,0 +1,21 @@ + +import { NgModule } from '@angular/core'; +import { MatTooltipModule } from '@angular/material'; +import { SharedModule } from 'app/shared'; +import { TransactionShortInfoContainerComponent } from './transaction-short-info-container.component'; + +@NgModule({ + declarations: [ + TransactionShortInfoContainerComponent + ], + imports: [ + MatTooltipModule, + SharedModule + ], + exports: [ + TransactionShortInfoContainerComponent, + ], + providers: [ + ] +}) +export class TransactionShortInfoModule {} diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-short-info/transaction-short-info-container.component.css b/web/src/main/webapp/v2/src/app/core/components/transaction-short-info/transaction-short-info-container.component.css new file mode 100644 index 000000000000..66d2c542b316 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-short-info/transaction-short-info-container.component.css @@ -0,0 +1,22 @@ +.l-route { + display: flex; + flex-flow: row wrap; + background:#506078; + height: 30px; + align-items: center; + justify-content: space-around; +} +.l-route > div { + width: 25%; + color:#fff; + display: block; + position:relative; + font-size: 12px; + overflow: hidden; + white-space: nowrap; + padding-left: 6px; + text-overflow: ellipsis; +} +.l-route > div:last-child { + padding-right: 6px; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-short-info/transaction-short-info-container.component.html b/web/src/main/webapp/v2/src/app/core/components/transaction-short-info/transaction-short-info-container.component.html new file mode 100644 index 000000000000..c094da947429 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-short-info/transaction-short-info-container.component.html @@ -0,0 +1,6 @@ +
+
ApplicationName : {{applicationName}}
+
AgentId : {{agentId}}
+
TransactionId : {{transactionId}}
+
Path : {{path}}
+
diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-short-info/transaction-short-info-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/transaction-short-info/transaction-short-info-container.component.ts new file mode 100644 index 000000000000..4ba05fa28947 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-short-info/transaction-short-info-container.component.ts @@ -0,0 +1,41 @@ +import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { Subject } from 'rxjs'; +import { filter } from 'rxjs/operators'; +import { StoreHelperService } from 'app/shared/services'; + +@Component({ + selector: 'pp-transaction-short-info-container', + templateUrl: './transaction-short-info-container.component.html', + styleUrls: ['./transaction-short-info-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class TransactionShortInfoContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + path: string; + agentId: string; + transactionId: string; + applicationName: string; + constructor( + private changeDetectorRef: ChangeDetectorRef, + private storeHelperService: StoreHelperService) {} + ngOnInit() { + this.connectStore(); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private connectStore(): void { + this.storeHelperService.getTransactionDetailData(this.unsubscribe).pipe( + filter((transactionDetailInfo: ITransactionDetailData) => { + return transactionDetailInfo ? true : false; + }) + ).subscribe((transactionDetailInfo: ITransactionDetailData) => { + this.path = transactionDetailInfo.applicationName; + this.agentId = transactionDetailInfo.agentId; + this.transactionId = transactionDetailInfo.transactionId; + this.applicationName = transactionDetailInfo.applicationId; + this.changeDetectorRef.detectChanges(); + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-table-grid/index.ts b/web/src/main/webapp/v2/src/app/core/components/transaction-table-grid/index.ts new file mode 100644 index 000000000000..04602b816255 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-table-grid/index.ts @@ -0,0 +1,28 @@ + +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { AgGridModule } from 'ag-grid-angular/main'; + +import { TransactionTableGridComponent } from './transaction-table-grid.component'; +import { TransactionTableGridContainerComponent } from './transaction-table-grid-container.component'; +import { TransactionMetaDataService } from './transaction-meta-data.service'; +import { MessagePopupModule } from 'app/core/components/message-popup'; + +@NgModule({ + declarations: [ + TransactionTableGridComponent, + TransactionTableGridContainerComponent + ], + imports: [ + CommonModule, + AgGridModule.withComponents([]), + MessagePopupModule + ], + exports: [ + TransactionTableGridContainerComponent + ], + providers: [ + TransactionMetaDataService + ] +}) +export class TransactionTableGridModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-table-grid/transaction-meta-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/transaction-table-grid/transaction-meta-data.service.ts new file mode 100644 index 000000000000..b1f86b814196 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-table-grid/transaction-meta-data.service.ts @@ -0,0 +1,191 @@ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpHeaders } from '@angular/common/http'; +import { Subject, Observable } from 'rxjs'; +import { takeUntil, filter } from 'rxjs/operators'; +import { TranslateService } from '@ngx-translate/core'; + +import { UrlPath, UrlPathId } from 'app/shared/models'; +import { + UrlRouteManagerService, + NewUrlStateNotificationService, + WindowRefService, + DynamicPopupService +} from 'app/shared/services'; +import { MessagePopupContainerComponent } from 'app/core/components/message-popup/message-popup-container.component'; + +@Injectable() +export class TransactionMetaDataService { + private unsubscribe: Subject = new Subject(); + private requestURL = 'transactionmetadata.pinpoint'; + private retrieveErrorMessage: string; + private lastFetchedIndex = 0; + private maxLoadLength = 100; + private requestSourceData: any[]; + private requestCount = 0; + private countStatus = [0, 0]; + private outTransactionDataLoad: Subject = new Subject(); + private outTransactionDataRange: Subject = new Subject(); + private outTransactionDataCount: Subject = new Subject(); + + onTransactionDataLoad$: Observable; + onTransactionDataRange$: Observable; + onTransactionDataCount$: Observable; + + constructor( + private http: HttpClient, + private windowRefService: WindowRefService, + private translateService: TranslateService, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private urlRouteManagerService: UrlRouteManagerService, + private dynamicPopupService: DynamicPopupService + ) { + this.onTransactionDataLoad$ = this.outTransactionDataLoad.asObservable(); + this.onTransactionDataRange$ = this.outTransactionDataRange.asObservable(); + this.onTransactionDataCount$ = this.outTransactionDataCount.asObservable(); + + this.translateService.get('TRANSACTION_LIST.TRANSACTION_RETRIEVE_ERROR').subscribe((text: string) => { + this.retrieveErrorMessage = text; + }); + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe), + filter((urlService: NewUrlStateNotificationService) => { + return urlService && urlService.hasValue(UrlPathId.APPLICATION, UrlPathId.PERIOD, UrlPathId.END_TIME); + }) + ).subscribe(() => { + this.requestSourceData = this.getInfoFromOpener(); + this.countStatus[1] = this.requestSourceData.length; + this.unsubscribe.next(); + this.unsubscribe.complete(); + }); + } + loadData(): void { + if (this.requestSourceData.length === 0) { + this.dynamicPopupService.openPopup({ + data: { + title: 'Notice', + contents: this.retrieveErrorMessage, + }, + component: MessagePopupContainerComponent, + onCloseCallback: () => { + this.urlRouteManagerService.moveOnPage({ + url: [ + UrlPath.MAIN, + this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getUrlStr(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.PERIOD).getValueWithTime(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.END_TIME).getEndTime() + ] + }); + } + }); + } else { + this.http.post<{ metadata: ITransactionMetaData[] }>(this.requestURL, this.makeRequestOptionsArgs(), { + headers: new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded') + }).subscribe((responseData: { metadata: ITransactionMetaData[] }) => { + const responseLength = responseData.metadata.length; + if (this.requestCount !== responseLength) { + if (this.requestCount > responseLength) { + this.countStatus[1] -= (this.requestCount - responseLength); + } else { + this.countStatus[1] += (responseLength - this.requestCount); + } + } + if (responseLength === 0) { + this.outFullRange(); + } else { + this.countStatus[0] += responseLength; + if (this.countStatus[0] === this.countStatus[1]) { + this.outFullRange(); + } else { + this.outTransactionDataRange.next([ + responseData.metadata[responseLength - 1].collectorAcceptTime, + this.newUrlStateNotificationService.getPathValue(UrlPathId.END_TIME).getDate().valueOf() + ]); + } + this.outTransactionDataLoad.next(responseData.metadata); + } + this.outTransactionDataCount.next(this.countStatus); + }); + } + } + moreLoad(): void { + this.loadData(); + } + private outFullRange(): void { + this.outTransactionDataRange.next([ + this.newUrlStateNotificationService.getStartTimeToNumber(), + this.newUrlStateNotificationService.getEndTimeToNumber() + ]); + } + private makeRequestOptionsArgs(): string { + const requestStr = []; + const len = this.requestSourceData.length; + const maxLen = Math.min(len, this.maxLoadLength + this.lastFetchedIndex); + for ( let index = 0, dataIndex = this.lastFetchedIndex ; dataIndex < maxLen ; index++, dataIndex++ ) { + // transactionId, x, y + requestStr.push(`I${index}=${this.requestSourceData[dataIndex][0]}`); + requestStr.push(`T${index}=${this.requestSourceData[dataIndex][1]}`); + requestStr.push(`R${index}=${this.requestSourceData[dataIndex][2]}`); + } + this.requestCount = requestStr.length / 3; + this.lastFetchedIndex = maxLen; + return requestStr.join('&'); + // load from parent window; + // 브라우저 윈도우 이름으로 아래의 정보를 넘김 + // applicationName + // oDragXY.fromX + // oDragXY.toX + // oDragXY.fromY + // oDragXY.toY + // agent + // inclue? + // Success/Failed 정보는 현재 window.opener.htoScatter['applicationName'] 에 저장해 둔 Scatter 객체가 가지고 있음. + // window.htoScatter[''] + // + // transactionList 데이터의 총합은 이전 window에서 가져옴. + // indicator의 range는 + // 가져온 데이터 중 가장 예전의 collectorAcceptTime ~ endTime + // 가져온 데이터의 갯수가 0 이거나 total 보다 커지면 끝 + // 요청 갯수와 응답 갯수가 다른 경우 total 값을 계속 update 해줘야 함. + // 10개 transaction 데이터를 요청했는데 11개 혹은 12개가 오는 케이스가 있음. + // --한번에 요청하는 갯수는 일단 최대 100개 + // const postBody = 'I0=FrontWAS2^1512710981192^11123&T0=1512718752125&R0=2&I1=FrontWAS3^1512711055472^10928&T1=1512718752105&R1=2&I2=FrontWAS2^1512710981192^11122&T2=1512718751113&R2=2&I3=FrontWAS3^1512711055472^10927&T3=1512718751092&R3=2&I4=FrontWAS1^1512711025001^3447&T4=1512718750828&R4=792&I5=FrontWAS4^1512711041898^3430&T5=1512718750448&R5=337&I6=FrontWAS4^1512711041898^3430&T6=1512718750440&R6=8&I7=FrontWAS2^1512710981192^11121&T7=1512718750103&R7=2&I8=FrontWAS3^1512711055472^10926&T8=1512718750081&R8=2&I9=FrontWAS2^1512710981192^11120&T9=1512718749819&R9=9&I10=FrontWAS2^1512710981192^11119&T10=1512718749621&R10=432&I11=FrontWAS2^1512710981192^11119&T11=1512718749617&R11=8&I12=FrontWAS3^1512711055472^10924&T12=1512718749564&R12=933&I13=FrontWAS4^1512711041898^3429&T13=1512718749558&R13=13&I14=FrontWAS2^1512710981192^11118&T14=1512718749091&R14=3&I15=FrontWAS3^1512711055472^10925&T15=1512718749070&R15=2&I16=FrontWAS2^1512710981192^11117&T16=1512718748080&R16=2&I17=FrontWAS3^1512711055472^10923&T17=1512718748059&R17=2&I18=FrontWAS2^1512710981192^11116&T18=1512718747069&R18=2&I19=FrontWAS3^1512711055472^10922&T19=1512718747047&R19=2'; + // return postBody; + } + private getInfoFromOpener(): any[] { + if (this.windowRefService.nativeWindow.opener) { + const paramsInfo = this.windowRefService.nativeWindow.name.split('|'); + if (paramsInfo.length === 7) { + const params = { + application: paramsInfo[0], + fromX: paramsInfo[1], + toX: paramsInfo[2], + fromY: paramsInfo[3], + toY: paramsInfo[4], + agent: paramsInfo[5], + types: paramsInfo[6].split(',') + }; + try { + const scatterChartInstance = this.windowRefService.nativeWindow.opener.scatterChartInstance[params.application]; + if (scatterChartInstance) { + return scatterChartInstance.getDataByRange(params.fromX, params.toX, params.fromY, params.toY, params.agent, params.types); + } + } catch (error) { + return []; + } + } + } + return this.checkUrlInfo(); + } + private checkUrlInfo(): any[] { + if (this.newUrlStateNotificationService.hasValue(UrlPathId.TRANSACTION_INFO)) { + const transactionInfo = this.newUrlStateNotificationService.getPathValue(UrlPathId.TRANSACTION_INFO).split('-'); + const length = transactionInfo.length; + return [[ + transactionInfo.slice(0, length - 2).join('-'), + transactionInfo[length - 2], + transactionInfo[length - 1] + ]]; + } + return []; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-table-grid/transaction-table-grid-container.component.css b/web/src/main/webapp/v2/src/app/core/components/transaction-table-grid/transaction-table-grid-container.component.css new file mode 100644 index 000000000000..392058fac2cc --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-table-grid/transaction-table-grid-container.component.css @@ -0,0 +1,8 @@ +:host { + display: flex; + width: 100%; + height: 100%; +} +pp-transaction-table-grid { + width: 100%; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-table-grid/transaction-table-grid-container.component.html b/web/src/main/webapp/v2/src/app/core/components/transaction-table-grid/transaction-table-grid-container.component.html new file mode 100644 index 000000000000..9ee6a177f6b0 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-table-grid/transaction-table-grid-container.component.html @@ -0,0 +1,10 @@ + \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-table-grid/transaction-table-grid-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/transaction-table-grid/transaction-table-grid-container.component.ts new file mode 100644 index 000000000000..f92ce7eaa258 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-table-grid/transaction-table-grid-container.component.ts @@ -0,0 +1,156 @@ +import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit, OnDestroy } from '@angular/core'; +import { Subject } from 'rxjs'; +import { takeUntil, filter } from 'rxjs/operators'; + +import { + UrlRouteManagerService, + NewUrlStateNotificationService, + GutterEventService, + StoreHelperService, + AnalyticsService, TRACKED_EVENT_LIST +} from 'app/shared/services'; +import { Actions } from 'app/shared/store'; +import { UrlPath, UrlPathId } from 'app/shared/models'; +import { IGridData } from './transaction-table-grid.component'; +import { TransactionMetaDataService } from './transaction-meta-data.service'; + + +@Component({ + selector: 'pp-transaction-table-grid-container', + templateUrl: './transaction-table-grid-container.component.html', + styleUrls: ['./transaction-table-grid-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class TransactionTableGridContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + areaResized: any; + selectedTraceId: string; + transactionData: ITransactionMetaData[] = []; + transactionDataForAgGrid: IGridData[]; + transactionAddedDataForAgGrid: IGridData[]; + transactionIndex = 1; + timezone: string; + dateFormat: string; + constructor( + private changeDetectorRef: ChangeDetectorRef, + private storeHelperService: StoreHelperService, + private urlRouteManagerService: UrlRouteManagerService, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private transactionMetaDataService: TransactionMetaDataService, + private gutterEventService: GutterEventService, + private analyticsService: AnalyticsService + ) {} + ngOnInit() { + this.connectStore(); + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((urlService: NewUrlStateNotificationService) => { + if (urlService.hasValue(UrlPathId.TRANSACTION_INFO)) { + this.selectedTraceId = urlService.getPathValue(UrlPathId.TRANSACTION_INFO).replace(/(.*)-\d*-\d*$/, '$1'); + this.changeDetectorRef.detectChanges(); + this.dispatchTransaction(); + } + if (this.transactionData.length === 0) { + this.transactionMetaDataService.loadData(); + } + }); + this.connectMetaDataService(); + this.gutterEventService.onGutterResized$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((params: any) => { + this.areaResized = params; + this.changeDetectorRef.detectChanges(); + }); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private connectStore(): void { + this.storeHelperService.getTimezone(this.unsubscribe).subscribe((timezone: string) => { + this.timezone = timezone; + this.changeDetectorRef.detectChanges(); + }); + this.storeHelperService.getDateFormat(this.unsubscribe, 2).subscribe((dateFormat: string) => { + this.dateFormat = dateFormat; + this.changeDetectorRef.detectChanges(); + }); + } + private connectMetaDataService(): void { + this.transactionMetaDataService.onTransactionDataLoad$.pipe( + takeUntil(this.unsubscribe), + filter((responseData: any) => { + if ( responseData.length > 0 ) { + return responseData; + } + }) + ).subscribe((responseData: ITransactionMetaData[]) => { + this.transactionData = this.transactionData.concat(responseData || []); + if ( this.transactionDataForAgGrid ) { + this.transactionAddedDataForAgGrid = this.makeGridData(responseData); + this.changeDetectorRef.detectChanges(); + } else { + this.transactionDataForAgGrid = this.makeGridData(responseData); + this.changeDetectorRef.detectChanges(); + this.dispatchTransaction(); + } + }); + } + private makeGridData(transactionData: ITransactionMetaData[]): IGridData[] { + return transactionData.map((data: ITransactionMetaData) => { + return this.makeRow(data); + }); + } + private makeRow(gridData: ITransactionMetaData): IGridData { + return { + id: this.transactionIndex++, + startTime: gridData.startTime, + path: gridData.application, + responseTime: gridData.elapsed, + exception: gridData.exception, + agentId: gridData.agentId, + clientIp: gridData.remoteAddr, + traceId: gridData.traceId, + spanId: gridData.spanId, + collectorAcceptTime: gridData.collectorAcceptTime + } as IGridData; + } + private findTransaction(traceId: string): ITransactionMetaData { + for ( let i = 0 ; i < this.transactionData.length ; i++ ) { + if (this.transactionData[i].traceId === traceId) { + return this.transactionData[i]; + } + } + return null; + } + private dispatchTransaction(): void { + if ( this.selectedTraceId ) { + const transaction = this.findTransaction(this.selectedTraceId); + if ( transaction ) { + this.storeHelperService.dispatch(new Actions.UpdateTransactionData(transaction)); + } + } + } + onSelectTransaction(transactionShortInfo: { traceId: string, collectorAcceptTime: number, elapsed: number }): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.SELECT_TRANSACTION); + this.urlRouteManagerService.moveOnPage({ + url: [ + UrlPath.TRANSACTION_LIST, + this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getUrlStr(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.PERIOD).getValueWithTime(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.END_TIME).getEndTime(), + `${transactionShortInfo.traceId}-${transactionShortInfo.collectorAcceptTime}-${transactionShortInfo.elapsed}` + ] + }); + } + onOpenTransactionView(transactionShortInfo: { agentId: string, traceId: string, collectorAcceptTime: number, spanId: string }): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.OPEN_TRANSACTION_VIEW); + this.urlRouteManagerService.openPage([ + UrlPath.TRANSACTION_VIEW, + transactionShortInfo.agentId, + transactionShortInfo.traceId, + transactionShortInfo.collectorAcceptTime + '', + transactionShortInfo.spanId, + ]); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-table-grid/transaction-table-grid.component.css b/web/src/main/webapp/v2/src/app/core/components/transaction-table-grid/transaction-table-grid.component.css new file mode 100644 index 000000000000..98c57593c8c3 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-table-grid/transaction-table-grid.component.css @@ -0,0 +1,78 @@ +:host { + width: 100%; + height: 100%; +} +#transaction-table .ag-root { + border: none; + font-size: 12px; + font-family: 'Open Sans', sans-serif; +} +#transaction-table .ag-cell { + padding: 4px; + border-right: 1px solid #e6e8ec; + font-family: 'Open Sans', sans-serif; +} +#transaction-table .ag-column-moving .ag-cell { + transition: left 0.2s; +} +#transaction-table .ag-header-cell-moving .ag-header-cell-label { + opacity: 0; + filter: alpha(opacity=0); +} +#transaction-table .ag-header-cell-moving { + background-color: #bebebe; +} +#transaction-table .ag-header-cell-moving-clone { + border-right: 1px solid #808080; + border-left: 1px solid #808080; + background-color: rgba(220,220,220,0.8); +} +#transaction-table .ag-header { + background: #f6f8fb; + border-bottom: 1px solid #e6e8ec; + line-height: 2; +} +#transaction-table .ag-header-cell { + font-size: 12px; + font-weight: 600; + font-family: 'Open Sans', sans-serif; + border-right: 1px solid #e6e8ec; + padding-left: 2px; + padding-right: 2px; +} +#transaction-table .ag-header-cell-resize:after { + border-right: none; +} +#transaction-table .ag-header-cell-label { + padding: 4px; +} +#transaction-table .ag-group-expanded span { + margin-right: 4px; +} +#transaction-table .ag-row:hover { + background-color: #F5F5F5; +} +#transaction-table .ag-row { + cursor: pointer; + line-height: 2; + border-bottom: 1px solid #e6e8ec; +} +#transaction-table .ag-body { + background-color: #ffffff; +} +#transaction-table .ag-body-viewport { + background-color: #ffffff; +} +#transaction-table .ag-menu { + background-color: #ffffff; + border: 1px solid grey; +} +#transaction-table .fa { + font-size: 14px; +} +#transaction-table .ag-row-exception { + background-color: #fff1f1; +} +#transaction-table .ag-row-selected { + background-color: #e4f5e3; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-table-grid/transaction-table-grid.component.html b/web/src/main/webapp/v2/src/app/core/components/transaction-table-grid/transaction-table-grid.component.html new file mode 100644 index 000000000000..d31fd385a61b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-table-grid/transaction-table-grid.component.html @@ -0,0 +1,8 @@ + + \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-table-grid/transaction-table-grid.component.ts b/web/src/main/webapp/v2/src/app/core/components/transaction-table-grid/transaction-table-grid.component.ts new file mode 100644 index 000000000000..864a46b1cb1a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-table-grid/transaction-table-grid.component.ts @@ -0,0 +1,190 @@ +import { Component, OnInit, OnChanges, SimpleChanges, Input, Output, EventEmitter, ViewEncapsulation } from '@angular/core'; +import * as moment from 'moment-timezone'; +import { GridOptions } from 'ag-grid'; + +export interface IGridData { + id: number; + startTime: number; + path: string; + responseTime: number; + exception: number; + agentId: string; + clientIp: string; + traceId: string; + spanId: string; + collectorAcceptTime: number; +} + +@Component({ + selector: 'pp-transaction-table-grid', + templateUrl: './transaction-table-grid.component.html', + styleUrls: ['./transaction-table-grid.component.css'], + encapsulation: ViewEncapsulation.None +}) +export class TransactionTableGridComponent implements OnInit, OnChanges { + gridOptions: GridOptions; + @Input() rowData: IGridData[]; + @Input() addData: IGridData[]; + @Input() resized: any; + @Input() currentTraceId: string; + @Input() timezone: string; + @Input() dateFormat: string; + @Output() outSelectTransaction: EventEmitter = new EventEmitter(); + @Output() outSelectTransactionView: EventEmitter = new EventEmitter(); + + constructor() {} + ngOnInit() { + this.initGridOptions(); + } + ngOnChanges(changes: SimpleChanges) { + if (changes['addData'] && changes['addData']['currentValue']) { + this.gridOptions.api.updateRowData({ + add: this.addData + }); + } + if (changes['resized'] && !changes['resized']['firstChange'] && changes['resized']['currentValue']) { + this.gridOptions.api.doLayout(); + } + if (changes['timezone'] && changes['timezone'].firstChange === false) { + this.gridOptions.api.refreshCells({ + columns: ['startTime'], + force: true + }); + } + if (changes['dateFormat'] && changes['dateFormat'].firstChange === false) { + this.gridOptions.api.refreshCells({ + columns: ['startTime'], + force: true + }); + } + } + private initGridOptions() { + this.gridOptions = { + rowHeight: 30, + columnDefs: this.makeColumnDefs(), + animateRows: true, + rowSelection: 'single', + headerHeight: 34, + enableSorting: true, + enableColResize: true, + getRowClass: (params: any) => { + return params.data.exception === 1 ? 'ag-row-exception' : ''; + }, + onCellClicked: (params: any) => { + if ( params.colDef.field === 'path' ) { + const tag = params.event.target.tagName.toUpperCase(); + if (tag === 'I' || tag === 'BUTTON' ) { + this.outSelectTransactionView.next({ + agentId: params.data.agentId, + traceId: params.data.traceId, + collectorAcceptTime: params.data.collectorAcceptTime, + spanId: params.data.spanId + }); + return; + } + } + if ( this.currentTraceId === params.data.traceId ) { + return; + } + this.currentTraceId = params.data.traceId; + this.outSelectTransaction.next({ + traceId: params.data.traceId, + collectorAcceptTime: params.data.collectorAcceptTime, + elapsed: params.data.responseTime + }); + } + }; + } + onGridReady(params: GridOptions): void { + this.gridOptions.api.forEachNode((node) => { + if (this.currentTraceId === node.data.traceId) { + node.setSelected(true); + } + }); + } + onGridSizeChanged(params: GridOptions): void { + this.gridOptions.api.sizeColumnsToFit(); + } + private makeColumnDefs(): any { + return [ + { + headerName: '#', + field: 'id', + width: 40, + cellStyle: () => { + return {'text-align': 'center'}; + }, + suppressSizeToFit: true + }, + { + headerName: 'StartTime', + field: 'startTime', + width: 170, + valueFormatter: (params: any) => { + return params.value === 0 ? '' : moment(params.value).tz(this.timezone).format(this.dateFormat); + }, + suppressSizeToFit: true + }, + { + headerName: 'Path', + field: 'path', + width: 370, + cellRenderer: (params: any) => { + return '  ' + params.value; + }, + tooltipField: 'path' + }, + { + headerName: 'Res(ms)', + field: 'responseTime', + width: 75, + cellStyle: this.alignRightCellStyle, + sort: 'desc', + valueFormatter: (params: any) => { + return params.value === '' ? '' : new Intl.NumberFormat().format(params.value); + }, + suppressSizeToFit: true + }, + { + headerName: 'Exception', + field: 'exception', + width: 85, + cellStyle: () => { + return {'text-align': 'center'}; + }, + cellRenderer: (params: any) => { + if ( params.value === 1 ) { + return ''; + } else { + return ''; + } + }, + suppressSizeToFit: true + }, + { + headerName: 'Agent', + field: 'agentId', + width: 170, + tooltipField: 'agentId' + }, + { + headerName: 'Client IP', + field: 'clientIp', + width: 120 + }, + { + headerName: 'Transaction', + field: 'traceId', + width: 270, + suppressSizeToFit: true, + tooltipField: 'traceId' + } + ]; + } + argumentCellStyle(): any { + return {'text-align': 'left'}; + } + alignRightCellStyle(): any { + return {'text-align': 'right'}; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-timeline/index.ts b/web/src/main/webapp/v2/src/app/core/components/transaction-timeline/index.ts new file mode 100644 index 000000000000..063ac3df4d09 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-timeline/index.ts @@ -0,0 +1,20 @@ + +import { NgModule } from '@angular/core'; +import { SharedModule } from 'app/shared'; +import { TransactionTimelineComponent } from './transaction-timeline.component'; +import { TransactionTimelineContainerComponent } from './transaction-timeline-container.component'; + +@NgModule({ + declarations: [ + TransactionTimelineComponent, + TransactionTimelineContainerComponent + ], + imports: [ + SharedModule + ], + exports: [ + TransactionTimelineContainerComponent + ], + providers: [] +}) +export class TransactionTimelineModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-timeline/transaction-timeline-container.component.css b/web/src/main/webapp/v2/src/app/core/components/transaction-timeline/transaction-timeline-container.component.css new file mode 100644 index 000000000000..a8962602d61a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-timeline/transaction-timeline-container.component.css @@ -0,0 +1,6 @@ +:host { + position: relative; + width: 100%; + height: 100%; + background-color: #FFF; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-timeline/transaction-timeline-container.component.html b/web/src/main/webapp/v2/src/app/core/components/transaction-timeline/transaction-timeline-container.component.html new file mode 100644 index 000000000000..d12702a43363 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-timeline/transaction-timeline-container.component.html @@ -0,0 +1,10 @@ + \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-timeline/transaction-timeline-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/transaction-timeline/transaction-timeline-container.component.ts new file mode 100644 index 000000000000..118097111b9c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-timeline/transaction-timeline-container.component.ts @@ -0,0 +1,125 @@ +import { Component, OnInit, OnDestroy, ViewChild, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { Subject } from 'rxjs'; +import { takeUntil, filter } from 'rxjs/operators'; + +import { + StoreHelperService, + NewUrlStateNotificationService, + UrlRouteManagerService, + TransactionViewTypeService, VIEW_TYPE, + AnalyticsService, TRACKED_EVENT_LIST +} from 'app/shared/services'; +import { UrlPath, UrlPathId } from 'app/shared/models'; +import { TransactionSearchInteractionService, ISearchParam } from 'app/core/components/transaction-search/transaction-search-interaction.service'; +import { TransactionTimelineComponent } from './transaction-timeline.component'; + +@Component({ + selector: 'pp-transaction-timeline-container', + templateUrl: './transaction-timeline-container.component.html', + styleUrls: ['./transaction-timeline-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) + +export class TransactionTimelineContainerComponent implements OnInit, OnDestroy { + @ViewChild(TransactionTimelineComponent) private transactionTimelineComponent: TransactionTimelineComponent; + private unsubscribe: Subject = new Subject(); + hiddenComponent = true; + keyIndex: any; + startTime: number; + endTime: number; + filteredData: any; + barRatio: number; + constructor( + private changeDetectorRef: ChangeDetectorRef, + private storeHelperService: StoreHelperService, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private urlRouteManagerService: UrlRouteManagerService, + private transactionViewTypeService: TransactionViewTypeService, + private transactionSearchInteractionService: TransactionSearchInteractionService, + private analyticsService: AnalyticsService + ) {} + ngOnInit() { + this.connectStore(); + this.transactionViewTypeService.onChangeViewType$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((viewType: string) => { + if ( viewType === VIEW_TYPE.TIMELINE ) { + this.hiddenComponent = false; + } else { + this.hiddenComponent = true; + } + this.changeDetectorRef.detectChanges(); + }); + this.transactionSearchInteractionService.onSearch$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((params: ISearchParam) => { + if (this.hiddenComponent === true) { + return; + } + this.transactionSearchInteractionService.setSearchResult({ + type: params.type, + query: params.query, + result: this.transactionTimelineComponent.searchRow(params) + }); + }); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private connectStore(): void { + this.storeHelperService.getTransactionDetailData(this.unsubscribe).pipe( + filter((transactionDetailInfo: any) => { + return transactionDetailInfo && transactionDetailInfo.transactionId ? true : false; + }) + ).subscribe((transactionDetailInfo: ITransactionDetailData) => { + this.startTime = transactionDetailInfo.callStackStart; + this.endTime = transactionDetailInfo.callStackEnd; + this.keyIndex = transactionDetailInfo.callStackIndex; + this.barRatio = this.getBarRatio(transactionDetailInfo); + this.filteredData = this.filterCallStack(transactionDetailInfo); + this.changeDetectorRef.detectChanges(); + + }); + } + private getBarRatio(tInfo: ITransactionDetailData): number { + return 1000 / (tInfo.callStack[0][tInfo.callStackIndex.end] - tInfo.callStack[0][tInfo.callStackIndex.begin]); + } + private filterCallStack(rowData: ITransactionDetailData): any { + const newCallStacks: any = []; + rowData.callStack.forEach((call: any) => { + if (call[this.keyIndex.isMethod] && !call[this.keyIndex.excludeFromTimeline] && call[this.keyIndex.service] !== '') { + newCallStacks.push(call); + } + }); + return newCallStacks; + } + onSelectTransaction(id: string): void { + if (this.newUrlStateNotificationService.getStartPath() === UrlPath.TRANSACTION_DETAIL) { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.SELECT_TRANSACTION_IN_TIMELINE); + this.urlRouteManagerService.moveOnPage({ + url: [ + UrlPath.TRANSACTION_DETAIL, + this.newUrlStateNotificationService.getPathValue(UrlPathId.TRACE_ID), + this.newUrlStateNotificationService.getPathValue(UrlPathId.FOCUS_TIMESTAMP), + this.newUrlStateNotificationService.getPathValue(UrlPathId.AGENT_ID), + this.newUrlStateNotificationService.getPathValue(UrlPathId.SPAN_ID), + VIEW_TYPE.CALL_TREE, + id + ] + }); + } else { + this.urlRouteManagerService.moveOnPage({ + url: [ + UrlPath.TRANSACTION_LIST, + this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION), + this.newUrlStateNotificationService.getPathValue(UrlPathId.PERIOD), + this.newUrlStateNotificationService.getPathValue(UrlPathId.END_TIME), + this.newUrlStateNotificationService.getPathValue(UrlPathId.TRANSACTION_INFO), + VIEW_TYPE.CALL_TREE, + id + ] + }); + } + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-timeline/transaction-timeline.component.css b/web/src/main/webapp/v2/src/app/core/components/transaction-timeline/transaction-timeline.component.css new file mode 100644 index 000000000000..c160df1dc113 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-timeline/transaction-timeline.component.css @@ -0,0 +1,50 @@ +.l-wrapper { + height: 100%; + overflow-y: auto; + background-color: #FFF; +} +.l-timeline-bar { + width: 100%; + height: 20px; + font-size: 11px; + font-family: Verdana; + border-style: dashed !important; + border-bottom: 1px solid #D3D3D3; + text-shadow: 1px 1px 0 #eee, 1px -1px 0 #eee, -1px 1px 0 #eee, -1px -1px 0 #eee, 1px 0px 0 #eee, 0px 1px 0 #eee, -1px 0px 0 #eee, 0px -1px 0 #eee; +} +.l-timeline-bar > div { + color: #000; + cursor: pointer; + margin-top: 1px; + padding-top: 2px; + margin-bottom: 1px; + padding-bottom: 2px; +} +.l-timeline-bar-frame { + width: 100%; + overflow-x: visible; + padding-left: 4px; +} +.l-timeline-bar-frame:hover { + box-shadow: 1px 1px 1px -1px rgba(0, 0, 0, 0.75); + font-weight: bold; +} +.l-timeline-bar-frame > span { + top: 0px; + position: relative; + white-space: nowrap; +} +.l-timeline-bar-frame span.before { + left: -70px; + display: none; + position: absolute; + text-align: right; + white-space: nowrap; +} +.l-timeline-bar-frame span.after { + display: none; + white-space: nowrap; +} +.l-timeline-bar-selected { + background-color: orange !important; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-timeline/transaction-timeline.component.html b/web/src/main/webapp/v2/src/app/core/components/transaction-timeline/transaction-timeline.component.html new file mode 100644 index 000000000000..dab49abe5292 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-timeline/transaction-timeline.component.html @@ -0,0 +1,14 @@ +
+
+
+
+ + {{getStartTime(call)}}ms + [{{call[keyIndex.applicationName]}}] / {{call[keyIndex.apiType]}} ({{call[keyIndex.end] - call[keyIndex.begin]}}ms) + / {{call[keyIndex.apiType]}} ({{call[keyIndex.end] - call[keyIndex.begin]}}ms) + ( {{getStartTime(call)}}ms ) + +
+
+
+
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-timeline/transaction-timeline.component.ts b/web/src/main/webapp/v2/src/app/core/components/transaction-timeline/transaction-timeline.component.ts new file mode 100644 index 000000000000..96dd4e838779 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-timeline/transaction-timeline.component.ts @@ -0,0 +1,102 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; + +@Component({ + selector: 'pp-transaction-timeline', + templateUrl: './transaction-timeline.component.html', + styleUrls: ['./transaction-timeline.component.css'] +}) + +export class TransactionTimelineComponent implements OnInit { + @Input() data: any[]; + @Input() keyIndex: { [key: string]: number}; + @Input() startTime: number; + @Input() endTime: number; + @Input() barRatio: number; + @Output() outSelectTransaction: EventEmitter = new EventEmitter(); + + selectedRow: number[] = []; + colorSet: { [key: string]: string } = {}; + constructor() {} + ngOnInit() {} + private calcColor(str: string): string { + if (!(str in this.colorSet)) { + const color = []; + let hash = 0; + for ( let i = 0 ; i < str.length ; i++ ) { + hash = str.charCodeAt(i) + ((hash << 5) - hash); + } + for ( let i = 0 ; i < 3 ; i++ ) { + color.push(('00' + ((hash >> i * 8) & 0xFF).toString(16)).slice(-2)); + } + this.colorSet[str] = color.map((v: string) => { + return parseInt(v, 16); + }).join(','); + } + return this.colorSet[str]; + } + private getWidth(call: any): number { + return ((call[this.keyIndex.end] - call[this.keyIndex.begin]) * this.barRatio) + 0.9; + } + getLineStyle(call: any): object { + return { + 'background-color': 'rgba(' + this.calcColor(call[this.keyIndex.applicationName]) + ', 0.1)', + }; + } + getStyles(call: any): object { + return { + 'width': this.getWidth(call) + 'px', + 'background-color': 'rgb(' + this.calcColor(call[this.keyIndex.applicationName]) + ')', + 'margin-left': this.getMarginLeft(call) + 'px' + }; + } + getTop(index: number): number { + return index * 21; + } + isSelectedRow(index: number): boolean { + return this.selectedRow.indexOf(index) !== -1; + } + getStartTime(call: any): number { + return call[this.keyIndex.begin] - this.startTime; + } + + getMarginLeft(call: any): number { + return ((call[this.keyIndex.begin] - this.startTime) * this.barRatio) + 0.9; + } + onSelectCall(index: number, call: any): void { + this.outSelectTransaction.emit(call[this.keyIndex.id]); + } + searchRow({type, query}: {type: string, query: string | number}): number { + let resultCount = 0; + this.selectedRow = []; + const fnCompare = { + 'self': (data: any, value: string): boolean => { + return data[this.keyIndex.executionMilliseconds] >= value; + }, + 'argument': (data: any, value: number): boolean => { + return data[this.keyIndex.arguments].indexOf(value) !== -1; + } + }; + this.data.forEach((call: any, index: number) => { + if (fnCompare[type](call, query)) { + resultCount++; + this.selectedRow.push(index); + } + }); + if (resultCount > 0) { + // move row + } + return resultCount; + } + showApplicationName(call: any, index: number): boolean { + if (index === 0) { + return true; + } else { + if (this.data[index - 1][this.keyIndex.applicationName] === call[this.keyIndex.applicationName]) { + return false; + } else { + return true; + } + } + } + onScrollDown() {} +} diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-view-bottom-contents/index.ts b/web/src/main/webapp/v2/src/app/core/components/transaction-view-bottom-contents/index.ts new file mode 100644 index 000000000000..58df3c301061 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-view-bottom-contents/index.ts @@ -0,0 +1,32 @@ + +import { NgModule } from '@angular/core'; +import { SharedModule } from 'app/shared'; +import { TransactionShortInfoModule } from 'app/core/components/transaction-short-info'; +import { TransactionDetailMenuModule } from 'app/core/components/transaction-detail-menu'; +import { TransactionSearchModule } from 'app/core/components/transaction-search'; +import { CallTreeModule } from 'app/core/components/call-tree'; +import { ServerMapModule } from 'app/core/components/server-map'; +import { TransactionTimelineModule } from 'app/core/components/transaction-timeline'; +import { SyntaxHighlightPopupModule } from 'app/core/components/syntax-highlight-popup'; +import { TransactionViewBottomContentsContainerComponent } from './transaction-view-bottom-contents-container.component'; + +@NgModule({ + declarations: [ + TransactionViewBottomContentsContainerComponent + ], + imports: [ + SharedModule, + TransactionShortInfoModule, + TransactionDetailMenuModule, + TransactionSearchModule, + ServerMapModule, + TransactionTimelineModule, + CallTreeModule, + SyntaxHighlightPopupModule + ], + exports: [ + TransactionViewBottomContentsContainerComponent + ], + providers: [] +}) +export class TransactionViewBottomContentsModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-view-bottom-contents/transaction-view-bottom-contents-container.component.css b/web/src/main/webapp/v2/src/app/core/components/transaction-view-bottom-contents/transaction-view-bottom-contents-container.component.css new file mode 100644 index 000000000000..57778b22a899 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-view-bottom-contents/transaction-view-bottom-contents-container.component.css @@ -0,0 +1,5 @@ +.l-wrapper { + width: 100%; + height: calc(100% - 30px); + position: relative; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-view-bottom-contents/transaction-view-bottom-contents-container.component.html b/web/src/main/webapp/v2/src/app/core/components/transaction-view-bottom-contents/transaction-view-bottom-contents-container.component.html new file mode 100644 index 000000000000..716743ea91ec --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-view-bottom-contents/transaction-view-bottom-contents-container.component.html @@ -0,0 +1,5 @@ +
+ +
diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-view-bottom-contents/transaction-view-bottom-contents-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/transaction-view-bottom-contents/transaction-view-bottom-contents-container.component.ts new file mode 100644 index 000000000000..1bb50aa04e27 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-view-bottom-contents/transaction-view-bottom-contents-container.component.ts @@ -0,0 +1,11 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'pp-transaction-view-bottom-contents-container', + templateUrl: './transaction-view-bottom-contents-container.component.html', + styleUrls: ['./transaction-view-bottom-contents-container.component.css'] +}) +export class TransactionViewBottomContentsContainerComponent implements OnInit { + constructor() {} + ngOnInit() {} +} diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-view-top-contents/index.ts b/web/src/main/webapp/v2/src/app/core/components/transaction-view-top-contents/index.ts new file mode 100644 index 000000000000..4118d5a531b8 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-view-top-contents/index.ts @@ -0,0 +1,22 @@ + +import { NgModule } from '@angular/core'; +import { SharedModule } from 'app/shared'; +import { InspectorChartModule } from 'app/core/components/inspector-chart'; +import { ServerMapModule } from 'app/core/components/server-map'; +import { TransactionViewTopContentsContainerComponent } from './transaction-view-top-contents-container.component'; + +@NgModule({ + declarations: [ + TransactionViewTopContentsContainerComponent + ], + imports: [ + SharedModule, + InspectorChartModule, + ServerMapModule + ], + exports: [ + TransactionViewTopContentsContainerComponent + ], + providers: [] +}) +export class TransactionViewTopContentsModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-view-top-contents/transaction-view-top-contents-container.component.css b/web/src/main/webapp/v2/src/app/core/components/transaction-view-top-contents/transaction-view-top-contents-container.component.css new file mode 100644 index 000000000000..a43561ac9715 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-view-top-contents/transaction-view-top-contents-container.component.css @@ -0,0 +1,55 @@ +:host { + display: block; + width: 100%; + height: 100%; +} +.l-transaction-view-top { + height: 100%; + display: flex; +} +.l-left-section, .l-right-section { + width: 50%; + height: 100%; + padding: 5px 25px +} +.l-left-section { + background-color: #fff; +} +.l-tab-menu-list { + border-bottom: 1px solid #e6e8ec; +} +.l-tab-menu-list:after { + content: ""; + display: block; + width: 100%; + height: 0; + visibility: hidden; + clear: both; +} +.l-tab-menu-list-item { + float: left; +} +.l-tab-menu-list-item a { + cursor: pointer; + display:inline-block; + font-size: 13px; + color: #666; + padding: 14px 15px; + border: 1px solid transparent; + border-top-left-radius: 3px; + border-top-right-radius: 3px; + line-height: 1em; +} +.l-tab-menu-list-item:hover a { + border-color: #e6e8ec #e6e8ec #fff; +} +.active a { + color: #fff; + background: #4a8fd2; +} +.active a:hover { + border-color: transparent; +} +.l-right-section { + position: relative; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-view-top-contents/transaction-view-top-contents-container.component.html b/web/src/main/webapp/v2/src/app/core/components/transaction-view-top-contents/transaction-view-top-contents-container.component.html new file mode 100644 index 000000000000..3473a8ce1d5c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-view-top-contents/transaction-view-top-contents-container.component.html @@ -0,0 +1,11 @@ +
+ +
+ +
+
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/transaction-view-top-contents/transaction-view-top-contents-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/transaction-view-top-contents/transaction-view-top-contents-container.component.ts new file mode 100644 index 000000000000..d50192d0957c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/transaction-view-top-contents/transaction-view-top-contents-container.component.ts @@ -0,0 +1,79 @@ +import { Component, OnInit, OnDestroy, ComponentFactoryResolver, ViewChild, ViewContainerRef, ComponentRef, ChangeDetectionStrategy } from '@angular/core'; + +import { TransactionViewJVMHeapChartContainerComponent } from 'app/core/components/inspector-chart/transaction-view-jvm-heap-chart-container.component'; +import { TransactionViewJVMNonHeapChartContainerComponent } from 'app/core/components/inspector-chart/transaction-view-jvm-non-heap-chart-container.component'; +import { TransactionViewCPUChartContainerComponent } from 'app/core/components/inspector-chart/transaction-view-cpu-chart-container.component'; +import { AnalyticsService, TRACKED_EVENT_LIST } from 'app/shared/services'; + +@Component({ + selector: 'pp-transaction-view-top-contents-container', + templateUrl: './transaction-view-top-contents-container.component.html', + styleUrls: ['./transaction-view-top-contents-container.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class TransactionViewTopContentsContainerComponent implements OnInit, OnDestroy { + @ViewChild('chartContainer', { read: ViewContainerRef }) chartContainer: ViewContainerRef; + + tabList: any[]; + private componentMap = new Map(); + private chartComponentList = [TransactionViewJVMHeapChartContainerComponent, TransactionViewJVMNonHeapChartContainerComponent, TransactionViewCPUChartContainerComponent]; + private aliveComponentRef: ComponentRef; + + constructor( + private componentFactoryResolver: ComponentFactoryResolver, + private analyticsService: AnalyticsService + ) {} + + ngOnInit() { + this.initTabList(); + this.initComponentMap(); + this.loadComponent(this.tabList.find((tab) => tab.isActive).id); + } + + ngOnDestroy() { + this.aliveComponentRef.destroy(); + } + + onTabClick(tabName: string): void { + this.setActiveTab(tabName); + this.clearContainer(); + this.loadComponent(tabName); + } + + private clearContainer(): void { + this.chartContainer.clear(); + } + + private initTabList(): void { + this.tabList = [{ + id: 'heap', + displayText: 'Heap', + isActive: true + }, + { + id: 'nonHeap', + displayText: 'Non Heap', + isActive: false + }, + { + id: 'cpu', + displayText: 'CPU Load', + isActive: false + }]; + } + + private initComponentMap(): void { + this.tabList.forEach((value, i) => this.componentMap.set(value.id, this.chartComponentList[i])); + } + + private loadComponent(key: string): void { + this.analyticsService.trackEvent((TRACKED_EVENT_LIST as any)[`CLICK_${key}`]); + const componentFactory = this.componentFactoryResolver.resolveComponentFactory(this.componentMap.get(key)); + + this.aliveComponentRef = this.chartContainer.createComponent(componentFactory); + } + + private setActiveTab(tabName: string): void { + this.tabList.forEach((tab) => tab.isActive = tabName === tab.id); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/user-group/index.ts b/web/src/main/webapp/v2/src/app/core/components/user-group/index.ts new file mode 100644 index 000000000000..8f6f9408d990 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/user-group/index.ts @@ -0,0 +1,34 @@ + +import { NgModule } from '@angular/core'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { SharedModule } from 'app/shared'; +import { UserGroupComponent } from './user-group.component'; +import { UserGroupCreateAndUpdateComponent } from './user-group-create-and-update.component'; +import { UserGroupContainerComponent } from './user-group-container.component'; +import { UserGroupInteractionService } from './user-group-interaction.service'; +import { UserGroupDataService } from './user-group-data.service'; + +@NgModule({ + declarations: [ + UserGroupComponent, + UserGroupCreateAndUpdateComponent, + UserGroupContainerComponent + ], + imports: [ + FormsModule, + ReactiveFormsModule, + SharedModule + ], + exports: [ + UserGroupContainerComponent + ], + entryComponents: [ + UserGroupComponent, + UserGroupContainerComponent + ], + providers: [ + UserGroupInteractionService, + UserGroupDataService + ] +}) +export class UserGroupModule { } diff --git a/web/src/main/webapp/v2/src/app/core/components/user-group/user-group-container.component.css b/web/src/main/webapp/v2/src/app/core/components/user-group/user-group-container.component.css new file mode 100644 index 000000000000..ad3f282c7bbb --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/user-group/user-group-container.component.css @@ -0,0 +1,57 @@ +:host { + position: relative; +} +.l-user-group-wrapper { + color: #333; + border: 1px solid #e5e8f0; + height: 100%; + display: grid; + position: relative; + font-size: 13px; + font-family: 'Open Sans', sans-serif; + font-weight: 600; + grid-template-columns: auto; + grid-template-rows: 48px 53px 416px; + +} +.l-user-group-title { + display: flex; + padding: 0px 15px; + align-items: center; + justify-content: space-between; + background-color: #f6f8fb; + border-bottom: 1px solid #e5e8f0; +} +.l-user-group-search { + padding: 10px 15px; + border-bottom: 1px solid #e5e8f0; +} +.l-user-group-list { + overflow-y: auto; +} +.l-message { + width: 100%; + height: 100%; + z-index: 15; + display: flex; + position: absolute; + align-items: center; + justify-content: center; + background-color: rgba(226, 226, 226, 0.8); +} +.l-message span { + color: #ff8c00; + text-align: center; +} +.l-message button { + top: 0px; + right: 0px; + position: absolute; +} +.l-search-input { + width: 100%; + color: #b3b3b4; + border: 1px solid #469ae4; + padding: 6px 11px; + font-size: 13px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/user-group/user-group-container.component.html b/web/src/main/webapp/v2/src/app/core/components/user-group/user-group-container.component.html new file mode 100644 index 000000000000..6f0fb2b2b5a0 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/user-group/user-group-container.component.html @@ -0,0 +1,35 @@ +
+
+ User Group ({{userGroupList.length}}) + +
+ +
+ +
+
+ + {{message}} +
+ + + +
diff --git a/web/src/main/webapp/v2/src/app/core/components/user-group/user-group-container.component.ts b/web/src/main/webapp/v2/src/app/core/components/user-group/user-group-container.component.ts new file mode 100644 index 000000000000..3b65babe3a05 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/user-group/user-group-container.component.ts @@ -0,0 +1,139 @@ +import { Component, OnInit, OnDestroy } from '@angular/core'; +import { Subject, combineLatest } from 'rxjs'; +import { TranslateService } from '@ngx-translate/core'; +import { WebAppSettingDataService, TranslateReplaceService } from 'app/shared/services'; +import { UserGroupInteractionService } from './user-group-interaction.service'; +import { UserGroupDataService, IUserGroup, IUserGroupCreated, IUserGroupDeleted } from './user-group-data.service'; + +@Component({ + selector: 'pp-user-group-container', + templateUrl: './user-group-container.component.html', + styleUrls: ['./user-group-container.component.css'] +}) +export class UserGroupContainerComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + private searchQuery = ''; + i18nText: { [key: string]: string } = { + NAME_LABEL: '', + USER_GROUP_NAME_REQUIRED: '', + USER_GROUP_NAME_MIN_LENGTH: '', + USER_GROUP_SERACH_MIN_LENGTH: '' + }; + USER_GROUP_NAME_MIN_LENGTH = 3; + SEARCH_MIN_LENGTH = 2; + searchUseEnter = false; + userGroupList: IUserGroup[] = []; + useDisable = true; + showLoading = true; + showCreate = false; + message = ''; + selectedUserGroupId = ''; + constructor( + private webAppSettingDataService: WebAppSettingDataService, + private userGroupDataService: UserGroupDataService, + private translateService: TranslateService, + private translateReplaceService: TranslateReplaceService, + private userGroupInteractionService: UserGroupInteractionService + ) {} + ngOnInit() { + this.getI18NText(); + this.webAppSettingDataService.getUserId().subscribe((userId: string = '') => { + this.getUserGroupList(userId === '' ? null : { + userId: userId + }); + }); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private getI18NText(): void { + combineLatest( + this.translateService.get('COMMON.MIN_LENGTH'), + this.translateService.get('COMMON.REQUIRED'), + this.translateService.get('CONFIGURATION.COMMON.NAME') + ).subscribe((i18n: string[]) => { + this.i18nText.USER_GROUP_NAME_MIN_LENGTH = this.translateReplaceService.replace(i18n[0], this.USER_GROUP_NAME_MIN_LENGTH); + this.i18nText.USER_GROUP_SEARCH_MIN_LENGTH = this.translateReplaceService.replace(i18n[0], this.SEARCH_MIN_LENGTH); + this.i18nText.USER_GROUP_NAME_REQUIRED = this.translateReplaceService.replace(i18n[1], i18n[2]); + this.i18nText.NAME_LABEL = i18n[2]; + }); + } + private getUserGroupList(param: any): void { + this.userGroupDataService.retrieve(param).subscribe((userGroupData: IUserGroup[]) => { + this.userGroupList = userGroupData; + this.hideProcessing(); + }, (error: string) => { + this.hideProcessing(); + this.message = error; + }); + } + private makeUserGroupQuery(userId: string): any { + return this.searchQuery === '' ? { + userId: userId + } : { + userGroupId: this.searchQuery + }; + } + onRemoveUserGroup(id: string): void { + this.showProcessing(); + this.webAppSettingDataService.getUserId().subscribe((userId: string = '') => { + this.userGroupDataService.remove(id, userId).subscribe((response: IUserGroupDeleted) => { + if (response.result === 'SUCCESS') { + this.userGroupInteractionService.setSelectedUserGroup(''); + this.getUserGroupList(this.makeUserGroupQuery(userId)); + } else { + this.hideProcessing(); + } + }, (error: string) => { + this.hideProcessing(); + this.message = error; + }); + }); + } + onCreateUserGroup(newUserGroupName: string): void { + this.showProcessing(); + this.webAppSettingDataService.getUserId().subscribe((userId: string = '') => { + this.userGroupDataService.create(newUserGroupName, userId).subscribe((userGroupData: IUserGroupCreated) => { + this.userGroupList.push({ + id: newUserGroupName, + number: userGroupData.number + }); + this.hideProcessing(); + }, (error: string) => { + this.hideProcessing(); + this.message = error; + }); + }); + } + onCloseCreateUserPopup(): void { + this.showCreate = false; + } + onShowCreateUserPopup(): void { + this.showCreate = true; + } + hasMessage(): boolean { + return this.message !== ''; + } + onSelectUserGroup(userGroupId: string): void { + this.selectedUserGroupId = userGroupId; + this.userGroupInteractionService.setSelectedUserGroup(userGroupId); + } + onCloseMessage(): void { + this.message = ''; + } + onSearch(query: string): void { + this.searchQuery = query; + this.webAppSettingDataService.getUserId().subscribe((userId: string = '') => { + this.getUserGroupList(this.makeUserGroupQuery(userId)); + }); + } + private showProcessing(): void { + this.useDisable = true; + this.showLoading = true; + } + private hideProcessing(): void { + this.useDisable = false; + this.showLoading = false; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/user-group/user-group-create-and-update.component.css b/web/src/main/webapp/v2/src/app/core/components/user-group/user-group-create-and-update.component.css new file mode 100644 index 000000000000..7cfb2acc6531 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/user-group/user-group-create-and-update.component.css @@ -0,0 +1,50 @@ +.l-wrapper { + top: 0px; + left: 0px; + width: 100%; + height: 100%; + z-index: 15; + display: flex; + padding: 0px 20px; + position: absolute; + align-items: center; + flex-direction: column; + justify-content: center; + background-color: rgba(226, 226, 226, 0.9); +} +.l-wrapper h1 { + margin-bottom: 6px; +} +.l-wrapper form { + width: 100%; +} +.l-wrapper input { + width: 100%; + border: 1px solid #469ae4; + padding: 6px 11px; + font-size: 13px; + margin-bottom: 2px; + background-color: #FFF; +} +.l-wrapper .l-create { + width: 100%; + margin-top: 6px; +} +.l-wrapper .l-close { + top: 0px; + right: 0px; + position: absolute; +} +.l-wrapper .l-alert { + color: #FFF; + padding: 4px; + margin-bottom: 4px; + background-color: #000; +} +.ng-valid[required], .ng-valid.required { + border-left: 5px solid #42A948 !important; +} + +.ng-invalid:not(form) { + border-left: 5px solid #a94442 !important; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/user-group/user-group-create-and-update.component.html b/web/src/main/webapp/v2/src/app/core/components/user-group/user-group-create-and-update.component.html new file mode 100644 index 000000000000..ca4fb51ada9a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/user-group/user-group-create-and-update.component.html @@ -0,0 +1,15 @@ +
+ +

{{title}}

+
+
+ + +
+
{{nameGuide}}
+
{{nameLengthGuide}}
+
+
+ +
+
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/core/components/user-group/user-group-create-and-update.component.ts b/web/src/main/webapp/v2/src/app/core/components/user-group/user-group-create-and-update.component.ts new file mode 100644 index 000000000000..3d58be7d835c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/user-group/user-group-create-and-update.component.ts @@ -0,0 +1,41 @@ +import { Component, OnInit, AfterViewChecked, Input, Output, EventEmitter } from '@angular/core'; +import { FormControl, FormGroup, Validators } from '@angular/forms'; + +@Component({ + selector: 'pp-user-group-create-and-update', + templateUrl: './user-group-create-and-update.component.html', + styleUrls: ['./user-group-create-and-update.component.css'] +}) +export class UserGroupCreateAndUpdateComponent implements OnInit, AfterViewChecked { + @Input() showCreate = false; + @Input() minLength: number; + @Input() nameLabel: string; + @Input() nameGuide: string; + @Input() nameLengthGuide: string; + @Output() outCreateUserGroup: EventEmitter = new EventEmitter(); + @Output() outClose: EventEmitter = new EventEmitter(); + newUserGroupModel = ''; + userGroupForm: FormGroup; + title = 'User Group'; + constructor() {} + ngOnInit() { + this.userGroupForm = new FormGroup({ + 'userGroupName': new FormControl(this.newUserGroupModel, [ + Validators.required, + Validators.minLength(3) + ]) + }); + } + ngAfterViewChecked() {} + onCreateOrUpdate(): void { + this.outCreateUserGroup.emit(this.userGroupForm.get('userGroupName').value); + this.onClose(); + } + onClose(): void { + this.outClose.emit(); + this.userGroupForm.reset(); + } + get userGroupName() { + return this.userGroupForm.get('userGroupName'); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/user-group/user-group-data.service.ts b/web/src/main/webapp/v2/src/app/core/components/user-group/user-group-data.service.ts new file mode 100644 index 000000000000..87184a37fd74 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/user-group/user-group-data.service.ts @@ -0,0 +1,67 @@ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpErrorResponse } from '@angular/common/http'; +import { Observable, throwError } from 'rxjs'; +import { catchError, tap } from 'rxjs/operators'; + +export interface IUserGroup { + id: string; + number: string; +} +export interface IUserGroupCreated { + number: string; +} +export interface IUserGroupDeleted { + result: string; +} + +@Injectable() +export class UserGroupDataService { + url = 'userGroup.pinpoint'; + constructor(private http: HttpClient) { } + retrieve(param?: any): Observable { + return this.http.get(this.url, this.makeRequestOptionsArgs(param)).pipe( + tap((data: any) => { + if (data.errorCode) { + throw data.errorMessage; + } + }), + catchError(this.handleError) + ); + } + create(id: string, userId: string): Observable { + return this.http.post(this.url, this.makeCreateRemoveOptionsArgs(id, userId)).pipe( + tap((data: any) => { + if (data.errorCode) { + throw data.errorMessage; + } + }), + catchError(this.handleError) + ); + } + remove(id: string, userId: string): Observable { + return this.http.request('delete', this.url, { + body: this.makeCreateRemoveOptionsArgs(id, userId) + }).pipe( + tap((data: any) => { + if (data.errorCode) { + throw data.errorMessage; + } + }), + catchError(this.handleError) + ); + } + private handleError(error: HttpErrorResponse) { + return throwError(error.statusText || error); + } + private makeRequestOptionsArgs(param?: any): object { + return param ? { + params: param + } : {}; + } + private makeCreateRemoveOptionsArgs(id: string, userId: string): object { + return { + id: id, + userId: userId + }; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/components/user-group/user-group-interaction.service.ts b/web/src/main/webapp/v2/src/app/core/components/user-group/user-group-interaction.service.ts new file mode 100644 index 000000000000..0b3269a50bb9 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/user-group/user-group-interaction.service.ts @@ -0,0 +1,16 @@ +import { Injectable } from '@angular/core'; +import { Subject, Observable } from 'rxjs'; + +@Injectable() +export class UserGroupInteractionService { + private outSelect = new Subject(); + onSelect$: Observable; + + constructor() { + this.onSelect$ = this.outSelect.asObservable(); + } + setSelectedUserGroup(id: string): void { + this.outSelect.next(id); + } +} + diff --git a/web/src/main/webapp/v2/src/app/core/components/user-group/user-group.component.css b/web/src/main/webapp/v2/src/app/core/components/user-group/user-group.component.css new file mode 100644 index 000000000000..3d5b434688a4 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/user-group/user-group.component.css @@ -0,0 +1,31 @@ +li { + color: #333; + height: 28px; + margin: 0; + cursor: pointer; + padding: 6px 15px 0px 15px; + font-size: 13px; +} +li:hover { + background:#fff0f0; +} +li.selected { + background:#fff0f0; +} +.l-item-wrapper { + display: block; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} +.l-item-wrapper > div { + float: right; +} +.l-item-wrapper .fa-trash-alt { + color: #b3b6bf; + font-size: 14px; +} +.l-item-wrapper .fa-check { + color: #F00; + margin-left: 10px; +} diff --git a/web/src/main/webapp/v2/src/app/core/components/user-group/user-group.component.html b/web/src/main/webapp/v2/src/app/core/components/user-group/user-group.component.html new file mode 100644 index 000000000000..712b23f8bb0a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/user-group/user-group.component.html @@ -0,0 +1,12 @@ +
    +
  • +
    +
    + + + +
    + {{group.id}} +
    +
  • +
diff --git a/web/src/main/webapp/v2/src/app/core/components/user-group/user-group.component.ts b/web/src/main/webapp/v2/src/app/core/components/user-group/user-group.component.ts new file mode 100644 index 000000000000..930e8188ab19 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/components/user-group/user-group.component.ts @@ -0,0 +1,42 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; +import { IUserGroup } from './user-group-data.service'; + +@Component({ + selector: 'pp-user-group', + templateUrl: './user-group.component.html', + styleUrls: ['./user-group.component.css'] +}) +export class UserGroupComponent implements OnInit { + @Input() groupList: IUserGroup[]; + @Output() outRemove: EventEmitter = new EventEmitter(); + @Output() outSelected: EventEmitter = new EventEmitter(); + private removeConformId = ''; + private selectedUserGroup: string; + constructor() {} + ngOnInit() {} + onRemove(id: string): void { + this.removeConformId = id; + } + onSelect($event: MouseEvent, userGroup: IUserGroup): void { + if ($event.target['tagName'].toLowerCase() === 'button') { + return; + } + if (this.selectedUserGroup !== userGroup.id) { + this.selectedUserGroup = userGroup.id; + this.outSelected.emit(this.selectedUserGroup); + } + } + onCancelRemove(): void { + this.removeConformId = ''; + } + onConfirmRemove(): void { + this.outRemove.emit(this.removeConformId); + this.removeConformId = ''; + } + isRemoveTarget(id: string): boolean { + return this.removeConformId === id; + } + isSelected(id: string): boolean { + return this.selectedUserGroup === id; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/httpInterceptor/index.ts b/web/src/main/webapp/v2/src/app/core/httpInterceptor/index.ts new file mode 100644 index 000000000000..200ca4b3c85d --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/httpInterceptor/index.ts @@ -0,0 +1,7 @@ +import { HTTP_INTERCEPTORS } from '@angular/common/http'; + +import { MarkingInterceptor } from './marking-interceptor'; + +export const httpInterceptorProviders = [ + { provide: HTTP_INTERCEPTORS, useClass: MarkingInterceptor, multi: true } +]; diff --git a/web/src/main/webapp/v2/src/app/core/httpInterceptor/marking-interceptor.ts b/web/src/main/webapp/v2/src/app/core/httpInterceptor/marking-interceptor.ts new file mode 100644 index 000000000000..97dff8287525 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/httpInterceptor/marking-interceptor.ts @@ -0,0 +1,40 @@ +import { Injectable } from '@angular/core'; +import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpResponse } from '@angular/common/http'; + +import { Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; + +const validUrlList: string[] = []; +const urlPrefix = ''; + +@Injectable() +export class MarkingInterceptor implements HttpInterceptor { + intercept(req: HttpRequest, next: HttpHandler): Observable> { + let patchedReq = req; + if (/.*\.pinpoint(ws)?$/.test(req.url)) { + patchedReq = req.clone({ + url: urlPrefix + req.url + }); + } + return next.handle(patchedReq).pipe( + map((event => { + if (event instanceof HttpResponse) { + if (!(event.body instanceof Array)) { + if (this.isValidUrl(event.url)) { + event = event.clone({ + body: { ...event.body, 'pinpointPageBaseApi': true } + }); + } + } + } + return event; + })) + ); + } + private isValidUrl(url: string): boolean { + const index = validUrlList.findIndex((validUrl: string) => { + return validUrl.indexOf(url) !== -1; + }); + return index >= 0 ? true : false; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/models/application.ts b/web/src/main/webapp/v2/src/app/core/models/application.ts new file mode 100644 index 000000000000..d261d9f43a32 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/models/application.ts @@ -0,0 +1,30 @@ +export class Application implements IApplication { + constructor( + public applicationName: string, + public serviceType: string, + public code: number, + public key?: string + ) {} + equals(target: IApplication): boolean { + if ( target ) { + return this.applicationName === target.applicationName && this.serviceType === target.serviceType; + } else { + return false; + } + } + getApplicationName(): string { + return this.applicationName; + } + getServiceType(): string { + return this.serviceType; + } + getCode(): number { + return this.code; + } + getUrlStr(): string { + return `${this.applicationName}@${this.serviceType}`; + } + getKeyStr(): string { + return this.key ? this.key : `${this.applicationName}^${this.serviceType}`; + } +} diff --git a/web/src/main/webapp/v2/src/app/core/models/end-time.ts b/web/src/main/webapp/v2/src/app/core/models/end-time.ts new file mode 100644 index 000000000000..03adc925e056 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/models/end-time.ts @@ -0,0 +1,34 @@ +import * as moment from 'moment'; + +const DATE_TIME_FORMAT = 'YYYY-MM-DD-HH-mm-ss'; +export class EndTime { + public static formatDate(time: number): string { + return moment(time).format(DATE_TIME_FORMAT); + } + public static newByNumber(time: number): EndTime { + return new EndTime(EndTime.formatDate(time)); + } + constructor(private endTimeStr: string) {} + getEndTime(): string { + return this.endTimeStr; + } + getDate(): Date { + return moment(this.endTimeStr, DATE_TIME_FORMAT).toDate(); + } + getMilliSecond(): number { + return this.getDate().valueOf(); + } + calcuStartTime(minute: number): EndTime { + return new EndTime(moment(this.endTimeStr, DATE_TIME_FORMAT).subtract(minute, 'minutes').format(DATE_TIME_FORMAT)); + } + calcuNextTime(minute: number): EndTime { + return new EndTime(moment(this.endTimeStr, DATE_TIME_FORMAT).add(minute, 'minutes').format(DATE_TIME_FORMAT)); + } + equals(target: EndTime) { + if ( target ) { + return this.endTimeStr === target.getEndTime(); + } else { + return false; + } + } +} diff --git a/web/src/main/webapp/v2/src/app/core/models/filter.ts b/web/src/main/webapp/v2/src/app/core/models/filter.ts new file mode 100644 index 000000000000..406c37788388 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/models/filter.ts @@ -0,0 +1,129 @@ +export class Filter { + // paramName = fa + fromApplication = ''; + // paramName = fst + fromServiceType = ''; + // paramName = ta + toApplication = ''; + // paramName = tst + toServiceType = ''; + // paramName = ie + transactionResult: null | boolean = null; + // paramName = rf + responseFrom?: number; + // paramName = rt + responseTo?: number; + // paramName = url + urlPattern?: string; + // paramName = fan + fromAgentName?: string; + // paramName = tan + toAgentName?: string; + static instanceFromString(str: string): Filter[] { + const returnFilter: Filter[] = []; + let aFilterFromStr: any; + try { + aFilterFromStr = JSON.parse(str); + } catch (exception) { + return returnFilter; + } + + for ( let i = 0 ; i < aFilterFromStr.length ; i++ ) { + const filterFromStr = aFilterFromStr[i]; + const newFilter = new Filter( + filterFromStr.fa, + filterFromStr.fst, + filterFromStr.ta, + filterFromStr.tst, + filterFromStr.ie, + ); + if (filterFromStr.rf || filterFromStr.rf === 0) { + newFilter.setResponseFrom(filterFromStr.rf); + } + if (filterFromStr.rt) { + newFilter.setResponseTo(filterFromStr.rt); + } + if (filterFromStr.url) { + newFilter.setUrlPattern(filterFromStr.url); + } + if (filterFromStr.fan) { + newFilter.setFromAgentName(filterFromStr.fan); + } + if (filterFromStr.tan) { + newFilter.setToAgentName(filterFromStr.tan); + } + returnFilter.push(newFilter); + } + return returnFilter; + } + constructor(fa: string, fst: string, ta: string, tst: string, ie: null | boolean = null) { + this.fromApplication = fa; + this.fromServiceType = fst; + this.toApplication = ta; + this.toServiceType = tst; + this.transactionResult = ie; + } + equal(filter: Filter): boolean { + return ( + this.fromApplication === filter.fromApplication && + this.fromServiceType === filter.fromServiceType && + this.toApplication === filter.toApplication && + this.toServiceType === filter.toServiceType + ); + } + setResponseFrom(rf: number): void { + this.responseFrom = rf; + } + setResponseTo(rt: number): void { + this.responseTo = rt; + } + setUrlPattern(url: string): void { + this.urlPattern = url; + } + setFromAgentName(fan: string): void { + this.fromAgentName = fan; + } + setToAgentName(tan: string): void { + this.toAgentName = tan; + } + getToKey(): string { + return `${this.toApplication}^${this.toServiceType}`; + } + getFromKey(): string { + return `${this.fromApplication}^${this.fromServiceType}`; + } + getTransactionResultStr(): string { + if (this.transactionResult === true) { + return 'Success Only'; + } else if (this.transactionResult === false) { + return 'Failed Only'; + } + return 'Success + Failed'; + } + toString(): string { + + const param: { [key: string]: any } = { + fa: this.fromApplication, + fst: this.fromServiceType, + ta: this.toApplication, + tst: this.toServiceType, + ie: this.transactionResult + }; + if (this.responseFrom || this.responseFrom === 0) { + param['rf'] = this.responseFrom; + } + if (this.responseTo) { + param['rt'] = this.responseTo; + } + if (this.urlPattern) { + param['url'] = this.urlPattern; + } + if (this.fromAgentName) { + param['fan'] = this.fromAgentName; + } + if (this.toAgentName) { + param['tan'] = this.toAgentName; + } + return JSON.stringify(param); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/models/index.ts b/web/src/main/webapp/v2/src/app/core/models/index.ts new file mode 100644 index 000000000000..7e1400e6faa2 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/models/index.ts @@ -0,0 +1,4 @@ +export * from './application'; +export * from './end-time'; +export * from './filter'; +export * from './period'; diff --git a/web/src/main/webapp/v2/src/app/core/models/period.ts b/web/src/main/webapp/v2/src/app/core/models/period.ts new file mode 100644 index 000000000000..c5a922c7df86 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/models/period.ts @@ -0,0 +1,68 @@ +const ONE_HOUR = 60; +const ONE_DAY = 1440; +const MINUTE = 'm'; +const HOUR = 'h'; +const DAY = 'd'; + +export class Period { + private viewValue: string; + public static parseToMinute(time: string): number { + const timeChar = time.substr(-1).toLowerCase(); + const yourTime = parseInt(time, 10); + switch ( timeChar ) { + case MINUTE: + return yourTime; + case HOUR: + return yourTime * ONE_HOUR; + case DAY: + return yourTime * ONE_DAY; + default: + return yourTime; + } + } + constructor(private minute: number, private prefix?: string, private postfix?: string) { + this.calcuDisplay(); + } + private calcuDisplay() { + if (this.minute < ONE_HOUR ) { + this.viewValue = this.minute + MINUTE; + } else if (this.minute < ONE_DAY) { + if ( this.minute % ONE_HOUR === 0 ) { + this.viewValue = (this.minute / ONE_HOUR) + HOUR; + } else { + this.viewValue = this.minute + MINUTE; + } + } else { + if ( this.minute % ONE_DAY === 0 ) { + this.viewValue = (this.minute / ONE_DAY) + DAY; + } else { + this.viewValue = this.minute + MINUTE; + } + } + } + + getValueWithTime(): string { + return this.viewValue; + } + getValueWithAddedWords(): string { + const prefix = this.prefix ? this.prefix + ' ' : ''; + const postfix = this.postfix ? this.postfix + ' ' : ''; + return prefix + this.getValueWithTime() + postfix; + } + getValue(): number { + return this.minute; + } + getMiliSeconds(): number { + return this.minute * 60 * 1000; + } + equalValue(target: number): boolean { + return this.minute === target; + } + equals(target: Period): boolean { + if ( target ) { + return this.getValue() === target.getValue(); + } else { + return false; + } + } +} diff --git a/web/src/main/webapp/v2/src/app/core/utils/chart-data-param-maker.ts b/web/src/main/webapp/v2/src/app/core/utils/chart-data-param-maker.ts new file mode 100644 index 000000000000..f6eaa56fce4d --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/utils/chart-data-param-maker.ts @@ -0,0 +1,21 @@ +export function getParamForAgentChartData(agentId: string, [from, to]: number[]): object { + return { + params: { + agentId, + from, + to, + sampleRate: 1 + } + }; +} + +export function getParamForApplicationChartData(applicationId: string, [from, to]: number[]): object { + return { + params: { + applicationId, + from, + to, + sampleRate: 1 + } + }; +} diff --git a/web/src/main/webapp/v2/src/app/core/utils/filter-param-maker.ts b/web/src/main/webapp/v2/src/app/core/utils/filter-param-maker.ts new file mode 100644 index 000000000000..c9407e492f5d --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/utils/filter-param-maker.ts @@ -0,0 +1,23 @@ +import { Filter } from '../models/filter'; + +export class FilterParamMaker { + static makeParam(currentFilter: string, filter: Filter): string { + const aCurrentFilter: Filter[] = Filter.instanceFromString(currentFilter || '[]'); + if (aCurrentFilter.length === 0) { + aCurrentFilter.push(filter); + } else { + let searchIndex = -1; + for ( let i = 0 ; i < aCurrentFilter.length ; i++ ) { + if ( aCurrentFilter[i].equal(filter) ) { + searchIndex = i; + aCurrentFilter[i] = filter; // replace previous param object + break; + } + } + if (searchIndex === -1) { + aCurrentFilter.push(filter); + } + } + return '/' + encodeURIComponent('[' + aCurrentFilter.map(f => f.toString()).join(',') + ']'); + } +} diff --git a/web/src/main/webapp/v2/src/app/core/utils/hint-param-maker.ts b/web/src/main/webapp/v2/src/app/core/utils/hint-param-maker.ts new file mode 100644 index 000000000000..d6bbf2638c95 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/core/utils/hint-param-maker.ts @@ -0,0 +1,93 @@ +/* + from server + filterTargetRpcList : [{ + rpc: string, + rpcServiceTypeCode: number + }, ...] + > URL string size를 줄이기 위해 다음과 같이 변경 함. + url + { + [toNode.applicationName] : [ rpc, rpcServiceTypeCode, rpc, rpcServiceTypeCode ... ], + ... + } +*/ +interface IUrlFormat { + [key: string]: any[]; +} +interface IServerFormat { + [key: string]: { + rpc: string, + rpcServiceTypeCode: number + }[]; +} +export class HintParamMaker { + static makeParam(currentHint: string, addedHint: IServerFormat): string { + if (addedHint) { + const parsedCurrntHint = JSON.parse(currentHint || '{}'); + const currentHintKeys = Object.keys(parsedCurrntHint); + + if (currentHintKeys.length === 0) { + return '/' + encodeURIComponent(JSON.stringify(HintParamMaker.makeToUrlFormatFromServerFormat(addedHint))); + } else { + const urlFormatOfCurrentHint = HintParamMaker.makeToServerFormatFromUrlFormat(parsedCurrntHint); + const mergedFormat = HintParamMaker.mergeFormat(urlFormatOfCurrentHint, addedHint); + return '/' + encodeURIComponent(JSON.stringify(HintParamMaker.makeToUrlFormatFromServerFormat(mergedFormat))); + } + } else { + return '/' + currentHint; + } + } + static makeToUrlFormatFromServerFormat(addedHint: IServerFormat): IUrlFormat { + const addedHintKeys = Object.keys(addedHint); + const urlFormat: IUrlFormat = {}; + addedHintKeys.forEach((key: string) => { + urlFormat[key] = addedHint[key].reduce((acc: any, data: any) => { + acc.push(data.rpc, data.rpcServiceTypeCode); + return acc; + }, []); + }); + return urlFormat; + } + static makeToServerFormatFromUrlFormat(urlHint: IUrlFormat): IServerFormat { + const newFormat: IServerFormat = {}; + const urlHintKeys = Object.keys(urlHint); + urlHintKeys.forEach((key: string) => { + const urlHintValue = urlHint[key]; + const value = []; + for (let i = 0 ; i < urlHintValue.length ; i = i + 2) { + value.push({ + rpc: urlHintValue[i], + rpcServiceTypeCode: urlHintValue[i + 1] + }); + } + newFormat[key] = value; + }); + return newFormat; + } + static mergeFormat(urlFormat: IServerFormat, addedFormat: IServerFormat): IServerFormat { + const mergedFormat: IServerFormat = {}; + const urlFormatKeys = Object.keys(urlFormat); + const addedFormatKeys = Object.keys(addedFormat); + + urlFormatKeys.forEach((key: string) => { + mergedFormat[key] = urlFormat[key]; + }); + addedFormatKeys.forEach((key: string) => { + if (mergedFormat[key]) { + mergedFormat[key] = mergedFormat[key].concat(addedFormat[key]); + const m = mergedFormat[key]; + for (let i = 0 ; i < m.length ; i++) { + for (let j = i + 1 ; j < m.length ; j++ ) { + if (m[i].rpc === m[j].rpc && m[i].rpcServiceTypeCode === m[j].rpcServiceTypeCode) { + m.splice(j, 1); + j--; + } + } + } + } else { + mergedFormat[key] = addedFormat[key]; + } + }); + return mergedFormat; + } +} diff --git a/web/src/main/webapp/v2/src/app/index.ts b/web/src/main/webapp/v2/src/app/index.ts new file mode 100644 index 000000000000..875bdb2f254f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/index.ts @@ -0,0 +1,2 @@ +export * from './app.component'; +export * from './app.module'; diff --git a/web/src/main/webapp/v2/src/app/routes/admin-page/admin-page.component.css b/web/src/main/webapp/v2/src/app/routes/admin-page/admin-page.component.css new file mode 100644 index 000000000000..9b58cf19b304 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/admin-page/admin-page.component.css @@ -0,0 +1,28 @@ +header { + background-color:#000; +} +.l-widget-group { + flex: 1; + color: #FFF; + height: 100%; + padding: 0 15px; + display: flex; + flex-flow: row; + font-size: 14px; + font-family: monospace; + align-items: flex-end; + justify-content: start; +} +.l-widget-group a { + padding: 6px 20px; +} +.active { + background-color: #408dd4; + box-shadow: 1px -1px 0px 1px rgba(255, 255, 255, 1); +} +.l-main-container { + display: flex; + flex-flow: column nowrap; + overflow-y: hidden; + height: calc(100vh - 50px); +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/routes/admin-page/admin-page.component.html b/web/src/main/webapp/v2/src/app/routes/admin-page/admin-page.component.html new file mode 100644 index 000000000000..b558afff6704 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/admin-page/admin-page.component.html @@ -0,0 +1,11 @@ +
+ + +
+
+ +
+ \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/routes/admin-page/admin-page.component.ts b/web/src/main/webapp/v2/src/app/routes/admin-page/admin-page.component.ts new file mode 100644 index 000000000000..3444d704619f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/admin-page/admin-page.component.ts @@ -0,0 +1,14 @@ +import { Component, OnInit, OnDestroy } from '@angular/core'; + +import { RouteInfoCollectorService } from 'app/shared/services'; + +@Component({ + selector: 'pp-admin-page', + templateUrl: './admin-page.component.html', + styleUrls: ['./admin-page.component.css'] +}) +export class AdminPageComponent implements OnInit, OnDestroy { + constructor(private routeInfoCollectorService: RouteInfoCollectorService) {} + ngOnInit() {} + ngOnDestroy() {} +} diff --git a/web/src/main/webapp/v2/src/app/routes/admin-page/admin-page.routing.ts b/web/src/main/webapp/v2/src/app/routes/admin-page/admin-page.routing.ts new file mode 100644 index 000000000000..746c05a8b52b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/admin-page/admin-page.routing.ts @@ -0,0 +1,29 @@ + +import { Routes } from '@angular/router'; + +import { UrlPathId } from 'app/shared/models'; +import { SystemConfigurationResolverService, ServerTimeResolverService } from 'app/shared/services'; +import { AgentStatContentsContainerComponent } from 'app/core/components/agent-stat-contents/agent-stat-contents-container.component'; +import { AgentManagementContentsContainerComponent } from 'app/core/components/agent-management-contents/agent-management-contents-container.component'; +import { AdminPageComponent } from './admin-page.component'; + +export const routing: Routes = [ + { + path: '', + component: AdminPageComponent, + resolve: { + configuration: SystemConfigurationResolverService, + serverTime: ServerTimeResolverService + }, + children: [ + { + path: UrlPathId.AGENT, + component: AgentManagementContentsContainerComponent + }, + { + path: UrlPathId.STAT, + component: AgentStatContentsContainerComponent + } + ] + } +]; diff --git a/web/src/main/webapp/v2/src/app/routes/admin-page/index.ts b/web/src/main/webapp/v2/src/app/routes/admin-page/index.ts new file mode 100644 index 000000000000..b78989e691e4 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/admin-page/index.ts @@ -0,0 +1,23 @@ +import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; +import { SharedModule } from 'app/shared'; +import { AdminPageComponent } from './admin-page.component'; +import { routing } from './admin-page.routing'; + +import { AgentManagementContentsModule } from 'app/core/components/agent-management-contents'; +import { AgentStatContentsModule } from 'app/core/components/agent-stat-contents'; + +@NgModule({ + declarations: [ + AdminPageComponent + ], + imports: [ + RouterModule.forChild(routing), + SharedModule, + AgentStatContentsModule, + AgentManagementContentsModule + ], + exports: [], + providers: [] +}) +export class AdminPageModule { } diff --git a/web/src/main/webapp/v2/src/app/routes/browser-support-page/browser-support-page.component.css b/web/src/main/webapp/v2/src/app/routes/browser-support-page/browser-support-page.component.css new file mode 100644 index 000000000000..9f8680bc63ce --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/browser-support-page/browser-support-page.component.css @@ -0,0 +1,60 @@ +:host { + display: block; + height: 100%; + background-color: #edf2f8; +} + +.l-support-page-logo { + display: flex; + justify-content: center; + align-items: center; +} + +.l-info-text { + text-align: center; + margin-bottom: 40px; + font-size: 17px; + color: #757575; +} + +.l-support-page-contents { + position: relative; + top: 50px; +} + +.l-browser-list { + width: 420px; + margin: auto; +} + +.l-browser-list-item { + background-color: #fff; + border-radius: 5px; + border: 1px solid #e5e8f0; + margin-bottom: 3px; +} + +.l-browser-list-item:hover { + background-color: #e5e8f0; +} + +.l-browser-link { + display: inline-block; + width: 100%; + padding: 20px 30px; +} + +.l-browser-img { + display: inline-block; + vertical-align: middle; + width: 42px; + height: 42px; +} + +.l-browser-name { + display: inline-block; + vertical-align: middle; + margin-left: 13px; + font-size: 17p; + color: #757575; +} diff --git a/web/src/main/webapp/v2/src/app/routes/browser-support-page/browser-support-page.component.html b/web/src/main/webapp/v2/src/app/routes/browser-support-page/browser-support-page.component.html new file mode 100644 index 000000000000..3dfffb16e77c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/browser-support-page/browser-support-page.component.html @@ -0,0 +1,14 @@ +
+ +
+
+

{{i18nText$ | async}}

+ +
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/routes/browser-support-page/browser-support-page.component.ts b/web/src/main/webapp/v2/src/app/routes/browser-support-page/browser-support-page.component.ts new file mode 100644 index 000000000000..0f2f1240aafc --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/browser-support-page/browser-support-page.component.ts @@ -0,0 +1,66 @@ +import { Component, OnInit } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import { Observable } from 'rxjs'; +import * as bowser from 'bowser'; + +import { WebAppSettingDataService } from 'app/shared/services'; + +interface IBrowserInfo { + downloadLink: string; + name: string; + displayName: string; +} + +@Component({ + templateUrl: './browser-support-page.component.html', + styleUrls: ['./browser-support-page.component.css'] +}) +export class BrowserSupportPageComponent implements OnInit { + private browserInfoList: IBrowserInfo[]; + funcImagePath: Function; + i18nText$: Observable; + + constructor( + private webAppSettingDataService: WebAppSettingDataService, + private translateService: TranslateService + ) {} + + ngOnInit() { + this.funcImagePath = this.webAppSettingDataService.getImagePathMakeFunc(); + this.browserInfoList = [ + { + downloadLink: 'https://www.google.com/chrome', + name: 'chrome', + displayName: 'Google Chrome' + }, { + downloadLink: 'https://www.mozilla.org/en/firefox/new', + name: 'firefox', + displayName: 'Mozilla Firefox' + }, { + downloadLink: 'https://support.apple.com/en-us/HT204416', + name: 'safari', + displayName: 'Apple Safari' + }, { + downloadLink: 'https://www.microsoft.com/en-us/windows/microsoft-edge', + name: 'edge', + displayName: 'Microsoft Edge' + } + ]; + this.i18nText$ = this.translateService.get('SUPPORT.INSTALL_GUIDE'); + } + + getFilteredBrowserInfoList(): IBrowserInfo[] { + const userOSName = bowser.osname; + + return this.browserInfoList.filter((browserInfo: IBrowserInfo) => { + switch (userOSName) { + case 'Windows': + return browserInfo.name !== 'safari'; + case 'macOS': + return browserInfo.name !== 'edge'; + default: + return browserInfo.name === 'chrome' || browserInfo.name === 'firefox'; + } + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/routes/browser-support-page/browser-support-page.routing.ts b/web/src/main/webapp/v2/src/app/routes/browser-support-page/browser-support-page.routing.ts new file mode 100644 index 000000000000..ced6cebf3501 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/browser-support-page/browser-support-page.routing.ts @@ -0,0 +1,21 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { BrowserSupportPageComponent } from './browser-support-page.component'; + +const routes: Routes = [ + { + path: '', + component: BrowserSupportPageComponent + } +]; + +@NgModule({ + imports: [ + RouterModule.forChild(routes) + ], + exports: [ + RouterModule + ] +}) +export class BrowserSupportPageRoutingModule {} diff --git a/web/src/main/webapp/v2/src/app/routes/browser-support-page/index.ts b/web/src/main/webapp/v2/src/app/routes/browser-support-page/index.ts new file mode 100644 index 000000000000..61979ce8a07e --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/browser-support-page/index.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { SharedModule } from 'app/shared'; +import { BrowserSupportPageRoutingModule } from './browser-support-page.routing'; +import { BrowserSupportPageComponent } from './browser-support-page.component'; + +@NgModule({ + declarations: [ + BrowserSupportPageComponent + ], + imports: [ + SharedModule, + BrowserSupportPageRoutingModule + ], + exports: [], + providers: [] +}) +export class BrowserSupportPageModule {} diff --git a/web/src/main/webapp/v2/src/app/routes/filtered-map-page/filtered-map-page.component.css b/web/src/main/webapp/v2/src/app/routes/filtered-map-page/filtered-map-page.component.css new file mode 100644 index 000000000000..affb06f4e3a9 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/filtered-map-page/filtered-map-page.component.css @@ -0,0 +1,29 @@ +.l-widget-group { + display: flex; + flex-flow: row wrap; + flex: 1; + padding: 0 15px; + height: 100%; + align-items: center; +} +.l-main-container { + display: flex; + flex-flow: row wrap; + height: calc(100vh - 50px); + overflow-y: hidden; +} +.l-main-section { + display: flex; + flex-flow: column nowrap; + flex: 1; + background: #edf2f8; + position: relative; + height: 100%; +} +.l-main-contents { + height: 100%; + position: relative; +} +button { + outline: none; +} diff --git a/web/src/main/webapp/v2/src/app/routes/filtered-map-page/filtered-map-page.component.html b/web/src/main/webapp/v2/src/app/routes/filtered-map-page/filtered-map-page.component.html new file mode 100644 index 000000000000..02f37f36d488 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/filtered-map-page/filtered-map-page.component.html @@ -0,0 +1,17 @@ + +
+ +
+ +
+ + +
+
+
+
+ +
+
+ +
diff --git a/web/src/main/webapp/v2/src/app/routes/filtered-map-page/filtered-map-page.component.ts b/web/src/main/webapp/v2/src/app/routes/filtered-map-page/filtered-map-page.component.ts new file mode 100644 index 000000000000..95234dfd4a03 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/filtered-map-page/filtered-map-page.component.ts @@ -0,0 +1,13 @@ +import { Component, OnInit } from '@angular/core'; + +import { RouteInfoCollectorService } from 'app/shared/services'; + +@Component({ + selector: 'pp-filtered-map-page', + templateUrl: './filtered-map-page.component.html', + styleUrls: ['./filtered-map-page.component.css'] +}) +export class FilteredMapPageComponent implements OnInit { + constructor(private routeInfoCollectorService: RouteInfoCollectorService) {} + ngOnInit() {} +} diff --git a/web/src/main/webapp/v2/src/app/routes/filtered-map-page/filtered-map-page.routing.ts b/web/src/main/webapp/v2/src/app/routes/filtered-map-page/filtered-map-page.routing.ts new file mode 100644 index 000000000000..4e241538f492 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/filtered-map-page/filtered-map-page.routing.ts @@ -0,0 +1,143 @@ +import { Routes } from '@angular/router'; + +import { UrlPath, UrlPathId } from 'app/shared/models'; +import { FilteredMapContentsContainerComponent } from 'app/core/components/filtered-map-contents/filtered-map-contents-container.component'; +import { SideBarForFilteredMapContainerComponent } from 'app/core/components/side-bar/side-bar-for-filtered-map-container.component'; +// import { NoneComponent } from 'app/shared/components/empty-contents'; +import { SystemConfigurationResolverService, ApplicationListResolverService } from 'app/shared/services'; +// import { UrlValidateGuard } from 'app/shared/services'; +import { UrlRedirectorComponent } from 'app/shared/components/url-redirector/url-redirector.component'; +import { FilteredMapPageComponent } from './filtered-map-page.component'; + +export const routing: Routes = [ + { + path: '', + component: FilteredMapPageComponent, + resolve: { + configuration: SystemConfigurationResolverService, + applicationList: ApplicationListResolverService + }, + children: [ + { + path: '', + redirectTo: '/' + UrlPath.MAIN, + pathMatch: 'full' + }, + { + path: ':' + UrlPathId.APPLICATION, + data: { + path: UrlPath.MAIN + }, + component: UrlRedirectorComponent + }, + { + path: ':' + UrlPathId.APPLICATION + '/:' + UrlPathId.PERIOD, + data: { + path: UrlPath.MAIN + }, + component: UrlRedirectorComponent + }, + { + path: ':' + UrlPathId.APPLICATION + '/:' + UrlPathId.PERIOD + '/:' + UrlPathId.END_TIME, + children: [ + { + path: '', + component: FilteredMapContentsContainerComponent + }, + { + path: '', + component: SideBarForFilteredMapContainerComponent, + outlet: 'sidebar' + }, + { + path: ':' + UrlPathId.FILTER, + children: [ + { + path: '', + component: FilteredMapContentsContainerComponent + }, + { + path: ':' + UrlPathId.HINT, + children: [ + { + path: '', + component: FilteredMapContentsContainerComponent + } + ] + } + ] + } + ] + } + ] + } +]; + +// export const routing: Routes = [ +// { +// path: UrlPath.FILTERED_MAP, +// component: FilteredMapPageComponent, +// canActivate: [ UrlValidateGuard ], +// resolve: { +// configuration: SystemConfigurationResolverService, +// applicationList: ApplicationListResolverService +// }, +// children: [ +// { +// path: '', +// component: NoneComponent +// }, +// { +// path: ':' + UrlPathId.APPLICATION, +// component: NoneComponent +// }, +// { +// path: ':' + UrlPathId.APPLICATION + '/:' + UrlPathId.PERIOD, +// component: NoneComponent +// }, +// { +// path: ':' + UrlPathId.APPLICATION + '/:' + UrlPathId.PERIOD + '/:' + UrlPathId.END_TIME, +// children: [ +// { +// path: '', +// component: FilteredMapContentsContainerComponent +// }, +// { +// path: '', +// component: SideBarForFilteredMapContainerComponent, +// outlet: 'sidebar' +// } +// ] +// }, +// { +// path: ':' + UrlPathId.APPLICATION + '/:' + UrlPathId.PERIOD + '/:' + UrlPathId.END_TIME + '/:' + UrlPathId.FILTER, +// children: [ +// { +// path: '', +// component: FilteredMapContentsContainerComponent +// }, +// { +// path: '', +// component: SideBarForFilteredMapContainerComponent, +// outlet: 'sidebar' +// } +// ] +// }, +// { +// path: ':' + UrlPathId.APPLICATION + '/:' + UrlPathId.PERIOD + '/:' + UrlPathId.END_TIME + '/:' + UrlPathId.FILTER + '/:' + UrlPathId.HINT, +// children: [ +// { +// path: '', +// component: FilteredMapContentsContainerComponent +// }, +// { +// path: '', +// component: SideBarForFilteredMapContainerComponent, +// outlet: 'sidebar' +// } +// ] +// } + +// ] +// } +// ]; diff --git a/web/src/main/webapp/v2/src/app/routes/filtered-map-page/index.ts b/web/src/main/webapp/v2/src/app/routes/filtered-map-page/index.ts new file mode 100644 index 000000000000..39f83b93adb5 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/filtered-map-page/index.ts @@ -0,0 +1,34 @@ +import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; + +import { routing } from './filtered-map-page.routing'; +import { SharedModule } from 'app/shared'; +import { NoticeModule } from 'app/core/components/notice'; +import { DataLoadIndicatorModule } from 'app/core/components/data-load-indicator'; +import { StateButtonModule } from 'app/core/components/state-button'; +import { CommandGroupModule } from 'app/core/components/command-group'; +import { FilteredMapContentsModule } from 'app/core/components/filtered-map-contents'; +import { SideBarModule } from 'app/core/components/side-bar'; + +import { FilteredMapPageComponent } from './filtered-map-page.component'; + +@NgModule({ + declarations: [ + FilteredMapPageComponent + ], + imports: [ + SharedModule, + NoticeModule, + DataLoadIndicatorModule, + StateButtonModule, + CommandGroupModule, + FilteredMapContentsModule, + SideBarModule, + RouterModule.forChild(routing) + ], + exports: [ + RouterModule + ], + providers: [] +}) +export class FilteredMapPageModule { } diff --git a/web/src/main/webapp/v2/src/app/routes/inspector-page/index.ts b/web/src/main/webapp/v2/src/app/routes/inspector-page/index.ts new file mode 100644 index 000000000000..462570bb6a8a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/inspector-page/index.ts @@ -0,0 +1,43 @@ +import { NgModule } from '@angular/core'; +import { MatTooltipModule } from '@angular/material'; +import { RouterModule } from '@angular/router'; + +import { routing } from './inspector-page.routing'; +import { SharedModule } from 'app/shared'; +import { NoticeModule } from 'app/core/components/notice'; +import { ApplicationListModule } from 'app/core/components/application-list'; +import { PeriodSelectorModule } from 'app/core/components/period-selector'; +import { CommandGroupModule } from 'app/core/components/command-group'; +import { ApplicationInspectorTitleModule } from 'app/core/components/application-inspector-title'; +import { ServerAndAgentListModule } from 'app/core/components/server-and-agent-list'; +import { AgentSearchInputModule } from 'app/core/components/agent-search-input'; +import { ApplicationInspectorContentsModule } from 'app/core/components/application-inspector-contents'; +import { AgentInspectorContentsModule } from 'app/core/components/agent-inspector-contents'; +import { EmptyInspectorContentsModule } from 'app/core/components/empty-inspector-contents'; +import { InspectorPageComponent } from './inspector-page.component'; +import { HelpViewerPopupModule } from 'app/core/components/help-viewer-popup'; + +@NgModule({ + declarations: [ + InspectorPageComponent + ], + imports: [ + MatTooltipModule, + SharedModule, + NoticeModule, + ApplicationListModule, + PeriodSelectorModule, + CommandGroupModule, + ApplicationInspectorTitleModule, + ServerAndAgentListModule, + ApplicationInspectorContentsModule, + AgentInspectorContentsModule, + AgentSearchInputModule, + EmptyInspectorContentsModule, + HelpViewerPopupModule, + RouterModule.forChild(routing) + ], + exports: [], + providers: [] +}) +export class InspectorPageModule {} diff --git a/web/src/main/webapp/v2/src/app/routes/inspector-page/inspector-page.component.css b/web/src/main/webapp/v2/src/app/routes/inspector-page/inspector-page.component.css new file mode 100644 index 000000000000..c7b3647a1cf5 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/inspector-page/inspector-page.component.css @@ -0,0 +1,42 @@ +.l-widget-group { + display: flex; + flex-flow: row wrap; + flex: 1; + padding: 0 15px; + height: 100%; + align-items: center; +} +.l-main-container { + display: flex; + flex-flow: row wrap; + height: calc(100vh - 50px); + overflow-y: hidden; +} +.l-sidemenu-wrap { + display: flex; + flex-flow: column nowrap; + position: relative; + height: 100%; +} +.l-sidemenu-left { + width: 260px; + overflow: visible; + border-right: 1px solid #E5E8F0; + background: #FFF; + height: 100%; +} +.l-main-section { + display: flex; + flex-flow: column nowrap; + flex: 1; + background: #edf2f8; + position: relative; + height: 100%; +} +.fa-question-circle { + color: white; + font-size: 18px; +} +button { + outline: none; +} diff --git a/web/src/main/webapp/v2/src/app/routes/inspector-page/inspector-page.component.html b/web/src/main/webapp/v2/src/app/routes/inspector-page/inspector-page.component.html new file mode 100644 index 000000000000..3ef10ff84e7b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/inspector-page/inspector-page.component.html @@ -0,0 +1,22 @@ + +
+ +
+ + +
+ + +
+
+
+
+ + + +
+
+
+ +
+
diff --git a/web/src/main/webapp/v2/src/app/routes/inspector-page/inspector-page.component.ts b/web/src/main/webapp/v2/src/app/routes/inspector-page/inspector-page.component.ts new file mode 100644 index 000000000000..031e1ba83683 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/inspector-page/inspector-page.component.ts @@ -0,0 +1,63 @@ +import { Component, OnInit } from '@angular/core'; +import { state, style, animate, transition, trigger } from '@angular/animations'; +import { Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; + +import { RouteInfoCollectorService, NewUrlStateNotificationService, AnalyticsService, TRACKED_EVENT_LIST, DynamicPopupService } from 'app/shared/services'; +import { EndTime } from 'app/core/models'; +import { UrlPathId } from 'app/shared/models'; +import { HELP_VIEWER_LIST, HelpViewerPopupContainerComponent } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; + +@Component({ + selector: 'pp-inspector-page', + animations: [ + trigger('fadeInOut', [ + state('in', style({transform: 'translateX(0)', opacity: 1})), + transition(':leave', [ // is alias to '* => void' + animate('1.5s 0.1s ease-in', style({ + transform: 'translateX(-100%)', + opacity: 0 + })) + ]), + transition(':enter', [ // is alias to 'void => *' + style({ + transform: 'translateX(-100%)', + opacity: 0 + }), + animate('2s ease-out') + ]) + ]) + ], + templateUrl: './inspector-page.component.html', + styleUrls: ['./inspector-page.component.css'] +}) +export class InspectorPageComponent implements OnInit { + endTime$: Observable; + + constructor( + private routeInfoCollectorService: RouteInfoCollectorService, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private analyticsService: AnalyticsService, + private dynamicPopupService: DynamicPopupService + ) {} + ngOnInit() { + this.endTime$ = this.newUrlStateNotificationService.onUrlStateChange$.pipe( + map((urlService: NewUrlStateNotificationService) => { + return urlService.getPathValue(UrlPathId.END_TIME); + }) + ); + } + onShowHelp($event: MouseEvent): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.TOGGLE_HELP_VIEWER, HELP_VIEWER_LIST.NAVBAR); + const {left, top, width, height} = ($event.target as HTMLElement).getBoundingClientRect(); + + this.dynamicPopupService.openPopup({ + data: HELP_VIEWER_LIST.NAVBAR, + coord: { + coordX: left + width / 2, + coordY: top + height / 2 + }, + component: HelpViewerPopupContainerComponent + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/routes/inspector-page/inspector-page.routing.ts b/web/src/main/webapp/v2/src/app/routes/inspector-page/inspector-page.routing.ts new file mode 100644 index 000000000000..2b02daaf2f80 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/inspector-page/inspector-page.routing.ts @@ -0,0 +1,55 @@ +import { Routes } from '@angular/router'; +import { UrlPath, UrlPathId } from 'app/shared/models'; +import { ApplicationInspectorContentsContainerComponent } from 'app/core/components/application-inspector-contents/application-inspector-contents-container.component'; +import { AgentInspectorContentsContainerComponent } from 'app/core/components/agent-inspector-contents/agent-inspector-contents-container.component'; +import { EmptyInspectorContentsContainerComponent } from 'app/core/components/empty-inspector-contents/empty-inspector-contents-container.component'; +import { UrlRedirectorComponent } from 'app/shared/components/url-redirector/url-redirector.component'; +import { SystemConfigurationResolverService, ApplicationListResolverService } from 'app/shared/services'; +import { InspectorPageComponent } from './inspector-page.component'; + +export const routing: Routes = [ + { + path: '', + component: InspectorPageComponent, + resolve: { + configuration: SystemConfigurationResolverService, + applicationList: ApplicationListResolverService + }, + children: [ + { + path: '', + component: EmptyInspectorContentsContainerComponent + }, + { + path: ':' + UrlPathId.APPLICATION, + data: { + path: UrlPath.INSPECTOR + }, + component: UrlRedirectorComponent + }, + { + path: ':' + UrlPathId.APPLICATION + '/:' + UrlPathId.PERIOD, + data: { + path: UrlPath.INSPECTOR + }, + component: UrlRedirectorComponent + }, + { + path: ':' + UrlPathId.APPLICATION + '/:' + UrlPathId.PERIOD + '/:' + UrlPathId.END_TIME, + component: ApplicationInspectorContentsContainerComponent, + data: { + showRealTimeButton: false, + enableRealTimeMode: false + } + }, + { + path: ':' + UrlPathId.APPLICATION + '/:' + UrlPathId.PERIOD + '/:' + UrlPathId.END_TIME + '/:' + UrlPathId.AGENT_ID, + component: AgentInspectorContentsContainerComponent, + data: { + showRealTimeButton: false, + enableRealTimeMode: false + } + } + ] + } +]; diff --git a/web/src/main/webapp/v2/src/app/routes/main-page/index.ts b/web/src/main/webapp/v2/src/app/routes/main-page/index.ts new file mode 100644 index 000000000000..3074ac76a9f0 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/main-page/index.ts @@ -0,0 +1,39 @@ +import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; + +import { SharedModule } from 'app/shared'; +import { NoticeModule } from 'app/core/components/notice'; +import { ApplicationListModule } from 'app/core/components/application-list'; +import { ServerMapOptionsModule } from 'app/core/components/server-map-options'; +import { PeriodSelectorModule } from 'app/core/components/period-selector'; +import { CommandGroupModule } from 'app/core/components/command-group'; +import { MainContentsModule } from 'app/core/components/main-contents'; +import { RealTimeModule } from 'app/core/components/real-time'; +import { SideBarModule } from 'app/core/components/side-bar'; +import { MainPageComponent } from './main-page.component'; +import { routing } from './main-page.routing'; +import { HelpViewerPopupModule } from 'app/core/components/help-viewer-popup'; + +@NgModule({ + declarations: [ + MainPageComponent + ], + imports: [ + SharedModule, + NoticeModule, + ApplicationListModule, + ServerMapOptionsModule, + PeriodSelectorModule, + CommandGroupModule, + MainContentsModule, + RealTimeModule, + SideBarModule, + HelpViewerPopupModule, + RouterModule.forChild(routing) + ], + exports: [ + + ], + providers: [] +}) +export class MainPageModule { } diff --git a/web/src/main/webapp/v2/src/app/routes/main-page/main-page.component.css b/web/src/main/webapp/v2/src/app/routes/main-page/main-page.component.css new file mode 100644 index 000000000000..1b9767653bc6 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/main-page/main-page.component.css @@ -0,0 +1,37 @@ +:host { + display: block; +} +.l-widget-group { + display: flex; + flex-flow: row wrap; + flex: 1; + padding: 0 15px; + height: 100%; + align-items: center; +} +.l-main-container { + display: flex; + flex-flow: row wrap; + height: calc(100vh - 50px); /* 50px: header 높이 */ + overflow-y: hidden; +} +.l-main-section { + display: flex; + flex-flow: column nowrap; + flex: 1; + background: #edf2f8; + position: relative; + height: 100%; +} +.l-main-contents { + height: 100%; + position: relative; +} +.fa-question-circle { + color: white; + font-size: 18px; +} + +button { + outline: none; +} diff --git a/web/src/main/webapp/v2/src/app/routes/main-page/main-page.component.html b/web/src/main/webapp/v2/src/app/routes/main-page/main-page.component.html new file mode 100644 index 000000000000..68e82d3606ee --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/main-page/main-page.component.html @@ -0,0 +1,20 @@ + +
+ +
+ + + +
+ + +
+
+
+
+ +
+ +
+ +
diff --git a/web/src/main/webapp/v2/src/app/routes/main-page/main-page.component.ts b/web/src/main/webapp/v2/src/app/routes/main-page/main-page.component.ts new file mode 100644 index 000000000000..07b2368c59d9 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/main-page/main-page.component.ts @@ -0,0 +1,45 @@ +import { Component, OnInit } from '@angular/core'; +import { Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; + +import { RouteInfoCollectorService, WebAppSettingDataService, NewUrlStateNotificationService, AnalyticsService, TRACKED_EVENT_LIST, DynamicPopupService } from 'app/shared/services'; +import { HELP_VIEWER_LIST, HelpViewerPopupContainerComponent } from 'app/core/components/help-viewer-popup/help-viewer-popup-container.component'; + +@Component({ + selector: 'pp-main-page', + templateUrl: './main-page.component.html', + styleUrls: ['./main-page.component.css'] +}) +export class MainPageComponent implements OnInit { + enableRealTime$: Observable; + constructor( + private routeInfoCollectorService: RouteInfoCollectorService, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private webAppSettingDataService: WebAppSettingDataService, + private analyticsService: AnalyticsService, + private dynamicPopupService: DynamicPopupService + ) {} + ngOnInit() { + this.enableRealTime$ = this.newUrlStateNotificationService.onUrlStateChange$.pipe( + map((urlService: NewUrlStateNotificationService) => { + return urlService.isRealTimeMode(); + }) + ); + this.webAppSettingDataService.getVersion().subscribe((version: string) => { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.VERSION, version); + }); + } + onShowHelp($event: MouseEvent): void { + this.analyticsService.trackEvent(TRACKED_EVENT_LIST.TOGGLE_HELP_VIEWER, HELP_VIEWER_LIST.NAVBAR); + const {left, top, width, height} = ($event.target as HTMLElement).getBoundingClientRect(); + + this.dynamicPopupService.openPopup({ + data: HELP_VIEWER_LIST.NAVBAR, + coord: { + coordX: left + width / 2, + coordY: top + height / 2 + }, + component: HelpViewerPopupContainerComponent + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/routes/main-page/main-page.routing.ts b/web/src/main/webapp/v2/src/app/routes/main-page/main-page.routing.ts new file mode 100644 index 000000000000..bd48533d1a3c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/main-page/main-page.routing.ts @@ -0,0 +1,170 @@ + +import { Routes } from '@angular/router'; +import { UrlPath, UrlPathId } from 'app/shared/models'; +import { MainContentsContainerComponent } from 'app/core/components/main-contents/main-contents-container.component'; +import { SideBarContainerComponent } from 'app/core/components/side-bar/side-bar-container.component'; +import { RealTimeContainerComponent } from 'app/core/components/real-time/real-time-container.component'; +import { EmptyContentsComponent, NoneComponent } from 'app/shared/components/empty-contents'; +import { UrlRedirectorComponent } from 'app/shared/components/url-redirector'; +// import { UrlValidateGuard } from 'app/shared/services'; +import { SystemConfigurationResolverService, ApplicationListResolverService, ServerTimeResolverService } from 'app/shared/services'; + +import { MainPageComponent } from './main-page.component'; + +export const routing: Routes = [ + { + path: '', + component: MainPageComponent, + resolve: { + configuration: SystemConfigurationResolverService, + applicationList: ApplicationListResolverService + }, + children: [ + { + path: '', + component: EmptyContentsComponent, + data: { + showRealTimeButton: false, + enableRealTimeMode: false + }, + }, + { + path: '', + component: SideBarContainerComponent, + outlet: 'sidebar' + }, + { + path: ':' + UrlPathId.APPLICATION, + children: [ + { + path: '', + data: { + path: UrlPath.MAIN + }, + component: UrlRedirectorComponent + }, + { + path: UrlPath.REAL_TIME, + resolve: { + serverTime: ServerTimeResolverService + }, + children: [ + { + path: '', + component: MainContentsContainerComponent, + data: { + showRealTimeButton: true, + enableRealTimeMode: true + } + }, + { + path: '', + component: RealTimeContainerComponent, + outlet: 'realtime' + } + ] + }, + { + path: ':' + UrlPathId.PERIOD, + children: [ + { + path: '', + data: { + path: UrlPath.MAIN + }, + component: UrlRedirectorComponent + }, + { + path: ':' + UrlPathId.END_TIME, + children: [ + { + path: '', + component: MainContentsContainerComponent, + data: { + showRealTimeButton: true, + enableRealTimeMode: false + } + } + ] + } + ] + } + ] + } + ] + } +]; + +// export const routing: Routes = [ +// { +// path: UrlPath.MAIN, +// component: MainPageComponent, +// canActivate: [ UrlValidateGuard ], +// resolve: { +// configuration: SystemConfigurationResolverService, +// applicationList: ApplicationListResolverService +// }, +// children: [ +// { +// path: '', +// component: EmptyContentsComponent, +// data: { +// showRealTimeButton: false, +// enableRealTimeMode: false +// }, +// }, +// { +// path: ':' + UrlPathId.APPLICATION + '/' + UrlPath.REAL_TIME, +// resolve: { +// serverTime: ServerTimeResolverService +// }, +// children: [ +// { +// path: '', +// component: MainContentsContainerComponent, +// data: { +// showRealTimeButton: true, +// enableRealTimeMode: true +// } +// }, +// { +// path: '', +// component: SideBarContainerComponent, +// outlet: 'sidebar' +// }, +// { +// path: '', +// component: RealTimeContainerComponent, +// outlet: 'realtime' +// } +// ] +// }, +// { +// path: ':' + UrlPathId.APPLICATION, +// component: NoneComponent +// }, +// { +// path: ':' + UrlPathId.APPLICATION + '/:' + UrlPathId.PERIOD, +// component: NoneComponent +// }, +// { +// path: ':' + UrlPathId.APPLICATION + '/:' + UrlPathId.PERIOD + '/:' + UrlPathId.END_TIME, +// children: [ +// { +// path: '', +// component: MainContentsContainerComponent, +// data: { +// showRealTimeButton: true, +// enableRealTimeMode: false +// } +// }, +// { +// path: '', +// component: SideBarContainerComponent, +// outlet: 'sidebar' +// } +// ] +// } +// ] +// } +// ]; diff --git a/web/src/main/webapp/v2/src/app/routes/real-time-page/index.ts b/web/src/main/webapp/v2/src/app/routes/real-time-page/index.ts new file mode 100644 index 000000000000..69beb5ced2e1 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/real-time-page/index.ts @@ -0,0 +1,21 @@ +import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; + +import { SharedModule } from 'app/shared'; +import { RealTimeModule } from 'app/core/components/real-time'; +import { RealTimePageComponent } from './real-time-page.component'; +import { routing } from './real-time-page.routing'; + +@NgModule({ + declarations: [ + RealTimePageComponent + ], + imports: [ + SharedModule, + RealTimeModule, + RouterModule.forChild(routing) + ], + exports: [], + providers: [] +}) +export class RealTimePageModule { } diff --git a/web/src/main/webapp/v2/src/app/routes/real-time-page/real-time-page.component.css b/web/src/main/webapp/v2/src/app/routes/real-time-page/real-time-page.component.css new file mode 100644 index 000000000000..332fa2063ca6 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/real-time-page/real-time-page.component.css @@ -0,0 +1,32 @@ +.realtime-application { + color: #FFF; +} +.realtime-application span { + margin-left: 10px; +} +.realtime-application span:last-child { + margin-left: 20px; + font-size: 12px; +} +.l-widget-group { + display: flex; + flex-flow: row wrap; + flex: 1; + padding: 0 15px; + height: 100%; + align-items: center; +} +.l-main-container { + display: flex; + flex-flow: row wrap; + height: calc(100vh - 50px); /* 50px: header 높이 */ + overflow-y: hidden; +} +.l-main-section { + display: flex; + flex-flow: column nowrap; + flex: 1; + background: #edf2f8; + position: relative; + height: 100%; +} diff --git a/web/src/main/webapp/v2/src/app/routes/real-time-page/real-time-page.component.html b/web/src/main/webapp/v2/src/app/routes/real-time-page/real-time-page.component.html new file mode 100644 index 000000000000..c6286d19be90 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/real-time-page/real-time-page.component.html @@ -0,0 +1,13 @@ +
+ +
+ + {{applicationName}} + RealTime Active Thread Chart +
+
+
+
+ +
+
diff --git a/web/src/main/webapp/v2/src/app/routes/real-time-page/real-time-page.component.ts b/web/src/main/webapp/v2/src/app/routes/real-time-page/real-time-page.component.ts new file mode 100644 index 000000000000..0bcbde39540f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/real-time-page/real-time-page.component.ts @@ -0,0 +1,37 @@ +import { Component, OnInit, OnDestroy } from '@angular/core'; +import { Subject } from 'rxjs'; +import { filter, takeUntil } from 'rxjs/operators'; + +import { UrlPathId } from 'app/shared/models'; +import { RouteInfoCollectorService, WebAppSettingDataService, NewUrlStateNotificationService } from 'app/shared/services'; + +@Component({ + selector: 'pp-real-time', + templateUrl: './real-time-page.component.html', + styleUrls: ['./real-time-page.component.css'] +}) +export class RealTimePageComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + applicationImgPath: string; + applicationName: string; + constructor( + private routeInfoCollectorService: RouteInfoCollectorService, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private webAppSettingDataService: WebAppSettingDataService + ) {} + ngOnInit() { + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe), + filter((urlService: NewUrlStateNotificationService) => { + return urlService.hasValue(UrlPathId.APPLICATION); + } + )).subscribe((urlService: NewUrlStateNotificationService) => { + this.applicationName = urlService.getPathValue(UrlPathId.APPLICATION).getApplicationName(); + this.applicationImgPath = this.webAppSettingDataService.getIconImagePath() + urlService.getPathValue(UrlPathId.APPLICATION).getServiceType() + this.webAppSettingDataService.getImageExt(); + }); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } +} diff --git a/web/src/main/webapp/v2/src/app/routes/real-time-page/real-time-page.routing.ts b/web/src/main/webapp/v2/src/app/routes/real-time-page/real-time-page.routing.ts new file mode 100644 index 000000000000..547dd92c1510 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/real-time-page/real-time-page.routing.ts @@ -0,0 +1,38 @@ + +import { Routes } from '@angular/router'; + +import { UrlPath, UrlPathId } from 'app/shared/models'; +import { RealTimePagingContainerComponent } from 'app/core/components/real-time/real-time-paging-container.component'; +import { SystemConfigurationResolverService, ServerTimeResolverService } from 'app/shared/services'; +import { RealTimePageComponent } from './real-time-page.component'; + +const TO_MAIN = '/' + UrlPath.MAIN; + +export const routing: Routes = [ + { + path: '', + component: RealTimePageComponent, + resolve: { + configuration: SystemConfigurationResolverService + }, + children: [ + { + path: '', + redirectTo: TO_MAIN, + pathMatch: 'full' + }, + { + path: ':' + UrlPathId.APPLICATION, + redirectTo: TO_MAIN, + pathMatch: 'full' + }, + { + path: ':' + UrlPathId.APPLICATION + '/:' + UrlPathId.PAGE, + resolve: { + serverTime: ServerTimeResolverService + }, + component: RealTimePagingContainerComponent + } + ] + } +]; diff --git a/web/src/main/webapp/v2/src/app/routes/scatter-full-screen-mode-page/index.ts b/web/src/main/webapp/v2/src/app/routes/scatter-full-screen-mode-page/index.ts new file mode 100644 index 000000000000..c8548905b9fb --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/scatter-full-screen-mode-page/index.ts @@ -0,0 +1,26 @@ +import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; + +import { SharedModule } from 'app/shared'; +import { ScatterChartModule } from 'app/core/components/scatter-chart'; +import { ApplicationListModule } from 'app/core/components/application-list'; +import { NoticeModule } from 'app/core/components/notice'; +import { ScatterFullScreenModePageComponent } from './scatter-full-screen-mode-page.component'; +import { routing } from './scatter-full-screen-mode-page.routing'; + +@NgModule({ + declarations: [ + ScatterFullScreenModePageComponent + ], + imports: [ + RouterModule.forChild(routing), + SharedModule, + ApplicationListModule, + ScatterChartModule, + NoticeModule, + ], + exports: [ + ], + providers: [] +}) +export class ScatterFullScreenModePageModule {} diff --git a/web/src/main/webapp/v2/src/app/routes/scatter-full-screen-mode-page/scatter-full-screen-mode-page.component.css b/web/src/main/webapp/v2/src/app/routes/scatter-full-screen-mode-page/scatter-full-screen-mode-page.component.css new file mode 100644 index 000000000000..7be5d4c36c17 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/scatter-full-screen-mode-page/scatter-full-screen-mode-page.component.css @@ -0,0 +1,28 @@ +.l-widget-group { + flex:1; + padding: 0 15px; + height: 100%; + align-items: center; + color: #FFF; + display: flex; + flex-flow: row wrap; +} +.l-widget-group img { + margin-right: 10px; +} +.l-main-container { + display: flex; + flex-flow: row wrap; + justify-content: center; + width: 100%; + height: calc(100vh - 50px); +} +.l-sidemenu-wrap { + display: flex; + position:relative; + height: 100%; +} +.l-sidemenu { + margin-top: 50px; + width: 691px; +} diff --git a/web/src/main/webapp/v2/src/app/routes/scatter-full-screen-mode-page/scatter-full-screen-mode-page.component.html b/web/src/main/webapp/v2/src/app/routes/scatter-full-screen-mode-page/scatter-full-screen-mode-page.component.html new file mode 100644 index 000000000000..f40e9a8b76fb --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/scatter-full-screen-mode-page/scatter-full-screen-mode-page.component.html @@ -0,0 +1,14 @@ + +
+ +
+ {{applicationName}} - {{selectedAgent}} +
+
+
+
+
+ +
+
+
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/routes/scatter-full-screen-mode-page/scatter-full-screen-mode-page.component.ts b/web/src/main/webapp/v2/src/app/routes/scatter-full-screen-mode-page/scatter-full-screen-mode-page.component.ts new file mode 100644 index 000000000000..752e07ed34cc --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/scatter-full-screen-mode-page/scatter-full-screen-mode-page.component.ts @@ -0,0 +1,40 @@ +import { Component, OnInit, OnDestroy } from '@angular/core'; +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + +import { UrlPathId } from 'app/shared/models'; +import { RouteInfoCollectorService, NewUrlStateNotificationService, WebAppSettingDataService } from 'app/shared/services'; + +@Component({ + selector: 'pp-scatter-full-screen-mode-page', + templateUrl: './scatter-full-screen-mode-page.component.html', + styleUrls: ['./scatter-full-screen-mode-page.component.css'] +}) +export class ScatterFullScreenModePageComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + applicationImgPath: string; + applicationName: string; + selectedAgent: string; + constructor( + private routeInfoCollectorService: RouteInfoCollectorService, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private webAppSettingDataService: WebAppSettingDataService, + ) {} + ngOnInit() { + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe) + ).subscribe((urlService: NewUrlStateNotificationService) => { + this.applicationName = urlService.getPathValue(UrlPathId.APPLICATION).getApplicationName(); + if (urlService.hasValue(UrlPathId.AGENT_ID)) { + this.selectedAgent = urlService.getPathValue(UrlPathId.AGENT_ID); + } else { + this.selectedAgent = 'All'; + } + this.applicationImgPath = this.webAppSettingDataService.getIconImagePath() + urlService.getPathValue(UrlPathId.APPLICATION).getServiceType() + this.webAppSettingDataService.getImageExt(); + }); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } +} diff --git a/web/src/main/webapp/v2/src/app/routes/scatter-full-screen-mode-page/scatter-full-screen-mode-page.routing.ts b/web/src/main/webapp/v2/src/app/routes/scatter-full-screen-mode-page/scatter-full-screen-mode-page.routing.ts new file mode 100644 index 000000000000..0578912fbc35 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/scatter-full-screen-mode-page/scatter-full-screen-mode-page.routing.ts @@ -0,0 +1,56 @@ +import { Routes } from '@angular/router'; +import { UrlPath, UrlPathId } from 'app/shared/models'; +import { ScatterChartForFullScreenModeContainerComponent } from 'app/core/components/scatter-chart/scatter-chart-for-full-screen-mode-container.component'; +import { UrlRedirectorComponent } from 'app/shared/components/url-redirector/url-redirector.component'; +import { SystemConfigurationResolverService, ApplicationListResolverService, ServerTimeResolverService } from 'app/shared/services'; +import { ScatterFullScreenModePageComponent } from './scatter-full-screen-mode-page.component'; + +export const routing: Routes = [ + { + path: '', + component: ScatterFullScreenModePageComponent, + resolve: { + configuration: SystemConfigurationResolverService, + applicationList: ApplicationListResolverService + }, + children: [ + { + path: '', + redirectTo: '/' + UrlPath.MAIN, + pathMatch: 'full' + }, + { + path: ':' + UrlPathId.APPLICATION, + data: { + path: UrlPath.MAIN + }, + component: UrlRedirectorComponent + }, + { + path: ':' + UrlPathId.APPLICATION + '/' + UrlPathId.REAL_TIME, + resolve: { + serverTime: ServerTimeResolverService + }, + data: { + enableRealTimeMode: true + }, + component: ScatterChartForFullScreenModeContainerComponent + }, + { + path: ':' + UrlPathId.APPLICATION + '/:' + UrlPathId.PERIOD, + data: { + path: UrlPath.MAIN + }, + component: UrlRedirectorComponent + }, + { + path: ':' + UrlPathId.APPLICATION + '/:' + UrlPathId.PERIOD + '/:' + UrlPathId.END_TIME, + component: ScatterChartForFullScreenModeContainerComponent + }, + { + path: ':' + UrlPathId.APPLICATION + '/:' + UrlPathId.PERIOD + '/:' + UrlPathId.END_TIME + '/:' + UrlPathId.AGENT_ID, + component: ScatterChartForFullScreenModeContainerComponent + } + ] + } +]; diff --git a/web/src/main/webapp/v2/src/app/routes/thread-dump-page/index.ts b/web/src/main/webapp/v2/src/app/routes/thread-dump-page/index.ts new file mode 100644 index 000000000000..a42c47a80918 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/thread-dump-page/index.ts @@ -0,0 +1,25 @@ +import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; + +import { SharedModule } from 'app/shared'; +import { NoticeModule } from 'app/core/components/notice'; +import { ThreadDumpListModule } from 'app/core/components/thread-dump-list'; +import { ThreadDumpLogModule } from 'app/core/components/thread-dump-log'; +import { ThreadDumpPageComponent } from './thread-dump-page.component'; +import { routing } from './thread-dump-page.routing'; + +@NgModule({ + declarations: [ + ThreadDumpPageComponent + ], + imports: [ + SharedModule, + NoticeModule, + ThreadDumpListModule, + ThreadDumpLogModule, + RouterModule.forChild(routing) + ], + exports: [], + providers: [] +}) +export class ThreadDumpPageModule { } diff --git a/web/src/main/webapp/v2/src/app/routes/thread-dump-page/thread-dump-page.component.css b/web/src/main/webapp/v2/src/app/routes/thread-dump-page/thread-dump-page.component.css new file mode 100644 index 000000000000..ac38fa98b833 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/thread-dump-page/thread-dump-page.component.css @@ -0,0 +1,43 @@ +.l-widget-group { + display: flex; + flex-flow: row wrap; + flex: 1; + padding: 0 15px; + height: 100%; + align-items: center; +} +.l-widget-group span { + color: #FFF; +} +.l-main-container { + display: flex; + flex-flow: column nowrap; + padding-top: 20px; + overflow-y: hidden; + height: calc(100vh - 50px); +} +.l-main-container h3 { + color: #00ccff; + padding-left: 20px; + font-weight: 200; + border-bottom: 1px solid #D0D7E1; + padding-bottom: 20px; +} +.l-main-section { + display: flex; + flex-flow: column nowrap; + background-color: #FFF; + flex: 1; + position: relative; + height: 100%; +} +.l-thread-dump-list { + height: 40%; + margin: 20px; + position: relative; +} +.l-thread-dump-log { + height: 60%; + position: relative; + background-color: #edf2f8; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/routes/thread-dump-page/thread-dump-page.component.html b/web/src/main/webapp/v2/src/app/routes/thread-dump-page/thread-dump-page.component.html new file mode 100644 index 000000000000..82c9e1a82bee --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/thread-dump-page/thread-dump-page.component.html @@ -0,0 +1,18 @@ + +
+ +
+ {{applicationName}} / {{agentId}} +
+
+
+

Thread Dump

+
+
+ +
+
+ +
+
+
diff --git a/web/src/main/webapp/v2/src/app/routes/thread-dump-page/thread-dump-page.component.ts b/web/src/main/webapp/v2/src/app/routes/thread-dump-page/thread-dump-page.component.ts new file mode 100644 index 000000000000..360884985c39 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/thread-dump-page/thread-dump-page.component.ts @@ -0,0 +1,39 @@ +import { Component, OnInit, OnDestroy } from '@angular/core'; +import { Subject } from 'rxjs'; +import { filter, takeUntil } from 'rxjs/operators'; + +import { UrlPathId } from 'app/shared/models'; +import { RouteInfoCollectorService, NewUrlStateNotificationService } from 'app/shared/services'; + +@Component({ + selector: 'pp-thread-dump-page', + templateUrl: './thread-dump-page.component.html', + styleUrls: ['./thread-dump-page.component.css'] +}) +export class ThreadDumpPageComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + applicationName: string; + agentId: string; + constructor( + private routeInfoCollectorService: RouteInfoCollectorService, + private newUrlStateNotificationService: NewUrlStateNotificationService, + ) {} + ngOnInit() { + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe), + filter((urlService: NewUrlStateNotificationService) => { + if (urlService.hasValue(UrlPathId.APPLICATION, UrlPathId.AGENT_ID)) { + return true; + } + return false; + }) + ).subscribe((urlService: NewUrlStateNotificationService) => { + this.applicationName = urlService.getPathValue(UrlPathId.APPLICATION).getApplicationName(); + this.agentId = urlService.getPathValue(UrlPathId.AGENT_ID); + }); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } +} diff --git a/web/src/main/webapp/v2/src/app/routes/thread-dump-page/thread-dump-page.routing.ts b/web/src/main/webapp/v2/src/app/routes/thread-dump-page/thread-dump-page.routing.ts new file mode 100644 index 000000000000..d392dd8e42eb --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/thread-dump-page/thread-dump-page.routing.ts @@ -0,0 +1,45 @@ + +import { Routes } from '@angular/router'; +import { UrlPath, UrlPathId } from 'app/shared/models'; +import { ThreadDumpListContainerComponent } from 'app/core/components/thread-dump-list/thread-dump-list-container.component'; +import { UrlRedirectorComponent } from 'app/shared/components/url-redirector'; +import { SystemConfigurationResolverService, ServerTimeResolverService } from 'app/shared/services'; +import { ThreadDumpPageComponent } from './thread-dump-page.component'; + +export const routing: Routes = [ + { + path: '', + component: ThreadDumpPageComponent, + resolve: { + configuration: SystemConfigurationResolverService + }, + children: [ + { + path: '', + redirectTo: '/' + UrlPath.MAIN, + pathMatch: 'full' + }, + { + path: ':' + UrlPathId.APPLICATION, + data: { + path: UrlPath.MAIN + }, + component: UrlRedirectorComponent + }, + { + path: ':' + UrlPathId.APPLICATION + '/:' + UrlPathId.AGENT_ID, + data: { + path: UrlPath.MAIN + }, + component: UrlRedirectorComponent + }, + { + path: ':' + UrlPathId.APPLICATION + '/:' + UrlPathId.AGENT_ID + '/:' + UrlPathId.FOCUS_TIMESTAMP, + resolve: { + serverTime: ServerTimeResolverService + }, + component: ThreadDumpListContainerComponent + } + ] + } +]; diff --git a/web/src/main/webapp/v2/src/app/routes/transaction-detail-page/index.ts b/web/src/main/webapp/v2/src/app/routes/transaction-detail-page/index.ts new file mode 100644 index 000000000000..a0a842f8e4e5 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/transaction-detail-page/index.ts @@ -0,0 +1,27 @@ +import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; + +import { SharedModule } from 'app/shared'; +import { NoticeModule } from 'app/core/components/notice'; +import { ApplicationListModule } from 'app/core/components/application-list'; +import { CommandGroupModule } from 'app/core/components/command-group'; +import { TransactionDetailContentsModule } from 'app/core/components/transaction-detail-contents'; +import { TransactionDetailPageComponent } from './transaction-detail-page.component'; +import { routing } from './transaction-detail-page.routing'; + +@NgModule({ + declarations: [ + TransactionDetailPageComponent + ], + imports: [ + SharedModule, + NoticeModule, + ApplicationListModule, + CommandGroupModule, + TransactionDetailContentsModule, + RouterModule.forChild(routing) + ], + exports: [], + providers: [] +}) +export class TransactionDetailPageModule {} diff --git a/web/src/main/webapp/v2/src/app/routes/transaction-detail-page/transaction-detail-page.component.css b/web/src/main/webapp/v2/src/app/routes/transaction-detail-page/transaction-detail-page.component.css new file mode 100644 index 000000000000..edb5a625303d --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/transaction-detail-page/transaction-detail-page.component.css @@ -0,0 +1,34 @@ +.l-transaction-content { + height:100%; +} +.l-main-container { + display: flex; + flex-flow: row wrap; + overflow-y: hidden; + height: calc(100vh - 50px); +} +.l-main-section { + display: flex; + flex-flow: column nowrap; + flex:1; + background:#edf2f8; + position: relative; + height: 100%; +} +.l-main-section .l-main-contents { + height: 100%; + position: relative; + overflow: auto; +} +.l-main-section .l-main-contents.l-main-contents-transaction { + overflow: hidden; +} +.l-main-contents .l-content-item { + margin:10px; +} +.l-main-contents .l-content-item.l-margin-none { + margin:0; +} +.l-main-contents .l-content-item.l-border-none { + border:none; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/routes/transaction-detail-page/transaction-detail-page.component.html b/web/src/main/webapp/v2/src/app/routes/transaction-detail-page/transaction-detail-page.component.html new file mode 100644 index 000000000000..3707f8d2ee6e --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/transaction-detail-page/transaction-detail-page.component.html @@ -0,0 +1,14 @@ + +
+ + +
+
+
+
+
+ +
+
+
+
diff --git a/web/src/main/webapp/v2/src/app/routes/transaction-detail-page/transaction-detail-page.component.ts b/web/src/main/webapp/v2/src/app/routes/transaction-detail-page/transaction-detail-page.component.ts new file mode 100644 index 000000000000..cd3a6fdea3db --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/transaction-detail-page/transaction-detail-page.component.ts @@ -0,0 +1,43 @@ +import { Component, OnInit, OnDestroy } from '@angular/core'; +import { Subject } from 'rxjs'; +import { takeUntil, filter } from 'rxjs/operators'; + +import { Actions } from 'app/shared/store'; +import { UrlPathId } from 'app/shared/models'; +import { StoreHelperService, RouteInfoCollectorService, NewUrlStateNotificationService, TransactionDetailDataService } from 'app/shared/services'; + +@Component({ + selector: 'pp-transaction-detail-page', + templateUrl: './transaction-detail-page.component.html', + styleUrls: ['./transaction-detail-page.component.css'] +}) +export class TransactionDetailPageComponent implements OnInit, OnDestroy { + private unsubscribe: Subject = new Subject(); + constructor( + private routeInfoCollectorService: RouteInfoCollectorService, + private storeHelperService: StoreHelperService, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private transactionDetailDataService: TransactionDetailDataService + ) {} + ngOnInit() { + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe), + filter((urlService: NewUrlStateNotificationService) => { + return urlService.hasValue(UrlPathId.AGENT_ID, UrlPathId.SPAN_ID, UrlPathId.TRACE_ID, UrlPathId.FOCUS_TIMESTAMP); + }) + ).subscribe((urlService: NewUrlStateNotificationService) => { + this.transactionDetailDataService.getData( + urlService.getPathValue(UrlPathId.AGENT_ID), + urlService.getPathValue(UrlPathId.SPAN_ID), + urlService.getPathValue(UrlPathId.TRACE_ID), + urlService.getPathValue(UrlPathId.FOCUS_TIMESTAMP) + ).subscribe((transactionDetailInfo: ITransactionDetailData) => { + this.storeHelperService.dispatch(new Actions.UpdateTransactionDetailData(transactionDetailInfo)); + }); + }); + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } +} diff --git a/web/src/main/webapp/v2/src/app/routes/transaction-detail-page/transaction-detail-page.routing.ts b/web/src/main/webapp/v2/src/app/routes/transaction-detail-page/transaction-detail-page.routing.ts new file mode 100644 index 000000000000..3ec2c8c9740b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/transaction-detail-page/transaction-detail-page.routing.ts @@ -0,0 +1,68 @@ +import { Routes } from '@angular/router'; + +import { UrlPath, UrlPathId } from 'app/shared/models'; +import { TransactionDetailContentsContainerComponent } from 'app/core/components/transaction-detail-contents/transaction-detail-contents-container.component'; +import { SystemConfigurationResolverService, ApplicationListResolverService } from 'app/shared/services'; +import { TransactionDetailPageComponent } from './transaction-detail-page.component'; + +const TO_MAIN = '/' + UrlPath.MAIN; + +export const routing: Routes = [ + { + path: '', + component: TransactionDetailPageComponent, + resolve: { + configuration: SystemConfigurationResolverService, + applicationList: ApplicationListResolverService + }, + children: [ + { + path: '', + redirectTo: TO_MAIN, + pathMatch: 'full' + }, + { + path: ':' + UrlPathId.TRACE_ID, + redirectTo: TO_MAIN, + pathMatch: 'full' + }, + { + path: ':' + UrlPathId.TRACE_ID + '/:' + UrlPathId.FOCUS_TIMESTAMP, + redirectTo: TO_MAIN, + pathMatch: 'full' + }, + { + path: ':' + UrlPathId.TRACE_ID + '/:' + UrlPathId.FOCUS_TIMESTAMP + '/:' + UrlPathId.AGENT_ID, + redirectTo: TO_MAIN, + pathMatch: 'full' + }, + { + path: ':' + UrlPathId.TRACE_ID + '/:' + UrlPathId.FOCUS_TIMESTAMP + '/:' + UrlPathId.AGENT_ID + '/:' + UrlPathId.SPAN_ID, + children: [ + { + path: '', + component: TransactionDetailContentsContainerComponent + }, + { + path: ':' + UrlPathId.VIEW_TYPE, + children: [ + { + path: '', + component: TransactionDetailContentsContainerComponent, + }, + { + path: ':' + UrlPathId.SEARCH_ID, + children: [ + { + path: '', + component: TransactionDetailContentsContainerComponent, + } + ] + } + ] + } + ] + } + ] + } +]; diff --git a/web/src/main/webapp/v2/src/app/routes/transaction-list-page/index.ts b/web/src/main/webapp/v2/src/app/routes/transaction-list-page/index.ts new file mode 100644 index 000000000000..86fc552fa3ee --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/transaction-list-page/index.ts @@ -0,0 +1,38 @@ +import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; + +import { SharedModule } from 'app/shared'; +import { AngularSplitModule } from 'app/core/components/angular-split/angular-split'; +import { NoticeModule } from 'app/core/components/notice'; +import { ApplicationListModule } from 'app/core/components/application-list'; +import { DataLoadIndicatorModule } from 'app/core/components/data-load-indicator'; +import { StateButtonModule } from 'app/core/components/state-button'; +import { CommandGroupModule } from 'app/core/components/command-group'; +import { TransactionTableGridModule } from 'app/core/components/transaction-table-grid'; +import { TransactionListBottomContentsModule } from 'app/core/components/transaction-list-bottom-contents'; + +import { TransactionListEmptyComponent } from './transaction-list-empty.component'; +import { TransactionListPageComponent } from './transaction-list-page.component'; +import { routing } from './transaction-list-page.routing'; + +@NgModule({ + declarations: [ + TransactionListEmptyComponent, + TransactionListPageComponent + ], + imports: [ + AngularSplitModule, + SharedModule, + NoticeModule, + ApplicationListModule, + DataLoadIndicatorModule, + StateButtonModule, + CommandGroupModule, + TransactionTableGridModule, + TransactionListBottomContentsModule, + RouterModule.forChild(routing) + ], + exports: [], + providers: [] +}) +export class TransactionListPageModule {} diff --git a/web/src/main/webapp/v2/src/app/routes/transaction-list-page/transaction-list-empty.component.ts b/web/src/main/webapp/v2/src/app/routes/transaction-list-page/transaction-list-empty.component.ts new file mode 100644 index 000000000000..534964ab3546 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/transaction-list-page/transaction-list-empty.component.ts @@ -0,0 +1,32 @@ +import { Component, OnInit } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; + +@Component({ + selector: 'pp-transaction-list-empty', + template: ` +
+ {{message}} +
+ `, + styles: [` + div { + width: 100%; + height: 100%; + display: flex; + font-size: 20px; + font-weight: 600; + align-items: center; + justify-content: center; + background-color: rgba(30, 87, 153, 0.3); + } + `] +}) +export class TransactionListEmptyComponent implements OnInit { + message: string; + constructor(private translateService: TranslateService) {} + ngOnInit() { + this.translateService.get('TRANSACTION_LIST.SELECT_TRANSACTION').subscribe((text: string) => { + this.message = text; + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/routes/transaction-list-page/transaction-list-page.component.css b/web/src/main/webapp/v2/src/app/routes/transaction-list-page/transaction-list-page.component.css new file mode 100644 index 000000000000..5ecc00916670 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/transaction-list-page/transaction-list-page.component.css @@ -0,0 +1,17 @@ +.l-widget-group { + display: flex; + flex-flow: row wrap; + flex: 1; + padding: 0 15px; + height: 100%; + align-items: center; +} +.l-main-container { + display: flex; + flex-flow: row wrap; + height: calc(100vh - 50px); + overflow-y: hidden; +} +split-area:first-child { + overflow: hidden !important; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/routes/transaction-list-page/transaction-list-page.component.html b/web/src/main/webapp/v2/src/app/routes/transaction-list-page/transaction-list-page.component.html new file mode 100644 index 000000000000..aaf760ee84fb --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/transaction-list-page/transaction-list-page.component.html @@ -0,0 +1,19 @@ + +
+ +
+ +
+ + +
+
+ + + + + + + + +
diff --git a/web/src/main/webapp/v2/src/app/routes/transaction-list-page/transaction-list-page.component.ts b/web/src/main/webapp/v2/src/app/routes/transaction-list-page/transaction-list-page.component.ts new file mode 100644 index 000000000000..d69d58b652d5 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/transaction-list-page/transaction-list-page.component.ts @@ -0,0 +1,27 @@ +import { Component, OnInit } from '@angular/core'; + +import { WebAppSettingDataService, RouteInfoCollectorService, GutterEventService } from 'app/shared/services'; + +@Component({ + selector: 'pp-transaction-list-page', + templateUrl: './transaction-list-page.component.html', + styleUrls: ['./transaction-list-page.component.css'] +}) +export class TransactionListPageComponent implements OnInit { + direction = 'vertical'; + handlePosition: number[]; + constructor( + private routeInfoCollectorService: RouteInfoCollectorService, + private webAppSettingDataService: WebAppSettingDataService, + private gutterEventService: GutterEventService, + ) {} + ngOnInit() { + this.handlePosition = this.webAppSettingDataService.getListHandlePosition(); + } + onGutterResized({sizes}: {sizes: number[]}): void { + this.webAppSettingDataService.setListHandlePosition(sizes.map((size: number): number => { + return Number.parseFloat(size.toFixed(2)); + })); + this.gutterEventService.resizedGutter(sizes); + } +} diff --git a/web/src/main/webapp/v2/src/app/routes/transaction-list-page/transaction-list-page.routing.ts b/web/src/main/webapp/v2/src/app/routes/transaction-list-page/transaction-list-page.routing.ts new file mode 100644 index 000000000000..b1ecc6cd0d4c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/transaction-list-page/transaction-list-page.routing.ts @@ -0,0 +1,70 @@ +import { Routes } from '@angular/router'; + +import { UrlPath, UrlPathId } from 'app/shared/models'; +import { TransactionListEmptyComponent } from './transaction-list-empty.component'; +import { TransactionListBottomContentsContainerComponent } from 'app/core/components/transaction-list-bottom-contents/transaction-list-bottom-contents-container.component'; +import { TransactionTableGridContainerComponent } from 'app/core/components/transaction-table-grid/transaction-table-grid-container.component'; +import { SystemConfigurationResolverService, ApplicationListResolverService } from 'app/shared/services'; +import { TransactionListPageComponent } from './transaction-list-page.component'; + +const TO_MAIN = '/' + UrlPath.MAIN; + +export const routing: Routes = [ + { + path: '', + component: TransactionListPageComponent, + resolve: { + configuration: SystemConfigurationResolverService, + applicationList: ApplicationListResolverService + }, + children: [ + { + path: '', + redirectTo: TO_MAIN, + pathMatch: 'full' + }, + { + path: ':' + UrlPathId.APPLICATION, + redirectTo: TO_MAIN, + pathMatch: 'full' + }, + { + path: ':' + UrlPathId.APPLICATION + '/:' + UrlPathId.PERIOD, + redirectTo: TO_MAIN, + pathMatch: 'full' + }, + { + path: ':' + UrlPathId.APPLICATION + '/:' + UrlPathId.PERIOD + '/:' + UrlPathId.END_TIME, + children: [ + { + path: '', + component: TransactionListEmptyComponent + }, + { + path: '', + component: TransactionTableGridContainerComponent, + outlet: 'transaction-table' + }, + { + path: ':' + UrlPathId.TRANSACTION_INFO, + children: [ + { + path: '', + component: TransactionListBottomContentsContainerComponent, + }, + { + path: ':' + UrlPathId.VIEW_TYPE, + children: [ + { + path: '', + component: TransactionListBottomContentsContainerComponent, + } + ] + } + ] + } + ] + } + ] + } +]; diff --git a/web/src/main/webapp/v2/src/app/routes/transaction-view-page/index.ts b/web/src/main/webapp/v2/src/app/routes/transaction-view-page/index.ts new file mode 100644 index 000000000000..024bae77e9cc --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/transaction-view-page/index.ts @@ -0,0 +1,35 @@ +import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; + +import { SharedModule } from 'app/shared'; +import { ApplicationListModule } from 'app/core/components/application-list'; +import { NoticeModule } from 'app/core/components/notice'; +import { CommandGroupModule } from 'app/core/components/command-group'; +import { TransactionShortInfoModule } from 'app/core/components/transaction-short-info'; +import { TransactionViewTopContentsModule } from 'app/core/components/transaction-view-top-contents'; +import { TransactionViewBottomContentsModule } from 'app/core/components/transaction-view-bottom-contents'; + +import { AngularSplitModule } from 'app/core/components/angular-split/angular-split'; +import { TransactionViewPageComponent } from './transaction-view-page.component'; +import { routing } from './transaction-view-page.routing'; + +@NgModule({ + declarations: [ + TransactionViewPageComponent + ], + imports: [ + AngularSplitModule, + SharedModule, + ApplicationListModule, + NoticeModule, + CommandGroupModule, + TransactionShortInfoModule, + TransactionViewTopContentsModule, + TransactionViewBottomContentsModule, + RouterModule.forChild(routing) + ], + exports: [ + ], + providers: [] +}) +export class TransactionViewPageModule {} diff --git a/web/src/main/webapp/v2/src/app/routes/transaction-view-page/transaction-view-page.component.css b/web/src/main/webapp/v2/src/app/routes/transaction-view-page/transaction-view-page.component.css new file mode 100644 index 000000000000..69c5b0cdace4 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/transaction-view-page/transaction-view-page.component.css @@ -0,0 +1,10 @@ +.l-main-container { + display: flex; + flex-flow: row wrap; + overflow-y: hidden; + height: calc(100vh - 50px); +} +.l-component-wrapper { + position: relative; + width: 100%; +} diff --git a/web/src/main/webapp/v2/src/app/routes/transaction-view-page/transaction-view-page.component.html b/web/src/main/webapp/v2/src/app/routes/transaction-view-page/transaction-view-page.component.html new file mode 100644 index 000000000000..42678b242007 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/transaction-view-page/transaction-view-page.component.html @@ -0,0 +1,18 @@ + +
+ + +
+
+
+ +
+ + + + + + + + +
diff --git a/web/src/main/webapp/v2/src/app/routes/transaction-view-page/transaction-view-page.component.ts b/web/src/main/webapp/v2/src/app/routes/transaction-view-page/transaction-view-page.component.ts new file mode 100644 index 000000000000..d79ef0030cfe --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/transaction-view-page/transaction-view-page.component.ts @@ -0,0 +1,54 @@ +import { Component, OnInit } from '@angular/core'; +import { Subject, Observable, of } from 'rxjs'; +import { take, takeUntil, switchMap } from 'rxjs/operators'; + +import { Actions } from 'app/shared/store'; +import { UrlPathId } from 'app/shared/models'; +import { StoreHelperService, RouteInfoCollectorService, NewUrlStateNotificationService, TransactionDetailDataService, GutterEventService } from 'app/shared/services'; + +@Component({ + selector: 'pp-transaction-view-page', + templateUrl: './transaction-view-page.component.html', + styleUrls: ['./transaction-view-page.component.css'] +}) +export class TransactionViewPageComponent implements OnInit { + private unsubscribe: Subject = new Subject(); + splitSize: number[]; + + constructor( + private routeInfoCollectorService: RouteInfoCollectorService, + private storeHelperService: StoreHelperService, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private transactionDetailDataService: TransactionDetailDataService, + private gutterEventService: GutterEventService, + ) { } + + ngOnInit() { + this.initSplitRatio(); + this.initTransactionViewInfo(); + } + private initSplitRatio(): void { + this.gutterEventService.onGutterResized$.pipe( + take(1) + ).subscribe((splitSize: number[]) => this.splitSize = splitSize); + } + private initTransactionViewInfo(): void { + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + takeUntil(this.unsubscribe), + switchMap((urlService: NewUrlStateNotificationService) => { + return this.transactionDetailDataService.getData( + urlService.getPathValue(UrlPathId.AGENT_ID), + urlService.getPathValue(UrlPathId.SPAN_ID), + urlService.getPathValue(UrlPathId.TRACE_ID), + urlService.getPathValue(UrlPathId.FOCUS_TIMESTAMP) + ); + }) + ).subscribe((transactionDetailInfo: ITransactionDetailData) => { + this.storeHelperService.dispatch(new Actions.UpdateTransactionDetailData(transactionDetailInfo)); + }); + } + onAjaxError(err: Error): Observable { + // TODO: Error발생시 띄워줄 팝업 컴포넌트 Call - issue#170 + return of({}); + } +} diff --git a/web/src/main/webapp/v2/src/app/routes/transaction-view-page/transaction-view-page.routing.ts b/web/src/main/webapp/v2/src/app/routes/transaction-view-page/transaction-view-page.routing.ts new file mode 100644 index 000000000000..4414ef9c37a3 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/routes/transaction-view-page/transaction-view-page.routing.ts @@ -0,0 +1,55 @@ +import { Routes } from '@angular/router'; +import { UrlPath, UrlPathId } from 'app/shared/models'; +import { TransactionViewTopContentsContainerComponent } from 'app/core/components/transaction-view-top-contents/transaction-view-top-contents-container.component'; +import { TransactionViewBottomContentsContainerComponent } from 'app/core/components/transaction-view-bottom-contents/transaction-view-bottom-contents-container.component'; +import { SystemConfigurationResolverService, ApplicationListResolverService } from 'app/shared/services'; +import { TransactionViewPageComponent } from './transaction-view-page.component'; + +const TO_MAIN = '/' + UrlPath.MAIN; + +export const routing: Routes = [ + { + path: '', + component: TransactionViewPageComponent, + resolve: { + configuration: SystemConfigurationResolverService, + applicationList: ApplicationListResolverService + }, + children: [ + { + path: '', + redirectTo: TO_MAIN, + pathMatch: 'full' + }, + { + path: ':' + UrlPathId.AGENT_ID, + redirectTo: TO_MAIN, + pathMatch: 'full' + }, + { + path: ':' + UrlPathId.AGENT_ID + '/:' + UrlPathId.TRACE_ID, + redirectTo: TO_MAIN, + pathMatch: 'full' + }, + { + path: ':' + UrlPathId.AGENT_ID + '/:' + UrlPathId.TRACE_ID + '/:' + UrlPathId.FOCUS_TIMESTAMP, + redirectTo: TO_MAIN, + pathMatch: 'full' + }, + { + path: ':' + UrlPathId.AGENT_ID + '/:' + UrlPathId.TRACE_ID + '/:' + UrlPathId.FOCUS_TIMESTAMP + '/:' + UrlPathId.SPAN_ID, + children: [ + { + path: '', + component: TransactionViewTopContentsContainerComponent + }, + { + path: '', + component: TransactionViewBottomContentsContainerComponent, + outlet: 'transaction-view-detail' + } + ] + } + ] + } +]; diff --git a/web/src/main/webapp/v2/src/app/shared/components/empty-contents/empty-contents.component.css b/web/src/main/webapp/v2/src/app/shared/components/empty-contents/empty-contents.component.css new file mode 100644 index 000000000000..924588cb7673 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/components/empty-contents/empty-contents.component.css @@ -0,0 +1,11 @@ +div { + text-align: center; + padding: 10% 20px 20px 20px; + vertical-align: middle; + height: 100%; +} +img { + width: 80%; + filter: grayscale(90%); + opacity: .5; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/shared/components/empty-contents/empty-contents.component.html b/web/src/main/webapp/v2/src/app/shared/components/empty-contents/empty-contents.component.html new file mode 100644 index 000000000000..8b92dedb9dec --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/components/empty-contents/empty-contents.component.html @@ -0,0 +1,3 @@ +
+ +
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/shared/components/empty-contents/empty-contents.component.spec.ts b/web/src/main/webapp/v2/src/app/shared/components/empty-contents/empty-contents.component.spec.ts new file mode 100644 index 000000000000..436daa628444 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/components/empty-contents/empty-contents.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EmptyContentsComponent } from './empty-contents.component'; + +describe('EmptyContentsComponent', () => { + let component: EmptyContentsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [EmptyContentsComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EmptyContentsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/web/src/main/webapp/v2/src/app/shared/components/empty-contents/empty-contents.component.ts b/web/src/main/webapp/v2/src/app/shared/components/empty-contents/empty-contents.component.ts new file mode 100644 index 000000000000..75d207214166 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/components/empty-contents/empty-contents.component.ts @@ -0,0 +1,25 @@ +import { Component, OnInit } from '@angular/core'; +import { Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; + +import { UrlPathId } from 'app/shared/models'; +import { NewUrlStateNotificationService } from 'app/shared/services'; + +@Component({ + selector: 'pp-empty-contents', + templateUrl: './empty-contents.component.html', + styleUrls: ['./empty-contents.component.css'] +}) +export class EmptyContentsComponent implements OnInit { + hiddenComponent$: Observable; + constructor( + private newUrlStateNotificationService: NewUrlStateNotificationService + ) {} + ngOnInit() { + this.hiddenComponent$ = this.newUrlStateNotificationService.onUrlStateChange$.pipe( + map((urlService: NewUrlStateNotificationService) => { + return !urlService.hasValue(UrlPathId.PERIOD, UrlPathId.END_TIME); + }) + ); + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/components/empty-contents/index.ts b/web/src/main/webapp/v2/src/app/shared/components/empty-contents/index.ts new file mode 100644 index 000000000000..3dd9c774a2fe --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/components/empty-contents/index.ts @@ -0,0 +1,2 @@ +export { EmptyContentsComponent } from './empty-contents.component'; +export { NoneComponent } from './none.component'; diff --git a/web/src/main/webapp/v2/src/app/shared/components/empty-contents/none.component.ts b/web/src/main/webapp/v2/src/app/shared/components/empty-contents/none.component.ts new file mode 100644 index 000000000000..ee1f6360e957 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/components/empty-contents/none.component.ts @@ -0,0 +1,10 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'pp-none', + template: '' +}) +export class NoneComponent implements OnInit { + constructor() {} + ngOnInit() {} +} diff --git a/web/src/main/webapp/v2/src/app/shared/components/film-for-disable/film-for-disable.component.css b/web/src/main/webapp/v2/src/app/shared/components/film-for-disable/film-for-disable.component.css new file mode 100644 index 000000000000..1eca87e53427 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/components/film-for-disable/film-for-disable.component.css @@ -0,0 +1,7 @@ +.l-disabled { + top: 0px; + left: 0px; + height: 100%; + position: absolute; + background: linear-gradient(135deg, rgba(226,226,226,0.7) 0%, rgba(219,219,219,0.7) 43%, rgba(209,209,209,0.7) 51%, rgba(254,254,254,0.7) 100%); +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/shared/components/film-for-disable/film-for-disable.component.html b/web/src/main/webapp/v2/src/app/shared/components/film-for-disable/film-for-disable.component.html new file mode 100644 index 000000000000..1ea029adc822 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/components/film-for-disable/film-for-disable.component.html @@ -0,0 +1 @@ +
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/shared/components/film-for-disable/film-for-disable.component.ts b/web/src/main/webapp/v2/src/app/shared/components/film-for-disable/film-for-disable.component.ts new file mode 100644 index 000000000000..a2daac5c8094 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/components/film-for-disable/film-for-disable.component.ts @@ -0,0 +1,21 @@ +import { Component, OnInit, Input, ElementRef, Renderer2 } from '@angular/core'; + +@Component({ + selector: 'pp-film-for-disable', + templateUrl: './film-for-disable.component.html', + styleUrls: ['./film-for-disable.component.css'] +}) +export class FilmForDisableComponent implements OnInit { + @Input() zIndex: number; + @Input() marginWidth: number; + constructor( + private el: ElementRef, + private renderer: Renderer2 + ) {} + + ngOnInit() { + const el = this.el.nativeElement.querySelector('.l-disabled'); + this.renderer.setStyle(el, 'z-index', this.zIndex); + this.renderer.setStyle(el, 'width', `calc(100% - ${this.marginWidth}px)`); + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/components/film-for-disable/index.ts b/web/src/main/webapp/v2/src/app/shared/components/film-for-disable/index.ts new file mode 100644 index 000000000000..f929c3b993b9 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/components/film-for-disable/index.ts @@ -0,0 +1 @@ +export { FilmForDisableComponent } from './film-for-disable.component'; diff --git a/web/src/main/webapp/v2/src/app/shared/components/header-logo/header-logo.component.css b/web/src/main/webapp/v2/src/app/shared/components/header-logo/header-logo.component.css new file mode 100644 index 000000000000..c402b32623e5 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/components/header-logo/header-logo.component.css @@ -0,0 +1,14 @@ +.logo { + width: 165px; + height: 100%; + box-shadow: 1px 0 0 #55a2e6; + background: #408dd4; + border-right: 1px solid #3881c4; +} +.logo a { + width:100%; + height:100%; + display: flex; + align-items: center; + justify-content: center; +} diff --git a/web/src/main/webapp/v2/src/app/shared/components/header-logo/header-logo.component.html b/web/src/main/webapp/v2/src/app/shared/components/header-logo/header-logo.component.html new file mode 100644 index 000000000000..4b3cb2522238 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/components/header-logo/header-logo.component.html @@ -0,0 +1,5 @@ +

+ + PINPOINT LOGO + +

\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/shared/components/header-logo/header-logo.component.ts b/web/src/main/webapp/v2/src/app/shared/components/header-logo/header-logo.component.ts new file mode 100644 index 000000000000..85a998adcea3 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/components/header-logo/header-logo.component.ts @@ -0,0 +1,18 @@ +import { Component, OnInit } from '@angular/core'; +import { WebAppSettingDataService } from 'app/shared/services'; + +@Component({ + selector: 'pp-header-logo', + templateUrl: './header-logo.component.html', + styleUrls: ['./header-logo.component.css'] +}) +export class HeaderLogoComponent implements OnInit { + logoPath: string; + constructor( + private webAppSettingDataService: WebAppSettingDataService + ) { } + + ngOnInit() { + this.logoPath = this.webAppSettingDataService.getLogoPath(); + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/components/header-logo/index.ts b/web/src/main/webapp/v2/src/app/shared/components/header-logo/index.ts new file mode 100644 index 000000000000..f14db7e5060e --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/components/header-logo/index.ts @@ -0,0 +1 @@ +export { HeaderLogoComponent } from './header-logo.component'; diff --git a/web/src/main/webapp/v2/src/app/shared/components/index.ts b/web/src/main/webapp/v2/src/app/shared/components/index.ts new file mode 100644 index 000000000000..61b8de77f0b1 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/components/index.ts @@ -0,0 +1,5 @@ +import { EmptyContentsComponent } from './empty-contents'; + +export const SHARED_COMPONENTS = [ + EmptyContentsComponent +]; diff --git a/web/src/main/webapp/v2/src/app/shared/components/loading/index.ts b/web/src/main/webapp/v2/src/app/shared/components/loading/index.ts new file mode 100644 index 000000000000..5d28caaf62c9 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/components/loading/index.ts @@ -0,0 +1 @@ +export { LoadingComponent } from './loading.component'; diff --git a/web/src/main/webapp/v2/src/app/shared/components/loading/loading.component.css b/web/src/main/webapp/v2/src/app/shared/components/loading/loading.component.css new file mode 100644 index 000000000000..c196e42aabb8 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/components/loading/loading.component.css @@ -0,0 +1,5 @@ +:host { + position: absolute; + top: 40%; + left: 47%; +} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/shared/components/loading/loading.component.html b/web/src/main/webapp/v2/src/app/shared/components/loading/loading.component.html new file mode 100644 index 000000000000..3c612393afce --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/components/loading/loading.component.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/shared/components/loading/loading.component.ts b/web/src/main/webapp/v2/src/app/shared/components/loading/loading.component.ts new file mode 100644 index 000000000000..0cf5be37bdaa --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/components/loading/loading.component.ts @@ -0,0 +1,30 @@ +import { Component, OnInit, Input, ElementRef, Renderer2 } from '@angular/core'; +import { style, animate, transition, trigger } from '@angular/animations'; + +@Component({ + selector: 'pp-loading', + animations: [ + trigger('fadeOut', [ + transition(':leave', [ // is alias to '* => void' + animate(1000, style({ + opacity: 0 + })) + ]) + ]) + ], + templateUrl: './loading.component.html', + styleUrls: ['./loading.component.css'] +}) +export class LoadingComponent implements OnInit { + @Input() showLoading: boolean; + @Input() zIndex: number; + + constructor( + private el: ElementRef, + private renderer: Renderer2 + ) {} + + ngOnInit() { + this.renderer.setStyle(this.el.nativeElement, 'z-index', this.zIndex); + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/components/page-not-found/index.ts b/web/src/main/webapp/v2/src/app/shared/components/page-not-found/index.ts new file mode 100644 index 000000000000..59f9c154443e --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/components/page-not-found/index.ts @@ -0,0 +1 @@ +export * from './page-not-found.component'; diff --git a/web/src/main/webapp/v2/src/app/shared/components/page-not-found/page-not-found.component.css b/web/src/main/webapp/v2/src/app/shared/components/page-not-found/page-not-found.component.css new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/web/src/main/webapp/v2/src/app/shared/components/page-not-found/page-not-found.component.html b/web/src/main/webapp/v2/src/app/shared/components/page-not-found/page-not-found.component.html new file mode 100644 index 000000000000..61ed4e6a016d --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/components/page-not-found/page-not-found.component.html @@ -0,0 +1,5 @@ +
+
+ Page Not Found 사공사 +
+
\ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/shared/components/page-not-found/page-not-found.component.ts b/web/src/main/webapp/v2/src/app/shared/components/page-not-found/page-not-found.component.ts new file mode 100644 index 000000000000..6d7496a76210 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/components/page-not-found/page-not-found.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'pp-page-not-found', + templateUrl: './page-not-found.component.html', + styleUrls: ['./page-not-found.component.css'] +}) +export class PageNotFoundComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/web/src/main/webapp/v2/src/app/shared/components/simple-progress-slider/index.ts b/web/src/main/webapp/v2/src/app/shared/components/simple-progress-slider/index.ts new file mode 100644 index 000000000000..f1bc08c2e1b6 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/components/simple-progress-slider/index.ts @@ -0,0 +1 @@ +export * from './simple-progress-slider.component'; diff --git a/web/src/main/webapp/v2/src/app/shared/components/simple-progress-slider/simple-progress-slider.component.css b/web/src/main/webapp/v2/src/app/shared/components/simple-progress-slider/simple-progress-slider.component.css new file mode 100644 index 000000000000..bba669ac8b77 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/components/simple-progress-slider/simple-progress-slider.component.css @@ -0,0 +1,132 @@ + :host { + width: 100%; + } + .slider-for-progress { + width: 100%; + padding-top: 10px; + } + .slider-for-progress .sfp-line { + width: 100%; + height: 14px; + position: relative; + } + .slider-for-progress .sfp-line div, .slider-for-progress .sfp-line span { + position: absolute; + } + .slider-for-progress .sfp-handle { + top: -4px; + width: 14px; + height: 14px; + border-radius: 50%; + background-color: #FFF; + box-shadow: 1px 1px 3px 1px rgba(0,0,0,0.4); + } + .slider-for-progress .sfp-handle span { + top: 3px; + left: 3px; + width: 8px; + height: 8px; + border-radius: 50%; + background-color: #4b8ed4; + } + .slider-for-progress .sfp-left-handler { + left: 100%; /* @script position reset */ + margin-left: -7px; + } + .slider-for-progress .sfp-right-handler { + right: 0px; /* @script position reset */ + margin-right: -7px; + } + .slider-for-progress .sfp-label { + top: -2px; + position: absolute; + font-size: 10px; + } + .slider-for-progress .sfp-label span { + border: 1px solid #3e83c6; + padding: 2px 4px 1px 4px; + position: relative; + background-color: #FFF; + box-shadow: 1px 1px 3px 1px rgba(0,0,0,0.4); + } + .slider-for-progress .sfp-label span:before, .slider-for-progress .sfp-label span:after { + top: 50%; + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; + pointer-events: none; + } + .slider-for-progress .sfp-label span:before { + border-color: rgba(62, 131, 198, 0); + border-width: 5px; + margin-top: -5px; + } + .slider-for-progress .sfp-label span:after { + border-color: rgba(255, 255, 255, 0); + border-width: 4px; + margin-top: -4px; + } + .slider-for-progress .sfp-label-right-arrow span:before, .slider-for-progress .sfp-label-right-arrow span:after { + left: 100%; + } + .slider-for-progress .sfp-label-right-arrow span:before { + border-left-color: #3e83c6; + } + .slider-for-progress .sfp-label-right-arrow span:after { + border-left-color: #ffffff; + } + .slider-for-progress .sfp-label-left-arrow span:before, .slider-for-progress .sfp-label-left-arrow span:after { + right: 100%; + } + .slider-for-progress .sfp-label-left-arrow span:before { + border-right-color: #3e83c6; + } + .slider-for-progress .sfp-label-left-arrow span:after { + border-right-color: #ffffff; + } + + .slider-for-progress .sfp-label-right-arrow { + margin-left: -50px; + left: 0%;/* @script position reset */ + } + .slider-for-progress .sfp-label-left-arrow { + margin-left: 13px; + left: 0%; /* @script position reset */ + } + .slider-for-progress .sfp-value { + width: 100%; + height: 20px; + } + .slider-for-progress .sfp-background { + top: 0px; + left: 0px; + width: 100%; + height: 7px; + background-color: #c9def3; + } + .slider-for-progress .sfp-foreground { + top: 0px; + right: 0px; + width: 0px; /* @script position reset */ + height: 7px; + background-color: #3dcfa8; + } + .slider-for-progress .sfp-value { + color: #FFF; + width: 100%; + position: relative; + font-size: 10px; + } + .slider-for-progress .sfp-value span { + position: absolute; + } + .slider-for-progress .sfp-value .first { + left: 0px; + margin-left: -15px; + } + .slider-for-progress .sfp-value .last { + right: 0px; + margin-right: -15px; + } \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/app/shared/components/simple-progress-slider/simple-progress-slider.component.html b/web/src/main/webapp/v2/src/app/shared/components/simple-progress-slider/simple-progress-slider.component.html new file mode 100644 index 000000000000..f47b5a4c61f9 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/components/simple-progress-slider/simple-progress-slider.component.html @@ -0,0 +1,19 @@ +
+
+
+
+
+
+
+ {{selectedStartValue}} +
+
+ {{selectedStartValue}} +
+
+
+ {{rangeStartValue}} + {{d.value}} + {{rangeEndValue}} +
+
diff --git a/web/src/main/webapp/v2/src/app/shared/components/simple-progress-slider/simple-progress-slider.component.ts b/web/src/main/webapp/v2/src/app/shared/components/simple-progress-slider/simple-progress-slider.component.ts new file mode 100644 index 000000000000..982a95bd819b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/components/simple-progress-slider/simple-progress-slider.component.ts @@ -0,0 +1,145 @@ +import { Component, OnInit, OnChanges, SimpleChanges, Input } from '@angular/core'; +import { trigger, state, style, animate, transition } from '@angular/animations'; +import * as moment from 'moment-timezone'; + +interface IRangePosition { + value: string; + position: number; +} + +@Component({ + selector: 'pp-simple-progress-slider', + templateUrl: './simple-progress-slider.component.html', + styleUrls: ['./simple-progress-slider.component.css'], + animations: [ + trigger('handlerTrigger', [ + state('start', style({ + left: '100%' + })), + state(':enter', style({ + left: '100%' + })), + state('next', style({ + left: '{{value}}' + }), {params: {value: '100%'}}), + state('andNext', style({ + left: '{{value}}' + }), {params: {value: '100%'}}), + transition('* => *', [ + animate('0.3s 0.3s ease-out') + ]) + ]), + trigger('barTrigger', [ + state('start', style({ + width: '0%' + })), + state(':enter', style({ + width: '0%' + })), + state('next', style({ + width: '{{value}}' + }), {params: {value: '0%'}}), + state('andNext', style({ + width: '{{value}}' + }), {params: {value: '0%'}}), + transition('* => *', [ + animate('0.3s 0.3s ease-out') + ]) + ]), + ] +}) +export class SimpleProgressSliderComponent implements OnInit, OnChanges { + @Input() timezone: string; + @Input() dateFormat: string; + @Input() rangeValue: number[] = [0, 100]; + @Input() selectedRangeValue: number[] = [100, 100]; + @Input() type = 'date'; // count + @Input() gradationCount = 6; + private triggerStep: { [key: string]: string } = { + start: 'next', + next: 'andNext', + andNext: 'next' + }; + barTrigger = 'start'; + handlerTrigger = 'start'; + showLabel = false; + rangeStartValue = ''; + rangeEndValue = ''; + selectedStartValue = ''; + gradationValue: IRangePosition[] = []; + selectedStartPosition = 100; + constructor() {} + ngOnInit() {} + ngOnChanges(changes: SimpleChanges) { + if (changes['rangeValue'] && changes['rangeValue']['currentValue']) { + this.initXAxis(); + } + if (changes['selectedRangeValue'] && changes['selectedRangeValue']['currentValue']) { + this.selectedStartValue = this.convertToType(this.selectedRangeValue[0]); + this.calcuSelectedStartPosition(); + this.setAnimationNextStep(); + } + if (changes['timezone'] && changes['timezone'].firstChange === false) { + this.changeTimeDisplay(); + } + if (changes['dateFormat'] && changes['dateFormat'].firstChange === false) { + this.changeTimeDisplay(); + } + } + private setAnimationNextStep(): void { + this.barTrigger = this.triggerStep[this.barTrigger]; + this.handlerTrigger = this.triggerStep[this.handlerTrigger]; + } + private initXAxis(): void { + this.rangeStartValue = this.convertToType(this.rangeValue[0]); + this.rangeEndValue = this.convertToType(this.rangeValue[1]); + this.calcuGradationValue(); + } + private changeTimeDisplay(): void { + this.initXAxis(); + this.selectedStartValue = this.convertToType(this.selectedRangeValue[0]); + } + animationStart($event: any): void { + this.showLabel = false; + } + animationDone($event: any): void { + if ($event.fromState !== 'void') { + this.showLabel = true; + } + } + hiddenRightArrowLabel(): boolean { + return this.selectedStartPosition < 50 || this.showLabel === false; + } + hiddenLeftArrowLabel(): boolean { + return this.selectedStartPosition >= 50 || this.showLabel === false; + } + convertToType(value: number): string { + switch (this.type) { + case 'count': + return value.toString(); + case 'date': + return moment(value).tz(this.timezone).format(this.dateFormat); + default: + return value.toString(); + } + } + calcuGradationValue(): void { + const gradationCount = this.gradationCount - 1; + const gap = this.rangeValue[1] - this.rangeValue[0]; + const gapPosition = 100 / gradationCount; + const gapValue = gap / gradationCount; + this.gradationValue.length = 0; + for (let i = 1; i <= gradationCount - 1; i++) { + this.gradationValue.push({ + value: this.convertToType(this.rangeValue[0] + (gapValue * i)), + position: (gapPosition * i), + }); + } + } + calcuSelectedStartPosition(): void { + const gap = this.rangeValue[1] - this.rangeValue[0]; + const selectedGap = this.selectedRangeValue[1] - this.selectedRangeValue[0]; + const tempStartPosition = 100 - (selectedGap * 100) / gap; + this.selectedStartPosition = Math.min(100, Math.max(0, tempStartPosition)); + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/components/url-redirector/index.ts b/web/src/main/webapp/v2/src/app/shared/components/url-redirector/index.ts new file mode 100644 index 000000000000..4182656f6fb7 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/components/url-redirector/index.ts @@ -0,0 +1 @@ +export * from './url-redirector.component'; diff --git a/web/src/main/webapp/v2/src/app/shared/components/url-redirector/url-redirector.component.ts b/web/src/main/webapp/v2/src/app/shared/components/url-redirector/url-redirector.component.ts new file mode 100644 index 000000000000..4683d5bab98f --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/components/url-redirector/url-redirector.component.ts @@ -0,0 +1,59 @@ +import { Component } from '@angular/core'; +import { ActivatedRoute } from '@angular/router'; + +import { WebAppSettingDataService, UrlRouteManagerService } from 'app/shared/services'; + +@Component({ + selector: 'pp-url-redirector', + template: '' +}) +export class UrlRedirectorComponent { + + constructor( + private activatedRoute: ActivatedRoute, + private webAppSettingDataService: WebAppSettingDataService, + private urlRouteManagerService: UrlRouteManagerService, + ) { + // @ALERT + // URL Redirector가 호출되는 상황은 RouteInfoCollectorService가 호출되지 않는 상황이기 때문에 + // RouteInfoCollectorService를 통해 초기화 되는 UrlStateNotifactionService 의 URL 초기화 정보를 사용하면 안됨. + this.activatedRoute.data.subscribe((urlData: any) => { + const params = this.getUrlParams(); + if (params.period) { + this.urlRouteManagerService.move({ + url: [ + urlData['path'] || params.startPath, + params.application, + params.period + ], + needServerTimeRequest: true + }); + } else { + this.urlRouteManagerService.move({ + url: [ + urlData['path'] || params.startPath, + params.application, + this.webAppSettingDataService.getUserDefaultPeriod().getValueWithTime() + ], + needServerTimeRequest: true + }); + } + }); + } + private getUrlParams(): any { + const params: { [key: string]: string } = {}; + let activatedRoute: ActivatedRoute | null = this.activatedRoute; + while ( activatedRoute ) { + activatedRoute.snapshot.paramMap.keys.forEach((key: string) => { + params[key] = activatedRoute.snapshot.paramMap.get(key); + }); + if ( activatedRoute.parent === null ) { + break; + } else { + activatedRoute = activatedRoute.parent; + } + } + params['startPath'] = activatedRoute.snapshot.root.firstChild.url[0].path; + return params; + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/directives/context-popup.directive.ts b/web/src/main/webapp/v2/src/app/shared/directives/context-popup.directive.ts new file mode 100644 index 000000000000..ef30574d50f9 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/directives/context-popup.directive.ts @@ -0,0 +1,8 @@ +import { Directive, ViewContainerRef } from '@angular/core'; + +@Directive({ + selector: '[ppContextPopup]', +}) +export class ContextPopupDirective { + constructor(public viewContainerRef: ViewContainerRef) {} +} diff --git a/web/src/main/webapp/v2/src/app/shared/directives/index.ts b/web/src/main/webapp/v2/src/app/shared/directives/index.ts new file mode 100644 index 000000000000..4e3066282c30 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/directives/index.ts @@ -0,0 +1,9 @@ +import { SettingHeightDirective } from './setting-height.directive'; +import { ContextPopupDirective } from './context-popup.directive'; +import { SplitterDirective } from './splitter.directive'; + +export const DIRECTIVES = [ + SettingHeightDirective, + ContextPopupDirective, + SplitterDirective +]; diff --git a/web/src/main/webapp/v2/src/app/shared/directives/search-input.directive.ts b/web/src/main/webapp/v2/src/app/shared/directives/search-input.directive.ts new file mode 100644 index 000000000000..bcdaa6c2bdcf --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/directives/search-input.directive.ts @@ -0,0 +1,83 @@ +import { Directive, OnInit, OnChanges, OnDestroy, SimpleChanges, EventEmitter, HostListener, Input, Output } from '@angular/core'; +import { Subject } from 'rxjs'; +import { debounceTime, distinctUntilChanged, filter, takeUntil } from 'rxjs/operators'; + +@Directive({ + selector: '[ppSearchInput]' +}) +export class SearchInputDirective implements OnInit, OnChanges, OnDestroy { + @Input() searchMinLength = 0; + @Input() searchMaxLength = Number.MAX_SAFE_INTEGER; + @Input() useEnter: boolean; + @Input() debounceTime = 100; + @Output() outSearch: EventEmitter = new EventEmitter(); + @Output() outArrowKey: EventEmitter = new EventEmitter(); + private unsubscribe: Subject = new Subject(); + private userInput: Subject = new Subject(); + + @HostListener('keydown', ['$event']) onKeyDown($event: KeyboardEvent): void { + const keyCode = $event.keyCode; + if (this.isArrowKey(keyCode)) { + this.outArrowKey.emit(keyCode); + return; + } + } + @HostListener('keyup', ['$event']) onKeyUp($event: KeyboardEvent): void { + const keyCode = $event.keyCode; + const element = ($event.srcElement as HTMLInputElement); + const value = element.value.trim(); + if (this.isArrowKey(keyCode)) { + return; + } + if (this.isESC(keyCode)) { + element.value = ''; + return; + } + if (this.useEnter) { + if (this.isEnter(keyCode) && this.isValidLength(value)) { + this.outSearch.next(value); + } + } else { + this.userInput.next(value); + } + } + constructor() {} + ngOnInit() {} + ngOnChanges(changes: SimpleChanges) { + if (changes['useEnter']) { + if (this.useEnter) { + this.unsubscribe.next(); + } else { + this.setObservable(); + } + } + } + ngOnDestroy() { + this.unsubscribe.next(); + this.unsubscribe.complete(); + } + private setObservable(): void { + this.userInput.pipe( + takeUntil(this.unsubscribe), + debounceTime(this.debounceTime), + distinctUntilChanged(), + filter((query: string) => { + return this.isValidLength(query); + }) + ).subscribe((query: string) => { + this.outSearch.next(query); + }); + } + private isValidLength(value: string): boolean { + return value.length === 0 || (value.length >= this.searchMinLength && value.length < this.searchMaxLength); + } + private isESC(key: number): boolean { + return key === 27; + } + private isEnter(key: number): boolean { + return key === 13; + } + private isArrowKey(key: number): boolean { + return key >= 37 && key <= 40; + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/directives/setting-height.directive.ts b/web/src/main/webapp/v2/src/app/shared/directives/setting-height.directive.ts new file mode 100644 index 000000000000..92d173051cfc --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/directives/setting-height.directive.ts @@ -0,0 +1,38 @@ +import { Directive, ElementRef, OnInit, OnChanges, SimpleChanges, Renderer2, Input } from '@angular/core'; +import { WindowRefService } from 'app/shared/services'; + +@Directive({ + selector: '[ppSettingHeight]' +}) +export class SettingHeightDirective implements OnInit, OnChanges { + // tslint:disable-next-line:no-input-rename + @Input('ppSettingHeight') heightConfig: {[key: string]: any}; + + constructor( + private elementRef: ElementRef, + private renderer: Renderer2, + private windowRefService: WindowRefService + ) { } + + ngOnChanges(changes: SimpleChanges) { + this.setHeight(this.getHeightValue()); + } + + ngOnInit() { + } + + private getHeightValue(): string { + return this.heightConfig.height || (this.heightConfig.setHeightAuto ? 'auto' : this.getComputedHeight()); + } + + private getComputedHeight(): string { + const width = this.windowRefService.nativeWindow.getComputedStyle(this.elementRef.nativeElement).getPropertyValue('width'); + const height = Number(width.replace(/px/, '')) / this.heightConfig.ratio; + + return height + 'px'; + } + + private setHeight(height: string): void { + this.renderer.setStyle(this.elementRef.nativeElement, 'height', height); + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/directives/splitter.directive.ts b/web/src/main/webapp/v2/src/app/shared/directives/splitter.directive.ts new file mode 100644 index 000000000000..0997ad82515c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/directives/splitter.directive.ts @@ -0,0 +1,20 @@ +import { Directive, OnInit, HostListener } from '@angular/core'; +import { GutterEventService } from 'app/shared/services'; + +@Directive({ + selector: '[ppSplitter]' +}) +export class SplitterDirective implements OnInit { + constructor( + private gutterEventService: GutterEventService + ) { } + + ngOnInit() { + } + + @HostListener('dragEnd', ['$event']) + @HostListener('dragProgress', ['$event']) + onDragEndProgress({sizes}: {sizes: number[]}) { + this.gutterEventService.resizedGutter(sizes); + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/index.ts b/web/src/main/webapp/v2/src/app/shared/index.ts new file mode 100644 index 000000000000..f1499d1a1708 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/index.ts @@ -0,0 +1,107 @@ + +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; +import { ClipboardModule } from 'ngx-clipboard'; + +import { ClickOutsideModule } from 'ng-click-outside'; +import { TranslateReplaceService } from './services/translate-replace.service'; +import { ServerTimeDataService } from './services/server-time-data.service'; +import { WebAppSettingDataService } from './services/web-app-setting-data.service'; +import { ComponentDefaultSettingDataService } from './services/component-default-setting-data.service'; +import { RouteInfoCollectorService } from './services/route-info-collector.service'; +import { ServerTimeResolverService } from './services/server-time-resolver.service'; +import { NewUrlStateNotificationService } from './services/new-url-state-notification.service'; +import { UrlRouteManagerService } from './services/url-route-manager.service'; +import { SystemConfigurationDataService } from './services/system-configuration-data.service'; +import { SystemConfigurationResolverService } from './services/system-configuration-resolver.service'; +import { SplitRatioService } from './services/split-ratio.service'; +import { GutterEventService } from './services/gutter-event.service'; +import { AjaxExceptionCheckerService } from './services/ajax-exception-checker.service'; +import { ApplicationListResolverService } from './services/application-list-resolver.service'; +import { AnalyticsService } from './services/analytics.service'; +import { BrowserSupportCheckService } from './services/browser-support-check.service'; +import { AgentHistogramDataService } from './services/agent-histogram-data.service'; +import { TransactionDetailDataService } from './services/transaction-detail-data.service'; +import { TransactionViewTypeService } from './services/transaction-view-type.service'; +import { StoreHelperService } from './services/store-helper.service'; +import { UrlValidateGuard } from './services/url-validate.guard'; + +import { HeaderLogoComponent } from './components/header-logo'; +import { EmptyContentsComponent, NoneComponent } from './components/empty-contents'; +import { UrlRedirectorComponent } from './components/url-redirector'; +import { LoadingComponent } from './components/loading'; +import { FilmForDisableComponent } from './components/film-for-disable'; +import { SimpleProgressSliderComponent } from './components/simple-progress-slider'; +import { SettingHeightDirective } from './directives/setting-height.directive'; +import { ContextPopupDirective } from './directives/context-popup.directive'; +import { SplitterDirective } from './directives/splitter.directive'; +import { SearchInputDirective } from './directives/search-input.directive'; +import { SafeHtmlPipe } from './pipes/safe-html.pipe'; +import { JSONTextParserPipe } from './pipes/json-text-parser.pipe'; +import { DynamicPopupService } from 'app/shared/services/dynamic-popup.service'; + +@NgModule({ + declarations: [ + NoneComponent, + HeaderLogoComponent, + EmptyContentsComponent, + UrlRedirectorComponent, + LoadingComponent, + FilmForDisableComponent, + SimpleProgressSliderComponent, + SafeHtmlPipe, + JSONTextParserPipe, + SettingHeightDirective, + ContextPopupDirective, + SplitterDirective, + SearchInputDirective + ], + imports: [ + CommonModule, + ClickOutsideModule + ], + exports: [ + CommonModule, + FormsModule, + ClipboardModule, + ClickOutsideModule, + HeaderLogoComponent, + EmptyContentsComponent, + UrlRedirectorComponent, + LoadingComponent, + FilmForDisableComponent, + SimpleProgressSliderComponent, + SafeHtmlPipe, + JSONTextParserPipe, + SettingHeightDirective, + ContextPopupDirective, + SplitterDirective, + SearchInputDirective + ], + providers: [ + TranslateReplaceService, + ServerTimeDataService, + ServerTimeResolverService, + ComponentDefaultSettingDataService, + RouteInfoCollectorService, + WebAppSettingDataService, + NewUrlStateNotificationService, + UrlRouteManagerService, + SystemConfigurationDataService, + SystemConfigurationResolverService, + SplitRatioService, + GutterEventService, + AjaxExceptionCheckerService, + ApplicationListResolverService, + AnalyticsService, + BrowserSupportCheckService, + AgentHistogramDataService, + TransactionDetailDataService, + TransactionViewTypeService, + StoreHelperService, + UrlValidateGuard, + DynamicPopupService + ] +}) +export class SharedModule { } diff --git a/web/src/main/webapp/v2/src/app/shared/models/app-state.ts b/web/src/main/webapp/v2/src/app/shared/models/app-state.ts new file mode 100644 index 000000000000..6ba6b8b5fcb7 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/models/app-state.ts @@ -0,0 +1,4 @@ +export interface AppState { + timezone: string; + [key: string]: any; +} diff --git a/web/src/main/webapp/v2/src/app/shared/models/index.ts b/web/src/main/webapp/v2/src/app/shared/models/index.ts new file mode 100644 index 000000000000..2c10bf1a61e2 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/models/index.ts @@ -0,0 +1,3 @@ +export * from './url-path'; +export * from './url-path-id'; +export * from './url-query'; diff --git a/web/src/main/webapp/v2/src/app/shared/models/url-path-id.ts b/web/src/main/webapp/v2/src/app/shared/models/url-path-id.ts new file mode 100644 index 000000000000..08ed675936be --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/models/url-path-id.ts @@ -0,0 +1,142 @@ +import { Application, Period, EndTime } from 'app/core/models'; + +export interface IUrlPathId { + get(): T; + equals(value: IUrlPathId): boolean; + toString(): string; +} + +export class UrlApplication implements IUrlPathId { + constructor(private application: IApplication) {} + equals(value: IUrlPathId): boolean { + if (value === null) { + return false; + } + return this.application.equals(value.get()); + } + get(): IApplication { + return this.application; + } + toString(): string { + return this.application.toString(); + } +} +export class UrlPeriod implements IUrlPathId { + constructor(private period: Period) {} + equals(value: IUrlPathId): boolean { + if (value === null) { + return false; + } + return this.period.equals(value.get()); + } + get(): Period { + return this.period; + } + toString(): string { + return this.period.toString(); + } +} +export class UrlEndTime implements IUrlPathId { + constructor(private endTime: EndTime) {} + equals(value: IUrlPathId): boolean { + if (value === null) { + return false; + } + return this.endTime.equals(value.get()); + } + get(): EndTime { + return this.endTime; + } + toString(): string { + return this.endTime.toString(); + } +} +export class UrlGeneral implements IUrlPathId { + constructor(private value: T) {} + equals(target: IUrlPathId): boolean { + if (target === null) { + return false; + } + return this.value.toString() === target.toString(); + } + get(): T { + return this.value; + } + toString(): string { + return this.value.toString(); + } +} + +export class UrlPathId { + static APPLICATION = 'application'; + static PERIOD = 'period'; + static END_TIME = 'endTime'; + static FILTER = 'filter'; + static HINT = 'hint'; + static REAL_TIME = 'realtime'; + static AGENT_ID = 'agentId'; + static TRANSACTION_INFO = 'transactionInfo'; + static TRACE_ID = 'traceId'; + static FOCUS_TIMESTAMP = 'focusTimestamp'; + static SPAN_ID = 'spanId'; + static VIEW_TYPE = 'viewType'; + static AGENT_LIST = 'agentList'; + static PAGE = 'page'; + static SEARCH_ID = 'searchId'; + static STAT = 'stat'; + static AGENT = 'agent'; + + constructor() {} + static getPathIdList(): string[] { + return [ + UrlPathId.AGENT_LIST, + UrlPathId.AGENT_ID, + UrlPathId.APPLICATION, + UrlPathId.END_TIME, + UrlPathId.FILTER, + UrlPathId.FOCUS_TIMESTAMP, + UrlPathId.HINT, + UrlPathId.PAGE, + UrlPathId.PERIOD, + UrlPathId.REAL_TIME, + UrlPathId.SEARCH_ID, + UrlPathId.SPAN_ID, + UrlPathId.TRACE_ID, + UrlPathId.TRANSACTION_INFO, + UrlPathId.VIEW_TYPE, + UrlPathId.STAT, + UrlPathId.AGENT + ]; + } +} + +export class UrlPathIdFactory { + constructor() {} + static createPath(paramName: string, paramValue: string): IUrlPathId { + switch (paramName) { + case UrlPathId.APPLICATION: + const params = paramValue.split('@'); + return new UrlApplication(new Application(params[0], params[1], 0)) as IUrlPathId; + case UrlPathId.PERIOD: + return new UrlPeriod(new Period(Period.parseToMinute(paramValue))) as IUrlPathId; + case UrlPathId.END_TIME: + return new UrlEndTime(new EndTime(paramValue)) as IUrlPathId; + case UrlPathId.PAGE: + return new UrlGeneral(paramValue || '2') as IUrlPathId; + case UrlPathId.FILTER: + case UrlPathId.HINT: + case UrlPathId.REAL_TIME: + case UrlPathId.AGENT_ID: + case UrlPathId.TRANSACTION_INFO: + case UrlPathId.TRACE_ID: + case UrlPathId.FOCUS_TIMESTAMP: + case UrlPathId.SPAN_ID: + case UrlPathId.VIEW_TYPE: + case UrlPathId.AGENT_LIST: + case UrlPathId.SEARCH_ID: + return new UrlGeneral(paramValue) as IUrlPathId; + default: + return new UrlGeneral(paramValue) as IUrlPathId; + } + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/models/url-path.ts b/web/src/main/webapp/v2/src/app/shared/models/url-path.ts new file mode 100644 index 000000000000..963733fd13b1 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/models/url-path.ts @@ -0,0 +1,31 @@ +export class UrlPath { + static ADMIN = 'admin'; + static FILTERED_MAP = 'filteredMap'; + static INSPECTOR = 'inspector'; + static MAIN = 'main'; + static REAL_TIME = 'realtime'; + static SCATTER_FULL_SCREEN_MODE = 'scatterFullScreenMode'; + static THREAD_DUMP = 'threadDump'; + static TRANSACTION_DETAIL = 'transactionDetail'; + static TRANSACTION_LIST = 'transactionList'; + static TRANSACTION_VIEW = 'transactionView'; + static BROWSER_NOT_SUPPORT = 'browserNotSupported'; + + constructor() {} + static getParamList(): string[] { + return [ + UrlPath.ADMIN, + UrlPath.FILTERED_MAP, + UrlPath.INSPECTOR, + UrlPath.MAIN, + UrlPath.REAL_TIME, + UrlPath.SCATTER_FULL_SCREEN_MODE, + UrlPath.THREAD_DUMP, + UrlPath.TRANSACTION_DETAIL, + UrlPath.TRANSACTION_LIST, + UrlPath.TRANSACTION_VIEW + ]; + } +} + +export default UrlPath; diff --git a/web/src/main/webapp/v2/src/app/shared/models/url-query.ts b/web/src/main/webapp/v2/src/app/shared/models/url-query.ts new file mode 100644 index 000000000000..510de9a2819c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/models/url-query.ts @@ -0,0 +1,54 @@ +export interface IUrlQuery { + get(): T; + equals(value: IUrlQuery): boolean; + toString(): string; +} + +export class UrlQueryClass implements IUrlQuery { + constructor(private value: T) {} + equals(target: IUrlQuery): boolean { + if (target === null) { + return false; + } + return this.value.toString() === target.toString(); + } + get(): T { + return this.value; + } + toString(): string { + return this.value.toString(); + } +} + +export class UrlQuery { + static BIDIRECTIONAL = 'bidirectional'; + static INBOUND = 'inbound'; + static OUTBOUND = 'outbound'; + static WAS_ONLY = 'wasOnly'; + + constructor() {} + static getQueryList(): string[] { + return [ + UrlQuery.BIDIRECTIONAL, + UrlQuery.INBOUND, + UrlQuery.OUTBOUND, + UrlQuery.WAS_ONLY, + ]; + } +} + +export class UrlQueryFactory { + constructor() {} + static createQuery(queryName: string, queryValue?: T): IUrlQuery { + switch (queryName) { + case UrlQuery.INBOUND: + case UrlQuery.OUTBOUND: + return new UrlQueryClass(queryValue) as IUrlQuery; + case UrlQuery.BIDIRECTIONAL: + case UrlQuery.WAS_ONLY: + return new UrlQueryClass(queryValue) as IUrlQuery; + default: + return new UrlQueryClass(queryValue) as IUrlQuery; + } + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/pipes/index.ts b/web/src/main/webapp/v2/src/app/shared/pipes/index.ts new file mode 100644 index 000000000000..19c411774261 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/pipes/index.ts @@ -0,0 +1,7 @@ +import { JSONTextParserPipe } from './json-text-parser.pipe'; +import { SafeHtmlPipe } from './safe-html.pipe'; + +export const PIPES = [ + SafeHtmlPipe, + JSONTextParserPipe +]; diff --git a/web/src/main/webapp/v2/src/app/shared/pipes/json-text-parser.pipe.ts b/web/src/main/webapp/v2/src/app/shared/pipes/json-text-parser.pipe.ts new file mode 100644 index 000000000000..e8521cfc8fb6 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/pipes/json-text-parser.pipe.ts @@ -0,0 +1,45 @@ +import { Pipe, PipeTransform } from '@angular/core'; +import { WebAppSettingDataService } from 'app/shared/services'; +/** + * sson에서 icon, image등의 키워드를 캐치해서 + * 맞는 icon, image로 해당 텍스트를 대체 또는 추가. + * [Type]:{property=value} + * Chaining with '|' + * ex: [ICON]:{className=fa-clock-o\\style=font-size:17px}|[TEXT]:{value=X-Axis} + */ +@Pipe({ name: 'jsonTextParser' }) +export class JSONTextParserPipe implements PipeTransform { + constructor( + private webAppSettingDataService: WebAppSettingDataService + ) {} + + transform(text: string): string { + if (text) { + return text.split('|').map((textElem: string) => { + const i = textElem.indexOf(':'); + const textType = textElem.substr(0, i).replace(/\[|\]/g, ''); + const textInfoArr = textElem.substr(i + 1).replace(/\{|\}/g, '').split('\\').map((textInfo: string) => { + return textInfo.split('=')[1]; + }); + + switch (textType) { + case 'ICON': + return ``; + case 'TEXT': + return textInfoArr[0]; + case 'IMAGE': + const path = this.webAppSettingDataService.getImagePath(); + const extension = this.webAppSettingDataService.getImageExt(); + + return ``; + case 'LINK': + return `${textInfoArr[3]}`; + default: + return text; + } + }).join(' '); + } else { + return ''; + } + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/pipes/safe-html.pipe.ts b/web/src/main/webapp/v2/src/app/shared/pipes/safe-html.pipe.ts new file mode 100644 index 000000000000..f147803879fc --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/pipes/safe-html.pipe.ts @@ -0,0 +1,13 @@ +import { DomSanitizer, SafeHtml } from '@angular/platform-browser'; +import { Pipe, PipeTransform } from '@angular/core'; + +@Pipe({ name: 'safeHtml' }) +export class SafeHtmlPipe implements PipeTransform { + constructor( + private sanitized: DomSanitizer + ) {} + + transform(value: string): SafeHtml { + return this.sanitized.bypassSecurityTrustHtml(value); + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/services/agent-histogram-data.service.ts b/web/src/main/webapp/v2/src/app/shared/services/agent-histogram-data.service.ts new file mode 100644 index 000000000000..a42230a35619 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/services/agent-histogram-data.service.ts @@ -0,0 +1,117 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import * as moment from 'moment-timezone'; +import { Observable } from 'rxjs'; +import { shareReplay } from 'rxjs/operators'; +import { NewUrlStateNotificationService } from 'app/shared/services/new-url-state-notification.service'; + +@Injectable() +export class AgentHistogramDataService { + readonly url = 'getResponseTimeHistogramDataV2.pinpoint'; + + private previousFrom: number; + private previousTo: number; + private previousName: string; + private previousCode: string; + private previousKey: string; + private previousObservable: any; + constructor( + private http: HttpClient, + private newUrlStateNotificationService: NewUrlStateNotificationService + ) {} + getData(key: string, applicationName: string, serviceTypeCode: string, serverMapData: any, from?: number, to?: number): Observable { + if (this.isCached(key, applicationName, serviceTypeCode, from, to) === false) { + this.previousObservable = this.http.post(this.url, this.makeBodyData(key, serverMapData), this.makeRequestOptionsArgs(applicationName, serviceTypeCode, from, to)).pipe( + shareReplay(1) + ); + this.previousFrom = from || this.newUrlStateNotificationService.getStartTimeToNumber(); + this.previousTo = to || this.newUrlStateNotificationService.getEndTimeToNumber(); + this.previousName = applicationName; + this.previousCode = serviceTypeCode; + this.previousKey = key; + } + return this.previousObservable; + } + isCached(key: string, applicationName: string, serviceTypeCode: string, from?: number, to?: number): boolean { + return this.previousCode === serviceTypeCode && + this.previousKey === key && + this.previousName === applicationName && + this.previousFrom === (from || this.newUrlStateNotificationService.getStartTimeToNumber()) && + this.previousTo === (to || this.newUrlStateNotificationService.getEndTimeToNumber()); + } + private makeRequestOptionsArgs(applicationName: string, serviceTypeCode: string, from?: number, to?: number): object { + return { + params: { + applicationName: applicationName, + serviceTypeCode: serviceTypeCode, + from: from || this.newUrlStateNotificationService.getStartTimeToNumber(), + to: to || this.newUrlStateNotificationService.getEndTimeToNumber() + } + }; + } + private makeBodyData(nodeKey: string, serverMapData: any): any { + const linkedNodeData: { [key: string]: any } = { + from: [], + to: [] + }; + serverMapData.linkList.forEach((link: ILinkInfo) => { + if ( link.from === nodeKey ) { + if ( link.targetInfo instanceof Array ) { + link.targetInfo.forEach((targetLinkInfo: ILinkInfo) => { + linkedNodeData.to.push([targetLinkInfo.targetInfo.applicationName, targetLinkInfo.targetInfo.serviceTypeCode]); + }); + } else { + linkedNodeData.to.push([link.targetInfo.applicationName, link.targetInfo.serviceTypeCode]); + } + } else if ( link.to === nodeKey ) { + linkedNodeData.from.push([link.sourceInfo.applicationName, link.sourceInfo.serviceTypeCode]); + } + }); + return linkedNodeData; + } + makeChartDataForResponseSummary(histogramData: IResponseTime | IResponseMilliSecondTime, yMax?: number): any { + let newData: {[key: string]: any}; + if (histogramData) { + newData = { + keys: Object.keys(histogramData), + values: [] + }; + newData['keys'].forEach((key: string, index: number) => { + newData['values'][index] = histogramData[key]; + }); + } else { + return newData; + } + if (yMax) { + newData['max'] = yMax; + } + return newData; + } + makeChartDataForLoad(histogramData: IHistogram[], timezone: string, dateFormat: string[], yMax?: number): any { + let newData: { [key: string]: any }; + if (histogramData) { + newData = { + labels: [], + keyValues: [] + }; + histogramData.forEach((histogram: IHistogram, index: number) => { + newData.keyValues[index] = { + key: histogram.key, + values: [] + }; + histogram.values.forEach((aValue: number[]) => { + newData.keyValues[index].values.push(aValue[1]); + if (index === 0) { + newData.labels.push(moment(aValue[0]).tz(timezone).format(dateFormat[0]) + '#' + moment(aValue[0]).tz(timezone).format(dateFormat[1])); + } + }); + }); + } else { + return newData; + } + if (yMax) { + newData['max'] = yMax; + } + return newData; + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/services/ajax-exception-checker.service.ts b/web/src/main/webapp/v2/src/app/shared/services/ajax-exception-checker.service.ts new file mode 100644 index 000000000000..a54d6fd602e1 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/services/ajax-exception-checker.service.ts @@ -0,0 +1,11 @@ +import { Injectable } from '@angular/core'; + +@Injectable() +export class AjaxExceptionCheckerService { + constructor() { + } + + isAjaxException(data: AjaxException | any): data is AjaxException { + return (data).exception !== undefined; + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/services/analytics.service.ts b/web/src/main/webapp/v2/src/app/shared/services/analytics.service.ts new file mode 100644 index 000000000000..6a2369f58ae7 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/services/analytics.service.ts @@ -0,0 +1,110 @@ +import { Injectable } from '@angular/core'; + +import { WindowRefService } from 'app/shared/services/window-ref.service'; +import { WebAppSettingDataService } from 'app/shared/services/web-app-setting-data.service'; + +export enum TRACKED_EVENT_LIST { + TOGGLE_HELP_VIEWER = 'Toggle HelpViewer', + VERSION = 'Version', + SELECT_APPLICATION = 'Select Application', + SELECT_PERIOD = 'Select Period', + SEARCH_NODE = 'Search Node', + SELECT_APPLICATION_IN_SEARCH_RESULT = 'Select Application in Search Result', + CLICK_NODE = 'Click Node', + CLICK_NODE_IN_GROUPED_VIEW = 'Click Node in Grouped View', + SHOW_GROUPED_NODE_VIEW = 'Show Grouped Node View', + CLICK_LINK = 'Click Link', + CLICK_LINK_IN_GROUPED_VIEW = 'Click Link in GROUPED View', + SHOW_GROUPED_LINK_VIEW = 'Show Grouped Link View', + CLICK_SCATTER_SETTING = 'Click Scatter Setting', + DOWNLOAD_SCATTER = 'Download Scatter', + GO_TO_FULL_SCREEN_SCATTER = 'Go to FullScreen Scatter', + CLICK_RESPONSE_GRAPH = 'Click Response Graph', + CLICK_LOAD_GRAPH = 'Click Load Graph', + SHOW_SERVER_LIST = 'Show Server List', + OPEN_INSPECTOR = 'Open Inspector', + CLICK_FILTER_TRANSACTION = 'Click Filter Transaction', + OPEN_FILTER_TRANSACTION_WIZARD = 'Open Filter Transaction Wizard', + CLICK_callTree = 'Click CallTree Tab', + CLICK_serverMap = 'Click ServerMap Tab', + CLICK_timeline = 'Click Timeline Tab', + SELECT_TRANSACTION = 'Select Transaction', + OPEN_TRANSACTION_VIEW = 'Open Transaction View', + CLICK_heap = 'Click Heap in Transaction View', + CLICK_nonHeap = 'Click Non Heap in Transaction View', + CLICK_cpu = 'Click CPU Load in Transaction View', + REFRESH_SERVER_MAP = 'Refresh Server Map', + SET_SERVER_MAP_OPTION = 'Set ServerMap Option', + PIN_UP_REAL_TIME_CHART = 'Pin up RealTime Chart', + REMOVE_PIN_ON_REAL_TIME_CHART = 'Remove Pin on RealTime Chart', + TOGGLE_SERVER_TYPE_DETAIL = 'Toggle Server Type Detail', + SELECT_AGENT = 'Select Agent', + SET_PERIOD_AS_REAL_TIME = 'Set Period as RealTime', + OPEN_THREAD_DUMP = 'Open Thread Dump', + OPEN_CONFIGURATION_POPUP = 'Open Configuration Popup', + SET_BOUND_IN_CONFIGURATION = 'Set Bound in Configuration', + SET_SEARCH_PERIOD_IN_CONFIGURATION = 'Set Search Period in Configuration', + SET_FAVORITE_APPLICATION_IN_CONFIGURATION = 'Set Favorite Application in Configuration', + SET_TIMEZONE_IN_CONFIGURATION = 'Set Timezone in Configuration', + SET_DATE_FORMAT_IN_CONFIGURATION = 'Set Date Format in Configuration', + TOGGLE_PERIOD_SELECT_TYPE = 'Toggle Period Select Type', + CLICK_MORE_STATE_BUTTON = 'Click MORE State Button', + CLICK_RELOAD_APPLICATION_LIST_BUTTON = 'Click Reload Application List Button', + CLICK_FIXED_PERIOD_MOVE_BUTTON = 'Click Fixed Period Move Button', + OPEN_INSPECTOR_WITH_AGENT = 'Open Inspector with Agent', + OPEN_TRANSACTION_LIST = 'Open Transaction List', + GO_TO_APPLICATION_INSPECTOR = 'Go to Application Inspector', + GO_TO_AGENT_INSPECTOR = 'Go To Agent Inspector', + ZOOM_IN_TIMELINE = 'Zoom in Timeline', + ZOOM_OUT_TIMELINE = 'Zoom out Timeline', + MOVE_TO_PREV_ON_TIMELINE = 'Move to Prev on Timeline', + MOVE_TO_NEXT_ON_TIMELINE = 'Move to Next on Timeline', + MOVE_TO_NOW_ON_TIMELINE = 'Move to Now on Timeline', + CHANGE_POINTING_TIME_ON_TIMELINE = 'Change Pointing Time on Timeline', + CHANGE_SELECTION_RANGE_ON_TIMELINE = 'Change Selection Range on Timeline', + SEARCH_AGENT = 'Search Agent', + SEARCH_TRANSACTION = 'Search Transaction', + SELECT_SQL = 'Select SQL', + OPEN_TRANSACTION_DETAIL = 'Open Transaction Detail', + CHANGE_SCATTER_CHART_STATE = 'Change Scatter Chart State', + TOGGLE_SERVER_MAP_MERGE_STATE = 'Toggle ServerMap Merge State', + SELECT_TRANSACTION_IN_TIMELINE = 'Select Transaction in Timeline', +} + +@Injectable() +export class AnalyticsService { + private sendUsage: boolean; + private currentPage: string; + + constructor( + private windowRefService: WindowRefService, + private webAppSettingDataService: WebAppSettingDataService + ) { + this.webAppSettingDataService.isDataUsageAllowed().subscribe((result: boolean) => { + this.sendUsage = result; + }); + } + + trackPage(pageName: string): void { + if (this.sendUsage) { + if (this.windowRefService.nativeWindow.ga && typeof ga === 'function') { + this.currentPage = pageName; + ga('set', 'page', `/${pageName}`); + ga('send', 'pageview'); + } + } + } + /** + * eventCategory: 각 페이지 별 라우팅 주소 + * eventAction: 액션 정보 ex. 동영상 다운로드 + * eventLabel: 액션에 대한 추가 정보(Optional) ex. 동영상 이름 + * eventValue: 액션에 대한 추가 정보2(Optional) 단, 수치로 제공 ex. 동영상 다운로드 액션 이벤트 발생 시, 다운로드 시간. + */ + trackEvent(eventAction: string, eventLabel?: string, eventValue?: number): void { + if (this.sendUsage) { + if (this.windowRefService.nativeWindow.ga && typeof ga === 'function') { + ga('send', 'event', { eventCategory: this.currentPage, eventAction, eventLabel, eventValue }); + } + } + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/services/application-list-resolver.service.ts b/web/src/main/webapp/v2/src/app/shared/services/application-list-resolver.service.ts new file mode 100644 index 000000000000..3a0f87b893a0 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/services/application-list-resolver.service.ts @@ -0,0 +1,14 @@ +import { Injectable } from '@angular/core'; +import { Resolve, RouterStateSnapshot, ActivatedRouteSnapshot } from '@angular/router'; +import { Observable } from 'rxjs'; + +import { ApplicationListDataService } from 'app/core/components/application-list/application-list-data.service'; + +@Injectable() +export class ApplicationListResolverService implements Resolve { + constructor( + private applicationListDataService: ApplicationListDataService) { } + resolve(reoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable { + return this.applicationListDataService.getApplicationList(); + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/services/browser-support-check.service.ts b/web/src/main/webapp/v2/src/app/shared/services/browser-support-check.service.ts new file mode 100644 index 000000000000..32c81df1bec4 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/services/browser-support-check.service.ts @@ -0,0 +1,55 @@ +import { Injectable } from '@angular/core'; +import * as bowser from 'bowser'; +import { TranslateService } from '@ngx-translate/core'; +import { Observable, of } from 'rxjs'; +import { map } from 'rxjs/operators'; + +import { TranslateReplaceService } from 'app/shared/services/translate-replace.service'; + +@Injectable() +export class BrowserSupportCheckService { + // 2018.06.01 기준 지원하는 브라우저 최신버전 + private latestBrowserList = [ + { + name: 'Chrome', + version: 66 + }, { + name: 'Firefox', + version: 60 + }, { + name: 'Safari', + version: 11 + }, { + name: 'Microsoft Edge', + version: 42 + } + ]; + + constructor( + private translateService: TranslateService, + private translateReplaceService: TranslateReplaceService, + ) {} + + private isBrowserSupported(): boolean { + const userBrowserInfo = { + name: bowser.name, + version: Math.trunc(Number(bowser.version)) + }; + + return this.latestBrowserList.findIndex((browserInfo) => { + return browserInfo.name === userBrowserInfo.name && browserInfo.version <= userBrowserInfo.version; + }) !== -1; + } + + getMessage(): Observable { + if (this.isBrowserSupported()) { + return of(''); + } else { + return this.translateService.get('SUPPORT.RESTRICT_USAGE').pipe( + map(((message: string) => { + return this.translateReplaceService.replace(message, bowser.name + ' ' + Math.trunc(Number(bowser.version))); + })) + ); + } + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/services/component-default-setting-data.service.ts b/web/src/main/webapp/v2/src/app/shared/services/component-default-setting-data.service.ts new file mode 100644 index 000000000000..3104452f3e0c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/services/component-default-setting-data.service.ts @@ -0,0 +1,86 @@ +import { Injectable } from '@angular/core'; +import { Period } from 'app/core/models/period'; +import { UrlPath } from 'app/shared/models'; +@Injectable() +export class ComponentDefaultSettingDataService { + + private inboundList = ['1', '2', '3', '4']; + private outboundList = ['1', '2', '3', '4']; + private periodList = { + [UrlPath.MAIN]: [ + new Period(5, 'Last'), + new Period(20), + new Period(60), + new Period(180), + new Period(360), + new Period(720), + new Period(1440), + new Period(2880) + ], + [UrlPath.INSPECTOR]: [ + new Period(5, 'Last'), + new Period(20), + new Period(60), + new Period(180), + new Period(360), + new Period(720), + new Period(1440), + new Period(2880), + new Period(10080) + ], + [UrlPath.TRANSACTION_VIEW]: [ + new Period(20), + ] + }; + private maxPeriodTime = 60 * 24 * 2; // 2day + private colorByRequest: string[] = [ + 'rgba(52, 185, 148, 0.5)', // #34b994 + 'rgba(81, 175, 223, 0.5)', // #51afdf + 'rgba(255, 186, 0, 0.5)', // #ffba00 + 'rgba(230, 127, 34, 0.5)', // #e67f22 + 'rgba(233, 84, 89, 0.5)' // #e95459 + ]; + private dateFormatList = [ + // [default, default + timezone, default + millisecond, year+month+day, time, variation1, variation2] + ['YYYY.MM.DD HH:mm:ss', 'YYYY.MM.DD HH:mm:ss Z', 'YYYY.MM.DD HH:mm:ss SSS', 'YYYY.MM.DD', 'HH:mm:ss', 'MM.DD', 'HH:mm'], + ['YYYY.MM.DD h:mm:ss a', 'YYYY.MM.DD h:mm:ss a Z', 'YYYY.MM.DD h:mm:ss SSS a ', 'YYYY.MM.DD', 'h:mm:ss a', 'MM.DD', 'h:mm a'], + ['MMM D, YYYY HH:mm:ss', 'MMM D, YYYY HH:mm:ss Z', 'MMM D, YYYY HH:mm:ss SSS', 'MMM D, YYYY', 'HH:mm:ss', 'MMM D', 'HH:mm'], + ['MMM D, YYYY h:mm:ss a', 'MMM D, YYYY h:mm:ss a Z', 'MMM D, YYYY h:mm:ss SSS a', 'MMM D, YYYY', 'h:mm:ss a', 'MMM D', 'h:mm a'], + ['D MMM YYYY HH:mm:ss', 'D MMM YYYY HH:mm:ss Z', 'D MMM YYYY HH:mm:ss SSS', 'D MMM YYYY', 'HH:mm:ss', 'D MMM', 'HH:mm'], + ['D MMM YYYY h:mm:ss a', 'D MMM YYYY h:mm:ss a Z', 'D MMM YYYY h:mm:ss SSS a', 'D MMM YYYY', 'h:mm:ss a', 'D MMM', 'h:mm a'] + ]; + constructor() {} + getInboundList(): string[] { + return this.inboundList; + } + getOutboundList(): string[] { + return this.outboundList; + } + getPeriodList(path: string): Period[] { + return this.periodList[path]; + } + getSystemDefaultPeriod(): Period { + return this.periodList[UrlPath.MAIN][0]; + } + getSystemDefaultTransactionViewPeriod(): Period { + return this.periodList[UrlPath.TRANSACTION_VIEW][0]; + } + getSystemDefaultInbound(): string { + return this.inboundList[0]; + } + getSystemDefaultOutbound(): string { + return this.outboundList[0]; + } + getMaxPeriodTime(): number { + return this.maxPeriodTime; + } + getColorByRequest(): string[] { + return this.colorByRequest; + } + getDateFormatList(): string[][] { + return this.dateFormatList; + } + getDefaultDateFormat(): string[] { + return this.dateFormatList[4]; + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/services/dynamic-popup.service.ts b/web/src/main/webapp/v2/src/app/shared/services/dynamic-popup.service.ts new file mode 100644 index 000000000000..a0d67e25a6af --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/services/dynamic-popup.service.ts @@ -0,0 +1,118 @@ +import { + Injectable, + ComponentFactoryResolver, + ComponentRef, + ApplicationRef, + Injector, + EmbeddedViewRef, + Renderer2, + RendererFactory2, + EventEmitter +} from '@angular/core'; + +export interface DynamicPopup { + data?: any; + coord?: ICoordinate; + outCreated?: EventEmitter; + outClose?: EventEmitter; + outReInit?: EventEmitter<{[key: string]: any}>; // HelpViewer처럼 컴포넌트를 아예 destroy하고 새로 init해야 하는 경우 + onInputChange?: Function; +} + +interface IPopupParam { + data?: any; + coord?: ICoordinate; + component: any; + onCloseCallback?: Function; +} + +@Injectable() +export class DynamicPopupService { + private renderer: Renderer2; + private componentRef: ComponentRef; + + constructor( + private componentFactoryResolver: ComponentFactoryResolver, + private appRef: ApplicationRef, + private injector: Injector, + rendererFactory: RendererFactory2, + ) { + this.renderer = rendererFactory.createRenderer(null, null); + } + + openPopup($param: IPopupParam): void { + const {data, coord, component} = $param; + + if (!this.componentRef) { + // The very first + this.initPopup($param); + } else if (this.componentRef && this.componentRef.instance instanceof component) { + // Update input binding + this.bindInputProps(this.componentRef.instance, data, coord); + } else { + // Close the current popup and create a new one + this.closePopup(); + this.initPopup($param); + } + } + + closePopup(): void { + this.appRef.detachView(this.componentRef.hostView); + this.componentRef.destroy(); + this.componentRef = null; + } + + private initPopup({data, coord, component, onCloseCallback}: IPopupParam): void { + this.componentRef = this.componentFactoryResolver.resolveComponentFactory(component).create(this.injector); + const popupComponent = this.componentRef.instance; + const domElem = (this.componentRef.hostView as EmbeddedViewRef).rootNodes[0] as HTMLElement; + + this.bindInputProps(popupComponent, data, coord); + this.bindOutputProps(popupComponent, domElem, onCloseCallback); + this.renderer.addClass(domElem, 'popup'); + this.renderer.appendChild((this.appRef.components[0].location).nativeElement, domElem); + this.appRef.attachView(this.componentRef.hostView); + } + + private bindInputProps(popupComponent: DynamicPopup, data: any, coord: ICoordinate): void { + if (popupComponent.onInputChange) { + popupComponent.onInputChange({data, coord}); + } + if (data) { + popupComponent.data = data; + } + if (coord) { + popupComponent.coord = coord; + } + } + + private bindOutputProps(popupComponent: DynamicPopup, domElem: HTMLElement, onCloseCallback: Function): void { + if (popupComponent.outCreated) { + popupComponent.outCreated.subscribe(({coordX, coordY}: {coordX: number, coordY: number}) => { + this.renderer.setStyle(domElem, 'left', coordX < 0 ? 0 : coordX + 'px'); + this.renderer.setStyle(domElem, 'top', coordY < 0 ? 0 : coordY + 'px'); + }); + } + if (popupComponent.outClose) { + popupComponent.outClose.subscribe(() => { + if (onCloseCallback) { + onCloseCallback(); + } + + this.closePopup(); + }); + } + if (popupComponent.outReInit) { + popupComponent.outReInit.subscribe(({data, coord}: {data: any, coord: ICoordinate}) => { + const component = this.componentRef.componentType; + + this.closePopup(); + this.openPopup({ + data, + coord, + component + }); + }); + } + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/services/gutter-event.service.ts b/web/src/main/webapp/v2/src/app/shared/services/gutter-event.service.ts new file mode 100644 index 000000000000..42ad42b90844 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/services/gutter-event.service.ts @@ -0,0 +1,30 @@ +import { Injectable } from '@angular/core'; +import { BehaviorSubject, Observable } from 'rxjs'; +import { filter } from 'rxjs/operators'; + +import { NewUrlStateNotificationService } from 'app/shared/services/new-url-state-notification.service'; +import { SplitRatioService } from './split-ratio.service'; + +@Injectable() +export class GutterEventService { + private outGutterResized: BehaviorSubject; + onGutterResized$: Observable; + + constructor( + private newUrlStateNotificationService: NewUrlStateNotificationService, + private splitRatioService: SplitRatioService + ) { + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + filter((urlService: NewUrlStateNotificationService) => !!urlService), + ).subscribe((urlService: NewUrlStateNotificationService) => { + const view = urlService.getStartPath(); + + this.outGutterResized = new BehaviorSubject(this.splitRatioService.getSplitRatio(view)); + this.onGutterResized$ = this.outGutterResized.asObservable(); + }); + } + + resizedGutter(sizes: number[]): void { + this.outGutterResized.next(sizes); + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/services/index.ts b/web/src/main/webapp/v2/src/app/shared/services/index.ts new file mode 100644 index 000000000000..77c59487cf97 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/services/index.ts @@ -0,0 +1,23 @@ +export * from './agent-histogram-data.service'; +export * from './ajax-exception-checker.service'; +export * from './analytics.service'; +export * from './application-list-resolver.service'; +export * from './browser-support-check.service'; +export * from './component-default-setting-data.service'; +export * from './gutter-event.service'; +export * from './new-url-state-notification.service'; +export * from './route-info-collector.service'; +export * from './server-time-data.service'; +export * from './server-time-resolver.service'; +export * from './split-ratio.service'; +export * from './store-helper.service'; +export * from './system-configuration-data.service'; +export * from './system-configuration-resolver.service'; +export * from './transaction-detail-data.service'; +export * from './transaction-view-type.service'; +export * from './translate-replace.service'; +export * from './url-route-manager.service'; +export * from './url-validate.guard'; +export * from './web-app-setting-data.service'; +export * from './window-ref.service'; +export * from './dynamic-popup.service'; diff --git a/web/src/main/webapp/v2/src/app/shared/services/new-url-state-notification.service.ts b/web/src/main/webapp/v2/src/app/shared/services/new-url-state-notification.service.ts new file mode 100644 index 000000000000..902896bc8d17 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/services/new-url-state-notification.service.ts @@ -0,0 +1,182 @@ +import { Injectable } from '@angular/core'; +import { BehaviorSubject, Observable } from 'rxjs'; +import { WebAppSettingDataService } from 'app/shared/services/web-app-setting-data.service'; +import { EndTime } from 'app/core/models/end-time'; +import { UrlPath, UrlPathIdFactory, UrlPathId, IUrlPathId, UrlQueryFactory, UrlQuery, IUrlQuery } from 'app/shared/models'; + +interface IGeneral { + [key: string]: any; +} +interface IUrlState { + [key: string]: { + prev: IUrlPathId | IUrlQuery; + curr: IUrlPathId | IUrlQuery; + }; +} + +@Injectable() +export class NewUrlStateNotificationService { + private startPath: string; + private urlState: IUrlState = {}; + private innerRouteData: IGeneral = {}; + private onUrlStateChange: BehaviorSubject = new BehaviorSubject(null); + + onUrlStateChange$: Observable; + constructor(private webAppSettingDataService: WebAppSettingDataService) { + this.onUrlStateChange$ = this.onUrlStateChange.asObservable(); + this.initState(); + } + private initState(): void { + UrlPathId.getPathIdList().forEach((path: string) => { + this.urlState[path] = { + prev: null, + curr: null + }; + }); + UrlQuery.getQueryList().forEach((query: string) => { + this.urlState[query] = { + prev: null, + curr: null + }; + }); + } + updateUrl(startPath: string, pathParams: IGeneral, queryParams: IGeneral, routeData: IGeneral): void { + const bStartPathChanged = this.updateStartPath(startPath); + const bPathChanged = this.updatePathId(pathParams); + const bQueryChanged = this.updateQuery(queryParams); + this.updateRouteData(routeData); + + if (bStartPathChanged || bPathChanged || bQueryChanged) { + // this.onUrlStateChange.next(this.urlState); + this.onUrlStateChange.next(this); + } + } + private updateStartPath(path: string): boolean { + if ( this.startPath === path ) { + return false; + } else { + this.startPath = path; + return true; + } + } + private updatePathId(pathParams: IGeneral): boolean { + let updated = false; + const hasValuePathIdList: string[] = []; + UrlPathId.getPathIdList().forEach((path: string) => { + if (this.changedPathId(path, pathParams[path])) { + this.changePathIdState(path, pathParams[path] ? UrlPathIdFactory.createPath(path, pathParams[path]) : null); + hasValuePathIdList.push(path); + updated = true; + } + }); + this.setConnectedPath(hasValuePathIdList, pathParams); + return updated; + } + private changedPathId(path: string, pathValue: any): boolean { + if (pathValue === null || pathValue === undefined) { + return this.urlState[path].curr !== null; + } else { + if (this.urlState[path].curr === null) { + return true; + } else { + return !UrlPathIdFactory.createPath(path, pathValue).equals(this.urlState[path].curr); + } + } + } + private changePathIdState(path: string, newPathIdObject: IUrlPathId): void { + this.urlState[path].prev = this.urlState[path].curr; + this.urlState[path].curr = newPathIdObject; + } + private setConnectedPath(hasValuePathIdList: string[], pathParams: IGeneral): void { + if (hasValuePathIdList.indexOf(UrlPathId.FOCUS_TIMESTAMP) !== -1) { + this.urlState[UrlPathId.END_TIME].prev = this.urlState[UrlPathId.END_TIME].curr; + this.urlState[UrlPathId.END_TIME].curr = UrlPathIdFactory.createPath(UrlPathId.END_TIME, EndTime.formatDate((Number(pathParams[UrlPathId.FOCUS_TIMESTAMP]) + (1000 * 60 * 10)))); + this.urlState[UrlPathId.PERIOD].prev = this.urlState[UrlPathId.PERIOD].curr; + this.urlState[UrlPathId.PERIOD].curr = UrlPathIdFactory.createPath(UrlPathId.PERIOD, this.webAppSettingDataService.getSystemDefaultTransactionViewPeriod().getValueWithTime()); + } + } + private updateQuery(queryParams: IGeneral): boolean { + let updated = false; + UrlQuery.getQueryList().forEach((query: string) => { + if (this.changedQuery(query, queryParams[query])) { + this.changeQueryState(query, queryParams[query] ? UrlQueryFactory.createQuery(query, queryParams[query]) : null); + updated = true; + } + }); + return updated; + } + private changedQuery(query: string, queryValue: any): boolean { + if (queryValue === null || queryValue === undefined) { + return this.urlState[query].curr !== null; + } else { + if (this.urlState[query].curr === null) { + return true; + } else { + return !(this.urlState[query].curr as IUrlQuery).equals(UrlQueryFactory.createQuery(query, queryValue)); + } + } + } + private changeQueryState(query: string, newQueryObject: IUrlQuery): void { + this.urlState[query].prev = this.urlState[query].curr; + this.urlState[query].curr = newQueryObject; + } + private updateRouteData(routeData: IGeneral) { + this.innerRouteData = routeData; + } + isRealTimeMode(type?: string): boolean { + if (typeof type === 'string') { + return type === UrlPath.REAL_TIME; + } else { + return this.innerRouteData['enableRealTimeMode'] || false; + } + } + showRealTimeButton(): boolean { + return this.innerRouteData['showRealTimeButton'] || false; + } + getUrlServerTimeData(): number { + return this.innerRouteData['serverTime']; + } + hasValue(...names: string[]): boolean { + return names.reduce((previous: boolean, name: string) => { + return previous && (this.urlState[name].curr === null ? false : true); + }, true); + } + getStartPath(): string { + return this.startPath || UrlPath.MAIN; + } + getPathValue(path: string): any { + return this.urlState[path].curr.get(); + } + getQueryValue(query: string): any { + return this.urlState[query].curr.get(); + } + getStartTimeToNumber(): number { + if (this.isRealTimeMode()) { + return this.getUrlServerTimeData() - (this.webAppSettingDataService.getSystemDefaultPeriod().getMiliSeconds()); + } else { + return this.getPathValue(UrlPathId.END_TIME).calcuStartTime(this.getPathValue(UrlPathId.PERIOD).getValue()).getDate().valueOf(); + } + } + getEndTimeToNumber(): number { + if (this.isRealTimeMode()) { + return this.getUrlServerTimeData(); + } else { + return this.getPathValue(UrlPathId.END_TIME).getDate().valueOf(); + } + } + isChanged(path: string): boolean { + if (this.urlState[path]) { + const { prev: prev, curr: curr } = this.urlState[path]; + if ( + (prev === null && curr !== null) || + (prev !== null && curr === null) || + (prev === null && curr === null) + ) { + return false; + } else { + return true; + } + } + return false; + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/services/route-info-collector.service.ts b/web/src/main/webapp/v2/src/app/shared/services/route-info-collector.service.ts new file mode 100644 index 000000000000..16aa9334383d --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/services/route-info-collector.service.ts @@ -0,0 +1,42 @@ +import { Injectable } from '@angular/core'; +import { ActivatedRoute, ActivatedRouteSnapshot, Router, NavigationEnd, ParamMap } from '@angular/router'; +import { filter } from 'rxjs/operators'; +import { NewUrlStateNotificationService } from './new-url-state-notification.service'; +import { AnalyticsService } from 'app/shared/services/analytics.service'; + +@Injectable() +export class RouteInfoCollectorService { + constructor( + private router: Router, + private activatedRoute: ActivatedRoute, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private analyticsService: AnalyticsService + ) { + this.router.events.pipe( + filter(event => event instanceof NavigationEnd) + ).subscribe((event: NavigationEnd) => { + const startPath = this.activatedRoute.snapshot.root.firstChild.url[0].path; + const innerData = {}; + const pathIds = {}; + const queryParams = {}; + this.collectUrlInfo(this.activatedRoute.snapshot.children, pathIds, queryParams, innerData); + this.newUrlStateNotificationService.updateUrl(startPath, pathIds, queryParams, innerData); + this.analyticsService.trackPage(startPath); + }); + } + private collectUrlInfo(activatedChildRouteSnapshot: ActivatedRouteSnapshot[], pathIds: any, queryParams: any, innerData: any): void { + if (activatedChildRouteSnapshot.length !== 0) { + for ( let i = 0 ; i < activatedChildRouteSnapshot.length ; i++ ) { + this.assign(pathIds, activatedChildRouteSnapshot[i].paramMap); + this.assign(queryParams, activatedChildRouteSnapshot[i].queryParamMap); + Object.assign(innerData, activatedChildRouteSnapshot[i].data); + this.collectUrlInfo(activatedChildRouteSnapshot[i].children, pathIds, queryParams, innerData); + } + } + } + private assign(data: any, mapData: ParamMap): void { + mapData.keys.forEach((key: string) => { + data[key] = mapData.get(key); + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/services/server-time-data.service.ts b/web/src/main/webapp/v2/src/app/shared/services/server-time-data.service.ts new file mode 100644 index 000000000000..8e14b01762aa --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/services/server-time-data.service.ts @@ -0,0 +1,24 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; + +interface IServerTime { + currentServerTime: number; +} + +@Injectable() +export class ServerTimeDataService { + + constructor(private http: HttpClient) { } + getServerTime(): Observable { + return this.http.get('serverTime.pinpoint').pipe( + map(res => { + return res.currentServerTime; + }) + ); + } + getServerTimeToPromise(): Promise { + return this.getServerTime().toPromise(); + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/services/server-time-resolver.service.ts b/web/src/main/webapp/v2/src/app/shared/services/server-time-resolver.service.ts new file mode 100644 index 000000000000..29177949ac5c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/services/server-time-resolver.service.ts @@ -0,0 +1,14 @@ +import { Injectable } from '@angular/core'; +import { Resolve, RouterStateSnapshot, ActivatedRouteSnapshot } from '@angular/router'; +import { ServerTimeDataService } from 'app/shared/services/server-time-data.service'; + +@Injectable() +export class ServerTimeResolverService implements Resolve { + + constructor(private serverTimeService: ServerTimeDataService) { } + resolve(reoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise { + return this.serverTimeService.getServerTimeToPromise().catch(() => { + return Date.now(); + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/services/split-ratio.service.ts b/web/src/main/webapp/v2/src/app/shared/services/split-ratio.service.ts new file mode 100644 index 000000000000..88165d6ab784 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/services/split-ratio.service.ts @@ -0,0 +1,20 @@ +import { Injectable } from '@angular/core'; +import { UrlPath } from 'app/shared/models'; + +@Injectable() +export class SplitRatioService { + private splitRatioMap = new Map(); + + constructor() { + this.initSplitRatioMap(); + } + + private initSplitRatioMap(): void { + this.splitRatioMap.set(UrlPath.TRANSACTION_LIST, [30, 70]); + this.splitRatioMap.set(UrlPath.TRANSACTION_VIEW, [40, 60]); + } + + getSplitRatio(view: string): number[] { + return this.splitRatioMap.get(view); + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/services/store-helper.service.ts b/web/src/main/webapp/v2/src/app/shared/services/store-helper.service.ts new file mode 100644 index 000000000000..897a559f8af5 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/services/store-helper.service.ts @@ -0,0 +1,178 @@ +import { Injectable } from '@angular/core'; +import { Store, Action, select } from '@ngrx/store'; +import { Observable, Subject, iif } from 'rxjs'; +import { takeUntil, map, filter, debounceTime, distinctUntilChanged } from 'rxjs/operators'; + +import { + AppState, + STORE_KEY, + selectServerMapDisableState, + selectInfoPerServerVisibleState, + selectTimelineRange, + selectTimelineSelectedTime, + selectTimelineSelectionRange +} from 'app/shared/store'; +import { WebAppSettingDataService } from './web-app-setting-data.service'; + +@Injectable() +export class StoreHelperService { + private dateFormatList: string[][]; + constructor( + private store: Store, + private webAppSettingDataService: WebAppSettingDataService + ) { + this.dateFormatList = this.webAppSettingDataService.getDateFormatList(); + } + getApplicationList(unsubscribe: Subject): Observable { + return this.getObservable(STORE_KEY.APPLICATION_LIST, unsubscribe); + } + getFavoriteApplicationList(unsubscribe: Subject): Observable { + return this.getObservable(STORE_KEY.FAVORITE_APPLICATION_LIST, unsubscribe); + } + getTimezone(unsubscribe?: Subject): Observable { + return this.getObservable(STORE_KEY.TIMEZONE, unsubscribe); + } + getDateFormatIndex(unsubscribe: Subject): Observable { + return this.getObservable(STORE_KEY.DATE_FORMAT, unsubscribe); + } + getDateFormat(unsubscribe: Subject, index: number): Observable { + return this.getObservable(STORE_KEY.DATE_FORMAT, unsubscribe).pipe( + map((format: number) => { + return this.dateFormatList[format][index]; + }) + ); + } + getDateFormatArray(unsubscribe: Subject, ...index: number[]): Observable { + return this.getObservable(STORE_KEY.DATE_FORMAT, unsubscribe).pipe( + map((format: number) => { + return index.map((i: number) => { + return this.dateFormatList[format][i]; + }); + }) + ); + } + getAgentList(unsubscribe: Subject): Observable { + return this.getObservable(STORE_KEY.ADMIN_AGENT_LIST, unsubscribe).pipe( + filter((data: T) => { + return data ? true : false; + }) + ); + } + getServerAndAgentQuery(unsubscribe: Subject): Observable { + return this.getObservable(STORE_KEY.SERVER_AND_AGENT, unsubscribe).pipe( + debounceTime(100), + distinctUntilChanged() + ); + } + getHoverInfo(unsubscribe: Subject): Observable { + return this.getObservable(STORE_KEY.HOVER_ON_INSPECTOR_CHARTS, unsubscribe); + } + getServerMapTargetSelectedByList(unsubscribe: Subject): Observable { + return this.getObservable(STORE_KEY.SERVER_MAP_TARGET_SELECTED_BY_LIST, unsubscribe).pipe( + filter((target: any) => { + return (target && target.key) ? true : false; + }) + ); + } + getAgentSelection(unsubscribe: Subject): Observable { + return this.getObservable(STORE_KEY.AGENT_SELECTION, unsubscribe); + } + getAgentSelectionForServerList(unsubscribe: Subject): Observable { + return this.getObservable(STORE_KEY.AGENT_SELECTION_FOR_SERVER_LIST, unsubscribe); + } + getRealTimeScatterChartRange(unsubscribe: Subject): Observable { + return this.getObservable(STORE_KEY.REAL_TIME_SCATTER_CHART, unsubscribe).pipe( + filter((range: IScatterXRange) => { + if (range && range.from && range.to && range.from !== -1 && range.to !== -1) { + return true; + } + return false; + }) + ); + } + getScatterChartData(unsubscribe: Subject): Observable { + return this.getObservable(STORE_KEY.SCATTER_CHART, unsubscribe); + } + getServerMapData(unsubscribe: Subject): Observable { + return this.getObservable(STORE_KEY.SERVER_MAP_DATA, unsubscribe); + } + getServerMapLoadingState(unsubscribe: Subject): Observable { + return this.getObservable(STORE_KEY.SERVER_MAP_LOADING_STATE, unsubscribe); + } + getServerMapTargetSelected(unsubscribe: Subject): Observable { + return this.getObservable(STORE_KEY.SERVER_MAP_TARGET_SELECTED, unsubscribe); + } + getTransactionData(unsubscribe: Subject): Observable { + return this.getObservable(STORE_KEY.TRANSACTION_DATA, unsubscribe); + } + getTransactionDetailData(unsubscribe: Subject): Observable { + return this.getObservable(STORE_KEY.TRANSACTION_DETAIL_DATA, unsubscribe); + } + getServerListData(unsubscribe: Subject): Observable { + return this.getObservable(STORE_KEY.SERVER_LIST, unsubscribe); + } + getAgentInfo(unsubscribe?: Subject): Observable { + return this.getObservable(STORE_KEY.AGENT_INFO, unsubscribe); + } + getLoadChartYMax(unsubscribe: Subject): Observable { + return this.getObservable(STORE_KEY.LOAD_CHART_Y_MAX, unsubscribe); + } + getResponseSummaryChartYMax(unsubscribe: Subject): Observable { + return this.getObservable(STORE_KEY.RESPONSE_SUMMARY_CHART_Y_MAX, unsubscribe); + } + getServerMapDisableState(unsubscribe: Subject): Observable { + return this.store.pipe( + select(selectServerMapDisableState), + takeUntil(unsubscribe) + ); + } + getInfoPerServerState(unsubscribe: Subject): Observable { + return this.store.pipe( + select(selectInfoPerServerVisibleState), + takeUntil(unsubscribe) + ); + } + getInspectorTimelineData(unsubscribe: Subject): Observable { + return this.getObservable(STORE_KEY.TIMELINE, unsubscribe); + } + getInspectorTimelineRange(unsubscribe: Subject): Observable { + return this.store.pipe( + takeUntil(unsubscribe), + select(selectTimelineRange), + filter(([from, to]: number[]) => { + return (from === 0 && to === 0) ? false : true; + }) + ); + } + getInspectorTimelineSelectionRange(unsubscribe: Subject): Observable { + return this.store.pipe( + takeUntil(unsubscribe), + select(selectTimelineSelectionRange), + filter(([from, to]: number[]) => { + return (from === 0 && to === 0) ? false : true; + }) + ); + } + getInspectorTimelineSelectedTime(unsubscribe: Subject): Observable { + return this.store.pipe( + takeUntil(unsubscribe), + select(selectTimelineSelectedTime), + filter((time: number) => { + return time === 0 ? false : true; + }) + ); + } + private getObservable(key: string, unsubscribe?: Subject): Observable { + return iif( + () => !!unsubscribe, + this.store.pipe( + select(key), + takeUntil(unsubscribe) + ), + this.store.pipe(select(key)) + ); + } + dispatch(action: Action): void { + this.store.dispatch(action); + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/services/system-configuration-data.service.ts b/web/src/main/webapp/v2/src/app/shared/services/system-configuration-data.service.ts new file mode 100644 index 000000000000..a238f7ae9792 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/services/system-configuration-data.service.ts @@ -0,0 +1,46 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; +export interface ISystemConfiguration { + editUserInfo: boolean; + enableServerMapRealTime: boolean; + openSource: boolean; + sendUsage: boolean; + showActiveThread: boolean; + showActiveThreadDump: boolean; + showApplicationStat: boolean; + version: string; + userId?: string; + userName?: string; + userDepartment?: string; +} + +@Injectable() +export class SystemConfigurationDataService { + url = 'configuration.pinpoint'; + constructor(private http: HttpClient) {} + getConfiguration(): Observable { + return this.http.get(this.url).pipe( + map(res => { + if (res) { + return res; + } else { + return { + editUserInfo: false, + enableServerMapRealTime: false, + openSource: true, + sendUsage: true, + showActiveThread: false, + showActiveThreadDump: false, + showApplicationStat: false, + version: '', + userId: '', + userName: '', + userDepartment: '' + }; + } + }) + ); + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/services/system-configuration-resolver.service.ts b/web/src/main/webapp/v2/src/app/shared/services/system-configuration-resolver.service.ts new file mode 100644 index 000000000000..a7c57b666bcd --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/services/system-configuration-resolver.service.ts @@ -0,0 +1,12 @@ +import { Injectable } from '@angular/core'; +import { Resolve, RouterStateSnapshot, ActivatedRouteSnapshot } from '@angular/router'; +import { Observable } from 'rxjs'; +import { SystemConfigurationDataService, ISystemConfiguration } from './system-configuration-data.service'; + +@Injectable() +export class SystemConfigurationResolverService implements Resolve { + constructor(private systemConfigurationDataService: SystemConfigurationDataService) {} + resolve(reoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable { + return this.systemConfigurationDataService.getConfiguration(); + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/services/transaction-detail-data.service.ts b/web/src/main/webapp/v2/src/app/shared/services/transaction-detail-data.service.ts new file mode 100644 index 000000000000..1cc33b60cbe2 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/services/transaction-detail-data.service.ts @@ -0,0 +1,61 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; + +import { Observable, Subject } from 'rxjs'; +import { tap, shareReplay } from 'rxjs/operators'; + +export interface ITransactionDetailPartInfo { + completeState: string; + logPageUrl: string; + logButtonName: string; + logLinkEnable: boolean; + disableButtonMessage: string; + loggingTransactionInfo: boolean; +} + +@Injectable() +export class TransactionDetailDataService { + private partInfo: Subject = new Subject(); + lastKey: string; + cachedData: { [key: string]: Observable } = {}; + partInfo$: Observable; + requestURL = 'transactionInfo.pinpoint'; + constructor(private http: HttpClient) { + this.partInfo$ = this.partInfo.asObservable(); + } + getData(agentId: string, spanId: string, traceId: string, focusTimestamp: number): Observable { + this.lastKey = agentId + spanId + traceId + focusTimestamp; + if ( this.hasData() ) { + return this.cachedData[this.lastKey]; + } else { + const httpRequest$ = this.http.get(this.requestURL, this.makeRequestOptionsArgs(agentId, spanId, traceId, focusTimestamp)); + this.cachedData[this.lastKey] = httpRequest$.pipe( + tap((transactionInfo: any) => { + this.partInfo.next({ + logButtonName: transactionInfo.logButtonName, + logLinkEnable: transactionInfo.logLinkEnable, + logPageUrl: transactionInfo.logPageUrl, + loggingTransactionInfo: transactionInfo.loggingTransactionInfo, + disableButtonMessage: transactionInfo.disableButtonMessage, + completeState: transactionInfo.completeState, + }); + }), + shareReplay(1) + ); + return this.cachedData[this.lastKey]; + } + } + private hasData(): boolean { + return !!this.cachedData[this.lastKey]; + } + private makeRequestOptionsArgs(agentId: string, spanId: string, traceId: string, focusTimestamp: number): object { + return { + params: { + agentId: agentId, + spanId: spanId, + traceId: traceId, + focusTimestamp: focusTimestamp + } + }; + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/services/transaction-view-type.service.ts b/web/src/main/webapp/v2/src/app/shared/services/transaction-view-type.service.ts new file mode 100644 index 000000000000..c3c3f0562ed8 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/services/transaction-view-type.service.ts @@ -0,0 +1,70 @@ +import { Injectable } from '@angular/core'; +import { BehaviorSubject, Observable } from 'rxjs'; +import { filter } from 'rxjs/operators'; + +import { UrlPathId } from 'app/shared/models'; +import { NewUrlStateNotificationService } from 'app/shared/services/new-url-state-notification.service'; + +export interface IViewType { + key: string; + display: string; +} +export const VIEW_TYPE = { + CALL_TREE: 'callTree', + SERVER_MAP: 'serverMap', + TIMELINE: 'timeline' +}; + +@Injectable() +export class TransactionViewTypeService { + private outChangeViewType: BehaviorSubject = new BehaviorSubject(VIEW_TYPE.CALL_TREE); + private viewTypeList = [ + { + key: VIEW_TYPE.CALL_TREE, + display: 'Call Tree' + }, { + key: VIEW_TYPE.SERVER_MAP, + display: 'Server Map' + }, { + key: VIEW_TYPE.TIMELINE, + display: 'Timeline' + } + ]; + private currentViewType = ''; + private defaultViewType = this.viewTypeList[0].key; + onChangeViewType$: Observable; + constructor( + private newUrlStateNotificationService: NewUrlStateNotificationService + ) { + this.onChangeViewType$ = this.outChangeViewType.asObservable(); + this.newUrlStateNotificationService.onUrlStateChange$.pipe( + filter((urlService: NewUrlStateNotificationService) => !!urlService) + ).subscribe((urlService: NewUrlStateNotificationService) => { + if (urlService.hasValue(UrlPathId.VIEW_TYPE)) { + this.setCurrentViewType(urlService.getPathValue(UrlPathId.VIEW_TYPE)); + } else { + this.setCurrentViewType(''); + } + }); + } + private setCurrentViewType(viewType: string): void { + if ( viewType === '' ) { + this.currentViewType = this.defaultViewType; + } else { + if ( this.currentViewType === viewType ) { + return; + } + let hasMatchedKey = false; + this.viewTypeList.forEach((obj: IViewType) => { + if ( obj.key === viewType ) { + hasMatchedKey = true; + } + }); + this.currentViewType = hasMatchedKey ? viewType : this.defaultViewType; + } + this.outChangeViewType.next(this.currentViewType); + } + getViewTypeList(): IViewType[] { + return this.viewTypeList; + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/services/translate-replace.service.ts b/web/src/main/webapp/v2/src/app/shared/services/translate-replace.service.ts new file mode 100644 index 000000000000..ec8283d28728 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/services/translate-replace.service.ts @@ -0,0 +1,13 @@ +import { Injectable } from '@angular/core'; + +@Injectable() +export class TranslateReplaceService { + constructor() { } + replace(template: string, ...argu: any[]): string { + let replacedTemplate = template; + argu.forEach((value: string, index: number) => { + replacedTemplate = replacedTemplate.replace( new RegExp('\\!\\{' + index + '\\}'), '' + value); + }); + return replacedTemplate; + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/services/url-route-manager.service.ts b/web/src/main/webapp/v2/src/app/shared/services/url-route-manager.service.ts new file mode 100644 index 000000000000..38b729050f48 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/services/url-route-manager.service.ts @@ -0,0 +1,139 @@ +import { Injectable, Inject } from '@angular/core'; +import { Router } from '@angular/router'; +import { WindowRefService } from 'app/shared/services/window-ref.service'; +import { ServerTimeDataService } from 'app/shared/services/server-time-data.service'; +import { FilterParamMaker } from 'app/core/utils/filter-param-maker'; +import { HintParamMaker } from 'app/core/utils/hint-param-maker'; +import { EndTime } from 'app/core/models/end-time'; +import { Filter } from 'app/core/models/filter'; +import { UrlPath, UrlPathId } from 'app/shared/models'; +import { NewUrlStateNotificationService } from 'app/shared/services/new-url-state-notification.service'; +import { WebAppSettingDataService } from 'app/shared/services/web-app-setting-data.service'; +import { APP_BASE_HREF } from '@angular/common'; + +@Injectable() +export class UrlRouteManagerService { + + constructor( + private windowRef: WindowRefService, + private router: Router, + private webAppSettingDataService: WebAppSettingDataService, + private newUrlStateNotificationService: NewUrlStateNotificationService, + private serverTimeDataService: ServerTimeDataService, + @Inject(APP_BASE_HREF) private baseHref: string + ) {} + changeApplication(applicationUrlStr: string): void { + const startPath = this.newUrlStateNotificationService.getStartPath(); + if (this.newUrlStateNotificationService.isRealTimeMode()) { + this.moveToRealTime(applicationUrlStr); + } else { + this.serverTimeDataService.getServerTime().subscribe(time => { + const url = [ + startPath, + applicationUrlStr, + this.webAppSettingDataService.getUserDefaultPeriod().getValueWithTime(), + EndTime.formatDate(time) + ]; + this.router.navigate(url, { + queryParamsHandling: 'preserve' + }); + }); + } + } + moveToRealTime(applicationUrlStr?: string): void { + this.router.navigate([ + this.newUrlStateNotificationService.getStartPath(), + (applicationUrlStr || this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getUrlStr()), + UrlPath.REAL_TIME + ]); + } + move({ url, needServerTimeRequest, nextUrl = [], queryParam }: { url: string[], needServerTimeRequest: boolean, nextUrl?: string[], queryParam?: any} ): void { + if (needServerTimeRequest) { + this.serverTimeDataService.getServerTime().subscribe(time => { + const newUrl = url.concat([EndTime.formatDate(time)]).concat(nextUrl).filter((v: string) => { + return v !== ''; + }); + if (queryParam) { + this.router.navigate(newUrl, { + queryParams: queryParam, + queryParamsHandling: 'merge' + }); + } else { + this.router.navigate(newUrl, { + queryParamsHandling: 'preserve' + }); + } + }); + } else { + const newUrl = [...url, ...nextUrl]; + + if (queryParam) { + this.router.navigate(newUrl, { + queryParams: queryParam, + queryParamsHandling: 'merge' + }); + } else { + this.router.navigate(newUrl, { + queryParamsHandling: 'preserve' + }); + } + } + } + moveOnPage({ url, queryParam }: { url: string[], queryParam?: any }): void { + this.move({ + url: url, + needServerTimeRequest: false, + nextUrl: [], + queryParam: queryParam + }); + } + openPage(path: string | string[], title?: string): void { + this.windowRef.nativeWindow.open(this.getBaseHref() + (path instanceof Array ? path.join('/') : path), title || ''); + } + makeFilterMapUrl( + { applicationName, serviceType, periodStr, timeStr, filterStr, hintStr, addedFilter, addedHint }: + { applicationName: string, serviceType: string, periodStr: string, timeStr: string, filterStr: string, hintStr: string, addedFilter: Filter, addedHint?: any } + ): string { + return `filteredMap/${applicationName}@${serviceType}/${periodStr}/${timeStr}` + + FilterParamMaker.makeParam(filterStr, addedFilter) + + HintParamMaker.makeParam(hintStr, addedHint); + } + openInspectorPage(realTimeMode: boolean): void { + if (realTimeMode) { + this.serverTimeDataService.getServerTime().subscribe(time => { + this.windowRef.nativeWindow.open([ + this.getBaseHref() + UrlPath.INSPECTOR, + this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getUrlStr(), + this.webAppSettingDataService.getSystemDefaultPeriod().getValueWithTime(), + EndTime.newByNumber(time).getEndTime() + ].join('/')); + }); + } else { + this.windowRef.nativeWindow.open([ + this.getBaseHref() + UrlPath.INSPECTOR, + this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getUrlStr(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.PERIOD).getValueWithTime(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.END_TIME).getEndTime() + ].join('/')); + } + } + openMainPage(): void { + this.windowRef.nativeWindow.open([ + this.getBaseHref() + UrlPath.MAIN, + this.newUrlStateNotificationService.getPathValue(UrlPathId.APPLICATION).getUrlStr(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.PERIOD).getValueWithTime(), + this.newUrlStateNotificationService.getPathValue(UrlPathId.END_TIME).getEndTime() + ].join('/')); + } + private getBaseHref(): string { + if (this.baseHref === '/') { + return ''; + } else { + if (/.*\/$/.test(this.baseHref)) { + return this.baseHref; + } else { + return this.baseHref + '/'; + } + } + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/services/url-validate.guard.ts b/web/src/main/webapp/v2/src/app/shared/services/url-validate.guard.ts new file mode 100644 index 000000000000..6b4dfa00a5e9 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/services/url-validate.guard.ts @@ -0,0 +1,90 @@ +import { Injectable } from '@angular/core'; +import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, ParamMap } from '@angular/router'; + +import { UrlRouteManagerService } from 'app/shared/services/url-route-manager.service'; +import { WebAppSettingDataService } from 'app/shared/services/web-app-setting-data.service'; +import { UrlPath, UrlPathId } from 'app/shared/models'; + +interface IPathParam { + [key: string]: string; +} + +@Injectable() +export class UrlValidateGuard implements CanActivate { + constructor( + private webAppSettingDataService: WebAppSettingDataService, + private urlRouteManagerService: UrlRouteManagerService + ) {} + canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { + const hasPaths: IPathParam = {}; + this.collectUrlInfo(route.children, hasPaths); + switch (route.routeConfig.path) { + case UrlPath.MAIN: + return this.checkMainRoute(route, hasPaths); + case UrlPath.FILTERED_MAP: + return this.checkFilteredMapRoute(route, hasPaths); + } + return false; + } + private checkMainRoute(route: ActivatedRouteSnapshot, hasPaths: IPathParam): boolean { + const subPath = route.children[0].routeConfig.path; + switch (subPath) { + case ':' + UrlPathId.APPLICATION: + this.urlRouteManagerService.move({ + url: [ + UrlPath.MAIN, + hasPaths.application, + this.webAppSettingDataService.getUserDefaultPeriod().getValueWithTime() + ], + needServerTimeRequest: true + }); + return false; + case ':' + UrlPathId.APPLICATION + '/:' + UrlPathId.PERIOD: + this.urlRouteManagerService.move({ + url: [ + UrlPath.MAIN, + hasPaths.application, + hasPaths.period + ], + needServerTimeRequest: true + }); + return false; + case ':' + UrlPathId.APPLICATION + '/' + UrlPath.REAL_TIME: + case ':' + UrlPathId.APPLICATION + '/:' + UrlPathId.PERIOD + '/:' + UrlPathId.END_TIME: + default: + return true; + } + } + private checkFilteredMapRoute(route: ActivatedRouteSnapshot, hasPaths: IPathParam): boolean { + const subPath = route.children[0].routeConfig.path; + switch (subPath) { + case ':' + UrlPathId.APPLICATION + '/:' + UrlPathId.PERIOD + '/:' + UrlPathId.END_TIME: + case ':' + UrlPathId.APPLICATION + '/:' + UrlPathId.PERIOD + '/:' + UrlPathId.END_TIME + '/:' + UrlPathId.FILTER: + case ':' + UrlPathId.APPLICATION + '/:' + UrlPathId.PERIOD + '/:' + UrlPathId.END_TIME + '/:' + UrlPathId.FILTER + '/:' + UrlPathId.HINT: + return true; + case ':' + UrlPathId.APPLICATION: + case ':' + UrlPathId.APPLICATION + '/:' + UrlPathId.PERIOD: + default: + this.urlRouteManagerService.move({ + url: [ + UrlPath.MAIN + ], + needServerTimeRequest: false + }); + return false; + } + } + private collectUrlInfo(activatedChildRouteSnapshot: ActivatedRouteSnapshot[], hasPaths: any): void { + if (activatedChildRouteSnapshot.length !== 0) { + for ( let i = 0 ; i < activatedChildRouteSnapshot.length ; i++ ) { + this.assign(hasPaths, activatedChildRouteSnapshot[i].paramMap); + this.collectUrlInfo(activatedChildRouteSnapshot[i].children, hasPaths); + } + } + } + private assign(data: any, mapData: ParamMap): void { + mapData.keys.forEach((key: string) => { + data[key] = mapData.get(key); + }); + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/services/web-app-setting-data.service.ts b/web/src/main/webapp/v2/src/app/shared/services/web-app-setting-data.service.ts new file mode 100644 index 000000000000..afc3b8f60762 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/services/web-app-setting-data.service.ts @@ -0,0 +1,227 @@ +import { Injectable } from '@angular/core'; +import { ActivatedRoute } from '@angular/router'; +import { Observable } from 'rxjs'; +import { Store } from '@ngrx/store'; +import { LocalStorageService } from 'angular-2-local-storage'; +import 'moment-timezone'; +import * as moment from 'moment-timezone'; +import { pluck } from 'rxjs/operators'; + +import { AppState, Actions } from 'app/shared/store'; +import { ComponentDefaultSettingDataService } from 'app/shared/services/component-default-setting-data.service'; +import { Application, Period } from 'app/core/models'; + +interface IMinMax { + min: number; + max: number; +} + +@Injectable() +export class WebAppSettingDataService { + static KEYS = { + FAVORLIITE_APPLICATION_LIST: 'favoriteApplicationList', + TIMEZONE: 'timezone', + DATE_FORMAT: 'dateFormat', + LIST_HANDLE_POSITION: 'listHandlePosition', + LAYER_HEIGHT: 'layerHeight', + USER_DEFAULT_INBOUND: 'userDefaultInbound', + USER_DEFAULT_OUTBOUND: 'userDefaultOutbound', + USER_DEFAULT_PERIOD: 'userDefaultPeriod', + TRANSACTION_LIST_GUTTER_POSITION: 'transactionListGutterPosition' + }; + private IMAGE_PATH = './assets/img/'; + private IMAGE_EXT = '.png'; + private SERVER_MAP_PATH = 'servermap/'; + private ICON_PATH = 'icons/'; + private LOGO_IMG_NAME = 'logo.png'; + constructor( + private store: Store, + private activatedRoute: ActivatedRoute, + private localStorageService: LocalStorageService, + private componentDefaultSettingDataService: ComponentDefaultSettingDataService + ) { + this.store.dispatch(new Actions.AddFavoriteApplication(this.getFavoriteApplicationList())); + this.store.dispatch(new Actions.ChangeTimezone(this.getTimezone())); + this.store.dispatch(new Actions.ChangeDateFormat(this.getDateFormat())); + } + private getConfigurationData(): Observable { + return this.activatedRoute.children[0].children[0].data; + } + useActiveThreadChart(): Observable { + return this.getConfigurationData().pipe( + pluck('configuration', 'showActiveThread') + ); + } + getUserId(): Observable { + return this.getConfigurationData().pipe( + pluck('configuration', 'userId') + ); + } + getUserDepartment(): Observable { + return this.getConfigurationData().pipe( + pluck('configuration', 'userDepartment') + ); + } + useUserEdit(): Observable { + return this.getConfigurationData().pipe( + pluck('configuration', 'editUserInfo') + ); + } + isDataUsageAllowed(): Observable { + return this.getConfigurationData().pipe( + pluck('configuration', 'sendUsage') + ); + } + getVersion(): Observable { + return this.getConfigurationData().pipe( + pluck('configuration', 'version') + ); + } + isApplicationInspectorActivated(): Observable { + return this.getConfigurationData().pipe( + pluck('configuration', 'showApplicationStat') + ); + } + getImagePath(): string { + return this.IMAGE_PATH; + } + getServerMapImagePath(): string { + return this.getImagePath() + this.SERVER_MAP_PATH; + } + getIconImagePath(): string { + return this.getImagePath() + this.ICON_PATH; + } + getImageExt(): string { + return this.IMAGE_EXT; + } + getLogoPath(): string { + return this.getImagePath() + this.LOGO_IMG_NAME; + } + getSystemDefaultInbound(): string { + return this.componentDefaultSettingDataService.getSystemDefaultInbound(); + } + getSystemDefaultOutbound(): string { + return this.componentDefaultSettingDataService.getSystemDefaultOutbound(); + } + getSystemDefaultPeriod(): Period { + return this.componentDefaultSettingDataService.getSystemDefaultPeriod(); + } + getSystemDefaultTransactionViewPeriod(): Period { + return this.componentDefaultSettingDataService.getSystemDefaultTransactionViewPeriod(); + } + getInboundList(): string[] { + return this.componentDefaultSettingDataService.getInboundList(); + } + getOutboundList(): string[] { + return this.componentDefaultSettingDataService.getOutboundList(); + } + getPeriodList(path: string): Period[] { + return this.componentDefaultSettingDataService.getPeriodList(path); + } + getMaxPeriodTime(): number { + return this.componentDefaultSettingDataService.getMaxPeriodTime(); + } + getColorByRequest(): string[] { + return this.componentDefaultSettingDataService.getColorByRequest(); + } + private loadFavoriteList(): any[] { + return JSON.parse(this.localStorageService.get(WebAppSettingDataService.KEYS.FAVORLIITE_APPLICATION_LIST)) || []; + } + private saveFavoriteList(data: any[]): void { + this.localStorageService.set(WebAppSettingDataService.KEYS.FAVORLIITE_APPLICATION_LIST, JSON.stringify(data)); + } + addFavoriteApplication(application: IApplication): void { + this.saveFavoriteList([...this.loadFavoriteList(), { + applicationName: application.getApplicationName(), + serviceType: application.getServiceType(), + code: application.getCode() + }]); + this.store.dispatch(new Actions.AddFavoriteApplication([application])); + } + removeFavoriteApplication(application: IApplication): void { + const removedList = this.getFavoriteApplicationList().filter((app: IApplication) => { + return !app.equals(application); + }); + this.saveFavoriteList(removedList); + this.store.dispatch(new Actions.RemoveFavoriteApplication([application])); + } + private getFavoriteApplicationList(): IApplication[] { + return this.loadFavoriteList().map(({applicationName, serviceType, code}) => { + return new Application(applicationName, serviceType, code); + }); + } + getScatterY(key: string): IMinMax { + return this.localStorageService.get(key) || { min: 0, max: 10000 }; + } + setScatterY(key: string, value: IMinMax): void { + this.localStorageService.set(key, value); + } + setTimezone(value: string): void { + this.localStorageService.set(WebAppSettingDataService.KEYS.TIMEZONE, value); + } + private getTimezone(): string { + return this.localStorageService.get(WebAppSettingDataService.KEYS.TIMEZONE) || this.getDefaultTimezone(); + } + getDefaultTimezone(): string { + return moment.tz.guess(); + } + setDateFormat(value: number): void { + this.localStorageService.set(WebAppSettingDataService.KEYS.DATE_FORMAT, value); + } + private getDateFormat(): number { + return this.localStorageService.get(WebAppSettingDataService.KEYS.DATE_FORMAT) || 0; + } + getDefaultDateFormat(): string[] { + return this.componentDefaultSettingDataService.getDefaultDateFormat(); + } + getDateFormatList(): string[][] { + return this.componentDefaultSettingDataService.getDateFormatList(); + } + setListHandlePosition(value: number[]): void { + this.localStorageService.set(WebAppSettingDataService.KEYS.LIST_HANDLE_POSITION, value); + } + getListHandlePosition(): number[] { + return this.localStorageService.get(WebAppSettingDataService.KEYS.LIST_HANDLE_POSITION) || [30, 70]; + } + setLayerHeight(value: number): void { + this.localStorageService.set(WebAppSettingDataService.KEYS.LAYER_HEIGHT, value); + } + getLayerHeight(): number { + return Number.parseInt(this.localStorageService.get(WebAppSettingDataService.KEYS.LAYER_HEIGHT), 10); + } + setUserDefaultInbound(value: string): void { + this.localStorageService.set(WebAppSettingDataService.KEYS.USER_DEFAULT_INBOUND, value); + } + getUserDefaultInbound(): string { + return this.localStorageService.get(WebAppSettingDataService.KEYS.USER_DEFAULT_INBOUND) || this.getSystemDefaultInbound(); + } + setUserDefaultOutbound(value: string): void { + this.localStorageService.set(WebAppSettingDataService.KEYS.USER_DEFAULT_OUTBOUND, value); + } + getUserDefaultOutbound(): string { + return this.localStorageService.get(WebAppSettingDataService.KEYS.USER_DEFAULT_OUTBOUND) || this.getSystemDefaultOutbound(); + } + setUserDefaultPeriod(value: Period): void { + this.localStorageService.set(WebAppSettingDataService.KEYS.USER_DEFAULT_PERIOD, value.getValue()); + } + getUserDefaultPeriod(): Period { + const userDefaultPeriodInMinute = this.localStorageService.get(WebAppSettingDataService.KEYS.USER_DEFAULT_PERIOD); + + return userDefaultPeriodInMinute ? new Period(userDefaultPeriodInMinute) : this.getSystemDefaultPeriod(); + } + getServerMapIconPathMakeFunc(): Function { + return (name: string) => { + return this.IMAGE_PATH + this.SERVER_MAP_PATH + name + this.IMAGE_EXT; + }; + } + getIconPathMakeFunc(): Function { + return (name: string) => { + return this.IMAGE_PATH + this.ICON_PATH + name + this.IMAGE_EXT; + }; + } + getImagePathMakeFunc(): Function { + return (name: string) => { + return this.IMAGE_PATH + name + this.IMAGE_EXT; + }; + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/services/window-ref.service.ts b/web/src/main/webapp/v2/src/app/shared/services/window-ref.service.ts new file mode 100644 index 000000000000..1548c2ec742e --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/services/window-ref.service.ts @@ -0,0 +1,12 @@ +import { Injectable } from '@angular/core'; + +function getWindow(): any { + return window; +} + +@Injectable() +export class WindowRefService { + get nativeWindow(): any { + return getWindow(); + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/store/admin.reducer.ts b/web/src/main/webapp/v2/src/app/shared/store/admin.reducer.ts new file mode 100644 index 000000000000..c451bc9bd5f4 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/store/admin.reducer.ts @@ -0,0 +1,16 @@ +import { Action } from '@ngrx/store'; + +const UPDATE_ADMIN_AGENT_LIST = 'UPDATE_ADMIN_AGENT_LIST'; +export class UpdateAdminAgentList implements Action { + readonly type = UPDATE_ADMIN_AGENT_LIST; + constructor(public payload: IAgentList) {} +} + +export function Reducer(state: IAgentList, action: UpdateAdminAgentList): IAgentList { + switch (action.type) { + case UPDATE_ADMIN_AGENT_LIST: + return action.payload; + default: + return state; + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/store/agent-info.reducer.ts b/web/src/main/webapp/v2/src/app/shared/store/agent-info.reducer.ts new file mode 100644 index 000000000000..2faf50d4b203 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/store/agent-info.reducer.ts @@ -0,0 +1,17 @@ +import { Action } from '@ngrx/store'; + +const UPDATE_AGENT_INFO = 'UPDATE_AGENT_INFO'; + +export class UpdateAgentInfo implements Action { + readonly type = UPDATE_AGENT_INFO; + constructor(public payload: IServerAndAgentData) {} +} + +export function Reducer(state: IServerAndAgentData, action: UpdateAgentInfo): IServerAndAgentData { + switch (action.type) { + case UPDATE_AGENT_INFO: + return action.payload; + default: + return state; + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/store/agent-selection-for-info-per-server.reducer.ts b/web/src/main/webapp/v2/src/app/shared/store/agent-selection-for-info-per-server.reducer.ts new file mode 100644 index 000000000000..059ef31ccce0 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/store/agent-selection-for-info-per-server.reducer.ts @@ -0,0 +1,17 @@ +import { Action } from '@ngrx/store'; + +const CHANGE_AGENT_FOR_SERVER_LIST = 'CHANGE_AGENT_FOR_SERVER_LIST'; + +export class ChangeAgentForServerList implements Action { + readonly type = CHANGE_AGENT_FOR_SERVER_LIST; + constructor(public payload: IAgentSelection) {} +} + +export function Reducer(state: IAgentSelection, action: ChangeAgentForServerList): IAgentSelection { + switch ( action.type ) { + case CHANGE_AGENT_FOR_SERVER_LIST: + return (state && state.agent === action.payload.agent) ? state : action.payload; + default: + return state; + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/store/agent-selection-for-side-bar.reducer.ts b/web/src/main/webapp/v2/src/app/shared/store/agent-selection-for-side-bar.reducer.ts new file mode 100644 index 000000000000..d0f2a7353c31 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/store/agent-selection-for-side-bar.reducer.ts @@ -0,0 +1,17 @@ +import { Action } from '@ngrx/store'; + +const CHANGE_AGENT = 'CHANGE_AGENT'; + +export class ChangeAgent implements Action { + readonly type = CHANGE_AGENT; + constructor(public payload: string) {} +} + +export function Reducer(state = '', action: ChangeAgent): string { + switch ( action.type ) { + case CHANGE_AGENT: + return (state === action.payload) ? state : action.payload; + default: + return state; + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/store/application-list.reducer.ts b/web/src/main/webapp/v2/src/app/shared/store/application-list.reducer.ts new file mode 100644 index 000000000000..4cfcdb198931 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/store/application-list.reducer.ts @@ -0,0 +1,17 @@ +import { Action } from '@ngrx/store'; + +const UPDATE_APPLICATION_LIST = 'UPDATE_APPLICATION_LIST'; + +export class UpdateApplicationList implements Action { + readonly type = UPDATE_APPLICATION_LIST; + constructor(public payload: IApplication[]) {} +} + +export function Reducer(state: IApplication[] = [], action: UpdateApplicationList): IApplication[] { + switch (action.type) { + case UPDATE_APPLICATION_LIST: + return action.payload; + default: + return state; + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/store/date-format.reducer.ts b/web/src/main/webapp/v2/src/app/shared/store/date-format.reducer.ts new file mode 100644 index 000000000000..de12929dbdb6 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/store/date-format.reducer.ts @@ -0,0 +1,16 @@ +import { Action } from '@ngrx/store'; + +const CHANGE_DATE_FORMAT = 'CHANGE_DATE_FORMAT'; +export class ChangeDateFormat implements Action { + readonly type = CHANGE_DATE_FORMAT; + constructor(public payload: number) {} +} + +export function Reducer(state = 0, action: ChangeDateFormat) { + switch (action.type) { + case CHANGE_DATE_FORMAT: + return (state === action.payload) ? state : action.payload; + default: + return state; + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/store/favorite-application-list.reducer.ts b/web/src/main/webapp/v2/src/app/shared/store/favorite-application-list.reducer.ts new file mode 100644 index 000000000000..4aaac3d76f15 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/store/favorite-application-list.reducer.ts @@ -0,0 +1,31 @@ +import { Action } from '@ngrx/store'; + +const ADD_FAVORITE_APPLICATION = 'ADD_FAVORITE_APPLICATION'; +const REMOVE_FAVORITE_APPLICATION = 'REMOVE_FAVORITE_APPLICATION'; + +export class AddFavoriteApplication implements Action { + readonly type = ADD_FAVORITE_APPLICATION; + constructor(public payload: IApplication[]) {} +} +export class RemoveFavoriteApplication implements Action { + readonly type = REMOVE_FAVORITE_APPLICATION; + constructor(public payload: IApplication[]) {} +} + +export function Reducer(state: IApplication[] = [], action: AddFavoriteApplication | RemoveFavoriteApplication): IApplication[] { + switch (action.type) { + case ADD_FAVORITE_APPLICATION: + return [...state, ...action.payload]; + case REMOVE_FAVORITE_APPLICATION: + return state.filter((application: IApplication) => { + for (let i = 0 ; i < action.payload.length ; i++) { + if (application.equals(action.payload[i])) { + return false; + } + } + return true; + }); + default: + return state; + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/store/index.ts b/web/src/main/webapp/v2/src/app/shared/store/index.ts new file mode 100644 index 000000000000..c6be81fbd092 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/store/index.ts @@ -0,0 +1,163 @@ +import { ActionReducerMap, createSelector, createFeatureSelector } from '@ngrx/store'; + +import * as admin from './admin.reducer'; +import * as agentInfo from './agent-info.reducer'; +import * as agentSelectionForInfoPerServer from './agent-selection-for-info-per-server.reducer'; +import * as agentSelectionForSideBar from './agent-selection-for-side-bar.reducer'; +import * as applicationList from './application-list.reducer'; +import * as dateFormat from './date-format.reducer'; +import * as favoriteApplicationList from './favorite-application-list.reducer'; +import * as inspectorChartHover from './inspector-chart-hover.reducer'; +import * as loadChart from './load-chart.reducer'; +import * as responseSummaryChart from './response-summary-chart.reducer'; +import * as scatterChartRealTime from './scatter-chart-real-time.reducer'; +import * as scatterChart from './scatter-chart.reducer'; +import * as serverAndAgent from './server-and-agent.reducer'; +import * as serverList from './server-list.reducer'; +import * as timeline from './timeline.reducer'; +import * as timezone from './timezone.reducer'; +import * as transactionDetailData from './transaction-detail-data.reducer'; +import * as transactionData from './transaction-info.reducer'; +import * as targetList from './target-list.reducer'; +import * as serverMap from './server-map.reducer'; +import * as serverMapSelectedTarget from './server-map-selected-target.reducer'; +import * as serverMapLoadingState from './server-map-loading-state.reducer'; +import * as uiState from './ui-state.reducer'; + + +export interface AppState { + timeline: ITimelineInfo; + timezone: string; + dateFormat: number; + loadChartYMax: number; + responseSummaryChartYMax: number; + agentSelection: string; + agentSelectionForServerList: IAgentSelection; + transactionData: ITransactionMetaData; + transactionDetailData: ITransactionDetailData; + hoverOnInspectorCharts: number; + agentInfo: IServerAndAgentData; + applicationList: IApplication[]; + favoriteApplicationList: IApplication[]; + serverList: any; + scatterChart: IScatterData; + realTimeScatterChart: IScatterXRange; + serverMapData: any; + serverMapLoadingState: string; + serverMapTargetSelected: ISelectedTarget; + serverMapTargetSelectByList: any; + updateFilterOfServerAndAgentList: string; + adminAgentList: { [key: string]: IAgent[] }; + uiState: IUIState; +} + +export const STORE_KEY = { + TIMELINE: 'timeline', + TIMEZONE: 'timezone', + DATE_FORMAT: 'dateFormat', + LOAD_CHART_Y_MAX: 'loadChartYMax', + RESPONSE_SUMMARY_CHART_Y_MAX: 'responseSummaryChartYMax', + AGENT_SELECTION: 'agentSelection', + AGENT_SELECTION_FOR_SERVER_LIST: 'agentSelectionForServerList', + TIMELINE_SELECTION_RANGE: 'timelineSelectionRange', + TRANSACTION_DATA: 'transactionData', + TRANSACTION_DETAIL_DATA: 'transactionDetailData', + HOVER_ON_INSPECTOR_CHARTS: 'hoverOnInspectorCharts', + AGENT_INFO: 'agentInfo', + APPLICATION_LIST: 'applicationList', + FAVORITE_APPLICATION_LIST: 'favoriteApplicationList', + SERVER_LIST: 'serverList', + SCATTER_CHART: 'scatterChart', + REAL_TIME_SCATTER_CHART: 'realTimeScatterChart', + SERVER_MAP_DATA: 'serverMapData', + SERVER_MAP_LOADING_STATE: 'serverMapLoadingState', + SERVER_MAP_TARGET_SELECTED: 'serverMapTargetSelected', + SERVER_MAP_TARGET_SELECTED_BY_LIST: 'serverMapTargetSelectByList', + ADMIN_AGENT_LIST: 'adminAgentList', + SERVER_AND_AGENT: 'serverAndAgent', + UI_STATE: 'uiState' +}; + + +export const reducers: ActionReducerMap = { + // [STORE_KEY.AGENT_INFo]: agentInfoReducer 방식은 빌드시 에러가 발생 함. + agentInfo: agentInfo.Reducer, + agentSelection: agentSelectionForSideBar.Reducer, + agentSelectionForServerList: agentSelectionForInfoPerServer.Reducer, + applicationList: applicationList.Reducer, + favoriteApplicationList: favoriteApplicationList.Reducer, + dateFormat: dateFormat.Reducer, + hoverOnInspectorCharts: inspectorChartHover.Reducer, + loadChartYMax: loadChart.Reducer, + responseSummaryChartYMax: responseSummaryChart.Reducer, + realTimeScatterChart: scatterChartRealTime.Reducer, + scatterChart: scatterChart.Reducer, + serverList: serverList.Reducer, + serverMapLoadingState: serverMapLoadingState.Reducer, + serverMapData: serverMap.Reducer, + serverMapTargetSelected: serverMapSelectedTarget.Reducer, + serverMapTargetSelectByList: targetList.Reducer, + timezone: timezone.Reducer, + transactionData: transactionData.Reducer, + transactionDetailData: transactionDetailData.Reducer, + adminAgentList: admin.Reducer, + serverAndAgent: serverAndAgent.Reducer, + uiState: uiState.Reducer, + timeline: timeline.Reducer +}; + +export const Actions = { + 'ChangeTimezone': timezone.ChangeTimezone, + 'ChangeDateFormat': dateFormat.ChangeDateFormat, + 'ChangeResponseSummaryChartYMax': responseSummaryChart.ChangeResponseSummaryChartYMax, + 'ChangeLoadChartYMax': loadChart.ChangeLoadChartYMax, + 'ChangeAgent': agentSelectionForSideBar.ChangeAgent, + 'ChangeAgentForServerList': agentSelectionForInfoPerServer.ChangeAgentForServerList, + 'UpdateTransactionData': transactionData.UpdateTransactionData, + 'UpdateTransactionDetailData': transactionDetailData.UpdateTransactionDetailData, + 'ChangeHoverOnInspectorCharts': inspectorChartHover.ChangeHoverOnInspectorCharts, + 'UpdateApplicationList': applicationList.UpdateApplicationList, + 'AddFavoriteApplication': favoriteApplicationList.AddFavoriteApplication, + 'RemoveFavoriteApplication': favoriteApplicationList.RemoveFavoriteApplication, + 'UpdateServerList': serverList.UpdateServerList, + 'AddScatterChartData': scatterChart.AddScatterChartData, + 'UpdateRealTimeScatterChartXRange': scatterChartRealTime.UpdateRealTimeScatterChartXRange, + 'UpdateServerMapData': serverMap.UpdateServerMapData, + 'UpdateServerMapLoadingState': serverMapLoadingState.UpdateServerMapLoadingState, + 'UpdateServerMapTargetSelected': serverMapSelectedTarget.UpdateServerMapTargetSelected, + 'UpdateServerMapSelectedTargetByList': targetList.UpdateServerMapSelectedTargetByList, + 'UpdateFilterOfServerAndAgentList': serverAndAgent.UpdateFilterOfServerAndAgentList, + 'UpdateAgentInfo': agentInfo.UpdateAgentInfo, + 'UpdateAdminAgentList': admin.UpdateAdminAgentList, + 'ChangeServerMapDisableState': uiState.ChangeServerMapDisableState, + 'ChangeInfoPerServerVisibleState': uiState.ChangeInfoPerServerVisibleState, + 'UpdateTimelineSelectionRange': timeline.UpdateTimelineSelectionRange, + 'UpdateTimelineRange': timeline.UpdateTimelineRange, + 'UpdateTimelineSelectedTime': timeline.UpdateTimelineSelectedTime, + 'UpdateTimelineData': timeline.UpdateTimelineData +}; + +const getUI = createFeatureSelector('uiState'); +export const selectServerMapDisableState = createSelector( + getUI, + (state: IUIState) => state['serverMap'] +); +export const selectInfoPerServerVisibleState = createSelector( + getUI, + (state: IUIState) => state['infoPerServer'] +); + +const getTimeline = createFeatureSelector('timeline'); +export const selectTimelineRange = createSelector( + getTimeline, + (state: ITimelineInfo) => state['range'] +); +export const selectTimelineSelectionRange = createSelector( + getTimeline, + (state: ITimelineInfo) => state['selectionRange'] +); +export const selectTimelineSelectedTime = createSelector( + getTimeline, + (state: ITimelineInfo) => state['selectedTime'] +); + diff --git a/web/src/main/webapp/v2/src/app/shared/store/inspector-chart-hover.reducer.ts b/web/src/main/webapp/v2/src/app/shared/store/inspector-chart-hover.reducer.ts new file mode 100644 index 000000000000..985372c10031 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/store/inspector-chart-hover.reducer.ts @@ -0,0 +1,16 @@ +import { Action } from '@ngrx/store'; + +const SYNC_HOVER_ON_INSPECTOR_CHARTS = 'SYNC_HOVER_ON_INSPECTOR_CHARTS'; +export class ChangeHoverOnInspectorCharts implements Action { + readonly type = SYNC_HOVER_ON_INSPECTOR_CHARTS; + constructor(public payload: IHoveredInfo) {} +} + +export function Reducer(state: IHoveredInfo, action: ChangeHoverOnInspectorCharts): IHoveredInfo { + switch ( action.type ) { + case SYNC_HOVER_ON_INSPECTOR_CHARTS: + return action.payload; + default: + return state; + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/store/load-chart.reducer.ts b/web/src/main/webapp/v2/src/app/shared/store/load-chart.reducer.ts new file mode 100644 index 000000000000..a9354ebc7349 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/store/load-chart.reducer.ts @@ -0,0 +1,18 @@ +import { Action } from '@ngrx/store'; + +const CHANGE_LOAD_CHART_Y_MAX = 'CHANGE_LOAD_Y_MAX'; + +export class ChangeLoadChartYMax implements Action { + readonly type = CHANGE_LOAD_CHART_Y_MAX; + constructor(public payload: number) {} +} + +export function Reducer(state = 0, action: ChangeLoadChartYMax) { + switch (action.type) { + case CHANGE_LOAD_CHART_Y_MAX: + return action.payload; + default: + return state; + } +} + diff --git a/web/src/main/webapp/v2/src/app/shared/store/response-summary-chart.reducer.ts b/web/src/main/webapp/v2/src/app/shared/store/response-summary-chart.reducer.ts new file mode 100644 index 000000000000..b26f2d16186c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/store/response-summary-chart.reducer.ts @@ -0,0 +1,18 @@ +import { Action } from '@ngrx/store'; + +const CHANGE_RESPONSE_SUMMARY_CHART_Y_MAX = 'CHANGE_RESPONSE_SUMMARY_Y_MAX'; + +export class ChangeResponseSummaryChartYMax implements Action { + readonly type = CHANGE_RESPONSE_SUMMARY_CHART_Y_MAX; + constructor(public payload: number) {} +} + +export function Reducer(state = 0, action: ChangeResponseSummaryChartYMax) { + switch (action.type) { + case CHANGE_RESPONSE_SUMMARY_CHART_Y_MAX: + return action.payload; + default: + return state; + } +} + diff --git a/web/src/main/webapp/v2/src/app/shared/store/scatter-chart-real-time.reducer.ts b/web/src/main/webapp/v2/src/app/shared/store/scatter-chart-real-time.reducer.ts new file mode 100644 index 000000000000..3542197ef038 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/store/scatter-chart-real-time.reducer.ts @@ -0,0 +1,20 @@ +import { Action } from '@ngrx/store'; + +const UPDATE_REAL_TIME_SCATTER_CHART_X_RANGE = 'UPDATE_REAL_TIME_SCATTER_CHART_X_RANGE'; + +export class UpdateRealTimeScatterChartXRange implements Action { + readonly type = UPDATE_REAL_TIME_SCATTER_CHART_X_RANGE; + constructor(public payload: IScatterXRange) {} +} + +export function Reducer(state: IScatterXRange = {from: -1, to: -1}, action: UpdateRealTimeScatterChartXRange): IScatterXRange { + switch (action.type) { + case UPDATE_REAL_TIME_SCATTER_CHART_X_RANGE: + if (state.from === action.payload.from && state.to === action.payload.to) { + return state; + } + return action.payload; + default: + return state; + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/store/scatter-chart.reducer.ts b/web/src/main/webapp/v2/src/app/shared/store/scatter-chart.reducer.ts new file mode 100644 index 000000000000..e3d26d31682c --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/store/scatter-chart.reducer.ts @@ -0,0 +1,17 @@ +import { Action } from '@ngrx/store'; + +const ADD_SCATTER_CHART_DATA = 'UPDATE_SCATTER_CHART_DATA'; + +export class AddScatterChartData implements Action { + readonly type = ADD_SCATTER_CHART_DATA; + constructor(public payload: IScatterData) {} +} + +export function Reducer(state: IScatterData[] = [], action: AddScatterChartData): IScatterData[] { + switch (action.type) { + case ADD_SCATTER_CHART_DATA: + return state.concat(action.payload); + default: + return state; + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/store/server-and-agent.reducer.ts b/web/src/main/webapp/v2/src/app/shared/store/server-and-agent.reducer.ts new file mode 100644 index 000000000000..554730a98789 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/store/server-and-agent.reducer.ts @@ -0,0 +1,16 @@ +import { Action } from '@ngrx/store'; + +const UPDATE_FILTER_OF_SERVER_AND_AGENT_LIST = 'UPDATE_FILTER_OF_SERVER_AND_AGENT_LIST'; +export class UpdateFilterOfServerAndAgentList implements Action { + readonly type = UPDATE_FILTER_OF_SERVER_AND_AGENT_LIST; + constructor(public payload: string) {} +} + +export function Reducer(state = '', action: UpdateFilterOfServerAndAgentList): string { + switch (action.type) { + case UPDATE_FILTER_OF_SERVER_AND_AGENT_LIST: + return state === action.payload ? state : action.payload; + default: + return state; + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/store/server-list.reducer.ts b/web/src/main/webapp/v2/src/app/shared/store/server-list.reducer.ts new file mode 100644 index 000000000000..aa6ae2ea8dc4 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/store/server-list.reducer.ts @@ -0,0 +1,17 @@ +import { Action } from '@ngrx/store'; + +export const UPDATE_SERVER_LIST = 'UPDATE_SERVER_LIST'; + +export class UpdateServerList implements Action { + readonly type = UPDATE_SERVER_LIST; + constructor(public payload: any) {} +} + +export function Reducer(state = {}, action: UpdateServerList): any { + switch (action.type) { + case UPDATE_SERVER_LIST: + return action.payload; + default: + return state; + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/store/server-map-loading-state.reducer.ts b/web/src/main/webapp/v2/src/app/shared/store/server-map-loading-state.reducer.ts new file mode 100644 index 000000000000..dda4707d6999 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/store/server-map-loading-state.reducer.ts @@ -0,0 +1,16 @@ +import { Action } from '@ngrx/store'; + +const UPDATE_SERVER_MAP_LOADING_STATE = 'UPDATE_LOADING_STATE'; + +export class UpdateServerMapLoadingState implements Action { + readonly type = UPDATE_SERVER_MAP_LOADING_STATE; + constructor(public payload: string) {} +} +export function Reducer(state = 'LOADING', action: UpdateServerMapLoadingState): string { + switch (action.type) { + case UPDATE_SERVER_MAP_LOADING_STATE: + return action.payload; + default: + return state; + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/store/server-map-selected-target.reducer.ts b/web/src/main/webapp/v2/src/app/shared/store/server-map-selected-target.reducer.ts new file mode 100644 index 000000000000..11d1db7e0826 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/store/server-map-selected-target.reducer.ts @@ -0,0 +1,32 @@ +import { Action } from '@ngrx/store'; + +const UPDATE_SERVER_MAP_TARGET_SELECTED = 'UPDATE_SERVER_MAP_TARGET_SELECTED'; + +export class UpdateServerMapTargetSelected implements Action { + readonly type = UPDATE_SERVER_MAP_TARGET_SELECTED; + constructor(public payload: ISelectedTarget) {} +} + +export function Reducer(state: ISelectedTarget, action: UpdateServerMapTargetSelected): ISelectedTarget { + switch (action.type) { + case UPDATE_SERVER_MAP_TARGET_SELECTED: + if (action.payload === null) { + return {} as ISelectedTarget; + } else if ( + state && + state.endTime === action.payload.endTime && + state.period === action.payload.period && + state.isWAS === action.payload.isWAS && + (state.isNode === action.payload.isNode + ? (state.isNode ? state.node[0] === action.payload.node[0] : state.link[0] === action.payload.link[0]) + : false + ) + ) { + return state; + } else { + return action.payload; + } + default: + return state; + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/store/server-map.reducer.ts b/web/src/main/webapp/v2/src/app/shared/store/server-map.reducer.ts new file mode 100644 index 000000000000..7f8464858118 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/store/server-map.reducer.ts @@ -0,0 +1,17 @@ +import { Action } from '@ngrx/store'; + +const UPDATE_SERVER_MAP_DATA = 'UPDATE_SERVER_MAP_DATA'; + +export class UpdateServerMapData implements Action { + readonly type = UPDATE_SERVER_MAP_DATA; + constructor(public payload: any) {} +} + +export function Reducer(state = {}, action: UpdateServerMapData): any { + switch (action.type) { + case UPDATE_SERVER_MAP_DATA: + return action.payload; + default: + return state; + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/store/target-list.reducer.ts b/web/src/main/webapp/v2/src/app/shared/store/target-list.reducer.ts new file mode 100644 index 000000000000..2d0ed134fc8b --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/store/target-list.reducer.ts @@ -0,0 +1,20 @@ +import { Action } from '@ngrx/store'; + +const UPDATE_SERVER_MAP_SELECTED_TARGET_BY_LIST = 'UPDATE_SERVER_MAP_SELECTED_TARGET_BY_LIST'; + +export class UpdateServerMapSelectedTargetByList implements Action { + readonly type = UPDATE_SERVER_MAP_SELECTED_TARGET_BY_LIST; + constructor(public payload: any) {} +} +export function Reducer(state: any, action: UpdateServerMapSelectedTargetByList): any { + switch (action.type) { + case UPDATE_SERVER_MAP_SELECTED_TARGET_BY_LIST: + if (state && state.key === action.payload.key) { + return state; + } else { + return action.payload; + } + default: + return state; + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/store/timeline.reducer.ts b/web/src/main/webapp/v2/src/app/shared/store/timeline.reducer.ts new file mode 100644 index 000000000000..7beb90856ee1 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/store/timeline.reducer.ts @@ -0,0 +1,74 @@ +import { Action } from '@ngrx/store'; + +const initState: ITimelineInfo = { + range: [0, 0], + selectedTime: 0, + selectionRange: [0, 0], +}; + +const UPDATE_TIMELINE_INFO = 'UPDATE_TIMELINE_INFO'; +const UPDATE_TIMELINE_SELECTED_TIME = 'UPDATE_TIMELINE_SELECTED_TIME'; +const UPDATE_TIMELINE_SELECTION_RANGE = 'UPDATE_TIMELINE_SELECTION_RANGE'; +const UPDATE_TIMELINE_RANGE = 'UPDATE_TIMELINE_RANGE'; + +export class UpdateTimelineData implements Action { + readonly type = UPDATE_TIMELINE_INFO; + constructor(public payload: ITimelineInfo) {} +} +export class UpdateTimelineSelectedTime implements Action { + readonly type = UPDATE_TIMELINE_SELECTED_TIME; + constructor(public payload: number) {} +} +export class UpdateTimelineSelectionRange implements Action { + readonly type = UPDATE_TIMELINE_SELECTION_RANGE; + constructor(public payload: number[]) {} +} +export class UpdateTimelineRange implements Action { + readonly type = UPDATE_TIMELINE_RANGE; + constructor(public payload: number[]) {} +} +export function Reducer(state = initState, action: UpdateTimelineData | UpdateTimelineSelectedTime | UpdateTimelineSelectionRange | UpdateTimelineRange): ITimelineInfo { + switch (action.type) { + case UPDATE_TIMELINE_INFO: + if ( + state.range[0] !== action.payload.range[0] || + state.range[1] !== action.payload.range[1] || + state.selectedTime !== action.payload.selectedTime || + state.selectionRange[0] !== action.payload.selectionRange[0] || + state.selectionRange[1] !== action.payload.selectionRange[1] + ) { + return action.payload; + } else { + return state; + } + case UPDATE_TIMELINE_SELECTED_TIME: + if (state.selectedTime === action.payload) { + return state; + } else { + return { + ...state, + selectedTime : action.payload + }; + } + case UPDATE_TIMELINE_SELECTION_RANGE: + if (state.selectionRange[0] === action.payload[0] && state.selectionRange[1] === action.payload[1]) { + return state; + } else { + return { + ...state, + selectionRange: action.payload + }; + } + case UPDATE_TIMELINE_RANGE: + if (state.range[0] === action.payload[0] && state.range[1] === action.payload[1]) { + return state; + } else { + return { + ...state, + range: action.payload + }; + } + default: + return state; + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/store/timezone.reducer.ts b/web/src/main/webapp/v2/src/app/shared/store/timezone.reducer.ts new file mode 100644 index 000000000000..d49657b361b5 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/store/timezone.reducer.ts @@ -0,0 +1,16 @@ +import { Action } from '@ngrx/store'; + +const CHANGE_TIMEZONE = 'CHANGE_TIMEZONE'; +export class ChangeTimezone implements Action { + readonly type = CHANGE_TIMEZONE; + constructor(public payload: string) {} +} + +export function Reducer(state = 'Asia/Seoul', action: ChangeTimezone): string { + switch (action.type) { + case CHANGE_TIMEZONE: + return (state === action.payload) ? state : action.payload; + default: + return state; + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/store/transaction-detail-data.reducer.ts b/web/src/main/webapp/v2/src/app/shared/store/transaction-detail-data.reducer.ts new file mode 100644 index 000000000000..43e0dcd18a82 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/store/transaction-detail-data.reducer.ts @@ -0,0 +1,21 @@ +import { Action } from '@ngrx/store'; + +const UPDATE_TRANSACTION_DETAIL_DATA = 'UPDATE_TRANSACTION_DETAIL_DATA'; + +export class UpdateTransactionDetailData implements Action { + readonly type = UPDATE_TRANSACTION_DETAIL_DATA; + constructor(public payload: ITransactionDetailData) {} +} + +export function Reducer(state: ITransactionDetailData, action: UpdateTransactionDetailData): ITransactionDetailData { + switch ( action.type ) { + case UPDATE_TRANSACTION_DETAIL_DATA: + if (state && (state.agentId === action.payload.agentId && state.applicationId === action.payload['applicationId'] && state.transactionId === action.payload.transactionId)) { + return state; + } else { + return action.payload; + } + default: + return state; + } +} diff --git a/web/src/main/webapp/v2/src/app/shared/store/transaction-info.reducer.ts b/web/src/main/webapp/v2/src/app/shared/store/transaction-info.reducer.ts new file mode 100644 index 000000000000..446b94ffac84 --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/store/transaction-info.reducer.ts @@ -0,0 +1,22 @@ +import { Action } from '@ngrx/store'; + +const UPDATE_TRANSACTION_DATA = 'UPDATE_TRANSACTION_DATA'; + +export class UpdateTransactionData implements Action { + readonly type = UPDATE_TRANSACTION_DATA; + constructor(public payload: ITransactionMetaData) {} +} + +export function Reducer(state: ITransactionMetaData, action: UpdateTransactionData): ITransactionMetaData { + switch ( action.type ) { + case UPDATE_TRANSACTION_DATA: + if (state && (state.traceId === action.payload.traceId && state.collectorAcceptTime === action.payload.collectorAcceptTime && state.elapsed === action.payload.elapsed)) { + return state; + } else { + return action.payload; + } + default: + return state; + } +} + diff --git a/web/src/main/webapp/v2/src/app/shared/store/ui-state.reducer.ts b/web/src/main/webapp/v2/src/app/shared/store/ui-state.reducer.ts new file mode 100644 index 000000000000..333e63d97e5a --- /dev/null +++ b/web/src/main/webapp/v2/src/app/shared/store/ui-state.reducer.ts @@ -0,0 +1,43 @@ +import { Action } from '@ngrx/store'; + +const CHANGE_INFO_PER_SERVER_VISIBLE_STATE = 'CHANGE_INFO_PER_SERVER_VISIBLE_STATE'; +const CHANGE_SERVER_MAP_DISABLE_STATE = 'CHANGE_SERVER_MAP_DISABLE_STATE'; + +const initState = { + infoPerServer: false, + serverMap: false +}; + +export class ChangeInfoPerServerVisibleState implements Action { + readonly type = CHANGE_INFO_PER_SERVER_VISIBLE_STATE; + constructor(public payload: boolean) {} +} +export class ChangeServerMapDisableState implements Action { + readonly type = CHANGE_SERVER_MAP_DISABLE_STATE; + constructor(public payload: boolean) {} +} + +export function Reducer(state: IUIState = initState, action: ChangeInfoPerServerVisibleState | ChangeServerMapDisableState): IUIState { + switch (action.type) { + case CHANGE_INFO_PER_SERVER_VISIBLE_STATE: + if (action.payload === state['infoPerServer']) { + return state; + } else { + return { + ...state, + 'infoPerServer': action.payload + }; + } + case CHANGE_SERVER_MAP_DISABLE_STATE: + if (action.payload === state['serverMap']) { + return state; + } else { + return { + ...state, + 'serverMap': action.payload + }; + } + default: + return state; + } +} diff --git a/web/src/main/webapp/v2/src/assets/.gitkeep b/web/src/main/webapp/v2/src/assets/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/css/fontawesome-all.css b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/css/fontawesome-all.css new file mode 100644 index 000000000000..ec052ff5bd51 --- /dev/null +++ b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/css/fontawesome-all.css @@ -0,0 +1,2861 @@ +/*! + * Font Awesome Free 5.0.10 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +.fa, +.fas, +.far, +.fal, +.fab { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; } + +.fa-lg { + font-size: 1.33333em; + line-height: 0.75em; + vertical-align: -.0667em; } + +.fa-xs { + font-size: .75em; } + +.fa-sm { + font-size: .875em; } + +.fa-1x { + font-size: 1em; } + +.fa-2x { + font-size: 2em; } + +.fa-3x { + font-size: 3em; } + +.fa-4x { + font-size: 4em; } + +.fa-5x { + font-size: 5em; } + +.fa-6x { + font-size: 6em; } + +.fa-7x { + font-size: 7em; } + +.fa-8x { + font-size: 8em; } + +.fa-9x { + font-size: 9em; } + +.fa-10x { + font-size: 10em; } + +.fa-fw { + text-align: center; + width: 1.25em; } + +.fa-ul { + list-style-type: none; + margin-left: 2.5em; + padding-left: 0; } + .fa-ul > li { + position: relative; } + +.fa-li { + left: -2em; + position: absolute; + text-align: center; + width: 2em; + line-height: inherit; } + +.fa-border { + border: solid 0.08em #eee; + border-radius: .1em; + padding: .2em .25em .15em; } + +.fa-pull-left { + float: left; } + +.fa-pull-right { + float: right; } + +.fa.fa-pull-left, +.fas.fa-pull-left, +.far.fa-pull-left, +.fal.fa-pull-left, +.fab.fa-pull-left { + margin-right: .3em; } + +.fa.fa-pull-right, +.fas.fa-pull-right, +.far.fa-pull-right, +.fal.fa-pull-right, +.fab.fa-pull-right { + margin-left: .3em; } + +.fa-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; } + +.fa-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); } + +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +.fa-rotate-90 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; + -webkit-transform: rotate(90deg); + transform: rotate(90deg); } + +.fa-rotate-180 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; + -webkit-transform: rotate(180deg); + transform: rotate(180deg); } + +.fa-rotate-270 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; + -webkit-transform: rotate(270deg); + transform: rotate(270deg); } + +.fa-flip-horizontal { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; + -webkit-transform: scale(-1, 1); + transform: scale(-1, 1); } + +.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(1, -1); + transform: scale(1, -1); } + +.fa-flip-horizontal.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(-1, -1); + transform: scale(-1, -1); } + +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270, +:root .fa-flip-horizontal, +:root .fa-flip-vertical { + -webkit-filter: none; + filter: none; } + +.fa-stack { + display: inline-block; + height: 2em; + line-height: 2em; + position: relative; + vertical-align: middle; + width: 2em; } + +.fa-stack-1x, +.fa-stack-2x { + left: 0; + position: absolute; + text-align: center; + width: 100%; } + +.fa-stack-1x { + line-height: inherit; } + +.fa-stack-2x { + font-size: 2em; } + +.fa-inverse { + color: #fff; } + +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen +readers do not read off random characters that represent icons */ +.fa-500px:before { + content: "\f26e"; } + +.fa-accessible-icon:before { + content: "\f368"; } + +.fa-accusoft:before { + content: "\f369"; } + +.fa-address-book:before { + content: "\f2b9"; } + +.fa-address-card:before { + content: "\f2bb"; } + +.fa-adjust:before { + content: "\f042"; } + +.fa-adn:before { + content: "\f170"; } + +.fa-adversal:before { + content: "\f36a"; } + +.fa-affiliatetheme:before { + content: "\f36b"; } + +.fa-algolia:before { + content: "\f36c"; } + +.fa-align-center:before { + content: "\f037"; } + +.fa-align-justify:before { + content: "\f039"; } + +.fa-align-left:before { + content: "\f036"; } + +.fa-align-right:before { + content: "\f038"; } + +.fa-allergies:before { + content: "\f461"; } + +.fa-amazon:before { + content: "\f270"; } + +.fa-amazon-pay:before { + content: "\f42c"; } + +.fa-ambulance:before { + content: "\f0f9"; } + +.fa-american-sign-language-interpreting:before { + content: "\f2a3"; } + +.fa-amilia:before { + content: "\f36d"; } + +.fa-anchor:before { + content: "\f13d"; } + +.fa-android:before { + content: "\f17b"; } + +.fa-angellist:before { + content: "\f209"; } + +.fa-angle-double-down:before { + content: "\f103"; } + +.fa-angle-double-left:before { + content: "\f100"; } + +.fa-angle-double-right:before { + content: "\f101"; } + +.fa-angle-double-up:before { + content: "\f102"; } + +.fa-angle-down:before { + content: "\f107"; } + +.fa-angle-left:before { + content: "\f104"; } + +.fa-angle-right:before { + content: "\f105"; } + +.fa-angle-up:before { + content: "\f106"; } + +.fa-angrycreative:before { + content: "\f36e"; } + +.fa-angular:before { + content: "\f420"; } + +.fa-app-store:before { + content: "\f36f"; } + +.fa-app-store-ios:before { + content: "\f370"; } + +.fa-apper:before { + content: "\f371"; } + +.fa-apple:before { + content: "\f179"; } + +.fa-apple-pay:before { + content: "\f415"; } + +.fa-archive:before { + content: "\f187"; } + +.fa-arrow-alt-circle-down:before { + content: "\f358"; } + +.fa-arrow-alt-circle-left:before { + content: "\f359"; } + +.fa-arrow-alt-circle-right:before { + content: "\f35a"; } + +.fa-arrow-alt-circle-up:before { + content: "\f35b"; } + +.fa-arrow-circle-down:before { + content: "\f0ab"; } + +.fa-arrow-circle-left:before { + content: "\f0a8"; } + +.fa-arrow-circle-right:before { + content: "\f0a9"; } + +.fa-arrow-circle-up:before { + content: "\f0aa"; } + +.fa-arrow-down:before { + content: "\f063"; } + +.fa-arrow-left:before { + content: "\f060"; } + +.fa-arrow-right:before { + content: "\f061"; } + +.fa-arrow-up:before { + content: "\f062"; } + +.fa-arrows-alt:before { + content: "\f0b2"; } + +.fa-arrows-alt-h:before { + content: "\f337"; } + +.fa-arrows-alt-v:before { + content: "\f338"; } + +.fa-assistive-listening-systems:before { + content: "\f2a2"; } + +.fa-asterisk:before { + content: "\f069"; } + +.fa-asymmetrik:before { + content: "\f372"; } + +.fa-at:before { + content: "\f1fa"; } + +.fa-audible:before { + content: "\f373"; } + +.fa-audio-description:before { + content: "\f29e"; } + +.fa-autoprefixer:before { + content: "\f41c"; } + +.fa-avianex:before { + content: "\f374"; } + +.fa-aviato:before { + content: "\f421"; } + +.fa-aws:before { + content: "\f375"; } + +.fa-backward:before { + content: "\f04a"; } + +.fa-balance-scale:before { + content: "\f24e"; } + +.fa-ban:before { + content: "\f05e"; } + +.fa-band-aid:before { + content: "\f462"; } + +.fa-bandcamp:before { + content: "\f2d5"; } + +.fa-barcode:before { + content: "\f02a"; } + +.fa-bars:before { + content: "\f0c9"; } + +.fa-baseball-ball:before { + content: "\f433"; } + +.fa-basketball-ball:before { + content: "\f434"; } + +.fa-bath:before { + content: "\f2cd"; } + +.fa-battery-empty:before { + content: "\f244"; } + +.fa-battery-full:before { + content: "\f240"; } + +.fa-battery-half:before { + content: "\f242"; } + +.fa-battery-quarter:before { + content: "\f243"; } + +.fa-battery-three-quarters:before { + content: "\f241"; } + +.fa-bed:before { + content: "\f236"; } + +.fa-beer:before { + content: "\f0fc"; } + +.fa-behance:before { + content: "\f1b4"; } + +.fa-behance-square:before { + content: "\f1b5"; } + +.fa-bell:before { + content: "\f0f3"; } + +.fa-bell-slash:before { + content: "\f1f6"; } + +.fa-bicycle:before { + content: "\f206"; } + +.fa-bimobject:before { + content: "\f378"; } + +.fa-binoculars:before { + content: "\f1e5"; } + +.fa-birthday-cake:before { + content: "\f1fd"; } + +.fa-bitbucket:before { + content: "\f171"; } + +.fa-bitcoin:before { + content: "\f379"; } + +.fa-bity:before { + content: "\f37a"; } + +.fa-black-tie:before { + content: "\f27e"; } + +.fa-blackberry:before { + content: "\f37b"; } + +.fa-blind:before { + content: "\f29d"; } + +.fa-blogger:before { + content: "\f37c"; } + +.fa-blogger-b:before { + content: "\f37d"; } + +.fa-bluetooth:before { + content: "\f293"; } + +.fa-bluetooth-b:before { + content: "\f294"; } + +.fa-bold:before { + content: "\f032"; } + +.fa-bolt:before { + content: "\f0e7"; } + +.fa-bomb:before { + content: "\f1e2"; } + +.fa-book:before { + content: "\f02d"; } + +.fa-bookmark:before { + content: "\f02e"; } + +.fa-bowling-ball:before { + content: "\f436"; } + +.fa-box:before { + content: "\f466"; } + +.fa-box-open:before { + content: "\f49e"; } + +.fa-boxes:before { + content: "\f468"; } + +.fa-braille:before { + content: "\f2a1"; } + +.fa-briefcase:before { + content: "\f0b1"; } + +.fa-briefcase-medical:before { + content: "\f469"; } + +.fa-btc:before { + content: "\f15a"; } + +.fa-bug:before { + content: "\f188"; } + +.fa-building:before { + content: "\f1ad"; } + +.fa-bullhorn:before { + content: "\f0a1"; } + +.fa-bullseye:before { + content: "\f140"; } + +.fa-burn:before { + content: "\f46a"; } + +.fa-buromobelexperte:before { + content: "\f37f"; } + +.fa-bus:before { + content: "\f207"; } + +.fa-buysellads:before { + content: "\f20d"; } + +.fa-calculator:before { + content: "\f1ec"; } + +.fa-calendar:before { + content: "\f133"; } + +.fa-calendar-alt:before { + content: "\f073"; } + +.fa-calendar-check:before { + content: "\f274"; } + +.fa-calendar-minus:before { + content: "\f272"; } + +.fa-calendar-plus:before { + content: "\f271"; } + +.fa-calendar-times:before { + content: "\f273"; } + +.fa-camera:before { + content: "\f030"; } + +.fa-camera-retro:before { + content: "\f083"; } + +.fa-capsules:before { + content: "\f46b"; } + +.fa-car:before { + content: "\f1b9"; } + +.fa-caret-down:before { + content: "\f0d7"; } + +.fa-caret-left:before { + content: "\f0d9"; } + +.fa-caret-right:before { + content: "\f0da"; } + +.fa-caret-square-down:before { + content: "\f150"; } + +.fa-caret-square-left:before { + content: "\f191"; } + +.fa-caret-square-right:before { + content: "\f152"; } + +.fa-caret-square-up:before { + content: "\f151"; } + +.fa-caret-up:before { + content: "\f0d8"; } + +.fa-cart-arrow-down:before { + content: "\f218"; } + +.fa-cart-plus:before { + content: "\f217"; } + +.fa-cc-amazon-pay:before { + content: "\f42d"; } + +.fa-cc-amex:before { + content: "\f1f3"; } + +.fa-cc-apple-pay:before { + content: "\f416"; } + +.fa-cc-diners-club:before { + content: "\f24c"; } + +.fa-cc-discover:before { + content: "\f1f2"; } + +.fa-cc-jcb:before { + content: "\f24b"; } + +.fa-cc-mastercard:before { + content: "\f1f1"; } + +.fa-cc-paypal:before { + content: "\f1f4"; } + +.fa-cc-stripe:before { + content: "\f1f5"; } + +.fa-cc-visa:before { + content: "\f1f0"; } + +.fa-centercode:before { + content: "\f380"; } + +.fa-certificate:before { + content: "\f0a3"; } + +.fa-chart-area:before { + content: "\f1fe"; } + +.fa-chart-bar:before { + content: "\f080"; } + +.fa-chart-line:before { + content: "\f201"; } + +.fa-chart-pie:before { + content: "\f200"; } + +.fa-check:before { + content: "\f00c"; } + +.fa-check-circle:before { + content: "\f058"; } + +.fa-check-square:before { + content: "\f14a"; } + +.fa-chess:before { + content: "\f439"; } + +.fa-chess-bishop:before { + content: "\f43a"; } + +.fa-chess-board:before { + content: "\f43c"; } + +.fa-chess-king:before { + content: "\f43f"; } + +.fa-chess-knight:before { + content: "\f441"; } + +.fa-chess-pawn:before { + content: "\f443"; } + +.fa-chess-queen:before { + content: "\f445"; } + +.fa-chess-rook:before { + content: "\f447"; } + +.fa-chevron-circle-down:before { + content: "\f13a"; } + +.fa-chevron-circle-left:before { + content: "\f137"; } + +.fa-chevron-circle-right:before { + content: "\f138"; } + +.fa-chevron-circle-up:before { + content: "\f139"; } + +.fa-chevron-down:before { + content: "\f078"; } + +.fa-chevron-left:before { + content: "\f053"; } + +.fa-chevron-right:before { + content: "\f054"; } + +.fa-chevron-up:before { + content: "\f077"; } + +.fa-child:before { + content: "\f1ae"; } + +.fa-chrome:before { + content: "\f268"; } + +.fa-circle:before { + content: "\f111"; } + +.fa-circle-notch:before { + content: "\f1ce"; } + +.fa-clipboard:before { + content: "\f328"; } + +.fa-clipboard-check:before { + content: "\f46c"; } + +.fa-clipboard-list:before { + content: "\f46d"; } + +.fa-clock:before { + content: "\f017"; } + +.fa-clone:before { + content: "\f24d"; } + +.fa-closed-captioning:before { + content: "\f20a"; } + +.fa-cloud:before { + content: "\f0c2"; } + +.fa-cloud-download-alt:before { + content: "\f381"; } + +.fa-cloud-upload-alt:before { + content: "\f382"; } + +.fa-cloudscale:before { + content: "\f383"; } + +.fa-cloudsmith:before { + content: "\f384"; } + +.fa-cloudversify:before { + content: "\f385"; } + +.fa-code:before { + content: "\f121"; } + +.fa-code-branch:before { + content: "\f126"; } + +.fa-codepen:before { + content: "\f1cb"; } + +.fa-codiepie:before { + content: "\f284"; } + +.fa-coffee:before { + content: "\f0f4"; } + +.fa-cog:before { + content: "\f013"; } + +.fa-cogs:before { + content: "\f085"; } + +.fa-columns:before { + content: "\f0db"; } + +.fa-comment:before { + content: "\f075"; } + +.fa-comment-alt:before { + content: "\f27a"; } + +.fa-comment-dots:before { + content: "\f4ad"; } + +.fa-comment-slash:before { + content: "\f4b3"; } + +.fa-comments:before { + content: "\f086"; } + +.fa-compass:before { + content: "\f14e"; } + +.fa-compress:before { + content: "\f066"; } + +.fa-connectdevelop:before { + content: "\f20e"; } + +.fa-contao:before { + content: "\f26d"; } + +.fa-copy:before { + content: "\f0c5"; } + +.fa-copyright:before { + content: "\f1f9"; } + +.fa-couch:before { + content: "\f4b8"; } + +.fa-cpanel:before { + content: "\f388"; } + +.fa-creative-commons:before { + content: "\f25e"; } + +.fa-credit-card:before { + content: "\f09d"; } + +.fa-crop:before { + content: "\f125"; } + +.fa-crosshairs:before { + content: "\f05b"; } + +.fa-css3:before { + content: "\f13c"; } + +.fa-css3-alt:before { + content: "\f38b"; } + +.fa-cube:before { + content: "\f1b2"; } + +.fa-cubes:before { + content: "\f1b3"; } + +.fa-cut:before { + content: "\f0c4"; } + +.fa-cuttlefish:before { + content: "\f38c"; } + +.fa-d-and-d:before { + content: "\f38d"; } + +.fa-dashcube:before { + content: "\f210"; } + +.fa-database:before { + content: "\f1c0"; } + +.fa-deaf:before { + content: "\f2a4"; } + +.fa-delicious:before { + content: "\f1a5"; } + +.fa-deploydog:before { + content: "\f38e"; } + +.fa-deskpro:before { + content: "\f38f"; } + +.fa-desktop:before { + content: "\f108"; } + +.fa-deviantart:before { + content: "\f1bd"; } + +.fa-diagnoses:before { + content: "\f470"; } + +.fa-digg:before { + content: "\f1a6"; } + +.fa-digital-ocean:before { + content: "\f391"; } + +.fa-discord:before { + content: "\f392"; } + +.fa-discourse:before { + content: "\f393"; } + +.fa-dna:before { + content: "\f471"; } + +.fa-dochub:before { + content: "\f394"; } + +.fa-docker:before { + content: "\f395"; } + +.fa-dollar-sign:before { + content: "\f155"; } + +.fa-dolly:before { + content: "\f472"; } + +.fa-dolly-flatbed:before { + content: "\f474"; } + +.fa-donate:before { + content: "\f4b9"; } + +.fa-dot-circle:before { + content: "\f192"; } + +.fa-dove:before { + content: "\f4ba"; } + +.fa-download:before { + content: "\f019"; } + +.fa-draft2digital:before { + content: "\f396"; } + +.fa-dribbble:before { + content: "\f17d"; } + +.fa-dribbble-square:before { + content: "\f397"; } + +.fa-dropbox:before { + content: "\f16b"; } + +.fa-drupal:before { + content: "\f1a9"; } + +.fa-dyalog:before { + content: "\f399"; } + +.fa-earlybirds:before { + content: "\f39a"; } + +.fa-edge:before { + content: "\f282"; } + +.fa-edit:before { + content: "\f044"; } + +.fa-eject:before { + content: "\f052"; } + +.fa-elementor:before { + content: "\f430"; } + +.fa-ellipsis-h:before { + content: "\f141"; } + +.fa-ellipsis-v:before { + content: "\f142"; } + +.fa-ember:before { + content: "\f423"; } + +.fa-empire:before { + content: "\f1d1"; } + +.fa-envelope:before { + content: "\f0e0"; } + +.fa-envelope-open:before { + content: "\f2b6"; } + +.fa-envelope-square:before { + content: "\f199"; } + +.fa-envira:before { + content: "\f299"; } + +.fa-eraser:before { + content: "\f12d"; } + +.fa-erlang:before { + content: "\f39d"; } + +.fa-ethereum:before { + content: "\f42e"; } + +.fa-etsy:before { + content: "\f2d7"; } + +.fa-euro-sign:before { + content: "\f153"; } + +.fa-exchange-alt:before { + content: "\f362"; } + +.fa-exclamation:before { + content: "\f12a"; } + +.fa-exclamation-circle:before { + content: "\f06a"; } + +.fa-exclamation-triangle:before { + content: "\f071"; } + +.fa-expand:before { + content: "\f065"; } + +.fa-expand-arrows-alt:before { + content: "\f31e"; } + +.fa-expeditedssl:before { + content: "\f23e"; } + +.fa-external-link-alt:before { + content: "\f35d"; } + +.fa-external-link-square-alt:before { + content: "\f360"; } + +.fa-eye:before { + content: "\f06e"; } + +.fa-eye-dropper:before { + content: "\f1fb"; } + +.fa-eye-slash:before { + content: "\f070"; } + +.fa-facebook:before { + content: "\f09a"; } + +.fa-facebook-f:before { + content: "\f39e"; } + +.fa-facebook-messenger:before { + content: "\f39f"; } + +.fa-facebook-square:before { + content: "\f082"; } + +.fa-fast-backward:before { + content: "\f049"; } + +.fa-fast-forward:before { + content: "\f050"; } + +.fa-fax:before { + content: "\f1ac"; } + +.fa-female:before { + content: "\f182"; } + +.fa-fighter-jet:before { + content: "\f0fb"; } + +.fa-file:before { + content: "\f15b"; } + +.fa-file-alt:before { + content: "\f15c"; } + +.fa-file-archive:before { + content: "\f1c6"; } + +.fa-file-audio:before { + content: "\f1c7"; } + +.fa-file-code:before { + content: "\f1c9"; } + +.fa-file-excel:before { + content: "\f1c3"; } + +.fa-file-image:before { + content: "\f1c5"; } + +.fa-file-medical:before { + content: "\f477"; } + +.fa-file-medical-alt:before { + content: "\f478"; } + +.fa-file-pdf:before { + content: "\f1c1"; } + +.fa-file-powerpoint:before { + content: "\f1c4"; } + +.fa-file-video:before { + content: "\f1c8"; } + +.fa-file-word:before { + content: "\f1c2"; } + +.fa-film:before { + content: "\f008"; } + +.fa-filter:before { + content: "\f0b0"; } + +.fa-fire:before { + content: "\f06d"; } + +.fa-fire-extinguisher:before { + content: "\f134"; } + +.fa-firefox:before { + content: "\f269"; } + +.fa-first-aid:before { + content: "\f479"; } + +.fa-first-order:before { + content: "\f2b0"; } + +.fa-firstdraft:before { + content: "\f3a1"; } + +.fa-flag:before { + content: "\f024"; } + +.fa-flag-checkered:before { + content: "\f11e"; } + +.fa-flask:before { + content: "\f0c3"; } + +.fa-flickr:before { + content: "\f16e"; } + +.fa-flipboard:before { + content: "\f44d"; } + +.fa-fly:before { + content: "\f417"; } + +.fa-folder:before { + content: "\f07b"; } + +.fa-folder-open:before { + content: "\f07c"; } + +.fa-font:before { + content: "\f031"; } + +.fa-font-awesome:before { + content: "\f2b4"; } + +.fa-font-awesome-alt:before { + content: "\f35c"; } + +.fa-font-awesome-flag:before { + content: "\f425"; } + +.fa-fonticons:before { + content: "\f280"; } + +.fa-fonticons-fi:before { + content: "\f3a2"; } + +.fa-football-ball:before { + content: "\f44e"; } + +.fa-fort-awesome:before { + content: "\f286"; } + +.fa-fort-awesome-alt:before { + content: "\f3a3"; } + +.fa-forumbee:before { + content: "\f211"; } + +.fa-forward:before { + content: "\f04e"; } + +.fa-foursquare:before { + content: "\f180"; } + +.fa-free-code-camp:before { + content: "\f2c5"; } + +.fa-freebsd:before { + content: "\f3a4"; } + +.fa-frown:before { + content: "\f119"; } + +.fa-futbol:before { + content: "\f1e3"; } + +.fa-gamepad:before { + content: "\f11b"; } + +.fa-gavel:before { + content: "\f0e3"; } + +.fa-gem:before { + content: "\f3a5"; } + +.fa-genderless:before { + content: "\f22d"; } + +.fa-get-pocket:before { + content: "\f265"; } + +.fa-gg:before { + content: "\f260"; } + +.fa-gg-circle:before { + content: "\f261"; } + +.fa-gift:before { + content: "\f06b"; } + +.fa-git:before { + content: "\f1d3"; } + +.fa-git-square:before { + content: "\f1d2"; } + +.fa-github:before { + content: "\f09b"; } + +.fa-github-alt:before { + content: "\f113"; } + +.fa-github-square:before { + content: "\f092"; } + +.fa-gitkraken:before { + content: "\f3a6"; } + +.fa-gitlab:before { + content: "\f296"; } + +.fa-gitter:before { + content: "\f426"; } + +.fa-glass-martini:before { + content: "\f000"; } + +.fa-glide:before { + content: "\f2a5"; } + +.fa-glide-g:before { + content: "\f2a6"; } + +.fa-globe:before { + content: "\f0ac"; } + +.fa-gofore:before { + content: "\f3a7"; } + +.fa-golf-ball:before { + content: "\f450"; } + +.fa-goodreads:before { + content: "\f3a8"; } + +.fa-goodreads-g:before { + content: "\f3a9"; } + +.fa-google:before { + content: "\f1a0"; } + +.fa-google-drive:before { + content: "\f3aa"; } + +.fa-google-play:before { + content: "\f3ab"; } + +.fa-google-plus:before { + content: "\f2b3"; } + +.fa-google-plus-g:before { + content: "\f0d5"; } + +.fa-google-plus-square:before { + content: "\f0d4"; } + +.fa-google-wallet:before { + content: "\f1ee"; } + +.fa-graduation-cap:before { + content: "\f19d"; } + +.fa-gratipay:before { + content: "\f184"; } + +.fa-grav:before { + content: "\f2d6"; } + +.fa-gripfire:before { + content: "\f3ac"; } + +.fa-grunt:before { + content: "\f3ad"; } + +.fa-gulp:before { + content: "\f3ae"; } + +.fa-h-square:before { + content: "\f0fd"; } + +.fa-hacker-news:before { + content: "\f1d4"; } + +.fa-hacker-news-square:before { + content: "\f3af"; } + +.fa-hand-holding:before { + content: "\f4bd"; } + +.fa-hand-holding-heart:before { + content: "\f4be"; } + +.fa-hand-holding-usd:before { + content: "\f4c0"; } + +.fa-hand-lizard:before { + content: "\f258"; } + +.fa-hand-paper:before { + content: "\f256"; } + +.fa-hand-peace:before { + content: "\f25b"; } + +.fa-hand-point-down:before { + content: "\f0a7"; } + +.fa-hand-point-left:before { + content: "\f0a5"; } + +.fa-hand-point-right:before { + content: "\f0a4"; } + +.fa-hand-point-up:before { + content: "\f0a6"; } + +.fa-hand-pointer:before { + content: "\f25a"; } + +.fa-hand-rock:before { + content: "\f255"; } + +.fa-hand-scissors:before { + content: "\f257"; } + +.fa-hand-spock:before { + content: "\f259"; } + +.fa-hands:before { + content: "\f4c2"; } + +.fa-hands-helping:before { + content: "\f4c4"; } + +.fa-handshake:before { + content: "\f2b5"; } + +.fa-hashtag:before { + content: "\f292"; } + +.fa-hdd:before { + content: "\f0a0"; } + +.fa-heading:before { + content: "\f1dc"; } + +.fa-headphones:before { + content: "\f025"; } + +.fa-heart:before { + content: "\f004"; } + +.fa-heartbeat:before { + content: "\f21e"; } + +.fa-hips:before { + content: "\f452"; } + +.fa-hire-a-helper:before { + content: "\f3b0"; } + +.fa-history:before { + content: "\f1da"; } + +.fa-hockey-puck:before { + content: "\f453"; } + +.fa-home:before { + content: "\f015"; } + +.fa-hooli:before { + content: "\f427"; } + +.fa-hospital:before { + content: "\f0f8"; } + +.fa-hospital-alt:before { + content: "\f47d"; } + +.fa-hospital-symbol:before { + content: "\f47e"; } + +.fa-hotjar:before { + content: "\f3b1"; } + +.fa-hourglass:before { + content: "\f254"; } + +.fa-hourglass-end:before { + content: "\f253"; } + +.fa-hourglass-half:before { + content: "\f252"; } + +.fa-hourglass-start:before { + content: "\f251"; } + +.fa-houzz:before { + content: "\f27c"; } + +.fa-html5:before { + content: "\f13b"; } + +.fa-hubspot:before { + content: "\f3b2"; } + +.fa-i-cursor:before { + content: "\f246"; } + +.fa-id-badge:before { + content: "\f2c1"; } + +.fa-id-card:before { + content: "\f2c2"; } + +.fa-id-card-alt:before { + content: "\f47f"; } + +.fa-image:before { + content: "\f03e"; } + +.fa-images:before { + content: "\f302"; } + +.fa-imdb:before { + content: "\f2d8"; } + +.fa-inbox:before { + content: "\f01c"; } + +.fa-indent:before { + content: "\f03c"; } + +.fa-industry:before { + content: "\f275"; } + +.fa-info:before { + content: "\f129"; } + +.fa-info-circle:before { + content: "\f05a"; } + +.fa-instagram:before { + content: "\f16d"; } + +.fa-internet-explorer:before { + content: "\f26b"; } + +.fa-ioxhost:before { + content: "\f208"; } + +.fa-italic:before { + content: "\f033"; } + +.fa-itunes:before { + content: "\f3b4"; } + +.fa-itunes-note:before { + content: "\f3b5"; } + +.fa-java:before { + content: "\f4e4"; } + +.fa-jenkins:before { + content: "\f3b6"; } + +.fa-joget:before { + content: "\f3b7"; } + +.fa-joomla:before { + content: "\f1aa"; } + +.fa-js:before { + content: "\f3b8"; } + +.fa-js-square:before { + content: "\f3b9"; } + +.fa-jsfiddle:before { + content: "\f1cc"; } + +.fa-key:before { + content: "\f084"; } + +.fa-keyboard:before { + content: "\f11c"; } + +.fa-keycdn:before { + content: "\f3ba"; } + +.fa-kickstarter:before { + content: "\f3bb"; } + +.fa-kickstarter-k:before { + content: "\f3bc"; } + +.fa-korvue:before { + content: "\f42f"; } + +.fa-language:before { + content: "\f1ab"; } + +.fa-laptop:before { + content: "\f109"; } + +.fa-laravel:before { + content: "\f3bd"; } + +.fa-lastfm:before { + content: "\f202"; } + +.fa-lastfm-square:before { + content: "\f203"; } + +.fa-leaf:before { + content: "\f06c"; } + +.fa-leanpub:before { + content: "\f212"; } + +.fa-lemon:before { + content: "\f094"; } + +.fa-less:before { + content: "\f41d"; } + +.fa-level-down-alt:before { + content: "\f3be"; } + +.fa-level-up-alt:before { + content: "\f3bf"; } + +.fa-life-ring:before { + content: "\f1cd"; } + +.fa-lightbulb:before { + content: "\f0eb"; } + +.fa-line:before { + content: "\f3c0"; } + +.fa-link:before { + content: "\f0c1"; } + +.fa-linkedin:before { + content: "\f08c"; } + +.fa-linkedin-in:before { + content: "\f0e1"; } + +.fa-linode:before { + content: "\f2b8"; } + +.fa-linux:before { + content: "\f17c"; } + +.fa-lira-sign:before { + content: "\f195"; } + +.fa-list:before { + content: "\f03a"; } + +.fa-list-alt:before { + content: "\f022"; } + +.fa-list-ol:before { + content: "\f0cb"; } + +.fa-list-ul:before { + content: "\f0ca"; } + +.fa-location-arrow:before { + content: "\f124"; } + +.fa-lock:before { + content: "\f023"; } + +.fa-lock-open:before { + content: "\f3c1"; } + +.fa-long-arrow-alt-down:before { + content: "\f309"; } + +.fa-long-arrow-alt-left:before { + content: "\f30a"; } + +.fa-long-arrow-alt-right:before { + content: "\f30b"; } + +.fa-long-arrow-alt-up:before { + content: "\f30c"; } + +.fa-low-vision:before { + content: "\f2a8"; } + +.fa-lyft:before { + content: "\f3c3"; } + +.fa-magento:before { + content: "\f3c4"; } + +.fa-magic:before { + content: "\f0d0"; } + +.fa-magnet:before { + content: "\f076"; } + +.fa-male:before { + content: "\f183"; } + +.fa-map:before { + content: "\f279"; } + +.fa-map-marker:before { + content: "\f041"; } + +.fa-map-marker-alt:before { + content: "\f3c5"; } + +.fa-map-pin:before { + content: "\f276"; } + +.fa-map-signs:before { + content: "\f277"; } + +.fa-mars:before { + content: "\f222"; } + +.fa-mars-double:before { + content: "\f227"; } + +.fa-mars-stroke:before { + content: "\f229"; } + +.fa-mars-stroke-h:before { + content: "\f22b"; } + +.fa-mars-stroke-v:before { + content: "\f22a"; } + +.fa-maxcdn:before { + content: "\f136"; } + +.fa-medapps:before { + content: "\f3c6"; } + +.fa-medium:before { + content: "\f23a"; } + +.fa-medium-m:before { + content: "\f3c7"; } + +.fa-medkit:before { + content: "\f0fa"; } + +.fa-medrt:before { + content: "\f3c8"; } + +.fa-meetup:before { + content: "\f2e0"; } + +.fa-meh:before { + content: "\f11a"; } + +.fa-mercury:before { + content: "\f223"; } + +.fa-microchip:before { + content: "\f2db"; } + +.fa-microphone:before { + content: "\f130"; } + +.fa-microphone-slash:before { + content: "\f131"; } + +.fa-microsoft:before { + content: "\f3ca"; } + +.fa-minus:before { + content: "\f068"; } + +.fa-minus-circle:before { + content: "\f056"; } + +.fa-minus-square:before { + content: "\f146"; } + +.fa-mix:before { + content: "\f3cb"; } + +.fa-mixcloud:before { + content: "\f289"; } + +.fa-mizuni:before { + content: "\f3cc"; } + +.fa-mobile:before { + content: "\f10b"; } + +.fa-mobile-alt:before { + content: "\f3cd"; } + +.fa-modx:before { + content: "\f285"; } + +.fa-monero:before { + content: "\f3d0"; } + +.fa-money-bill-alt:before { + content: "\f3d1"; } + +.fa-moon:before { + content: "\f186"; } + +.fa-motorcycle:before { + content: "\f21c"; } + +.fa-mouse-pointer:before { + content: "\f245"; } + +.fa-music:before { + content: "\f001"; } + +.fa-napster:before { + content: "\f3d2"; } + +.fa-neuter:before { + content: "\f22c"; } + +.fa-newspaper:before { + content: "\f1ea"; } + +.fa-nintendo-switch:before { + content: "\f418"; } + +.fa-node:before { + content: "\f419"; } + +.fa-node-js:before { + content: "\f3d3"; } + +.fa-notes-medical:before { + content: "\f481"; } + +.fa-npm:before { + content: "\f3d4"; } + +.fa-ns8:before { + content: "\f3d5"; } + +.fa-nutritionix:before { + content: "\f3d6"; } + +.fa-object-group:before { + content: "\f247"; } + +.fa-object-ungroup:before { + content: "\f248"; } + +.fa-odnoklassniki:before { + content: "\f263"; } + +.fa-odnoklassniki-square:before { + content: "\f264"; } + +.fa-opencart:before { + content: "\f23d"; } + +.fa-openid:before { + content: "\f19b"; } + +.fa-opera:before { + content: "\f26a"; } + +.fa-optin-monster:before { + content: "\f23c"; } + +.fa-osi:before { + content: "\f41a"; } + +.fa-outdent:before { + content: "\f03b"; } + +.fa-page4:before { + content: "\f3d7"; } + +.fa-pagelines:before { + content: "\f18c"; } + +.fa-paint-brush:before { + content: "\f1fc"; } + +.fa-palfed:before { + content: "\f3d8"; } + +.fa-pallet:before { + content: "\f482"; } + +.fa-paper-plane:before { + content: "\f1d8"; } + +.fa-paperclip:before { + content: "\f0c6"; } + +.fa-parachute-box:before { + content: "\f4cd"; } + +.fa-paragraph:before { + content: "\f1dd"; } + +.fa-paste:before { + content: "\f0ea"; } + +.fa-patreon:before { + content: "\f3d9"; } + +.fa-pause:before { + content: "\f04c"; } + +.fa-pause-circle:before { + content: "\f28b"; } + +.fa-paw:before { + content: "\f1b0"; } + +.fa-paypal:before { + content: "\f1ed"; } + +.fa-pen-square:before { + content: "\f14b"; } + +.fa-pencil-alt:before { + content: "\f303"; } + +.fa-people-carry:before { + content: "\f4ce"; } + +.fa-percent:before { + content: "\f295"; } + +.fa-periscope:before { + content: "\f3da"; } + +.fa-phabricator:before { + content: "\f3db"; } + +.fa-phoenix-framework:before { + content: "\f3dc"; } + +.fa-phone:before { + content: "\f095"; } + +.fa-phone-slash:before { + content: "\f3dd"; } + +.fa-phone-square:before { + content: "\f098"; } + +.fa-phone-volume:before { + content: "\f2a0"; } + +.fa-php:before { + content: "\f457"; } + +.fa-pied-piper:before { + content: "\f2ae"; } + +.fa-pied-piper-alt:before { + content: "\f1a8"; } + +.fa-pied-piper-hat:before { + content: "\f4e5"; } + +.fa-pied-piper-pp:before { + content: "\f1a7"; } + +.fa-piggy-bank:before { + content: "\f4d3"; } + +.fa-pills:before { + content: "\f484"; } + +.fa-pinterest:before { + content: "\f0d2"; } + +.fa-pinterest-p:before { + content: "\f231"; } + +.fa-pinterest-square:before { + content: "\f0d3"; } + +.fa-plane:before { + content: "\f072"; } + +.fa-play:before { + content: "\f04b"; } + +.fa-play-circle:before { + content: "\f144"; } + +.fa-playstation:before { + content: "\f3df"; } + +.fa-plug:before { + content: "\f1e6"; } + +.fa-plus:before { + content: "\f067"; } + +.fa-plus-circle:before { + content: "\f055"; } + +.fa-plus-square:before { + content: "\f0fe"; } + +.fa-podcast:before { + content: "\f2ce"; } + +.fa-poo:before { + content: "\f2fe"; } + +.fa-pound-sign:before { + content: "\f154"; } + +.fa-power-off:before { + content: "\f011"; } + +.fa-prescription-bottle:before { + content: "\f485"; } + +.fa-prescription-bottle-alt:before { + content: "\f486"; } + +.fa-print:before { + content: "\f02f"; } + +.fa-procedures:before { + content: "\f487"; } + +.fa-product-hunt:before { + content: "\f288"; } + +.fa-pushed:before { + content: "\f3e1"; } + +.fa-puzzle-piece:before { + content: "\f12e"; } + +.fa-python:before { + content: "\f3e2"; } + +.fa-qq:before { + content: "\f1d6"; } + +.fa-qrcode:before { + content: "\f029"; } + +.fa-question:before { + content: "\f128"; } + +.fa-question-circle:before { + content: "\f059"; } + +.fa-quidditch:before { + content: "\f458"; } + +.fa-quinscape:before { + content: "\f459"; } + +.fa-quora:before { + content: "\f2c4"; } + +.fa-quote-left:before { + content: "\f10d"; } + +.fa-quote-right:before { + content: "\f10e"; } + +.fa-random:before { + content: "\f074"; } + +.fa-ravelry:before { + content: "\f2d9"; } + +.fa-react:before { + content: "\f41b"; } + +.fa-readme:before { + content: "\f4d5"; } + +.fa-rebel:before { + content: "\f1d0"; } + +.fa-recycle:before { + content: "\f1b8"; } + +.fa-red-river:before { + content: "\f3e3"; } + +.fa-reddit:before { + content: "\f1a1"; } + +.fa-reddit-alien:before { + content: "\f281"; } + +.fa-reddit-square:before { + content: "\f1a2"; } + +.fa-redo:before { + content: "\f01e"; } + +.fa-redo-alt:before { + content: "\f2f9"; } + +.fa-registered:before { + content: "\f25d"; } + +.fa-rendact:before { + content: "\f3e4"; } + +.fa-renren:before { + content: "\f18b"; } + +.fa-reply:before { + content: "\f3e5"; } + +.fa-reply-all:before { + content: "\f122"; } + +.fa-replyd:before { + content: "\f3e6"; } + +.fa-resolving:before { + content: "\f3e7"; } + +.fa-retweet:before { + content: "\f079"; } + +.fa-ribbon:before { + content: "\f4d6"; } + +.fa-road:before { + content: "\f018"; } + +.fa-rocket:before { + content: "\f135"; } + +.fa-rocketchat:before { + content: "\f3e8"; } + +.fa-rockrms:before { + content: "\f3e9"; } + +.fa-rss:before { + content: "\f09e"; } + +.fa-rss-square:before { + content: "\f143"; } + +.fa-ruble-sign:before { + content: "\f158"; } + +.fa-rupee-sign:before { + content: "\f156"; } + +.fa-safari:before { + content: "\f267"; } + +.fa-sass:before { + content: "\f41e"; } + +.fa-save:before { + content: "\f0c7"; } + +.fa-schlix:before { + content: "\f3ea"; } + +.fa-scribd:before { + content: "\f28a"; } + +.fa-search:before { + content: "\f002"; } + +.fa-search-minus:before { + content: "\f010"; } + +.fa-search-plus:before { + content: "\f00e"; } + +.fa-searchengin:before { + content: "\f3eb"; } + +.fa-seedling:before { + content: "\f4d8"; } + +.fa-sellcast:before { + content: "\f2da"; } + +.fa-sellsy:before { + content: "\f213"; } + +.fa-server:before { + content: "\f233"; } + +.fa-servicestack:before { + content: "\f3ec"; } + +.fa-share:before { + content: "\f064"; } + +.fa-share-alt:before { + content: "\f1e0"; } + +.fa-share-alt-square:before { + content: "\f1e1"; } + +.fa-share-square:before { + content: "\f14d"; } + +.fa-shekel-sign:before { + content: "\f20b"; } + +.fa-shield-alt:before { + content: "\f3ed"; } + +.fa-ship:before { + content: "\f21a"; } + +.fa-shipping-fast:before { + content: "\f48b"; } + +.fa-shirtsinbulk:before { + content: "\f214"; } + +.fa-shopping-bag:before { + content: "\f290"; } + +.fa-shopping-basket:before { + content: "\f291"; } + +.fa-shopping-cart:before { + content: "\f07a"; } + +.fa-shower:before { + content: "\f2cc"; } + +.fa-sign:before { + content: "\f4d9"; } + +.fa-sign-in-alt:before { + content: "\f2f6"; } + +.fa-sign-language:before { + content: "\f2a7"; } + +.fa-sign-out-alt:before { + content: "\f2f5"; } + +.fa-signal:before { + content: "\f012"; } + +.fa-simplybuilt:before { + content: "\f215"; } + +.fa-sistrix:before { + content: "\f3ee"; } + +.fa-sitemap:before { + content: "\f0e8"; } + +.fa-skyatlas:before { + content: "\f216"; } + +.fa-skype:before { + content: "\f17e"; } + +.fa-slack:before { + content: "\f198"; } + +.fa-slack-hash:before { + content: "\f3ef"; } + +.fa-sliders-h:before { + content: "\f1de"; } + +.fa-slideshare:before { + content: "\f1e7"; } + +.fa-smile:before { + content: "\f118"; } + +.fa-smoking:before { + content: "\f48d"; } + +.fa-snapchat:before { + content: "\f2ab"; } + +.fa-snapchat-ghost:before { + content: "\f2ac"; } + +.fa-snapchat-square:before { + content: "\f2ad"; } + +.fa-snowflake:before { + content: "\f2dc"; } + +.fa-sort:before { + content: "\f0dc"; } + +.fa-sort-alpha-down:before { + content: "\f15d"; } + +.fa-sort-alpha-up:before { + content: "\f15e"; } + +.fa-sort-amount-down:before { + content: "\f160"; } + +.fa-sort-amount-up:before { + content: "\f161"; } + +.fa-sort-down:before { + content: "\f0dd"; } + +.fa-sort-numeric-down:before { + content: "\f162"; } + +.fa-sort-numeric-up:before { + content: "\f163"; } + +.fa-sort-up:before { + content: "\f0de"; } + +.fa-soundcloud:before { + content: "\f1be"; } + +.fa-space-shuttle:before { + content: "\f197"; } + +.fa-speakap:before { + content: "\f3f3"; } + +.fa-spinner:before { + content: "\f110"; } + +.fa-spotify:before { + content: "\f1bc"; } + +.fa-square:before { + content: "\f0c8"; } + +.fa-square-full:before { + content: "\f45c"; } + +.fa-stack-exchange:before { + content: "\f18d"; } + +.fa-stack-overflow:before { + content: "\f16c"; } + +.fa-star:before { + content: "\f005"; } + +.fa-star-half:before { + content: "\f089"; } + +.fa-staylinked:before { + content: "\f3f5"; } + +.fa-steam:before { + content: "\f1b6"; } + +.fa-steam-square:before { + content: "\f1b7"; } + +.fa-steam-symbol:before { + content: "\f3f6"; } + +.fa-step-backward:before { + content: "\f048"; } + +.fa-step-forward:before { + content: "\f051"; } + +.fa-stethoscope:before { + content: "\f0f1"; } + +.fa-sticker-mule:before { + content: "\f3f7"; } + +.fa-sticky-note:before { + content: "\f249"; } + +.fa-stop:before { + content: "\f04d"; } + +.fa-stop-circle:before { + content: "\f28d"; } + +.fa-stopwatch:before { + content: "\f2f2"; } + +.fa-strava:before { + content: "\f428"; } + +.fa-street-view:before { + content: "\f21d"; } + +.fa-strikethrough:before { + content: "\f0cc"; } + +.fa-stripe:before { + content: "\f429"; } + +.fa-stripe-s:before { + content: "\f42a"; } + +.fa-studiovinari:before { + content: "\f3f8"; } + +.fa-stumbleupon:before { + content: "\f1a4"; } + +.fa-stumbleupon-circle:before { + content: "\f1a3"; } + +.fa-subscript:before { + content: "\f12c"; } + +.fa-subway:before { + content: "\f239"; } + +.fa-suitcase:before { + content: "\f0f2"; } + +.fa-sun:before { + content: "\f185"; } + +.fa-superpowers:before { + content: "\f2dd"; } + +.fa-superscript:before { + content: "\f12b"; } + +.fa-supple:before { + content: "\f3f9"; } + +.fa-sync:before { + content: "\f021"; } + +.fa-sync-alt:before { + content: "\f2f1"; } + +.fa-syringe:before { + content: "\f48e"; } + +.fa-table:before { + content: "\f0ce"; } + +.fa-table-tennis:before { + content: "\f45d"; } + +.fa-tablet:before { + content: "\f10a"; } + +.fa-tablet-alt:before { + content: "\f3fa"; } + +.fa-tablets:before { + content: "\f490"; } + +.fa-tachometer-alt:before { + content: "\f3fd"; } + +.fa-tag:before { + content: "\f02b"; } + +.fa-tags:before { + content: "\f02c"; } + +.fa-tape:before { + content: "\f4db"; } + +.fa-tasks:before { + content: "\f0ae"; } + +.fa-taxi:before { + content: "\f1ba"; } + +.fa-telegram:before { + content: "\f2c6"; } + +.fa-telegram-plane:before { + content: "\f3fe"; } + +.fa-tencent-weibo:before { + content: "\f1d5"; } + +.fa-terminal:before { + content: "\f120"; } + +.fa-text-height:before { + content: "\f034"; } + +.fa-text-width:before { + content: "\f035"; } + +.fa-th:before { + content: "\f00a"; } + +.fa-th-large:before { + content: "\f009"; } + +.fa-th-list:before { + content: "\f00b"; } + +.fa-themeisle:before { + content: "\f2b2"; } + +.fa-thermometer:before { + content: "\f491"; } + +.fa-thermometer-empty:before { + content: "\f2cb"; } + +.fa-thermometer-full:before { + content: "\f2c7"; } + +.fa-thermometer-half:before { + content: "\f2c9"; } + +.fa-thermometer-quarter:before { + content: "\f2ca"; } + +.fa-thermometer-three-quarters:before { + content: "\f2c8"; } + +.fa-thumbs-down:before { + content: "\f165"; } + +.fa-thumbs-up:before { + content: "\f164"; } + +.fa-thumbtack:before { + content: "\f08d"; } + +.fa-ticket-alt:before { + content: "\f3ff"; } + +.fa-times:before { + content: "\f00d"; } + +.fa-times-circle:before { + content: "\f057"; } + +.fa-tint:before { + content: "\f043"; } + +.fa-toggle-off:before { + content: "\f204"; } + +.fa-toggle-on:before { + content: "\f205"; } + +.fa-trademark:before { + content: "\f25c"; } + +.fa-train:before { + content: "\f238"; } + +.fa-transgender:before { + content: "\f224"; } + +.fa-transgender-alt:before { + content: "\f225"; } + +.fa-trash:before { + content: "\f1f8"; } + +.fa-trash-alt:before { + content: "\f2ed"; } + +.fa-tree:before { + content: "\f1bb"; } + +.fa-trello:before { + content: "\f181"; } + +.fa-tripadvisor:before { + content: "\f262"; } + +.fa-trophy:before { + content: "\f091"; } + +.fa-truck:before { + content: "\f0d1"; } + +.fa-truck-loading:before { + content: "\f4de"; } + +.fa-truck-moving:before { + content: "\f4df"; } + +.fa-tty:before { + content: "\f1e4"; } + +.fa-tumblr:before { + content: "\f173"; } + +.fa-tumblr-square:before { + content: "\f174"; } + +.fa-tv:before { + content: "\f26c"; } + +.fa-twitch:before { + content: "\f1e8"; } + +.fa-twitter:before { + content: "\f099"; } + +.fa-twitter-square:before { + content: "\f081"; } + +.fa-typo3:before { + content: "\f42b"; } + +.fa-uber:before { + content: "\f402"; } + +.fa-uikit:before { + content: "\f403"; } + +.fa-umbrella:before { + content: "\f0e9"; } + +.fa-underline:before { + content: "\f0cd"; } + +.fa-undo:before { + content: "\f0e2"; } + +.fa-undo-alt:before { + content: "\f2ea"; } + +.fa-uniregistry:before { + content: "\f404"; } + +.fa-universal-access:before { + content: "\f29a"; } + +.fa-university:before { + content: "\f19c"; } + +.fa-unlink:before { + content: "\f127"; } + +.fa-unlock:before { + content: "\f09c"; } + +.fa-unlock-alt:before { + content: "\f13e"; } + +.fa-untappd:before { + content: "\f405"; } + +.fa-upload:before { + content: "\f093"; } + +.fa-usb:before { + content: "\f287"; } + +.fa-user:before { + content: "\f007"; } + +.fa-user-circle:before { + content: "\f2bd"; } + +.fa-user-md:before { + content: "\f0f0"; } + +.fa-user-plus:before { + content: "\f234"; } + +.fa-user-secret:before { + content: "\f21b"; } + +.fa-user-times:before { + content: "\f235"; } + +.fa-users:before { + content: "\f0c0"; } + +.fa-ussunnah:before { + content: "\f407"; } + +.fa-utensil-spoon:before { + content: "\f2e5"; } + +.fa-utensils:before { + content: "\f2e7"; } + +.fa-vaadin:before { + content: "\f408"; } + +.fa-venus:before { + content: "\f221"; } + +.fa-venus-double:before { + content: "\f226"; } + +.fa-venus-mars:before { + content: "\f228"; } + +.fa-viacoin:before { + content: "\f237"; } + +.fa-viadeo:before { + content: "\f2a9"; } + +.fa-viadeo-square:before { + content: "\f2aa"; } + +.fa-vial:before { + content: "\f492"; } + +.fa-vials:before { + content: "\f493"; } + +.fa-viber:before { + content: "\f409"; } + +.fa-video:before { + content: "\f03d"; } + +.fa-video-slash:before { + content: "\f4e2"; } + +.fa-vimeo:before { + content: "\f40a"; } + +.fa-vimeo-square:before { + content: "\f194"; } + +.fa-vimeo-v:before { + content: "\f27d"; } + +.fa-vine:before { + content: "\f1ca"; } + +.fa-vk:before { + content: "\f189"; } + +.fa-vnv:before { + content: "\f40b"; } + +.fa-volleyball-ball:before { + content: "\f45f"; } + +.fa-volume-down:before { + content: "\f027"; } + +.fa-volume-off:before { + content: "\f026"; } + +.fa-volume-up:before { + content: "\f028"; } + +.fa-vuejs:before { + content: "\f41f"; } + +.fa-warehouse:before { + content: "\f494"; } + +.fa-weibo:before { + content: "\f18a"; } + +.fa-weight:before { + content: "\f496"; } + +.fa-weixin:before { + content: "\f1d7"; } + +.fa-whatsapp:before { + content: "\f232"; } + +.fa-whatsapp-square:before { + content: "\f40c"; } + +.fa-wheelchair:before { + content: "\f193"; } + +.fa-whmcs:before { + content: "\f40d"; } + +.fa-wifi:before { + content: "\f1eb"; } + +.fa-wikipedia-w:before { + content: "\f266"; } + +.fa-window-close:before { + content: "\f410"; } + +.fa-window-maximize:before { + content: "\f2d0"; } + +.fa-window-minimize:before { + content: "\f2d1"; } + +.fa-window-restore:before { + content: "\f2d2"; } + +.fa-windows:before { + content: "\f17a"; } + +.fa-wine-glass:before { + content: "\f4e3"; } + +.fa-won-sign:before { + content: "\f159"; } + +.fa-wordpress:before { + content: "\f19a"; } + +.fa-wordpress-simple:before { + content: "\f411"; } + +.fa-wpbeginner:before { + content: "\f297"; } + +.fa-wpexplorer:before { + content: "\f2de"; } + +.fa-wpforms:before { + content: "\f298"; } + +.fa-wrench:before { + content: "\f0ad"; } + +.fa-x-ray:before { + content: "\f497"; } + +.fa-xbox:before { + content: "\f412"; } + +.fa-xing:before { + content: "\f168"; } + +.fa-xing-square:before { + content: "\f169"; } + +.fa-y-combinator:before { + content: "\f23b"; } + +.fa-yahoo:before { + content: "\f19e"; } + +.fa-yandex:before { + content: "\f413"; } + +.fa-yandex-international:before { + content: "\f414"; } + +.fa-yelp:before { + content: "\f1e9"; } + +.fa-yen-sign:before { + content: "\f157"; } + +.fa-yoast:before { + content: "\f2b1"; } + +.fa-youtube:before { + content: "\f167"; } + +.fa-youtube-square:before { + content: "\f431"; } + +.sr-only { + border: 0; + clip: rect(0, 0, 0, 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; } + +.sr-only-focusable:active, .sr-only-focusable:focus { + clip: auto; + height: auto; + margin: 0; + overflow: visible; + position: static; + width: auto; } +@font-face { + font-family: 'Font Awesome 5 Brands'; + font-style: normal; + font-weight: normal; + src: url("../webfonts/fa-brands-400.eot"); + src: url("../webfonts/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.woff") format("woff"), url("../webfonts/fa-brands-400.ttf") format("truetype"), url("../webfonts/fa-brands-400.svg#fontawesome") format("svg"); } + +.fab { + font-family: 'Font Awesome 5 Brands'; } +@font-face { + font-family: 'Font Awesome 5 Free'; + font-style: normal; + font-weight: 400; + src: url("../webfonts/fa-regular-400.eot"); + src: url("../webfonts/fa-regular-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.woff") format("woff"), url("../webfonts/fa-regular-400.ttf") format("truetype"), url("../webfonts/fa-regular-400.svg#fontawesome") format("svg"); } + +.far { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } +@font-face { + font-family: 'Font Awesome 5 Free'; + font-style: normal; + font-weight: 900; + src: url("../webfonts/fa-solid-900.eot"); + src: url("../webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.woff") format("woff"), url("../webfonts/fa-solid-900.ttf") format("truetype"), url("../webfonts/fa-solid-900.svg#fontawesome") format("svg"); } + +.fa, +.fas { + font-family: 'Font Awesome 5 Free'; + font-weight: 900; } diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/css/fontawesome-all.min.css b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/css/fontawesome-all.min.css new file mode 100644 index 000000000000..0c0e4e00d5dc --- /dev/null +++ b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/css/fontawesome-all.min.css @@ -0,0 +1,5 @@ +/*! + * Font Awesome Free 5.0.10 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +.fa,.fab,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{animation:a 2s infinite linear}.fa-pulse{animation:a 1s infinite steps(8)}@keyframes a{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-aws:before{content:"\f375"}.fa-backward:before{content:"\f04a"}.fa-balance-scale:before{content:"\f24e"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bicycle:before{content:"\f206"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blind:before{content:"\f29d"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-btc:before{content:"\f15a"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-certificate:before{content:"\f0a3"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-square:before{content:"\f14a"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-credit-card:before{content:"\f09d"}.fa-crop:before{content:"\f125"}.fa-crosshairs:before{content:"\f05b"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-delicious:before{content:"\f1a5"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-deviantart:before{content:"\f1bd"}.fa-diagnoses:before{content:"\f470"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drupal:before{content:"\f1a9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-fax:before{content:"\f1ac"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-excel:before{content:"\f1c3"}.fa-file-image:before{content:"\f1c5"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fire:before{content:"\f06d"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-firstdraft:before{content:"\f3a1"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frown:before{content:"\f119"}.fa-futbol:before{content:"\f1e3"}.fa-gamepad:before{content:"\f11b"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-gift:before{content:"\f06b"}.fa-git:before{content:"\f1d3"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-martini:before{content:"\f000"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-handshake:before{content:"\f2b5"}.fa-hashtag:before{content:"\f292"}.fa-hdd:before{content:"\f0a0"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-heart:before{content:"\f004"}.fa-heartbeat:before{content:"\f21e"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-houzz:before{content:"\f27c"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-internet-explorer:before{content:"\f26b"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jenkins:before{content:"\f3b6"}.fa-joget:before{content:"\f3b7"}.fa-joomla:before{content:"\f1aa"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-key:before{content:"\f084"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-korvue:before{content:"\f42f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-male:before{content:"\f183"}.fa-map:before{content:"\f279"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-maxcdn:before{content:"\f136"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-meh:before{content:"\f11a"}.fa-mercury:before{content:"\f223"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-moon:before{content:"\f186"}.fa-motorcycle:before{content:"\f21c"}.fa-mouse-pointer:before{content:"\f245"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nintendo-switch:before{content:"\f418"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-osi:before{content:"\f41a"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-paint-brush:before{content:"\f1fc"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-people-carry:before{content:"\f4ce"}.fa-percent:before{content:"\f295"}.fa-periscope:before{content:"\f3da"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phone:before{content:"\f095"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-volume:before{content:"\f2a0"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-plane:before{content:"\f072"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poo:before{content:"\f2fe"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-random:before{content:"\f074"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-rendact:before{content:"\f3e4"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-resolving:before{content:"\f3e7"}.fa-retweet:before{content:"\f079"}.fa-ribbon:before{content:"\f4d6"}.fa-road:before{content:"\f018"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-rupee-sign:before{content:"\f156"}.fa-safari:before{content:"\f267"}.fa-sass:before{content:"\f41e"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-scribd:before{content:"\f28a"}.fa-search:before{content:"\f002"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shower:before{content:"\f2cc"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smoking:before{content:"\f48d"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowflake:before{content:"\f2dc"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-spinner:before{content:"\f110"}.fa-spotify:before{content:"\f1bc"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-star:before{content:"\f005"}.fa-star-half:before{content:"\f089"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-strava:before{content:"\f428"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-trademark:before{content:"\f25c"}.fa-train:before{content:"\f238"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-moving:before{content:"\f4df"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-uikit:before{content:"\f403"}.fa-umbrella:before{content:"\f0e9"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-circle:before{content:"\f2bd"}.fa-user-md:before{content:"\f0f0"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vuejs:before{content:"\f41f"}.fa-warehouse:before{content:"\f494"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-glass:before{content:"\f4e3"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:Font Awesome\ 5 Brands;font-style:normal;font-weight:400;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:Font Awesome\ 5 Brands}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:400;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-weight:400}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:900;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:Font Awesome\ 5 Free}.fa,.fas{font-weight:900} \ No newline at end of file diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_animated.less b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_animated.less new file mode 100644 index 000000000000..704ec9510374 --- /dev/null +++ b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_animated.less @@ -0,0 +1,19 @@ +// Animated Icons +// -------------------------- + +.@{fa-css-prefix}-spin { + animation: fa-spin 2s infinite linear; +} + +.@{fa-css-prefix}-pulse { + animation: fa-spin 1s infinite steps(8); +} + +@keyframes fa-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_bordered-pulled.less b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_bordered-pulled.less new file mode 100644 index 000000000000..29a356b423de --- /dev/null +++ b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_bordered-pulled.less @@ -0,0 +1,16 @@ +// Bordered & Pulled +// ------------------------- + +.@{fa-css-prefix}-border { + border-radius: .1em; + border: solid .08em @fa-border-color; + padding: .2em .25em .15em; +} + +.@{fa-css-prefix}-pull-left { float: left; } +.@{fa-css-prefix}-pull-right { float: right; } + +.@{fa-css-prefix}, .fas, .far, .fal, .fab { + &.@{fa-css-prefix}-pull-left { margin-right: .3em; } + &.@{fa-css-prefix}-pull-right { margin-left: .3em; } +} diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_core.less b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_core.less new file mode 100644 index 000000000000..82031d65235d --- /dev/null +++ b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_core.less @@ -0,0 +1,12 @@ +// Base Class Definition +// ------------------------- + +.@{fa-css-prefix}, .fas, .far, .fal, .fab { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; +} diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_fixed-width.less b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_fixed-width.less new file mode 100644 index 000000000000..be817c637538 --- /dev/null +++ b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_fixed-width.less @@ -0,0 +1,6 @@ +// Fixed Width Icons +// ------------------------- +.@{fa-css-prefix}-fw { + text-align: center; + width: (20em / 16); +} diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_icons.less b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_icons.less new file mode 100644 index 000000000000..ad23e33180a1 --- /dev/null +++ b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_icons.less @@ -0,0 +1,878 @@ +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ + +.@{fa-css-prefix}-500px:before { content: @fa-var-500px; } +.@{fa-css-prefix}-accessible-icon:before { content: @fa-var-accessible-icon; } +.@{fa-css-prefix}-accusoft:before { content: @fa-var-accusoft; } +.@{fa-css-prefix}-address-book:before { content: @fa-var-address-book; } +.@{fa-css-prefix}-address-card:before { content: @fa-var-address-card; } +.@{fa-css-prefix}-adjust:before { content: @fa-var-adjust; } +.@{fa-css-prefix}-adn:before { content: @fa-var-adn; } +.@{fa-css-prefix}-adversal:before { content: @fa-var-adversal; } +.@{fa-css-prefix}-affiliatetheme:before { content: @fa-var-affiliatetheme; } +.@{fa-css-prefix}-algolia:before { content: @fa-var-algolia; } +.@{fa-css-prefix}-align-center:before { content: @fa-var-align-center; } +.@{fa-css-prefix}-align-justify:before { content: @fa-var-align-justify; } +.@{fa-css-prefix}-align-left:before { content: @fa-var-align-left; } +.@{fa-css-prefix}-align-right:before { content: @fa-var-align-right; } +.@{fa-css-prefix}-allergies:before { content: @fa-var-allergies; } +.@{fa-css-prefix}-amazon:before { content: @fa-var-amazon; } +.@{fa-css-prefix}-amazon-pay:before { content: @fa-var-amazon-pay; } +.@{fa-css-prefix}-ambulance:before { content: @fa-var-ambulance; } +.@{fa-css-prefix}-american-sign-language-interpreting:before { content: @fa-var-american-sign-language-interpreting; } +.@{fa-css-prefix}-amilia:before { content: @fa-var-amilia; } +.@{fa-css-prefix}-anchor:before { content: @fa-var-anchor; } +.@{fa-css-prefix}-android:before { content: @fa-var-android; } +.@{fa-css-prefix}-angellist:before { content: @fa-var-angellist; } +.@{fa-css-prefix}-angle-double-down:before { content: @fa-var-angle-double-down; } +.@{fa-css-prefix}-angle-double-left:before { content: @fa-var-angle-double-left; } +.@{fa-css-prefix}-angle-double-right:before { content: @fa-var-angle-double-right; } +.@{fa-css-prefix}-angle-double-up:before { content: @fa-var-angle-double-up; } +.@{fa-css-prefix}-angle-down:before { content: @fa-var-angle-down; } +.@{fa-css-prefix}-angle-left:before { content: @fa-var-angle-left; } +.@{fa-css-prefix}-angle-right:before { content: @fa-var-angle-right; } +.@{fa-css-prefix}-angle-up:before { content: @fa-var-angle-up; } +.@{fa-css-prefix}-angrycreative:before { content: @fa-var-angrycreative; } +.@{fa-css-prefix}-angular:before { content: @fa-var-angular; } +.@{fa-css-prefix}-app-store:before { content: @fa-var-app-store; } +.@{fa-css-prefix}-app-store-ios:before { content: @fa-var-app-store-ios; } +.@{fa-css-prefix}-apper:before { content: @fa-var-apper; } +.@{fa-css-prefix}-apple:before { content: @fa-var-apple; } +.@{fa-css-prefix}-apple-pay:before { content: @fa-var-apple-pay; } +.@{fa-css-prefix}-archive:before { content: @fa-var-archive; } +.@{fa-css-prefix}-arrow-alt-circle-down:before { content: @fa-var-arrow-alt-circle-down; } +.@{fa-css-prefix}-arrow-alt-circle-left:before { content: @fa-var-arrow-alt-circle-left; } +.@{fa-css-prefix}-arrow-alt-circle-right:before { content: @fa-var-arrow-alt-circle-right; } +.@{fa-css-prefix}-arrow-alt-circle-up:before { content: @fa-var-arrow-alt-circle-up; } +.@{fa-css-prefix}-arrow-circle-down:before { content: @fa-var-arrow-circle-down; } +.@{fa-css-prefix}-arrow-circle-left:before { content: @fa-var-arrow-circle-left; } +.@{fa-css-prefix}-arrow-circle-right:before { content: @fa-var-arrow-circle-right; } +.@{fa-css-prefix}-arrow-circle-up:before { content: @fa-var-arrow-circle-up; } +.@{fa-css-prefix}-arrow-down:before { content: @fa-var-arrow-down; } +.@{fa-css-prefix}-arrow-left:before { content: @fa-var-arrow-left; } +.@{fa-css-prefix}-arrow-right:before { content: @fa-var-arrow-right; } +.@{fa-css-prefix}-arrow-up:before { content: @fa-var-arrow-up; } +.@{fa-css-prefix}-arrows-alt:before { content: @fa-var-arrows-alt; } +.@{fa-css-prefix}-arrows-alt-h:before { content: @fa-var-arrows-alt-h; } +.@{fa-css-prefix}-arrows-alt-v:before { content: @fa-var-arrows-alt-v; } +.@{fa-css-prefix}-assistive-listening-systems:before { content: @fa-var-assistive-listening-systems; } +.@{fa-css-prefix}-asterisk:before { content: @fa-var-asterisk; } +.@{fa-css-prefix}-asymmetrik:before { content: @fa-var-asymmetrik; } +.@{fa-css-prefix}-at:before { content: @fa-var-at; } +.@{fa-css-prefix}-audible:before { content: @fa-var-audible; } +.@{fa-css-prefix}-audio-description:before { content: @fa-var-audio-description; } +.@{fa-css-prefix}-autoprefixer:before { content: @fa-var-autoprefixer; } +.@{fa-css-prefix}-avianex:before { content: @fa-var-avianex; } +.@{fa-css-prefix}-aviato:before { content: @fa-var-aviato; } +.@{fa-css-prefix}-aws:before { content: @fa-var-aws; } +.@{fa-css-prefix}-backward:before { content: @fa-var-backward; } +.@{fa-css-prefix}-balance-scale:before { content: @fa-var-balance-scale; } +.@{fa-css-prefix}-ban:before { content: @fa-var-ban; } +.@{fa-css-prefix}-band-aid:before { content: @fa-var-band-aid; } +.@{fa-css-prefix}-bandcamp:before { content: @fa-var-bandcamp; } +.@{fa-css-prefix}-barcode:before { content: @fa-var-barcode; } +.@{fa-css-prefix}-bars:before { content: @fa-var-bars; } +.@{fa-css-prefix}-baseball-ball:before { content: @fa-var-baseball-ball; } +.@{fa-css-prefix}-basketball-ball:before { content: @fa-var-basketball-ball; } +.@{fa-css-prefix}-bath:before { content: @fa-var-bath; } +.@{fa-css-prefix}-battery-empty:before { content: @fa-var-battery-empty; } +.@{fa-css-prefix}-battery-full:before { content: @fa-var-battery-full; } +.@{fa-css-prefix}-battery-half:before { content: @fa-var-battery-half; } +.@{fa-css-prefix}-battery-quarter:before { content: @fa-var-battery-quarter; } +.@{fa-css-prefix}-battery-three-quarters:before { content: @fa-var-battery-three-quarters; } +.@{fa-css-prefix}-bed:before { content: @fa-var-bed; } +.@{fa-css-prefix}-beer:before { content: @fa-var-beer; } +.@{fa-css-prefix}-behance:before { content: @fa-var-behance; } +.@{fa-css-prefix}-behance-square:before { content: @fa-var-behance-square; } +.@{fa-css-prefix}-bell:before { content: @fa-var-bell; } +.@{fa-css-prefix}-bell-slash:before { content: @fa-var-bell-slash; } +.@{fa-css-prefix}-bicycle:before { content: @fa-var-bicycle; } +.@{fa-css-prefix}-bimobject:before { content: @fa-var-bimobject; } +.@{fa-css-prefix}-binoculars:before { content: @fa-var-binoculars; } +.@{fa-css-prefix}-birthday-cake:before { content: @fa-var-birthday-cake; } +.@{fa-css-prefix}-bitbucket:before { content: @fa-var-bitbucket; } +.@{fa-css-prefix}-bitcoin:before { content: @fa-var-bitcoin; } +.@{fa-css-prefix}-bity:before { content: @fa-var-bity; } +.@{fa-css-prefix}-black-tie:before { content: @fa-var-black-tie; } +.@{fa-css-prefix}-blackberry:before { content: @fa-var-blackberry; } +.@{fa-css-prefix}-blind:before { content: @fa-var-blind; } +.@{fa-css-prefix}-blogger:before { content: @fa-var-blogger; } +.@{fa-css-prefix}-blogger-b:before { content: @fa-var-blogger-b; } +.@{fa-css-prefix}-bluetooth:before { content: @fa-var-bluetooth; } +.@{fa-css-prefix}-bluetooth-b:before { content: @fa-var-bluetooth-b; } +.@{fa-css-prefix}-bold:before { content: @fa-var-bold; } +.@{fa-css-prefix}-bolt:before { content: @fa-var-bolt; } +.@{fa-css-prefix}-bomb:before { content: @fa-var-bomb; } +.@{fa-css-prefix}-book:before { content: @fa-var-book; } +.@{fa-css-prefix}-bookmark:before { content: @fa-var-bookmark; } +.@{fa-css-prefix}-bowling-ball:before { content: @fa-var-bowling-ball; } +.@{fa-css-prefix}-box:before { content: @fa-var-box; } +.@{fa-css-prefix}-box-open:before { content: @fa-var-box-open; } +.@{fa-css-prefix}-boxes:before { content: @fa-var-boxes; } +.@{fa-css-prefix}-braille:before { content: @fa-var-braille; } +.@{fa-css-prefix}-briefcase:before { content: @fa-var-briefcase; } +.@{fa-css-prefix}-briefcase-medical:before { content: @fa-var-briefcase-medical; } +.@{fa-css-prefix}-btc:before { content: @fa-var-btc; } +.@{fa-css-prefix}-bug:before { content: @fa-var-bug; } +.@{fa-css-prefix}-building:before { content: @fa-var-building; } +.@{fa-css-prefix}-bullhorn:before { content: @fa-var-bullhorn; } +.@{fa-css-prefix}-bullseye:before { content: @fa-var-bullseye; } +.@{fa-css-prefix}-burn:before { content: @fa-var-burn; } +.@{fa-css-prefix}-buromobelexperte:before { content: @fa-var-buromobelexperte; } +.@{fa-css-prefix}-bus:before { content: @fa-var-bus; } +.@{fa-css-prefix}-buysellads:before { content: @fa-var-buysellads; } +.@{fa-css-prefix}-calculator:before { content: @fa-var-calculator; } +.@{fa-css-prefix}-calendar:before { content: @fa-var-calendar; } +.@{fa-css-prefix}-calendar-alt:before { content: @fa-var-calendar-alt; } +.@{fa-css-prefix}-calendar-check:before { content: @fa-var-calendar-check; } +.@{fa-css-prefix}-calendar-minus:before { content: @fa-var-calendar-minus; } +.@{fa-css-prefix}-calendar-plus:before { content: @fa-var-calendar-plus; } +.@{fa-css-prefix}-calendar-times:before { content: @fa-var-calendar-times; } +.@{fa-css-prefix}-camera:before { content: @fa-var-camera; } +.@{fa-css-prefix}-camera-retro:before { content: @fa-var-camera-retro; } +.@{fa-css-prefix}-capsules:before { content: @fa-var-capsules; } +.@{fa-css-prefix}-car:before { content: @fa-var-car; } +.@{fa-css-prefix}-caret-down:before { content: @fa-var-caret-down; } +.@{fa-css-prefix}-caret-left:before { content: @fa-var-caret-left; } +.@{fa-css-prefix}-caret-right:before { content: @fa-var-caret-right; } +.@{fa-css-prefix}-caret-square-down:before { content: @fa-var-caret-square-down; } +.@{fa-css-prefix}-caret-square-left:before { content: @fa-var-caret-square-left; } +.@{fa-css-prefix}-caret-square-right:before { content: @fa-var-caret-square-right; } +.@{fa-css-prefix}-caret-square-up:before { content: @fa-var-caret-square-up; } +.@{fa-css-prefix}-caret-up:before { content: @fa-var-caret-up; } +.@{fa-css-prefix}-cart-arrow-down:before { content: @fa-var-cart-arrow-down; } +.@{fa-css-prefix}-cart-plus:before { content: @fa-var-cart-plus; } +.@{fa-css-prefix}-cc-amazon-pay:before { content: @fa-var-cc-amazon-pay; } +.@{fa-css-prefix}-cc-amex:before { content: @fa-var-cc-amex; } +.@{fa-css-prefix}-cc-apple-pay:before { content: @fa-var-cc-apple-pay; } +.@{fa-css-prefix}-cc-diners-club:before { content: @fa-var-cc-diners-club; } +.@{fa-css-prefix}-cc-discover:before { content: @fa-var-cc-discover; } +.@{fa-css-prefix}-cc-jcb:before { content: @fa-var-cc-jcb; } +.@{fa-css-prefix}-cc-mastercard:before { content: @fa-var-cc-mastercard; } +.@{fa-css-prefix}-cc-paypal:before { content: @fa-var-cc-paypal; } +.@{fa-css-prefix}-cc-stripe:before { content: @fa-var-cc-stripe; } +.@{fa-css-prefix}-cc-visa:before { content: @fa-var-cc-visa; } +.@{fa-css-prefix}-centercode:before { content: @fa-var-centercode; } +.@{fa-css-prefix}-certificate:before { content: @fa-var-certificate; } +.@{fa-css-prefix}-chart-area:before { content: @fa-var-chart-area; } +.@{fa-css-prefix}-chart-bar:before { content: @fa-var-chart-bar; } +.@{fa-css-prefix}-chart-line:before { content: @fa-var-chart-line; } +.@{fa-css-prefix}-chart-pie:before { content: @fa-var-chart-pie; } +.@{fa-css-prefix}-check:before { content: @fa-var-check; } +.@{fa-css-prefix}-check-circle:before { content: @fa-var-check-circle; } +.@{fa-css-prefix}-check-square:before { content: @fa-var-check-square; } +.@{fa-css-prefix}-chess:before { content: @fa-var-chess; } +.@{fa-css-prefix}-chess-bishop:before { content: @fa-var-chess-bishop; } +.@{fa-css-prefix}-chess-board:before { content: @fa-var-chess-board; } +.@{fa-css-prefix}-chess-king:before { content: @fa-var-chess-king; } +.@{fa-css-prefix}-chess-knight:before { content: @fa-var-chess-knight; } +.@{fa-css-prefix}-chess-pawn:before { content: @fa-var-chess-pawn; } +.@{fa-css-prefix}-chess-queen:before { content: @fa-var-chess-queen; } +.@{fa-css-prefix}-chess-rook:before { content: @fa-var-chess-rook; } +.@{fa-css-prefix}-chevron-circle-down:before { content: @fa-var-chevron-circle-down; } +.@{fa-css-prefix}-chevron-circle-left:before { content: @fa-var-chevron-circle-left; } +.@{fa-css-prefix}-chevron-circle-right:before { content: @fa-var-chevron-circle-right; } +.@{fa-css-prefix}-chevron-circle-up:before { content: @fa-var-chevron-circle-up; } +.@{fa-css-prefix}-chevron-down:before { content: @fa-var-chevron-down; } +.@{fa-css-prefix}-chevron-left:before { content: @fa-var-chevron-left; } +.@{fa-css-prefix}-chevron-right:before { content: @fa-var-chevron-right; } +.@{fa-css-prefix}-chevron-up:before { content: @fa-var-chevron-up; } +.@{fa-css-prefix}-child:before { content: @fa-var-child; } +.@{fa-css-prefix}-chrome:before { content: @fa-var-chrome; } +.@{fa-css-prefix}-circle:before { content: @fa-var-circle; } +.@{fa-css-prefix}-circle-notch:before { content: @fa-var-circle-notch; } +.@{fa-css-prefix}-clipboard:before { content: @fa-var-clipboard; } +.@{fa-css-prefix}-clipboard-check:before { content: @fa-var-clipboard-check; } +.@{fa-css-prefix}-clipboard-list:before { content: @fa-var-clipboard-list; } +.@{fa-css-prefix}-clock:before { content: @fa-var-clock; } +.@{fa-css-prefix}-clone:before { content: @fa-var-clone; } +.@{fa-css-prefix}-closed-captioning:before { content: @fa-var-closed-captioning; } +.@{fa-css-prefix}-cloud:before { content: @fa-var-cloud; } +.@{fa-css-prefix}-cloud-download-alt:before { content: @fa-var-cloud-download-alt; } +.@{fa-css-prefix}-cloud-upload-alt:before { content: @fa-var-cloud-upload-alt; } +.@{fa-css-prefix}-cloudscale:before { content: @fa-var-cloudscale; } +.@{fa-css-prefix}-cloudsmith:before { content: @fa-var-cloudsmith; } +.@{fa-css-prefix}-cloudversify:before { content: @fa-var-cloudversify; } +.@{fa-css-prefix}-code:before { content: @fa-var-code; } +.@{fa-css-prefix}-code-branch:before { content: @fa-var-code-branch; } +.@{fa-css-prefix}-codepen:before { content: @fa-var-codepen; } +.@{fa-css-prefix}-codiepie:before { content: @fa-var-codiepie; } +.@{fa-css-prefix}-coffee:before { content: @fa-var-coffee; } +.@{fa-css-prefix}-cog:before { content: @fa-var-cog; } +.@{fa-css-prefix}-cogs:before { content: @fa-var-cogs; } +.@{fa-css-prefix}-columns:before { content: @fa-var-columns; } +.@{fa-css-prefix}-comment:before { content: @fa-var-comment; } +.@{fa-css-prefix}-comment-alt:before { content: @fa-var-comment-alt; } +.@{fa-css-prefix}-comment-dots:before { content: @fa-var-comment-dots; } +.@{fa-css-prefix}-comment-slash:before { content: @fa-var-comment-slash; } +.@{fa-css-prefix}-comments:before { content: @fa-var-comments; } +.@{fa-css-prefix}-compass:before { content: @fa-var-compass; } +.@{fa-css-prefix}-compress:before { content: @fa-var-compress; } +.@{fa-css-prefix}-connectdevelop:before { content: @fa-var-connectdevelop; } +.@{fa-css-prefix}-contao:before { content: @fa-var-contao; } +.@{fa-css-prefix}-copy:before { content: @fa-var-copy; } +.@{fa-css-prefix}-copyright:before { content: @fa-var-copyright; } +.@{fa-css-prefix}-couch:before { content: @fa-var-couch; } +.@{fa-css-prefix}-cpanel:before { content: @fa-var-cpanel; } +.@{fa-css-prefix}-creative-commons:before { content: @fa-var-creative-commons; } +.@{fa-css-prefix}-credit-card:before { content: @fa-var-credit-card; } +.@{fa-css-prefix}-crop:before { content: @fa-var-crop; } +.@{fa-css-prefix}-crosshairs:before { content: @fa-var-crosshairs; } +.@{fa-css-prefix}-css3:before { content: @fa-var-css3; } +.@{fa-css-prefix}-css3-alt:before { content: @fa-var-css3-alt; } +.@{fa-css-prefix}-cube:before { content: @fa-var-cube; } +.@{fa-css-prefix}-cubes:before { content: @fa-var-cubes; } +.@{fa-css-prefix}-cut:before { content: @fa-var-cut; } +.@{fa-css-prefix}-cuttlefish:before { content: @fa-var-cuttlefish; } +.@{fa-css-prefix}-d-and-d:before { content: @fa-var-d-and-d; } +.@{fa-css-prefix}-dashcube:before { content: @fa-var-dashcube; } +.@{fa-css-prefix}-database:before { content: @fa-var-database; } +.@{fa-css-prefix}-deaf:before { content: @fa-var-deaf; } +.@{fa-css-prefix}-delicious:before { content: @fa-var-delicious; } +.@{fa-css-prefix}-deploydog:before { content: @fa-var-deploydog; } +.@{fa-css-prefix}-deskpro:before { content: @fa-var-deskpro; } +.@{fa-css-prefix}-desktop:before { content: @fa-var-desktop; } +.@{fa-css-prefix}-deviantart:before { content: @fa-var-deviantart; } +.@{fa-css-prefix}-diagnoses:before { content: @fa-var-diagnoses; } +.@{fa-css-prefix}-digg:before { content: @fa-var-digg; } +.@{fa-css-prefix}-digital-ocean:before { content: @fa-var-digital-ocean; } +.@{fa-css-prefix}-discord:before { content: @fa-var-discord; } +.@{fa-css-prefix}-discourse:before { content: @fa-var-discourse; } +.@{fa-css-prefix}-dna:before { content: @fa-var-dna; } +.@{fa-css-prefix}-dochub:before { content: @fa-var-dochub; } +.@{fa-css-prefix}-docker:before { content: @fa-var-docker; } +.@{fa-css-prefix}-dollar-sign:before { content: @fa-var-dollar-sign; } +.@{fa-css-prefix}-dolly:before { content: @fa-var-dolly; } +.@{fa-css-prefix}-dolly-flatbed:before { content: @fa-var-dolly-flatbed; } +.@{fa-css-prefix}-donate:before { content: @fa-var-donate; } +.@{fa-css-prefix}-dot-circle:before { content: @fa-var-dot-circle; } +.@{fa-css-prefix}-dove:before { content: @fa-var-dove; } +.@{fa-css-prefix}-download:before { content: @fa-var-download; } +.@{fa-css-prefix}-draft2digital:before { content: @fa-var-draft2digital; } +.@{fa-css-prefix}-dribbble:before { content: @fa-var-dribbble; } +.@{fa-css-prefix}-dribbble-square:before { content: @fa-var-dribbble-square; } +.@{fa-css-prefix}-dropbox:before { content: @fa-var-dropbox; } +.@{fa-css-prefix}-drupal:before { content: @fa-var-drupal; } +.@{fa-css-prefix}-dyalog:before { content: @fa-var-dyalog; } +.@{fa-css-prefix}-earlybirds:before { content: @fa-var-earlybirds; } +.@{fa-css-prefix}-edge:before { content: @fa-var-edge; } +.@{fa-css-prefix}-edit:before { content: @fa-var-edit; } +.@{fa-css-prefix}-eject:before { content: @fa-var-eject; } +.@{fa-css-prefix}-elementor:before { content: @fa-var-elementor; } +.@{fa-css-prefix}-ellipsis-h:before { content: @fa-var-ellipsis-h; } +.@{fa-css-prefix}-ellipsis-v:before { content: @fa-var-ellipsis-v; } +.@{fa-css-prefix}-ember:before { content: @fa-var-ember; } +.@{fa-css-prefix}-empire:before { content: @fa-var-empire; } +.@{fa-css-prefix}-envelope:before { content: @fa-var-envelope; } +.@{fa-css-prefix}-envelope-open:before { content: @fa-var-envelope-open; } +.@{fa-css-prefix}-envelope-square:before { content: @fa-var-envelope-square; } +.@{fa-css-prefix}-envira:before { content: @fa-var-envira; } +.@{fa-css-prefix}-eraser:before { content: @fa-var-eraser; } +.@{fa-css-prefix}-erlang:before { content: @fa-var-erlang; } +.@{fa-css-prefix}-ethereum:before { content: @fa-var-ethereum; } +.@{fa-css-prefix}-etsy:before { content: @fa-var-etsy; } +.@{fa-css-prefix}-euro-sign:before { content: @fa-var-euro-sign; } +.@{fa-css-prefix}-exchange-alt:before { content: @fa-var-exchange-alt; } +.@{fa-css-prefix}-exclamation:before { content: @fa-var-exclamation; } +.@{fa-css-prefix}-exclamation-circle:before { content: @fa-var-exclamation-circle; } +.@{fa-css-prefix}-exclamation-triangle:before { content: @fa-var-exclamation-triangle; } +.@{fa-css-prefix}-expand:before { content: @fa-var-expand; } +.@{fa-css-prefix}-expand-arrows-alt:before { content: @fa-var-expand-arrows-alt; } +.@{fa-css-prefix}-expeditedssl:before { content: @fa-var-expeditedssl; } +.@{fa-css-prefix}-external-link-alt:before { content: @fa-var-external-link-alt; } +.@{fa-css-prefix}-external-link-square-alt:before { content: @fa-var-external-link-square-alt; } +.@{fa-css-prefix}-eye:before { content: @fa-var-eye; } +.@{fa-css-prefix}-eye-dropper:before { content: @fa-var-eye-dropper; } +.@{fa-css-prefix}-eye-slash:before { content: @fa-var-eye-slash; } +.@{fa-css-prefix}-facebook:before { content: @fa-var-facebook; } +.@{fa-css-prefix}-facebook-f:before { content: @fa-var-facebook-f; } +.@{fa-css-prefix}-facebook-messenger:before { content: @fa-var-facebook-messenger; } +.@{fa-css-prefix}-facebook-square:before { content: @fa-var-facebook-square; } +.@{fa-css-prefix}-fast-backward:before { content: @fa-var-fast-backward; } +.@{fa-css-prefix}-fast-forward:before { content: @fa-var-fast-forward; } +.@{fa-css-prefix}-fax:before { content: @fa-var-fax; } +.@{fa-css-prefix}-female:before { content: @fa-var-female; } +.@{fa-css-prefix}-fighter-jet:before { content: @fa-var-fighter-jet; } +.@{fa-css-prefix}-file:before { content: @fa-var-file; } +.@{fa-css-prefix}-file-alt:before { content: @fa-var-file-alt; } +.@{fa-css-prefix}-file-archive:before { content: @fa-var-file-archive; } +.@{fa-css-prefix}-file-audio:before { content: @fa-var-file-audio; } +.@{fa-css-prefix}-file-code:before { content: @fa-var-file-code; } +.@{fa-css-prefix}-file-excel:before { content: @fa-var-file-excel; } +.@{fa-css-prefix}-file-image:before { content: @fa-var-file-image; } +.@{fa-css-prefix}-file-medical:before { content: @fa-var-file-medical; } +.@{fa-css-prefix}-file-medical-alt:before { content: @fa-var-file-medical-alt; } +.@{fa-css-prefix}-file-pdf:before { content: @fa-var-file-pdf; } +.@{fa-css-prefix}-file-powerpoint:before { content: @fa-var-file-powerpoint; } +.@{fa-css-prefix}-file-video:before { content: @fa-var-file-video; } +.@{fa-css-prefix}-file-word:before { content: @fa-var-file-word; } +.@{fa-css-prefix}-film:before { content: @fa-var-film; } +.@{fa-css-prefix}-filter:before { content: @fa-var-filter; } +.@{fa-css-prefix}-fire:before { content: @fa-var-fire; } +.@{fa-css-prefix}-fire-extinguisher:before { content: @fa-var-fire-extinguisher; } +.@{fa-css-prefix}-firefox:before { content: @fa-var-firefox; } +.@{fa-css-prefix}-first-aid:before { content: @fa-var-first-aid; } +.@{fa-css-prefix}-first-order:before { content: @fa-var-first-order; } +.@{fa-css-prefix}-firstdraft:before { content: @fa-var-firstdraft; } +.@{fa-css-prefix}-flag:before { content: @fa-var-flag; } +.@{fa-css-prefix}-flag-checkered:before { content: @fa-var-flag-checkered; } +.@{fa-css-prefix}-flask:before { content: @fa-var-flask; } +.@{fa-css-prefix}-flickr:before { content: @fa-var-flickr; } +.@{fa-css-prefix}-flipboard:before { content: @fa-var-flipboard; } +.@{fa-css-prefix}-fly:before { content: @fa-var-fly; } +.@{fa-css-prefix}-folder:before { content: @fa-var-folder; } +.@{fa-css-prefix}-folder-open:before { content: @fa-var-folder-open; } +.@{fa-css-prefix}-font:before { content: @fa-var-font; } +.@{fa-css-prefix}-font-awesome:before { content: @fa-var-font-awesome; } +.@{fa-css-prefix}-font-awesome-alt:before { content: @fa-var-font-awesome-alt; } +.@{fa-css-prefix}-font-awesome-flag:before { content: @fa-var-font-awesome-flag; } +.@{fa-css-prefix}-fonticons:before { content: @fa-var-fonticons; } +.@{fa-css-prefix}-fonticons-fi:before { content: @fa-var-fonticons-fi; } +.@{fa-css-prefix}-football-ball:before { content: @fa-var-football-ball; } +.@{fa-css-prefix}-fort-awesome:before { content: @fa-var-fort-awesome; } +.@{fa-css-prefix}-fort-awesome-alt:before { content: @fa-var-fort-awesome-alt; } +.@{fa-css-prefix}-forumbee:before { content: @fa-var-forumbee; } +.@{fa-css-prefix}-forward:before { content: @fa-var-forward; } +.@{fa-css-prefix}-foursquare:before { content: @fa-var-foursquare; } +.@{fa-css-prefix}-free-code-camp:before { content: @fa-var-free-code-camp; } +.@{fa-css-prefix}-freebsd:before { content: @fa-var-freebsd; } +.@{fa-css-prefix}-frown:before { content: @fa-var-frown; } +.@{fa-css-prefix}-futbol:before { content: @fa-var-futbol; } +.@{fa-css-prefix}-gamepad:before { content: @fa-var-gamepad; } +.@{fa-css-prefix}-gavel:before { content: @fa-var-gavel; } +.@{fa-css-prefix}-gem:before { content: @fa-var-gem; } +.@{fa-css-prefix}-genderless:before { content: @fa-var-genderless; } +.@{fa-css-prefix}-get-pocket:before { content: @fa-var-get-pocket; } +.@{fa-css-prefix}-gg:before { content: @fa-var-gg; } +.@{fa-css-prefix}-gg-circle:before { content: @fa-var-gg-circle; } +.@{fa-css-prefix}-gift:before { content: @fa-var-gift; } +.@{fa-css-prefix}-git:before { content: @fa-var-git; } +.@{fa-css-prefix}-git-square:before { content: @fa-var-git-square; } +.@{fa-css-prefix}-github:before { content: @fa-var-github; } +.@{fa-css-prefix}-github-alt:before { content: @fa-var-github-alt; } +.@{fa-css-prefix}-github-square:before { content: @fa-var-github-square; } +.@{fa-css-prefix}-gitkraken:before { content: @fa-var-gitkraken; } +.@{fa-css-prefix}-gitlab:before { content: @fa-var-gitlab; } +.@{fa-css-prefix}-gitter:before { content: @fa-var-gitter; } +.@{fa-css-prefix}-glass-martini:before { content: @fa-var-glass-martini; } +.@{fa-css-prefix}-glide:before { content: @fa-var-glide; } +.@{fa-css-prefix}-glide-g:before { content: @fa-var-glide-g; } +.@{fa-css-prefix}-globe:before { content: @fa-var-globe; } +.@{fa-css-prefix}-gofore:before { content: @fa-var-gofore; } +.@{fa-css-prefix}-golf-ball:before { content: @fa-var-golf-ball; } +.@{fa-css-prefix}-goodreads:before { content: @fa-var-goodreads; } +.@{fa-css-prefix}-goodreads-g:before { content: @fa-var-goodreads-g; } +.@{fa-css-prefix}-google:before { content: @fa-var-google; } +.@{fa-css-prefix}-google-drive:before { content: @fa-var-google-drive; } +.@{fa-css-prefix}-google-play:before { content: @fa-var-google-play; } +.@{fa-css-prefix}-google-plus:before { content: @fa-var-google-plus; } +.@{fa-css-prefix}-google-plus-g:before { content: @fa-var-google-plus-g; } +.@{fa-css-prefix}-google-plus-square:before { content: @fa-var-google-plus-square; } +.@{fa-css-prefix}-google-wallet:before { content: @fa-var-google-wallet; } +.@{fa-css-prefix}-graduation-cap:before { content: @fa-var-graduation-cap; } +.@{fa-css-prefix}-gratipay:before { content: @fa-var-gratipay; } +.@{fa-css-prefix}-grav:before { content: @fa-var-grav; } +.@{fa-css-prefix}-gripfire:before { content: @fa-var-gripfire; } +.@{fa-css-prefix}-grunt:before { content: @fa-var-grunt; } +.@{fa-css-prefix}-gulp:before { content: @fa-var-gulp; } +.@{fa-css-prefix}-h-square:before { content: @fa-var-h-square; } +.@{fa-css-prefix}-hacker-news:before { content: @fa-var-hacker-news; } +.@{fa-css-prefix}-hacker-news-square:before { content: @fa-var-hacker-news-square; } +.@{fa-css-prefix}-hand-holding:before { content: @fa-var-hand-holding; } +.@{fa-css-prefix}-hand-holding-heart:before { content: @fa-var-hand-holding-heart; } +.@{fa-css-prefix}-hand-holding-usd:before { content: @fa-var-hand-holding-usd; } +.@{fa-css-prefix}-hand-lizard:before { content: @fa-var-hand-lizard; } +.@{fa-css-prefix}-hand-paper:before { content: @fa-var-hand-paper; } +.@{fa-css-prefix}-hand-peace:before { content: @fa-var-hand-peace; } +.@{fa-css-prefix}-hand-point-down:before { content: @fa-var-hand-point-down; } +.@{fa-css-prefix}-hand-point-left:before { content: @fa-var-hand-point-left; } +.@{fa-css-prefix}-hand-point-right:before { content: @fa-var-hand-point-right; } +.@{fa-css-prefix}-hand-point-up:before { content: @fa-var-hand-point-up; } +.@{fa-css-prefix}-hand-pointer:before { content: @fa-var-hand-pointer; } +.@{fa-css-prefix}-hand-rock:before { content: @fa-var-hand-rock; } +.@{fa-css-prefix}-hand-scissors:before { content: @fa-var-hand-scissors; } +.@{fa-css-prefix}-hand-spock:before { content: @fa-var-hand-spock; } +.@{fa-css-prefix}-hands:before { content: @fa-var-hands; } +.@{fa-css-prefix}-hands-helping:before { content: @fa-var-hands-helping; } +.@{fa-css-prefix}-handshake:before { content: @fa-var-handshake; } +.@{fa-css-prefix}-hashtag:before { content: @fa-var-hashtag; } +.@{fa-css-prefix}-hdd:before { content: @fa-var-hdd; } +.@{fa-css-prefix}-heading:before { content: @fa-var-heading; } +.@{fa-css-prefix}-headphones:before { content: @fa-var-headphones; } +.@{fa-css-prefix}-heart:before { content: @fa-var-heart; } +.@{fa-css-prefix}-heartbeat:before { content: @fa-var-heartbeat; } +.@{fa-css-prefix}-hips:before { content: @fa-var-hips; } +.@{fa-css-prefix}-hire-a-helper:before { content: @fa-var-hire-a-helper; } +.@{fa-css-prefix}-history:before { content: @fa-var-history; } +.@{fa-css-prefix}-hockey-puck:before { content: @fa-var-hockey-puck; } +.@{fa-css-prefix}-home:before { content: @fa-var-home; } +.@{fa-css-prefix}-hooli:before { content: @fa-var-hooli; } +.@{fa-css-prefix}-hospital:before { content: @fa-var-hospital; } +.@{fa-css-prefix}-hospital-alt:before { content: @fa-var-hospital-alt; } +.@{fa-css-prefix}-hospital-symbol:before { content: @fa-var-hospital-symbol; } +.@{fa-css-prefix}-hotjar:before { content: @fa-var-hotjar; } +.@{fa-css-prefix}-hourglass:before { content: @fa-var-hourglass; } +.@{fa-css-prefix}-hourglass-end:before { content: @fa-var-hourglass-end; } +.@{fa-css-prefix}-hourglass-half:before { content: @fa-var-hourglass-half; } +.@{fa-css-prefix}-hourglass-start:before { content: @fa-var-hourglass-start; } +.@{fa-css-prefix}-houzz:before { content: @fa-var-houzz; } +.@{fa-css-prefix}-html5:before { content: @fa-var-html5; } +.@{fa-css-prefix}-hubspot:before { content: @fa-var-hubspot; } +.@{fa-css-prefix}-i-cursor:before { content: @fa-var-i-cursor; } +.@{fa-css-prefix}-id-badge:before { content: @fa-var-id-badge; } +.@{fa-css-prefix}-id-card:before { content: @fa-var-id-card; } +.@{fa-css-prefix}-id-card-alt:before { content: @fa-var-id-card-alt; } +.@{fa-css-prefix}-image:before { content: @fa-var-image; } +.@{fa-css-prefix}-images:before { content: @fa-var-images; } +.@{fa-css-prefix}-imdb:before { content: @fa-var-imdb; } +.@{fa-css-prefix}-inbox:before { content: @fa-var-inbox; } +.@{fa-css-prefix}-indent:before { content: @fa-var-indent; } +.@{fa-css-prefix}-industry:before { content: @fa-var-industry; } +.@{fa-css-prefix}-info:before { content: @fa-var-info; } +.@{fa-css-prefix}-info-circle:before { content: @fa-var-info-circle; } +.@{fa-css-prefix}-instagram:before { content: @fa-var-instagram; } +.@{fa-css-prefix}-internet-explorer:before { content: @fa-var-internet-explorer; } +.@{fa-css-prefix}-ioxhost:before { content: @fa-var-ioxhost; } +.@{fa-css-prefix}-italic:before { content: @fa-var-italic; } +.@{fa-css-prefix}-itunes:before { content: @fa-var-itunes; } +.@{fa-css-prefix}-itunes-note:before { content: @fa-var-itunes-note; } +.@{fa-css-prefix}-java:before { content: @fa-var-java; } +.@{fa-css-prefix}-jenkins:before { content: @fa-var-jenkins; } +.@{fa-css-prefix}-joget:before { content: @fa-var-joget; } +.@{fa-css-prefix}-joomla:before { content: @fa-var-joomla; } +.@{fa-css-prefix}-js:before { content: @fa-var-js; } +.@{fa-css-prefix}-js-square:before { content: @fa-var-js-square; } +.@{fa-css-prefix}-jsfiddle:before { content: @fa-var-jsfiddle; } +.@{fa-css-prefix}-key:before { content: @fa-var-key; } +.@{fa-css-prefix}-keyboard:before { content: @fa-var-keyboard; } +.@{fa-css-prefix}-keycdn:before { content: @fa-var-keycdn; } +.@{fa-css-prefix}-kickstarter:before { content: @fa-var-kickstarter; } +.@{fa-css-prefix}-kickstarter-k:before { content: @fa-var-kickstarter-k; } +.@{fa-css-prefix}-korvue:before { content: @fa-var-korvue; } +.@{fa-css-prefix}-language:before { content: @fa-var-language; } +.@{fa-css-prefix}-laptop:before { content: @fa-var-laptop; } +.@{fa-css-prefix}-laravel:before { content: @fa-var-laravel; } +.@{fa-css-prefix}-lastfm:before { content: @fa-var-lastfm; } +.@{fa-css-prefix}-lastfm-square:before { content: @fa-var-lastfm-square; } +.@{fa-css-prefix}-leaf:before { content: @fa-var-leaf; } +.@{fa-css-prefix}-leanpub:before { content: @fa-var-leanpub; } +.@{fa-css-prefix}-lemon:before { content: @fa-var-lemon; } +.@{fa-css-prefix}-less:before { content: @fa-var-less; } +.@{fa-css-prefix}-level-down-alt:before { content: @fa-var-level-down-alt; } +.@{fa-css-prefix}-level-up-alt:before { content: @fa-var-level-up-alt; } +.@{fa-css-prefix}-life-ring:before { content: @fa-var-life-ring; } +.@{fa-css-prefix}-lightbulb:before { content: @fa-var-lightbulb; } +.@{fa-css-prefix}-line:before { content: @fa-var-line; } +.@{fa-css-prefix}-link:before { content: @fa-var-link; } +.@{fa-css-prefix}-linkedin:before { content: @fa-var-linkedin; } +.@{fa-css-prefix}-linkedin-in:before { content: @fa-var-linkedin-in; } +.@{fa-css-prefix}-linode:before { content: @fa-var-linode; } +.@{fa-css-prefix}-linux:before { content: @fa-var-linux; } +.@{fa-css-prefix}-lira-sign:before { content: @fa-var-lira-sign; } +.@{fa-css-prefix}-list:before { content: @fa-var-list; } +.@{fa-css-prefix}-list-alt:before { content: @fa-var-list-alt; } +.@{fa-css-prefix}-list-ol:before { content: @fa-var-list-ol; } +.@{fa-css-prefix}-list-ul:before { content: @fa-var-list-ul; } +.@{fa-css-prefix}-location-arrow:before { content: @fa-var-location-arrow; } +.@{fa-css-prefix}-lock:before { content: @fa-var-lock; } +.@{fa-css-prefix}-lock-open:before { content: @fa-var-lock-open; } +.@{fa-css-prefix}-long-arrow-alt-down:before { content: @fa-var-long-arrow-alt-down; } +.@{fa-css-prefix}-long-arrow-alt-left:before { content: @fa-var-long-arrow-alt-left; } +.@{fa-css-prefix}-long-arrow-alt-right:before { content: @fa-var-long-arrow-alt-right; } +.@{fa-css-prefix}-long-arrow-alt-up:before { content: @fa-var-long-arrow-alt-up; } +.@{fa-css-prefix}-low-vision:before { content: @fa-var-low-vision; } +.@{fa-css-prefix}-lyft:before { content: @fa-var-lyft; } +.@{fa-css-prefix}-magento:before { content: @fa-var-magento; } +.@{fa-css-prefix}-magic:before { content: @fa-var-magic; } +.@{fa-css-prefix}-magnet:before { content: @fa-var-magnet; } +.@{fa-css-prefix}-male:before { content: @fa-var-male; } +.@{fa-css-prefix}-map:before { content: @fa-var-map; } +.@{fa-css-prefix}-map-marker:before { content: @fa-var-map-marker; } +.@{fa-css-prefix}-map-marker-alt:before { content: @fa-var-map-marker-alt; } +.@{fa-css-prefix}-map-pin:before { content: @fa-var-map-pin; } +.@{fa-css-prefix}-map-signs:before { content: @fa-var-map-signs; } +.@{fa-css-prefix}-mars:before { content: @fa-var-mars; } +.@{fa-css-prefix}-mars-double:before { content: @fa-var-mars-double; } +.@{fa-css-prefix}-mars-stroke:before { content: @fa-var-mars-stroke; } +.@{fa-css-prefix}-mars-stroke-h:before { content: @fa-var-mars-stroke-h; } +.@{fa-css-prefix}-mars-stroke-v:before { content: @fa-var-mars-stroke-v; } +.@{fa-css-prefix}-maxcdn:before { content: @fa-var-maxcdn; } +.@{fa-css-prefix}-medapps:before { content: @fa-var-medapps; } +.@{fa-css-prefix}-medium:before { content: @fa-var-medium; } +.@{fa-css-prefix}-medium-m:before { content: @fa-var-medium-m; } +.@{fa-css-prefix}-medkit:before { content: @fa-var-medkit; } +.@{fa-css-prefix}-medrt:before { content: @fa-var-medrt; } +.@{fa-css-prefix}-meetup:before { content: @fa-var-meetup; } +.@{fa-css-prefix}-meh:before { content: @fa-var-meh; } +.@{fa-css-prefix}-mercury:before { content: @fa-var-mercury; } +.@{fa-css-prefix}-microchip:before { content: @fa-var-microchip; } +.@{fa-css-prefix}-microphone:before { content: @fa-var-microphone; } +.@{fa-css-prefix}-microphone-slash:before { content: @fa-var-microphone-slash; } +.@{fa-css-prefix}-microsoft:before { content: @fa-var-microsoft; } +.@{fa-css-prefix}-minus:before { content: @fa-var-minus; } +.@{fa-css-prefix}-minus-circle:before { content: @fa-var-minus-circle; } +.@{fa-css-prefix}-minus-square:before { content: @fa-var-minus-square; } +.@{fa-css-prefix}-mix:before { content: @fa-var-mix; } +.@{fa-css-prefix}-mixcloud:before { content: @fa-var-mixcloud; } +.@{fa-css-prefix}-mizuni:before { content: @fa-var-mizuni; } +.@{fa-css-prefix}-mobile:before { content: @fa-var-mobile; } +.@{fa-css-prefix}-mobile-alt:before { content: @fa-var-mobile-alt; } +.@{fa-css-prefix}-modx:before { content: @fa-var-modx; } +.@{fa-css-prefix}-monero:before { content: @fa-var-monero; } +.@{fa-css-prefix}-money-bill-alt:before { content: @fa-var-money-bill-alt; } +.@{fa-css-prefix}-moon:before { content: @fa-var-moon; } +.@{fa-css-prefix}-motorcycle:before { content: @fa-var-motorcycle; } +.@{fa-css-prefix}-mouse-pointer:before { content: @fa-var-mouse-pointer; } +.@{fa-css-prefix}-music:before { content: @fa-var-music; } +.@{fa-css-prefix}-napster:before { content: @fa-var-napster; } +.@{fa-css-prefix}-neuter:before { content: @fa-var-neuter; } +.@{fa-css-prefix}-newspaper:before { content: @fa-var-newspaper; } +.@{fa-css-prefix}-nintendo-switch:before { content: @fa-var-nintendo-switch; } +.@{fa-css-prefix}-node:before { content: @fa-var-node; } +.@{fa-css-prefix}-node-js:before { content: @fa-var-node-js; } +.@{fa-css-prefix}-notes-medical:before { content: @fa-var-notes-medical; } +.@{fa-css-prefix}-npm:before { content: @fa-var-npm; } +.@{fa-css-prefix}-ns8:before { content: @fa-var-ns8; } +.@{fa-css-prefix}-nutritionix:before { content: @fa-var-nutritionix; } +.@{fa-css-prefix}-object-group:before { content: @fa-var-object-group; } +.@{fa-css-prefix}-object-ungroup:before { content: @fa-var-object-ungroup; } +.@{fa-css-prefix}-odnoklassniki:before { content: @fa-var-odnoklassniki; } +.@{fa-css-prefix}-odnoklassniki-square:before { content: @fa-var-odnoklassniki-square; } +.@{fa-css-prefix}-opencart:before { content: @fa-var-opencart; } +.@{fa-css-prefix}-openid:before { content: @fa-var-openid; } +.@{fa-css-prefix}-opera:before { content: @fa-var-opera; } +.@{fa-css-prefix}-optin-monster:before { content: @fa-var-optin-monster; } +.@{fa-css-prefix}-osi:before { content: @fa-var-osi; } +.@{fa-css-prefix}-outdent:before { content: @fa-var-outdent; } +.@{fa-css-prefix}-page4:before { content: @fa-var-page4; } +.@{fa-css-prefix}-pagelines:before { content: @fa-var-pagelines; } +.@{fa-css-prefix}-paint-brush:before { content: @fa-var-paint-brush; } +.@{fa-css-prefix}-palfed:before { content: @fa-var-palfed; } +.@{fa-css-prefix}-pallet:before { content: @fa-var-pallet; } +.@{fa-css-prefix}-paper-plane:before { content: @fa-var-paper-plane; } +.@{fa-css-prefix}-paperclip:before { content: @fa-var-paperclip; } +.@{fa-css-prefix}-parachute-box:before { content: @fa-var-parachute-box; } +.@{fa-css-prefix}-paragraph:before { content: @fa-var-paragraph; } +.@{fa-css-prefix}-paste:before { content: @fa-var-paste; } +.@{fa-css-prefix}-patreon:before { content: @fa-var-patreon; } +.@{fa-css-prefix}-pause:before { content: @fa-var-pause; } +.@{fa-css-prefix}-pause-circle:before { content: @fa-var-pause-circle; } +.@{fa-css-prefix}-paw:before { content: @fa-var-paw; } +.@{fa-css-prefix}-paypal:before { content: @fa-var-paypal; } +.@{fa-css-prefix}-pen-square:before { content: @fa-var-pen-square; } +.@{fa-css-prefix}-pencil-alt:before { content: @fa-var-pencil-alt; } +.@{fa-css-prefix}-people-carry:before { content: @fa-var-people-carry; } +.@{fa-css-prefix}-percent:before { content: @fa-var-percent; } +.@{fa-css-prefix}-periscope:before { content: @fa-var-periscope; } +.@{fa-css-prefix}-phabricator:before { content: @fa-var-phabricator; } +.@{fa-css-prefix}-phoenix-framework:before { content: @fa-var-phoenix-framework; } +.@{fa-css-prefix}-phone:before { content: @fa-var-phone; } +.@{fa-css-prefix}-phone-slash:before { content: @fa-var-phone-slash; } +.@{fa-css-prefix}-phone-square:before { content: @fa-var-phone-square; } +.@{fa-css-prefix}-phone-volume:before { content: @fa-var-phone-volume; } +.@{fa-css-prefix}-php:before { content: @fa-var-php; } +.@{fa-css-prefix}-pied-piper:before { content: @fa-var-pied-piper; } +.@{fa-css-prefix}-pied-piper-alt:before { content: @fa-var-pied-piper-alt; } +.@{fa-css-prefix}-pied-piper-hat:before { content: @fa-var-pied-piper-hat; } +.@{fa-css-prefix}-pied-piper-pp:before { content: @fa-var-pied-piper-pp; } +.@{fa-css-prefix}-piggy-bank:before { content: @fa-var-piggy-bank; } +.@{fa-css-prefix}-pills:before { content: @fa-var-pills; } +.@{fa-css-prefix}-pinterest:before { content: @fa-var-pinterest; } +.@{fa-css-prefix}-pinterest-p:before { content: @fa-var-pinterest-p; } +.@{fa-css-prefix}-pinterest-square:before { content: @fa-var-pinterest-square; } +.@{fa-css-prefix}-plane:before { content: @fa-var-plane; } +.@{fa-css-prefix}-play:before { content: @fa-var-play; } +.@{fa-css-prefix}-play-circle:before { content: @fa-var-play-circle; } +.@{fa-css-prefix}-playstation:before { content: @fa-var-playstation; } +.@{fa-css-prefix}-plug:before { content: @fa-var-plug; } +.@{fa-css-prefix}-plus:before { content: @fa-var-plus; } +.@{fa-css-prefix}-plus-circle:before { content: @fa-var-plus-circle; } +.@{fa-css-prefix}-plus-square:before { content: @fa-var-plus-square; } +.@{fa-css-prefix}-podcast:before { content: @fa-var-podcast; } +.@{fa-css-prefix}-poo:before { content: @fa-var-poo; } +.@{fa-css-prefix}-pound-sign:before { content: @fa-var-pound-sign; } +.@{fa-css-prefix}-power-off:before { content: @fa-var-power-off; } +.@{fa-css-prefix}-prescription-bottle:before { content: @fa-var-prescription-bottle; } +.@{fa-css-prefix}-prescription-bottle-alt:before { content: @fa-var-prescription-bottle-alt; } +.@{fa-css-prefix}-print:before { content: @fa-var-print; } +.@{fa-css-prefix}-procedures:before { content: @fa-var-procedures; } +.@{fa-css-prefix}-product-hunt:before { content: @fa-var-product-hunt; } +.@{fa-css-prefix}-pushed:before { content: @fa-var-pushed; } +.@{fa-css-prefix}-puzzle-piece:before { content: @fa-var-puzzle-piece; } +.@{fa-css-prefix}-python:before { content: @fa-var-python; } +.@{fa-css-prefix}-qq:before { content: @fa-var-qq; } +.@{fa-css-prefix}-qrcode:before { content: @fa-var-qrcode; } +.@{fa-css-prefix}-question:before { content: @fa-var-question; } +.@{fa-css-prefix}-question-circle:before { content: @fa-var-question-circle; } +.@{fa-css-prefix}-quidditch:before { content: @fa-var-quidditch; } +.@{fa-css-prefix}-quinscape:before { content: @fa-var-quinscape; } +.@{fa-css-prefix}-quora:before { content: @fa-var-quora; } +.@{fa-css-prefix}-quote-left:before { content: @fa-var-quote-left; } +.@{fa-css-prefix}-quote-right:before { content: @fa-var-quote-right; } +.@{fa-css-prefix}-random:before { content: @fa-var-random; } +.@{fa-css-prefix}-ravelry:before { content: @fa-var-ravelry; } +.@{fa-css-prefix}-react:before { content: @fa-var-react; } +.@{fa-css-prefix}-readme:before { content: @fa-var-readme; } +.@{fa-css-prefix}-rebel:before { content: @fa-var-rebel; } +.@{fa-css-prefix}-recycle:before { content: @fa-var-recycle; } +.@{fa-css-prefix}-red-river:before { content: @fa-var-red-river; } +.@{fa-css-prefix}-reddit:before { content: @fa-var-reddit; } +.@{fa-css-prefix}-reddit-alien:before { content: @fa-var-reddit-alien; } +.@{fa-css-prefix}-reddit-square:before { content: @fa-var-reddit-square; } +.@{fa-css-prefix}-redo:before { content: @fa-var-redo; } +.@{fa-css-prefix}-redo-alt:before { content: @fa-var-redo-alt; } +.@{fa-css-prefix}-registered:before { content: @fa-var-registered; } +.@{fa-css-prefix}-rendact:before { content: @fa-var-rendact; } +.@{fa-css-prefix}-renren:before { content: @fa-var-renren; } +.@{fa-css-prefix}-reply:before { content: @fa-var-reply; } +.@{fa-css-prefix}-reply-all:before { content: @fa-var-reply-all; } +.@{fa-css-prefix}-replyd:before { content: @fa-var-replyd; } +.@{fa-css-prefix}-resolving:before { content: @fa-var-resolving; } +.@{fa-css-prefix}-retweet:before { content: @fa-var-retweet; } +.@{fa-css-prefix}-ribbon:before { content: @fa-var-ribbon; } +.@{fa-css-prefix}-road:before { content: @fa-var-road; } +.@{fa-css-prefix}-rocket:before { content: @fa-var-rocket; } +.@{fa-css-prefix}-rocketchat:before { content: @fa-var-rocketchat; } +.@{fa-css-prefix}-rockrms:before { content: @fa-var-rockrms; } +.@{fa-css-prefix}-rss:before { content: @fa-var-rss; } +.@{fa-css-prefix}-rss-square:before { content: @fa-var-rss-square; } +.@{fa-css-prefix}-ruble-sign:before { content: @fa-var-ruble-sign; } +.@{fa-css-prefix}-rupee-sign:before { content: @fa-var-rupee-sign; } +.@{fa-css-prefix}-safari:before { content: @fa-var-safari; } +.@{fa-css-prefix}-sass:before { content: @fa-var-sass; } +.@{fa-css-prefix}-save:before { content: @fa-var-save; } +.@{fa-css-prefix}-schlix:before { content: @fa-var-schlix; } +.@{fa-css-prefix}-scribd:before { content: @fa-var-scribd; } +.@{fa-css-prefix}-search:before { content: @fa-var-search; } +.@{fa-css-prefix}-search-minus:before { content: @fa-var-search-minus; } +.@{fa-css-prefix}-search-plus:before { content: @fa-var-search-plus; } +.@{fa-css-prefix}-searchengin:before { content: @fa-var-searchengin; } +.@{fa-css-prefix}-seedling:before { content: @fa-var-seedling; } +.@{fa-css-prefix}-sellcast:before { content: @fa-var-sellcast; } +.@{fa-css-prefix}-sellsy:before { content: @fa-var-sellsy; } +.@{fa-css-prefix}-server:before { content: @fa-var-server; } +.@{fa-css-prefix}-servicestack:before { content: @fa-var-servicestack; } +.@{fa-css-prefix}-share:before { content: @fa-var-share; } +.@{fa-css-prefix}-share-alt:before { content: @fa-var-share-alt; } +.@{fa-css-prefix}-share-alt-square:before { content: @fa-var-share-alt-square; } +.@{fa-css-prefix}-share-square:before { content: @fa-var-share-square; } +.@{fa-css-prefix}-shekel-sign:before { content: @fa-var-shekel-sign; } +.@{fa-css-prefix}-shield-alt:before { content: @fa-var-shield-alt; } +.@{fa-css-prefix}-ship:before { content: @fa-var-ship; } +.@{fa-css-prefix}-shipping-fast:before { content: @fa-var-shipping-fast; } +.@{fa-css-prefix}-shirtsinbulk:before { content: @fa-var-shirtsinbulk; } +.@{fa-css-prefix}-shopping-bag:before { content: @fa-var-shopping-bag; } +.@{fa-css-prefix}-shopping-basket:before { content: @fa-var-shopping-basket; } +.@{fa-css-prefix}-shopping-cart:before { content: @fa-var-shopping-cart; } +.@{fa-css-prefix}-shower:before { content: @fa-var-shower; } +.@{fa-css-prefix}-sign:before { content: @fa-var-sign; } +.@{fa-css-prefix}-sign-in-alt:before { content: @fa-var-sign-in-alt; } +.@{fa-css-prefix}-sign-language:before { content: @fa-var-sign-language; } +.@{fa-css-prefix}-sign-out-alt:before { content: @fa-var-sign-out-alt; } +.@{fa-css-prefix}-signal:before { content: @fa-var-signal; } +.@{fa-css-prefix}-simplybuilt:before { content: @fa-var-simplybuilt; } +.@{fa-css-prefix}-sistrix:before { content: @fa-var-sistrix; } +.@{fa-css-prefix}-sitemap:before { content: @fa-var-sitemap; } +.@{fa-css-prefix}-skyatlas:before { content: @fa-var-skyatlas; } +.@{fa-css-prefix}-skype:before { content: @fa-var-skype; } +.@{fa-css-prefix}-slack:before { content: @fa-var-slack; } +.@{fa-css-prefix}-slack-hash:before { content: @fa-var-slack-hash; } +.@{fa-css-prefix}-sliders-h:before { content: @fa-var-sliders-h; } +.@{fa-css-prefix}-slideshare:before { content: @fa-var-slideshare; } +.@{fa-css-prefix}-smile:before { content: @fa-var-smile; } +.@{fa-css-prefix}-smoking:before { content: @fa-var-smoking; } +.@{fa-css-prefix}-snapchat:before { content: @fa-var-snapchat; } +.@{fa-css-prefix}-snapchat-ghost:before { content: @fa-var-snapchat-ghost; } +.@{fa-css-prefix}-snapchat-square:before { content: @fa-var-snapchat-square; } +.@{fa-css-prefix}-snowflake:before { content: @fa-var-snowflake; } +.@{fa-css-prefix}-sort:before { content: @fa-var-sort; } +.@{fa-css-prefix}-sort-alpha-down:before { content: @fa-var-sort-alpha-down; } +.@{fa-css-prefix}-sort-alpha-up:before { content: @fa-var-sort-alpha-up; } +.@{fa-css-prefix}-sort-amount-down:before { content: @fa-var-sort-amount-down; } +.@{fa-css-prefix}-sort-amount-up:before { content: @fa-var-sort-amount-up; } +.@{fa-css-prefix}-sort-down:before { content: @fa-var-sort-down; } +.@{fa-css-prefix}-sort-numeric-down:before { content: @fa-var-sort-numeric-down; } +.@{fa-css-prefix}-sort-numeric-up:before { content: @fa-var-sort-numeric-up; } +.@{fa-css-prefix}-sort-up:before { content: @fa-var-sort-up; } +.@{fa-css-prefix}-soundcloud:before { content: @fa-var-soundcloud; } +.@{fa-css-prefix}-space-shuttle:before { content: @fa-var-space-shuttle; } +.@{fa-css-prefix}-speakap:before { content: @fa-var-speakap; } +.@{fa-css-prefix}-spinner:before { content: @fa-var-spinner; } +.@{fa-css-prefix}-spotify:before { content: @fa-var-spotify; } +.@{fa-css-prefix}-square:before { content: @fa-var-square; } +.@{fa-css-prefix}-square-full:before { content: @fa-var-square-full; } +.@{fa-css-prefix}-stack-exchange:before { content: @fa-var-stack-exchange; } +.@{fa-css-prefix}-stack-overflow:before { content: @fa-var-stack-overflow; } +.@{fa-css-prefix}-star:before { content: @fa-var-star; } +.@{fa-css-prefix}-star-half:before { content: @fa-var-star-half; } +.@{fa-css-prefix}-staylinked:before { content: @fa-var-staylinked; } +.@{fa-css-prefix}-steam:before { content: @fa-var-steam; } +.@{fa-css-prefix}-steam-square:before { content: @fa-var-steam-square; } +.@{fa-css-prefix}-steam-symbol:before { content: @fa-var-steam-symbol; } +.@{fa-css-prefix}-step-backward:before { content: @fa-var-step-backward; } +.@{fa-css-prefix}-step-forward:before { content: @fa-var-step-forward; } +.@{fa-css-prefix}-stethoscope:before { content: @fa-var-stethoscope; } +.@{fa-css-prefix}-sticker-mule:before { content: @fa-var-sticker-mule; } +.@{fa-css-prefix}-sticky-note:before { content: @fa-var-sticky-note; } +.@{fa-css-prefix}-stop:before { content: @fa-var-stop; } +.@{fa-css-prefix}-stop-circle:before { content: @fa-var-stop-circle; } +.@{fa-css-prefix}-stopwatch:before { content: @fa-var-stopwatch; } +.@{fa-css-prefix}-strava:before { content: @fa-var-strava; } +.@{fa-css-prefix}-street-view:before { content: @fa-var-street-view; } +.@{fa-css-prefix}-strikethrough:before { content: @fa-var-strikethrough; } +.@{fa-css-prefix}-stripe:before { content: @fa-var-stripe; } +.@{fa-css-prefix}-stripe-s:before { content: @fa-var-stripe-s; } +.@{fa-css-prefix}-studiovinari:before { content: @fa-var-studiovinari; } +.@{fa-css-prefix}-stumbleupon:before { content: @fa-var-stumbleupon; } +.@{fa-css-prefix}-stumbleupon-circle:before { content: @fa-var-stumbleupon-circle; } +.@{fa-css-prefix}-subscript:before { content: @fa-var-subscript; } +.@{fa-css-prefix}-subway:before { content: @fa-var-subway; } +.@{fa-css-prefix}-suitcase:before { content: @fa-var-suitcase; } +.@{fa-css-prefix}-sun:before { content: @fa-var-sun; } +.@{fa-css-prefix}-superpowers:before { content: @fa-var-superpowers; } +.@{fa-css-prefix}-superscript:before { content: @fa-var-superscript; } +.@{fa-css-prefix}-supple:before { content: @fa-var-supple; } +.@{fa-css-prefix}-sync:before { content: @fa-var-sync; } +.@{fa-css-prefix}-sync-alt:before { content: @fa-var-sync-alt; } +.@{fa-css-prefix}-syringe:before { content: @fa-var-syringe; } +.@{fa-css-prefix}-table:before { content: @fa-var-table; } +.@{fa-css-prefix}-table-tennis:before { content: @fa-var-table-tennis; } +.@{fa-css-prefix}-tablet:before { content: @fa-var-tablet; } +.@{fa-css-prefix}-tablet-alt:before { content: @fa-var-tablet-alt; } +.@{fa-css-prefix}-tablets:before { content: @fa-var-tablets; } +.@{fa-css-prefix}-tachometer-alt:before { content: @fa-var-tachometer-alt; } +.@{fa-css-prefix}-tag:before { content: @fa-var-tag; } +.@{fa-css-prefix}-tags:before { content: @fa-var-tags; } +.@{fa-css-prefix}-tape:before { content: @fa-var-tape; } +.@{fa-css-prefix}-tasks:before { content: @fa-var-tasks; } +.@{fa-css-prefix}-taxi:before { content: @fa-var-taxi; } +.@{fa-css-prefix}-telegram:before { content: @fa-var-telegram; } +.@{fa-css-prefix}-telegram-plane:before { content: @fa-var-telegram-plane; } +.@{fa-css-prefix}-tencent-weibo:before { content: @fa-var-tencent-weibo; } +.@{fa-css-prefix}-terminal:before { content: @fa-var-terminal; } +.@{fa-css-prefix}-text-height:before { content: @fa-var-text-height; } +.@{fa-css-prefix}-text-width:before { content: @fa-var-text-width; } +.@{fa-css-prefix}-th:before { content: @fa-var-th; } +.@{fa-css-prefix}-th-large:before { content: @fa-var-th-large; } +.@{fa-css-prefix}-th-list:before { content: @fa-var-th-list; } +.@{fa-css-prefix}-themeisle:before { content: @fa-var-themeisle; } +.@{fa-css-prefix}-thermometer:before { content: @fa-var-thermometer; } +.@{fa-css-prefix}-thermometer-empty:before { content: @fa-var-thermometer-empty; } +.@{fa-css-prefix}-thermometer-full:before { content: @fa-var-thermometer-full; } +.@{fa-css-prefix}-thermometer-half:before { content: @fa-var-thermometer-half; } +.@{fa-css-prefix}-thermometer-quarter:before { content: @fa-var-thermometer-quarter; } +.@{fa-css-prefix}-thermometer-three-quarters:before { content: @fa-var-thermometer-three-quarters; } +.@{fa-css-prefix}-thumbs-down:before { content: @fa-var-thumbs-down; } +.@{fa-css-prefix}-thumbs-up:before { content: @fa-var-thumbs-up; } +.@{fa-css-prefix}-thumbtack:before { content: @fa-var-thumbtack; } +.@{fa-css-prefix}-ticket-alt:before { content: @fa-var-ticket-alt; } +.@{fa-css-prefix}-times:before { content: @fa-var-times; } +.@{fa-css-prefix}-times-circle:before { content: @fa-var-times-circle; } +.@{fa-css-prefix}-tint:before { content: @fa-var-tint; } +.@{fa-css-prefix}-toggle-off:before { content: @fa-var-toggle-off; } +.@{fa-css-prefix}-toggle-on:before { content: @fa-var-toggle-on; } +.@{fa-css-prefix}-trademark:before { content: @fa-var-trademark; } +.@{fa-css-prefix}-train:before { content: @fa-var-train; } +.@{fa-css-prefix}-transgender:before { content: @fa-var-transgender; } +.@{fa-css-prefix}-transgender-alt:before { content: @fa-var-transgender-alt; } +.@{fa-css-prefix}-trash:before { content: @fa-var-trash; } +.@{fa-css-prefix}-trash-alt:before { content: @fa-var-trash-alt; } +.@{fa-css-prefix}-tree:before { content: @fa-var-tree; } +.@{fa-css-prefix}-trello:before { content: @fa-var-trello; } +.@{fa-css-prefix}-tripadvisor:before { content: @fa-var-tripadvisor; } +.@{fa-css-prefix}-trophy:before { content: @fa-var-trophy; } +.@{fa-css-prefix}-truck:before { content: @fa-var-truck; } +.@{fa-css-prefix}-truck-loading:before { content: @fa-var-truck-loading; } +.@{fa-css-prefix}-truck-moving:before { content: @fa-var-truck-moving; } +.@{fa-css-prefix}-tty:before { content: @fa-var-tty; } +.@{fa-css-prefix}-tumblr:before { content: @fa-var-tumblr; } +.@{fa-css-prefix}-tumblr-square:before { content: @fa-var-tumblr-square; } +.@{fa-css-prefix}-tv:before { content: @fa-var-tv; } +.@{fa-css-prefix}-twitch:before { content: @fa-var-twitch; } +.@{fa-css-prefix}-twitter:before { content: @fa-var-twitter; } +.@{fa-css-prefix}-twitter-square:before { content: @fa-var-twitter-square; } +.@{fa-css-prefix}-typo3:before { content: @fa-var-typo3; } +.@{fa-css-prefix}-uber:before { content: @fa-var-uber; } +.@{fa-css-prefix}-uikit:before { content: @fa-var-uikit; } +.@{fa-css-prefix}-umbrella:before { content: @fa-var-umbrella; } +.@{fa-css-prefix}-underline:before { content: @fa-var-underline; } +.@{fa-css-prefix}-undo:before { content: @fa-var-undo; } +.@{fa-css-prefix}-undo-alt:before { content: @fa-var-undo-alt; } +.@{fa-css-prefix}-uniregistry:before { content: @fa-var-uniregistry; } +.@{fa-css-prefix}-universal-access:before { content: @fa-var-universal-access; } +.@{fa-css-prefix}-university:before { content: @fa-var-university; } +.@{fa-css-prefix}-unlink:before { content: @fa-var-unlink; } +.@{fa-css-prefix}-unlock:before { content: @fa-var-unlock; } +.@{fa-css-prefix}-unlock-alt:before { content: @fa-var-unlock-alt; } +.@{fa-css-prefix}-untappd:before { content: @fa-var-untappd; } +.@{fa-css-prefix}-upload:before { content: @fa-var-upload; } +.@{fa-css-prefix}-usb:before { content: @fa-var-usb; } +.@{fa-css-prefix}-user:before { content: @fa-var-user; } +.@{fa-css-prefix}-user-circle:before { content: @fa-var-user-circle; } +.@{fa-css-prefix}-user-md:before { content: @fa-var-user-md; } +.@{fa-css-prefix}-user-plus:before { content: @fa-var-user-plus; } +.@{fa-css-prefix}-user-secret:before { content: @fa-var-user-secret; } +.@{fa-css-prefix}-user-times:before { content: @fa-var-user-times; } +.@{fa-css-prefix}-users:before { content: @fa-var-users; } +.@{fa-css-prefix}-ussunnah:before { content: @fa-var-ussunnah; } +.@{fa-css-prefix}-utensil-spoon:before { content: @fa-var-utensil-spoon; } +.@{fa-css-prefix}-utensils:before { content: @fa-var-utensils; } +.@{fa-css-prefix}-vaadin:before { content: @fa-var-vaadin; } +.@{fa-css-prefix}-venus:before { content: @fa-var-venus; } +.@{fa-css-prefix}-venus-double:before { content: @fa-var-venus-double; } +.@{fa-css-prefix}-venus-mars:before { content: @fa-var-venus-mars; } +.@{fa-css-prefix}-viacoin:before { content: @fa-var-viacoin; } +.@{fa-css-prefix}-viadeo:before { content: @fa-var-viadeo; } +.@{fa-css-prefix}-viadeo-square:before { content: @fa-var-viadeo-square; } +.@{fa-css-prefix}-vial:before { content: @fa-var-vial; } +.@{fa-css-prefix}-vials:before { content: @fa-var-vials; } +.@{fa-css-prefix}-viber:before { content: @fa-var-viber; } +.@{fa-css-prefix}-video:before { content: @fa-var-video; } +.@{fa-css-prefix}-video-slash:before { content: @fa-var-video-slash; } +.@{fa-css-prefix}-vimeo:before { content: @fa-var-vimeo; } +.@{fa-css-prefix}-vimeo-square:before { content: @fa-var-vimeo-square; } +.@{fa-css-prefix}-vimeo-v:before { content: @fa-var-vimeo-v; } +.@{fa-css-prefix}-vine:before { content: @fa-var-vine; } +.@{fa-css-prefix}-vk:before { content: @fa-var-vk; } +.@{fa-css-prefix}-vnv:before { content: @fa-var-vnv; } +.@{fa-css-prefix}-volleyball-ball:before { content: @fa-var-volleyball-ball; } +.@{fa-css-prefix}-volume-down:before { content: @fa-var-volume-down; } +.@{fa-css-prefix}-volume-off:before { content: @fa-var-volume-off; } +.@{fa-css-prefix}-volume-up:before { content: @fa-var-volume-up; } +.@{fa-css-prefix}-vuejs:before { content: @fa-var-vuejs; } +.@{fa-css-prefix}-warehouse:before { content: @fa-var-warehouse; } +.@{fa-css-prefix}-weibo:before { content: @fa-var-weibo; } +.@{fa-css-prefix}-weight:before { content: @fa-var-weight; } +.@{fa-css-prefix}-weixin:before { content: @fa-var-weixin; } +.@{fa-css-prefix}-whatsapp:before { content: @fa-var-whatsapp; } +.@{fa-css-prefix}-whatsapp-square:before { content: @fa-var-whatsapp-square; } +.@{fa-css-prefix}-wheelchair:before { content: @fa-var-wheelchair; } +.@{fa-css-prefix}-whmcs:before { content: @fa-var-whmcs; } +.@{fa-css-prefix}-wifi:before { content: @fa-var-wifi; } +.@{fa-css-prefix}-wikipedia-w:before { content: @fa-var-wikipedia-w; } +.@{fa-css-prefix}-window-close:before { content: @fa-var-window-close; } +.@{fa-css-prefix}-window-maximize:before { content: @fa-var-window-maximize; } +.@{fa-css-prefix}-window-minimize:before { content: @fa-var-window-minimize; } +.@{fa-css-prefix}-window-restore:before { content: @fa-var-window-restore; } +.@{fa-css-prefix}-windows:before { content: @fa-var-windows; } +.@{fa-css-prefix}-wine-glass:before { content: @fa-var-wine-glass; } +.@{fa-css-prefix}-won-sign:before { content: @fa-var-won-sign; } +.@{fa-css-prefix}-wordpress:before { content: @fa-var-wordpress; } +.@{fa-css-prefix}-wordpress-simple:before { content: @fa-var-wordpress-simple; } +.@{fa-css-prefix}-wpbeginner:before { content: @fa-var-wpbeginner; } +.@{fa-css-prefix}-wpexplorer:before { content: @fa-var-wpexplorer; } +.@{fa-css-prefix}-wpforms:before { content: @fa-var-wpforms; } +.@{fa-css-prefix}-wrench:before { content: @fa-var-wrench; } +.@{fa-css-prefix}-x-ray:before { content: @fa-var-x-ray; } +.@{fa-css-prefix}-xbox:before { content: @fa-var-xbox; } +.@{fa-css-prefix}-xing:before { content: @fa-var-xing; } +.@{fa-css-prefix}-xing-square:before { content: @fa-var-xing-square; } +.@{fa-css-prefix}-y-combinator:before { content: @fa-var-y-combinator; } +.@{fa-css-prefix}-yahoo:before { content: @fa-var-yahoo; } +.@{fa-css-prefix}-yandex:before { content: @fa-var-yandex; } +.@{fa-css-prefix}-yandex-international:before { content: @fa-var-yandex-international; } +.@{fa-css-prefix}-yelp:before { content: @fa-var-yelp; } +.@{fa-css-prefix}-yen-sign:before { content: @fa-var-yen-sign; } +.@{fa-css-prefix}-yoast:before { content: @fa-var-yoast; } +.@{fa-css-prefix}-youtube:before { content: @fa-var-youtube; } +.@{fa-css-prefix}-youtube-square:before { content: @fa-var-youtube-square; } diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_larger.less b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_larger.less new file mode 100644 index 000000000000..6cbb1ec6ec5b --- /dev/null +++ b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_larger.less @@ -0,0 +1,27 @@ +// Icon Sizes +// ------------------------- + +.larger(@factor) when (@factor > 0) { + .larger((@factor - 1)); + + .@{fa-css-prefix}-@{factor}x { + font-size: (@factor * 1em); + } +} + +/* makes the font 33% larger relative to the icon container */ +.@{fa-css-prefix}-lg { + font-size: (4em / 3); + line-height: (3em / 4); + vertical-align: -.0667em; +} + +.@{fa-css-prefix}-xs { + font-size: .75em; +} + +.@{fa-css-prefix}-sm { + font-size: .875em; +} + +.larger(10); diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_list.less b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_list.less new file mode 100644 index 000000000000..1ff7ca7f5998 --- /dev/null +++ b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_list.less @@ -0,0 +1,18 @@ +// List Icons +// ------------------------- + +.@{fa-css-prefix}-ul { + list-style-type: none; + margin-left: @fa-li-width * 5/4; + padding-left: 0; + + > li { position: relative; } +} + +.@{fa-css-prefix}-li { + left: -@fa-li-width; + position: absolute; + text-align: center; + width: @fa-li-width; + line-height: inherit; +} diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_mixins.less b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_mixins.less new file mode 100644 index 000000000000..a4e93f90a39d --- /dev/null +++ b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_mixins.less @@ -0,0 +1,57 @@ +// Mixins +// -------------------------- + +.fa-icon() { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + font-weight: normal; + line-height: 1; + vertical-align: -.125em; +} + +.fa-icon-rotate(@degrees, @rotation) { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation})"; + transform: rotate(@degrees); +} + +.fa-icon-flip(@horiz, @vert, @rotation) { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation}, mirror=1)"; + transform: scale(@horiz, @vert); +} + + +// Only display content to screen readers. A la Bootstrap 4. +// +// See: http://a11yproject.com/posts/how-to-hide-content/ + +.sr-only() { + border: 0; + clip: rect(0,0,0,0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} + +// Use in conjunction with .sr-only to only display content when it's focused. +// +// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 +// +// Credit: HTML5 Boilerplate + +.sr-only-focusable() { + &:active, + &:focus { + clip: auto; + height: auto; + margin: 0; + overflow: visible; + position: static; + width: auto; + } +} diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_rotated-flipped.less b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_rotated-flipped.less new file mode 100644 index 000000000000..1ee31db19f44 --- /dev/null +++ b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_rotated-flipped.less @@ -0,0 +1,23 @@ +// Rotated & Flipped Icons +// ------------------------- + +.@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); } +.@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); } +.@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); } + +.@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); } +.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); } +.@{fa-css-prefix}-flip-horizontal.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(-1, -1, 2); } + +// Hook for IE8-9 +// ------------------------- + +:root { + .@{fa-css-prefix}-rotate-90, + .@{fa-css-prefix}-rotate-180, + .@{fa-css-prefix}-rotate-270, + .@{fa-css-prefix}-flip-horizontal, + .@{fa-css-prefix}-flip-vertical { + filter: none; + } +} diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_screen-reader.less b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_screen-reader.less new file mode 100644 index 000000000000..11c188196d5a --- /dev/null +++ b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_screen-reader.less @@ -0,0 +1,5 @@ +// Screen Readers +// ------------------------- + +.sr-only { .sr-only(); } +.sr-only-focusable { .sr-only-focusable(); } diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_stacked.less b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_stacked.less new file mode 100644 index 000000000000..263b5c44fceb --- /dev/null +++ b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_stacked.less @@ -0,0 +1,22 @@ +// Stacked Icons +// ------------------------- + +.@{fa-css-prefix}-stack { + display: inline-block; + height: 2em; + line-height: 2em; + position: relative; + vertical-align: middle; + width: 2em; +} + +.@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x { + left: 0; + position: absolute; + text-align: center; + width: 100%; +} + +.@{fa-css-prefix}-stack-1x { line-height: inherit; } +.@{fa-css-prefix}-stack-2x { font-size: 2em; } +.@{fa-css-prefix}-inverse { color: @fa-inverse; } diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_variables.less b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_variables.less new file mode 100644 index 000000000000..19d5a9ee61a5 --- /dev/null +++ b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/_variables.less @@ -0,0 +1,887 @@ +// Variables +// -------------------------- + +@fa-font-path: "../webfonts"; +@fa-font-size-base: 16px; +@fa-line-height-base: 1; +@fa-css-prefix: fa; +@fa-version: "5.0.10"; +@fa-border-color: #eee; +@fa-inverse: #fff; +@fa-li-width: 2em; + +@fa-var-500px: "\f26e"; +@fa-var-accessible-icon: "\f368"; +@fa-var-accusoft: "\f369"; +@fa-var-address-book: "\f2b9"; +@fa-var-address-card: "\f2bb"; +@fa-var-adjust: "\f042"; +@fa-var-adn: "\f170"; +@fa-var-adversal: "\f36a"; +@fa-var-affiliatetheme: "\f36b"; +@fa-var-algolia: "\f36c"; +@fa-var-align-center: "\f037"; +@fa-var-align-justify: "\f039"; +@fa-var-align-left: "\f036"; +@fa-var-align-right: "\f038"; +@fa-var-allergies: "\f461"; +@fa-var-amazon: "\f270"; +@fa-var-amazon-pay: "\f42c"; +@fa-var-ambulance: "\f0f9"; +@fa-var-american-sign-language-interpreting: "\f2a3"; +@fa-var-amilia: "\f36d"; +@fa-var-anchor: "\f13d"; +@fa-var-android: "\f17b"; +@fa-var-angellist: "\f209"; +@fa-var-angle-double-down: "\f103"; +@fa-var-angle-double-left: "\f100"; +@fa-var-angle-double-right: "\f101"; +@fa-var-angle-double-up: "\f102"; +@fa-var-angle-down: "\f107"; +@fa-var-angle-left: "\f104"; +@fa-var-angle-right: "\f105"; +@fa-var-angle-up: "\f106"; +@fa-var-angrycreative: "\f36e"; +@fa-var-angular: "\f420"; +@fa-var-app-store: "\f36f"; +@fa-var-app-store-ios: "\f370"; +@fa-var-apper: "\f371"; +@fa-var-apple: "\f179"; +@fa-var-apple-pay: "\f415"; +@fa-var-archive: "\f187"; +@fa-var-arrow-alt-circle-down: "\f358"; +@fa-var-arrow-alt-circle-left: "\f359"; +@fa-var-arrow-alt-circle-right: "\f35a"; +@fa-var-arrow-alt-circle-up: "\f35b"; +@fa-var-arrow-circle-down: "\f0ab"; +@fa-var-arrow-circle-left: "\f0a8"; +@fa-var-arrow-circle-right: "\f0a9"; +@fa-var-arrow-circle-up: "\f0aa"; +@fa-var-arrow-down: "\f063"; +@fa-var-arrow-left: "\f060"; +@fa-var-arrow-right: "\f061"; +@fa-var-arrow-up: "\f062"; +@fa-var-arrows-alt: "\f0b2"; +@fa-var-arrows-alt-h: "\f337"; +@fa-var-arrows-alt-v: "\f338"; +@fa-var-assistive-listening-systems: "\f2a2"; +@fa-var-asterisk: "\f069"; +@fa-var-asymmetrik: "\f372"; +@fa-var-at: "\f1fa"; +@fa-var-audible: "\f373"; +@fa-var-audio-description: "\f29e"; +@fa-var-autoprefixer: "\f41c"; +@fa-var-avianex: "\f374"; +@fa-var-aviato: "\f421"; +@fa-var-aws: "\f375"; +@fa-var-backward: "\f04a"; +@fa-var-balance-scale: "\f24e"; +@fa-var-ban: "\f05e"; +@fa-var-band-aid: "\f462"; +@fa-var-bandcamp: "\f2d5"; +@fa-var-barcode: "\f02a"; +@fa-var-bars: "\f0c9"; +@fa-var-baseball-ball: "\f433"; +@fa-var-basketball-ball: "\f434"; +@fa-var-bath: "\f2cd"; +@fa-var-battery-empty: "\f244"; +@fa-var-battery-full: "\f240"; +@fa-var-battery-half: "\f242"; +@fa-var-battery-quarter: "\f243"; +@fa-var-battery-three-quarters: "\f241"; +@fa-var-bed: "\f236"; +@fa-var-beer: "\f0fc"; +@fa-var-behance: "\f1b4"; +@fa-var-behance-square: "\f1b5"; +@fa-var-bell: "\f0f3"; +@fa-var-bell-slash: "\f1f6"; +@fa-var-bicycle: "\f206"; +@fa-var-bimobject: "\f378"; +@fa-var-binoculars: "\f1e5"; +@fa-var-birthday-cake: "\f1fd"; +@fa-var-bitbucket: "\f171"; +@fa-var-bitcoin: "\f379"; +@fa-var-bity: "\f37a"; +@fa-var-black-tie: "\f27e"; +@fa-var-blackberry: "\f37b"; +@fa-var-blind: "\f29d"; +@fa-var-blogger: "\f37c"; +@fa-var-blogger-b: "\f37d"; +@fa-var-bluetooth: "\f293"; +@fa-var-bluetooth-b: "\f294"; +@fa-var-bold: "\f032"; +@fa-var-bolt: "\f0e7"; +@fa-var-bomb: "\f1e2"; +@fa-var-book: "\f02d"; +@fa-var-bookmark: "\f02e"; +@fa-var-bowling-ball: "\f436"; +@fa-var-box: "\f466"; +@fa-var-box-open: "\f49e"; +@fa-var-boxes: "\f468"; +@fa-var-braille: "\f2a1"; +@fa-var-briefcase: "\f0b1"; +@fa-var-briefcase-medical: "\f469"; +@fa-var-btc: "\f15a"; +@fa-var-bug: "\f188"; +@fa-var-building: "\f1ad"; +@fa-var-bullhorn: "\f0a1"; +@fa-var-bullseye: "\f140"; +@fa-var-burn: "\f46a"; +@fa-var-buromobelexperte: "\f37f"; +@fa-var-bus: "\f207"; +@fa-var-buysellads: "\f20d"; +@fa-var-calculator: "\f1ec"; +@fa-var-calendar: "\f133"; +@fa-var-calendar-alt: "\f073"; +@fa-var-calendar-check: "\f274"; +@fa-var-calendar-minus: "\f272"; +@fa-var-calendar-plus: "\f271"; +@fa-var-calendar-times: "\f273"; +@fa-var-camera: "\f030"; +@fa-var-camera-retro: "\f083"; +@fa-var-capsules: "\f46b"; +@fa-var-car: "\f1b9"; +@fa-var-caret-down: "\f0d7"; +@fa-var-caret-left: "\f0d9"; +@fa-var-caret-right: "\f0da"; +@fa-var-caret-square-down: "\f150"; +@fa-var-caret-square-left: "\f191"; +@fa-var-caret-square-right: "\f152"; +@fa-var-caret-square-up: "\f151"; +@fa-var-caret-up: "\f0d8"; +@fa-var-cart-arrow-down: "\f218"; +@fa-var-cart-plus: "\f217"; +@fa-var-cc-amazon-pay: "\f42d"; +@fa-var-cc-amex: "\f1f3"; +@fa-var-cc-apple-pay: "\f416"; +@fa-var-cc-diners-club: "\f24c"; +@fa-var-cc-discover: "\f1f2"; +@fa-var-cc-jcb: "\f24b"; +@fa-var-cc-mastercard: "\f1f1"; +@fa-var-cc-paypal: "\f1f4"; +@fa-var-cc-stripe: "\f1f5"; +@fa-var-cc-visa: "\f1f0"; +@fa-var-centercode: "\f380"; +@fa-var-certificate: "\f0a3"; +@fa-var-chart-area: "\f1fe"; +@fa-var-chart-bar: "\f080"; +@fa-var-chart-line: "\f201"; +@fa-var-chart-pie: "\f200"; +@fa-var-check: "\f00c"; +@fa-var-check-circle: "\f058"; +@fa-var-check-square: "\f14a"; +@fa-var-chess: "\f439"; +@fa-var-chess-bishop: "\f43a"; +@fa-var-chess-board: "\f43c"; +@fa-var-chess-king: "\f43f"; +@fa-var-chess-knight: "\f441"; +@fa-var-chess-pawn: "\f443"; +@fa-var-chess-queen: "\f445"; +@fa-var-chess-rook: "\f447"; +@fa-var-chevron-circle-down: "\f13a"; +@fa-var-chevron-circle-left: "\f137"; +@fa-var-chevron-circle-right: "\f138"; +@fa-var-chevron-circle-up: "\f139"; +@fa-var-chevron-down: "\f078"; +@fa-var-chevron-left: "\f053"; +@fa-var-chevron-right: "\f054"; +@fa-var-chevron-up: "\f077"; +@fa-var-child: "\f1ae"; +@fa-var-chrome: "\f268"; +@fa-var-circle: "\f111"; +@fa-var-circle-notch: "\f1ce"; +@fa-var-clipboard: "\f328"; +@fa-var-clipboard-check: "\f46c"; +@fa-var-clipboard-list: "\f46d"; +@fa-var-clock: "\f017"; +@fa-var-clone: "\f24d"; +@fa-var-closed-captioning: "\f20a"; +@fa-var-cloud: "\f0c2"; +@fa-var-cloud-download-alt: "\f381"; +@fa-var-cloud-upload-alt: "\f382"; +@fa-var-cloudscale: "\f383"; +@fa-var-cloudsmith: "\f384"; +@fa-var-cloudversify: "\f385"; +@fa-var-code: "\f121"; +@fa-var-code-branch: "\f126"; +@fa-var-codepen: "\f1cb"; +@fa-var-codiepie: "\f284"; +@fa-var-coffee: "\f0f4"; +@fa-var-cog: "\f013"; +@fa-var-cogs: "\f085"; +@fa-var-columns: "\f0db"; +@fa-var-comment: "\f075"; +@fa-var-comment-alt: "\f27a"; +@fa-var-comment-dots: "\f4ad"; +@fa-var-comment-slash: "\f4b3"; +@fa-var-comments: "\f086"; +@fa-var-compass: "\f14e"; +@fa-var-compress: "\f066"; +@fa-var-connectdevelop: "\f20e"; +@fa-var-contao: "\f26d"; +@fa-var-copy: "\f0c5"; +@fa-var-copyright: "\f1f9"; +@fa-var-couch: "\f4b8"; +@fa-var-cpanel: "\f388"; +@fa-var-creative-commons: "\f25e"; +@fa-var-credit-card: "\f09d"; +@fa-var-crop: "\f125"; +@fa-var-crosshairs: "\f05b"; +@fa-var-css3: "\f13c"; +@fa-var-css3-alt: "\f38b"; +@fa-var-cube: "\f1b2"; +@fa-var-cubes: "\f1b3"; +@fa-var-cut: "\f0c4"; +@fa-var-cuttlefish: "\f38c"; +@fa-var-d-and-d: "\f38d"; +@fa-var-dashcube: "\f210"; +@fa-var-database: "\f1c0"; +@fa-var-deaf: "\f2a4"; +@fa-var-delicious: "\f1a5"; +@fa-var-deploydog: "\f38e"; +@fa-var-deskpro: "\f38f"; +@fa-var-desktop: "\f108"; +@fa-var-deviantart: "\f1bd"; +@fa-var-diagnoses: "\f470"; +@fa-var-digg: "\f1a6"; +@fa-var-digital-ocean: "\f391"; +@fa-var-discord: "\f392"; +@fa-var-discourse: "\f393"; +@fa-var-dna: "\f471"; +@fa-var-dochub: "\f394"; +@fa-var-docker: "\f395"; +@fa-var-dollar-sign: "\f155"; +@fa-var-dolly: "\f472"; +@fa-var-dolly-flatbed: "\f474"; +@fa-var-donate: "\f4b9"; +@fa-var-dot-circle: "\f192"; +@fa-var-dove: "\f4ba"; +@fa-var-download: "\f019"; +@fa-var-draft2digital: "\f396"; +@fa-var-dribbble: "\f17d"; +@fa-var-dribbble-square: "\f397"; +@fa-var-dropbox: "\f16b"; +@fa-var-drupal: "\f1a9"; +@fa-var-dyalog: "\f399"; +@fa-var-earlybirds: "\f39a"; +@fa-var-edge: "\f282"; +@fa-var-edit: "\f044"; +@fa-var-eject: "\f052"; +@fa-var-elementor: "\f430"; +@fa-var-ellipsis-h: "\f141"; +@fa-var-ellipsis-v: "\f142"; +@fa-var-ember: "\f423"; +@fa-var-empire: "\f1d1"; +@fa-var-envelope: "\f0e0"; +@fa-var-envelope-open: "\f2b6"; +@fa-var-envelope-square: "\f199"; +@fa-var-envira: "\f299"; +@fa-var-eraser: "\f12d"; +@fa-var-erlang: "\f39d"; +@fa-var-ethereum: "\f42e"; +@fa-var-etsy: "\f2d7"; +@fa-var-euro-sign: "\f153"; +@fa-var-exchange-alt: "\f362"; +@fa-var-exclamation: "\f12a"; +@fa-var-exclamation-circle: "\f06a"; +@fa-var-exclamation-triangle: "\f071"; +@fa-var-expand: "\f065"; +@fa-var-expand-arrows-alt: "\f31e"; +@fa-var-expeditedssl: "\f23e"; +@fa-var-external-link-alt: "\f35d"; +@fa-var-external-link-square-alt: "\f360"; +@fa-var-eye: "\f06e"; +@fa-var-eye-dropper: "\f1fb"; +@fa-var-eye-slash: "\f070"; +@fa-var-facebook: "\f09a"; +@fa-var-facebook-f: "\f39e"; +@fa-var-facebook-messenger: "\f39f"; +@fa-var-facebook-square: "\f082"; +@fa-var-fast-backward: "\f049"; +@fa-var-fast-forward: "\f050"; +@fa-var-fax: "\f1ac"; +@fa-var-female: "\f182"; +@fa-var-fighter-jet: "\f0fb"; +@fa-var-file: "\f15b"; +@fa-var-file-alt: "\f15c"; +@fa-var-file-archive: "\f1c6"; +@fa-var-file-audio: "\f1c7"; +@fa-var-file-code: "\f1c9"; +@fa-var-file-excel: "\f1c3"; +@fa-var-file-image: "\f1c5"; +@fa-var-file-medical: "\f477"; +@fa-var-file-medical-alt: "\f478"; +@fa-var-file-pdf: "\f1c1"; +@fa-var-file-powerpoint: "\f1c4"; +@fa-var-file-video: "\f1c8"; +@fa-var-file-word: "\f1c2"; +@fa-var-film: "\f008"; +@fa-var-filter: "\f0b0"; +@fa-var-fire: "\f06d"; +@fa-var-fire-extinguisher: "\f134"; +@fa-var-firefox: "\f269"; +@fa-var-first-aid: "\f479"; +@fa-var-first-order: "\f2b0"; +@fa-var-firstdraft: "\f3a1"; +@fa-var-flag: "\f024"; +@fa-var-flag-checkered: "\f11e"; +@fa-var-flask: "\f0c3"; +@fa-var-flickr: "\f16e"; +@fa-var-flipboard: "\f44d"; +@fa-var-fly: "\f417"; +@fa-var-folder: "\f07b"; +@fa-var-folder-open: "\f07c"; +@fa-var-font: "\f031"; +@fa-var-font-awesome: "\f2b4"; +@fa-var-font-awesome-alt: "\f35c"; +@fa-var-font-awesome-flag: "\f425"; +@fa-var-fonticons: "\f280"; +@fa-var-fonticons-fi: "\f3a2"; +@fa-var-football-ball: "\f44e"; +@fa-var-fort-awesome: "\f286"; +@fa-var-fort-awesome-alt: "\f3a3"; +@fa-var-forumbee: "\f211"; +@fa-var-forward: "\f04e"; +@fa-var-foursquare: "\f180"; +@fa-var-free-code-camp: "\f2c5"; +@fa-var-freebsd: "\f3a4"; +@fa-var-frown: "\f119"; +@fa-var-futbol: "\f1e3"; +@fa-var-gamepad: "\f11b"; +@fa-var-gavel: "\f0e3"; +@fa-var-gem: "\f3a5"; +@fa-var-genderless: "\f22d"; +@fa-var-get-pocket: "\f265"; +@fa-var-gg: "\f260"; +@fa-var-gg-circle: "\f261"; +@fa-var-gift: "\f06b"; +@fa-var-git: "\f1d3"; +@fa-var-git-square: "\f1d2"; +@fa-var-github: "\f09b"; +@fa-var-github-alt: "\f113"; +@fa-var-github-square: "\f092"; +@fa-var-gitkraken: "\f3a6"; +@fa-var-gitlab: "\f296"; +@fa-var-gitter: "\f426"; +@fa-var-glass-martini: "\f000"; +@fa-var-glide: "\f2a5"; +@fa-var-glide-g: "\f2a6"; +@fa-var-globe: "\f0ac"; +@fa-var-gofore: "\f3a7"; +@fa-var-golf-ball: "\f450"; +@fa-var-goodreads: "\f3a8"; +@fa-var-goodreads-g: "\f3a9"; +@fa-var-google: "\f1a0"; +@fa-var-google-drive: "\f3aa"; +@fa-var-google-play: "\f3ab"; +@fa-var-google-plus: "\f2b3"; +@fa-var-google-plus-g: "\f0d5"; +@fa-var-google-plus-square: "\f0d4"; +@fa-var-google-wallet: "\f1ee"; +@fa-var-graduation-cap: "\f19d"; +@fa-var-gratipay: "\f184"; +@fa-var-grav: "\f2d6"; +@fa-var-gripfire: "\f3ac"; +@fa-var-grunt: "\f3ad"; +@fa-var-gulp: "\f3ae"; +@fa-var-h-square: "\f0fd"; +@fa-var-hacker-news: "\f1d4"; +@fa-var-hacker-news-square: "\f3af"; +@fa-var-hand-holding: "\f4bd"; +@fa-var-hand-holding-heart: "\f4be"; +@fa-var-hand-holding-usd: "\f4c0"; +@fa-var-hand-lizard: "\f258"; +@fa-var-hand-paper: "\f256"; +@fa-var-hand-peace: "\f25b"; +@fa-var-hand-point-down: "\f0a7"; +@fa-var-hand-point-left: "\f0a5"; +@fa-var-hand-point-right: "\f0a4"; +@fa-var-hand-point-up: "\f0a6"; +@fa-var-hand-pointer: "\f25a"; +@fa-var-hand-rock: "\f255"; +@fa-var-hand-scissors: "\f257"; +@fa-var-hand-spock: "\f259"; +@fa-var-hands: "\f4c2"; +@fa-var-hands-helping: "\f4c4"; +@fa-var-handshake: "\f2b5"; +@fa-var-hashtag: "\f292"; +@fa-var-hdd: "\f0a0"; +@fa-var-heading: "\f1dc"; +@fa-var-headphones: "\f025"; +@fa-var-heart: "\f004"; +@fa-var-heartbeat: "\f21e"; +@fa-var-hips: "\f452"; +@fa-var-hire-a-helper: "\f3b0"; +@fa-var-history: "\f1da"; +@fa-var-hockey-puck: "\f453"; +@fa-var-home: "\f015"; +@fa-var-hooli: "\f427"; +@fa-var-hospital: "\f0f8"; +@fa-var-hospital-alt: "\f47d"; +@fa-var-hospital-symbol: "\f47e"; +@fa-var-hotjar: "\f3b1"; +@fa-var-hourglass: "\f254"; +@fa-var-hourglass-end: "\f253"; +@fa-var-hourglass-half: "\f252"; +@fa-var-hourglass-start: "\f251"; +@fa-var-houzz: "\f27c"; +@fa-var-html5: "\f13b"; +@fa-var-hubspot: "\f3b2"; +@fa-var-i-cursor: "\f246"; +@fa-var-id-badge: "\f2c1"; +@fa-var-id-card: "\f2c2"; +@fa-var-id-card-alt: "\f47f"; +@fa-var-image: "\f03e"; +@fa-var-images: "\f302"; +@fa-var-imdb: "\f2d8"; +@fa-var-inbox: "\f01c"; +@fa-var-indent: "\f03c"; +@fa-var-industry: "\f275"; +@fa-var-info: "\f129"; +@fa-var-info-circle: "\f05a"; +@fa-var-instagram: "\f16d"; +@fa-var-internet-explorer: "\f26b"; +@fa-var-ioxhost: "\f208"; +@fa-var-italic: "\f033"; +@fa-var-itunes: "\f3b4"; +@fa-var-itunes-note: "\f3b5"; +@fa-var-java: "\f4e4"; +@fa-var-jenkins: "\f3b6"; +@fa-var-joget: "\f3b7"; +@fa-var-joomla: "\f1aa"; +@fa-var-js: "\f3b8"; +@fa-var-js-square: "\f3b9"; +@fa-var-jsfiddle: "\f1cc"; +@fa-var-key: "\f084"; +@fa-var-keyboard: "\f11c"; +@fa-var-keycdn: "\f3ba"; +@fa-var-kickstarter: "\f3bb"; +@fa-var-kickstarter-k: "\f3bc"; +@fa-var-korvue: "\f42f"; +@fa-var-language: "\f1ab"; +@fa-var-laptop: "\f109"; +@fa-var-laravel: "\f3bd"; +@fa-var-lastfm: "\f202"; +@fa-var-lastfm-square: "\f203"; +@fa-var-leaf: "\f06c"; +@fa-var-leanpub: "\f212"; +@fa-var-lemon: "\f094"; +@fa-var-less: "\f41d"; +@fa-var-level-down-alt: "\f3be"; +@fa-var-level-up-alt: "\f3bf"; +@fa-var-life-ring: "\f1cd"; +@fa-var-lightbulb: "\f0eb"; +@fa-var-line: "\f3c0"; +@fa-var-link: "\f0c1"; +@fa-var-linkedin: "\f08c"; +@fa-var-linkedin-in: "\f0e1"; +@fa-var-linode: "\f2b8"; +@fa-var-linux: "\f17c"; +@fa-var-lira-sign: "\f195"; +@fa-var-list: "\f03a"; +@fa-var-list-alt: "\f022"; +@fa-var-list-ol: "\f0cb"; +@fa-var-list-ul: "\f0ca"; +@fa-var-location-arrow: "\f124"; +@fa-var-lock: "\f023"; +@fa-var-lock-open: "\f3c1"; +@fa-var-long-arrow-alt-down: "\f309"; +@fa-var-long-arrow-alt-left: "\f30a"; +@fa-var-long-arrow-alt-right: "\f30b"; +@fa-var-long-arrow-alt-up: "\f30c"; +@fa-var-low-vision: "\f2a8"; +@fa-var-lyft: "\f3c3"; +@fa-var-magento: "\f3c4"; +@fa-var-magic: "\f0d0"; +@fa-var-magnet: "\f076"; +@fa-var-male: "\f183"; +@fa-var-map: "\f279"; +@fa-var-map-marker: "\f041"; +@fa-var-map-marker-alt: "\f3c5"; +@fa-var-map-pin: "\f276"; +@fa-var-map-signs: "\f277"; +@fa-var-mars: "\f222"; +@fa-var-mars-double: "\f227"; +@fa-var-mars-stroke: "\f229"; +@fa-var-mars-stroke-h: "\f22b"; +@fa-var-mars-stroke-v: "\f22a"; +@fa-var-maxcdn: "\f136"; +@fa-var-medapps: "\f3c6"; +@fa-var-medium: "\f23a"; +@fa-var-medium-m: "\f3c7"; +@fa-var-medkit: "\f0fa"; +@fa-var-medrt: "\f3c8"; +@fa-var-meetup: "\f2e0"; +@fa-var-meh: "\f11a"; +@fa-var-mercury: "\f223"; +@fa-var-microchip: "\f2db"; +@fa-var-microphone: "\f130"; +@fa-var-microphone-slash: "\f131"; +@fa-var-microsoft: "\f3ca"; +@fa-var-minus: "\f068"; +@fa-var-minus-circle: "\f056"; +@fa-var-minus-square: "\f146"; +@fa-var-mix: "\f3cb"; +@fa-var-mixcloud: "\f289"; +@fa-var-mizuni: "\f3cc"; +@fa-var-mobile: "\f10b"; +@fa-var-mobile-alt: "\f3cd"; +@fa-var-modx: "\f285"; +@fa-var-monero: "\f3d0"; +@fa-var-money-bill-alt: "\f3d1"; +@fa-var-moon: "\f186"; +@fa-var-motorcycle: "\f21c"; +@fa-var-mouse-pointer: "\f245"; +@fa-var-music: "\f001"; +@fa-var-napster: "\f3d2"; +@fa-var-neuter: "\f22c"; +@fa-var-newspaper: "\f1ea"; +@fa-var-nintendo-switch: "\f418"; +@fa-var-node: "\f419"; +@fa-var-node-js: "\f3d3"; +@fa-var-notes-medical: "\f481"; +@fa-var-npm: "\f3d4"; +@fa-var-ns8: "\f3d5"; +@fa-var-nutritionix: "\f3d6"; +@fa-var-object-group: "\f247"; +@fa-var-object-ungroup: "\f248"; +@fa-var-odnoklassniki: "\f263"; +@fa-var-odnoklassniki-square: "\f264"; +@fa-var-opencart: "\f23d"; +@fa-var-openid: "\f19b"; +@fa-var-opera: "\f26a"; +@fa-var-optin-monster: "\f23c"; +@fa-var-osi: "\f41a"; +@fa-var-outdent: "\f03b"; +@fa-var-page4: "\f3d7"; +@fa-var-pagelines: "\f18c"; +@fa-var-paint-brush: "\f1fc"; +@fa-var-palfed: "\f3d8"; +@fa-var-pallet: "\f482"; +@fa-var-paper-plane: "\f1d8"; +@fa-var-paperclip: "\f0c6"; +@fa-var-parachute-box: "\f4cd"; +@fa-var-paragraph: "\f1dd"; +@fa-var-paste: "\f0ea"; +@fa-var-patreon: "\f3d9"; +@fa-var-pause: "\f04c"; +@fa-var-pause-circle: "\f28b"; +@fa-var-paw: "\f1b0"; +@fa-var-paypal: "\f1ed"; +@fa-var-pen-square: "\f14b"; +@fa-var-pencil-alt: "\f303"; +@fa-var-people-carry: "\f4ce"; +@fa-var-percent: "\f295"; +@fa-var-periscope: "\f3da"; +@fa-var-phabricator: "\f3db"; +@fa-var-phoenix-framework: "\f3dc"; +@fa-var-phone: "\f095"; +@fa-var-phone-slash: "\f3dd"; +@fa-var-phone-square: "\f098"; +@fa-var-phone-volume: "\f2a0"; +@fa-var-php: "\f457"; +@fa-var-pied-piper: "\f2ae"; +@fa-var-pied-piper-alt: "\f1a8"; +@fa-var-pied-piper-hat: "\f4e5"; +@fa-var-pied-piper-pp: "\f1a7"; +@fa-var-piggy-bank: "\f4d3"; +@fa-var-pills: "\f484"; +@fa-var-pinterest: "\f0d2"; +@fa-var-pinterest-p: "\f231"; +@fa-var-pinterest-square: "\f0d3"; +@fa-var-plane: "\f072"; +@fa-var-play: "\f04b"; +@fa-var-play-circle: "\f144"; +@fa-var-playstation: "\f3df"; +@fa-var-plug: "\f1e6"; +@fa-var-plus: "\f067"; +@fa-var-plus-circle: "\f055"; +@fa-var-plus-square: "\f0fe"; +@fa-var-podcast: "\f2ce"; +@fa-var-poo: "\f2fe"; +@fa-var-pound-sign: "\f154"; +@fa-var-power-off: "\f011"; +@fa-var-prescription-bottle: "\f485"; +@fa-var-prescription-bottle-alt: "\f486"; +@fa-var-print: "\f02f"; +@fa-var-procedures: "\f487"; +@fa-var-product-hunt: "\f288"; +@fa-var-pushed: "\f3e1"; +@fa-var-puzzle-piece: "\f12e"; +@fa-var-python: "\f3e2"; +@fa-var-qq: "\f1d6"; +@fa-var-qrcode: "\f029"; +@fa-var-question: "\f128"; +@fa-var-question-circle: "\f059"; +@fa-var-quidditch: "\f458"; +@fa-var-quinscape: "\f459"; +@fa-var-quora: "\f2c4"; +@fa-var-quote-left: "\f10d"; +@fa-var-quote-right: "\f10e"; +@fa-var-random: "\f074"; +@fa-var-ravelry: "\f2d9"; +@fa-var-react: "\f41b"; +@fa-var-readme: "\f4d5"; +@fa-var-rebel: "\f1d0"; +@fa-var-recycle: "\f1b8"; +@fa-var-red-river: "\f3e3"; +@fa-var-reddit: "\f1a1"; +@fa-var-reddit-alien: "\f281"; +@fa-var-reddit-square: "\f1a2"; +@fa-var-redo: "\f01e"; +@fa-var-redo-alt: "\f2f9"; +@fa-var-registered: "\f25d"; +@fa-var-rendact: "\f3e4"; +@fa-var-renren: "\f18b"; +@fa-var-reply: "\f3e5"; +@fa-var-reply-all: "\f122"; +@fa-var-replyd: "\f3e6"; +@fa-var-resolving: "\f3e7"; +@fa-var-retweet: "\f079"; +@fa-var-ribbon: "\f4d6"; +@fa-var-road: "\f018"; +@fa-var-rocket: "\f135"; +@fa-var-rocketchat: "\f3e8"; +@fa-var-rockrms: "\f3e9"; +@fa-var-rss: "\f09e"; +@fa-var-rss-square: "\f143"; +@fa-var-ruble-sign: "\f158"; +@fa-var-rupee-sign: "\f156"; +@fa-var-safari: "\f267"; +@fa-var-sass: "\f41e"; +@fa-var-save: "\f0c7"; +@fa-var-schlix: "\f3ea"; +@fa-var-scribd: "\f28a"; +@fa-var-search: "\f002"; +@fa-var-search-minus: "\f010"; +@fa-var-search-plus: "\f00e"; +@fa-var-searchengin: "\f3eb"; +@fa-var-seedling: "\f4d8"; +@fa-var-sellcast: "\f2da"; +@fa-var-sellsy: "\f213"; +@fa-var-server: "\f233"; +@fa-var-servicestack: "\f3ec"; +@fa-var-share: "\f064"; +@fa-var-share-alt: "\f1e0"; +@fa-var-share-alt-square: "\f1e1"; +@fa-var-share-square: "\f14d"; +@fa-var-shekel-sign: "\f20b"; +@fa-var-shield-alt: "\f3ed"; +@fa-var-ship: "\f21a"; +@fa-var-shipping-fast: "\f48b"; +@fa-var-shirtsinbulk: "\f214"; +@fa-var-shopping-bag: "\f290"; +@fa-var-shopping-basket: "\f291"; +@fa-var-shopping-cart: "\f07a"; +@fa-var-shower: "\f2cc"; +@fa-var-sign: "\f4d9"; +@fa-var-sign-in-alt: "\f2f6"; +@fa-var-sign-language: "\f2a7"; +@fa-var-sign-out-alt: "\f2f5"; +@fa-var-signal: "\f012"; +@fa-var-simplybuilt: "\f215"; +@fa-var-sistrix: "\f3ee"; +@fa-var-sitemap: "\f0e8"; +@fa-var-skyatlas: "\f216"; +@fa-var-skype: "\f17e"; +@fa-var-slack: "\f198"; +@fa-var-slack-hash: "\f3ef"; +@fa-var-sliders-h: "\f1de"; +@fa-var-slideshare: "\f1e7"; +@fa-var-smile: "\f118"; +@fa-var-smoking: "\f48d"; +@fa-var-snapchat: "\f2ab"; +@fa-var-snapchat-ghost: "\f2ac"; +@fa-var-snapchat-square: "\f2ad"; +@fa-var-snowflake: "\f2dc"; +@fa-var-sort: "\f0dc"; +@fa-var-sort-alpha-down: "\f15d"; +@fa-var-sort-alpha-up: "\f15e"; +@fa-var-sort-amount-down: "\f160"; +@fa-var-sort-amount-up: "\f161"; +@fa-var-sort-down: "\f0dd"; +@fa-var-sort-numeric-down: "\f162"; +@fa-var-sort-numeric-up: "\f163"; +@fa-var-sort-up: "\f0de"; +@fa-var-soundcloud: "\f1be"; +@fa-var-space-shuttle: "\f197"; +@fa-var-speakap: "\f3f3"; +@fa-var-spinner: "\f110"; +@fa-var-spotify: "\f1bc"; +@fa-var-square: "\f0c8"; +@fa-var-square-full: "\f45c"; +@fa-var-stack-exchange: "\f18d"; +@fa-var-stack-overflow: "\f16c"; +@fa-var-star: "\f005"; +@fa-var-star-half: "\f089"; +@fa-var-staylinked: "\f3f5"; +@fa-var-steam: "\f1b6"; +@fa-var-steam-square: "\f1b7"; +@fa-var-steam-symbol: "\f3f6"; +@fa-var-step-backward: "\f048"; +@fa-var-step-forward: "\f051"; +@fa-var-stethoscope: "\f0f1"; +@fa-var-sticker-mule: "\f3f7"; +@fa-var-sticky-note: "\f249"; +@fa-var-stop: "\f04d"; +@fa-var-stop-circle: "\f28d"; +@fa-var-stopwatch: "\f2f2"; +@fa-var-strava: "\f428"; +@fa-var-street-view: "\f21d"; +@fa-var-strikethrough: "\f0cc"; +@fa-var-stripe: "\f429"; +@fa-var-stripe-s: "\f42a"; +@fa-var-studiovinari: "\f3f8"; +@fa-var-stumbleupon: "\f1a4"; +@fa-var-stumbleupon-circle: "\f1a3"; +@fa-var-subscript: "\f12c"; +@fa-var-subway: "\f239"; +@fa-var-suitcase: "\f0f2"; +@fa-var-sun: "\f185"; +@fa-var-superpowers: "\f2dd"; +@fa-var-superscript: "\f12b"; +@fa-var-supple: "\f3f9"; +@fa-var-sync: "\f021"; +@fa-var-sync-alt: "\f2f1"; +@fa-var-syringe: "\f48e"; +@fa-var-table: "\f0ce"; +@fa-var-table-tennis: "\f45d"; +@fa-var-tablet: "\f10a"; +@fa-var-tablet-alt: "\f3fa"; +@fa-var-tablets: "\f490"; +@fa-var-tachometer-alt: "\f3fd"; +@fa-var-tag: "\f02b"; +@fa-var-tags: "\f02c"; +@fa-var-tape: "\f4db"; +@fa-var-tasks: "\f0ae"; +@fa-var-taxi: "\f1ba"; +@fa-var-telegram: "\f2c6"; +@fa-var-telegram-plane: "\f3fe"; +@fa-var-tencent-weibo: "\f1d5"; +@fa-var-terminal: "\f120"; +@fa-var-text-height: "\f034"; +@fa-var-text-width: "\f035"; +@fa-var-th: "\f00a"; +@fa-var-th-large: "\f009"; +@fa-var-th-list: "\f00b"; +@fa-var-themeisle: "\f2b2"; +@fa-var-thermometer: "\f491"; +@fa-var-thermometer-empty: "\f2cb"; +@fa-var-thermometer-full: "\f2c7"; +@fa-var-thermometer-half: "\f2c9"; +@fa-var-thermometer-quarter: "\f2ca"; +@fa-var-thermometer-three-quarters: "\f2c8"; +@fa-var-thumbs-down: "\f165"; +@fa-var-thumbs-up: "\f164"; +@fa-var-thumbtack: "\f08d"; +@fa-var-ticket-alt: "\f3ff"; +@fa-var-times: "\f00d"; +@fa-var-times-circle: "\f057"; +@fa-var-tint: "\f043"; +@fa-var-toggle-off: "\f204"; +@fa-var-toggle-on: "\f205"; +@fa-var-trademark: "\f25c"; +@fa-var-train: "\f238"; +@fa-var-transgender: "\f224"; +@fa-var-transgender-alt: "\f225"; +@fa-var-trash: "\f1f8"; +@fa-var-trash-alt: "\f2ed"; +@fa-var-tree: "\f1bb"; +@fa-var-trello: "\f181"; +@fa-var-tripadvisor: "\f262"; +@fa-var-trophy: "\f091"; +@fa-var-truck: "\f0d1"; +@fa-var-truck-loading: "\f4de"; +@fa-var-truck-moving: "\f4df"; +@fa-var-tty: "\f1e4"; +@fa-var-tumblr: "\f173"; +@fa-var-tumblr-square: "\f174"; +@fa-var-tv: "\f26c"; +@fa-var-twitch: "\f1e8"; +@fa-var-twitter: "\f099"; +@fa-var-twitter-square: "\f081"; +@fa-var-typo3: "\f42b"; +@fa-var-uber: "\f402"; +@fa-var-uikit: "\f403"; +@fa-var-umbrella: "\f0e9"; +@fa-var-underline: "\f0cd"; +@fa-var-undo: "\f0e2"; +@fa-var-undo-alt: "\f2ea"; +@fa-var-uniregistry: "\f404"; +@fa-var-universal-access: "\f29a"; +@fa-var-university: "\f19c"; +@fa-var-unlink: "\f127"; +@fa-var-unlock: "\f09c"; +@fa-var-unlock-alt: "\f13e"; +@fa-var-untappd: "\f405"; +@fa-var-upload: "\f093"; +@fa-var-usb: "\f287"; +@fa-var-user: "\f007"; +@fa-var-user-circle: "\f2bd"; +@fa-var-user-md: "\f0f0"; +@fa-var-user-plus: "\f234"; +@fa-var-user-secret: "\f21b"; +@fa-var-user-times: "\f235"; +@fa-var-users: "\f0c0"; +@fa-var-ussunnah: "\f407"; +@fa-var-utensil-spoon: "\f2e5"; +@fa-var-utensils: "\f2e7"; +@fa-var-vaadin: "\f408"; +@fa-var-venus: "\f221"; +@fa-var-venus-double: "\f226"; +@fa-var-venus-mars: "\f228"; +@fa-var-viacoin: "\f237"; +@fa-var-viadeo: "\f2a9"; +@fa-var-viadeo-square: "\f2aa"; +@fa-var-vial: "\f492"; +@fa-var-vials: "\f493"; +@fa-var-viber: "\f409"; +@fa-var-video: "\f03d"; +@fa-var-video-slash: "\f4e2"; +@fa-var-vimeo: "\f40a"; +@fa-var-vimeo-square: "\f194"; +@fa-var-vimeo-v: "\f27d"; +@fa-var-vine: "\f1ca"; +@fa-var-vk: "\f189"; +@fa-var-vnv: "\f40b"; +@fa-var-volleyball-ball: "\f45f"; +@fa-var-volume-down: "\f027"; +@fa-var-volume-off: "\f026"; +@fa-var-volume-up: "\f028"; +@fa-var-vuejs: "\f41f"; +@fa-var-warehouse: "\f494"; +@fa-var-weibo: "\f18a"; +@fa-var-weight: "\f496"; +@fa-var-weixin: "\f1d7"; +@fa-var-whatsapp: "\f232"; +@fa-var-whatsapp-square: "\f40c"; +@fa-var-wheelchair: "\f193"; +@fa-var-whmcs: "\f40d"; +@fa-var-wifi: "\f1eb"; +@fa-var-wikipedia-w: "\f266"; +@fa-var-window-close: "\f410"; +@fa-var-window-maximize: "\f2d0"; +@fa-var-window-minimize: "\f2d1"; +@fa-var-window-restore: "\f2d2"; +@fa-var-windows: "\f17a"; +@fa-var-wine-glass: "\f4e3"; +@fa-var-won-sign: "\f159"; +@fa-var-wordpress: "\f19a"; +@fa-var-wordpress-simple: "\f411"; +@fa-var-wpbeginner: "\f297"; +@fa-var-wpexplorer: "\f2de"; +@fa-var-wpforms: "\f298"; +@fa-var-wrench: "\f0ad"; +@fa-var-x-ray: "\f497"; +@fa-var-xbox: "\f412"; +@fa-var-xing: "\f168"; +@fa-var-xing-square: "\f169"; +@fa-var-y-combinator: "\f23b"; +@fa-var-yahoo: "\f19e"; +@fa-var-yandex: "\f413"; +@fa-var-yandex-international: "\f414"; +@fa-var-yelp: "\f1e9"; +@fa-var-yen-sign: "\f157"; +@fa-var-yoast: "\f2b1"; +@fa-var-youtube: "\f167"; +@fa-var-youtube-square: "\f431"; diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/fa-brands.less b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/fa-brands.less new file mode 100644 index 000000000000..f136d6290d7a --- /dev/null +++ b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/fa-brands.less @@ -0,0 +1,21 @@ +/*! + * Font Awesome Free 5.0.10 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +@import "_variables.less"; + +@font-face { + font-family: 'Font Awesome 5 Brands'; + font-style: normal; + font-weight: normal; + src: url('@{fa-font-path}/fa-brands-400.eot'); + src: url('@{fa-font-path}/fa-brands-400.eot?#iefix') format('embedded-opentype'), + url('@{fa-font-path}/fa-brands-400.woff2') format('woff2'), + url('@{fa-font-path}/fa-brands-400.woff') format('woff'), + url('@{fa-font-path}/fa-brands-400.ttf') format('truetype'), + url('@{fa-font-path}/fa-brands-400.svg#fontawesome') format('svg'); +} + +.fab { + font-family: 'Font Awesome 5 Brands'; +} diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/fa-regular.less b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/fa-regular.less new file mode 100644 index 000000000000..04820bb5f9be --- /dev/null +++ b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/fa-regular.less @@ -0,0 +1,22 @@ +/*! + * Font Awesome Free 5.0.10 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +@import "_variables.less"; + +@font-face { + font-family: 'Font Awesome 5 Free'; + font-style: normal; + font-weight: 400; + src: url('@{fa-font-path}/fa-regular-400.eot'); + src: url('@{fa-font-path}/fa-regular-400.eot?#iefix') format('embedded-opentype'), + url('@{fa-font-path}/fa-regular-400.woff2') format('woff2'), + url('@{fa-font-path}/fa-regular-400.woff') format('woff'), + url('@{fa-font-path}/fa-regular-400.ttf') format('truetype'), + url('@{fa-font-path}/fa-regular-400.svg#fontawesome') format('svg'); +} + +.far { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; +} diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/fa-solid.less b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/fa-solid.less new file mode 100644 index 000000000000..2bcfb0d267dd --- /dev/null +++ b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/fa-solid.less @@ -0,0 +1,23 @@ +/*! + * Font Awesome Free 5.0.10 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +@import "_variables.less"; + +@font-face { + font-family: 'Font Awesome 5 Free'; + font-style: normal; + font-weight: 900; + src: url('@{fa-font-path}/fa-solid-900.eot'); + src: url('@{fa-font-path}/fa-solid-900.eot?#iefix') format('embedded-opentype'), + url('@{fa-font-path}/fa-solid-900.woff2') format('woff2'), + url('@{fa-font-path}/fa-solid-900.woff') format('woff'), + url('@{fa-font-path}/fa-solid-900.ttf') format('truetype'), + url('@{fa-font-path}/fa-solid-900.svg#fontawesome') format('svg'); +} + +.fa, +.fas { + font-family: 'Font Awesome 5 Free'; + font-weight: 900; +} diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/fontawesome.less b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/fontawesome.less new file mode 100644 index 000000000000..fecdf7831cea --- /dev/null +++ b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/less/fontawesome.less @@ -0,0 +1,16 @@ +/*! + * Font Awesome Free 5.0.10 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +@import "_variables.less"; +@import "_mixins.less"; +@import "_core.less"; +@import "_larger.less"; +@import "_fixed-width.less"; +@import "_list.less"; +@import "_bordered-pulled.less"; +@import "_animated.less"; +@import "_rotated-flipped.less"; +@import "_stacked.less"; +@import "_icons.less"; +@import "_screen-reader.less"; diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_animated.scss b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_animated.scss new file mode 100644 index 000000000000..7c7c0e173c5b --- /dev/null +++ b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_animated.scss @@ -0,0 +1,20 @@ +// Animated Icons +// -------------------------- + +.#{$fa-css-prefix}-spin { + animation: fa-spin 2s infinite linear; +} + +.#{$fa-css-prefix}-pulse { + animation: fa-spin 1s infinite steps(8); +} + +@keyframes fa-spin { + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(360deg); + } +} diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_bordered-pulled.scss b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_bordered-pulled.scss new file mode 100644 index 000000000000..c8c4274c4095 --- /dev/null +++ b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_bordered-pulled.scss @@ -0,0 +1,20 @@ +// Bordered & Pulled +// ------------------------- + +.#{$fa-css-prefix}-border { + border: solid .08em $fa-border-color; + border-radius: .1em; + padding: .2em .25em .15em; +} + +.#{$fa-css-prefix}-pull-left { float: left; } +.#{$fa-css-prefix}-pull-right { float: right; } + +.#{$fa-css-prefix}, +.fas, +.far, +.fal, +.fab { + &.#{$fa-css-prefix}-pull-left { margin-right: .3em; } + &.#{$fa-css-prefix}-pull-right { margin-left: .3em; } +} diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_core.scss b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_core.scss new file mode 100644 index 000000000000..7fd37f855cf5 --- /dev/null +++ b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_core.scss @@ -0,0 +1,16 @@ +// Base Class Definition +// ------------------------- + +.#{$fa-css-prefix}, +.fas, +.far, +.fal, +.fab { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; +} diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_fixed-width.scss b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_fixed-width.scss new file mode 100644 index 000000000000..5b33eb49aa9b --- /dev/null +++ b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_fixed-width.scss @@ -0,0 +1,6 @@ +// Fixed Width Icons +// ------------------------- +.#{$fa-css-prefix}-fw { + text-align: center; + width: (20em / 16); +} diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_icons.scss b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_icons.scss new file mode 100644 index 000000000000..37f969c74f66 --- /dev/null +++ b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_icons.scss @@ -0,0 +1,878 @@ +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen +readers do not read off random characters that represent icons */ + +.#{$fa-css-prefix}-500px:before { content: fa-content($fa-var-500px); } +.#{$fa-css-prefix}-accessible-icon:before { content: fa-content($fa-var-accessible-icon); } +.#{$fa-css-prefix}-accusoft:before { content: fa-content($fa-var-accusoft); } +.#{$fa-css-prefix}-address-book:before { content: fa-content($fa-var-address-book); } +.#{$fa-css-prefix}-address-card:before { content: fa-content($fa-var-address-card); } +.#{$fa-css-prefix}-adjust:before { content: fa-content($fa-var-adjust); } +.#{$fa-css-prefix}-adn:before { content: fa-content($fa-var-adn); } +.#{$fa-css-prefix}-adversal:before { content: fa-content($fa-var-adversal); } +.#{$fa-css-prefix}-affiliatetheme:before { content: fa-content($fa-var-affiliatetheme); } +.#{$fa-css-prefix}-algolia:before { content: fa-content($fa-var-algolia); } +.#{$fa-css-prefix}-align-center:before { content: fa-content($fa-var-align-center); } +.#{$fa-css-prefix}-align-justify:before { content: fa-content($fa-var-align-justify); } +.#{$fa-css-prefix}-align-left:before { content: fa-content($fa-var-align-left); } +.#{$fa-css-prefix}-align-right:before { content: fa-content($fa-var-align-right); } +.#{$fa-css-prefix}-allergies:before { content: fa-content($fa-var-allergies); } +.#{$fa-css-prefix}-amazon:before { content: fa-content($fa-var-amazon); } +.#{$fa-css-prefix}-amazon-pay:before { content: fa-content($fa-var-amazon-pay); } +.#{$fa-css-prefix}-ambulance:before { content: fa-content($fa-var-ambulance); } +.#{$fa-css-prefix}-american-sign-language-interpreting:before { content: fa-content($fa-var-american-sign-language-interpreting); } +.#{$fa-css-prefix}-amilia:before { content: fa-content($fa-var-amilia); } +.#{$fa-css-prefix}-anchor:before { content: fa-content($fa-var-anchor); } +.#{$fa-css-prefix}-android:before { content: fa-content($fa-var-android); } +.#{$fa-css-prefix}-angellist:before { content: fa-content($fa-var-angellist); } +.#{$fa-css-prefix}-angle-double-down:before { content: fa-content($fa-var-angle-double-down); } +.#{$fa-css-prefix}-angle-double-left:before { content: fa-content($fa-var-angle-double-left); } +.#{$fa-css-prefix}-angle-double-right:before { content: fa-content($fa-var-angle-double-right); } +.#{$fa-css-prefix}-angle-double-up:before { content: fa-content($fa-var-angle-double-up); } +.#{$fa-css-prefix}-angle-down:before { content: fa-content($fa-var-angle-down); } +.#{$fa-css-prefix}-angle-left:before { content: fa-content($fa-var-angle-left); } +.#{$fa-css-prefix}-angle-right:before { content: fa-content($fa-var-angle-right); } +.#{$fa-css-prefix}-angle-up:before { content: fa-content($fa-var-angle-up); } +.#{$fa-css-prefix}-angrycreative:before { content: fa-content($fa-var-angrycreative); } +.#{$fa-css-prefix}-angular:before { content: fa-content($fa-var-angular); } +.#{$fa-css-prefix}-app-store:before { content: fa-content($fa-var-app-store); } +.#{$fa-css-prefix}-app-store-ios:before { content: fa-content($fa-var-app-store-ios); } +.#{$fa-css-prefix}-apper:before { content: fa-content($fa-var-apper); } +.#{$fa-css-prefix}-apple:before { content: fa-content($fa-var-apple); } +.#{$fa-css-prefix}-apple-pay:before { content: fa-content($fa-var-apple-pay); } +.#{$fa-css-prefix}-archive:before { content: fa-content($fa-var-archive); } +.#{$fa-css-prefix}-arrow-alt-circle-down:before { content: fa-content($fa-var-arrow-alt-circle-down); } +.#{$fa-css-prefix}-arrow-alt-circle-left:before { content: fa-content($fa-var-arrow-alt-circle-left); } +.#{$fa-css-prefix}-arrow-alt-circle-right:before { content: fa-content($fa-var-arrow-alt-circle-right); } +.#{$fa-css-prefix}-arrow-alt-circle-up:before { content: fa-content($fa-var-arrow-alt-circle-up); } +.#{$fa-css-prefix}-arrow-circle-down:before { content: fa-content($fa-var-arrow-circle-down); } +.#{$fa-css-prefix}-arrow-circle-left:before { content: fa-content($fa-var-arrow-circle-left); } +.#{$fa-css-prefix}-arrow-circle-right:before { content: fa-content($fa-var-arrow-circle-right); } +.#{$fa-css-prefix}-arrow-circle-up:before { content: fa-content($fa-var-arrow-circle-up); } +.#{$fa-css-prefix}-arrow-down:before { content: fa-content($fa-var-arrow-down); } +.#{$fa-css-prefix}-arrow-left:before { content: fa-content($fa-var-arrow-left); } +.#{$fa-css-prefix}-arrow-right:before { content: fa-content($fa-var-arrow-right); } +.#{$fa-css-prefix}-arrow-up:before { content: fa-content($fa-var-arrow-up); } +.#{$fa-css-prefix}-arrows-alt:before { content: fa-content($fa-var-arrows-alt); } +.#{$fa-css-prefix}-arrows-alt-h:before { content: fa-content($fa-var-arrows-alt-h); } +.#{$fa-css-prefix}-arrows-alt-v:before { content: fa-content($fa-var-arrows-alt-v); } +.#{$fa-css-prefix}-assistive-listening-systems:before { content: fa-content($fa-var-assistive-listening-systems); } +.#{$fa-css-prefix}-asterisk:before { content: fa-content($fa-var-asterisk); } +.#{$fa-css-prefix}-asymmetrik:before { content: fa-content($fa-var-asymmetrik); } +.#{$fa-css-prefix}-at:before { content: fa-content($fa-var-at); } +.#{$fa-css-prefix}-audible:before { content: fa-content($fa-var-audible); } +.#{$fa-css-prefix}-audio-description:before { content: fa-content($fa-var-audio-description); } +.#{$fa-css-prefix}-autoprefixer:before { content: fa-content($fa-var-autoprefixer); } +.#{$fa-css-prefix}-avianex:before { content: fa-content($fa-var-avianex); } +.#{$fa-css-prefix}-aviato:before { content: fa-content($fa-var-aviato); } +.#{$fa-css-prefix}-aws:before { content: fa-content($fa-var-aws); } +.#{$fa-css-prefix}-backward:before { content: fa-content($fa-var-backward); } +.#{$fa-css-prefix}-balance-scale:before { content: fa-content($fa-var-balance-scale); } +.#{$fa-css-prefix}-ban:before { content: fa-content($fa-var-ban); } +.#{$fa-css-prefix}-band-aid:before { content: fa-content($fa-var-band-aid); } +.#{$fa-css-prefix}-bandcamp:before { content: fa-content($fa-var-bandcamp); } +.#{$fa-css-prefix}-barcode:before { content: fa-content($fa-var-barcode); } +.#{$fa-css-prefix}-bars:before { content: fa-content($fa-var-bars); } +.#{$fa-css-prefix}-baseball-ball:before { content: fa-content($fa-var-baseball-ball); } +.#{$fa-css-prefix}-basketball-ball:before { content: fa-content($fa-var-basketball-ball); } +.#{$fa-css-prefix}-bath:before { content: fa-content($fa-var-bath); } +.#{$fa-css-prefix}-battery-empty:before { content: fa-content($fa-var-battery-empty); } +.#{$fa-css-prefix}-battery-full:before { content: fa-content($fa-var-battery-full); } +.#{$fa-css-prefix}-battery-half:before { content: fa-content($fa-var-battery-half); } +.#{$fa-css-prefix}-battery-quarter:before { content: fa-content($fa-var-battery-quarter); } +.#{$fa-css-prefix}-battery-three-quarters:before { content: fa-content($fa-var-battery-three-quarters); } +.#{$fa-css-prefix}-bed:before { content: fa-content($fa-var-bed); } +.#{$fa-css-prefix}-beer:before { content: fa-content($fa-var-beer); } +.#{$fa-css-prefix}-behance:before { content: fa-content($fa-var-behance); } +.#{$fa-css-prefix}-behance-square:before { content: fa-content($fa-var-behance-square); } +.#{$fa-css-prefix}-bell:before { content: fa-content($fa-var-bell); } +.#{$fa-css-prefix}-bell-slash:before { content: fa-content($fa-var-bell-slash); } +.#{$fa-css-prefix}-bicycle:before { content: fa-content($fa-var-bicycle); } +.#{$fa-css-prefix}-bimobject:before { content: fa-content($fa-var-bimobject); } +.#{$fa-css-prefix}-binoculars:before { content: fa-content($fa-var-binoculars); } +.#{$fa-css-prefix}-birthday-cake:before { content: fa-content($fa-var-birthday-cake); } +.#{$fa-css-prefix}-bitbucket:before { content: fa-content($fa-var-bitbucket); } +.#{$fa-css-prefix}-bitcoin:before { content: fa-content($fa-var-bitcoin); } +.#{$fa-css-prefix}-bity:before { content: fa-content($fa-var-bity); } +.#{$fa-css-prefix}-black-tie:before { content: fa-content($fa-var-black-tie); } +.#{$fa-css-prefix}-blackberry:before { content: fa-content($fa-var-blackberry); } +.#{$fa-css-prefix}-blind:before { content: fa-content($fa-var-blind); } +.#{$fa-css-prefix}-blogger:before { content: fa-content($fa-var-blogger); } +.#{$fa-css-prefix}-blogger-b:before { content: fa-content($fa-var-blogger-b); } +.#{$fa-css-prefix}-bluetooth:before { content: fa-content($fa-var-bluetooth); } +.#{$fa-css-prefix}-bluetooth-b:before { content: fa-content($fa-var-bluetooth-b); } +.#{$fa-css-prefix}-bold:before { content: fa-content($fa-var-bold); } +.#{$fa-css-prefix}-bolt:before { content: fa-content($fa-var-bolt); } +.#{$fa-css-prefix}-bomb:before { content: fa-content($fa-var-bomb); } +.#{$fa-css-prefix}-book:before { content: fa-content($fa-var-book); } +.#{$fa-css-prefix}-bookmark:before { content: fa-content($fa-var-bookmark); } +.#{$fa-css-prefix}-bowling-ball:before { content: fa-content($fa-var-bowling-ball); } +.#{$fa-css-prefix}-box:before { content: fa-content($fa-var-box); } +.#{$fa-css-prefix}-box-open:before { content: fa-content($fa-var-box-open); } +.#{$fa-css-prefix}-boxes:before { content: fa-content($fa-var-boxes); } +.#{$fa-css-prefix}-braille:before { content: fa-content($fa-var-braille); } +.#{$fa-css-prefix}-briefcase:before { content: fa-content($fa-var-briefcase); } +.#{$fa-css-prefix}-briefcase-medical:before { content: fa-content($fa-var-briefcase-medical); } +.#{$fa-css-prefix}-btc:before { content: fa-content($fa-var-btc); } +.#{$fa-css-prefix}-bug:before { content: fa-content($fa-var-bug); } +.#{$fa-css-prefix}-building:before { content: fa-content($fa-var-building); } +.#{$fa-css-prefix}-bullhorn:before { content: fa-content($fa-var-bullhorn); } +.#{$fa-css-prefix}-bullseye:before { content: fa-content($fa-var-bullseye); } +.#{$fa-css-prefix}-burn:before { content: fa-content($fa-var-burn); } +.#{$fa-css-prefix}-buromobelexperte:before { content: fa-content($fa-var-buromobelexperte); } +.#{$fa-css-prefix}-bus:before { content: fa-content($fa-var-bus); } +.#{$fa-css-prefix}-buysellads:before { content: fa-content($fa-var-buysellads); } +.#{$fa-css-prefix}-calculator:before { content: fa-content($fa-var-calculator); } +.#{$fa-css-prefix}-calendar:before { content: fa-content($fa-var-calendar); } +.#{$fa-css-prefix}-calendar-alt:before { content: fa-content($fa-var-calendar-alt); } +.#{$fa-css-prefix}-calendar-check:before { content: fa-content($fa-var-calendar-check); } +.#{$fa-css-prefix}-calendar-minus:before { content: fa-content($fa-var-calendar-minus); } +.#{$fa-css-prefix}-calendar-plus:before { content: fa-content($fa-var-calendar-plus); } +.#{$fa-css-prefix}-calendar-times:before { content: fa-content($fa-var-calendar-times); } +.#{$fa-css-prefix}-camera:before { content: fa-content($fa-var-camera); } +.#{$fa-css-prefix}-camera-retro:before { content: fa-content($fa-var-camera-retro); } +.#{$fa-css-prefix}-capsules:before { content: fa-content($fa-var-capsules); } +.#{$fa-css-prefix}-car:before { content: fa-content($fa-var-car); } +.#{$fa-css-prefix}-caret-down:before { content: fa-content($fa-var-caret-down); } +.#{$fa-css-prefix}-caret-left:before { content: fa-content($fa-var-caret-left); } +.#{$fa-css-prefix}-caret-right:before { content: fa-content($fa-var-caret-right); } +.#{$fa-css-prefix}-caret-square-down:before { content: fa-content($fa-var-caret-square-down); } +.#{$fa-css-prefix}-caret-square-left:before { content: fa-content($fa-var-caret-square-left); } +.#{$fa-css-prefix}-caret-square-right:before { content: fa-content($fa-var-caret-square-right); } +.#{$fa-css-prefix}-caret-square-up:before { content: fa-content($fa-var-caret-square-up); } +.#{$fa-css-prefix}-caret-up:before { content: fa-content($fa-var-caret-up); } +.#{$fa-css-prefix}-cart-arrow-down:before { content: fa-content($fa-var-cart-arrow-down); } +.#{$fa-css-prefix}-cart-plus:before { content: fa-content($fa-var-cart-plus); } +.#{$fa-css-prefix}-cc-amazon-pay:before { content: fa-content($fa-var-cc-amazon-pay); } +.#{$fa-css-prefix}-cc-amex:before { content: fa-content($fa-var-cc-amex); } +.#{$fa-css-prefix}-cc-apple-pay:before { content: fa-content($fa-var-cc-apple-pay); } +.#{$fa-css-prefix}-cc-diners-club:before { content: fa-content($fa-var-cc-diners-club); } +.#{$fa-css-prefix}-cc-discover:before { content: fa-content($fa-var-cc-discover); } +.#{$fa-css-prefix}-cc-jcb:before { content: fa-content($fa-var-cc-jcb); } +.#{$fa-css-prefix}-cc-mastercard:before { content: fa-content($fa-var-cc-mastercard); } +.#{$fa-css-prefix}-cc-paypal:before { content: fa-content($fa-var-cc-paypal); } +.#{$fa-css-prefix}-cc-stripe:before { content: fa-content($fa-var-cc-stripe); } +.#{$fa-css-prefix}-cc-visa:before { content: fa-content($fa-var-cc-visa); } +.#{$fa-css-prefix}-centercode:before { content: fa-content($fa-var-centercode); } +.#{$fa-css-prefix}-certificate:before { content: fa-content($fa-var-certificate); } +.#{$fa-css-prefix}-chart-area:before { content: fa-content($fa-var-chart-area); } +.#{$fa-css-prefix}-chart-bar:before { content: fa-content($fa-var-chart-bar); } +.#{$fa-css-prefix}-chart-line:before { content: fa-content($fa-var-chart-line); } +.#{$fa-css-prefix}-chart-pie:before { content: fa-content($fa-var-chart-pie); } +.#{$fa-css-prefix}-check:before { content: fa-content($fa-var-check); } +.#{$fa-css-prefix}-check-circle:before { content: fa-content($fa-var-check-circle); } +.#{$fa-css-prefix}-check-square:before { content: fa-content($fa-var-check-square); } +.#{$fa-css-prefix}-chess:before { content: fa-content($fa-var-chess); } +.#{$fa-css-prefix}-chess-bishop:before { content: fa-content($fa-var-chess-bishop); } +.#{$fa-css-prefix}-chess-board:before { content: fa-content($fa-var-chess-board); } +.#{$fa-css-prefix}-chess-king:before { content: fa-content($fa-var-chess-king); } +.#{$fa-css-prefix}-chess-knight:before { content: fa-content($fa-var-chess-knight); } +.#{$fa-css-prefix}-chess-pawn:before { content: fa-content($fa-var-chess-pawn); } +.#{$fa-css-prefix}-chess-queen:before { content: fa-content($fa-var-chess-queen); } +.#{$fa-css-prefix}-chess-rook:before { content: fa-content($fa-var-chess-rook); } +.#{$fa-css-prefix}-chevron-circle-down:before { content: fa-content($fa-var-chevron-circle-down); } +.#{$fa-css-prefix}-chevron-circle-left:before { content: fa-content($fa-var-chevron-circle-left); } +.#{$fa-css-prefix}-chevron-circle-right:before { content: fa-content($fa-var-chevron-circle-right); } +.#{$fa-css-prefix}-chevron-circle-up:before { content: fa-content($fa-var-chevron-circle-up); } +.#{$fa-css-prefix}-chevron-down:before { content: fa-content($fa-var-chevron-down); } +.#{$fa-css-prefix}-chevron-left:before { content: fa-content($fa-var-chevron-left); } +.#{$fa-css-prefix}-chevron-right:before { content: fa-content($fa-var-chevron-right); } +.#{$fa-css-prefix}-chevron-up:before { content: fa-content($fa-var-chevron-up); } +.#{$fa-css-prefix}-child:before { content: fa-content($fa-var-child); } +.#{$fa-css-prefix}-chrome:before { content: fa-content($fa-var-chrome); } +.#{$fa-css-prefix}-circle:before { content: fa-content($fa-var-circle); } +.#{$fa-css-prefix}-circle-notch:before { content: fa-content($fa-var-circle-notch); } +.#{$fa-css-prefix}-clipboard:before { content: fa-content($fa-var-clipboard); } +.#{$fa-css-prefix}-clipboard-check:before { content: fa-content($fa-var-clipboard-check); } +.#{$fa-css-prefix}-clipboard-list:before { content: fa-content($fa-var-clipboard-list); } +.#{$fa-css-prefix}-clock:before { content: fa-content($fa-var-clock); } +.#{$fa-css-prefix}-clone:before { content: fa-content($fa-var-clone); } +.#{$fa-css-prefix}-closed-captioning:before { content: fa-content($fa-var-closed-captioning); } +.#{$fa-css-prefix}-cloud:before { content: fa-content($fa-var-cloud); } +.#{$fa-css-prefix}-cloud-download-alt:before { content: fa-content($fa-var-cloud-download-alt); } +.#{$fa-css-prefix}-cloud-upload-alt:before { content: fa-content($fa-var-cloud-upload-alt); } +.#{$fa-css-prefix}-cloudscale:before { content: fa-content($fa-var-cloudscale); } +.#{$fa-css-prefix}-cloudsmith:before { content: fa-content($fa-var-cloudsmith); } +.#{$fa-css-prefix}-cloudversify:before { content: fa-content($fa-var-cloudversify); } +.#{$fa-css-prefix}-code:before { content: fa-content($fa-var-code); } +.#{$fa-css-prefix}-code-branch:before { content: fa-content($fa-var-code-branch); } +.#{$fa-css-prefix}-codepen:before { content: fa-content($fa-var-codepen); } +.#{$fa-css-prefix}-codiepie:before { content: fa-content($fa-var-codiepie); } +.#{$fa-css-prefix}-coffee:before { content: fa-content($fa-var-coffee); } +.#{$fa-css-prefix}-cog:before { content: fa-content($fa-var-cog); } +.#{$fa-css-prefix}-cogs:before { content: fa-content($fa-var-cogs); } +.#{$fa-css-prefix}-columns:before { content: fa-content($fa-var-columns); } +.#{$fa-css-prefix}-comment:before { content: fa-content($fa-var-comment); } +.#{$fa-css-prefix}-comment-alt:before { content: fa-content($fa-var-comment-alt); } +.#{$fa-css-prefix}-comment-dots:before { content: fa-content($fa-var-comment-dots); } +.#{$fa-css-prefix}-comment-slash:before { content: fa-content($fa-var-comment-slash); } +.#{$fa-css-prefix}-comments:before { content: fa-content($fa-var-comments); } +.#{$fa-css-prefix}-compass:before { content: fa-content($fa-var-compass); } +.#{$fa-css-prefix}-compress:before { content: fa-content($fa-var-compress); } +.#{$fa-css-prefix}-connectdevelop:before { content: fa-content($fa-var-connectdevelop); } +.#{$fa-css-prefix}-contao:before { content: fa-content($fa-var-contao); } +.#{$fa-css-prefix}-copy:before { content: fa-content($fa-var-copy); } +.#{$fa-css-prefix}-copyright:before { content: fa-content($fa-var-copyright); } +.#{$fa-css-prefix}-couch:before { content: fa-content($fa-var-couch); } +.#{$fa-css-prefix}-cpanel:before { content: fa-content($fa-var-cpanel); } +.#{$fa-css-prefix}-creative-commons:before { content: fa-content($fa-var-creative-commons); } +.#{$fa-css-prefix}-credit-card:before { content: fa-content($fa-var-credit-card); } +.#{$fa-css-prefix}-crop:before { content: fa-content($fa-var-crop); } +.#{$fa-css-prefix}-crosshairs:before { content: fa-content($fa-var-crosshairs); } +.#{$fa-css-prefix}-css3:before { content: fa-content($fa-var-css3); } +.#{$fa-css-prefix}-css3-alt:before { content: fa-content($fa-var-css3-alt); } +.#{$fa-css-prefix}-cube:before { content: fa-content($fa-var-cube); } +.#{$fa-css-prefix}-cubes:before { content: fa-content($fa-var-cubes); } +.#{$fa-css-prefix}-cut:before { content: fa-content($fa-var-cut); } +.#{$fa-css-prefix}-cuttlefish:before { content: fa-content($fa-var-cuttlefish); } +.#{$fa-css-prefix}-d-and-d:before { content: fa-content($fa-var-d-and-d); } +.#{$fa-css-prefix}-dashcube:before { content: fa-content($fa-var-dashcube); } +.#{$fa-css-prefix}-database:before { content: fa-content($fa-var-database); } +.#{$fa-css-prefix}-deaf:before { content: fa-content($fa-var-deaf); } +.#{$fa-css-prefix}-delicious:before { content: fa-content($fa-var-delicious); } +.#{$fa-css-prefix}-deploydog:before { content: fa-content($fa-var-deploydog); } +.#{$fa-css-prefix}-deskpro:before { content: fa-content($fa-var-deskpro); } +.#{$fa-css-prefix}-desktop:before { content: fa-content($fa-var-desktop); } +.#{$fa-css-prefix}-deviantart:before { content: fa-content($fa-var-deviantart); } +.#{$fa-css-prefix}-diagnoses:before { content: fa-content($fa-var-diagnoses); } +.#{$fa-css-prefix}-digg:before { content: fa-content($fa-var-digg); } +.#{$fa-css-prefix}-digital-ocean:before { content: fa-content($fa-var-digital-ocean); } +.#{$fa-css-prefix}-discord:before { content: fa-content($fa-var-discord); } +.#{$fa-css-prefix}-discourse:before { content: fa-content($fa-var-discourse); } +.#{$fa-css-prefix}-dna:before { content: fa-content($fa-var-dna); } +.#{$fa-css-prefix}-dochub:before { content: fa-content($fa-var-dochub); } +.#{$fa-css-prefix}-docker:before { content: fa-content($fa-var-docker); } +.#{$fa-css-prefix}-dollar-sign:before { content: fa-content($fa-var-dollar-sign); } +.#{$fa-css-prefix}-dolly:before { content: fa-content($fa-var-dolly); } +.#{$fa-css-prefix}-dolly-flatbed:before { content: fa-content($fa-var-dolly-flatbed); } +.#{$fa-css-prefix}-donate:before { content: fa-content($fa-var-donate); } +.#{$fa-css-prefix}-dot-circle:before { content: fa-content($fa-var-dot-circle); } +.#{$fa-css-prefix}-dove:before { content: fa-content($fa-var-dove); } +.#{$fa-css-prefix}-download:before { content: fa-content($fa-var-download); } +.#{$fa-css-prefix}-draft2digital:before { content: fa-content($fa-var-draft2digital); } +.#{$fa-css-prefix}-dribbble:before { content: fa-content($fa-var-dribbble); } +.#{$fa-css-prefix}-dribbble-square:before { content: fa-content($fa-var-dribbble-square); } +.#{$fa-css-prefix}-dropbox:before { content: fa-content($fa-var-dropbox); } +.#{$fa-css-prefix}-drupal:before { content: fa-content($fa-var-drupal); } +.#{$fa-css-prefix}-dyalog:before { content: fa-content($fa-var-dyalog); } +.#{$fa-css-prefix}-earlybirds:before { content: fa-content($fa-var-earlybirds); } +.#{$fa-css-prefix}-edge:before { content: fa-content($fa-var-edge); } +.#{$fa-css-prefix}-edit:before { content: fa-content($fa-var-edit); } +.#{$fa-css-prefix}-eject:before { content: fa-content($fa-var-eject); } +.#{$fa-css-prefix}-elementor:before { content: fa-content($fa-var-elementor); } +.#{$fa-css-prefix}-ellipsis-h:before { content: fa-content($fa-var-ellipsis-h); } +.#{$fa-css-prefix}-ellipsis-v:before { content: fa-content($fa-var-ellipsis-v); } +.#{$fa-css-prefix}-ember:before { content: fa-content($fa-var-ember); } +.#{$fa-css-prefix}-empire:before { content: fa-content($fa-var-empire); } +.#{$fa-css-prefix}-envelope:before { content: fa-content($fa-var-envelope); } +.#{$fa-css-prefix}-envelope-open:before { content: fa-content($fa-var-envelope-open); } +.#{$fa-css-prefix}-envelope-square:before { content: fa-content($fa-var-envelope-square); } +.#{$fa-css-prefix}-envira:before { content: fa-content($fa-var-envira); } +.#{$fa-css-prefix}-eraser:before { content: fa-content($fa-var-eraser); } +.#{$fa-css-prefix}-erlang:before { content: fa-content($fa-var-erlang); } +.#{$fa-css-prefix}-ethereum:before { content: fa-content($fa-var-ethereum); } +.#{$fa-css-prefix}-etsy:before { content: fa-content($fa-var-etsy); } +.#{$fa-css-prefix}-euro-sign:before { content: fa-content($fa-var-euro-sign); } +.#{$fa-css-prefix}-exchange-alt:before { content: fa-content($fa-var-exchange-alt); } +.#{$fa-css-prefix}-exclamation:before { content: fa-content($fa-var-exclamation); } +.#{$fa-css-prefix}-exclamation-circle:before { content: fa-content($fa-var-exclamation-circle); } +.#{$fa-css-prefix}-exclamation-triangle:before { content: fa-content($fa-var-exclamation-triangle); } +.#{$fa-css-prefix}-expand:before { content: fa-content($fa-var-expand); } +.#{$fa-css-prefix}-expand-arrows-alt:before { content: fa-content($fa-var-expand-arrows-alt); } +.#{$fa-css-prefix}-expeditedssl:before { content: fa-content($fa-var-expeditedssl); } +.#{$fa-css-prefix}-external-link-alt:before { content: fa-content($fa-var-external-link-alt); } +.#{$fa-css-prefix}-external-link-square-alt:before { content: fa-content($fa-var-external-link-square-alt); } +.#{$fa-css-prefix}-eye:before { content: fa-content($fa-var-eye); } +.#{$fa-css-prefix}-eye-dropper:before { content: fa-content($fa-var-eye-dropper); } +.#{$fa-css-prefix}-eye-slash:before { content: fa-content($fa-var-eye-slash); } +.#{$fa-css-prefix}-facebook:before { content: fa-content($fa-var-facebook); } +.#{$fa-css-prefix}-facebook-f:before { content: fa-content($fa-var-facebook-f); } +.#{$fa-css-prefix}-facebook-messenger:before { content: fa-content($fa-var-facebook-messenger); } +.#{$fa-css-prefix}-facebook-square:before { content: fa-content($fa-var-facebook-square); } +.#{$fa-css-prefix}-fast-backward:before { content: fa-content($fa-var-fast-backward); } +.#{$fa-css-prefix}-fast-forward:before { content: fa-content($fa-var-fast-forward); } +.#{$fa-css-prefix}-fax:before { content: fa-content($fa-var-fax); } +.#{$fa-css-prefix}-female:before { content: fa-content($fa-var-female); } +.#{$fa-css-prefix}-fighter-jet:before { content: fa-content($fa-var-fighter-jet); } +.#{$fa-css-prefix}-file:before { content: fa-content($fa-var-file); } +.#{$fa-css-prefix}-file-alt:before { content: fa-content($fa-var-file-alt); } +.#{$fa-css-prefix}-file-archive:before { content: fa-content($fa-var-file-archive); } +.#{$fa-css-prefix}-file-audio:before { content: fa-content($fa-var-file-audio); } +.#{$fa-css-prefix}-file-code:before { content: fa-content($fa-var-file-code); } +.#{$fa-css-prefix}-file-excel:before { content: fa-content($fa-var-file-excel); } +.#{$fa-css-prefix}-file-image:before { content: fa-content($fa-var-file-image); } +.#{$fa-css-prefix}-file-medical:before { content: fa-content($fa-var-file-medical); } +.#{$fa-css-prefix}-file-medical-alt:before { content: fa-content($fa-var-file-medical-alt); } +.#{$fa-css-prefix}-file-pdf:before { content: fa-content($fa-var-file-pdf); } +.#{$fa-css-prefix}-file-powerpoint:before { content: fa-content($fa-var-file-powerpoint); } +.#{$fa-css-prefix}-file-video:before { content: fa-content($fa-var-file-video); } +.#{$fa-css-prefix}-file-word:before { content: fa-content($fa-var-file-word); } +.#{$fa-css-prefix}-film:before { content: fa-content($fa-var-film); } +.#{$fa-css-prefix}-filter:before { content: fa-content($fa-var-filter); } +.#{$fa-css-prefix}-fire:before { content: fa-content($fa-var-fire); } +.#{$fa-css-prefix}-fire-extinguisher:before { content: fa-content($fa-var-fire-extinguisher); } +.#{$fa-css-prefix}-firefox:before { content: fa-content($fa-var-firefox); } +.#{$fa-css-prefix}-first-aid:before { content: fa-content($fa-var-first-aid); } +.#{$fa-css-prefix}-first-order:before { content: fa-content($fa-var-first-order); } +.#{$fa-css-prefix}-firstdraft:before { content: fa-content($fa-var-firstdraft); } +.#{$fa-css-prefix}-flag:before { content: fa-content($fa-var-flag); } +.#{$fa-css-prefix}-flag-checkered:before { content: fa-content($fa-var-flag-checkered); } +.#{$fa-css-prefix}-flask:before { content: fa-content($fa-var-flask); } +.#{$fa-css-prefix}-flickr:before { content: fa-content($fa-var-flickr); } +.#{$fa-css-prefix}-flipboard:before { content: fa-content($fa-var-flipboard); } +.#{$fa-css-prefix}-fly:before { content: fa-content($fa-var-fly); } +.#{$fa-css-prefix}-folder:before { content: fa-content($fa-var-folder); } +.#{$fa-css-prefix}-folder-open:before { content: fa-content($fa-var-folder-open); } +.#{$fa-css-prefix}-font:before { content: fa-content($fa-var-font); } +.#{$fa-css-prefix}-font-awesome:before { content: fa-content($fa-var-font-awesome); } +.#{$fa-css-prefix}-font-awesome-alt:before { content: fa-content($fa-var-font-awesome-alt); } +.#{$fa-css-prefix}-font-awesome-flag:before { content: fa-content($fa-var-font-awesome-flag); } +.#{$fa-css-prefix}-fonticons:before { content: fa-content($fa-var-fonticons); } +.#{$fa-css-prefix}-fonticons-fi:before { content: fa-content($fa-var-fonticons-fi); } +.#{$fa-css-prefix}-football-ball:before { content: fa-content($fa-var-football-ball); } +.#{$fa-css-prefix}-fort-awesome:before { content: fa-content($fa-var-fort-awesome); } +.#{$fa-css-prefix}-fort-awesome-alt:before { content: fa-content($fa-var-fort-awesome-alt); } +.#{$fa-css-prefix}-forumbee:before { content: fa-content($fa-var-forumbee); } +.#{$fa-css-prefix}-forward:before { content: fa-content($fa-var-forward); } +.#{$fa-css-prefix}-foursquare:before { content: fa-content($fa-var-foursquare); } +.#{$fa-css-prefix}-free-code-camp:before { content: fa-content($fa-var-free-code-camp); } +.#{$fa-css-prefix}-freebsd:before { content: fa-content($fa-var-freebsd); } +.#{$fa-css-prefix}-frown:before { content: fa-content($fa-var-frown); } +.#{$fa-css-prefix}-futbol:before { content: fa-content($fa-var-futbol); } +.#{$fa-css-prefix}-gamepad:before { content: fa-content($fa-var-gamepad); } +.#{$fa-css-prefix}-gavel:before { content: fa-content($fa-var-gavel); } +.#{$fa-css-prefix}-gem:before { content: fa-content($fa-var-gem); } +.#{$fa-css-prefix}-genderless:before { content: fa-content($fa-var-genderless); } +.#{$fa-css-prefix}-get-pocket:before { content: fa-content($fa-var-get-pocket); } +.#{$fa-css-prefix}-gg:before { content: fa-content($fa-var-gg); } +.#{$fa-css-prefix}-gg-circle:before { content: fa-content($fa-var-gg-circle); } +.#{$fa-css-prefix}-gift:before { content: fa-content($fa-var-gift); } +.#{$fa-css-prefix}-git:before { content: fa-content($fa-var-git); } +.#{$fa-css-prefix}-git-square:before { content: fa-content($fa-var-git-square); } +.#{$fa-css-prefix}-github:before { content: fa-content($fa-var-github); } +.#{$fa-css-prefix}-github-alt:before { content: fa-content($fa-var-github-alt); } +.#{$fa-css-prefix}-github-square:before { content: fa-content($fa-var-github-square); } +.#{$fa-css-prefix}-gitkraken:before { content: fa-content($fa-var-gitkraken); } +.#{$fa-css-prefix}-gitlab:before { content: fa-content($fa-var-gitlab); } +.#{$fa-css-prefix}-gitter:before { content: fa-content($fa-var-gitter); } +.#{$fa-css-prefix}-glass-martini:before { content: fa-content($fa-var-glass-martini); } +.#{$fa-css-prefix}-glide:before { content: fa-content($fa-var-glide); } +.#{$fa-css-prefix}-glide-g:before { content: fa-content($fa-var-glide-g); } +.#{$fa-css-prefix}-globe:before { content: fa-content($fa-var-globe); } +.#{$fa-css-prefix}-gofore:before { content: fa-content($fa-var-gofore); } +.#{$fa-css-prefix}-golf-ball:before { content: fa-content($fa-var-golf-ball); } +.#{$fa-css-prefix}-goodreads:before { content: fa-content($fa-var-goodreads); } +.#{$fa-css-prefix}-goodreads-g:before { content: fa-content($fa-var-goodreads-g); } +.#{$fa-css-prefix}-google:before { content: fa-content($fa-var-google); } +.#{$fa-css-prefix}-google-drive:before { content: fa-content($fa-var-google-drive); } +.#{$fa-css-prefix}-google-play:before { content: fa-content($fa-var-google-play); } +.#{$fa-css-prefix}-google-plus:before { content: fa-content($fa-var-google-plus); } +.#{$fa-css-prefix}-google-plus-g:before { content: fa-content($fa-var-google-plus-g); } +.#{$fa-css-prefix}-google-plus-square:before { content: fa-content($fa-var-google-plus-square); } +.#{$fa-css-prefix}-google-wallet:before { content: fa-content($fa-var-google-wallet); } +.#{$fa-css-prefix}-graduation-cap:before { content: fa-content($fa-var-graduation-cap); } +.#{$fa-css-prefix}-gratipay:before { content: fa-content($fa-var-gratipay); } +.#{$fa-css-prefix}-grav:before { content: fa-content($fa-var-grav); } +.#{$fa-css-prefix}-gripfire:before { content: fa-content($fa-var-gripfire); } +.#{$fa-css-prefix}-grunt:before { content: fa-content($fa-var-grunt); } +.#{$fa-css-prefix}-gulp:before { content: fa-content($fa-var-gulp); } +.#{$fa-css-prefix}-h-square:before { content: fa-content($fa-var-h-square); } +.#{$fa-css-prefix}-hacker-news:before { content: fa-content($fa-var-hacker-news); } +.#{$fa-css-prefix}-hacker-news-square:before { content: fa-content($fa-var-hacker-news-square); } +.#{$fa-css-prefix}-hand-holding:before { content: fa-content($fa-var-hand-holding); } +.#{$fa-css-prefix}-hand-holding-heart:before { content: fa-content($fa-var-hand-holding-heart); } +.#{$fa-css-prefix}-hand-holding-usd:before { content: fa-content($fa-var-hand-holding-usd); } +.#{$fa-css-prefix}-hand-lizard:before { content: fa-content($fa-var-hand-lizard); } +.#{$fa-css-prefix}-hand-paper:before { content: fa-content($fa-var-hand-paper); } +.#{$fa-css-prefix}-hand-peace:before { content: fa-content($fa-var-hand-peace); } +.#{$fa-css-prefix}-hand-point-down:before { content: fa-content($fa-var-hand-point-down); } +.#{$fa-css-prefix}-hand-point-left:before { content: fa-content($fa-var-hand-point-left); } +.#{$fa-css-prefix}-hand-point-right:before { content: fa-content($fa-var-hand-point-right); } +.#{$fa-css-prefix}-hand-point-up:before { content: fa-content($fa-var-hand-point-up); } +.#{$fa-css-prefix}-hand-pointer:before { content: fa-content($fa-var-hand-pointer); } +.#{$fa-css-prefix}-hand-rock:before { content: fa-content($fa-var-hand-rock); } +.#{$fa-css-prefix}-hand-scissors:before { content: fa-content($fa-var-hand-scissors); } +.#{$fa-css-prefix}-hand-spock:before { content: fa-content($fa-var-hand-spock); } +.#{$fa-css-prefix}-hands:before { content: fa-content($fa-var-hands); } +.#{$fa-css-prefix}-hands-helping:before { content: fa-content($fa-var-hands-helping); } +.#{$fa-css-prefix}-handshake:before { content: fa-content($fa-var-handshake); } +.#{$fa-css-prefix}-hashtag:before { content: fa-content($fa-var-hashtag); } +.#{$fa-css-prefix}-hdd:before { content: fa-content($fa-var-hdd); } +.#{$fa-css-prefix}-heading:before { content: fa-content($fa-var-heading); } +.#{$fa-css-prefix}-headphones:before { content: fa-content($fa-var-headphones); } +.#{$fa-css-prefix}-heart:before { content: fa-content($fa-var-heart); } +.#{$fa-css-prefix}-heartbeat:before { content: fa-content($fa-var-heartbeat); } +.#{$fa-css-prefix}-hips:before { content: fa-content($fa-var-hips); } +.#{$fa-css-prefix}-hire-a-helper:before { content: fa-content($fa-var-hire-a-helper); } +.#{$fa-css-prefix}-history:before { content: fa-content($fa-var-history); } +.#{$fa-css-prefix}-hockey-puck:before { content: fa-content($fa-var-hockey-puck); } +.#{$fa-css-prefix}-home:before { content: fa-content($fa-var-home); } +.#{$fa-css-prefix}-hooli:before { content: fa-content($fa-var-hooli); } +.#{$fa-css-prefix}-hospital:before { content: fa-content($fa-var-hospital); } +.#{$fa-css-prefix}-hospital-alt:before { content: fa-content($fa-var-hospital-alt); } +.#{$fa-css-prefix}-hospital-symbol:before { content: fa-content($fa-var-hospital-symbol); } +.#{$fa-css-prefix}-hotjar:before { content: fa-content($fa-var-hotjar); } +.#{$fa-css-prefix}-hourglass:before { content: fa-content($fa-var-hourglass); } +.#{$fa-css-prefix}-hourglass-end:before { content: fa-content($fa-var-hourglass-end); } +.#{$fa-css-prefix}-hourglass-half:before { content: fa-content($fa-var-hourglass-half); } +.#{$fa-css-prefix}-hourglass-start:before { content: fa-content($fa-var-hourglass-start); } +.#{$fa-css-prefix}-houzz:before { content: fa-content($fa-var-houzz); } +.#{$fa-css-prefix}-html5:before { content: fa-content($fa-var-html5); } +.#{$fa-css-prefix}-hubspot:before { content: fa-content($fa-var-hubspot); } +.#{$fa-css-prefix}-i-cursor:before { content: fa-content($fa-var-i-cursor); } +.#{$fa-css-prefix}-id-badge:before { content: fa-content($fa-var-id-badge); } +.#{$fa-css-prefix}-id-card:before { content: fa-content($fa-var-id-card); } +.#{$fa-css-prefix}-id-card-alt:before { content: fa-content($fa-var-id-card-alt); } +.#{$fa-css-prefix}-image:before { content: fa-content($fa-var-image); } +.#{$fa-css-prefix}-images:before { content: fa-content($fa-var-images); } +.#{$fa-css-prefix}-imdb:before { content: fa-content($fa-var-imdb); } +.#{$fa-css-prefix}-inbox:before { content: fa-content($fa-var-inbox); } +.#{$fa-css-prefix}-indent:before { content: fa-content($fa-var-indent); } +.#{$fa-css-prefix}-industry:before { content: fa-content($fa-var-industry); } +.#{$fa-css-prefix}-info:before { content: fa-content($fa-var-info); } +.#{$fa-css-prefix}-info-circle:before { content: fa-content($fa-var-info-circle); } +.#{$fa-css-prefix}-instagram:before { content: fa-content($fa-var-instagram); } +.#{$fa-css-prefix}-internet-explorer:before { content: fa-content($fa-var-internet-explorer); } +.#{$fa-css-prefix}-ioxhost:before { content: fa-content($fa-var-ioxhost); } +.#{$fa-css-prefix}-italic:before { content: fa-content($fa-var-italic); } +.#{$fa-css-prefix}-itunes:before { content: fa-content($fa-var-itunes); } +.#{$fa-css-prefix}-itunes-note:before { content: fa-content($fa-var-itunes-note); } +.#{$fa-css-prefix}-java:before { content: fa-content($fa-var-java); } +.#{$fa-css-prefix}-jenkins:before { content: fa-content($fa-var-jenkins); } +.#{$fa-css-prefix}-joget:before { content: fa-content($fa-var-joget); } +.#{$fa-css-prefix}-joomla:before { content: fa-content($fa-var-joomla); } +.#{$fa-css-prefix}-js:before { content: fa-content($fa-var-js); } +.#{$fa-css-prefix}-js-square:before { content: fa-content($fa-var-js-square); } +.#{$fa-css-prefix}-jsfiddle:before { content: fa-content($fa-var-jsfiddle); } +.#{$fa-css-prefix}-key:before { content: fa-content($fa-var-key); } +.#{$fa-css-prefix}-keyboard:before { content: fa-content($fa-var-keyboard); } +.#{$fa-css-prefix}-keycdn:before { content: fa-content($fa-var-keycdn); } +.#{$fa-css-prefix}-kickstarter:before { content: fa-content($fa-var-kickstarter); } +.#{$fa-css-prefix}-kickstarter-k:before { content: fa-content($fa-var-kickstarter-k); } +.#{$fa-css-prefix}-korvue:before { content: fa-content($fa-var-korvue); } +.#{$fa-css-prefix}-language:before { content: fa-content($fa-var-language); } +.#{$fa-css-prefix}-laptop:before { content: fa-content($fa-var-laptop); } +.#{$fa-css-prefix}-laravel:before { content: fa-content($fa-var-laravel); } +.#{$fa-css-prefix}-lastfm:before { content: fa-content($fa-var-lastfm); } +.#{$fa-css-prefix}-lastfm-square:before { content: fa-content($fa-var-lastfm-square); } +.#{$fa-css-prefix}-leaf:before { content: fa-content($fa-var-leaf); } +.#{$fa-css-prefix}-leanpub:before { content: fa-content($fa-var-leanpub); } +.#{$fa-css-prefix}-lemon:before { content: fa-content($fa-var-lemon); } +.#{$fa-css-prefix}-less:before { content: fa-content($fa-var-less); } +.#{$fa-css-prefix}-level-down-alt:before { content: fa-content($fa-var-level-down-alt); } +.#{$fa-css-prefix}-level-up-alt:before { content: fa-content($fa-var-level-up-alt); } +.#{$fa-css-prefix}-life-ring:before { content: fa-content($fa-var-life-ring); } +.#{$fa-css-prefix}-lightbulb:before { content: fa-content($fa-var-lightbulb); } +.#{$fa-css-prefix}-line:before { content: fa-content($fa-var-line); } +.#{$fa-css-prefix}-link:before { content: fa-content($fa-var-link); } +.#{$fa-css-prefix}-linkedin:before { content: fa-content($fa-var-linkedin); } +.#{$fa-css-prefix}-linkedin-in:before { content: fa-content($fa-var-linkedin-in); } +.#{$fa-css-prefix}-linode:before { content: fa-content($fa-var-linode); } +.#{$fa-css-prefix}-linux:before { content: fa-content($fa-var-linux); } +.#{$fa-css-prefix}-lira-sign:before { content: fa-content($fa-var-lira-sign); } +.#{$fa-css-prefix}-list:before { content: fa-content($fa-var-list); } +.#{$fa-css-prefix}-list-alt:before { content: fa-content($fa-var-list-alt); } +.#{$fa-css-prefix}-list-ol:before { content: fa-content($fa-var-list-ol); } +.#{$fa-css-prefix}-list-ul:before { content: fa-content($fa-var-list-ul); } +.#{$fa-css-prefix}-location-arrow:before { content: fa-content($fa-var-location-arrow); } +.#{$fa-css-prefix}-lock:before { content: fa-content($fa-var-lock); } +.#{$fa-css-prefix}-lock-open:before { content: fa-content($fa-var-lock-open); } +.#{$fa-css-prefix}-long-arrow-alt-down:before { content: fa-content($fa-var-long-arrow-alt-down); } +.#{$fa-css-prefix}-long-arrow-alt-left:before { content: fa-content($fa-var-long-arrow-alt-left); } +.#{$fa-css-prefix}-long-arrow-alt-right:before { content: fa-content($fa-var-long-arrow-alt-right); } +.#{$fa-css-prefix}-long-arrow-alt-up:before { content: fa-content($fa-var-long-arrow-alt-up); } +.#{$fa-css-prefix}-low-vision:before { content: fa-content($fa-var-low-vision); } +.#{$fa-css-prefix}-lyft:before { content: fa-content($fa-var-lyft); } +.#{$fa-css-prefix}-magento:before { content: fa-content($fa-var-magento); } +.#{$fa-css-prefix}-magic:before { content: fa-content($fa-var-magic); } +.#{$fa-css-prefix}-magnet:before { content: fa-content($fa-var-magnet); } +.#{$fa-css-prefix}-male:before { content: fa-content($fa-var-male); } +.#{$fa-css-prefix}-map:before { content: fa-content($fa-var-map); } +.#{$fa-css-prefix}-map-marker:before { content: fa-content($fa-var-map-marker); } +.#{$fa-css-prefix}-map-marker-alt:before { content: fa-content($fa-var-map-marker-alt); } +.#{$fa-css-prefix}-map-pin:before { content: fa-content($fa-var-map-pin); } +.#{$fa-css-prefix}-map-signs:before { content: fa-content($fa-var-map-signs); } +.#{$fa-css-prefix}-mars:before { content: fa-content($fa-var-mars); } +.#{$fa-css-prefix}-mars-double:before { content: fa-content($fa-var-mars-double); } +.#{$fa-css-prefix}-mars-stroke:before { content: fa-content($fa-var-mars-stroke); } +.#{$fa-css-prefix}-mars-stroke-h:before { content: fa-content($fa-var-mars-stroke-h); } +.#{$fa-css-prefix}-mars-stroke-v:before { content: fa-content($fa-var-mars-stroke-v); } +.#{$fa-css-prefix}-maxcdn:before { content: fa-content($fa-var-maxcdn); } +.#{$fa-css-prefix}-medapps:before { content: fa-content($fa-var-medapps); } +.#{$fa-css-prefix}-medium:before { content: fa-content($fa-var-medium); } +.#{$fa-css-prefix}-medium-m:before { content: fa-content($fa-var-medium-m); } +.#{$fa-css-prefix}-medkit:before { content: fa-content($fa-var-medkit); } +.#{$fa-css-prefix}-medrt:before { content: fa-content($fa-var-medrt); } +.#{$fa-css-prefix}-meetup:before { content: fa-content($fa-var-meetup); } +.#{$fa-css-prefix}-meh:before { content: fa-content($fa-var-meh); } +.#{$fa-css-prefix}-mercury:before { content: fa-content($fa-var-mercury); } +.#{$fa-css-prefix}-microchip:before { content: fa-content($fa-var-microchip); } +.#{$fa-css-prefix}-microphone:before { content: fa-content($fa-var-microphone); } +.#{$fa-css-prefix}-microphone-slash:before { content: fa-content($fa-var-microphone-slash); } +.#{$fa-css-prefix}-microsoft:before { content: fa-content($fa-var-microsoft); } +.#{$fa-css-prefix}-minus:before { content: fa-content($fa-var-minus); } +.#{$fa-css-prefix}-minus-circle:before { content: fa-content($fa-var-minus-circle); } +.#{$fa-css-prefix}-minus-square:before { content: fa-content($fa-var-minus-square); } +.#{$fa-css-prefix}-mix:before { content: fa-content($fa-var-mix); } +.#{$fa-css-prefix}-mixcloud:before { content: fa-content($fa-var-mixcloud); } +.#{$fa-css-prefix}-mizuni:before { content: fa-content($fa-var-mizuni); } +.#{$fa-css-prefix}-mobile:before { content: fa-content($fa-var-mobile); } +.#{$fa-css-prefix}-mobile-alt:before { content: fa-content($fa-var-mobile-alt); } +.#{$fa-css-prefix}-modx:before { content: fa-content($fa-var-modx); } +.#{$fa-css-prefix}-monero:before { content: fa-content($fa-var-monero); } +.#{$fa-css-prefix}-money-bill-alt:before { content: fa-content($fa-var-money-bill-alt); } +.#{$fa-css-prefix}-moon:before { content: fa-content($fa-var-moon); } +.#{$fa-css-prefix}-motorcycle:before { content: fa-content($fa-var-motorcycle); } +.#{$fa-css-prefix}-mouse-pointer:before { content: fa-content($fa-var-mouse-pointer); } +.#{$fa-css-prefix}-music:before { content: fa-content($fa-var-music); } +.#{$fa-css-prefix}-napster:before { content: fa-content($fa-var-napster); } +.#{$fa-css-prefix}-neuter:before { content: fa-content($fa-var-neuter); } +.#{$fa-css-prefix}-newspaper:before { content: fa-content($fa-var-newspaper); } +.#{$fa-css-prefix}-nintendo-switch:before { content: fa-content($fa-var-nintendo-switch); } +.#{$fa-css-prefix}-node:before { content: fa-content($fa-var-node); } +.#{$fa-css-prefix}-node-js:before { content: fa-content($fa-var-node-js); } +.#{$fa-css-prefix}-notes-medical:before { content: fa-content($fa-var-notes-medical); } +.#{$fa-css-prefix}-npm:before { content: fa-content($fa-var-npm); } +.#{$fa-css-prefix}-ns8:before { content: fa-content($fa-var-ns8); } +.#{$fa-css-prefix}-nutritionix:before { content: fa-content($fa-var-nutritionix); } +.#{$fa-css-prefix}-object-group:before { content: fa-content($fa-var-object-group); } +.#{$fa-css-prefix}-object-ungroup:before { content: fa-content($fa-var-object-ungroup); } +.#{$fa-css-prefix}-odnoklassniki:before { content: fa-content($fa-var-odnoklassniki); } +.#{$fa-css-prefix}-odnoklassniki-square:before { content: fa-content($fa-var-odnoklassniki-square); } +.#{$fa-css-prefix}-opencart:before { content: fa-content($fa-var-opencart); } +.#{$fa-css-prefix}-openid:before { content: fa-content($fa-var-openid); } +.#{$fa-css-prefix}-opera:before { content: fa-content($fa-var-opera); } +.#{$fa-css-prefix}-optin-monster:before { content: fa-content($fa-var-optin-monster); } +.#{$fa-css-prefix}-osi:before { content: fa-content($fa-var-osi); } +.#{$fa-css-prefix}-outdent:before { content: fa-content($fa-var-outdent); } +.#{$fa-css-prefix}-page4:before { content: fa-content($fa-var-page4); } +.#{$fa-css-prefix}-pagelines:before { content: fa-content($fa-var-pagelines); } +.#{$fa-css-prefix}-paint-brush:before { content: fa-content($fa-var-paint-brush); } +.#{$fa-css-prefix}-palfed:before { content: fa-content($fa-var-palfed); } +.#{$fa-css-prefix}-pallet:before { content: fa-content($fa-var-pallet); } +.#{$fa-css-prefix}-paper-plane:before { content: fa-content($fa-var-paper-plane); } +.#{$fa-css-prefix}-paperclip:before { content: fa-content($fa-var-paperclip); } +.#{$fa-css-prefix}-parachute-box:before { content: fa-content($fa-var-parachute-box); } +.#{$fa-css-prefix}-paragraph:before { content: fa-content($fa-var-paragraph); } +.#{$fa-css-prefix}-paste:before { content: fa-content($fa-var-paste); } +.#{$fa-css-prefix}-patreon:before { content: fa-content($fa-var-patreon); } +.#{$fa-css-prefix}-pause:before { content: fa-content($fa-var-pause); } +.#{$fa-css-prefix}-pause-circle:before { content: fa-content($fa-var-pause-circle); } +.#{$fa-css-prefix}-paw:before { content: fa-content($fa-var-paw); } +.#{$fa-css-prefix}-paypal:before { content: fa-content($fa-var-paypal); } +.#{$fa-css-prefix}-pen-square:before { content: fa-content($fa-var-pen-square); } +.#{$fa-css-prefix}-pencil-alt:before { content: fa-content($fa-var-pencil-alt); } +.#{$fa-css-prefix}-people-carry:before { content: fa-content($fa-var-people-carry); } +.#{$fa-css-prefix}-percent:before { content: fa-content($fa-var-percent); } +.#{$fa-css-prefix}-periscope:before { content: fa-content($fa-var-periscope); } +.#{$fa-css-prefix}-phabricator:before { content: fa-content($fa-var-phabricator); } +.#{$fa-css-prefix}-phoenix-framework:before { content: fa-content($fa-var-phoenix-framework); } +.#{$fa-css-prefix}-phone:before { content: fa-content($fa-var-phone); } +.#{$fa-css-prefix}-phone-slash:before { content: fa-content($fa-var-phone-slash); } +.#{$fa-css-prefix}-phone-square:before { content: fa-content($fa-var-phone-square); } +.#{$fa-css-prefix}-phone-volume:before { content: fa-content($fa-var-phone-volume); } +.#{$fa-css-prefix}-php:before { content: fa-content($fa-var-php); } +.#{$fa-css-prefix}-pied-piper:before { content: fa-content($fa-var-pied-piper); } +.#{$fa-css-prefix}-pied-piper-alt:before { content: fa-content($fa-var-pied-piper-alt); } +.#{$fa-css-prefix}-pied-piper-hat:before { content: fa-content($fa-var-pied-piper-hat); } +.#{$fa-css-prefix}-pied-piper-pp:before { content: fa-content($fa-var-pied-piper-pp); } +.#{$fa-css-prefix}-piggy-bank:before { content: fa-content($fa-var-piggy-bank); } +.#{$fa-css-prefix}-pills:before { content: fa-content($fa-var-pills); } +.#{$fa-css-prefix}-pinterest:before { content: fa-content($fa-var-pinterest); } +.#{$fa-css-prefix}-pinterest-p:before { content: fa-content($fa-var-pinterest-p); } +.#{$fa-css-prefix}-pinterest-square:before { content: fa-content($fa-var-pinterest-square); } +.#{$fa-css-prefix}-plane:before { content: fa-content($fa-var-plane); } +.#{$fa-css-prefix}-play:before { content: fa-content($fa-var-play); } +.#{$fa-css-prefix}-play-circle:before { content: fa-content($fa-var-play-circle); } +.#{$fa-css-prefix}-playstation:before { content: fa-content($fa-var-playstation); } +.#{$fa-css-prefix}-plug:before { content: fa-content($fa-var-plug); } +.#{$fa-css-prefix}-plus:before { content: fa-content($fa-var-plus); } +.#{$fa-css-prefix}-plus-circle:before { content: fa-content($fa-var-plus-circle); } +.#{$fa-css-prefix}-plus-square:before { content: fa-content($fa-var-plus-square); } +.#{$fa-css-prefix}-podcast:before { content: fa-content($fa-var-podcast); } +.#{$fa-css-prefix}-poo:before { content: fa-content($fa-var-poo); } +.#{$fa-css-prefix}-pound-sign:before { content: fa-content($fa-var-pound-sign); } +.#{$fa-css-prefix}-power-off:before { content: fa-content($fa-var-power-off); } +.#{$fa-css-prefix}-prescription-bottle:before { content: fa-content($fa-var-prescription-bottle); } +.#{$fa-css-prefix}-prescription-bottle-alt:before { content: fa-content($fa-var-prescription-bottle-alt); } +.#{$fa-css-prefix}-print:before { content: fa-content($fa-var-print); } +.#{$fa-css-prefix}-procedures:before { content: fa-content($fa-var-procedures); } +.#{$fa-css-prefix}-product-hunt:before { content: fa-content($fa-var-product-hunt); } +.#{$fa-css-prefix}-pushed:before { content: fa-content($fa-var-pushed); } +.#{$fa-css-prefix}-puzzle-piece:before { content: fa-content($fa-var-puzzle-piece); } +.#{$fa-css-prefix}-python:before { content: fa-content($fa-var-python); } +.#{$fa-css-prefix}-qq:before { content: fa-content($fa-var-qq); } +.#{$fa-css-prefix}-qrcode:before { content: fa-content($fa-var-qrcode); } +.#{$fa-css-prefix}-question:before { content: fa-content($fa-var-question); } +.#{$fa-css-prefix}-question-circle:before { content: fa-content($fa-var-question-circle); } +.#{$fa-css-prefix}-quidditch:before { content: fa-content($fa-var-quidditch); } +.#{$fa-css-prefix}-quinscape:before { content: fa-content($fa-var-quinscape); } +.#{$fa-css-prefix}-quora:before { content: fa-content($fa-var-quora); } +.#{$fa-css-prefix}-quote-left:before { content: fa-content($fa-var-quote-left); } +.#{$fa-css-prefix}-quote-right:before { content: fa-content($fa-var-quote-right); } +.#{$fa-css-prefix}-random:before { content: fa-content($fa-var-random); } +.#{$fa-css-prefix}-ravelry:before { content: fa-content($fa-var-ravelry); } +.#{$fa-css-prefix}-react:before { content: fa-content($fa-var-react); } +.#{$fa-css-prefix}-readme:before { content: fa-content($fa-var-readme); } +.#{$fa-css-prefix}-rebel:before { content: fa-content($fa-var-rebel); } +.#{$fa-css-prefix}-recycle:before { content: fa-content($fa-var-recycle); } +.#{$fa-css-prefix}-red-river:before { content: fa-content($fa-var-red-river); } +.#{$fa-css-prefix}-reddit:before { content: fa-content($fa-var-reddit); } +.#{$fa-css-prefix}-reddit-alien:before { content: fa-content($fa-var-reddit-alien); } +.#{$fa-css-prefix}-reddit-square:before { content: fa-content($fa-var-reddit-square); } +.#{$fa-css-prefix}-redo:before { content: fa-content($fa-var-redo); } +.#{$fa-css-prefix}-redo-alt:before { content: fa-content($fa-var-redo-alt); } +.#{$fa-css-prefix}-registered:before { content: fa-content($fa-var-registered); } +.#{$fa-css-prefix}-rendact:before { content: fa-content($fa-var-rendact); } +.#{$fa-css-prefix}-renren:before { content: fa-content($fa-var-renren); } +.#{$fa-css-prefix}-reply:before { content: fa-content($fa-var-reply); } +.#{$fa-css-prefix}-reply-all:before { content: fa-content($fa-var-reply-all); } +.#{$fa-css-prefix}-replyd:before { content: fa-content($fa-var-replyd); } +.#{$fa-css-prefix}-resolving:before { content: fa-content($fa-var-resolving); } +.#{$fa-css-prefix}-retweet:before { content: fa-content($fa-var-retweet); } +.#{$fa-css-prefix}-ribbon:before { content: fa-content($fa-var-ribbon); } +.#{$fa-css-prefix}-road:before { content: fa-content($fa-var-road); } +.#{$fa-css-prefix}-rocket:before { content: fa-content($fa-var-rocket); } +.#{$fa-css-prefix}-rocketchat:before { content: fa-content($fa-var-rocketchat); } +.#{$fa-css-prefix}-rockrms:before { content: fa-content($fa-var-rockrms); } +.#{$fa-css-prefix}-rss:before { content: fa-content($fa-var-rss); } +.#{$fa-css-prefix}-rss-square:before { content: fa-content($fa-var-rss-square); } +.#{$fa-css-prefix}-ruble-sign:before { content: fa-content($fa-var-ruble-sign); } +.#{$fa-css-prefix}-rupee-sign:before { content: fa-content($fa-var-rupee-sign); } +.#{$fa-css-prefix}-safari:before { content: fa-content($fa-var-safari); } +.#{$fa-css-prefix}-sass:before { content: fa-content($fa-var-sass); } +.#{$fa-css-prefix}-save:before { content: fa-content($fa-var-save); } +.#{$fa-css-prefix}-schlix:before { content: fa-content($fa-var-schlix); } +.#{$fa-css-prefix}-scribd:before { content: fa-content($fa-var-scribd); } +.#{$fa-css-prefix}-search:before { content: fa-content($fa-var-search); } +.#{$fa-css-prefix}-search-minus:before { content: fa-content($fa-var-search-minus); } +.#{$fa-css-prefix}-search-plus:before { content: fa-content($fa-var-search-plus); } +.#{$fa-css-prefix}-searchengin:before { content: fa-content($fa-var-searchengin); } +.#{$fa-css-prefix}-seedling:before { content: fa-content($fa-var-seedling); } +.#{$fa-css-prefix}-sellcast:before { content: fa-content($fa-var-sellcast); } +.#{$fa-css-prefix}-sellsy:before { content: fa-content($fa-var-sellsy); } +.#{$fa-css-prefix}-server:before { content: fa-content($fa-var-server); } +.#{$fa-css-prefix}-servicestack:before { content: fa-content($fa-var-servicestack); } +.#{$fa-css-prefix}-share:before { content: fa-content($fa-var-share); } +.#{$fa-css-prefix}-share-alt:before { content: fa-content($fa-var-share-alt); } +.#{$fa-css-prefix}-share-alt-square:before { content: fa-content($fa-var-share-alt-square); } +.#{$fa-css-prefix}-share-square:before { content: fa-content($fa-var-share-square); } +.#{$fa-css-prefix}-shekel-sign:before { content: fa-content($fa-var-shekel-sign); } +.#{$fa-css-prefix}-shield-alt:before { content: fa-content($fa-var-shield-alt); } +.#{$fa-css-prefix}-ship:before { content: fa-content($fa-var-ship); } +.#{$fa-css-prefix}-shipping-fast:before { content: fa-content($fa-var-shipping-fast); } +.#{$fa-css-prefix}-shirtsinbulk:before { content: fa-content($fa-var-shirtsinbulk); } +.#{$fa-css-prefix}-shopping-bag:before { content: fa-content($fa-var-shopping-bag); } +.#{$fa-css-prefix}-shopping-basket:before { content: fa-content($fa-var-shopping-basket); } +.#{$fa-css-prefix}-shopping-cart:before { content: fa-content($fa-var-shopping-cart); } +.#{$fa-css-prefix}-shower:before { content: fa-content($fa-var-shower); } +.#{$fa-css-prefix}-sign:before { content: fa-content($fa-var-sign); } +.#{$fa-css-prefix}-sign-in-alt:before { content: fa-content($fa-var-sign-in-alt); } +.#{$fa-css-prefix}-sign-language:before { content: fa-content($fa-var-sign-language); } +.#{$fa-css-prefix}-sign-out-alt:before { content: fa-content($fa-var-sign-out-alt); } +.#{$fa-css-prefix}-signal:before { content: fa-content($fa-var-signal); } +.#{$fa-css-prefix}-simplybuilt:before { content: fa-content($fa-var-simplybuilt); } +.#{$fa-css-prefix}-sistrix:before { content: fa-content($fa-var-sistrix); } +.#{$fa-css-prefix}-sitemap:before { content: fa-content($fa-var-sitemap); } +.#{$fa-css-prefix}-skyatlas:before { content: fa-content($fa-var-skyatlas); } +.#{$fa-css-prefix}-skype:before { content: fa-content($fa-var-skype); } +.#{$fa-css-prefix}-slack:before { content: fa-content($fa-var-slack); } +.#{$fa-css-prefix}-slack-hash:before { content: fa-content($fa-var-slack-hash); } +.#{$fa-css-prefix}-sliders-h:before { content: fa-content($fa-var-sliders-h); } +.#{$fa-css-prefix}-slideshare:before { content: fa-content($fa-var-slideshare); } +.#{$fa-css-prefix}-smile:before { content: fa-content($fa-var-smile); } +.#{$fa-css-prefix}-smoking:before { content: fa-content($fa-var-smoking); } +.#{$fa-css-prefix}-snapchat:before { content: fa-content($fa-var-snapchat); } +.#{$fa-css-prefix}-snapchat-ghost:before { content: fa-content($fa-var-snapchat-ghost); } +.#{$fa-css-prefix}-snapchat-square:before { content: fa-content($fa-var-snapchat-square); } +.#{$fa-css-prefix}-snowflake:before { content: fa-content($fa-var-snowflake); } +.#{$fa-css-prefix}-sort:before { content: fa-content($fa-var-sort); } +.#{$fa-css-prefix}-sort-alpha-down:before { content: fa-content($fa-var-sort-alpha-down); } +.#{$fa-css-prefix}-sort-alpha-up:before { content: fa-content($fa-var-sort-alpha-up); } +.#{$fa-css-prefix}-sort-amount-down:before { content: fa-content($fa-var-sort-amount-down); } +.#{$fa-css-prefix}-sort-amount-up:before { content: fa-content($fa-var-sort-amount-up); } +.#{$fa-css-prefix}-sort-down:before { content: fa-content($fa-var-sort-down); } +.#{$fa-css-prefix}-sort-numeric-down:before { content: fa-content($fa-var-sort-numeric-down); } +.#{$fa-css-prefix}-sort-numeric-up:before { content: fa-content($fa-var-sort-numeric-up); } +.#{$fa-css-prefix}-sort-up:before { content: fa-content($fa-var-sort-up); } +.#{$fa-css-prefix}-soundcloud:before { content: fa-content($fa-var-soundcloud); } +.#{$fa-css-prefix}-space-shuttle:before { content: fa-content($fa-var-space-shuttle); } +.#{$fa-css-prefix}-speakap:before { content: fa-content($fa-var-speakap); } +.#{$fa-css-prefix}-spinner:before { content: fa-content($fa-var-spinner); } +.#{$fa-css-prefix}-spotify:before { content: fa-content($fa-var-spotify); } +.#{$fa-css-prefix}-square:before { content: fa-content($fa-var-square); } +.#{$fa-css-prefix}-square-full:before { content: fa-content($fa-var-square-full); } +.#{$fa-css-prefix}-stack-exchange:before { content: fa-content($fa-var-stack-exchange); } +.#{$fa-css-prefix}-stack-overflow:before { content: fa-content($fa-var-stack-overflow); } +.#{$fa-css-prefix}-star:before { content: fa-content($fa-var-star); } +.#{$fa-css-prefix}-star-half:before { content: fa-content($fa-var-star-half); } +.#{$fa-css-prefix}-staylinked:before { content: fa-content($fa-var-staylinked); } +.#{$fa-css-prefix}-steam:before { content: fa-content($fa-var-steam); } +.#{$fa-css-prefix}-steam-square:before { content: fa-content($fa-var-steam-square); } +.#{$fa-css-prefix}-steam-symbol:before { content: fa-content($fa-var-steam-symbol); } +.#{$fa-css-prefix}-step-backward:before { content: fa-content($fa-var-step-backward); } +.#{$fa-css-prefix}-step-forward:before { content: fa-content($fa-var-step-forward); } +.#{$fa-css-prefix}-stethoscope:before { content: fa-content($fa-var-stethoscope); } +.#{$fa-css-prefix}-sticker-mule:before { content: fa-content($fa-var-sticker-mule); } +.#{$fa-css-prefix}-sticky-note:before { content: fa-content($fa-var-sticky-note); } +.#{$fa-css-prefix}-stop:before { content: fa-content($fa-var-stop); } +.#{$fa-css-prefix}-stop-circle:before { content: fa-content($fa-var-stop-circle); } +.#{$fa-css-prefix}-stopwatch:before { content: fa-content($fa-var-stopwatch); } +.#{$fa-css-prefix}-strava:before { content: fa-content($fa-var-strava); } +.#{$fa-css-prefix}-street-view:before { content: fa-content($fa-var-street-view); } +.#{$fa-css-prefix}-strikethrough:before { content: fa-content($fa-var-strikethrough); } +.#{$fa-css-prefix}-stripe:before { content: fa-content($fa-var-stripe); } +.#{$fa-css-prefix}-stripe-s:before { content: fa-content($fa-var-stripe-s); } +.#{$fa-css-prefix}-studiovinari:before { content: fa-content($fa-var-studiovinari); } +.#{$fa-css-prefix}-stumbleupon:before { content: fa-content($fa-var-stumbleupon); } +.#{$fa-css-prefix}-stumbleupon-circle:before { content: fa-content($fa-var-stumbleupon-circle); } +.#{$fa-css-prefix}-subscript:before { content: fa-content($fa-var-subscript); } +.#{$fa-css-prefix}-subway:before { content: fa-content($fa-var-subway); } +.#{$fa-css-prefix}-suitcase:before { content: fa-content($fa-var-suitcase); } +.#{$fa-css-prefix}-sun:before { content: fa-content($fa-var-sun); } +.#{$fa-css-prefix}-superpowers:before { content: fa-content($fa-var-superpowers); } +.#{$fa-css-prefix}-superscript:before { content: fa-content($fa-var-superscript); } +.#{$fa-css-prefix}-supple:before { content: fa-content($fa-var-supple); } +.#{$fa-css-prefix}-sync:before { content: fa-content($fa-var-sync); } +.#{$fa-css-prefix}-sync-alt:before { content: fa-content($fa-var-sync-alt); } +.#{$fa-css-prefix}-syringe:before { content: fa-content($fa-var-syringe); } +.#{$fa-css-prefix}-table:before { content: fa-content($fa-var-table); } +.#{$fa-css-prefix}-table-tennis:before { content: fa-content($fa-var-table-tennis); } +.#{$fa-css-prefix}-tablet:before { content: fa-content($fa-var-tablet); } +.#{$fa-css-prefix}-tablet-alt:before { content: fa-content($fa-var-tablet-alt); } +.#{$fa-css-prefix}-tablets:before { content: fa-content($fa-var-tablets); } +.#{$fa-css-prefix}-tachometer-alt:before { content: fa-content($fa-var-tachometer-alt); } +.#{$fa-css-prefix}-tag:before { content: fa-content($fa-var-tag); } +.#{$fa-css-prefix}-tags:before { content: fa-content($fa-var-tags); } +.#{$fa-css-prefix}-tape:before { content: fa-content($fa-var-tape); } +.#{$fa-css-prefix}-tasks:before { content: fa-content($fa-var-tasks); } +.#{$fa-css-prefix}-taxi:before { content: fa-content($fa-var-taxi); } +.#{$fa-css-prefix}-telegram:before { content: fa-content($fa-var-telegram); } +.#{$fa-css-prefix}-telegram-plane:before { content: fa-content($fa-var-telegram-plane); } +.#{$fa-css-prefix}-tencent-weibo:before { content: fa-content($fa-var-tencent-weibo); } +.#{$fa-css-prefix}-terminal:before { content: fa-content($fa-var-terminal); } +.#{$fa-css-prefix}-text-height:before { content: fa-content($fa-var-text-height); } +.#{$fa-css-prefix}-text-width:before { content: fa-content($fa-var-text-width); } +.#{$fa-css-prefix}-th:before { content: fa-content($fa-var-th); } +.#{$fa-css-prefix}-th-large:before { content: fa-content($fa-var-th-large); } +.#{$fa-css-prefix}-th-list:before { content: fa-content($fa-var-th-list); } +.#{$fa-css-prefix}-themeisle:before { content: fa-content($fa-var-themeisle); } +.#{$fa-css-prefix}-thermometer:before { content: fa-content($fa-var-thermometer); } +.#{$fa-css-prefix}-thermometer-empty:before { content: fa-content($fa-var-thermometer-empty); } +.#{$fa-css-prefix}-thermometer-full:before { content: fa-content($fa-var-thermometer-full); } +.#{$fa-css-prefix}-thermometer-half:before { content: fa-content($fa-var-thermometer-half); } +.#{$fa-css-prefix}-thermometer-quarter:before { content: fa-content($fa-var-thermometer-quarter); } +.#{$fa-css-prefix}-thermometer-three-quarters:before { content: fa-content($fa-var-thermometer-three-quarters); } +.#{$fa-css-prefix}-thumbs-down:before { content: fa-content($fa-var-thumbs-down); } +.#{$fa-css-prefix}-thumbs-up:before { content: fa-content($fa-var-thumbs-up); } +.#{$fa-css-prefix}-thumbtack:before { content: fa-content($fa-var-thumbtack); } +.#{$fa-css-prefix}-ticket-alt:before { content: fa-content($fa-var-ticket-alt); } +.#{$fa-css-prefix}-times:before { content: fa-content($fa-var-times); } +.#{$fa-css-prefix}-times-circle:before { content: fa-content($fa-var-times-circle); } +.#{$fa-css-prefix}-tint:before { content: fa-content($fa-var-tint); } +.#{$fa-css-prefix}-toggle-off:before { content: fa-content($fa-var-toggle-off); } +.#{$fa-css-prefix}-toggle-on:before { content: fa-content($fa-var-toggle-on); } +.#{$fa-css-prefix}-trademark:before { content: fa-content($fa-var-trademark); } +.#{$fa-css-prefix}-train:before { content: fa-content($fa-var-train); } +.#{$fa-css-prefix}-transgender:before { content: fa-content($fa-var-transgender); } +.#{$fa-css-prefix}-transgender-alt:before { content: fa-content($fa-var-transgender-alt); } +.#{$fa-css-prefix}-trash:before { content: fa-content($fa-var-trash); } +.#{$fa-css-prefix}-trash-alt:before { content: fa-content($fa-var-trash-alt); } +.#{$fa-css-prefix}-tree:before { content: fa-content($fa-var-tree); } +.#{$fa-css-prefix}-trello:before { content: fa-content($fa-var-trello); } +.#{$fa-css-prefix}-tripadvisor:before { content: fa-content($fa-var-tripadvisor); } +.#{$fa-css-prefix}-trophy:before { content: fa-content($fa-var-trophy); } +.#{$fa-css-prefix}-truck:before { content: fa-content($fa-var-truck); } +.#{$fa-css-prefix}-truck-loading:before { content: fa-content($fa-var-truck-loading); } +.#{$fa-css-prefix}-truck-moving:before { content: fa-content($fa-var-truck-moving); } +.#{$fa-css-prefix}-tty:before { content: fa-content($fa-var-tty); } +.#{$fa-css-prefix}-tumblr:before { content: fa-content($fa-var-tumblr); } +.#{$fa-css-prefix}-tumblr-square:before { content: fa-content($fa-var-tumblr-square); } +.#{$fa-css-prefix}-tv:before { content: fa-content($fa-var-tv); } +.#{$fa-css-prefix}-twitch:before { content: fa-content($fa-var-twitch); } +.#{$fa-css-prefix}-twitter:before { content: fa-content($fa-var-twitter); } +.#{$fa-css-prefix}-twitter-square:before { content: fa-content($fa-var-twitter-square); } +.#{$fa-css-prefix}-typo3:before { content: fa-content($fa-var-typo3); } +.#{$fa-css-prefix}-uber:before { content: fa-content($fa-var-uber); } +.#{$fa-css-prefix}-uikit:before { content: fa-content($fa-var-uikit); } +.#{$fa-css-prefix}-umbrella:before { content: fa-content($fa-var-umbrella); } +.#{$fa-css-prefix}-underline:before { content: fa-content($fa-var-underline); } +.#{$fa-css-prefix}-undo:before { content: fa-content($fa-var-undo); } +.#{$fa-css-prefix}-undo-alt:before { content: fa-content($fa-var-undo-alt); } +.#{$fa-css-prefix}-uniregistry:before { content: fa-content($fa-var-uniregistry); } +.#{$fa-css-prefix}-universal-access:before { content: fa-content($fa-var-universal-access); } +.#{$fa-css-prefix}-university:before { content: fa-content($fa-var-university); } +.#{$fa-css-prefix}-unlink:before { content: fa-content($fa-var-unlink); } +.#{$fa-css-prefix}-unlock:before { content: fa-content($fa-var-unlock); } +.#{$fa-css-prefix}-unlock-alt:before { content: fa-content($fa-var-unlock-alt); } +.#{$fa-css-prefix}-untappd:before { content: fa-content($fa-var-untappd); } +.#{$fa-css-prefix}-upload:before { content: fa-content($fa-var-upload); } +.#{$fa-css-prefix}-usb:before { content: fa-content($fa-var-usb); } +.#{$fa-css-prefix}-user:before { content: fa-content($fa-var-user); } +.#{$fa-css-prefix}-user-circle:before { content: fa-content($fa-var-user-circle); } +.#{$fa-css-prefix}-user-md:before { content: fa-content($fa-var-user-md); } +.#{$fa-css-prefix}-user-plus:before { content: fa-content($fa-var-user-plus); } +.#{$fa-css-prefix}-user-secret:before { content: fa-content($fa-var-user-secret); } +.#{$fa-css-prefix}-user-times:before { content: fa-content($fa-var-user-times); } +.#{$fa-css-prefix}-users:before { content: fa-content($fa-var-users); } +.#{$fa-css-prefix}-ussunnah:before { content: fa-content($fa-var-ussunnah); } +.#{$fa-css-prefix}-utensil-spoon:before { content: fa-content($fa-var-utensil-spoon); } +.#{$fa-css-prefix}-utensils:before { content: fa-content($fa-var-utensils); } +.#{$fa-css-prefix}-vaadin:before { content: fa-content($fa-var-vaadin); } +.#{$fa-css-prefix}-venus:before { content: fa-content($fa-var-venus); } +.#{$fa-css-prefix}-venus-double:before { content: fa-content($fa-var-venus-double); } +.#{$fa-css-prefix}-venus-mars:before { content: fa-content($fa-var-venus-mars); } +.#{$fa-css-prefix}-viacoin:before { content: fa-content($fa-var-viacoin); } +.#{$fa-css-prefix}-viadeo:before { content: fa-content($fa-var-viadeo); } +.#{$fa-css-prefix}-viadeo-square:before { content: fa-content($fa-var-viadeo-square); } +.#{$fa-css-prefix}-vial:before { content: fa-content($fa-var-vial); } +.#{$fa-css-prefix}-vials:before { content: fa-content($fa-var-vials); } +.#{$fa-css-prefix}-viber:before { content: fa-content($fa-var-viber); } +.#{$fa-css-prefix}-video:before { content: fa-content($fa-var-video); } +.#{$fa-css-prefix}-video-slash:before { content: fa-content($fa-var-video-slash); } +.#{$fa-css-prefix}-vimeo:before { content: fa-content($fa-var-vimeo); } +.#{$fa-css-prefix}-vimeo-square:before { content: fa-content($fa-var-vimeo-square); } +.#{$fa-css-prefix}-vimeo-v:before { content: fa-content($fa-var-vimeo-v); } +.#{$fa-css-prefix}-vine:before { content: fa-content($fa-var-vine); } +.#{$fa-css-prefix}-vk:before { content: fa-content($fa-var-vk); } +.#{$fa-css-prefix}-vnv:before { content: fa-content($fa-var-vnv); } +.#{$fa-css-prefix}-volleyball-ball:before { content: fa-content($fa-var-volleyball-ball); } +.#{$fa-css-prefix}-volume-down:before { content: fa-content($fa-var-volume-down); } +.#{$fa-css-prefix}-volume-off:before { content: fa-content($fa-var-volume-off); } +.#{$fa-css-prefix}-volume-up:before { content: fa-content($fa-var-volume-up); } +.#{$fa-css-prefix}-vuejs:before { content: fa-content($fa-var-vuejs); } +.#{$fa-css-prefix}-warehouse:before { content: fa-content($fa-var-warehouse); } +.#{$fa-css-prefix}-weibo:before { content: fa-content($fa-var-weibo); } +.#{$fa-css-prefix}-weight:before { content: fa-content($fa-var-weight); } +.#{$fa-css-prefix}-weixin:before { content: fa-content($fa-var-weixin); } +.#{$fa-css-prefix}-whatsapp:before { content: fa-content($fa-var-whatsapp); } +.#{$fa-css-prefix}-whatsapp-square:before { content: fa-content($fa-var-whatsapp-square); } +.#{$fa-css-prefix}-wheelchair:before { content: fa-content($fa-var-wheelchair); } +.#{$fa-css-prefix}-whmcs:before { content: fa-content($fa-var-whmcs); } +.#{$fa-css-prefix}-wifi:before { content: fa-content($fa-var-wifi); } +.#{$fa-css-prefix}-wikipedia-w:before { content: fa-content($fa-var-wikipedia-w); } +.#{$fa-css-prefix}-window-close:before { content: fa-content($fa-var-window-close); } +.#{$fa-css-prefix}-window-maximize:before { content: fa-content($fa-var-window-maximize); } +.#{$fa-css-prefix}-window-minimize:before { content: fa-content($fa-var-window-minimize); } +.#{$fa-css-prefix}-window-restore:before { content: fa-content($fa-var-window-restore); } +.#{$fa-css-prefix}-windows:before { content: fa-content($fa-var-windows); } +.#{$fa-css-prefix}-wine-glass:before { content: fa-content($fa-var-wine-glass); } +.#{$fa-css-prefix}-won-sign:before { content: fa-content($fa-var-won-sign); } +.#{$fa-css-prefix}-wordpress:before { content: fa-content($fa-var-wordpress); } +.#{$fa-css-prefix}-wordpress-simple:before { content: fa-content($fa-var-wordpress-simple); } +.#{$fa-css-prefix}-wpbeginner:before { content: fa-content($fa-var-wpbeginner); } +.#{$fa-css-prefix}-wpexplorer:before { content: fa-content($fa-var-wpexplorer); } +.#{$fa-css-prefix}-wpforms:before { content: fa-content($fa-var-wpforms); } +.#{$fa-css-prefix}-wrench:before { content: fa-content($fa-var-wrench); } +.#{$fa-css-prefix}-x-ray:before { content: fa-content($fa-var-x-ray); } +.#{$fa-css-prefix}-xbox:before { content: fa-content($fa-var-xbox); } +.#{$fa-css-prefix}-xing:before { content: fa-content($fa-var-xing); } +.#{$fa-css-prefix}-xing-square:before { content: fa-content($fa-var-xing-square); } +.#{$fa-css-prefix}-y-combinator:before { content: fa-content($fa-var-y-combinator); } +.#{$fa-css-prefix}-yahoo:before { content: fa-content($fa-var-yahoo); } +.#{$fa-css-prefix}-yandex:before { content: fa-content($fa-var-yandex); } +.#{$fa-css-prefix}-yandex-international:before { content: fa-content($fa-var-yandex-international); } +.#{$fa-css-prefix}-yelp:before { content: fa-content($fa-var-yelp); } +.#{$fa-css-prefix}-yen-sign:before { content: fa-content($fa-var-yen-sign); } +.#{$fa-css-prefix}-yoast:before { content: fa-content($fa-var-yoast); } +.#{$fa-css-prefix}-youtube:before { content: fa-content($fa-var-youtube); } +.#{$fa-css-prefix}-youtube-square:before { content: fa-content($fa-var-youtube-square); } diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_larger.scss b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_larger.scss new file mode 100644 index 000000000000..27c2ad5fc452 --- /dev/null +++ b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_larger.scss @@ -0,0 +1,23 @@ +// Icon Sizes +// ------------------------- + +// makes the font 33% larger relative to the icon container +.#{$fa-css-prefix}-lg { + font-size: (4em / 3); + line-height: (3em / 4); + vertical-align: -.0667em; +} + +.#{$fa-css-prefix}-xs { + font-size: .75em; +} + +.#{$fa-css-prefix}-sm { + font-size: .875em; +} + +@for $i from 1 through 10 { + .#{$fa-css-prefix}-#{$i}x { + font-size: $i * 1em; + } +} diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_list.scss b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_list.scss new file mode 100644 index 000000000000..8ebf33333cfd --- /dev/null +++ b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_list.scss @@ -0,0 +1,18 @@ +// List Icons +// ------------------------- + +.#{$fa-css-prefix}-ul { + list-style-type: none; + margin-left: $fa-li-width * 5/4; + padding-left: 0; + + > li { position: relative; } +} + +.#{$fa-css-prefix}-li { + left: -$fa-li-width; + position: absolute; + text-align: center; + width: $fa-li-width; + line-height: inherit; +} diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_mixins.scss b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_mixins.scss new file mode 100644 index 000000000000..50a2e9f18c97 --- /dev/null +++ b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_mixins.scss @@ -0,0 +1,57 @@ +// Mixins +// -------------------------- + +@mixin fa-icon { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + display: inline-block; + font-style: normal; + font-variant: normal; + font-weight: normal; + line-height: 1; + vertical-align: -.125em; +} + +@mixin fa-icon-rotate($degrees, $rotation) { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation})"; + transform: rotate($degrees); +} + +@mixin fa-icon-flip($horiz, $vert, $rotation) { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}, mirror=1)"; + transform: scale($horiz, $vert); +} + + +// Only display content to screen readers. A la Bootstrap 4. +// +// See: http://a11yproject.com/posts/how-to-hide-content/ + +@mixin sr-only { + border: 0; + clip: rect(0, 0, 0, 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} + +// Use in conjunction with .sr-only to only display content when it's focused. +// +// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 +// +// Credit: HTML5 Boilerplate + +@mixin sr-only-focusable { + &:active, + &:focus { + clip: auto; + height: auto; + margin: 0; + overflow: visible; + position: static; + width: auto; + } +} diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_rotated-flipped.scss b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_rotated-flipped.scss new file mode 100644 index 000000000000..995bc4cc70da --- /dev/null +++ b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_rotated-flipped.scss @@ -0,0 +1,23 @@ +// Rotated & Flipped Icons +// ------------------------- + +.#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); } +.#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); } +.#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); } + +.#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); } +.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); } +.#{$fa-css-prefix}-flip-horizontal.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(-1, -1, 2); } + +// Hook for IE8-9 +// ------------------------- + +:root { + .#{$fa-css-prefix}-rotate-90, + .#{$fa-css-prefix}-rotate-180, + .#{$fa-css-prefix}-rotate-270, + .#{$fa-css-prefix}-flip-horizontal, + .#{$fa-css-prefix}-flip-vertical { + filter: none; + } +} diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_screen-reader.scss b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_screen-reader.scss new file mode 100644 index 000000000000..5d0ab262f15f --- /dev/null +++ b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_screen-reader.scss @@ -0,0 +1,5 @@ +// Screen Readers +// ------------------------- + +.sr-only { @include sr-only; } +.sr-only-focusable { @include sr-only-focusable; } diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_stacked.scss b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_stacked.scss new file mode 100644 index 000000000000..6c09d84cd11f --- /dev/null +++ b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_stacked.scss @@ -0,0 +1,31 @@ +// Stacked Icons +// ------------------------- + +.#{$fa-css-prefix}-stack { + display: inline-block; + height: 2em; + line-height: 2em; + position: relative; + vertical-align: middle; + width: 2em; +} + +.#{$fa-css-prefix}-stack-1x, +.#{$fa-css-prefix}-stack-2x { + left: 0; + position: absolute; + text-align: center; + width: 100%; +} + +.#{$fa-css-prefix}-stack-1x { + line-height: inherit; +} + +.#{$fa-css-prefix}-stack-2x { + font-size: 2em; +} + +.#{$fa-css-prefix}-inverse { + color: $fa-inverse; +} diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_variables.scss b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_variables.scss new file mode 100644 index 000000000000..25cc62d16a5b --- /dev/null +++ b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/_variables.scss @@ -0,0 +1,891 @@ +// Variables +// -------------------------- + +$fa-font-path: "../webfonts" !default; +$fa-font-size-base: 16px !default; +$fa-css-prefix: fa !default; +$fa-version: "5.0.10" !default; +$fa-border-color: #eee !default; +$fa-inverse: #fff !default; +$fa-li-width: 2em !default; + +// Convenience function used to set content property +@function fa-content($fa-var) { + @return unquote("\"#{ $fa-var }\""); +} + +$fa-var-500px: \f26e; +$fa-var-accessible-icon: \f368; +$fa-var-accusoft: \f369; +$fa-var-address-book: \f2b9; +$fa-var-address-card: \f2bb; +$fa-var-adjust: \f042; +$fa-var-adn: \f170; +$fa-var-adversal: \f36a; +$fa-var-affiliatetheme: \f36b; +$fa-var-algolia: \f36c; +$fa-var-align-center: \f037; +$fa-var-align-justify: \f039; +$fa-var-align-left: \f036; +$fa-var-align-right: \f038; +$fa-var-allergies: \f461; +$fa-var-amazon: \f270; +$fa-var-amazon-pay: \f42c; +$fa-var-ambulance: \f0f9; +$fa-var-american-sign-language-interpreting: \f2a3; +$fa-var-amilia: \f36d; +$fa-var-anchor: \f13d; +$fa-var-android: \f17b; +$fa-var-angellist: \f209; +$fa-var-angle-double-down: \f103; +$fa-var-angle-double-left: \f100; +$fa-var-angle-double-right: \f101; +$fa-var-angle-double-up: \f102; +$fa-var-angle-down: \f107; +$fa-var-angle-left: \f104; +$fa-var-angle-right: \f105; +$fa-var-angle-up: \f106; +$fa-var-angrycreative: \f36e; +$fa-var-angular: \f420; +$fa-var-app-store: \f36f; +$fa-var-app-store-ios: \f370; +$fa-var-apper: \f371; +$fa-var-apple: \f179; +$fa-var-apple-pay: \f415; +$fa-var-archive: \f187; +$fa-var-arrow-alt-circle-down: \f358; +$fa-var-arrow-alt-circle-left: \f359; +$fa-var-arrow-alt-circle-right: \f35a; +$fa-var-arrow-alt-circle-up: \f35b; +$fa-var-arrow-circle-down: \f0ab; +$fa-var-arrow-circle-left: \f0a8; +$fa-var-arrow-circle-right: \f0a9; +$fa-var-arrow-circle-up: \f0aa; +$fa-var-arrow-down: \f063; +$fa-var-arrow-left: \f060; +$fa-var-arrow-right: \f061; +$fa-var-arrow-up: \f062; +$fa-var-arrows-alt: \f0b2; +$fa-var-arrows-alt-h: \f337; +$fa-var-arrows-alt-v: \f338; +$fa-var-assistive-listening-systems: \f2a2; +$fa-var-asterisk: \f069; +$fa-var-asymmetrik: \f372; +$fa-var-at: \f1fa; +$fa-var-audible: \f373; +$fa-var-audio-description: \f29e; +$fa-var-autoprefixer: \f41c; +$fa-var-avianex: \f374; +$fa-var-aviato: \f421; +$fa-var-aws: \f375; +$fa-var-backward: \f04a; +$fa-var-balance-scale: \f24e; +$fa-var-ban: \f05e; +$fa-var-band-aid: \f462; +$fa-var-bandcamp: \f2d5; +$fa-var-barcode: \f02a; +$fa-var-bars: \f0c9; +$fa-var-baseball-ball: \f433; +$fa-var-basketball-ball: \f434; +$fa-var-bath: \f2cd; +$fa-var-battery-empty: \f244; +$fa-var-battery-full: \f240; +$fa-var-battery-half: \f242; +$fa-var-battery-quarter: \f243; +$fa-var-battery-three-quarters: \f241; +$fa-var-bed: \f236; +$fa-var-beer: \f0fc; +$fa-var-behance: \f1b4; +$fa-var-behance-square: \f1b5; +$fa-var-bell: \f0f3; +$fa-var-bell-slash: \f1f6; +$fa-var-bicycle: \f206; +$fa-var-bimobject: \f378; +$fa-var-binoculars: \f1e5; +$fa-var-birthday-cake: \f1fd; +$fa-var-bitbucket: \f171; +$fa-var-bitcoin: \f379; +$fa-var-bity: \f37a; +$fa-var-black-tie: \f27e; +$fa-var-blackberry: \f37b; +$fa-var-blind: \f29d; +$fa-var-blogger: \f37c; +$fa-var-blogger-b: \f37d; +$fa-var-bluetooth: \f293; +$fa-var-bluetooth-b: \f294; +$fa-var-bold: \f032; +$fa-var-bolt: \f0e7; +$fa-var-bomb: \f1e2; +$fa-var-book: \f02d; +$fa-var-bookmark: \f02e; +$fa-var-bowling-ball: \f436; +$fa-var-box: \f466; +$fa-var-box-open: \f49e; +$fa-var-boxes: \f468; +$fa-var-braille: \f2a1; +$fa-var-briefcase: \f0b1; +$fa-var-briefcase-medical: \f469; +$fa-var-btc: \f15a; +$fa-var-bug: \f188; +$fa-var-building: \f1ad; +$fa-var-bullhorn: \f0a1; +$fa-var-bullseye: \f140; +$fa-var-burn: \f46a; +$fa-var-buromobelexperte: \f37f; +$fa-var-bus: \f207; +$fa-var-buysellads: \f20d; +$fa-var-calculator: \f1ec; +$fa-var-calendar: \f133; +$fa-var-calendar-alt: \f073; +$fa-var-calendar-check: \f274; +$fa-var-calendar-minus: \f272; +$fa-var-calendar-plus: \f271; +$fa-var-calendar-times: \f273; +$fa-var-camera: \f030; +$fa-var-camera-retro: \f083; +$fa-var-capsules: \f46b; +$fa-var-car: \f1b9; +$fa-var-caret-down: \f0d7; +$fa-var-caret-left: \f0d9; +$fa-var-caret-right: \f0da; +$fa-var-caret-square-down: \f150; +$fa-var-caret-square-left: \f191; +$fa-var-caret-square-right: \f152; +$fa-var-caret-square-up: \f151; +$fa-var-caret-up: \f0d8; +$fa-var-cart-arrow-down: \f218; +$fa-var-cart-plus: \f217; +$fa-var-cc-amazon-pay: \f42d; +$fa-var-cc-amex: \f1f3; +$fa-var-cc-apple-pay: \f416; +$fa-var-cc-diners-club: \f24c; +$fa-var-cc-discover: \f1f2; +$fa-var-cc-jcb: \f24b; +$fa-var-cc-mastercard: \f1f1; +$fa-var-cc-paypal: \f1f4; +$fa-var-cc-stripe: \f1f5; +$fa-var-cc-visa: \f1f0; +$fa-var-centercode: \f380; +$fa-var-certificate: \f0a3; +$fa-var-chart-area: \f1fe; +$fa-var-chart-bar: \f080; +$fa-var-chart-line: \f201; +$fa-var-chart-pie: \f200; +$fa-var-check: \f00c; +$fa-var-check-circle: \f058; +$fa-var-check-square: \f14a; +$fa-var-chess: \f439; +$fa-var-chess-bishop: \f43a; +$fa-var-chess-board: \f43c; +$fa-var-chess-king: \f43f; +$fa-var-chess-knight: \f441; +$fa-var-chess-pawn: \f443; +$fa-var-chess-queen: \f445; +$fa-var-chess-rook: \f447; +$fa-var-chevron-circle-down: \f13a; +$fa-var-chevron-circle-left: \f137; +$fa-var-chevron-circle-right: \f138; +$fa-var-chevron-circle-up: \f139; +$fa-var-chevron-down: \f078; +$fa-var-chevron-left: \f053; +$fa-var-chevron-right: \f054; +$fa-var-chevron-up: \f077; +$fa-var-child: \f1ae; +$fa-var-chrome: \f268; +$fa-var-circle: \f111; +$fa-var-circle-notch: \f1ce; +$fa-var-clipboard: \f328; +$fa-var-clipboard-check: \f46c; +$fa-var-clipboard-list: \f46d; +$fa-var-clock: \f017; +$fa-var-clone: \f24d; +$fa-var-closed-captioning: \f20a; +$fa-var-cloud: \f0c2; +$fa-var-cloud-download-alt: \f381; +$fa-var-cloud-upload-alt: \f382; +$fa-var-cloudscale: \f383; +$fa-var-cloudsmith: \f384; +$fa-var-cloudversify: \f385; +$fa-var-code: \f121; +$fa-var-code-branch: \f126; +$fa-var-codepen: \f1cb; +$fa-var-codiepie: \f284; +$fa-var-coffee: \f0f4; +$fa-var-cog: \f013; +$fa-var-cogs: \f085; +$fa-var-columns: \f0db; +$fa-var-comment: \f075; +$fa-var-comment-alt: \f27a; +$fa-var-comment-dots: \f4ad; +$fa-var-comment-slash: \f4b3; +$fa-var-comments: \f086; +$fa-var-compass: \f14e; +$fa-var-compress: \f066; +$fa-var-connectdevelop: \f20e; +$fa-var-contao: \f26d; +$fa-var-copy: \f0c5; +$fa-var-copyright: \f1f9; +$fa-var-couch: \f4b8; +$fa-var-cpanel: \f388; +$fa-var-creative-commons: \f25e; +$fa-var-credit-card: \f09d; +$fa-var-crop: \f125; +$fa-var-crosshairs: \f05b; +$fa-var-css3: \f13c; +$fa-var-css3-alt: \f38b; +$fa-var-cube: \f1b2; +$fa-var-cubes: \f1b3; +$fa-var-cut: \f0c4; +$fa-var-cuttlefish: \f38c; +$fa-var-d-and-d: \f38d; +$fa-var-dashcube: \f210; +$fa-var-database: \f1c0; +$fa-var-deaf: \f2a4; +$fa-var-delicious: \f1a5; +$fa-var-deploydog: \f38e; +$fa-var-deskpro: \f38f; +$fa-var-desktop: \f108; +$fa-var-deviantart: \f1bd; +$fa-var-diagnoses: \f470; +$fa-var-digg: \f1a6; +$fa-var-digital-ocean: \f391; +$fa-var-discord: \f392; +$fa-var-discourse: \f393; +$fa-var-dna: \f471; +$fa-var-dochub: \f394; +$fa-var-docker: \f395; +$fa-var-dollar-sign: \f155; +$fa-var-dolly: \f472; +$fa-var-dolly-flatbed: \f474; +$fa-var-donate: \f4b9; +$fa-var-dot-circle: \f192; +$fa-var-dove: \f4ba; +$fa-var-download: \f019; +$fa-var-draft2digital: \f396; +$fa-var-dribbble: \f17d; +$fa-var-dribbble-square: \f397; +$fa-var-dropbox: \f16b; +$fa-var-drupal: \f1a9; +$fa-var-dyalog: \f399; +$fa-var-earlybirds: \f39a; +$fa-var-edge: \f282; +$fa-var-edit: \f044; +$fa-var-eject: \f052; +$fa-var-elementor: \f430; +$fa-var-ellipsis-h: \f141; +$fa-var-ellipsis-v: \f142; +$fa-var-ember: \f423; +$fa-var-empire: \f1d1; +$fa-var-envelope: \f0e0; +$fa-var-envelope-open: \f2b6; +$fa-var-envelope-square: \f199; +$fa-var-envira: \f299; +$fa-var-eraser: \f12d; +$fa-var-erlang: \f39d; +$fa-var-ethereum: \f42e; +$fa-var-etsy: \f2d7; +$fa-var-euro-sign: \f153; +$fa-var-exchange-alt: \f362; +$fa-var-exclamation: \f12a; +$fa-var-exclamation-circle: \f06a; +$fa-var-exclamation-triangle: \f071; +$fa-var-expand: \f065; +$fa-var-expand-arrows-alt: \f31e; +$fa-var-expeditedssl: \f23e; +$fa-var-external-link-alt: \f35d; +$fa-var-external-link-square-alt: \f360; +$fa-var-eye: \f06e; +$fa-var-eye-dropper: \f1fb; +$fa-var-eye-slash: \f070; +$fa-var-facebook: \f09a; +$fa-var-facebook-f: \f39e; +$fa-var-facebook-messenger: \f39f; +$fa-var-facebook-square: \f082; +$fa-var-fast-backward: \f049; +$fa-var-fast-forward: \f050; +$fa-var-fax: \f1ac; +$fa-var-female: \f182; +$fa-var-fighter-jet: \f0fb; +$fa-var-file: \f15b; +$fa-var-file-alt: \f15c; +$fa-var-file-archive: \f1c6; +$fa-var-file-audio: \f1c7; +$fa-var-file-code: \f1c9; +$fa-var-file-excel: \f1c3; +$fa-var-file-image: \f1c5; +$fa-var-file-medical: \f477; +$fa-var-file-medical-alt: \f478; +$fa-var-file-pdf: \f1c1; +$fa-var-file-powerpoint: \f1c4; +$fa-var-file-video: \f1c8; +$fa-var-file-word: \f1c2; +$fa-var-film: \f008; +$fa-var-filter: \f0b0; +$fa-var-fire: \f06d; +$fa-var-fire-extinguisher: \f134; +$fa-var-firefox: \f269; +$fa-var-first-aid: \f479; +$fa-var-first-order: \f2b0; +$fa-var-firstdraft: \f3a1; +$fa-var-flag: \f024; +$fa-var-flag-checkered: \f11e; +$fa-var-flask: \f0c3; +$fa-var-flickr: \f16e; +$fa-var-flipboard: \f44d; +$fa-var-fly: \f417; +$fa-var-folder: \f07b; +$fa-var-folder-open: \f07c; +$fa-var-font: \f031; +$fa-var-font-awesome: \f2b4; +$fa-var-font-awesome-alt: \f35c; +$fa-var-font-awesome-flag: \f425; +$fa-var-fonticons: \f280; +$fa-var-fonticons-fi: \f3a2; +$fa-var-football-ball: \f44e; +$fa-var-fort-awesome: \f286; +$fa-var-fort-awesome-alt: \f3a3; +$fa-var-forumbee: \f211; +$fa-var-forward: \f04e; +$fa-var-foursquare: \f180; +$fa-var-free-code-camp: \f2c5; +$fa-var-freebsd: \f3a4; +$fa-var-frown: \f119; +$fa-var-futbol: \f1e3; +$fa-var-gamepad: \f11b; +$fa-var-gavel: \f0e3; +$fa-var-gem: \f3a5; +$fa-var-genderless: \f22d; +$fa-var-get-pocket: \f265; +$fa-var-gg: \f260; +$fa-var-gg-circle: \f261; +$fa-var-gift: \f06b; +$fa-var-git: \f1d3; +$fa-var-git-square: \f1d2; +$fa-var-github: \f09b; +$fa-var-github-alt: \f113; +$fa-var-github-square: \f092; +$fa-var-gitkraken: \f3a6; +$fa-var-gitlab: \f296; +$fa-var-gitter: \f426; +$fa-var-glass-martini: \f000; +$fa-var-glide: \f2a5; +$fa-var-glide-g: \f2a6; +$fa-var-globe: \f0ac; +$fa-var-gofore: \f3a7; +$fa-var-golf-ball: \f450; +$fa-var-goodreads: \f3a8; +$fa-var-goodreads-g: \f3a9; +$fa-var-google: \f1a0; +$fa-var-google-drive: \f3aa; +$fa-var-google-play: \f3ab; +$fa-var-google-plus: \f2b3; +$fa-var-google-plus-g: \f0d5; +$fa-var-google-plus-square: \f0d4; +$fa-var-google-wallet: \f1ee; +$fa-var-graduation-cap: \f19d; +$fa-var-gratipay: \f184; +$fa-var-grav: \f2d6; +$fa-var-gripfire: \f3ac; +$fa-var-grunt: \f3ad; +$fa-var-gulp: \f3ae; +$fa-var-h-square: \f0fd; +$fa-var-hacker-news: \f1d4; +$fa-var-hacker-news-square: \f3af; +$fa-var-hand-holding: \f4bd; +$fa-var-hand-holding-heart: \f4be; +$fa-var-hand-holding-usd: \f4c0; +$fa-var-hand-lizard: \f258; +$fa-var-hand-paper: \f256; +$fa-var-hand-peace: \f25b; +$fa-var-hand-point-down: \f0a7; +$fa-var-hand-point-left: \f0a5; +$fa-var-hand-point-right: \f0a4; +$fa-var-hand-point-up: \f0a6; +$fa-var-hand-pointer: \f25a; +$fa-var-hand-rock: \f255; +$fa-var-hand-scissors: \f257; +$fa-var-hand-spock: \f259; +$fa-var-hands: \f4c2; +$fa-var-hands-helping: \f4c4; +$fa-var-handshake: \f2b5; +$fa-var-hashtag: \f292; +$fa-var-hdd: \f0a0; +$fa-var-heading: \f1dc; +$fa-var-headphones: \f025; +$fa-var-heart: \f004; +$fa-var-heartbeat: \f21e; +$fa-var-hips: \f452; +$fa-var-hire-a-helper: \f3b0; +$fa-var-history: \f1da; +$fa-var-hockey-puck: \f453; +$fa-var-home: \f015; +$fa-var-hooli: \f427; +$fa-var-hospital: \f0f8; +$fa-var-hospital-alt: \f47d; +$fa-var-hospital-symbol: \f47e; +$fa-var-hotjar: \f3b1; +$fa-var-hourglass: \f254; +$fa-var-hourglass-end: \f253; +$fa-var-hourglass-half: \f252; +$fa-var-hourglass-start: \f251; +$fa-var-houzz: \f27c; +$fa-var-html5: \f13b; +$fa-var-hubspot: \f3b2; +$fa-var-i-cursor: \f246; +$fa-var-id-badge: \f2c1; +$fa-var-id-card: \f2c2; +$fa-var-id-card-alt: \f47f; +$fa-var-image: \f03e; +$fa-var-images: \f302; +$fa-var-imdb: \f2d8; +$fa-var-inbox: \f01c; +$fa-var-indent: \f03c; +$fa-var-industry: \f275; +$fa-var-info: \f129; +$fa-var-info-circle: \f05a; +$fa-var-instagram: \f16d; +$fa-var-internet-explorer: \f26b; +$fa-var-ioxhost: \f208; +$fa-var-italic: \f033; +$fa-var-itunes: \f3b4; +$fa-var-itunes-note: \f3b5; +$fa-var-java: \f4e4; +$fa-var-jenkins: \f3b6; +$fa-var-joget: \f3b7; +$fa-var-joomla: \f1aa; +$fa-var-js: \f3b8; +$fa-var-js-square: \f3b9; +$fa-var-jsfiddle: \f1cc; +$fa-var-key: \f084; +$fa-var-keyboard: \f11c; +$fa-var-keycdn: \f3ba; +$fa-var-kickstarter: \f3bb; +$fa-var-kickstarter-k: \f3bc; +$fa-var-korvue: \f42f; +$fa-var-language: \f1ab; +$fa-var-laptop: \f109; +$fa-var-laravel: \f3bd; +$fa-var-lastfm: \f202; +$fa-var-lastfm-square: \f203; +$fa-var-leaf: \f06c; +$fa-var-leanpub: \f212; +$fa-var-lemon: \f094; +$fa-var-less: \f41d; +$fa-var-level-down-alt: \f3be; +$fa-var-level-up-alt: \f3bf; +$fa-var-life-ring: \f1cd; +$fa-var-lightbulb: \f0eb; +$fa-var-line: \f3c0; +$fa-var-link: \f0c1; +$fa-var-linkedin: \f08c; +$fa-var-linkedin-in: \f0e1; +$fa-var-linode: \f2b8; +$fa-var-linux: \f17c; +$fa-var-lira-sign: \f195; +$fa-var-list: \f03a; +$fa-var-list-alt: \f022; +$fa-var-list-ol: \f0cb; +$fa-var-list-ul: \f0ca; +$fa-var-location-arrow: \f124; +$fa-var-lock: \f023; +$fa-var-lock-open: \f3c1; +$fa-var-long-arrow-alt-down: \f309; +$fa-var-long-arrow-alt-left: \f30a; +$fa-var-long-arrow-alt-right: \f30b; +$fa-var-long-arrow-alt-up: \f30c; +$fa-var-low-vision: \f2a8; +$fa-var-lyft: \f3c3; +$fa-var-magento: \f3c4; +$fa-var-magic: \f0d0; +$fa-var-magnet: \f076; +$fa-var-male: \f183; +$fa-var-map: \f279; +$fa-var-map-marker: \f041; +$fa-var-map-marker-alt: \f3c5; +$fa-var-map-pin: \f276; +$fa-var-map-signs: \f277; +$fa-var-mars: \f222; +$fa-var-mars-double: \f227; +$fa-var-mars-stroke: \f229; +$fa-var-mars-stroke-h: \f22b; +$fa-var-mars-stroke-v: \f22a; +$fa-var-maxcdn: \f136; +$fa-var-medapps: \f3c6; +$fa-var-medium: \f23a; +$fa-var-medium-m: \f3c7; +$fa-var-medkit: \f0fa; +$fa-var-medrt: \f3c8; +$fa-var-meetup: \f2e0; +$fa-var-meh: \f11a; +$fa-var-mercury: \f223; +$fa-var-microchip: \f2db; +$fa-var-microphone: \f130; +$fa-var-microphone-slash: \f131; +$fa-var-microsoft: \f3ca; +$fa-var-minus: \f068; +$fa-var-minus-circle: \f056; +$fa-var-minus-square: \f146; +$fa-var-mix: \f3cb; +$fa-var-mixcloud: \f289; +$fa-var-mizuni: \f3cc; +$fa-var-mobile: \f10b; +$fa-var-mobile-alt: \f3cd; +$fa-var-modx: \f285; +$fa-var-monero: \f3d0; +$fa-var-money-bill-alt: \f3d1; +$fa-var-moon: \f186; +$fa-var-motorcycle: \f21c; +$fa-var-mouse-pointer: \f245; +$fa-var-music: \f001; +$fa-var-napster: \f3d2; +$fa-var-neuter: \f22c; +$fa-var-newspaper: \f1ea; +$fa-var-nintendo-switch: \f418; +$fa-var-node: \f419; +$fa-var-node-js: \f3d3; +$fa-var-notes-medical: \f481; +$fa-var-npm: \f3d4; +$fa-var-ns8: \f3d5; +$fa-var-nutritionix: \f3d6; +$fa-var-object-group: \f247; +$fa-var-object-ungroup: \f248; +$fa-var-odnoklassniki: \f263; +$fa-var-odnoklassniki-square: \f264; +$fa-var-opencart: \f23d; +$fa-var-openid: \f19b; +$fa-var-opera: \f26a; +$fa-var-optin-monster: \f23c; +$fa-var-osi: \f41a; +$fa-var-outdent: \f03b; +$fa-var-page4: \f3d7; +$fa-var-pagelines: \f18c; +$fa-var-paint-brush: \f1fc; +$fa-var-palfed: \f3d8; +$fa-var-pallet: \f482; +$fa-var-paper-plane: \f1d8; +$fa-var-paperclip: \f0c6; +$fa-var-parachute-box: \f4cd; +$fa-var-paragraph: \f1dd; +$fa-var-paste: \f0ea; +$fa-var-patreon: \f3d9; +$fa-var-pause: \f04c; +$fa-var-pause-circle: \f28b; +$fa-var-paw: \f1b0; +$fa-var-paypal: \f1ed; +$fa-var-pen-square: \f14b; +$fa-var-pencil-alt: \f303; +$fa-var-people-carry: \f4ce; +$fa-var-percent: \f295; +$fa-var-periscope: \f3da; +$fa-var-phabricator: \f3db; +$fa-var-phoenix-framework: \f3dc; +$fa-var-phone: \f095; +$fa-var-phone-slash: \f3dd; +$fa-var-phone-square: \f098; +$fa-var-phone-volume: \f2a0; +$fa-var-php: \f457; +$fa-var-pied-piper: \f2ae; +$fa-var-pied-piper-alt: \f1a8; +$fa-var-pied-piper-hat: \f4e5; +$fa-var-pied-piper-pp: \f1a7; +$fa-var-piggy-bank: \f4d3; +$fa-var-pills: \f484; +$fa-var-pinterest: \f0d2; +$fa-var-pinterest-p: \f231; +$fa-var-pinterest-square: \f0d3; +$fa-var-plane: \f072; +$fa-var-play: \f04b; +$fa-var-play-circle: \f144; +$fa-var-playstation: \f3df; +$fa-var-plug: \f1e6; +$fa-var-plus: \f067; +$fa-var-plus-circle: \f055; +$fa-var-plus-square: \f0fe; +$fa-var-podcast: \f2ce; +$fa-var-poo: \f2fe; +$fa-var-pound-sign: \f154; +$fa-var-power-off: \f011; +$fa-var-prescription-bottle: \f485; +$fa-var-prescription-bottle-alt: \f486; +$fa-var-print: \f02f; +$fa-var-procedures: \f487; +$fa-var-product-hunt: \f288; +$fa-var-pushed: \f3e1; +$fa-var-puzzle-piece: \f12e; +$fa-var-python: \f3e2; +$fa-var-qq: \f1d6; +$fa-var-qrcode: \f029; +$fa-var-question: \f128; +$fa-var-question-circle: \f059; +$fa-var-quidditch: \f458; +$fa-var-quinscape: \f459; +$fa-var-quora: \f2c4; +$fa-var-quote-left: \f10d; +$fa-var-quote-right: \f10e; +$fa-var-random: \f074; +$fa-var-ravelry: \f2d9; +$fa-var-react: \f41b; +$fa-var-readme: \f4d5; +$fa-var-rebel: \f1d0; +$fa-var-recycle: \f1b8; +$fa-var-red-river: \f3e3; +$fa-var-reddit: \f1a1; +$fa-var-reddit-alien: \f281; +$fa-var-reddit-square: \f1a2; +$fa-var-redo: \f01e; +$fa-var-redo-alt: \f2f9; +$fa-var-registered: \f25d; +$fa-var-rendact: \f3e4; +$fa-var-renren: \f18b; +$fa-var-reply: \f3e5; +$fa-var-reply-all: \f122; +$fa-var-replyd: \f3e6; +$fa-var-resolving: \f3e7; +$fa-var-retweet: \f079; +$fa-var-ribbon: \f4d6; +$fa-var-road: \f018; +$fa-var-rocket: \f135; +$fa-var-rocketchat: \f3e8; +$fa-var-rockrms: \f3e9; +$fa-var-rss: \f09e; +$fa-var-rss-square: \f143; +$fa-var-ruble-sign: \f158; +$fa-var-rupee-sign: \f156; +$fa-var-safari: \f267; +$fa-var-sass: \f41e; +$fa-var-save: \f0c7; +$fa-var-schlix: \f3ea; +$fa-var-scribd: \f28a; +$fa-var-search: \f002; +$fa-var-search-minus: \f010; +$fa-var-search-plus: \f00e; +$fa-var-searchengin: \f3eb; +$fa-var-seedling: \f4d8; +$fa-var-sellcast: \f2da; +$fa-var-sellsy: \f213; +$fa-var-server: \f233; +$fa-var-servicestack: \f3ec; +$fa-var-share: \f064; +$fa-var-share-alt: \f1e0; +$fa-var-share-alt-square: \f1e1; +$fa-var-share-square: \f14d; +$fa-var-shekel-sign: \f20b; +$fa-var-shield-alt: \f3ed; +$fa-var-ship: \f21a; +$fa-var-shipping-fast: \f48b; +$fa-var-shirtsinbulk: \f214; +$fa-var-shopping-bag: \f290; +$fa-var-shopping-basket: \f291; +$fa-var-shopping-cart: \f07a; +$fa-var-shower: \f2cc; +$fa-var-sign: \f4d9; +$fa-var-sign-in-alt: \f2f6; +$fa-var-sign-language: \f2a7; +$fa-var-sign-out-alt: \f2f5; +$fa-var-signal: \f012; +$fa-var-simplybuilt: \f215; +$fa-var-sistrix: \f3ee; +$fa-var-sitemap: \f0e8; +$fa-var-skyatlas: \f216; +$fa-var-skype: \f17e; +$fa-var-slack: \f198; +$fa-var-slack-hash: \f3ef; +$fa-var-sliders-h: \f1de; +$fa-var-slideshare: \f1e7; +$fa-var-smile: \f118; +$fa-var-smoking: \f48d; +$fa-var-snapchat: \f2ab; +$fa-var-snapchat-ghost: \f2ac; +$fa-var-snapchat-square: \f2ad; +$fa-var-snowflake: \f2dc; +$fa-var-sort: \f0dc; +$fa-var-sort-alpha-down: \f15d; +$fa-var-sort-alpha-up: \f15e; +$fa-var-sort-amount-down: \f160; +$fa-var-sort-amount-up: \f161; +$fa-var-sort-down: \f0dd; +$fa-var-sort-numeric-down: \f162; +$fa-var-sort-numeric-up: \f163; +$fa-var-sort-up: \f0de; +$fa-var-soundcloud: \f1be; +$fa-var-space-shuttle: \f197; +$fa-var-speakap: \f3f3; +$fa-var-spinner: \f110; +$fa-var-spotify: \f1bc; +$fa-var-square: \f0c8; +$fa-var-square-full: \f45c; +$fa-var-stack-exchange: \f18d; +$fa-var-stack-overflow: \f16c; +$fa-var-star: \f005; +$fa-var-star-half: \f089; +$fa-var-staylinked: \f3f5; +$fa-var-steam: \f1b6; +$fa-var-steam-square: \f1b7; +$fa-var-steam-symbol: \f3f6; +$fa-var-step-backward: \f048; +$fa-var-step-forward: \f051; +$fa-var-stethoscope: \f0f1; +$fa-var-sticker-mule: \f3f7; +$fa-var-sticky-note: \f249; +$fa-var-stop: \f04d; +$fa-var-stop-circle: \f28d; +$fa-var-stopwatch: \f2f2; +$fa-var-strava: \f428; +$fa-var-street-view: \f21d; +$fa-var-strikethrough: \f0cc; +$fa-var-stripe: \f429; +$fa-var-stripe-s: \f42a; +$fa-var-studiovinari: \f3f8; +$fa-var-stumbleupon: \f1a4; +$fa-var-stumbleupon-circle: \f1a3; +$fa-var-subscript: \f12c; +$fa-var-subway: \f239; +$fa-var-suitcase: \f0f2; +$fa-var-sun: \f185; +$fa-var-superpowers: \f2dd; +$fa-var-superscript: \f12b; +$fa-var-supple: \f3f9; +$fa-var-sync: \f021; +$fa-var-sync-alt: \f2f1; +$fa-var-syringe: \f48e; +$fa-var-table: \f0ce; +$fa-var-table-tennis: \f45d; +$fa-var-tablet: \f10a; +$fa-var-tablet-alt: \f3fa; +$fa-var-tablets: \f490; +$fa-var-tachometer-alt: \f3fd; +$fa-var-tag: \f02b; +$fa-var-tags: \f02c; +$fa-var-tape: \f4db; +$fa-var-tasks: \f0ae; +$fa-var-taxi: \f1ba; +$fa-var-telegram: \f2c6; +$fa-var-telegram-plane: \f3fe; +$fa-var-tencent-weibo: \f1d5; +$fa-var-terminal: \f120; +$fa-var-text-height: \f034; +$fa-var-text-width: \f035; +$fa-var-th: \f00a; +$fa-var-th-large: \f009; +$fa-var-th-list: \f00b; +$fa-var-themeisle: \f2b2; +$fa-var-thermometer: \f491; +$fa-var-thermometer-empty: \f2cb; +$fa-var-thermometer-full: \f2c7; +$fa-var-thermometer-half: \f2c9; +$fa-var-thermometer-quarter: \f2ca; +$fa-var-thermometer-three-quarters: \f2c8; +$fa-var-thumbs-down: \f165; +$fa-var-thumbs-up: \f164; +$fa-var-thumbtack: \f08d; +$fa-var-ticket-alt: \f3ff; +$fa-var-times: \f00d; +$fa-var-times-circle: \f057; +$fa-var-tint: \f043; +$fa-var-toggle-off: \f204; +$fa-var-toggle-on: \f205; +$fa-var-trademark: \f25c; +$fa-var-train: \f238; +$fa-var-transgender: \f224; +$fa-var-transgender-alt: \f225; +$fa-var-trash: \f1f8; +$fa-var-trash-alt: \f2ed; +$fa-var-tree: \f1bb; +$fa-var-trello: \f181; +$fa-var-tripadvisor: \f262; +$fa-var-trophy: \f091; +$fa-var-truck: \f0d1; +$fa-var-truck-loading: \f4de; +$fa-var-truck-moving: \f4df; +$fa-var-tty: \f1e4; +$fa-var-tumblr: \f173; +$fa-var-tumblr-square: \f174; +$fa-var-tv: \f26c; +$fa-var-twitch: \f1e8; +$fa-var-twitter: \f099; +$fa-var-twitter-square: \f081; +$fa-var-typo3: \f42b; +$fa-var-uber: \f402; +$fa-var-uikit: \f403; +$fa-var-umbrella: \f0e9; +$fa-var-underline: \f0cd; +$fa-var-undo: \f0e2; +$fa-var-undo-alt: \f2ea; +$fa-var-uniregistry: \f404; +$fa-var-universal-access: \f29a; +$fa-var-university: \f19c; +$fa-var-unlink: \f127; +$fa-var-unlock: \f09c; +$fa-var-unlock-alt: \f13e; +$fa-var-untappd: \f405; +$fa-var-upload: \f093; +$fa-var-usb: \f287; +$fa-var-user: \f007; +$fa-var-user-circle: \f2bd; +$fa-var-user-md: \f0f0; +$fa-var-user-plus: \f234; +$fa-var-user-secret: \f21b; +$fa-var-user-times: \f235; +$fa-var-users: \f0c0; +$fa-var-ussunnah: \f407; +$fa-var-utensil-spoon: \f2e5; +$fa-var-utensils: \f2e7; +$fa-var-vaadin: \f408; +$fa-var-venus: \f221; +$fa-var-venus-double: \f226; +$fa-var-venus-mars: \f228; +$fa-var-viacoin: \f237; +$fa-var-viadeo: \f2a9; +$fa-var-viadeo-square: \f2aa; +$fa-var-vial: \f492; +$fa-var-vials: \f493; +$fa-var-viber: \f409; +$fa-var-video: \f03d; +$fa-var-video-slash: \f4e2; +$fa-var-vimeo: \f40a; +$fa-var-vimeo-square: \f194; +$fa-var-vimeo-v: \f27d; +$fa-var-vine: \f1ca; +$fa-var-vk: \f189; +$fa-var-vnv: \f40b; +$fa-var-volleyball-ball: \f45f; +$fa-var-volume-down: \f027; +$fa-var-volume-off: \f026; +$fa-var-volume-up: \f028; +$fa-var-vuejs: \f41f; +$fa-var-warehouse: \f494; +$fa-var-weibo: \f18a; +$fa-var-weight: \f496; +$fa-var-weixin: \f1d7; +$fa-var-whatsapp: \f232; +$fa-var-whatsapp-square: \f40c; +$fa-var-wheelchair: \f193; +$fa-var-whmcs: \f40d; +$fa-var-wifi: \f1eb; +$fa-var-wikipedia-w: \f266; +$fa-var-window-close: \f410; +$fa-var-window-maximize: \f2d0; +$fa-var-window-minimize: \f2d1; +$fa-var-window-restore: \f2d2; +$fa-var-windows: \f17a; +$fa-var-wine-glass: \f4e3; +$fa-var-won-sign: \f159; +$fa-var-wordpress: \f19a; +$fa-var-wordpress-simple: \f411; +$fa-var-wpbeginner: \f297; +$fa-var-wpexplorer: \f2de; +$fa-var-wpforms: \f298; +$fa-var-wrench: \f0ad; +$fa-var-x-ray: \f497; +$fa-var-xbox: \f412; +$fa-var-xing: \f168; +$fa-var-xing-square: \f169; +$fa-var-y-combinator: \f23b; +$fa-var-yahoo: \f19e; +$fa-var-yandex: \f413; +$fa-var-yandex-international: \f414; +$fa-var-yelp: \f1e9; +$fa-var-yen-sign: \f157; +$fa-var-yoast: \f2b1; +$fa-var-youtube: \f167; +$fa-var-youtube-square: \f431; diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/fa-brands.scss b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/fa-brands.scss new file mode 100644 index 000000000000..3f4c54d781fd --- /dev/null +++ b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/fa-brands.scss @@ -0,0 +1,21 @@ +/*! + * Font Awesome Free 5.0.10 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +@import 'variables'; + +@font-face { + font-family: 'Font Awesome 5 Brands'; + font-style: normal; + font-weight: normal; + src: url('#{$fa-font-path}/fa-brands-400.eot'); + src: url('#{$fa-font-path}/fa-brands-400.eot?#iefix') format('embedded-opentype'), + url('#{$fa-font-path}/fa-brands-400.woff2') format('woff2'), + url('#{$fa-font-path}/fa-brands-400.woff') format('woff'), + url('#{$fa-font-path}/fa-brands-400.ttf') format('truetype'), + url('#{$fa-font-path}/fa-brands-400.svg#fontawesome') format('svg'); +} + +.fab { + font-family: 'Font Awesome 5 Brands'; +} diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/fa-regular.scss b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/fa-regular.scss new file mode 100644 index 000000000000..2faa99d31c41 --- /dev/null +++ b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/fa-regular.scss @@ -0,0 +1,22 @@ +/*! + * Font Awesome Free 5.0.10 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +@import 'variables'; + +@font-face { + font-family: 'Font Awesome 5 Free'; + font-style: normal; + font-weight: 400; + src: url('#{$fa-font-path}/fa-regular-400.eot'); + src: url('#{$fa-font-path}/fa-regular-400.eot?#iefix') format('embedded-opentype'), + url('#{$fa-font-path}/fa-regular-400.woff2') format('woff2'), + url('#{$fa-font-path}/fa-regular-400.woff') format('woff'), + url('#{$fa-font-path}/fa-regular-400.ttf') format('truetype'), + url('#{$fa-font-path}/fa-regular-400.svg#fontawesome') format('svg'); +} + +.far { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; +} diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/fa-solid.scss b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/fa-solid.scss new file mode 100644 index 000000000000..cb10c11774e5 --- /dev/null +++ b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/fa-solid.scss @@ -0,0 +1,23 @@ +/*! + * Font Awesome Free 5.0.10 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +@import 'variables'; + +@font-face { + font-family: 'Font Awesome 5 Free'; + font-style: normal; + font-weight: 900; + src: url('#{$fa-font-path}/fa-solid-900.eot'); + src: url('#{$fa-font-path}/fa-solid-900.eot?#iefix') format('embedded-opentype'), + url('#{$fa-font-path}/fa-solid-900.woff2') format('woff2'), + url('#{$fa-font-path}/fa-solid-900.woff') format('woff'), + url('#{$fa-font-path}/fa-solid-900.ttf') format('truetype'), + url('#{$fa-font-path}/fa-solid-900.svg#fontawesome') format('svg'); +} + +.fa, +.fas { + font-family: 'Font Awesome 5 Free'; + font-weight: 900; +} diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/fontawesome.scss b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/fontawesome.scss new file mode 100644 index 000000000000..0a3f8ac63ee6 --- /dev/null +++ b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/scss/fontawesome.scss @@ -0,0 +1,16 @@ +/*! + * Font Awesome Free 5.0.10 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +@import 'variables'; +@import 'mixins'; +@import 'core'; +@import 'larger'; +@import 'fixed-width'; +@import 'list'; +@import 'bordered-pulled'; +@import 'animated'; +@import 'rotated-flipped'; +@import 'stacked'; +@import 'icons'; +@import 'screen-reader'; diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-brands-400.eot b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-brands-400.eot new file mode 100644 index 0000000000000000000000000000000000000000..9d49a59a67978299f3b162e805bdeaf7f9c8a627 GIT binary patch literal 99704 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 literal 0 HcmV?d00001 diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-brands-400.svg b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-brands-400.svg new file mode 100644 index 000000000000..bf573a1af139 --- /dev/null +++ b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-brands-400.svg @@ -0,0 +1,1017 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-brands-400.ttf b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-brands-400.ttf new file mode 100644 index 0000000000000000000000000000000000000000..374f8ee9146f6d40e34e273cb62f5bc25578cbec GIT binary patch literal 99468 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

o!VWy?S505) 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
@=nt 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 Z6GKv@X@M=$P0RPto|_HbM)@@OzX7w?7vcZ_ literal 0 HcmV?d00001 diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-brands-400.woff b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-brands-400.woff new file mode 100644 index 0000000000000000000000000000000000000000..c7d31eb1e8136e41f5872f77909f932a77d337f6 GIT binary patch literal 64392 zcmV)kK%l>OPew)n0RR910Q-ml3jhEB0fdYI0RR91000000000000000000000000- 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 literal 0 HcmV?d00001 diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-brands-400.woff2 b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-brands-400.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..1ced125fe9e548eadd31788120aa2d4e09942813 GIT binary patch literal 55144 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 literal 0 HcmV?d00001 diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-regular-400.eot b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-regular-400.eot new file mode 100644 index 0000000000000000000000000000000000000000..3ba8c46bf13e1767c93e9f8ff807aadfbe20e2f1 GIT binary patch literal 30788 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�PKbV*}&6yGz9bJ^J=h45QQ? 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-regular-400.ttf b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-regular-400.ttf new file mode 100644 index 0000000000000000000000000000000000000000..7412d88352a946a464b329e8ea0677e6b3b840d1 GIT binary patch literal 30560 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 literal 0 HcmV?d00001 diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-regular-400.woff b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-regular-400.woff new file mode 100644 index 0000000000000000000000000000000000000000..797a15cbfb9878496b3c4dd8f80c21083825d9f0 GIT binary patch literal 14672 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 GegOdD+_OOd literal 0 HcmV?d00001 diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-solid-900.eot b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-solid-900.eot new file mode 100644 index 0000000000000000000000000000000000000000..3c5350af8e72aced6e6409e184bb46420efc39c5 GIT binary patch literal 115148 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-solid-900.ttf b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-solid-900.ttf new file mode 100644 index 0000000000000000000000000000000000000000..9f268151e6f282e84ddc4fb35f879dbf34e1a60d GIT binary patch literal 114928 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

0J zxHc5^J1fj8Z=^oj?(=rk6V-*h)izoq?M9roDSqc(yJJYL{Dre>6U(#me_bB6ky6T= zFo*s>EZwOca!<8`HI`$}PgcTR%Kl15P~ya3!dc|+;Q!h9F5BQWVVi{yyTx(pj+M{S zt{0cQVXxFq)=EcMQH=}UfZ~CE)aJ0c=lCr_&up(=<(M+XUafm)dx94K9Jh@P z%RlC6a*Cs>ByfAX!}OF!HTKkFa#W>HW#8iq4MB%ok5Z_moQDAq3tr9^Ci8f4tC=_x~pAaAJ7A=7Ha zx!MJMV)KA0P83il-m@;Jz;!drI`R30Ob(5)&?VgT-~oLn7NKWgTlGJ*jCw1c6XU*uuZ05|i z_Bb+u#)hq(2c{0#jFmek(%!p|3qsL14O5@JaVAdW+6_~ygEVE?eT0Sd`V~{=o;i2c zrrCJ%=$kfU=Em8&nS0x2G#^oCA41Q`v;M{~x$Mb7pooYlkoUl$M z4wz)=g7w?|lN`5pt>2@v!ijR$kf>bSF|Iyyz;l@Yea?W`KFyJk-fl#kw?5e(~BxjVC>hqhWmZfLlC?vSNo z+I9r>XxdqGy0Eoxn?BtZ2p!Shx+HgooCf&9eJjfH3(A}XxBBsRzVos7b2vD}6_8+$ zg^uea>?EHKP1iPj>-l{CW;TvT_5`pa0Mm?yK2RSh{z3*WKHM8{M+)}{WabgU^F*j? z7OeN-#d^UmeubklL3QU8@-;+khT{CLrjJSa!IB%giDTH{4Xi5 zL%4EaP<9Rt?8A+8$`C^;SW*T`;wJw(CG&42WvoN;6@-#6feyh%d;^C{93DgYADjaN zT;JNhe_)^gds1G6Z7NRIOPv<$znBNp<>@7*&MMBAW5T{<73#5I;VT_RZkKHMO@?V3 z?qpf3QwmGUIUFiCSCe4HWJ;^Hd*fX6n0&~ zt>O>d8?wf`wX!eQQlLZ;D_8h}lt_cQWO;C!+Y^RaD_Ls{=ow%drJ2Uf`0!V7EbC_O z+cuZW>vD~Zw1*Rp8f(PU=`@_}R?VepRl4m?2!YiWyV<=q_uAOjJ}u=}yspAH>wx?+ znOF3BSWfT{8>)Goq8xabBr)uYGOsk)11mNrgUig@_S#)`x6K~qdTkC@PF*;)GK_I$ z8d0y)XE&>J@5>su;cCa0L2bNEX2~(BqG9UPhKflJc{`&m8gUxlvD|XIv+n8{`Ul1t zerDZ;P@JuaI=w_BPmx^^l>Pt|m00ScW&6ZLKN z`1_)+TjCxks=^iwg@QKJffFzKEjs>tI-3FWMlx(DlqwhZn*=0ooCbhUR}U*ZDM6^^ zzJ${)c4;i9Eauiw1BA+PBVZXtDH^3ISawkL_yW};d4=0@0fe>zp7Dz1{locZo_T(Y z#n{g6(%L$9-ELS`Kw@+c++HXcW;@o6a2q@escJsvu#53!{oTm1Y5?AQg!NbhdQWjP zqAL->1|upT)<5|Y6^k%#RPwZ~N{cf>MYFu_L|-ImcEx*&)qw)5kVOXv$BA}T7h^oq zxM*JF(Os!ooEJGIwP>E$rkHNCc7^##jgJ2?P_JQUxXWtWW6>VbEMeWEy{TFB1r@HF zT^0Dhx~eS^P3z`MHED;Tr`K-B^6(JW6w>JS>4`T(H3i%Qkj6Y3T{tXx6bOQ zwcx)Pvs82Z)zVpu4Mlb9(exJfZ_%|oeY3l}XZuK7sA-nEy8K1MZI9J%x7Mz4mTCA` z<|M6w9SvCG)%Y!($(hJkmAgI1r-cBL6CVJjZvj~~D` z2v2QZgu03sJmxD((i?Y9J5fB9Tuc}?JYsCyEgz%pflP+0lPeApPN>fDnc?=6JQL0jA2P->v4wPBFBDf&$r1aH{L$(!ei5;T<%#O~ ze5yK(Q`PVzIB;~Cc_ze#^Uh5;?~H;d8N8NFg7`qSI%nH(fERzVfBX~UQfGGAdK>b1 zUbqiZ%>g3&`hg-FS4Q<+3+A`gr-WGf)0y7?HJWvR=vDh9vCbx8F#t=80FQiDKlX7~ zXh4VHCW3)TUa6lKp?iGjk=t8lw%~7{qtdZ@<7zfUSQl`6-2tz>uCvqjT7KSAW4Eta z!$u1yvYp@%m25HKU8MxGzX6&5Y*l~RH z!u+{;TDlY);Y;PdS`^oNpiO}=cIoF>IK$=u1fI6j3~7 z;MEYI+D?^nUEc14+f!N8b--TxFjz>Pdazt#HCJt(*w2B5NNJ)2V~Tkx&G-D1`-x@C zeW(hTKMgqkP~g>uzLV|u4|3VR^toNC_~XwCCY5JSM&soOm-1zTOY#R}ZP$ic8K;xy zs$kQd;`TzMxR9zbF!qVYeDft$(NT@YG?L188?_DwTH5++70}>;24kT+Mr&aSJbMoR*TQ z%2+=m^)X{x*Ihnk@=)x%vnX$*Il`T@zFlpoppQ!BuJmME&fH*o{a*A+>4Bqma$Im? z(9M+LtDA=-C2+K*Bf^ksOmL83Ao(~q4yj1pBM$Ti!{BpR$$7A+ZVAko z<`2}@uB_1UUv?ULU`lPx2F|PKp??c&BDVw)459LC?I+C>L?>SBF|U_uMGuyzKjw4dEavSXd77f~lFu3H ziN8xSBJDPDg0G3s{50^%Ms)WY^lF~fA#h0hcCFId-&|83LRCy|=|y>I3(7tH*FJx9 zzqhd!CAXCw-UfeETN_l|yjKL&C^w}IAUZPiEy^J&eMy|y$wzgrp zTDlakwORBlq1n4q&l7kQpUC{@WS`iL6Gc_L?(=u{AkoNg)M6A#i3KBwSD7A&^eCNF zMnK$5!Vo=*Zoxwb=Y#rb6VI^Gr8(hsI~_20&(dGTt@0 z8IxYTR0FF&If+S*Ff5q>-jt^Av{-cV#dVvdr7C7v`uZ$Jtg6Lg)8jrgaEsOYPo8g6 z=NRv(&}^2TN!TH*h`6TWOAjs=nU<-pNCox`C-qotT17*{CkUgCO!Bu^_&bM}px+z{ zz1ipS{|Nk<|1TNV)}oxuj>h@p3qAbR$QdXniq5(V@GQL%ctIHDwMc%FAp|BFt%K9m zQ1ar3Z3}B6%=V8Mc>kvQG<%V!L>vbnaacPnPdxq`bEyez^;-NM3u!io)eCW6hjPMe zb=Wkrc>EUZ_{+$#%ws?RB!c}H5IikTRd)e)|J=Td`8rP;{o+n zYdxMjqK40g=T3V(ZgbUE)R;bN6z4H*G3)suO^a9KM59ItoF6ZnnDGB5Z$ut0n+rM? zkE_gT_yZPencHKr>rNBOmNH#0gX+a9pS#PfmVn=|mbv)3%S3ne=(9b}rhv!Q^i`k5 zXRB<+i7#Ks8MC3KP4d`c&X5nMz7kb7JdW1+46m&!fsd(pLynl;jgh6f?J;N2Yv^XY z+U7NUbv;$JRS8WCGa>D+gXPX;MeZQb|I^&L8aa20FCPK_!TZ$wbqFz${~&zXA^?o% zB|aP;9vL2MDdlVILlK^_KF+&NAK zDhG*$pFX6v%2tl^I~Jq0rKYm0A3leC`USQ~2n4o`BQ%U-PEGTw>l%Wv686K^Tpm$M zamew1n3wsxpwHku?6W8<7`ncE-a_)Ym&{yW6OP63f~xFBR`R7_s{jY%7p`Rz_1hWdEZS4D3r8`~U+h}O@x;tdg)0wJwl&Db_thbm~-k2CYE76!q9Fo8%SPW2V7H9b{)OzPO&(K(gSJXEOW7^p`8Z5~Pe6@{E+{otLq2ZR(@g`g)=qKG7S%`YhoQFm8o(xp=e&9N7?nEwPuMEW zy&9>fwVM!nrwnBCOqyp7S{46MXjkmC!8-af0HPUCwZP-m-a3eh0Mg zdV@v7abDNtxseKw&BT^#Ot*6%VA+w+$Pb~eu%A&lb)z-~SyEPC_pi^lw&b!4+9FhI zUT-9M@L_!Nr!uMz6Jk!JVc1aRh5~N5ePwoYz_inlBxSz%$iP5loDVAE#J_tGNB82D zzFOOPEbw@}d_B)r>yz^;_fc&C^Q!tTE3`2^g_CgmeVH|(wmf-z1IqDu56lt3%kho} zY;+*Uew0k+H|MW1%%S{_{UU5si;rN}#38&a54g?_u%OI!CifsP*FOv0 zP%rc6Frq6m-zB>bg&`o%Ulr>ruh~zSJ(0c;z0*8RecW@}s5C|^oChGBG3Zc-1fIER z%1wi#)1bA)cS5HX0^nip{lX~%88&&-P53M3kJq$z?3-@l{DILbj#sSf#c`~@o2Qh2 zkeKp$GmByIUfypqj=A&|3xW5FaiISe3>qn0>pXd(thR+GJ8QWHCwlxsK5d=j!0r$> ziyU)W_w!IQ)X2eN7>n|;gU6AN^cpoEqRp`OeGlvWvzY&@MHHG)%=^4^0+j>|E0i7* z;#4RSG7~)k96$T(UXRb?-s=cE_PXKP>q{n+Bg6FM5?E^f))TRAf>{A}4}S}z%_Y_a zi)hIb%Ds8Z+$)4I(Pw{!wC=|2lYpjVs{C@*T(ko>0utddU&Cy9J_BsnQOE=OMIW|t zkc$9ZJ!WERA51~=t_c0%M7Lvu+r7czKGETJ+BbN;n>Km98|+T^b*omrv=RSSu3E(; zrN|47XE^@**fuc_A{MY(kBvs+QqrWf{V zi=Tj@r!1E8h2>{gnD~G{PDWen>#aC+jT^J#Y&@`7?tNUfpIecW&}DGyx)Rc6Ma8xX z)*K)()z_1Z!0&@+1?1Cv^QS5I3DuQ0^IHxyiyFI0c|IZkZ7wWb*zsh6P<@6HO_IOI z?2OqM`-S7~DJf6+j9nULPrrKl>;~zf+;nbRus(=CMb1A(-JMeIcDdYFjk}X|o0Mml z_ykRR%wK>Ll-D%k8!fz0hB2puRhuklC+5+0e92Dp z=AiYf4ko>e3X3+@aBmWRjky7Cb7(Vh*P+z4IIhb7QBiJ~qUaZ9o;T)w5+7#uIoLB_ zCQd|8=Y%-PM8N@#9~Nn_3g{rrnz0fAD$hPF;V`$N1ap)Tqo7_Y?h=@V_puW%H6UCD zX$O!}YNQ90o%)Db;hfq(($@*YO228r|Ciutj~a)}T)et6UgmeYu&K_Lnb=Fne|7Ix z^}1$$G|VffHi&CdX_uBN^YN#ghP5_u?6HAbtKqD2RM|Z4uokNbM}t)`Jhs}ZVDMM^ zc|MzZJ1M^(AuoAd+_RWJXX1qMp*U?SAUE*B@qb8r6974`>Rfnk?Nwb}y?6CCJ-tjX zv(IRj9_=lSmXU19BU?7IE!%?^EWjAyh0TVH!4HH@KwuIK31OVTi+F(`$P2;5!DB;$ z^Z$e>Bq0vwfnI(dF$qaT;=C9Ft^YgsR`nu{u_0QjZ|%44a_(8aa}L^~n3t$T$`pJ( zNGch%=`ZIH6Wl^CxJ4c=1uPI^v`uR;-IuGi2-I{CF)Y2HnXnAAd6}77QMaHoE^N&f zR73ft(&+K|lEE*rB&qe3Bw1R4uE-4^K0KWJ=3s6mcY|qv%Qj8>nV>O_U?(sE+crX< zjE?S_i6Pp9(x03^x@jw&F)Tzf!l{|*rAA|E`rGkT3M4cfZmrQ4V}UT6kHaqbL?6_U zq!|)Ws&;R8FY)N=JlD&C4ua?KC8i_=8g4JE;NJh@HXu0cg;+=pC?!qOsz8_)bW2W{!2JUld4z~*9+!89WNS1s}*U91WcVW94~bOv42E{UOf2A+O+`N_%2 zllW!7-3psJ4L8EeULnIRK>icHy#mL;>%ob{TqzV#g72T%WXI{!0wR;(Zo{Ct+W8g3 zjIYy=ah!9M`~PF5A>EV+i0kS#KDW>%Aq2;&$rK{NuX>ES0%=xgA#Ep^Vb!erh^9$f zBwO2B+*;g*GCOEt?;F8t@@6?=@j6|7G#*#fkUKH8@cO`6CLqWbU`N$ z_{JPY2ShBPbJMDr37|2g;3W;E7)-DdVMcMZKMf@j8Wne{CxD5S;Uu{NE-tIUAPHDSO>UB@D|;MvY^nTcFR4_d&*FX{XsFbzl1m?6NHFlKs-W- zrVy84K>BI;AO<4_I44OotU%6Pu!5wbK@_33iiQElwPKOI}GR8P}~v zk|%+KkLE|V+18E&5cmr;lwcfS>D>HoP}Ry*fAxlm;%4Q@Zp&K}`iIYB4_zb6&m6Ua%z8#PK0aj^0)w)Ajcmw+fwk7!_f)x#{1&ahBa%T*6(O~* zu-DM}XDk-9jy@yDrvkXez&*I7(E8_Bu%52}PO^gSXB4q6vh18(S18i(>*y(R!QsT@ybXU%^orxQe&;Q+=o4-|sy))@Cxq z!%7+`x?nSw*LeUl)_oVBcWYcWN^@&d+jiU__J%X^kdhG3TPM1U)f>wk+KALsBtCIA znW!!z*`U4AJ<*|i&A1KT+m4&}4n=oLntZ3Xe2y@nQvg8R zqWYF>J&{?}CM=q*!Wj=^Pi&xT$#RM`2m0?<1}^5^_0b`DpzZOGW{77q zLtFFaX8%_vmvA(+E*IZqr5xUp*6Y6>j0NJ>TSrt=oHg~)d#rc>ixpzHeU;|US78W9 zA2Fjw5Uprjc?&i5wIxNjV{|rV>uQO2fj3VuCLV#Fom+OfZ4sDsLUj3@EBJ3$FW1<= zItaE`ch2`Y6yTZNOp^V{M;_R9$I|cO@Tx;+>Nv%P@;`fE0Y*8}yPrjlszxGcT-Z}?9rK5wuAcX1+YADu#=Yg9X-VwS31~m=OeTO7H zvWVu&V(gtY*`TuT2)Is!53@=r!9ka+uiSg$rWT2%Q>$OVCw6=JL z4#sGuUdE6+2G5Ko9slA^>tQ%3K1)~_{|FC)%2F7XAmVfl{zLKOyr*}UlFA6$EaLQ2 z>@65idORp}pZwGibd-3DSuZwyw{H3QST23or_{y~%~{rjym|$4@A*gPhO+ z@0YPbL7MzqaJQRU+?o`Aj^OeVg>ZMJkWpW zN=PS?q($~P`fu>nuO1XGH|XKP+in{qSDkgv&}DJw7;d5K#NG>E*L}v*+pJ-&YwP!E zObW)6#1-#zun1xhv;`K?NHIRm+H*||Q4utxtsN9&r$q|Qi@m<~^$%{8(7QxLSNNe%jM zm`2ES_Z;=bisgJFthd&fVIjCGX#UeazX76l3TO4f=X6{h*Z+<8R_i=?+>@+{i{p;Z zX`Dt<6^t9u`u5sXLmj(NXvAl5Ee7;@T>x333m_fEs{h&}G*Aj(Qj`HGO1@N}5z^yj zJBTm9X-ghZ=rr$q@7-(gIeY^CTbTKP;bQf3DWI*yRdRkq@nK79I&j6Gc|b1|=C@h; z12+PRJA`liP4N@CB6CSLCrPOvKA>CM<_iUWMI4vl3jPzhJew_6ifOJRpm<78BL4FP z^e2~s>bRimq!*w>E-tujWHp2SnFA_-zTkONPr6frTFg!Xf#A;R zH7&^o3Zd}Tm+T+W^}#J0jX}tI?w;XcRW^b~TxIWPJwB4hljQ;hH{;CopuIh{USmqIXyqyBOq0^a5oCks zpX3)>XYtC)w*9nO*m~7go4?u3jBI^+-^i$_xnKAd?>bz3Vr1*qk&Mef)!xeKmdN>m z(I@O)ByKk52-ZSdaNvZ9A?+q@NqJG_>+>g(0EGS{3CJhuKR;-*W3)m({1M6nazEd; z)+iguufLsdKZvuv@1zkg$fK^2c9piM2O(?-KSx_miKIUMg5R;yQTiWETfftOE4xd$ zUUa`!Bq8a3ZJ*BN5VFUFFy6;u$voJ1ec$cEU!LmVf4|x_3qb|J$@D|uuE3d#D0kUg z9!M!qYa*@5xSI>re2sjuAU`X)c!8!aHXMm~E}nBEe;%toa@+)#C@T>^OYqGSHrNd79z)(7S~~?c5SGQt1mNa)B-cM73Sq4b=R5q>VR0$rFC1SerGR%uV;V%8 zG>8ZgR;x;dmC4lIbt4!w?hH>Zlmf?JTzEhOf9aa6G4OY^}BM*mMsuT z%DP-pgE1KeUGa}VWouT%p_|w1$>r;>(`{|Hl_^4Bdi`~Xxt|Ez@!guOzsc)2($jVN ztxPzopVe!=g2pWZA%O1Sn{|8Shq3yFpZp_ayK3bVo~)w5iitJLpM)ZI{Jj=oM+_MGBGZ_ydLQAaZqoh4nN=yMwH z+fYj%Z__qKw5vldnr-2P<^h+ndPBjoH}M**wukfykk_u5v|UB^GG2>R*T{8#b#lGv zw5TU&saH=GQ8eRND-ZNt)wc{Tx;itxfl?k|RjTT7TAX0Un(pB!(55c=q9Q^lTpj>y zCGg)A6$nelm1zijNe07qi|e!p2mNH@bBd%9ZgU`-xXsc`OUZnMYJ8fS@+n8^cQ6qF zE>FM(QB~<$3mm=a5>{JEqoboltYqc+R+G71gr%HYmFMBN-3e6m~I3@ za_YRumcY*N73q`FL6!)_p|;npU_6qYD>$IRs@h*vL$Yaw6I$pQ-g?hNmm&dt&akL+ zT{WM-Iu_T@q?$xG;@+jNynhu%uOPK{6*Ooa=oMC>udbdPHG3@|9S z^ahu*_@)7Y%$uS;gX(_w;4*-=yLc^gF-Zv>LKF{_9P^X| z#JpY3S|pM#Mv{npg#pG>WCF16FC9G$$Ho*=%vAv@uR;SB2tYR_C$U$-UPaQiw4%o) zhHz+_+K-hRv|kPBuU?NZ-fn8A6jfEmM{LUsTua4M8WK+4kTox@(%zjRIS|S3R@8S0 zLP_$kPvhYRc=4C6U*XmDUY_!3uLoFTD;RNmd1iq(^t}@}_uuaO1JIMs&?>fj)LTNk zNC$LpycG%DDA2vV1M*_d?t=5`1^crX?7t|dc)|7TSq$^K3bh0OF=)VuBTy{R2|Cic z-DByozg`K(HW6wDv!GKtzTTysV{9c(S5rV`Yz3+5Jwl9L>#OZoat4&wpi_FD&Mwnt zv0dWFF1W692f7M&>BqQjl!OE_g$!U4f>%L@fJv)D?Kz1V^r*FDXC8%R4z7RtqhGU) zc_RoBb6mjd zSc*S;%G#vb{gu3>ms8Q8VnkzdFyzF8h0wqd55GG!P-lTtnqjn__AGt>Jtu`&w3u+q zQRv)}I8{e92PddVS!1^NAJmo47iWwt3&988Q14QW34yG@XLCMc1#32_76eaTXU^LQ zL=^-HZmr}h6WF9EQnL8_bU3L2&lR!ylZI2Bt)Ow-P-N!Fu_H5~U^-MN+X;5c4ocSC za48qbCGA)uTd8KRq-4LTLUjlzWc(Yg=KCZ0LX-fFM9C<&zG3Tq-NN!K#mRb)#XODS|&faSD~vbCqyTae}F zTTNl{Bl?N?5B)O9`NZce!0+|)z9Ycs+={s8eT-XE$c!MG31A$L49p_wC@RmrOmqUO zVYMZ5ftrA;54F1sIt!|bOfrc%ceYA~7#NG;AH>gBV2;NyLNak&oS3U6lDLcgWhn1# z-k!>Yaw$8GNCYC@S+JDC%}gzp{WFuTuTNwh$4q`LUXED+m_Af5R;zxwTr1Vt@me_= zvy*aRxN>{7JjmXnN2C81F^8aZGGx_-avE&c+u#t8LU^@&A{emYih?tPdm_qSrpQJ} z3Fy0!%ty}ck@a1HhZI}eMJam@+sdLGdN`sj0{>#N2lvFaMddxa0_t8(j6ZJkn?l=l z+D!Q55bnc;vQ$i&t~L{aC3KBlABo$kTqu(&7gYp(OQuSQB1fhNgk6@;1amJFhAv5xC(WqX)oc;;cj4z{q`+=Jzv?OSBuNH>q z_5q^^k3OmjP&R1p-@ltv%`@~+<8H^OW!Z*o&1ijPQfq3HV~>51SB!5y_?SCWDo?-a zpkb}9TE;=Hr#&z2!kR*OKxEtI77IulFgtO3Fjsbyc7*3|m$vQ$Fu8TyadaxMlc3Fq z*&=c!G*{!f-NDgczc&;~*|eF*B*5Tp{ln{%SO78KLA1zsHi8{!KRUu4eIYxuMi0PP zr!B(z;KsAGj}5Qmcfj920xanac&##Wj^X}ZJ(Y)r(d7%y#NgNgK-R;l>;oB>c=;2w z$-WI{vPD?4-j?-`ZB*eTG;~wp&>@a%;Tv|hs%dKL!LB3W2>#s5X$IwXd6e6t`?>!) zK`LrsfT2^P$%KC{FvIXOgT_~@2x*kUD^M&-@LgmRgZf?nkx9Sczx{=;pdr!8%}jU%at)DWPddzbzD8ds5;PXz4qqG+uJ?7!vdn1w#Jot?R}+wLpM3*bdG=*h$5`ci7y zFSt+$Vl5>kBlITR+c~Lq<>c}3xDNsQ057AjA)HxcVrC+ufKVyPEjza)71j;PIVE7Y zV*4!x(1&DPWkyh?+_A##l`DbRC74~wp;zl6qgaVJ=!v93(@1D!~owo_q!IB43BOZh>M^BIhhmi-HG=x{*iI^BN zn9k7F9b+|F(h!c)ZQHE?E&dT1#MIZ}Z4_ALEy6&i)(>fB*1Xd+$Hk9!sIJkem~pTE zqa;2AH*m|_y@-?p1Dr-T;QB0X;6J#*yW%b6`>ye|zX_d@3>iHDD(Vt`2W|+pvRiDF zr*#U^mV_p-C}Z#f#-(dj_PuLv**&?t^$&YiF57*}E%!iz-pf+&VhUTh=ay%%x3)@u z3O|u#@RLtU($1fpmt>lgcyfU)fwlpM*4CBxWXd=x48}z`tk-rPqzwxTyK>Xp$3dZA zK8rSf1Ya-&JJAl<#rlx)68u!TQuh4iH682*tq5_Su9Gf=)`cPs4v%G-7N}aT#*z8T zST4kZt7~j+*qRy4r;^!hGL;{ku|^T$T4!fM*z9N zx$}w(WfCd(XW4%mMxa#)7{*^7wIP^LsKBs&lzm)}$MwJZei#U5UA4pC?=v9>h&4n7 zVjvE^Pzl&K@|M_&=M()2Ay(Bi)V5^}5D{8Xu#!vz{|MbD4y!YbGMuKSt6=Rg|8y)i zxDbmEmY_rSJj=m>+$@I~Ci`$AgG*HBEX(wI74tHQ*)I zoE`mNW3wEQ`9GbQZK(klnW4A%g@6-lc9jbRSQ8>1O8={IT`qUsaRQ0n5_8}p7<4Vg zvM1W5_<>H5ri66H^9+Ta#Yf`aw4PrP&INyT zrD1Gy(s0}kDff`R;T|P~Vt*_s$Kx_iUWwl~Sk}a0;Ir@#%5+o}G~+DzCc^r`Z)`mq zJcPyz&S!~rJ=z!6lg^nCm~;t3yMHYDbTf!_L`KOb+;q~fy7ofBfIRqM%uhC z;=Z0KI$o8g@Xmq~=aTKoLE@Ijf zj@x;YndkjXe!@l2+UZ%_C&BMVQhV0=;{9KpLgKw$PUbuxKaP%3A2Rw4~kotmPEl@4^2wsf5jY zk!s3%$gz(H3U}pP_+;CVhybWEr_Dem3kgc!3pFMAK43)w4I|42w2l?cBs;r?nkg?f-I_yoq_7-kEWMw+KR)$rbrsYB+k?n*oyaSbe52G|^Dw=q}= z>z52*(P?VYz&QtUHglhKBL!L+3uj2iI`i3RI5ZghV%qEv9ybFK=Y*mzMO^NSK(?MI zuqtt{H<#1}q)gzNrM3!|>l28+V|k)~m@TDh2jVa2J_xx0v>XlE;emL6EFBMODd&?2 zp&%o4LO|9B%LW`}hn-A018p3|oubWO32b)kR}fIyOh@`9N**eLN4niHKRc3mnZfW~sncVm1>ZgrcH|zeIpQ#pxdm zFK{*hztOdJ&AGlC)7URuBR2R8H38}NLDcCxM!AJsWbgw#i2p;yL3-#fcjlv22!E#$ zFB%_)kD$=E^l=!cb2M?g`tsYLHQ5|YsI}{wq*9@;he|#Wp2QyK>FP+c&UD7qSyl(-Q z*$*8SA)h==7Vi&X3J@PgxEb^ph^=r9=zNbWhSp5=#4l1Ew)S6W0Cb7MX@;1qQ{ZvQ zBRb*REwDNO`-vEX1SNph9kuWIrCk-gJ4JA&|DZhuIq95<+bfouEt&b=uZbw5835v_wce;Ni{&IGi7F{BAH1xcJ}9Zg59#591d8_7ni4JKl(IF+e`i9I zN`E1uj0OgjTp_9q%1Q>QYyURp{5PAu-DZJ}OTU9;5z+96{+$2(?3zQt3 zua6{CadL)FV9!1bZ-^aEWGSF)OL``7>$@^lM7JbW;sbpD)@ZmG!pQr)Tf{Z2Zyqic z`8U_h{>a3HmI*wF`?ge(7P-lZLWS>J2{Zau8hb~IZf;!5a31t==nU?IL;z$F$ST#< zk1*Cft+jtL}Mhxe_=A z`>d(nubUZmO)z$i;vfzSldFcD%orOprhY#ZezN{bEA~xG31I!8aqp zcbc}QA>!Of>EB|(58Q@C?YLk%kO?c+fzk-Pn-D<4d}lE7P55e&JpNPuT}jB{RgB!Z zzALF;sI7(iY6E>G(W_cjaEy_*PZbswd}+C@cv1mMfW$!Az(WYa0l0sIL;m>&(Z_%9 zs-SseFkT8SsX-v{Gw)ZFhPjNUp9D7tm#d$C0&Y0V-VXc2U&*_h>r(Ra!$GqVy*54@ ziP{5*vJJ;q)0EkYac!XJO4feG3aY8s%gPfCvw1ccV|{0Zbp}%PSRAS%|j*OJ3HHe znu608F?Pih&^WkznmvkOwb~_MQnevP58p^y)H*y9LQ9HHE(e#mm%)zv60Z5|P3}$1 zs;lPZs;MbgiLIvKzzW~4bNC%Api8g|VZCi~-8l6zd>StFm#S?b3=;99A;fTNXV1hJ z3zVxwitGY0SrlDkG8}q2@ukn%N$usKFgq>uhp!PoCzt6u+HBF@X9WV*`?Te5#i5{+ z&^fPi%^T(pD4;hlxb>T}pq*o6z4B)bO&F*q0B^hS7@X4P*f~>QCApyb)hhk)a;4HP zUU-<1ASgt@E^)B6)+HKt9Y<(C3=WKy??4Z<$~}Kde&~nxr03s)xEs*55`ph_Y$fiR z$ETo}wFm`;^rO;_F`!9-0Ck7L-0~M5a>aqM9TM`9?!KF?QcNZ@tmtFg9qY8^M8lG> z{7K;`Kd^mFhg2|$2U0h)^FPM=s9_CCVuzC)bSw{!1meU+&no*`cGpgdvA1(qb|4kW zJ%Px;PvjygcAsk}Gx2yPX}g(A5A=V1FP-SSHep zK_j*Z!9;=2eSp;THh>nIQ)*nF$7O-%TPJr~xkD^A~ zQ70fcu-Kv&)W&2L6hR81`W65*&Mpq%9A_jkKgpxa8+f2jq;g&uSt?>a2DF&Ip(#QV z5AH}$18(y^-HhuSN=K$}(eGQDWWbIbwwxUXk8|ChL1vGD#?(3wbeu^|>v2; zC=M>X?)^4E?E-LlVp=2K7xc#Ce{IUsMPOeZSoI5sc=Jiiaq%=L15PYVc9sN6nE$a1r+7#jqTJ$o5*ng=`_TA;j$BnJ*Sw z8QA7n5X#sUQrb$OE3wv{9gIe&wAv|lN@0ZO=OKp?tiP*xvU5eJ#Fnu}V#$O{>q(+s z3}L!kpQJYBP>mz)(y4Z-bL?%B()$Yjw$_vDTq@?+8u-~KU~l4Dgf2hsc5`&#I&DCX z*KP?;<-EZQ?+!rqmie};$ksZ88=71Mf7o6MHudoCMRY;nd?4^2 z;b^fVJaPKFd6&@UQ|;1gP-^O%+xuPFfUWfgfilWdr604LMOrEr0q}WP2l`WVH-A{W zxB|zl!zxsO?IT=C&)@ajIvtN7*F-Zg=Y)QQ;sPP=G;bzfIRzt!3*)6|A>W>X7^;Xb zsDoh5PJ?i9mqricxNCNH7gdx%M~+2%r*f0IGr38&(y`w!ygC|v^}+@F2Wkt|>O!rJ z{d)owV1j&d82A$60DeYQW<{mtGH7YCQLds|?3e&uUR)tm?8+|$H*DDu{6gRiIr4#+ zuUjKg!`8~+=;*idrP2j$MTm=^qh^B4|IAwLM>EY&B7pacR;h`Gs)4|h%<1>t&(U)~ zyTe|zr|@3zL60+{4F|A;$pD;=Z~o$4HRpnGw&ztM?iEG&Oj@ADAj29*vYaIHQ;mm<>!N6UI0M9{~&%t&_yj z6Lm(DLC?Tz-2?LC=t!9q5rhh8`$kPmeJg7#6qR{-L;0%mhGi6gEb2GFqam!YmE~nb zNL|ZR1LX}H$^nE(MXmLR@bvQrpBD?WOMIVLZr_Z!&Uox)?H&U=bdi$}e;n^m zY9`|U{I*Jw?O_PoAM$JCp8ym(^F=PX2!R`7G~e`mTkG8}rCKWPWh+OJNA(2K1dcq6GNE$52OHD<3&d&ExrGuE1&!Y(NEEJ=Mrlo_I@81=uOXEGSF!ukuCFR~bS) zZQb~jEAJ^BFWmFhkCOQLQ9E=Wz3;xz%1X0|=c}My&p_V)IG^w2vjh9C@bVWra%vIe zW$jr8^6~e6gRxf)cx}LzD^n9sDJpi%doPp!N9t#07pyffY6JQO&}FjRybAItuOXvL z4SG1PW9@k%I-^ZxkiJ~#FXHhyRQASk!{)yaW9P7ltdcruL*0vWf93sRhn*4uRxnnm zUBAPIp>HnZZDlCz$wtQ6L!kj8E>o1mnLjIS8-jXHXQr{L8T_}j4JsO5`Y3)i$tnO6 zj=*O&-vBV)E)!|+v9UbjElGty!s_@UZuaQdJ`e=n(=wF(STR!H#G%PZIHd<*A*}OG z)_>ESIJA6d;FW~4wOaIMm4#y@AiFpVKAAcmFD;nVbY?mSS=xdRu z@x6T??fZ1!<9&a=4$W#a!-7plkG%rXQ`t$CK@B|&6{J(mCC-Cw5_3s52Pm?)VoVox-oK!ISl2tVV7f+7RhaD%m5x?sENi`atHr<|e$h)wm~=@+MMe?a z1vZLLGFZ!i#uH=~Zq%F)VyQRDCN7pX%4WfoH^TeHh4$3kl2?>KH6W|(>DIH1bZFyE zBmn^NpoY7{OjtU_)mJ4M@dO=3g6FWMMkA4^3IGdo&N&EG6~LthB7c_iAEu>!!Z1Fe zS*lXFEfTI)?ZjXE5v9M2$Ku)i@rk5`+f(m!ib z)Na~QN&9CNv4o@oVhOPoiil4NTN=)sEod#Pb|?fYs}9m3u+!A7BBwR+kmJ}v)C2xr z3U)sLB`}e9&eTH@m51U?bPTpUNVHT^VruHLi6tl_8N2%vw8q_e%_7(bHIPbMb`p71 zrsfZB+p;UnK4%$26Sz*ZrNhw74;SZ$>UP=+q$9;_C6U&&vC)%PRW9Lr#>b#%{4)62 zU8oV(7)^&U7+cbrlOJA!DkGs1K>zcqV1sy-v)EQuM3$m2AfziU0b+@LKQbH+CWD2s z^k{Ybs(1t)Eio7mO6wnP{kR{N2+33xxLcWx{UtKzvrj}!(_pw$io~xPua2h23V3FC zxU~M^d400kk66?Jy|ljpvL6iiZT&dnBvB4YPlL)$gHUc`_6W5VDJ|k`(=j7%9Mc@D zc^Ix12$zPHxe0I1<46^(BRFDMnO8$tsz2|Be;=%A$$Aif(=8=BqPi@adn(;V4#4>!Rd;NbSKk{P=28^)44!^ARy{>!2TzZ@xM|--^5bP0} zPTx~xE5?A&6Vxz~yuaRhiKxaHMSM_|A$(BdKzgNNkCBBynG=I7>TeM3P`r`-iaa&`ut2DV>+HQ07@d}3E4OdazL*cdd_v?nQ*4g*VoB9 zigCxy=>}L}+=3f%KaC9uI{Pm`Xa6Ulua~2ZF>=WuJ1!9w{&QyCVkV@R1RLIxSV$yPo7qVP z*>gV#I5jTAH5T@iB#t8p+CpN>FiQkMKOuhVRh(wJf8l1_P=#w-7FJ0ov3Z0pPN;?v zwG*&d8u$C}&BM`!DG57j7%HwYjpOq3x^|NeZtG)?4wH|6x96M=lY^n|J(zgf^y5LEErWEY}5y(C?2f}Qvp z2pjFSQY?hbXGzo(>{S41nJcnTt^mrI!2{As`~P@GlaEEc;! zAiGe2yKrB&LvXq>Wz8@XIs|}_Z7G4yNK^<0ON`XX-63{k=e$&DeEIrUxK&u4W&$@$Qc#LMCE6 zBN3IM>ADd!k%uRUNawO`1~m2kmZ`}RLqhB}r1Fw*EP(6cO3aSh4rI+sJ3`^=x<%?E zjL&~TAH9$J`DDED*#|YgC*5B(EH4yrFKoXH_m_o;0dFZP#Kq60FVF~j*Ks}oam)SU z0juKY2kU-G*Y}BUI)`sM*_Pu;R)LSQ(57Idaoxs+6}@m@VDNpK0&Ta)a{AoYh5L}f zJGBpYirt6JH#KP>ywHYS>PzwFC)WK=1|5QbGroD9BKnlDm5(7}#~x z?E>Z{s4C_i9(-ze_mJQ$Ipvrf-aNv?2o3Fl2g9DBy@=dSOeQva^CQD~tfg2`hxQB! z*%r94HQ4rwSg~QxgL44U@bzDtU?)>UdoJHIl%nVHVRG+DNakl3@ihE{&dYz(B4K*) zNkU%l`xnq*66P0Uy9bULs>2#QM zDx`-(eJA*{+T;aPnRqMyyt&zTTzu!l7d@WW3!5jzvxw)Xg=@MR*h;f8w7S-jmY5fP7{SkC7G~j>l3NL{FnYY1Sg{ zwbZz=DKStSMzpsL`(mGsMgEVfuu#x!{aX9%j-f#2)@*u9mWNJ*KWfgzBY=X#`b6>5 z8OAx~8yiJTrR)3N(AVdJS!#H}br52-6muIBK$(@`Q?3(J0V#AAepJ;mHEP2|Ggj6lva=oszJ233<+j@^4|MJu|Q|E0M{^S_kAzb+D zs4*Edx1;IE;;V|SPIf&gTBJw=(LMPZqU+B!n>+wpw7q5-ed)dqJ-h4{Y zs-6fP z1Nf4?O#G@i@-bCUCy^5gq3xhbWc9(Vo9@}XWw3_11ntUFD3J&)LCxqFbexzO%cfG< zu^F0h(Tuscd9IMp7v?rES_LQqh?a0&Tp!V^-dJmHS;SeRDcl=pjcT|oVy#`mBk|(g9`~sqN7N;556i06?+CNwgz9 zB*MYNMh5JdN4|Z%3VU`+w_5L~g=&>AWpB0gDY^Aeyu7-)#CK&}!*0hl?8uZ55e>S* zz?D|(-`_~(HzJ_|?c!1{LsHv-_IwNU^<$ttq)+AEOL#rExR7|K*Q#9qgL-mHT@9iP zY3xaGBYltrRq=`qPfcvTcG6B78g2e@1;8eoHtYm+i2=E(IYG803XP`f1aZ`sseq&Q z&L%MJtqjQb!+swpry?>q=sy+1lr4z!{Y4NLekfm5>f0)~IynWf zDhTCTNR3P-y&+H=E>8jor^4RWIx9x=3Z0M2#XRlOV+MH&=FWvQKBe>jiElg0uH^A1 z$U_#SrVC6&v&@n55|l`YUFZ)LD$&whL&!E^JZ0a4<|W0|usO3ow|{>l9&ha5pX)bs z{9r1i&MQjmpHisH&WS&5KzEah6M2c(^I3i=Zph~A;#dm7=Ey|0!{whM>Iu741^I3% z8$2Rabp=kK5DMPnPBh13m{20!7}8}(RZKZi&Hvl|h6eKcu3wQwQO$4kn;BmFw1etE z;pBjbLU)|$`og!jt4K5vZFwJX(7cY`h~YL$;)vE6JA%Ezpy(Y$>@ME<5$H(eoFa#! zU84lqUQGpgg`8*vfsDTIjTY)_oWThwa-&^?f**te7MG*RX>@otYHHJVeR*ca7aHN~ z)@`Y)N{242$)Tha+x(Dy06A_h2@nM23>C$2G&-STUo=bz!SL?bd!+Ol+#5N3v8LBv-o78 zFiFN&ww!A{2F4o2lNVh~_o3|+dRp!Ewp7BSRZr1s@J0_h9LUq}FLDdY=R4O2`;@@@mOyJB1UK2{<8G>CTh(4x`!iyosS3TJ6#VY94A zQAHXamXs)A8DG5Ig6Q^=FQy0fSU?Vf;nXBJA4{5Y<4Y)q`IQLtL3b^`v>hTL#N&t< z3jxRw(9%*4KyVryFaX6X2(pe4HojztwF5{egx}zbXpfu4lG-&c+oO@>DlP=FkB@On z_u_m#HROEyL#@r=)sZXmLmTUfSTwt%0ag~~@aoR`E*g@br_HWv;dXx2Z;kP=r=y`y z*XNV5Pd~^0SmdMp(1!X(GZHS&7e?s%(c!%l+BlXZ+QDXAP2SEg#5WSZ`#5_g_<;an zs$q2nGKa<)JPE~u!y(GV3wXMb^*?AELWzP87V7(-pvHy9jz)2vy4QDB^|e))1nRVb z?Q^6sUo13=90GMwO|^-=!#E@A`4sZ95KRK(++&lF1q%qyj@P{0ZG!j;eKQ;`X#4qv zJKk}}0^hXGa#5LYcpIFB%ujk;@Zb!RdJlf$!pEQNM0wA(c#n85z?A5mYCYfe3gW-< z8Q1Q7|Ap{MVzDnV!X|o@ z4ruPsj|2<*(=&I!AiFnpbilpvvsOWn-P?FG&C{0N&1E6xzx##XeDRyse>^=CU5N*i zZ8?Of5$V1XY)qrHPG0EYPwkV4l@lB0RNwm+o|1{_2%rzs>d#U$ODm4`)6>+367*0% zJzGJxpKOIq3hwbtw$f}?vaQbrLP)J*fO?xr%~J&j*rLcDOy*#x_0PBzM%BtK!hn^k zWLaOfa@)nKTzry{ubxFe0gIyo{xApTj7xGA zyoq-C@PJ89hj|o+TwG5!^;#8Vhn7n2Z2&zS51G+41pO*4w>NQU@)2z zgsI}?)SP1hy_(dWC0fmQ#y=cNq-zaWy{-8I0_`S>^9XTP+EO0f9XM=-80*gk6RFbX z-CIiKO|9#&1{O7KNOzn=W}V$u+K}8J!}m>-wAlkTtl|O+=^rOPk82ExR|B&!Ah`C3Y&AktRz8_i{YZ#FGz6 z8%hHsqF=tqcEP@kXfPG{uaGjX>`m_2hykFK%tSIx_$@^a+aml?^V!TJsJ4JUL* zPU7%=SDTj2e%CgQ)-#67`*{ue=PwgVjr6aH2(1Go+iqo*gkPqa$-dD#1EY9`j~*8G z3K{nJvJ$ac|6x{V0L1+6l~0NSTMmNFJui{BYo4zZm`A{A*%7#qkA%tnb2Ya;5A=qz^)oM*id=S^nau zO<%B&m}o!yyeFpnG+L@tn8-TCIAF-s;j}avz>V*V+M>$;Z@cu@?NaBMDpCvZyao)j z-2m}C=N7@%&LimMX;psyc|6WTWpdi@Z?N9@#ZCza>(orxaNc)~HmYsG6`5v&xA%-Toj+$p*a8w#0@`a1$(08DJc?3K*kV}nr=TN0*dqyfgx$8p`oYD57gpJU+3s3k*Iv20_ht@8--9ON5KN(&k zcnW62qJPf68+}i*>5JoEdxk?ic@h5gg7Y;`z$evOH~#g^Sz01!^Jo|P^(*b8U;ag~ zuUGeAU#X7;Zytlk2x9V}lPP@Ytfx6{AWW*v{$L1jyamMx_+zpm z0h9{CxdLURjP`*ng1&?ivC6*HnsOxPRct^p3MDRr!W|_ zzPV%v%>y&49bl(Jh>D441J8o^pI;^)S(p2RBjkWYtF5;~O4$yk#WPuv3`9^H1>#f@eUDtJ*TI73*0?CPXaeUa8Qh{wNzfQ9YvOc` zE~TJHVDklT20==E;0?wz(M+@qSEz}5l2?Mic5P>ZZ`rQ6(+@*d#SCSTeAtSH<~I(F zERGCq{7*L)jXU973f5>Rye%GyrE*~>9*w#9Ip;z>Z2ZJV z!ttMwR9qRzBOE3#;kr21f!6sig0CVOy&t_qK7!mB=10FpZZsT#Wx=!h>mFhcR8K4E z$fHz4#E5?#hgSTxiZYILn_Hakwtk$1W%bQWQ;jsqc@pV>m2ylAE8E;=$;fbUN0eY#yjY;xpfKkMCqyF47##Yfm$#)iZNguxk$ z<3An;-|{5l8N$<+e60j(Kx3%Opm1rFb{ zW$}_F!(l1O!1F@thRPrkQK6@BXKRxxsT5|I=&V2ICo#V+*3qG^R536$z^&txNQuFd zD}g#9=y~_7Z+$^Eq!4n#?omx;U~prkg0w7oI0x)d^?G&ZLT`d#5>j@+WgsufN+q&! za6mC}ql&};hI-k;&MK60u$i2H4tmsgU>p<>uX3>uF^9>P54J(nf*QD71F8nY0sIcv zLc|aXl`{ANyiU3qsyx_MqQ&?YkZhz4;Ni0=U9Eo|j`0g$-b^Nw?snByn`qC1WNGuE z(7a|z1+;rpwcm$mIY1WzJc1sQBux$6kdMdnazIfPxl)nw6Bx;6v9BSH1LANpSyKX= zn=d}S0>vm9N+^U}yqdzU8a#4jP(eg) zOCGyx3|mc}Djz8m))9)B%+3tKEfuK8&}m*?_b1UteORo#p#_}(g(Hy09{Z>EFv?!L zxjopJW4!gYS8m&GvEObFm`z8sTXfkURol0{^0v1c(4JCG+sCCQ=<+UTIgXJ22UaBT zE}YAwAIv!(2~hCo#PNZ@0~)X`?E0M5R)j?LII8x{txdbACf0U$PMYj@Qn5m^0?t`q z*>of@f^3S*8F@50Co4OedPJ#Bk6aNtb=?_-Ign3V$%_lEKsF!^W ziu%h#L*x=^c*iFX5uFnJ|DhmaXs!@{j~g9x4Y(Jm(ltOmh28F3(k}2KVd#ph6z7%f zc3@V$@FGz8LB=3;al+-S0=Iv|dQZ_}1h@_DQLS}Rp(v5jcgwnr_%Mxqmkh|D)AS?# zrL0S??dI4j2owkoQ7rm7dz_e>%O!c>l6?(aAnEe=vWPK*M|@qTgE^1)Ccg+woeJWl z6Nd!nA-}+T0c*7vUx|lT!gzT4_%TJ>1VU80y{u>>C?pbCR!20Ye0vFnO`3A-I5KHI z|Ds_JgU@b}D6`wtINN zbGJZ`c?Nj|Uab>|2ZQ_kAF(fio?_6Au_`GA(d3N^!SGMDR-IDH1q-r_d3NX3Y}>88MuO$ELi7Uz1}gJ^0`dl2{BR-CkTCT(>I zR;?Zm`hc#&hi+cgkCG~;UF>PLA6$5rUnqEJpSAN;i3j5w=}{u3|4$ z|H=B5p}rJ#DPwG+oe2)h2PjvLwtGbA!q6WSx8VV9u6ck&ly>pMFyQnap_5#;dK|nf z@e6a{{U?@OL$KM&6*@!t#`w(79 zVD&-@VJ2e&(KQ6MZ95vUfVMxVgLLS3J7FfxRurasST7Y!<{Z4cueu;8Ai$z5XDa_CYSQ zvyGj2`>KG=`E+d!{Ph!D7Tw#ogr4CJX(Nd0NS#Al$mw3FV=ojtO&g*60e6cFDs4Ut z7ELrbq|^<`Hfn)=$q5bTon$owgic*ELlebtrkZr}!yyE99nQ1k`QdWw{}YC^PZ?Y0 zx9F0poK{pYhh#jv%*sdd!?FGh!ob$&r9`?oQO)$nhH=zV>REy+XX|$hGuwlSLLq@P zhkM1YC(}1Ux3>{Jq?t{5&-kK5!;jKDbDj$wjqmINPhYG`Vl!i^eh)OLhze6`}gpp%9QFvcz!cI=kFTC!ZcPz|Lnh6zA z#P!19*nw*gjtv%c#1mH&H*hrs->?Ttuii?&iIr2S)D3CInw)Xw{W#% zoyx`US9NH6pfA$Z`{TLueakDWb<0^^6e=O&@6Ln2qkbNQr3UdFM9cVaD_`f*W4stg z%4iO~AP)~3ms~s0F`~wNNmvS>@6*k-jv7_!zcRbAjxb8Z-@3wk;(Q<7GE+q(V}5;6BHxT#@GU}n z%@s5hHLCaLH@~u3WQ-QLTdpLeWDU{C9!!VIEV|O^P$6@B8VKUNWPHt zP{?#F%<;Gek-#tp1_wscc~y?dS{a&dT}J3T<;du0u9&O2IV63u6=QI&tl~{FR|PnLw;GSB_<~)ogaH6KLb6NT>jMp8>s(=@zm= z7^=mbKrEvW314cj=zqpu9xE2wG*;TS?Si#89cx9$CRFq}) z28gX&(*22isy~s4{7Y$kd|`aN^j_qZQlBj$9YOkK5IE%0v#Rv>uZh6*EtxG?x+F0P zsKDb0PmtX2Mxg2h*7}{o_Re;sk;>q+BVeNDUPErSBcD}7=nc@Zv)nG*PqdbNq=-53 z)_=a!!DaUmP{i@I>wEq1L8TGx^<&ayL9n|M!UT3@~R81d=rSEsjzd<;Kw7AG16A9z}gErV)D+4lK2=_!eihUaKnKx*DqEB`jNY<&sSsu}bN;ZrpSUaO;qWXb(^H zPXB-(Q+_~W`22q&F189E@Bwgs*F$eeIgm(ON~|du7HUJ{p*)?BOUau!aUlhqAAhxd zgopDLio7JnM8G0}c}p&97)gZFe^iQ^^=Vy++E{zB4iC=S@#!JxiEh_ycJEM~mjY5+ z#%06N?c1YKP@$4)Vt?>ES%9re@L0;y{mb|oRmDdw;~8JDf?E2J`b1NR1u5_P|&o0d-hi4#@cuC(Gz7TAQEZeiIa%5CbLw zBWHINxUHd61(1HX=Fb%|mDzI>a3?O`IM3g_FmY88?}LK z6O2y=>h7?ca;#^G@+@8vOmQ9ax53Li0u;>#tScnZ_EXpbS`aB@n$KT?$%P7}c?( zqoYG<6`>fe8L3%^t)QeotS9^V>G1X88T|K-QJYaL!*6q%3&iJowIe3VuO8kL3%+aN zuve92W^&~6?zb;V<|!5IKj#edF;T=t zoeLdY5@ho0qJ-{>i&T_4#XOWP*fpcye>Kh>C_wZ0Zh0O<(98rt<^DgbPW=L=LW;DQwcVV6-}R1LH_ z`FoS@W1P#})Y7EuAmueRFun&ZjYR=!A|w(QK4he==7K<5SIvGTS;=HDv)CA`9dld_ zV8`GM7AylYoWm3+<=Qs}oh<_u#%{+NO-8y;k*0=K@>?DICfiMh75JOUlB5T22s-Kp z&2^5|#^)B(PVx=H$cE-uFxGuNUJCWacxTXJk{m{2BF9AfLLmVNXQ9;cu+@19J$1n` zQhniQujS^eqIwUM;l(<%6MkB{I(Kwl)^DN%yY5(^1DEgJeFb9p^rEp>L^WaB+BpOS z3tc{cbPl#jb>WU(-htua2QP=FgXGHZ@Z10fs2A`o4L@RnOEu;^&otGT6Hd5n(O>T{ zC>;KZGb@$ZDv~^(RxVq)R7X6A#&sJNjxIQtS9Pb2JKnuiWGf6LE0DR={2-K^@5&?585!E(Jmcwptw%4NFx=ei30lECKq7h=&b zJX7C2#Mj900587EIYqJP`51RhF3c&fR>Ym~GA1CcJ>0Dv^N>(dBd|X({^-`z^!h7@ z;_s*5kE*qS!&pB*E~{6-i|&IPFI8vh_-2^pp~pfcc-6AJm_-d|Rry15NPAG)GtZAj z0K6A+gBYU`<^X$HrWAD{%H<`{bqfBaU-P$yyJ%X(XfU6QgG<-R75{mbjxuJF3nfuFDb=ps}L%rdxRzxWcr zrS~Sf|D}Ext;`Br>jF0h{zKoFa2W7br64r$M+px!5nj z^7LQ6f}L$Oxo&X{+pWYvIL?0Y^NL^K3`1HM{yc1s2=$-XKL2wb7j5oghX|(wj25Op z$81rH=q1FmK!7u$1%!f4hmeT&fm;^{C>`z1DtR&)-lZtJ!ebPASK_~8;aw7Tian_% ze-IjSoS_gMN5WiQ2n_*5M7MFeNj9N1=rKv}$7?|PIWjI&6+k$#gmzbAxs-W@qP!wg z;?4zG zZ>Z**e2Qslkq9EBhTvUcEixyxf58swsp`J}&<|j`rvWfK*10+#y3Qx8z*P;rLeOWjjlQ2bC*oaNT*rz)~goh#^Q#7G%owExIUCp zA%rifsn+jR4qSN~0>lV9NqY9JKvMKoFcQ2>Ds9USU)nK%c=Q-=oyVZznvA&yDVwR0 z2y6&X0?I|oez?arBEy)zj&%~j4ui4bh+*#u<_l;ZBvfbwCi5%#$^XB)FM)6DD(}@f z(!Ez#`({brCCiq)$@VO^XCKd+eKJ|dWF;fp*S2EWQY3kt2}>Np680gaZAd5`=xZA& zOPW%a78(;$8X%?fN*;7!ap?vvr2$$Rctm;s@0_c}9#1mx`hM>{FZZ5v?snF1|GwiK z$EFJCrC59AbIfwe;W%~0QFlV|yv-eiSOwyip!;neCE-5W6>1Xk^LMwz<1M>IvMIzO zHzsX1NY=?dhvLE9i#7HNNLpqsIkZFSG=!i;k}1`So1n2_7^|X(s=Uk03z&dy2LKtW z3OnIbMRXOQis_gKxpRbLo4ILEXi$d0-a#50CLA-KqvSa{)Kd>(<*wkLY*H(ICP6+Z z&wI`cPM^$$@UjtFR3oN;hj`cdhZV98p?`rq3X%qv$8&{g>KDu-Kpu>35FYCk$(<|^ z1PX)}vPQZ0P*YG)Q|e%*%hs`z0;8QAj!a<>AxgTEEW@JF%hdgM{Z!u zN0e?$Y#ksMV}!bp-^K@kjcK>-t1w1_$RM!_x^ox;7lD~}lgL)=XII_d4*L+2PDBh3 z1VRnzs;vZ#5yxb+w^&;Pl?MZ@Rw*YvG>^U5Z1&^dKW?{StF`$am z5lm{Ez{hBTh(i=lfpg-%VXMbgS=M1`H%s3+delw0#Qzt5I(k*^aaMk;VoP23yU#fT zY3vzJ+gnsVXm9ZX#SHrpust5}wQ9}IK+FN_An<8I_R%A_$_e;iUJLKSX~ge8g{aT> zTi#`P*z%i}52M;uV>Cp08Yesi7)N^-k#K1&9N8j`_n|zJ(;*_~1k9?cCACX+GsyEU zZSvHG-vf?NeyjH8T7tdteV~3_n%2yt!EkJ7B6%Ryx+T=QlQy?^X>MsU6_clv@^n_7 zXr;lR>cqOj^>?nwYvyz2X+jpp)}7dn_i6ZENb9(|(=`;Ue1&aI9Y}`!c4t78UoAhT ztvjV;PE^CA`((~6-1JVfaQ!W2&OBjJ5$yg?jP(leC3N=j+6t<2Th$dMsll31yvjdf z*$7N}7Q7cs3W%nYDFBrdk3x2IKh4McAv}E)*LxLBY=|UMJ9<}pcYN_tAhMJAgW?uQ z3{Qaf0W7BdfuF=$*ln4Dr6loJ5Qd3h5{+jPjbWLP38jFz5O`q8B*(X*kZe3@>uosV z6W$Ry1S8pS788_YYq$8_`(Eqv`EYNwHj21dY(fb{u>Z!aJrcCquTpN;==@6CF*jaM0{ze;Gb5A0Y#FHS zgKVO*%2pc6tJ_)OwP8HTJ-H`C7F^kE!Du^4*e$ z#0jQi=}ql}9PbZp87em8eKlxx@uhclioQgwX2uM=#01mwo|42iw z@k&D)Fotxof5Ru(d!dE9#4?Wt0&6GYFCiZwPOECB0l!m;w?$+`IgBQ~sKw1Sz3o|U(UkY>}eY9EX{~I(zxtHEp2VEpVzq(3Ik+t9U5mC3!A!gl0A{% z;wurs*R(vVuO#a_UIrB-6RPSm(`thzCnlL&1lI*Vp{6uGQ5XNoC-_|>MD^0)T3wvI zp3ZKO82W(RX9kYKx}JLMu^WR;qCDQ}hbai2=m^)I#rAS%=sh?vU3KoG^ge%w9y*v5 zk>xtJocKXoXd=`m%%%$yjJtcn;;w_S9YI%jle{awbG7~=3?kX8ud*irciw`YL2Om1 zTgORD1u7K7L-}!(l6QYYa#1JmDfE zNWi^d!y(oKi$xq9C92;YW1oeAoa4md!zUa*#pxIx1#cbHM*~(p7_f%-9MHHYq;`N_ z?NCDq{cvDU*cu2ze>;l16#M8fLVR!fxC5%*b&rFi-{f)U1NI>F!-+&QcLx1j>r@cG zQ|V0W0ae#;N*tZgLeMWI_t6^KmxN9#q)i-6+@$MjKu>onN+76oYTUo+I~@Ma-eKST z6~xcI02%%73f=!8=m^+^j!RkU1CL|;yO9{yF`kVfpZ+I#I{BZ_XF>jPeorXGTB=+y*Kb{v5U=yjCZJ1Ujr z@N6eru+`8GpD)NX%Nb?9wdBb6_mv|=Mv+=;ydCat!xnG`VO{Pv-~g!j>anj8W& z0YXp^5db0$OY;|NpK@ON*yu0TKz4;}A$;@ELN*b)`AGuRhB%75b5jkCOuTUe*Q3~5o-kXB?CYFXrl7sFhRxQutF&uHVz@{ z7IQ%yYC8$*KaJ7tba+!OC4KJBYvbmlSoItKW!rfEQ2zMh+j!n60#;U=@p5e>zV>-G zVtGI9B1CkV@M$ES{#f4+K=3bv4O-SbXTcyWYm|e9F0I{fun%GF#voTa0?v~pdF1LO zhjjyW2i8DMQtWs$SUjXi)h&O=)#NydmB>&Y;-(aMQ?Z^!@MkOr;$4z#Gz3Reo6?B@ zhqS^L=+LY1*Z2RCKImEJ z0#5uKX^DT?KB&C!zo--bz6K)doq)N6kso3A)7Fu?Et$=*V!lZw13n=kHKvk0NSLG$vs(xp@nrIBHC6yZ> z>SO|felsy5rG+GHgjv967ETb^Y~CJQUSu-v#nRg~(fe|Fe7$wlD3-h&UD?>cks}Iuk@;a+rf6 zWY%?WyU!VQ^X5BrL@s~efEtOgkDBj(z}2LxhYzc2lk0(5JsRRouXov{jsyMhZNwmY zKP0l2h)K+l3^$JEthfW*{_&5Y zq}qnsd#gmmUbF%p93<511Pv=dFz9Z2@#h`%V#nu2hCL`Z$&_zqjc=wkNpgWFEy4;P zJ&aiD5i*{_noddMPXHoeuF^?$r{#f#LL@TvBykCm4i1`kudq;~^vTHGN*mN1EJBl)6u!(>Ybf%=eBa6W53;b**GH?B?JgawgA>blE;qsv;;crcVZjj zU45<_cRr%Kxtlq4A6}r|o!Ygd_f;yM_2C^Z?$#gKd6RSSib0qN-f8dfxAq*D0zDHZ zho#wWEE6_y*+ zUsXRu_z%`K`QQy}du+>*Sm$HcUJpRg$nRC^p(*6MpFn(&&mj)MF4Px;0L?YU6CWqR z+IrfkNtjgvPXcKZStW31m1kp*39EpiYqr4TNmK5kL)(tQR$#z(tFmz>q;p_P@4@Yp z+Yk0`8R%py(yU{YBDT+oh$HYp!C$EDvjJU&jkwPZp9Z_z*Xwt|mDlNu#uCw>!)|v3 zqls7)Kt{IlYgiM%1N)94p~-*(gL=QJcc-S1m;?=J;6el$0~-V^7paDov{2Y&yMczJ z-v?xBfsC z09-M;UznK*do*bcD4ZTlWh9icQUOQ}OdwzyrWO_p*e_F#D`z9fw%Ww(#3pWa+8&Y4 z-)f6>ds{l&Qk~6F?6RkHs4m2OcDtQgFzIWuCkR88szZJ(}eR|geckXtP~M`^Du z?TC)JzQZ>CFlE|CcgI|zh_Ai7zq!fl4y$e}JS~)fC+NV&Kf(9_wg9w?K9W79U5BkG zME<&~#L0fZafK|n@_MnStkm1L!uw=5Xa;Dk09OI`phyRl09Qtfk6GH)ceQ&@*M7LySI((c+y1US-95WwtFb-Z&tpCkn~lTM^`wcVE8jQq z@W~e~&FPk{R;SatwI$umEG>gAErTBbINGSI8frw!7;DlC(paB`t*0Au=r}M@yh>e@ zkIiOLtXG&t1gM6?48^A&L3JwC@Y9TFf{^dLDAeX!c|!OVUJVh2P}Xpj2qWDgZbpB|##_1S7(N z%{H&L%NeoxxWj(ftvk1A+BT=|K5TbzpDp6trFm`5F#5c>+wQL0S;fSz?s9AQ-`{6f zY~9#X>YyDPYp@o5K=r8udJEES`$4x)>$WNOeQx)~-S#59U#sR>J-~0~hvfQ{{N^vS zJ`vUX|AqCr`d_y`C7%5$Vg?J_YfKPuiV(z+yad}t0<^C8Di~K#1XM_2P>7HxK!gaY zM8rrH%=R%>itdi>y2Zm(WhWW`9-ZB@&efpub>VPu!JF9baO9F5*oscsdFyDS>jC+d z^lx^}gu71&--BMuHMBaYA>`;J&;lw-EinyHO++EUiWL=)RP_c@#!i=qMFWXv5qF_O z*r&-YVbAPQCtkV**36#U_cb~rkhj67Q7}U^z|(XXM&r+WhW$P~7DjJHpd`h%`^t50 z3R>mF`aC%|)NZ9V3i}KOx+O)PoI&7uta_|)xCT^Ha&H~62a^a_2gjIta3=^>1@C8a z{lK6Q*9zU`m&UOngA;)+_b2ZE_p1@O#L0PE`f?O@asDBB zx-8v>go`u(4xF*U>yDvudFPH+cUNHIpt#Bp;U4!V-qe1zd}&+yGLDyMc#Ak)o^BI$ zFm<0?XHUcbUqsgLL3Ch}BeMvk|5}Owo*9aR+87~QtQs9Dvova`xbVguW$CX%|AdgEV3thJ$niu67{WDB{EjBU)IdT7 z&_jTS@DY}4vL{J73cdn#bhh{KkP2&{5d>RMhYlAglq=51sg#9VDcB0Ln$cD&6&ZB} zkyv7grob$TeMzgTT9f+{kBOtmvjc51@XA;5BqFY08_tGkEEWrBaL8UKfZHj?ZA$Fw zanN!dFg(RY5XOHbYZJaYpk-?FFC|S9A%U&V$l4_|RuU{4v3Uq}O%_oIEHjq865a;! z6oM+f7on0;aX1dRQ*YcR-$k!=kG3_V~SYVLyVbYuvdK6_mIEy3gfVmFlgt>rU^ZSKw)J?8M%z@8t02>}l-?p3wsmKdyqNS%tkVcsWUZ3VD+R zHOX3Y+CtBSJkNSO&mb1tvz~&ark;ZD0dl=4#mSUuV0w%B{RHGj^1bjwh8)Ty>#ESG zr#i#oaL|?7g7_W7fZDhkVn2G;gRfQJTroe!en8*;XiLkVY@wQb>sc6;*Xnd!5^HZn zMLybkdFxYDE3+O_enox@DL~Qcs3-~Y{Hhr?n*#M(rPid|Iy?2_PQ>=Odv*`3joBFx z%$2MJDa`ayU+cVX2&Ts39zhRJn4m=LxAvUi4dk9jJHXe?pa$lrh-DUR{>$Wn#pFB+ znnPlW1Wn&4EwXv>IVQLvMD+)ee}VLyL+$O5U|n{Z7u(|u+pO4Z$Qqddcj||PcGJQ= zn{Lwx&Y-%HI2r@iuo_7NUmgPr9g@I>rJ+oVnoqbLRZV#<@@ zN_9dIv}F8AXbE5!{qVyuiAM5CjV(i#a*n>rQ16dDscB@x^~fVQgf(0b{V~N5rC_Ge zClHruFz2e2ELiIVDFIEw))asE6E)L>?PH4Y_@X!)=F|fJNsDb zN@)6c7tJhM5?a@|4k-sDOy3c{stxJ^=ZKkMm?J0Y-jT|xSSI4Yu+KQkaDhB$*Q(k8 zkq~Y8CTyb4ZrTQ_-ugBmoI%}R1f7f3MFtgUL)GCIGluvfA3IB5MU9sm+OTZ4;qmio zQm^|;z3S3L2Q{z!?gblN2l>CaKyQui`J8#?;fXn=<%|K8}{O`aA6315xPyo*jM;W__t2{jeKAeb2AMFWRAIm0rG6 zsVZ5jO4iaeC)x+pN8+kxFuZK}f;Z4V*(i2q2aD`p*RO0=jh2g2#vncbOaHlRSW zsjUHa|8oRN>F^i$hl}1%5apAF9e#&5(cffMzNToMDk8)tTRi)?Ks>oMJvKn$P-S|SWZj`$;73+fl(1x+Sxg7_W93E|4abqKmuR*#J# zytR`X%?T%3Vsonwm)eqO8nni`LPz{?tqrwD5l`BNK5)2O1FdVaanwT7rGvdGfZ8`X z5)n^}9vt)s`#mj51in=}HMG{+)Sp1OAxD@YV5yr-0)*cA2@#_$O_aKcsH)WK?mBR; zxr&M?ofL(O^}G71f8~}^{jOxB8J6-0bL`+zcE7{Z9Qo%{f*u!#Q-Su*ZYY~LAFhmiC@CuZV$YQZ@=NIJW!x1`n9Xw!;V z#*%(MpWrunH~4&6>L#ra#r1+YI&c77Sg+N3@Zg60ItAySUf`zcLo`l+121Bn?uF$8 z`PY#AuNpt2CK+rHtZik7#xyOH(X=t}6gY>F*qFcI1-eo8$0{oU_B4~WPS4h%)|(DYv$I#=!myb&JFLQGu6 z<6!?4sq~Nv5RwVNx<&5R%vM(A#?kUrd0X90nN4hoMIx~+!iS5kY`<~t#_i&;DoTX2 z^KIR?-r6l55!2P2v-iT@0@f0wgT^`+G136gI#{Z4;_wN4xZ&dsZ3qG+wXBV1%plQd$2n)0vq7?25(bf>=kzVE5-s%-Zv)YY>r(>bx5mTtY~7b9}_OfarSbW!m&79m(3W;tJqh0RrrfpNTULQ zHRd;DeWbO944$NZM70wpAd6=iSQ;s!VjDKYtRcf1^*<`8O~~y9H(;${k7vcU!N(KV zCww6*tPdQvV9?xt*Q@%1L1|?W@`X3uxHWu@Pp$7LOuI{86At@A(vBe%q)mPm@d3O@ z*fxZGiGFOIhESET^B2YsW)ge3_9xEY_?P4l6vuNFc4G%IT4tY+j^>wbvD_$GZbp28 zMm26uEE|PQ-+qy5OWzvE96pD2RP(s>1CN?I;hI#TdJsD?DYbgoM0h4~l_GC&$+ z+;YG-q@iZk5jdxafH``BoS4aoNT>>cfFQ!3!^X|eNn4xsj&&^8=I~&H2Tcun95e>o zDxV?L#2|FiE+dJ?+Jz26mO}nzvR#&!XpvPa15;LsJ~yxJZ-iJ|@F&4G5HSja3hcb9 zZLj=cumv%POms1x2($Bft_?!*+K1x-RtA zwQ(4b&e=ouIo0EcUkgvVuIq5P%NNk?&NEKC?$;dHg#NM<@VCDa{{_3f0L%Rw@qfY| z^hDdeT2qtear>G*w6~zp!*Gf(O7j$2HX$;Sz{8~6h_s}=JgPoMRapk)lO}N{<&O%v zdTfJws)s7CAviwo1;s+74lEL49V7cZ0hil3(%OSQ!z$`&9dWu{0nfgXj+m#i#UGg9 z&Io%;lP4H)qDCuH;E1gxTepY1;6dlcE@mAqE`pt|mX1pinK2mEy29IAvBBTH?iPnH z-DltDY<0TreQEH7h)X4WyJ;^lL>n6?^MR^;8C)))Y>6P2Mw1`L@*+}F52<(oZ2UDC zvz0rwzr;2XbiS&2U-MO}#@RiH^ZVP74!aTdn!TAHNW&1#l+Ry^>$`C8r}0eFZN6JW z+@=0;&|Ue=D{=1-p2?;6<8G*wCZv!U{jUf)CE4{2KmxEA5eu)R`2k>Q3PgoXBj|pi zfCdSxj&KbypCN;o-;P!+x*VKODE?hdj3JFnPJ5Ef1?{ta{oX;UXR4=>d{0(7zC17G(d+qi}k6 z)B1$$>lr~&Pr!HNq@`e4v7E7-wLE57wVbo8fvNx#B1kwA#!KT8U^xhjK{P-%lN>uw zD7H~Z_6z1scg`9E1))j}jS_Hpx%|fGdtT;woDMwG#uMQ)(K@;#{lsX%+7?@9Jv_K~_;<0Glw-rf&4#HIZr}e5}Mk02YP$E71G_4odcPBDqhwnUq(E8_xA|1HAc@lT6ndUyn zQUhirQs_>*tkp=QDQxhL_fS6(Zj&)cU7#kD=&ecgm+TtJ`i(boecHNA%?%cY<6L43_z>f18&=C)7oJlV|8j<;hoX8Rdd4o|BM+G4N=s3>rqj6)EVGG zsW6>%+4gsb+hEdxpp9D4MKMBL2!Ez3a0_e;ckj2kxYG>-AuHm;!Q{y8LVpo0w#J?V zEzkl>?FsaiU|MTZ9XYb#TEW0t8^k%JCh3vXSzG{k5!alYQ`mEg6>Mn*hT2j1k$l%` z{Vrno9EZr?%3xCBsk|0(DX|um?g{*`37-|4M-hF62r>%4k>juOWq3oA4~oy>d2Uti zw7W__s4wmBiM>I-AmTuScI+X64+e%4Yc15eH1~zY6#@~xUg`E@$99K8?P)3LNjLTHX`;=feE3f{?deAbVj>6b3x#$cJBIsgEC7vh z@QSzOr}y*D80C#u?8G%`@Ithf!pUM$vRhx+a#6Akr}c z)$lkH5>#nqp@}Dm1Th0U^L+pA0imGoJ9^!bzNp|`PU869NLK`ZtFs*g{T=9M^myOV zzW$?qv%+*%93JvV;CoL80e=83vEEY`Uy}=e{Utw(X({Xz$d_Xkwn4)trV(=y2XmlR zu^SI*N{Jh!28*2_h(-}1B{jk?MCu8qkP@sH)9^;OLw^W%uMg=C_l=&ffLR!!*54nG z9FN2y4t=%D=fdBFdBP45&A1=8H$RFu5>;OGT*$-tOrI5<3;-cW&opW-@!Lw9wu$5##2qgJ6=$eqbabTgqBe= z=+-cOkRXzi`gVMjd<1Z}z~n;NCT^?inb+!axK~I$z|Xqcx-~V10QOc}FcI;EgEp%b zd`YKj?{4di_a_5k$Z{h7K;Nh&LPl5X@-_4}z2zMcWev9PP_gMHgRuaO-dWyBNCD(yiUmteaxW7YQeWeDA8`k?<8`Z}^nIxFlQkASXj#0kNa z3Lw9sJ>&Jr5GGf;Zhi^b&{}dLnVh(i4qwyZ;j5IFpKYgkW1e z$jsZH_Ru$8f9ho~{lTHbmo*wl0v0fG+WW8X1Z1 zh(-|+lw;R3r^o35Ue^HiR`5=oE39)d=>M;85tGP`BD3 z71eD->rtGaUvTUJVyaTasyT06ekjd(Q!g?0j{%jm0EKMX0$k7nJ<5js%gll+F7R0O zHE5HxQzrOG_PgsToK0slvtWybfy-~8!*?zjJ+OQDl2{)`>ujj4kFA;)aJBMyAPHmP zfPFjEJLv45ID|*SP6Z#mm#vug!rLGmoW$(djm9p2HK=udU@Hg`06ncdseakRa!Z&zPmJASDT74maWcF-p zC>jpA0h>c?#e5v^_$x;X=V6DMYTgS1%)7Ta<)$}O{|bAfO|T8nY%RV%hbON=JLCvQ z4|p7XKA2{rfr3Z3v8TvVlSo0aT)Bz(@-6LT}KW5VHO?pTkHha(J2-_FBfZbt$X z>uFF+PDrmn6I>E(a=O^>-3~7V*AE)Uaz{MDx& zK9~WWb9nZow~QbZwV)e?oh3=S4D^kpMlM3o3@jrFZKZBbCWuZ#;x$eJB=*?2#8MiP z#NFT~7E2vGb}+T6D0 zjl~>CWPqw(L7EvU7b}<_!uENlWjfz3R0Jc5{;jDEjS6ppZ6`?46V$*h4GogXE&EX} z+r>yuza`wct||SA5g%0bS1a1YOLPn_nf)y1?iz~&rwVE3FEIlyW;icuqyP_Jc<~(j zTlRZcr?Ag~O@--&0W>JMPx4|AZWvl(Ji@;9DC{eMe4Rh)P+Pry;en2yki|t8|G=+5 zcr{ZW1q8IJ-1Wnb>pBAgx`s>I;RmmlzIK3vv?o1z+Z{rrDNB%|B}=MPPz6=36K#vf zHZV;hvhoG)y;RIBVtl|TDOZ3yT6^Iv2>}r4A4bqWJn!;~2xJL{YlI%c;bdj4E;nH3 zUlw>n#{7!WuBQszq5(gMaA-;iK28b`05{}Tf287%Zyjg+?s1pj7j-N`81(PQHtePR z!ux?pVt#k!0Y^UzxEXW#t=biDjy@i0+gsg0c_$JG0JSgF=41e+fO|MhKu_)^?{exT zA$10pAb1whumgfwHFmtRCfJr3jvrcFbVPl=C_sFuUYxw*eOG8!zx*<6!2bg@_;c*D zurBoD?Mdu}z6%s^G6ly7#Ia@~g>wWxFG*OnL_k8|1W>MONhGmSkxV6npp?Tz5PzFB z9l6~f>hWLc3nz|T;%&bDXX>`?+eQXP_?AnCs+TrR?UH8$jW6zQFwehPi-+5nu zN=>J4{j(igV#TAwi9J(~reeu6$M;RW>58{*RXyp_{#IZ6z(8}TZwsPk?M@DNceXjh ze)g8p`;IWLdi);h9>5i8OAtgGM2u+2*=i6H_6*?&QGSRb023ojbTk2B*ezr#B+U@X z5NIVDcD8u1f0f5+^J2@cu-r#byGa;k!?5V_=0P`*2OQQDI>jK>Jbn0>__hV(1C0&& z=x_Y;#?NegE9!5D(qZfwpX?MJ)AyQ7uDtKh zx1DGa7yP@rI(G!@El!Wxdj0Swok;Dcwf2;0hYWgY zO#2#Xhe=B%#h$O6q2W z5`5H?2t!saee0ce`<-eOaa`%P=ZUF$o>J_DC#qtcCH}JjCX&QW>`N4uwjJBa6031t zTN}AhB4@~{7D0*$yCN;WHiH)=8JlNj+fU8B__cm96$9h|v6Fe4GUPr+CwDNl0 zXWQAMx;_zA_xFP>?`+n$?j62nWb{PSzBc%J$5q|+MxXN^T9b@*Z|$+h1& zfK8SQxCT}Z)(qop1*Wg~d$Yon9cRw$z^My@x4yZ#KAavv_J&eEU%Ek*yKR@g@|Ig( zc_|EfW73p2qhQOGL}DvWT{c^yxjA98J*aqW*RKDMrY z&F9yTqCSe%*0j#ou)DG%4F=YKP6nnGa1(8|oJ5>dCiC84p6Tj1nA96v``IMlWdGalBIzgM)ML;t%LYC9Jn9>FIctRv1g zh|RGt5O59Xr&X2!4ckuqWDmeBy&Q}R(4){JL9QmWNc(syk{D;5K3!c?G0|gtlVeV= z`f=6k982zv9nc=vUVL1$+qK72N7A;}dHsIx>ul*GpE`aV&9nesh}ha^5ohft#N3^; z6cOtge56S@nKnCK?7~joNaTZ5O+mq2Re6w1gX9^ziMAtw9}H>hsoJ~Z+q6VPya8)` z+kUD_f5W?T0atm6~qws|MVkK&j(ev*nmDUY%^b}AT!ft_z`LXX5w`TQPRG&nX9lQ8!Q&^Vui ze^ZB$$&!z_Y28LjH%LdNml{R00v%HohO)oaG+Xchm?&^k2ZGrCIosQN@QZ=5p5W82 zk&j8i-SaLrmP{Tzb|{sMsjeM6ZhJb|GZy$_=g6-~p&STD!580)`C=C{cGU8AP*_#3 zxf;_S+R(f=_sw2SR0ZJXiW(g^*98YK5n%i&@}7uT{O3E z42k%(IT3AGCPT21(v)4tX%8#y&O}e7HGHS$Qh!yWJ#u=m!x2um(k-`&B-z-YK{nQ0DfU8kA0f_CUO(>A2{nrQ`l>)v3dRUyfi?{NS|o-)gw zc<1|pC7F#>rBTbr%{074Ezg)~ZgE(CWTvff zHvosp_d6{~_LHOe#d7SxvQf$}7>()JXzXawFs{qzveTQC$6orv4Mwq)%`e7AheqgO z^Zlc>H(p{a8pTZ6n2t@Jj+IW$ZY`H*Vl&13LX2)Va=Co0P|V+9OqGY`%H_hY;o%vx zd}u1afH{;$bltKg21JO)ZGhO0%~V?frIhs-&Pcsmz&f9!wji5u|6 zB5Ifwb*7pO!REaB<@NO+-K36};Q2-Ijtp9Cpw=L;XN4 zmHlI&ojIgqu*IQkci{Oc+&u(bMNbvLOAh0AX2bnMxQpH-_%<=?p^M(^hj%dYnFpx^ zm4*gGYaP;XCv(BP%L8f{q1jo01zCtSVWY1Ii?U|c!dh7yB={Ym^J0*=z^{pQvmTaY zDb~ySSU*tZAWK79IE6V6?-*%4SOxS2l3?Y zWv^rRvDdRVus5>>6Z_Aq;d zy_fwudmsA^$V%VOKEQsH{Wtbo?6=wPut(Vk5ySI$*@xLj*hksN*kgz~_Bi`}_Hp(H z>=W#h>{IO1><`%=vCpv2vOi{I&kQXJ`#gJ!{R#U5`&0Hb`y%@i`!aim{TcfT`*U`V z{de{k?5pfq_CMIy*w@)#vcF<~&HjdcgME{Ii+vk5$A8Pd!~Tx_J^KgtkL;h=ciH#Y zKeK;f-)H~Ie!%_>IQfU{N9@P!-`Rh#pRoUgkM&R4&)ENDKW8tn3VV@Tur)LGJ4E<6 z=tkhgW9K?NF+}(`s7Sor$NfCOgB*eQut9BvM|m@E;jO%lxAP9($zwc@SRM)9&3kx~ zr+6>##w3BHwsw&A0EjF0mjd?zdfck?}bFW<-a^9g={ALNJlVSa=k z<(KeF`DOfaeg(ghU&W8{tNC$$4ZoIO$FJwF;5YCSP{-fIZ|1k~TlsDLmHc*ol4tlN zpW@Tp;4^%d&+#n3gU|CEU*L;8&kOucUgRZS=1cq(U*>o5)BJA!D*kHz8va^-4`1Q; z^4IbE`0M!__#63~`2GCN{4M;g{B8X0{2lzA{0x5=e}KQ6KgfTD|0@4A{t$l;f0#eQ z-^+iUzmNY0Kg-|GKfr$z#)QAcf1Cdff0Ta^;Z1&*f0%!Sf0TcWKgNHLKhA%jf1LjT z{{;Ue{}lf;|3m&q{4@Ns{Ezt)e3gHWKgmDOpW=VQzrg>LKh3|$zr?@HpW%PTzrz2V zpX2|X{{{alf0q9b{x$w}{+Il(_+RtC;osoj4FSX?4Ns$z%0`PVid;*w#LTkYHhJ#2U3WV=whqYa0yCJFJ}+S7v&; zXp~Cn$$WmkmYK>Fr`62#9ZRLME0fF4E~cjpAcdk^W~e+nbJ`(uIb){ml*wXtcCM^v zayg?on>9*$W?^zEmsy-L5}5^~n4QWjrc3lTl+7+>W{q@~-dZRcC;TDf8>+m(q*E=iMvb89c9esoWM*o98B@ePnGvI#E=^@}hIKMSmlmhfne4PSiB8Q=8#bIv zxUXd3-dvgvUgYMDaxITr%5%7-j8C3U8w-WS3?7#E-MN%0;(>5A zU!DW4lr~FC)=6X9Hfb0|$0SIZbSal9%^{!5X_MKh(->OEWOgw>g~>^^%NEOX)0xxh zsm#2gOy;tScs8FChcZ$NlQ`t(?Q~ek6z5%&`DNTRD_VonyVCiBv1mm?!M{<`CX1OY z)_{Mqm^Egm(Dw9#F^$=u(`zNx$)#EQ_jTa%2%VFxH`;aIZr_pUoMZ9sT-j;D%w z0M0rj*;q!M6WVZ}*{kax#)_`qMqOOX&%$KL;RGINk z<+6oIYGoR?)8wh;2@>eFtTL6$PoY7%{G#Er{Rg`Pq^-mCr3LEMk!J3k$$B^e$I5J)JLO zLYo)FO2+NtHoJMI=NAfqXH)=eQYzuCh0{76M7JnY`K75j=Ts5P5WpQRw@nrE1qTkL z(p)B6!~;u{hC&C-{H3yeI#bRN)Ur(*nHdehZ@!!_=+oKE>>|3MWSw5jIH&VDzz>1Z z+>}0@p20!|2>9Zy<>UmmSMw^?aLFj@#!@jaD&sQl!m3yVdPO$|kjZ5hG6cBIYJ?h#%Ehd} zgU*IRzj0SVz;VJS0$HfC1Q!5v7c)7ajKz6+eRO?^2?%h(2`HAHMkg1jYDkNbvm)i5 z0d@iGlsLpCax?iNAr$LO<}P){SOB1N&d_o*is?IyvVA5CWK45HCM3Fc$P8g8T_kB{ z$wIWn$jM}O0d$5>TsMJm{Y7She0^bh#w%_sa`4pT{FiU3RU zrqWclRLU1i@^hs^^#WFskt?7H3O!H~k71?H8`>O5fpTWnIyXJ7p?TCy2b~LZfN~{8 zv{)C%Nh4F%<^U1%#na9?yxBONE-X#W+vXstan0pRg=`s10rS#Z%al$pU~uf!yn8Oc zRFva@!SU2{f|jXgOJ(%4Ud!9F>8Yh6+GWp9W3;Ac4JQ%=x9Dq{nO4NyR>iTTWEVkv zsGwZ{KkYbyMn|=?i!=Eu^r5s$RnAUX(H1-Y1s1SZ$#FFY;GQqoa)5bC&REDVdU6J4 zml!p%Y-Dz+Kp8!koiQ+Ai?c{!t%7!$v=LlD7E}ch`gX!6qRJwHSu4&-$txVMBF5sTs$X>@je-bl}_%bk+<$!qvf zv7`dz%xBBi1!GPF?S(-;tuJJOhJdUKK9LghP(n*by}%{tI&&n=j7i9dD~^TyqzNQd zne<@zFkw+Drl@TppI^jXn9PCzb}!_YK$wbEXB3r%r4qVi(O3dN(-)29l32uUkPQYv zh@@U!`AI@n>Dgj_so*g)ON%0_<(JAd^PGhYE%V9ZQfW>t5GP1QfCuRUW|^UjG!Yo? zLZ+CRn#1?NdftWdVg?YYFsA^Imkn1TL$#Ci3W|`ig647nPMUCvl2cjHG*`jM7l0tJ zK8mL`e2bV>XG1@_%(S3V&CDsHI1EKxaTKz%v*@bK;=EEof0YzbStpKQ3IqXXqcjdn zvnX9EnWZu<$AK=Ev_gIw1b^9D$mbn}{1QMZO&VR`lr)H*2$3gMMhY!2mnCKkZc?rk zu(-+&h+(IU=_NepDlFZ7H|_^vJ7uVM3I@vy`V(AS4Y}K^dHv3%>@+BhsX51;OBlv9 zEf%LtiZ!Bw9-GcDXhlOz2s=NK-Sgl%VAx|8JURumAgCLkUyny-icwsIh0G_)czf|za99FK0Nj;4P zOL#v$Ex0g|TEq;8)J2rYH&;s_^bmI}6>M~NW4TXZbg&#TA2lGhMQ8_{vP;v%gsatF z2ck+7^0E=ia$|-R&~qj!CvqmS;zXtlGzc2pKsq}$e>zRj1nGRiTs}Ibmou26C;fH+B?I}!Vz#7+j6)p7D5)~3$y3Qw21o*OC%O~EYXzNP!+!~ff`Nxi^OU?R zYsU?kxtW}^47v}bhF}dvdO15?p0k(dAmb{|8X6_Aj(B;_Uj}8kV7^>PIed*J)XD1# zsFQ<@cbKw`md3L6QV(atC8U=YCJ9L`FY0C*Geo4&%6SJ333?pObP2IQ71)Z54J2dP zQO?hjC=OstuO{&>(2bbP#d!s(?4lRP#gZgF>1ED_Jl$KGqf)vT5*Qj}6_~OxciLSp zf|N=VBZOgc$=pKz6f(FOm#pRTXiR zsVNY@4znOzKCLb-5JU?beL%x4>O4o1>avYdv?bB2)v1DGw^mLV{4ErS>Y?IZYi zubElEBwongZPfDM5Ge04uLIeDP%s?G8fihl+LwW11Wa2l0`tx(ccqJ1jHd}91IP*0 G)c*oqGf;{E literal 0 HcmV?d00001 diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-solid-900.woff b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-solid-900.woff new file mode 100644 index 0000000000000000000000000000000000000000..66d6e9e428706f82279e0cca7215d667c2b74afe GIT binary patch literal 55484 zcmV))K#IS2Pew)n0RR910NA_$3jhEB0l@G80RR91000000000000000000000000- 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 sYjPi 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 z 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 ZQ6lrk{?Ty>XIv^LJ#gTEEN3_(004O&Or!t+ literal 0 HcmV?d00001 diff --git a/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-solid-900.woff2 b/web/src/main/webapp/v2/src/assets/fonts/fontawesome-free-5.0.10/webfonts/fa-solid-900.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..84cadecde7c63f41cf3bea37d4556829cc2117ab GIT binary patch literal 44068 zcmV)1K+V5*Pew8T0RR910IVbc3jhEB0l@G80ISjf0RR9100000000000000000000 z0000SR0dW6$bJfi;4FmBX#q9@Bm4dIz;BTP1UGgt@8FDh?dV8|-;= zinUd!g6Zahr}H-Ey`%!&3UcbV_J{`<%T6IPtA2#wfjIWQ-??cwMiPu{jl0<}+M~cW zO5oN=o~Pfho&VArB+*Et6w!pQCp?Kwzae5;BMo@q@wE3lNS$zWvh4^b2eCbfNxKu= z@t^=0o_AYM;4?mBD+0J3k5is3CN9rfqAOrG7V#zc#$TX7L z-s1a}u1|9RO;WYF7>4juPC!@H@O=S1yFTsXa4lV>YX=i%W&>g1r;r?4o__v+1^@{7 zwyd|Qc-ebNGW&7PTn`vtW5!relHC0rE9dG|sTC^e1G?w&bfy6(F_gjZ=h|o9)Ft|mKhOd4OY-4>SC)j?wHu>49gp^y+6Gir^y<@M z*V*^r5)LLHn}T8uiH<3FTsNSKo3xaGZvSVh*@6m}a_11~cd9NFokOe|7cFM~pBc^0 z&aRM10ZS4lAc_VdN(Q5#I6EMDyF*GQA>DhToYGz9$tf~i2(flk#`t=dg`fTUOZol1 ziu=p>m6i&AcS^B{MWB0F7E>BnFn|Gou*5>(p`snlTp z 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

ZpqToa`d61Sc8WaH%&?MRO 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 z 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%0AvZ5ipgV#p+E={s7rJLm|mvs^hX`xae)|RSF~l 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�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%0DVFs!Si*8cj%yN4HEYWqw*l2M|mM0 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%0AL}5|@Px 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%0A{<;Jj7eG-0%m&2rI^hf?Zi?i~ zSuRQtLS77nP;>~BJN6PHWfuBdgnBt~whPuRjWK>~H&QfY6LR-3w+EQYNGZd(F%hJ# z9M4&g03S}MPsa#L{34#6KM_cw#97YGl^bZhEd5g+Ge2joZx?E(;|50q#UZUQaOsT3 zVX7n@GYh=gk;hPNc11I#5b3f2%#v3SdPa?LcFgk!$2o@46Ux=SaS+gNb?c!EUj;nV zEI=;zg-X&U=#L`tsRmW})CCN(Z)a<%EhD*eegH*@H23cFAcossk}-2R>U!*#_6e1Rp5V zR!bhdp`;HYv?{MFiztC%ECF zJo8NrZ&vl?pl0fi7n~6 zk6#JPR7P-Ch*DuVOWIPLHd?csb9bSN#i;OK1_!QB41=4{oD+gda6RDI@yb>pN(bn< zer5*?Piff9#S|zO)WJWP7R<0ULo18P$yAG z&WOx+cG&_+=nTV#2p@dsm@IVQZumz=1hpQT@l@;#AniDuCeMLXZEGbe#l#@CcvVC~ z2K={TtGf{sm1 z24r^7czs*Ox%jDM7Vs~^ryahrChSGoz}_fIb~u3o=8!wa9mijZnu#DwI6RIQ)W8fo zL2|6~EG7LyD2cwdqZnX;k(_OJ306*HkUqs6eqaViUc%Rhd@7BBy6=o!NW`0t%s7-s znUYIU_RkOwJyGoyzijN9BFSdYiw7ED$yCUVLd;3QiF^qX35A5=6jwiPJ$p%{q6}w* ziAeU3>gN&Ag}1o9xSe8w!8X`pGShvO1_RN?vwuLx2J_hsVm*rd5CtJ!#o{jn-e3~< zL3}zk2%rgv5TLIH>;^ztVbMd61x|0tnF&udPd{jVKKShukWaHUa@woxito|jbq1_9}5P1761GWic1br zEFE}tpa`3kRDS3Z2DYIVM+gWgzH_xfkU?22Xl;=ELxvZH75J1*%9@QIl*Ue~-K1(~ z0(AJ8=R8DGfvvQh417`^ppa-ClSf*M-AXDTbDB*BeraF=N3j9m4t6m`nWw+Nm(b)D z8A?RgO^*)gSO!?CJhg_Nkuw;vz!s>~i_80-<8m#j(z-AhWo6-=2Bi&UmHsym;eEv; z$u5`>NUDe9i71q_`VBcQ$@$?ZowUsvybQx#9gmjw0%b#?cnjy^sy99h`5v@s_P8i2 zgjn|&fZiB`I)OZS%O1_O7(d+QZD?kcWj{q+txG&98U z!IHFW_XgIpB0_G|e=VkDlXF(@aMoxoWx7yiimNorWv&yZw~Cf`AFhP)k!=N+wj#W< z6|{rFP=WVPvG}rO zS%J}Xj!S5n@j5S}#uKr{0tsywOe%aI92Lv;3@OQU=W7~EYm3C093K@xl3s&ipx^rj z)#M@Jm@&jkgCl`7R&)HpB{W;{umVcl#!XFd_)u<`nfaCvQ6|Pl-`)2Egkm5g5CDvh zMBD7KJz_GD=j4FNAJ8xk8q10B&LqRkj43k@yUiZbZ*LGX&gHeDRZit9*sA{zdzNZ7dj!~9q>6BlnK{Ln3t@mNMBY9waLZxQl`|E*xNUxq}cqL8DxwIz+kiSoOYCswG@_Uh;`pMh1_kEFwL}||%Q%MA zdr~Y2EwDan;Y=`iguo!J{I~c>3F_%9hRAI%?MBFWq4#M92D&-7`#4d{E zkM>S6&0wDvc@{V%ot4(3(TFYRn3n6+P_>LHe8L@ojmqnBMSJ*Y(OKcG;jOqb3+#g1 z0m%9yg%PpkQdf^rZ4#-ebHza>Q+OyNbV%X|ncAVuwHy>mR5lcmzE_;pq_2Y!sxHD| zg}qV#7|T_9ik{-!wiLq(Z+ZF!`tcVO_#D8F_rAp*;e%?>5@tbBEU~yfTH?a$I}rq3|Q*1cz$h%`l5T5DxnLAg!YcMv#oCHLajyHQ6tXwgHX9hpHvQ+rm?zYPgdSA`O zRsy%5djjQ&GL_K!AYa=R?lNS(X9htJR{Hn1c@~R|oUyhlO{|e#^c}Wu1^j^-In2p} zU4dKhE$H|{{&_)A?An0hm|3xypT^dQ5@Du>=O9m89Dwb-LMmenRtnP7uv@vwGmX-d zL=61(h-^C>8!l<rm{(O!I|xpIir;Ctf_f-7vw+D57SJDSP~qW>)P49t%ww9vih# zy{J_OrP!HP;nqPjZS?Hg1*+_PkVzmAvUUi|i9{Yjv3N{Z$3!bv%w3u(g3tyWfeG}q zt^82dIfG8Z=42h4x%^<}1T9NpMCO12@m|8eNF?jZqvQEZ+e4l`h?AiTwel-(c0-;wF`0#L6;n*>&e#CksYC(+lUxirTSH$+k zx#f2`maf6-3r3VmN{+l74B?IZe%GL=xqk)UzB8EmiA@!f{K53d~g_K%= z6IAhcX#|ENl1=)93UXX}(gy0BEIkh*jPwF306MT_14d!V$-E6t6v={hm&v8Qai$YP zXPNpQ5j&RNnm0M{F>KI`OE%S#1dz>lBVe8bU!fTx0K;Sz1!@oD7>&*vo$D5svxeyZEGtvLYQte)<^B?4$#9Pzb)9Ez)XnZ!WEYp`=Ela zXpX+^Ir!ln9LT7nO!v)33&&?AS>*)rDj_sY!vbIGV_(8L5c>-sM{f=D8dkls#fk=C zdwgHuLlaNR>zV@P(bQ|OI$c34lk9sueo%psY>4tpdLKzVpr#VV^`1;?X31b$U=28kjh|lR4V|pG*q6Mv$RnJtx}{ERMfVvVAA zMZVZ@XroFucKm~j34a%Ro1My7#L!ra(X`%aQC!C|KObdt>%;!gk(v2pV{=7{h%$$< zdGWS)L}U>+r^_AZmA4(gQAY~qN5AXpUKuE+M?TNyw=H+)2zg4vn z`jaJm?ox36Y$r1FvI9l{nFJigWNN6~bOW$!>jG9?xQ5IIOs8o??`Fg0NOEw4VZ&ft zp;_Wxjdam(w*Z>vT$utuSg`MclqC30nGK1<`0+LlUE{iehmAW#ECR^NB0yBMs}x6) zI!8_-^ddAoz@L^GqHVKS=@YHW1_ZYw*0pxsGK!Q!O@b?zVHgB}>$MqAtXG4cJ(eESR2qLr z8yf~b!$p<_5D5c>DfY`*`0vmIQ1S*;CqCP3<|wSwa;p{C512kiK%a+O875BH*kKxg z)eOrBuz?if#@NxSPwC}u?4+c8h(E(qXa zT(naft8t3w3p@?u*Yx58m0I&K)1s!tJPl5~!7|RDA54jGDdt|62@u1sEV3H4E0kegm=uDz zY5zj)S>1plXoM6UVFu0a{t${f$dfy@;sIuSf>op%I^2ysJv|1(@!y=#kbiSrTmBJq zzrp!p-nWysmaEDrIj>u4GbRZDq7;Y}H3TH~*gU>_V2n(2PXZg_XE9-ssU{!{;xu!( zrOAFLGzBZ9ax>II*g11M*Bb|_mk5Gi?MEd^hL>kwKvruyOG(a^nc>m;PnU4-dCG+Q)SpBBKlmuJXJ~-110=UDt z+8qg2YR-!ZH$xK=SCb5jJH~T}*6yGhI4?jlqVkMxJ;je3cJZ#Mm58e)maJA@^C19b zU)z&{^brvl$Rk(+R8O4Xv{{kE=1PKN_zZa z@kk_t=CLiv1MO|OXRFkzPe^Oi_Vgv(dV>j%_`2Xb8??S*7zpV)p;D{U>`UllxS=;Qh z(;xDDKw1T8P>WOFF?U}mByUi~g}ZO;lvel7Q~P`ZbpuL^@Uq|AKptrTNp8(4oN~kk zQH-PNr`ia5?!>?#u5`eXq!|$b)Ny(|L>^S&jHp*TBnXq203x7V^>R}^n_lrpojGRA ziIFS=#_~W2~&~bVc<84`Da{?z{Mzj z4s=ev8Y4^WAHAWVfG??7@7nN0(=%q=s)GML=&ztIXa*tEknRVG*zYA{xa~dC=8<5y zzV>$T54kl#6v9j;EJXfWZmM8V53`7X(#K$zZj=?3DJhP~n8;Eh$^11IWYL!EsLV#S z!DAc8$o5_umI*F;gsb5-K;-~rNO;?!#C5lqiwB-sXoL7g;7@GFWk*U^3pKn2I%dPf zp%GO|f{Ky2lf4TViwy&e#i%F9v1DLQC4LUKga3zK+d!bUfn*TLt*~z#?o?9*v~eSK_a%Tv`ZeQCr7*xzK-(29AGF6BSbjQYsO=I}b3+*lM}A7eb~WRj`_A z3R1EeuVpYuhrR{)>e2}a1>v{a1z_AcB)}#}ZRt!){a1=5zk&2q)P_NFrHGWy{b60N}g_ znw$i)Wr6;y&sTW{h&FBgJSRNMG@4TvO}>D{@*JkkB_P&lZ(7uF)biHYPlzxTpMvvd z-i&N`_JUrfU2o)YUhLpZxM>lkgN@X}XWG>eCD+KQx~L*33o^c5-^G|`avgO2S2Eck z*cGg6o=%%*gJ)v~*Pnuys)9fv5X8HH7ut>fMGr;?T2VNskj$h;ypN8)9N;LFHcw#^CnbHLd`rn zB?J?!_3dA)TXyAq^BG8w_tq5rroK@xpbTCc#hY767=Vyil0G`~Y~8kDW**rJ<%6ptE z7M!cf6?n2kqEw5}$s;i=kSM)_MTn6SW>v16Z5R1h(ji&V7($jNBRz$hr#5eRita!g z-ViB-h^&FZCDA7WtmIkZp#aq9Tge}z3kJ8hd_)4E9Vd4Sj-R^JL2y7aESSn{YtTiA zfLHQQu}Oce^s8LuWTRZzjRc8IO~`kJE=!$vJtc|ld3Ts$9;l}bkUuQY=h#O1e0h-v zYcN26+`9_x?+QIlw22eC>kuk*5MwR1J*fMFH34r3g*NoI!=b%Wp5jXJtqJBydi)X* z!j>;GmH^|0dH`Nf0*(>o_GxNBj7vZUzTPPI_8WvTR8pEXsVBj>X$SH~K}-lcK%Dyk z7qyb@;bJk1lrKa#?#ZeHoCBVrvl__ld0MpLOp**YthltmR~A+xvdS)i8c0&3rHEV5 zt9nyKhPgajAl6>43}%g8fFK0Xb}5ku?nn6)XJM}le1=YV#>SR53PhrNYoi~S2b_HV-koH53CF(b^mBkI5tu3qMFTwfq?L0p6gW%v(y^h1kS$t z7VqJv888DI5KPue|}C$Me_ZwI!;1#0{HnB8 z-dG=#foEX6BOsF(ymO02!H=_SP>)g;fi{%*g{3%zlWrW^`jF!%hkk9K zTtgw*$T*1~c!^dDd8WLej@r2gC+N1n+Q z4e|l0XX5C1dX?OI7+@1(7;?+496zf+3!uvxli+A$c3eMgu%OF<%o3&Gq7~-WIHu?& zP|C0bwJRu?%DZ1+^|n?P!>srS{*HZP#ktRb@1`y$Fhr@fenDdCN~}HuOOy%6V3&nW z(*um>AidJDA_~UiPF;Mjv7n5y_W~pBJcC!--gbJM4~?P)c|g|Ovqj1U5=J=W(1;(p zAzmqu5e82ce{PIST1td<>oO#EIrYgXXADRdYTA*>z%ovYmrIq>IXD3=w{~y50BFOI zl@$9e7(DjGqFH}X$eEf0c=`( zj!xvsDw}gWwo!lXOJc%#o@G3UKWK8{=@sIeP(m>*rR{o{Q*DsL^41_~VjRPh#u44Y zzY`(kwl4?B)Cwf_j|ze0@ebt{AP%a*CR&RUpBn1K#+1Y%R?a^L#_0wEsH>9EW`}3^ zlCWLm7mo1CN{6rz!2VhoV;aiM75C2~b`Wr2EHeWTwDsd9xZ+S2#S!12SkIy)AtTOZ zWIO}MXwIQ<;-eVZb|F$tf=eJy?`HtYcx9hQVSg#A)YeyV{5`oqwp!7m7P*1AK^NT! zBVvG95P|(bRn7Q&dUn#ya35m2YlH-OV%N0X3zEDgjD&PoZbP<)P* zpeV-R5CjDXH}e6Q-4+P|1V`Kf=$A?k!JL#GwuJ;gvqPET0q6cba|x|rwS?SX6TrY2 z0`#F?H*lLussl9WQvbISOErNw<1)K&OA&A&PuVq2yCs0dhF&lDDmx{KT(kQFY!awm zmRV%5fILALo)$7DU1sq|zwsF0Tnp9tB$0yPn4El`T-0rZ*t?aKkqdg@VBbj2%Ad<} zMxijePjDYc!f|GSWub#&x>p|fNHz9Bk2q_k1;k7f5(cr(P2@ruE^KQp<42PXpOQL+ zrj`)N+}y;3MvA}^3Le*Yz^;Yy%|Sbk1GMnO?qgAueF=ea4+g5o%8L>L zwZRK_hA@5YTH_JRDNb9a7?d*CFDrVm4XvD=mxwF{1$W}q0YA{r00=9+qXIa)iP}zB ziCGEbfk#Pc(poHK=%F5~ANmo-<*@|#r$HHL{Uc23=-roQy_chCVvnTIC)B8@efO-U zys5VAxsZFtoxZ4xcCtKh;9Luqsd^R(WE8VF=h^%LUuZyD2v+-nVnOv;e~&|PR*+2T z9<(HHr8ls?jr0NHnJ+4cuz;8ER+Mf)esL8*K~3cLhCRYmN3VKxZfa2y+Zdf z2_ongN5QcDkmVyVvhb4&pJ!DE!p0!qzD&3;E`+hB`%Fe9@bxq~VW^sdJX4VLwD|%= zVKzP3?jvG(@hsN7OBjI6-q;0i3Qk>7g~Lug84Zm^v|NpNANKYB*GtA|oB4L|8kR&` zMf416?0)2rX01zENzXn|c^C9$*RlYItM$7k3lzH@=mPANFQ9Jtj(f6(n>F<3L^*Y~ z9fd8HQHeHy0nVl;zlWOw6Pk2DAoqLt3dLaQN$jE5Hu~bB+*Xnze=;& zHRDW2QZdejITF)s!SfnQiTV;9WY%o`sj4L^nx+keg`25JfM@3t4vbrZx+GTP@J*{~ z;JeqAU&hoFMUtOr0J;wUL8M`NL!8e z{+j;@LL!MH-_0KR&tqC^@A0}C}en8+>3rkbkvJ{27EG}lu3>HyPG!o?|; z28n}NH?9UqRNOuV@Eb!#h`4DC`BgGPpWI;+4X~Ikl#9ycnKe42NL`>(U4{8&D}h`n=uHo`tbU zmI4&~CSCFjwZXZE;P1UlkCa2Qa@~v{jfoM1eOnl z$Ra1f!AyRVpa8vADt8zw#Q}M*Hkd8?C~)Uu#ZB*@o#4?xkVGqCMwCf#tmV2n8Zgu; zghJ?hNOhs}GYXVjiYEDu0PkRqaE%!OE*K1jB{P#GEx41B4Fim{sXmuy%cWA)NEJdj z(2oT72CV59SR4c1l6CMP1NnOaXwaBJ2f^1$%w|J@ItO|lur<%$Kq)gM8Y*KfT$JhW zHxHs#Zeg2)?EqemZ8Nq~;-_HZbNNFwYz0qYKu8 zvRz2&>?Aw11b37Y0R6-!-c13RQ?D#!3%^J%fQ&G+c~C;ING}SF3&8|2Nz|BF43H>% z&|1aiQQ{YbiPB%pc!0kG$)vt}?!xrGW6T5>(XKnwR88OqU;BDEd8ZXNfGEg~&&Efg zPm_pZ#!{s;QMZPkutTh>g|jt-8r>A`@qLYOo{tAdk`R)_AKSh@IFMI;9+Ue)#MmjW zJ-9R_)>VJltAmkc9L2BGT1$v=a`&;lBF6)|DFRcHIIS(1RbTrx0&9ZQcu$SDi_rKH z)!glB7Ng6y47r7CPb#&8csk2H5do|YmE}L1PT;vYV1V#{0$tD; z%u#r80~HtAC{hgfpli3Ry)sFHy1Cy^u0Ip$FhW*>cmW?P>ulygy6JL^6jvx6KTMnh zIBPxbQU#6`zg{2ZQ&!|lGMANrNqNZJooI6mD{o-rYpO(qiA;{>0Q0T}4feK2I1Llp z`!M8!y`T-0VSCFsl)osLQNuU_!k~?j^ohU>>nvMOpa~^E^ByWEE&1@nX5kVVArHNl zq$>b&OaVARmmTxZkXAO1A={!J<|){;xIOJ-do;U6An@sZhpO;nV7Fe~P7gw`6hB?6 zP`sU@_?T7oou8}gLhu-hh@C*dXZciD%j5YCmYUH4-lkawy)2O{;(~*)6Gv|+LS*j{ z8qut@=zf4UWi(}p?T&3*nE^i=Y?#F=1*p?&5bDzJ$zrOQw>+)DBM)0AxrBG~k=x`0 zt#+<5s4zZkEB13K&eOmdDDAYz{00g-3R1}9P_?e&JSkfM+lZT!D3}0oBvb_2TTfz8 zIwN^O>|x=VTZ+~(URdKlZO_TkUzGFIW4wjwn5)087F@V2Q5uA9z67tao`tUG zN52P8=UO1Bb;DSSx$g!4BzvvvIR6}x)vETR(30) z$FY&H>fz!>z^vX$2Ak`8IvRu-d>_H%51C1}FOd|S9;iw3!P9K~$d+4o+tc!Xhm#(N zaNI7|+M`UD?}^0=hX}+j{f|Hi_cRhD0NN2O2$CxB(|duJENFzl1Bpzgjs^t2Mb~^ z3yL4jouseqTA_f?`rWGzLc=9-@yP|Ltu)8+REXk6c7D#GW4xxtl=LTXui2`X{i zL+4soi>#kG*e)RYF+QiNJ#bhUqy`saj1fg{9ILV1Yu@akNB>0lP(@7=j=z7cAe~`o z1ol5HyZDwUgV22`U$t`{*{P7h9=>UhGJF^-2UL5np)j9dNXPF|;J^n$r6+L7z073^ zd{fpPVx>r5F)vhy5=z6s4w3>PiKynwgl(%w87QZPGcs!iTkVHwPRmiP5StA`Nv)Ym zbOjK*(gn2EXfG98?Jv1}t7LkTYMvczn9cGjWZBSV6O65pKm0D zX0-)UY_xc)xDL-gLJ`vgE3{m24h4(3tn|n|sB}-p@NbojrWU%tF_vRGpL51$Q9Bgn zp&;S>{}3Jl*5}iB!%gv)i;>(+uV|Uf>-RYvTQQwh>XOg8+xLW&W(+Q~91m8j!{WCA zq(}L9@t}#qJa&N#5@nECQ`zZ^`Nm72LiB?5%&2c5GThqRPC!30{x;PU;>7Kpfvks&Gxo_)U0oBj5b}U zSa8Kdm=>9T;9{Y!KN~7LbDo5gD6_pLg6NT!upC;f^KIBWPJ@kNvzT zOBF~!!&i7F!P&LGpe|gh&t^acBU`Nt{A(jycL!hz+GoW#zWPeozaz z?25o9GCkKdq$|Dv6Gd8>pCc$+Z`N`=Ccti7jr82Jqs)XxYlsuoIaZm-PCu5IzS-MV z(iLZS0Xhh*h4YpPgy@V2#p>k22!UW^lBRc9dRDo43v!22mYB~F#6Yv%c6>kKM7USE z1-Gun0MY0X?Jqz>oDxW_qqv!9TPErWo?O7^q~ZEU24DVlOoEDfZ8M=3kUrp2k=?T| z$pPTfm$L~iN#s35IM5bEuGIlD*}jk(Bq&>4sQpo6G+d~F;fViW<(fw_HL8%2MYisXtYty?~sIB3*`WFDHpzGn4=>@+#gxAR8!NHdU@Y#1bK&*(hvTY6L_$ zR*M{#^fFnV<3Nv9MaivOt$`y5e`M4ccgg=o_{D`ldIY)UD+~tS%N#TXlfp?B01DVv z7a*b&r#4P$T+0DzSfeQzgml>Ur-%7*u>LvH#^8#O)^^S70=^XO^S=HQHv~tWNi0$}%)94y-E{WR*;8-TE0BokHuj*h->EAT~ z5jH5%5+y*$Qzrm6ns|Uw9I5^~C^RJ0PX#ax9;3r>VkB6vYl2EN|E`I(ZcpI z${cCly|d?gXI{fjRKVl!!ge%4#kkopEnz5W3<_vm0GjwjnluRM$%lcp)RKfTU$Oe$}TOM}V||01`Q3J1Wu2BQXKj#PlLQ z?#Ze^pzVzNnG*R!AQC*eNak4^1fGga3jqYQ1#VCKU?81^aTG9!O+xxi1+XjxiuI{b zID$5KR?zcKO9aR~dIG`VtpF%O8nOr4jzNfR0W;OIT{Ltw@<9+DU;T4Gz#sQixHkP$U|$rwU5S2Ue)8qk!c+cU*{E zPhC(>Yw zqe5)#11}3Smixm5wL=$B(1^ zpO{@Ikm4-xIEvBOASS|(K8Y^+f?}o2KzxG2iZ+`Ib5U@gQA*e}D4_z}Egd?C`Hb*Z za3#;aHVh!@L^IHff)IMW02>D zI7FDT1&K)lyAy4!~_B5O-egZn!t|z|C&R`kL7NRKB9Gwb08yy|IEUOh=1bV?;e`i| zKbuD}!-*a;MDa7C8ZioB^KDXWDTW#k)!o`r4fp9j%k3v2}Ov6WJyjmVfhqo z3y|8EN#pE-j60X(1HKkJBVl};G*^?PT`nwf74u4;m~{OuA%n7@vHp=UQZ_P+mj>30 zhzQBEUqac&p|KtW+Nl7d&}uP#P!jTBs56<(OtG< zL~3#z-%bZPd>VK;s1k)BcLYWPCLg%z2>jQN1<98hPzngj_qoYl@~+CaaNuZ4>NIAG zthI((3o4cOiX&8)z8bBVG#S3@u~w?7JH>Ot+0D+6-deRpW2}-fdzjPcOPjxX0KtoO zZ+epuV!hH*L^$3S9zj785+Z86sTuZ+(h!s|L0?2ruuPyJ$7R^qpMnLoW7kVo_OM63 zLX^|GDrhJ~_fu7X0Ttw52%%*ND}uQr#pJ=elg7f?31L#S8G1U;vNjdEtKR!68O&8? zWHuEiTpkLR#5ki;B{5+;LYmx?ROf(07{dV6b?cCX4GalJutpj&#xzlX|CfmIjtudg zx}`-}enuJKHWC2Tlw@u$Gk?35)6inwiu%YKC@;9dIwFoyKI3VGyul2_l`#U^oT0I7 zOuywq%;KUE%Op#*EYS$Fhwsbe&N44Iv19;WQ4`YlcNU|xQ{M9gw6||~b{-mNf$pR= zWC>=7i)<;Cp-2-)ZeX-T_7satIWi6{G(=y3ga~3?JWx|8%fV(|KRz*94(csp+nV3J zxKxuOioN^*08+t86~Un|f4Ubfc>1ggWWZBAp?Da_aV?mPXx^qLl^JnkQz}8ywy_r0 z?4+#?#``{HVA(qpC-O`~53F7V8C()r#r`%D6?B$2doCpu*^JNWFCx(1WQzzV=JeV3 zVAN2y$^HyHq=5J9!+Jgu6|>sE!t!6#0lujTV^0#~QaDx`OD^a{u{LYNjd+#&qJ~!F zU|3D3!L%OP9u(yF+a=?@0z;S-i)1CbGfWi1z(AI-TSy`;%*>pPdyt0o^)I+D4KQx07%DvSgv;RWpuh4#mYeT-l1LBAUL z5#YaI6P@HQT*a-_@~(ukZ~4VgX>t=dfpnL94Gtg49M_IGd=smq)a*U2`8r%KJchD79R zSQ5}Y{tN09Man+mH+0gZED)1O7E{X=use8!$fO1^;vM4|aTCR4j#35hC+{P%xGC3j z7EMUn7IJ?J{xJA-$MkiI%~nHe&G`GTJgEpWoVm}E@#Ah4OU zZDz&jANDNy?o{LxZPe-;fE~B7RKRk?@k^%Dj56!&tww$w!OCAyjH%BAO9o=Qxk7SE zQ;9Z?33|zd@|8)d+`=@`RT*_dgW2qaOccAM=WWRuH)T~!AF$Mg-}cfZ_{+9Kc}||^ z+%gIfsZmo0(xWC=Q?Fiv=X9kHLP>Oj6|fpGV-~&TBc=`Zlm9f{MG!j}Qvn=4!a{YJ|^6#>p%CUL(?X!@j+!t^|;EL|{Tf__c2}N2<{z zw}QEoEAsX`lxGTr6B{L$=Ebrf+yLIX_I|Zm( z>(_`EMdMrmK)q~Jczx5ILR_hP6Ys4?UmbyGWS7^XMwXPnJTArfZgWkNoRfa9PAy>` z-T;Ud8NSutRQhM`F~{o7GL1N8&iql6w~zrvXQjS_$;SgtUo?Af(v>^$(7#zZV157XRWgGu-jXa(r`LiH{r7$N9XP(LHX-5;(Jt3fc!U@5-E_A2Lf z#0Bs<2+I~lg-ja)Ix|y(@g4)Bna8PXIYl9B4LPffpvKaKv_!kxGhrS9R8g@o0UIc( z(9*#%7G;$c7j+!TlP5RfvA#29w6a66tA#kE2Ohk zi7EpM2GxIDqPSf^W4Vj0$SV#g4j9Tqp<6L}-GO&{0@_Yc#Nb;_Vnq6tg>H})mzrlo zAlpKmYeY5%!F5TbP*f|SF}J9+{g4KHc0l+tVx;rxy$E=|K z=ENh!3xF|Q@&G)}@YWU$R@x?B*)_ZCs%%UPF2w~t)U->IU4SdFOfEXB&f^Nq9Rpqt zWtuAh)0NgH6+z)+4i1$jq;2fK3tZ&rwYlQ{*DBTrh{vTO_67t#VRzt=iR55!PMdOK zDdw2cdKtZ&CkJI{sS$J2rB?{0qqH00DxJpFw@V&OQlA>cU}!irDTCf){`CikSXek4 z!an;Fz*`Jd$rM$+a3>wzLb1s{2p5<4;! zo|>E!0(gp0+q7IG7hRF^5Gv&o(j4&s)3I3cpzk~^-A;wJ%y#ZfB8wi`{9bUhxpDaXebctp4G$y)|DY)~1P`0N}P zR2Oihj&8whT#d7n=#kNTpn6;EqYQAXGcO>tD_G;FD9H~&d~ zQp`_I?Fy=^BxeJvqt8~>$oCd*!CYiwt--qTh}iC&bXMe8ejg(wp>;qUw>Xa3$iqHC zBDsLkJeKN>+U_~}E*APy#>qj>Uu_@ZSd4K;^+Hs=`hZe53aIj3*yE=~Oiq+sGaC~2 zOD)m);{IbiXUrw7E9Q*Ia(B%21Xq;eSy`bUml<)6LlN4G#$TG3u%^PuEbUhKrb&}y zj7K|MOgtCS^=Mn)Q01HJCWkRqK@A(lvy2{kojaQ^a&n;w=kMb`9{spkwE+Gi0qvJS zQxJO@r!K<&6`h{_UQ2pz&2HJ|%J#|0I#2#{V^093!?J8#bW%5MoSSc^sUIg0NmCW_E$0Wm6MUfLsC z#;l}_6AnEk$HOwwiZB2-CMw1@iL|Y8(Pco!7$gig@^=WMY85!yCk#M%Oi?hU=vo=) zeEUd9+q&T~TNK_$5F_|07<3JiE)t9TOYlZOk(P0N>iU=$Hly*d862*A_f3;jFax|! zLXsG3FRE!A@u-i!O^_RPs_J;$Z9r!Y8%Deq@s;KU^lz9RETlS1x|}*9M`z^`%=uen zbU3fNQA9O3crYhP5#?wqOop87j?VvZl@fc^>zIg}T?!7Xz6az@;j+=|!%g8HM5Cne z8M>3NK(4qXR<+RnV~`RqH36~z1-Sv(KxXs}IJP^}gd|MU`dwn}o4+z3$e#-5zmCHr zRk;~mcdH(3eXFewjeBvil=KJvSZMp&M?w>#*Q;^+PUvoSyiQ_`_`pj{Z?}OWHb**; zofv-JiFCMSt$K6(Na;&ufaf5{C&+0?vbN#~BF8|IDF(%7{VfS2EF=`X`;TOf3{IbE zT)$)|p~Beo<}A8y*=pzzbILdohf4*Gx%4;SiP-?{&gF(;AZR#`__T&A^#tQO^>e%^ z$F2mO(g-Fz&g)}gYWDDa#c-P7-lWUWoEn$}t%M8~2=oPG2jEm**}-ThsPK9O{B_f# zY)9OIZyQ9*h9WO`jrsEtz|8-QXj|09VM?4%YyiUv3~ZDNxLCFx{=pCOE88e$H`Uv9hXCKX)cTvkOJ#OnuAZlh^XEOT;dH7-15rzZxBl$%|-Yg zi=d+g5G6^08ztg?n~Z3QYffCAB_U`>uYF{m%PZgP8S{m?H;*i}PuvSxuBR2@Cor9V zm3CP?zKK9dMu){xKP*mt{MI)jVbOt_>ieV!aB$>sppm||BRW20JI9MHLK>OCiW|J{n5uj*A>qWG6BqAoRoZl$Vk-tw_$Qr5qyKH3&9K5DEsK_s-vU>Zj6kk1NbMPiNu z6|J9IIzjvf$G$V&CLYQ90{q{^y(BA$*W_6AZqyv(bQSLts4sFY?W`9O%t1COH$IJ& zVSvmJ$26?zHD^S05Qt}{+-|*b+{j>>*B&H4I;4p($xBCmB4F%hfWhG>ed=5T6PV$? zFmt?CVWOpPnt`@X3ULK(kZqnJ!>z3hR=^~x2w6W52~&J_d|EQe5}GuHN|lBv(3nv^ zlJo=cJRD^Z;&6sG0d=EIwpQNa>Bk_T%byBE!8BFucS+bii3>2YYec%EjbsB z=(y;g?nc1?xZBJs6Qg5lP)X8HR6rQcB`|+V4H`pndMl(g!mc}7C=;@ zB@dBHu9v^j7_1RsJm_-pwZA}BxspA4EULPt3antg#-NC)V9y;IJY;Lpvf&~Vn-SW( z(Jf4RCbcwBiC=4DTH~fsQ-N?MF>neK#;cxX1-G=@pnFmuVv`evv-U87Tok782w119 ziJ{W~yce=GTYHY25r3uD5cZ@uxZg~mT@-#Y#wEI?!Zria?6sZJ+&DK5c91?xSIx5~Mn8?%Tzu5MEkn>+}V{ z_I?1mu{V?n*yP|=cm|Aq0tDQ{i&6-cYFYLfTE#+!`kUP)%xD*16}grCkt{9fi4l%t zC{&&`N~XcusUj(GaoiB|N)jZ8i+D3h>8i1FpV4+3TLO22PgQhcd2qhaoC$(xTpxJ5 z+VABPd>_B5g#Ds!h11Zn`sc+aT&GRKp9%^ykYRUz@!-pDH?$i8<-92^8pPmRSeB?W z%PP{M^Aa;UC{GDwLOiTJ*5iYqoO&X}fRUU>$4wDg)vh$7RYmD=M zPzpkO6IqY|6%j-K5zHMsXl4dbiEEJOAn11>El8Hsd0@}TQ&%%=K`Ki}LE(x9JG#}% z*;{u)aPzVYijbsOfP<#XNZ7GCQpAJ@ha^tPspdJh((rvCAVYuwaitO&-zQD12p?dT z1vE4FwXkb(F`~X>A)~UvpiSShwAZCm{ON45xu61HXt@DT-J^2D_@{{?*?%0T31o0K zCVbrRifD$6s};LJ+9n^Vh{*8yL)pg)4{YG6DLc9F+1+1B1b&YEI=OJ$PnyC}?7Fb@yAV`kij zVfOLOHTnJVm$crEWuZUhrJb0G?BSF^JedjEO}o{f?B52Osa!T?kesh?8k-f2f@N>? zA-snm&`8K@ghq{t&Bbl-x}>vh4HKGC&Sn{kH+5wW4fOIME3pjx6@2Wd#0Cjt3}v~- zu)jCxC9K22_-JTGr2HKhlL}z{Piz7dJ7A)4;JgWv%S*R~;|2)$U~+-r6{+GY!vZ)H z!BE{3lfVuIbR*Y0EfWUEq2uT?cN}?&5r{35Lg4+T4d!1D=ARNR1E5SB?&-Utyy#m# z8%%;oOf?L*#*jLBV}{jG0)+MFS3!8D!T>iE5~08hqlKd9_-5_QWXTD9ZF5fQHURX| zK&z_}5g;6)Jw`fY)uUlyH|i*;_Kv>SZv+ks7g9rC6W0GI&LB}xaAc>|=#=AonxRBa zXdS+pl#tOr3U>l@>yg1?v=vM=5L$mtmUI%}pglf-Kfy z%I@A*c+=Z+?DY3Uj*zSgK@cEEAk4B!LtDjKlavsSp^3XELVB=?vSMtb$`c5H-o^_9 zuF;`?3JQal)A?HGR__qGD%6sqM9|%QIONf?QN?U%2kFc|Y5a!W<;0k9kaxb73`@oZz%zb^17c17mMNGeRCjRHEg#k< zxQHOuaPPx>`l7awfJv^0{sIYVPaCDGefX5`ok$Wu2AqDg_a1JE$mnq18DpT<{7q$wgB^hDlD%tqCtxJ&c2`>mNYF7PigbJS zS_ubS6`%iS%K9mh+u+IH?K(K4Q3^2ap-o&HEPArUKp(}(y8nSBKwyHB9#YQ~Y;Vb+ z7g(h~aWQVmZ5_8lS_QCTX`N?yJp|Pglxq20S5Xrk8&C@F1xV8#M$CYV_?7i0rWuQ- zG#qU+F7|%p)2WP_ zK~PA+UL#gzZ*~Kp24LS&Q7Du)8N!1hf_jrQ20>yB5F-Ph3H`)}ob(xR_Jb^a&+e45 zyn}OGO7YgdH0i=q`jZ-vE61Vhqg-Ob@f0m5*V)S?8`mOi=y=404PJ7&3Jbb!$KhHuG&Ws;@*Tzp4WQ|ei$qus{`kQkHGa6(ki!YXM5Z;L?OyjsM9WNr?iWptsS z3kXwH@i0Imw;)3k-Re+T*(`m2(6kh?L`%6bcIpz9@2s8LfF%yc++R^+9r*-c_xkxA+5}zZW+HJ znT(lawA1ZB{+yj>N=6*ehlg*>BL`b##I7$^fDi4u|XdoAJG9lr15PP<1*Y zqKQJosu~ivysJ|^4B(Y;z^Yn+vU)Ki0_hr6=MhhZ`x@LL3CFxv>pQBS0Dr@cJA0CcSGZz)OOKWXZjt~xL3b+2&58hNcCaz8 zA8#a6D<@X)Dd)Iq%hSHsxwBroyX=;`O5u6)h}m^}2uxXbHahhsJy)t;X* zc(HlUQ5|rh`6OP9Gm0OVvEpbiAWs-yfXbu_8hv$eg3uB_<4%TP*pFl-OW5S0&iTky CFdz>A literal 0 HcmV?d00001 diff --git a/web/src/main/webapp/v2/src/assets/fonts/nanum/nanum-gothic-v8-korean-700.svg b/web/src/main/webapp/v2/src/assets/fonts/nanum/nanum-gothic-v8-korean-700.svg new file mode 100644 index 000000000000..25dddff33bb1 --- /dev/null +++ b/web/src/main/webapp/v2/src/assets/fonts/nanum/nanum-gothic-v8-korean-700.svg @@ -0,0 +1,488 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/src/main/webapp/v2/src/assets/fonts/nanum/nanum-gothic-v8-korean-700.ttf b/web/src/main/webapp/v2/src/assets/fonts/nanum/nanum-gothic-v8-korean-700.ttf new file mode 100644 index 0000000000000000000000000000000000000000..fc3d365f7835e99c2f8e52c9221538f2a6cf5451 GIT binary patch literal 1249028 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%0DO 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

geIipMJ0nF@BWg7sCfMohJgkvS%f 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 ruUn!! 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�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%0Abvad*np$9- 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%0ARBbuEz3~HoL5q%gL_%bDx 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 FB-_a#wv&ms^)f@|%S|G+P4 zZ%`mE@Vn^HTvyR_+@jKjsO!S4%Xa&a&qVh6B(tPTEDTYJ!$Kj1Xilv5&kCNC+ZR4G zW*Zl`@XX&Iwh&A*$P2-aEiCYA4DR%*2=(Pcm}zF~GZfty zsW|G#k89|9KU0Uc11e5+z@d&eI*`BPCH!=?Lm{o{=vX7Mo^1sA23Q{rdAUa{d>z-{ z2)F(QJ&qfPGiJH|LS&BYK}0Vvj~5YR5qJgV8u1y9lMcf|GE>Dze1@Z$*k>qJvI1XE zmwjx+U;qZAhdGW}_tuNV{X2K$$RQGYU%k4M;1g6A_v0IljT7X}4!ZOpc?5g#heqBQ zLH?1K@DnTT7#Z1t0Xil33w;bg0Z%W8(5J(f@=ZAuBYcvMz48E*RS<;w#?hSrd8+-J z*(vF^Z`#rfq$jVlr-k<9-KF9Ab9Aq1YJw^C4$_lX=&mww8u$#)viu4X@Ix=%5LaIL zt=(X>&i~w&oNO~Lbl!a)ciuTv94~j?rSM`^sPpb4h4_}pviLzEcal;ez6T5N&oO71 zbIgBSWEwGgyLQn*OX{|^n@@e^;jf(i3i}nBf-xWW9`8OreEhECj~wSU$J34@_3`7M zA++&X5{dUpf%TB=V^SE0uf&hT%mlt&+M|^~7~;;HI?dp6{M@uRj8GaT~DwH6h*XC$<(1+HkJ_gH(70q z`#&||Yxy*C8;T5PjGz|T1q)Y!Ew?{MHm=NtwSZ3H-p`-g&FR@cXE|eMcWdH;m788) zQ?_8`np<0&(+oA<>X4Ot<_;>5YD-3vN3 zwH{BiO~8TG1+DtcOzf~1Yea6-ChD)hz7vn2l`R|e5kAu`%#XdTjpI-{4z_XN$Kj)K z_|I{8Z5*B*hbPA2=r}ZukB_52(#zi)hiAs&@Ho_ukB-lbvnBMW#=YYgTH(o7XeFw+ zpMtzAobAXFYMGs1FJ z=_FhCx8k{IfgZo8LzFe%I7?iaUc4p`DR6)2XsADQCFu|CA3@LDAd_6aKhXT?Y8otx z1&yHBXSdhnDT5uNITbkc=PS=<*kIEq!^ANwn5~TeB2$b}s;nGHPWJg|t5zmacV3Ow ztc6Fkkg3hoa-BpT4Zs-P$ihXocSZ`N#meGu6G%%Y#Tw*(PCS#TvtwUxKDu!T=D)qD zwKFHXrOae1Yst=PE;F0Un$e`O!`~X_UZ&U8xWdl9rL_s4y{BqHK%I*-XT`X`}ZF5t$!fHC1Gt+LD-(pB5x;ygbRAOc z3hp+tqZCP+Pgg47x5P)7Phi#Xo=$h==jak?TMvwVp)KoWmE~cAtPZ!VC%DR83xe#n zbQ>ht(luU*Rl3O_T%l5p$v>9Nvcd^fZ*UrJGqd?To`6fEgSDihG$ke`i@Y)8c$wYa zP)5kz!6XrvK<8-iG@v|3l><3+9vy0M=

rVg@cfZxZu;EA}mUuGMnW)#Zs}r14We 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�m>p*4weV--$oUfN5GX_JVOP~th$LYL?asWAQr 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%0AY8 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 z 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 F{|C=*B`yE} literal 0 HcmV?d00001 diff --git a/web/src/main/webapp/v2/src/assets/fonts/nanum/nanum-gothic-v8-korean-700.woff2 b/web/src/main/webapp/v2/src/assets/fonts/nanum/nanum-gothic-v8-korean-700.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..9ba9556d80b02c712809216460dc1c5d11a7faf3 GIT binary patch literal 434408 zcmV)SK(fDgPew8T0RR912B7Ew4*&oF6CTh22B3)m0RR9100000000000000000000 z00006U;yY;2!=EXj3W^c3d)KA!OAEL)Fc1_HUcCA)F2auI0PUCgfs^r41sE!($f%| zp{je}Bs0m3Hi|sAoeZ^RRu~nst{og=#!NEfqm(9^(6O1BQ89Gw+Y^$RWX6M( z(rJdw%*-~4l)CofjASO6@#>3QUuI}BFf*e<>d4U?_jebDpaJip5Qy*AMbK$hRc0lO zYj<})CPbhDM(1$RDgT9JCYkYNp6gP9%*@QF;9WZY9&)@dGSMxxZDuyZsvx)(xzY@) zf^_Rur_<4k!UlwQ|CGEYr~KD=lg6;>?l#4mk<27B$@Fcv+Tk$EvI!Bp|3jCm)zqW} zLmYc&qf>Erp|p2icRFx)r>y&L=(jWzdAiddBjr7FeNSx9w7FX%BY zgD$7OyMupncX#mIec0ed+woU{~f=;KydiXO7PX|2Q2u85#yg=00I0z z=m`WExWi9JEg#=Q_=^4uU*2<4VoNf?{;F1m|1pXofPZf#Yi3~kXsX}c#f0=ZdzLf! zy)dFobq*y1|1JW;z@@mL;8}1@T<}W{3Zd8?6+Yyv9QFnJvUv-k&&1S51!1)aQVxj& zGjMz(xj@j3k(lM)oI&PEr&}mCWwkl`!}FrTUYQyi1_2J3YYBn^GlYPaqAyuuh{uy4 zR_H_dd96+D&LS*U*2m*|nl)%#C954wqybS-u_X;fU_QGEigUC(xsoTigMJ#s=GUqc zMgt!*r~<>v8*LQxnh17S5J3WymjQeB2{P!f1jRC#HwW{g1ZKA2Rlq^^v@k>AGFL-) zwju+x=nz3r9nfA8WIlxfDjEK`xE8#80)YqtM9`RTZ&YB+aQQ|B>LZxFwRVLN2xtfU zT3X?wCwSf8fcX@rLp$PoGcdK8yMw!XbodC?o){W~>NzzE%@Lk1;B^!Ns>^k#6{$7` z3bk2;3qyTE_?fa0D1`;$-MD7-3?Bx~Wi>>Z7;8B~fq&?9b4lB5g-JQlz3g zX2{Gy6{&)%j@Yh1p|!~jweWTe7V*2?VKXDf>%a{fhN_0vzzmCk2#m~j3Md9k4Y47^ zGb)6ycy*4C8yHRSu!VNZ$5VIk+}+*59c*IriF-MY*DwRK+|V}Us#}C_RH;M_tgx)0 ziR^QOn=md@j?9n<5;wAh`qXaJ-5p`53m((Yh)u>=>9CnAwWEFU7bTV~pUw=rz`Ib4tFw48+%0@f+|u41)+9fR0$Qr&(wWb_=*=%+j3Skd#I`uhLdUL?%;*HyMw!X;eHTf zbr_MZnoVv|^7Fyqm{{6*{L=poP9Npq25U(&(+$O4`IDL$AY-nM*p6dPVmrWXleUT5 z9Lgn5FSUnru7*;|MabU+>Uq@j2ro}hZPxdDuK{V0M#TeAAPR!E+N~mjptJ@M?1c6t zDx)xpcwlTactp%dGG;C_VUIJZn)FP_&XL(QJ7Z>d&SbAM^N%zCaIZ77*ZtFGpLds5 zZCs3qj4?4TE|D(wTv}fqFhiSRfJYnp>|YkPu$_OU4g5C$d6nrV2KLOvLaatnL_x)_ zrCXoASuZkw-^b_sKb?9fIgBcNz5ncxTtpd8b%;;Flj+%I-s*R0r~RwwY#EjgJC4oR zx&QyGvwYu^AaQ0w8l-iSsgPDl15#R{lSy%pDSl(2e+{y4%Louj}e73bkH)>uFJn zyf<}6FNIpub9-if$ktEJ9->wCP%q`uqBydfn&+UA#{Kbwhq(S zvH$<4({$gP!5j@UB1Dufh&Bc*8WDkMGH6I-kS$;k#i7YF6a_g$8%M`;HUuG`$g9n; z6AgWHlp?^}?32jHW@`$hv`x{L*726F&Hn&^|IL~8D^zrf=y8c$$th(=mcm61TSdoN zAO~i~3mkBl=-r3hx5onA2v3XeUc8pCJ3!kEoOeWd$HK{yZMxu$1nXrw!Dy^A1_;|M zFcNcd#KH9aQug_^tRF?pbH%eNgBI#6jRsVgimTh&7z*$) z*aqg@>;B!HS682hFs2!U%rZ;1EX%fR-n-c&+&$Lc3&LELaF?P^nJTYOQC%4>%3miu z*qUzl^RxenGibPKs9}a0G|W(8h8o&n!x}txT-W=(&v%fO4yszxfbBhu9tbl`qW}M2 zoArOTjzX*>sgz1mNh(!HP!d&us|=LnfQ{|;a8s%_Gr7ZEfN$)X^_F>QLSkazr3ncJ z4AhvujcC4e|lK*fa;h6*l*;{FOab}MR!)m>Zbm{mKL z+Bxm79R_;#lZ9S>5YaGnL0L2`-7`+uI~JD!P+pSg_RnP@o)^~491DG z&GA3a&+S+D-1px0-W$;pqeeSI1#=)0DU1;*p@Ps-F-ieNC5%E5Of0M<)E@>S*0QPHZ{bq*tW1T=1@03D0M_nKY$8m{Hfe?FO@!KBfuUk$VFOOw%BE9A z=e_5>tJhaN^&HsPjw^G6|DL;TfvUGBGul}gQeQi_eG4*BfuSCbQh z+e%4?hu5RF2g9o1|E;C5BwU09Kpp-IbVOSOV`uTTE-yxvZ2g}Do}&q3G()9YmIzo1 zXj6klfgTfrR}%H?YctY)Z<1Vm2*KJ~q$Kh%vwJi}CUaWJKAY)p@3`O|P{!-Y>%h%1 z8A^Nr{O(t>p}`toc5d2@tv*fh9xy92~8^YpPnreSe?`@$=ymNwPbI3JYhGx-y4rC+3&rQEV&iO^1gMRbB^9maXcHe$Wajxj15F!+ag%lplI9*Y>FaEM2NB#74}9! z1;xFA6i5^>MV-maIHfrgHIpeVqsb|CBDuBx<(6d5+*j%(@AV!c5-J)&0Te&s1OLsf zXtr9ME1P42g8J@|FIQ@p=Yh-JRd(7K6YM_=BP_t!GEAq|H8wXpa_6KmXkun~(&^XC zn;8i-hzE#P1S%i|j1ZF0Ac00g6#-9FsvqEJN& z!GsAF?U0?&J8RG6&2wYw>7CmfZV2&r=j*;0elO8*d(|8+#0-NC(A*kPj=}DxC>V5@ z^oo$$#;Dk++~~HD5&^}hH%dwwRVE=|;si&&L}`=oUyQXsZ}v1~H1-oU#5YkAHHvA3 zqqnX9|1gKsYT2oiTT>KGlP*FCL4PQh)pdPc$#R^s3?*QhitLgL zU*q|&O&hK=*GiU59I+518LUniD*l;|4v`XGL!{yy_m;idwQ^OBLB#MGej6%FZMKg` zvvleVz}!S~z%~|K`8?p6FadQZxrT#6Z786dw=Wp4Th(=JqDn{ zy^RzV6pr=^C}IY)_k4-OR>ycU_lhU3FbK59zdi zW`qDq7-0|?Fh!u!00|_G8lXYa%%}hZSfUx50ZF5V4K|WM;DQYj%{jI@+463c7zuC+ zzKu=u?xoqrPWI0GOLqV7{7Y;nxnjS3+llu|=6jvi%t*-3mS;sVxC#{PzQ!}*B1!;j zY>co;bi$?351M3UfL4`N0yGvdV)LpuAX4Zb*nN{*MyFS=eNIH~!dB%57mI8!zxC1J)+K{ZE zCR4AH1IcyaAvJyCP+(bmgW?QwIM3+x*v-roW1_rAqsT zxof8ZLdM4^&OO6l43Mhg_ivWoqS zWyQM@@iL#vL8F1$#fmSKFzK5-J`IPKlb}`f*8Gmi|Np;K{r}%N*V?PFcNIWZ0W1n6 zWd|TF8IG5vw^+O0hk9MlX(DULI=zg3@|17fSIPjl4>)-XUG?9VoP*M35}k28WeS z4(aZb54YYK1$emS8V?moM>?cqj8`8G{qy^2Hn;d>r=)>pTHzvGg|0FAuXz6{f@E3- zRk=w^!b(?bOM6K! z#RaT@F^4(zZE0^Lo)8NzxbGjA2KF`Op264Y|5wCjln~NEIcY+GfNf1%)0QmB1475W z_sy>s{zH8~#Q|nWJ%E(FdrgmFgey@J^|};os(+QkU-SQ+7WH&{=c}*vo^4YB1p<49 zrIjra$PnEV|NkXrgLB?5?yI9_YNDbls-miD=KSroGWQtu?1bL^vM;1*rxqeg0*UYd zMUZxUUsw14e&%<~!!4Oi_OsRGjS47e$2R4npkNtyFJCp^tK!Q@cJifh%JaN)4MhSZ zz*13235_HmU5@>t0>PnyP^<7NU2&tp|XhKc&$|{vG4c3Ki}rR9Ae&r zbK5VPGIug_(={=YkvF_aHV|*}BFVM{t(mGdaKz>Q6 z=hFgZO&G^BnxHMU_F%d#wMI@}Tb|vw{}hq{PTdM~a3z+EMESpW>+4-)h3=jA)g%5j z2ci{&NEL071|pT@%31Ss)^`G_N`+neH;nP@?7JXzCUW5oV`~3riX+Xnxv^ia-S5&k z0*)vO2m&%p{@+K;z5gFP6g?%rlG{^G+I@+Ff`Wy*OPyh7oBsL}bJ>3k1Gx2m5KxxytgU`F!e!;T|ne#9_`^m!^2j~0Y51*_Mf|478?UM zUWHcxHPd6(ll!|2z@^^-@PJa^x87EVopH%k zcRgnJ+DD)L_BRD3S+%#iT_N-+8Y)tzN}YO*I)q=9um7)Cvzdz~Hnk_`F;qNb;{n0c z49x8GaX?@QB@)Go7F4hSK?D^n;0OQ&uJDAPVFC+SgB>WG!xh}Y13bYy|8x>E#DJm$ zJQ=LT&8~IXdpo$&>B&eW9#ma~%0*^^=Ji1ltLT++0( zJVOP&j4;6r%dE1_E(0bkv%vw!oO8(oPrTFu8ZMv%AVQ8B3>;VJz=02h7zzGhj42jy z0M76r@DV{`YB>An)$5Or&i=~T`G55De%(V)`~Um-dLs~92r-zP0Z@oyxYAOkVYtj4 z9`KxFKIaEs^NtVvPd@m~rz#J0L`#gpVvD4Z)?jA|48$m=uuxL87q)TnBvNBJskPS5 zZeCo-JMpTHRLvtr%08~2`k`u1yYayHyNyu7WxHkU~Fm`NoQ z$gSAv$4wXuhnrF{g9{&-5hp88M|~%_lVSMrKP%Su!5)tqCotXjawM^;#g*HFW66L?-vp(#l5T@ap8l)vt+C<=RQadMKujvUMd(K!HNN zm(`nmg-TSb)6#zp?*aw_6f$@N6==W!MlgXDSlGfDo`8Z296~6dfi-Mkf_oUSV{m}N zqoUyfNx;-}49x7h+@BEV}0LXxZ z0l*`p08>F>yg~p1LrEzRNE*&)p@abrxZy<<2>@kOQO6C&nB#yGE_56UnfU4gBQvkf z%oQG4+qk8I8g|)XpJPtB;eii%Z3jR^*z!us^Qt!FP8PC}o&1AKwFMpoNrVa@13?&= zSh%K#OGv~42@Fn2MT0>`!@F9|iQn_<0l@Hv}q)VR>GZtKM%bJ8OpZu8vj_J%fW6d2;yg@}rMsXI3 zBbx`pDm8AlvpJBGq^z_QsL*1_hzT?1Joy6>E1BS;(BxiZ2qP;!6zknkxTI-$BAM=q zG&0C3x4h~pP$H|Mnwsirps}W!Yo&uOc^tF(*3W)(e{_5@zj4XA4aO$24*5liG!=x0->RiROUUo z!pbjV=N_!>9DMk@FNcepUw_U6lC(0zvSEsb&nPPvrFv{(X=QE8j*WdATW%-2*~{Y= zE2op`+>H5yOINR1yN^efEZcm=s;TMiTyw*Hk392*Z@l)OeeWl~`G32;T_Re%G%3;q z}z*z+cz>cbzx!Y z#;rHr8{C=u>YqLF((#Uueda4a``wna%!P$#%vCyZ;s+(pI7xW&=xn2Bk#+W=Y0~AE zM}Ep)zS5!@?omJ$F%o3B;D%QSkRZbrZ!m#HtYQZZj&X?&4@mTApolvv{$FIdqU ziX=>=i&8sg=NFZQA`LBF*JP4&^2@``J9Mh9ZRpYOjh6O~&hBQlY$Eqx{@wRmC#PpG zzIc6oBTw`}#_4}ddb z>=3;_u#PPhC%D25p7E*obs`4}l^$9Rn7Z4bPMphc0LC#y1xIj_1|%>B3^Uljet`k* zoO#RZy1}_NZ+#qFJL|mXJ`i)g z`oNZaOyt1a^>%l8D*%)>qR%lfJi`c$8GeJV2t16IV?h)8b{Fo-0#x`AYxnXcp!y3GrRn*c5k{{>>{V+ZrZC0 zw`|`_mh!%LGqvd~mMht2@{m0&B~BFwN#iQ#!#E;1pgG4uvg7P1+_dR&QTDq?*m^ph z_xDbootgDmaEU*?U&Yt73`*gyyb>7;}T`riC9&_g}ekzUCY=zSe+nLdk5 zbb8asIZI{qwQHo-#Wz=%1mm_eBL3GaV_(gP6jL^f6`E=Atui%|j!kc7mi6T6`39M$ z@^7ChppXvekj9jLxF_h6>c~WW9ML^J(N{y2Q+7(L47z1m5EPC31K%20L}kK?V{F@7 zUY@n3tPQ4W=mm)xSOVmr?Tvj;fm#}SWG|1?mi-wIP@Cp}DXPGMAuxxxPC96!f``VH zeP>F2Yy*!?_#kx)x6a8uxzE<(Nxrcq-dG0jNj!mguKf5O;66{1^NF9&BR=$VPWggI z{a5)Vz2sJw#y!)M@KGBJu5@c*Fk&Q@^y9sl#RxD}D+(%aWJ^NTKg;H4bF^b4{MZS@ zFb?ZBg{Me!k8Ve>M>M-w(R9|#3+z#GT90QDas{z#I_B{dpJSbwI3G8r)9q{QIPF3d zXZt5GoP~kq%C=4K<5OwxEVgQ<1P@S9h~>;KuR(RwDZ@X%pHsAnXuLB%V;(P=@pIAn zbk)T2%F=5^qIlf?RV@E+nEjVaQ4juT%6-Qivqn$OZ6!Ljo4vWbk6OF|SaTEu! z7b`Ir6H$pmL?RHbV1f!FG=YRHS~#MFq!KZo3y?hBvo4*QTGv-slx3!;b!~`8ONt8e zv$HbOQd1HW`ktTpf$#W+ulSgcc*PU`N4UJOAduPfDH+2IL7;zL5o6@J4p}sH5&5nr zkMM>UJi@`kfKlTX@X>g<*jN}y1TubW^?2BB#@-_OKi7fL%ki+^ZI)#b1)eT{%rE@N z5A4~oWagd=&iRgSCPoR)73n#J64bNjk}pNpsfT~f$=0aXsAYaIg_Tl?SR~-{*c7r6JF^3uu>tEc z!c1l`ooNg)$N-a>#O_VFi0o-u3xdD-`u(z;7X7^S*DxFO+T~L5_w-12bU`PyM=M&; zoJKUH0p;}BE{mhdXwYibDi5FhK97SUfaYeNRCldJ{TLl0AaJR26 zuFhAJ;ZN`a&u}02aDqeZVGFAmVhOkM{dyIR!hScXRX^A0xz{R%Oh9nii2ps@bsEIM z-qK7cVA3f@=GDBIJ9BMTreOl}!K}qJuw26Bu$^dRPvaN^JNnCQk#`%Rwy}1j(_Wmt za`}8SCV%G7w-?Wz+_-Y-#IYj>_U+oTRBNWW=9or>C@8D5dTDlZu(#1_6c*Z=8aAw3 zW3$}zGrqhyapb^?ITJdxDUl`>3UU%vC3%cAnhpxU=&G8mtyH9xz&*CLwlY=0O1V@h z;B(nbnu)RRxu(=rMVO3Qjan`f@;Qz)vV$X8>!|s8>};(l5zn89vy-(#YGUN)DG_e2 zcE&o=KHi=lu1?mL76zRY!7mKE&2ljr$0F}`nvMUzAJXJ8{sq2@NAU$bh|l7~xCQS% zYB%ep@ALeq6bm5+jp`!~9f1d@Pi<=|i^HN=UQT94TF>qc(MZSkZJJhvOA137DUHz; zUC;sT(HhlgiDsyedMHB)3K2&(!pJ}>dLFBZRF#*N78T~_B==0qvMxPwbGEgiv?_@h z;yex=(7Zf794yUM5&@e@GckrQ-~rZf0!MHNOPIq1deDUqY^qfh`Otf45+BItXLr7F(~ih4tKKPESi@mZmm*~O#C1b9!~Z)riR*@YVvZjQtqzycDClG2BkH4KnC5L z9o?YgI%l<=jipi{7eX8=#n`)7PaMk_^%|)=7mles(>->&9lEy3lZa}k&1#-!sqb3y zH~jF;7atr?-gxkdkDPJJE1vO`2i)T}KXQ$~nlcp??S8Z(D39`}x2_B%-!9aSq_KAVikqM?A-X4S7Tg-Pr=g%Z>uaJ`*hzWCg3 zR9%t9OxIq-M}~*``<^@${cfj@RV&*o<->e7#e_XByV_ebxO%r^5q0TmU?}nYX>V z0s$lXYe)bPVe;Qga06({E zaf|>P4I`9)J<7ACu)4;Da&OU;G4Lbd&&bhohwUnNRZWveivc$O+xIQGoDRFqYB8IP z2E9(JQLB^+xom&0S}B)`g?vt6(y3&WrpRz8;If%bn3xu&6L|IiYhZs*pr?RhiXt)0 zWa7J*7|1lZQUv-Q@AR8+q1Nw#1#Yi+>J}HJMBWaU*rm7w0)f7VP~~g$a)uA9`9S-@ zX*&{2QH!+g?8yS6zmx{z3IutNOIoOO+~J{UOkt|f7DOJ1-X!>|lLl?$I%y40UvP?~I=1;kTH#uF#fK zRjAJweO&6Nw^^tf6o~;js^6^uGGi*6D{Yqr1&!&n$XZL1+;phAK{fY_@YvDZ=|Fi_ z=0Rcpw*4sHrEW|n@QQ)>8|6iLKFxDU>P`_;xkO`Eq**!-gjQ+l08IhqNA0qc|Hn>& z_30!##e5e2D%6{jWX6P+`63-wR-Ql=L0UGsKJmauS@0Fq!gd<@QE__$1)y498S@EL zdSzX-9;9KJzM}NaGO_cE4WNhuu*eKC&{WT6^|G`xhb4n% z_5G{#(G*c&p`U&fn*)gj^sxlw&dF+ln7Ni}+agZRuSrEy1Bor|;3?j$c}XsUKG%7w>HbL`dJ4S&p&dLORR8;; zL)X=Jg(_V@aV(DKH7?3a7Hta)@|E>G`73p@Nj|xhj60#hZXxnYTIll1xHY-k&X_7o zGBkM7H~eOQ2`4RGT|k~QOJ4dVt$e+1v0gHw?XS#9!Yhm@yb^MwwwX8JJf46dpnwaW;LW)OCjbDq1_EgNf`I=EwBQfW$Nu`2wXcwP;*Akkz~T7s zECrl78G(&GMU&#L?cwy5LO2No&>Dx<_(wn-bZcD1cpx&AG?f_py@xohNy>rD%3V z%FCF#^m=sx9GNKTQCE(i7eOR4H7jzCdVgQop-a;ctc28<*LBUo0^_jDj-E~6WnULn zCmH$rg66&^&M8o#t8_Nqs4}(X7%7?5G}@3T5S57&L92#X))kw!f38HeiqW&y9Z2z# zx+*Y^TG+DGPP(+FD9EcluLM+9h2{K|b-6{k(VQ1Vn}UCAk$TXZjX)jP*>#ZVn+hb` zQQOb=xz<$e>&iSa9T3_2W`&)J?X^`IX5<=YQ{!i&l=z~-##HM^A0K1ab&}h9Yggs7 z=0H~U+d*=f@@(&A1LZo`O>KR<=nu6#-QLvTe9RnVblQQ=yR+jxd)QI5q@?Z^n;c*?e~!>&^8s#1l4Z&u^7zeGR;?nt*n-v`B+oMVUZU5Rl)0; zAA6GL^h}jC^F%8W5@wjbt^F*vcEzbpCATTdPaV3MnzjrQ*VTGr2)fn64>Ui!>e~$a zioAFwQ=~~)i#k{B8n^#$*IPKy*%)K8cG~sUuRdKZZn3j7k=T-TKy~>dy#{}zI89sT z-RaIsFH$j6B}g^FakWS5*ZFydUi_&sSd+cE@}_j7?YO47_L-TQX6^OU(-(|7t%Kiu zj0IKS>7pl!Tz6d+XvV>&r~0~k2n=)4YAixNNA|+T(B$$gqP|1e-D3GSm! zv$z%`&js8TX>FVQHApuqSYavCO@5r=%#%ji7wgu`pQ)PwjT3z4JMn7!<%T=#j3QN_ zWvpUAGo;zFEnjU8XHi;4Hp>bA*F7I>N`%cSX6Hb*^aGZatY<{XI{Y0kzaE4`_(BoE5{-91EeK5+t3psdkc(`S&?z(_^PV3?Y(P8<*9X^Z~lTH3Y<@LeAfs8S2j&i#R zwmfc6u>gdrrZ1N-C|I@Y*XQ-5&X?g49yS#bJZh3eWGwX_3c!>MeN@8h1HtC=xiLy| zAV(!;CS>MBMAjl_(@AOxX8AJi#{;5q!>}Bxa!5`r!7J%Z_zJ4b>H?^H*W&4_On?x@ z7d~OOTEK*-8f-on(Sp&cq80Gs{n8&FPKSjI{(3OShnIsTL^KYU2#1J>1Yg*hB3O=>;+JlDv@PK{qm0HdUc&eo4ogaqHMW{8M5txCPHbIlb&Y2h zzy8YMzLdadilXr&;C_uyilrs71*xP2@)% z0zI=xmSC*LyiHGFreyi>48L$@VGFh~*|Dz=IKd(TMJFLhTuk;dpA3jWK-CyGznY5) zl{~3rBq0WA3c;$7GDtEZM4bDOi+Y*mvB(kC8#nj$>`SknXr?|CQXs8t5sHdJk@=AL znIzE{2|H014xA@nsRN<}L}laV94daTOj+P2$V#~koXDI2v4NdHYyl&nYr!-X^j`us z1pAkAC2}oSVIT1&?wz@=E??ggUaqcSFA%T54Pf>aNG=j&93;#n`T}XfLJT~^;j4C>gW z61ioG*L?d*=w9fS;c~@rWnYVZ1rl!o?=8A(Yi?>7F62W})p9znXK}UK3)ZQtO}(O; zItyMD1Onv2F5-Y_7l;bR&0$_y$`oR-Wq>5-T*P}3_KqdbIeIrBvUh^$y>aYa#kv1- z4-@eU?R}n0?tH3m9(Ce9;&f)*u|yrh<3y9PbFX<`i1(F#ENt_g_^lJ!NglTjqepk< z%&zjg2S?G<7V?c)zZJ;w46WbQ5NJ!__xVf7YwW@DLwxz=whC3E)%uG%-&rdZNb)@?320 z1@b(CcPV1-jRWth96S-`UYS)ySd;9a9Ca_OQfyYPbt$cs9~W9;ZIrhhH^qf8MJ>WY z#f$o=1_DKk`bwYbIM*m-0g)p(k;y{bmy{x+aY7)e#tnEjY8>m5m2schkWxk2hOu($ zL?NmGDqD0tHkE`Y0JSI3ywEXz>BS;oq3Bf2D^)6#R;p@45d=1;vXQvi;DC6Rx{cYa zHvnggWJ8G5aL*DuK7ZuS_5!hoth4COt?6oZ(7id(>}d|g9Dl!t!gy${m zT9t)%U~TL(m8AMYUA<+ZO~ocX0ZE%^UCK!x=SY20gEr}+p(^MqYM~RqRq&HpAxr&< zpE(s02y@6%10jEg+!n>BA)g?ug_+UNbexKFj>bINQs112zb(9!(Rb-8P?e#AO)(V; zzd@x4?ueL+fzIfi=EV>i3Q*GwLQKoi8yvy^u8acTlJ<^$o!B2B#R|$k2xo8=+qM!V z&f3`FfbCF4bb(jhtXqH>F|ICoznC(*zw%du?Zw8IknJtHD{HQ5XcO@powljkqg^Jm zu>Cf-jrehA+JEj?rK1#2emLnq{h(?`TKo;2rKN-RX1hMxi_7wh*61}`R?}pjE!+IT zoIP{4wA5yAb0#v{R_ZqznqVnr9>g59R7B9FHVk#onnEAt$IC}HkSoA_m3IX9ovoOn*0)5gt7 z{n1}Ye<}Xrfr|uxxorI9;r&J3Vgc}c@_MG%nckM!Tb#Ti%wFZR@z$Nab>F9R;w7rDt<+w@qm%HA1FL%`UAh&#j{_KD6`Fr*H`}pOz^n1(S z7ybRh;`hPI?>G7zto~viG>>8)LChnY2h_0a%QMTp^re>YT;{SWTG*Da99CXSv2CGk zi?S_6TNK-(Y_!v2TP^8OOj+|@%us3*%34awvFJC)nzpbmrPOr+q^V2EwW8GJU7brk z6l?VT`7LQLkWpyp=9QyXP^*P0}< zlRafed0AJxB0HP}dq8&K_=a+|b&&0g>{NENAoX2cZOh~UnlVb{jSOz9-9u&PT&9>k zE3=~*D9$#>7w3xK7PSr)-EcMCXe;w7FN8{Y{YpHP>IJpDHX^TEc~O<$`ReE?$4_3; zu{y@ja+bSrNl+dcU&{|i8RE0!z3Dbr8U2?sXSaH^~H`u8) zD=6$`MqNuIA#7_<$+ryFwncGCt%6D>s`3kKr4EtJJC*RFkf@hEGYEZyN~6rFGA&?< zz7rY3_*_*#g(fN9IgCuJ^de^bDwxsavn=t>ZdSRQKtu>Tk;f{G5$7U0nPkB1IwOP* zRb>QL;M$<5FDZz!Z$JWoEO)o{s&3ynP{W00r-itYEK^lD1eiT&7%V%R0(6_$yT*-z z!yiZF$6&F6NsTnisM{-kn=09N9IDEt7_}hY$HqiFzHfYpv979%*=G<5pk#=cHIYDV z0+$U;;f)7i``;k`FwjqaWcFMSEIlthiBnHt@CX|( zL-x19yMc?``#45+ab$@-Vuuh%iFtf#2QL zybe9Q_AOk{)H$0b+BPfGRK`h>Y(^OEC>!lYmu%KF?X$UM)92cxU5;7bOm${GfF;+L zToc*WVY0H#&2Q8hRdZ)Hl3>IOqGGujwT@1aNpZ%Tu>IXhN%a;asBHX=v z{?WV7-hFihG(PUmcw@Om+#|wmCAXWqdvfk`azFV8{a4TO#ouu9z>NrBz1(i%ex&=+ z>y2K^-Rqr6ugmN5>AHMsuFK8G|zAR#&*=^X258XQ$6c8O;}zfh@b>zo zpY>_;gZ_Yn>JJB1Rkc^urfB-0#&>gGy8M1`&Iny z>3K9JQ#-gU>T@M|p9sca$_xaC^$62Ztizd63&KPL^RduWdYVj6XbQ8dILjL^>q(_j zK03vAY&KKLgz}NFtdw6WprvZwD6<-hHjfk+rHaigvSbm;s`EN>;&5_(;Vucnscslt zQtp*^4lcq>;gkvOJ`uvW+IGLxo;ZH_mYbf{9L83JmTg6Qa$$HCx0qpJgk(4gIf1{$ z4=bCqI#bp3(V6g+KkbXA9mOYYMmJ}|dSR0?WZN}y^Tb1Gzqo7SYRS0eM7W+4?|%|+ zB+%^B@AxX=ix`t2$?!2v5}qXH zn#^R3Ns%$+EHMCa0FR@Pk5opPF-B8nj0&7J3F0U*a68g4IDeoi&^0eQ=5wV-wA7*C zM9g7xJ+))rJDLuxi>BN8($PsAZ%>UfHcf4jLXrwLpF|WcchECb5$*WQS z>Z1z;yIHJRjCiy3Fu35CB+m6Zs*MGJS=ngwgq(30F_r(p6EftxBh|E70^1+Xc3Y)E1fVk_SAIpHayb_ZN)%aCb-Z}CH9Kl0^NCG?t7(k z%{qmh^diGpV&^(^17atsYsK{AHFaa?qQp)xk{}Yd(@r?VbIx7Ix#?EyspCKzgTIS& z@@-DhhF)ME`#EIY+@fpMny!YNy1Auh-p^$ygt`)1+4O_RWA_i;bBBvavhvF|^dM1R z^-?kH3fpKeRyz=l-4d{eSJN%K7upUgk6rREne4D1u2Us;`D2>8)|z&W(A$>QcdZl1 zJBY2tez1rwpzFbO6;KP=(a-YLIg}kF&+enhCzd~%CiVp48+qdfG5C?u{lVtB;`d)N zePr?<-+J+HCI0F0olo5xZ~n;FZ=O88@${^pROqA9Gk*|%03$%$zt0liGJX(rZ`piY z%JbJupM*Xz&-}2}`YHE! zZ}ctX&jK3XE8@F3p!*|$q306b%h|`jiadTQ->2?x#4J9+Z>$f0NQ z@6+_-3h6n8XZRrSK_I?Q@uNleI~e+4>A8h>lp6Df(?^cJb~D9S`tno8*JB% zUv+}iFyg$9hM7t!*F z7E}Lj#iwqg?)fRW8AO#!Ck=TgDiR*>IIzoZe z*aA_vxGUj_B+Z-58$i<`?o#PkMGz_}>NN3`Ank2$u@k_~3eH-<*aG%@kUBvGx)gS6 zi@Hz19Y^6#9KcsDquYt;E1{M%zsen);wJB=#TYIep^II`po z$0*n^x`s_x$*YE`;p`Uf1nvdmJ>VUndj;mM2D&Hs?tA$*{($(MGe1>7zWSE3uc49M zM52?po#0MVx0{&Vq=MZ9xt;BV!;U4y9S7WUK>BBC$m>9UJEdqf?gBLW>dkBUmmkwF zo%!3Z@f-PtCH~C#lfbtO^tA)}&i*3y7m)ZP;4c>4kArfE%KlpZCHWyuu3pNu+{Bld zUOV%WXlq+=Cs`4&19Z`;?8{Pb@q&BarMcU))Rt`5v*~L-f3V%t4*cLRq&Sy&QJ}v- zci~NOUi*vJl%LauQm=5qov`(XbHq&$@WpGmpd@=4*?=WF5A>)Dbf^=n z8WJ3BstLXxt$oQ)&4jq|BV1^4u8_>1Q%h} z6_3_8;?RWH0OHaIPL;U9c#J8DzwXr*H@qPR5{Xi$Ogi&0dNxC$dX zLf$AF&D~aNNBiVbK0}OQDwVjzT&|N#faI2wJ77reY;r3$*(c{X$vzS-Na(gsl2VdQ zDMX-|;}2!>zD#gYrb#)G#O%u?FCi&qor&qu3dA*=_YIu{Av*SQ`c|g*;-c|4*8X}vxOD0 zHCwBkg6d9f+Q7O30v1^)VlH;Q#MWU>oBH|ErM@^iTrPt+e8ZJ9l14irKzxFPe}M}n zQLkK(6^L#}C`ggna_N@JI4_kw=sN|{ltWq5PCd0P#gV9(JxwZgoQE-tRZSh5)!Sgs{6L~G zEAphtEv&CxP@bKsS%p8e?{s`l*y9_S#D_Vij!|nxyGSXPuFM=%G;#Nz>|e~vJDI2W z&FKI=T$)97U^TO-)krIa1+p_3y7`)Agd`uYd=`!+-PE3%?h4ZYTKqtm;RMe*#;#4Y zD`S$zz?m`U-Rd|<=3I&j3IjM6-r2~i+zN8lEw`dNyY4OO&+LxD$(jkVTBMV%3dQWO zEN44{JIo(V%vX5f@VB1c{n8{l3zgoxC2_T}^TYgB_&>dmolJ4q9}efwVn|{OK7FlR zAPJzOlk+uiAlyX7kgQ)N^Z_rvGk(wUH%U}wK4AyM`wk;%Cr9@)yof$Pb#)Nw)XC#M zQ^vFCgakBd5Z11!Lr04Spb&= zUUr_h&p+<(L~lx<4kuKW=0>MN3(diR9BoL|kHjZ#wXNNUl0f}|jM0YFtx;)S(}cQ< z=@ca~RMss@3w#*sWt0pl2&WZ#Ms|yVq~piLtvYpJ$M?-xW2%xdtn`d+cy!45fVBAg zrx1b8@or`}nLH|uN8ou7aD!zh?rmKTaxdSAYIverLn~@LgT&o&BHd}*F`nmIv7N|( zy&o@b_B>G<)lP)<1&)a0A4yNFRhYrqo4ZeZm)8q zFkJGoJu%BC^oy$TVuO`q-6{{#NCKs%9mn8gpU`H{sBIHNDHd<>7np%Uq>drhM3sJd zAQi>kA_PNpSZ~^Btt`|W*N5#ii>;|XActHD6?C=?T~$`Z^LU$ifV&(~_wtK15v?$2 zg@|JsGky?}lTeOpa>pZ9&@MI6-om-T5lgTOqQ{52C$-S>IXSw`#f?F!Rmta*ZAgYg zo7N7xDrgU&)dD@R;;V)iP3R3eJtLU+FdJS!p8&w?Z4A5PdNE)XtnuLSpwb1qlCt~q6s6(@I%MU}9Qk9D&^u1KD$jgumY9uV z308Lsj?+17DYU5$<+c|4x`@>hOX(s+UL2kmm$a-KWu#tM?fUt_9tQx>Gl0a>iHrpL zdByVhMxpgRr*vRRkTjBmsE@SRiy^_vY<|%=QiR>j%*+gg`hc+%9Miwcrc4?#3HUQD zBKS#%0B57CSW26IwK(66aHj{!Uy~*72H-`6C0xfEUno`#&DJ#ra}my0Ux*civ`x(pHR@v)L7q%%aeN z$XIR?y|ee7-H$lO7_aFB`h!=IhTc$i>K_*0fv+uvAo`+Nsp=99{K`Zny0N*#Iw)>XtF+W{?gSP$?6uF`BC*jiF_klwT~Nr-K%VJ&4#mo28B%yEG4GBM zG<6zX5}OXh^^TtA^L%<-h5%2r0n0m3}-0AG9`W~REKQk^AFQt z$$4Tyn8Z3~+QkRs@LYizU=Fc2X8~=&DF^#4R1>!U6-<(!#M}U<3!J&RbV;2Xtsio?y>%&ia65_KqQHVlf@=9Jc0uVFv-xG% zO*%>Bqz;nE?L<~YX!bpF!KL~D5DcwXPOg@j(R0%mN7i!~Lr4l1ifdgfEFPz644+2_ z34~t7!4j%S&Db!BETqz_#B!FU-w(ykAlmaZM4f4=?SvEsyBQVk}h$A6b!XEwzYLEhe(!qZRw?aki zvg~x<3$cSK3J)^HXGnC5suN082u}GVCE`)o2G7p*C`R;!=mA;HA;-o%uwstH)uzIX zZY*L5XFyi=%Re}c_KI|P%arEI8o${}naFBJ5@zNq=cgkq-c|a3?IF@!nN!CZ-)=cH zaFerz`15w?1<>F)>M$w{zaFniPRZ?V#tZiNFMET3RdTD^9{LK|Cs^wn7jcGbr)3b0=#Z>(x#-srpD73wWtRwB` zW44kOW2xDg)@7uSnyPx|C_wVB+Gr$Bsl53p$t&T*0|E4|zpAJnbJbTKbn8e_FSE~Q zRN_*+8;;e(HecfuF(!e56&7U&(n;|TtrlH zz10N6)2lGO0u=DNSxN1(+fnY}kNU}Jzj8AYX)Vgn_Ui2_* zkl~A^jQX8$#@hE7)ZQY}>VL!%DxFViOKwywDVG_J(Ti9QS_}Q&+wAJv_-x}s?+vFh zniFM0)18of!8T?FkS|2LYH-!Cvc+6FC*!kbW&o-Go(!9utnQgGTI8_-JaWB~hu&6J zvJ+`(&P?ECmGz;JhEu$Zja!xYL`J*UNrDp#74Z9NW-*v(4QQu3A05@ZdAvWI=-hP0 zTa$3(J*$<^Y3y@2L_eg-u#K6~#Zok-ZY@55I2TJRmBcOx->RN>yp5GMtAUOABE;&9 zx@#AcW6gG>u{m9uovGWwW@rHl5*2jmA-Dji@ZHs|OcM;jWLFJ8uDn(U|J+x8qBP$y zn;zTPqKBn>OUxE)@AWsNXTEcpG~@Ot&j8zAKbIWC$Q)3P7;cRl(r3I$OfryV$l5XD za1SBGrq?sp_e0k0;n88FAM77-euU;}`|ii~U3b}bH}>ZM|I)em zAIc>@JVr0|3VmkVBuuULz!^r(**UClC6*M2Rv#y05=QXKHUv)zN;%Juf|%U5dYK0v zzJ(-_2(o_X$w*da4;q%REM#wCKo#g+s#hS=$%8`>S4oi_c6*tOG-N=#FzEDRiRm(* z=V{)=COi3#t_9W|Je|E+Y*&u(zF8t;r9CRey%cAd@usT=<)77ItpS-3RwOdgO$6GW zThfgC@$Ugj&ggu#kmPy=;2@^eA=ab_bt6LkuqIq#DiLLhjEs0m&8)Op(6-R`k~Woh z;XYK6RF$3GuRH#&o4|{Sa2f>YCW02}yE+o#t*c#W7Mqn3>0lu!?_@;b;?a{-0OSQ- z_{G{Uf}l#G94|7C0g<{EZLwqbdyOG88V4?GT)~XvkmII_?N1I$2o2M+R0~gHCIB~T zns*9v$I>8rTfmjo71>)G*aDtPNPlqkrcH8z@CqQ6pGu`9A20H~iS6o|8uc(rWbWCZ zF>11?X!^=)<{7z(k(MoLGfRu?CxT*)cx?jW3PiOH6PI#5rujo`8p%ctT`kw#rm74l z3`tlv?EyXloCG}^Q@mZ&+*vscE7!HGJLtB*Byl-*ZTL5qoK;A$v;Ulz01UXC@9q~9 z6S1ORc5Uedv3`*~JV94FF12s%-TT0pzuvvaPx#t0ZR;idarU%CoW|=1zv7dblAtaR zI7n~#^W2gDa}PP8{+&Y}ViCHDRm#0@{X^uv3@=PAzU@4*>HQUX)s>vJIReW44N0oxVo z=_8VQG?EuQd?7lg^+~hS75MPA=Xbn&SkjFTD61S~h)JgzwvhdfS4USFzJRYk53K}W zU+!O!cx^xZznzjOC$k5rGt`F%D?+{El3Z^pr82CPNB(k6)NpLC>VgyRZ70Q|yY}m1 zapHsQR~lHa?3R`;qERVkG#c#qJMZwdD1$fmrdDL=xLN*9yoA=gYVgcy--%{nMZC$= z1yQLoQVk@YS1Rrr(j)I4R{P8Qy+tsfPc|lF{70d(tV}2?KEB!qBlEh^@1Dc%ewxUH zmD^fYbkAg?ATxJ2{t$pfE2zG&p9ErAa0O?x+V%a z$)PJfyu!d>p_0pVTa&6hb|A${&L$wAG9J-RCPpr9iu$Qd>asW4+#RxKA2O!D3u@wn zPc}8N3d2Uw>p=VahQe>4;uEZ(0tR^ZK}q&XQg=X9-T^v2c%AtTJyUVTwwn}fALg)J zl!#Tw%rco7=VS{FEZy`q&@1Yi53;@eJt#;20W$CM6?p{S{nN|$!E7m|lgRq02~zS9 zB=p>DKO-O1^8KZ5uA#%6IsCslo(>rU(Vx?or;FAgZ-$nSR!&r8 zcXnq|4M>%jRO0@xR?Q&* zkOYlFFSpSAaq25F5pj*~yig`t(4^~SGsTHFueDk8NEm;V!wA=%>zmdMFKQCdUn7@= z4U($9jM8)Y=SE;`Es{$h&6D0`bFqEewmT+xvoL|Y&D|DGCXWagtE~QA(nA@+(j3Kv z)HMJHKsBdKM_gX{kOq9Fl!sm6OOUv{Oah|tjNTL=K-)(7K1_&4`rT{ygrT1o+TUxb zTH1x$oFPU+jYR$V^J)+bp-mJIN1eUg^b_N|BG+3^za1Jp8z-V@?U)IRJLikQ++lmP z1!+;LcEFU-?;K;|-EmUYzc`b6S7|=@J=76tr6kStTXGh0kOa6}tZwI5AOEBzgfi|@ z7z+JjNcEd$z5JNG!yYmc&3CCV zk&@}V7ZaB2yUlzW8EZTu=~Y9=N9x4#lRuGIXimm)T<{67x@G31w0*5k2`V+R)y_>- zLLfLz=(QMt`2>H$K!xL~WFfKPY~Ge*WFf#e2CSTckl1iEALS-{pB|D}+g9;gzGp-j zm=gsg=WjU5#DDIhsmZWl_}g%r$1@3t>QKx~mH!LJsRtJ8h>X=EBNs@L&lvF*S z{wNn#O)~6N1NtBz&!wDP+7(V=AXe}K*Rf%6@6a{Z85wB+)3;9CO(xGa=&5^ul}#M4 zL*S`I5T>rr`a1jSoD+>L?lp~!dL9g+IPWnbfB-B)Fkxyz zoFPX5_v}p(s=4?Hy*m6qS)^&Kdu(m7WS-_~R^>-5fs$z)Tx3*-BzYXv z=oE=0U(1Z&qHTLqDD|qZYOdy_NTF2FLhee*c+iDN8aY*=d3dMXt5}9lHwyPz#;#D& zL6-jTK|sP|?-=XM%UTLM5oeu3KcnpAr+;F&lrFA%GPx$TjedKAX^N-XXnMR|cl-L) z>`LUXWH;UYOiy;G&pis>-r~#&3nF|)$J+NkU5?Lq-28ou;(C7dXCS0yEy0=4w_fq} zu?G*8z7yF-%2!%6Okfh`VKGSKrSr zMT_oTIn!sMW7fV}F?2p1_9w|RA{_ngMuROJFS^gA*p<(U^*Xa2PzbvPY+M;m_M&Kz5m9yN^BYKZ{*-ta& zk)%2_e2eeZmo)aLDk9YwliiFwFx~zPIdww!6sKxgf|4TBCDd5hTK?QD;CWqUDO7ET zoeBDxO**|yb>yC!@#+CJR%#amkj}BAOs>Gie*C-O?O4c&Ern#2^Ur=w^sLJ$da<1{ z-M+ri->x#)!!o+n{Nd)w;ac)SCT5=#I#S{s znc%Qv4&sZYo2M+ZW|DHGp+Y3t`xXUpp{7RYseaL z@cg&c7Tx*&MM@@mK5KaT_p*dBLNu5hH#lLG$}X0rrzDmmW7Uq@bq-410j{@3e}BKA zMO%m0DlA-KQg!Ur$uGe!KCK-dGJR%-e_N7H&e+hFtv6k~#lN5J?M2G5wJyUBV@qt> zEC?LMQZ9)CJIaBU7{0(a3Gfg>fjer^31kO_+xmqw`7Fnn=@2@3S8!lzX`H8XT(vs`_>>}0QL}+I|pNX z+ID~8*o^vr#K}JS=AZdHGh?pfEN}c#Fu& zp4R`C%&(=981$#GOv%t?(X2#AK5wE*pB*=;jYXrXP?Vz5Jgo54pM?&_S|RDmF-=K6 ze@9Rx19_zO#v)jxlm+6K57_>NRQGL7(apTJ_U}3W1hJofthc{I*P96{nrk?jgQ3DD z%VSCg2U@?aU+Nbn&2nB+>>I9rNCkEW&meW~RYX9)%)#j&S>5twM$+L{8Fok`RrilH z)Yi=M4AA}qf zJVUFHCgJ{)vORN-GbJoe9vE4D82YBPXXi2(tbp$@0G&>gzUjr=_zwT1Ev*r(=s!>P zXf=D?=@`Hn$`4* zSR63FX%M1MdjTdHZ%9~^A+dOAXMX;2U zX;p?kF+TlvE&fXF#>?xg&Qla6F8 z2}Wi)ByRQ01xm7`j8s|0^sdXb z#0)&*Mrhvn$_}gv{WRIKHY`4G?tKU9(M+uJnb^|2KH{3TtFz|*=<@9BJ#FbrPtQJy z*wlt3PFR0@^*SgRbdDcYAm@qm2-Axip`1+6bGkUY)K%X_h#HBc)(PxAOVJZyR>Jrs zRR1(2`aX5}?Jv}3k3Ky+alnRdo#P|PyR5$RZbJ_2*xyYvz|+iMCA(g{vH{n(m98#Y zu+m(Zc}$Bt7Ch`MX&*E8&_U=M8ufhJzvE-$JQGZXB4=^ucEdiS3r@au-Ki{}+v zbwgl8DTJYm_`t=4S;WY53MqrJxqX9A{`4GqZrnF>m;0^E+!u(@Kvm)f=jgY`zlxcO ztNN*8@J(Y4F_8F!ia>~Gc4;lp%}`+;TQns{7ye%;^a-*ddF?>)ZhQ1h&G3O}L^qCe zIQ39-s-0zU)NGAaTHJ^CYxXlTW~DiDdTOR<(h3XcdNvOZ8rBt>);J&2l6C)7d{rwh z0|}{C@b$ab@rjPxO!i*E?LobYeG3bFW@P zL0H;!3!z+aJylsFY(Sa!M9QTpXKLBvCTmXD#ZXtL$H<@5pruI<{}EgOrH_>49sKMI z`;L96IAavhClI>Q%c+C|j3*ys|3pr<6kcJXzkPre=%P zpV7)VxG!8g$`env`+s=$*8>F59!1i8#>lJFnnZ2-t}?5C+U3l$mRN%QupZ5`+o=pV z8>pf$b)b)%*JaU7psO^FE_GDI93(p-suw(hw4{>RDH$3!4TSeaG8YeMgITzb* zpmCSs_Lo%bb)^=eg<`SzACnC`#Q?jO#J=+GOhDnog1ctB^WaYi_zDqjpDSPA40ff- zk4DOJt|6}~MC-PZ`LGWb;VDv}MO8S9sER^B+BHRy&if-pEO8toB?#v#&^x~bhw%N-oZGfSpHr)OfJ)(!vV&n0=z zJOMu}4L{k$9Y;p#qGdfW+;?4tilX{%YK5Xq1@g$Ud+F|#SVeI9s_#J4F#8c|lL(2@ z^GasAoB*_;zE;;&#S^AO|t z3rh^n$V2qzAhKG;20}Pxd&#;`%6A~96C^@IWlRywIg+O>&Tyg1i6nI5apUahOi~Q{=i+j*=sM~s_69z0t6sEiAv(c)pGn%+)W59Y5A_Qb+j=1E;Gy3oQl{HI`+*K*iYZ(a$8Z;_K1 zPH!r*MBVcO({?`ZkE$9}eWb^3A#F>Fncxw1LnaqFUua!S|3QYcqFz%|b_a?^fsa&| zDHJ&<@nkxm^%jbZzzhq26gBm%@kj&#d#9*e7gbN9Q{_0O@XWYYnAeeR|1V4_+-g%= z69@8eHk4%9o_ar~pew7O@paIn<)ZqgC*NEK`NU{n253)rnssW^Xywf<&QXaLRiH?Z z0qZ_f^3*SnYam32uUBA|-4BKirR$=O1Xweq-IY1d_!ku)`Q^cGQ>QYpheeoG`lrBe zXR)-k0gWctrb6TALC25WX02YOZC|^}9@D|ar~|Y9a5|Y>J>j#(tSK!FS8Q zX}6pK65ivyy_#bXPwbafP!^G08!(LzN;ofWn}Z{_bwc4#jySf1Dc2!qXpEk_INjT_(bK8MyS<1Ur=!Q(ElXGdSU-@cWBt2hH ze0=-^wtkE;lKH2N2~F}_2(WC)rPU&4m_OeW4V*XaN$pI`ikSBjwyKPd{h?jG`s031 zvk4G%vpSA6R^pxmx=@4avE3JiL8(gBWR34xTBpx!p-^)Xc(OFvoh*JQXE?#N{@Z|U zOepexVKQZrZ$6xjhwf~=u>|{Kd~r2$e1u~k)ieN8x#MLsuOpsbnIoh(An~3~`M?ut=;A!m)!Qadh4r zK}xiPBwQ%mnvEEi@FAL;jVit=dJJM`D<%536M_ejKO%a=s`$eZ@|wbYPpm218p?s> z=YX*qRTitG?09T-Le$~iFy%Y1!jC(lNFcEygr)Jvt?*rk1X1ckWn}`-n<78s7S(f!Z?<739e6AS-E8p zqZEl$0D60L-L_Go-LMVHgJnh$ z$qYATBamJHKYPlD&PVg~OjVybFKJei zG&nVI_`cDP%AM*Z3~rU>DiHyx)RPzn#xiB$sKOf8h|Y^56vMb#ZJJZk5zTbjTL|v+ zrt#hD*oAFiKNk5zctUhs5lD`kW!(w&#NNTh^$hIL z@Aw32QaHe+TIrthgT)GMu^=(i;z$#=zLn5_mf6!;?sl?0aLX2UY0x79`%!;swW!Ri zYY~)kE)rw5cvnHer3CrSrL=0 zh1rN|9eO^!cOzl`!nxS;rMlh0Iec7Le{-QgjBX-iB$1VlS>HBb@PH5pDsd8X{U5M<*h@CtP+>?djJxpyHuKl?6>NCgG!wZA;hBW8SVeq+_N`7)-S24=kU6JZTMte$PVT3QXb z!MQ-yco$6emt;xQV8Un9>Mihp(8$v%yPboid&1TKQ)#Ksnw=xzuH})Hp?N(=%<>ov*Y1N#)w$s!McjZaI&|F z#j1s`x`iBZA3W)Fm zRvG4~M-8N|Zl;G0y!{3)O~VPxIsyw0YTr9PvxN{mSe(vSxvvmj;2%c7mAXu6r+_(~ z`IP%6X|)sI_TOW$bzx!(;3(D$OzM14BS;n#>F~MCeQe7`^hFSA>l}gB@QHq~9oOXA z6yq2OAqXK9>1-(;MqozO=y7zpEQDg|U2MsbcqLj8wVkY7Rc^8&GfQaMm5&ZE&_X|Y zC6_%`oF{^YhbI5YpJ_)QJ^VtqJ;q=FsDxUK6E5-In+P7vvA6mzuskdg6JlM&^zhmm zrOomA0pe1CW|49||Cd*WiHV41g~het2^oPkw}(eyPIxc22Je;^ffBLb<>ComY5eVJ z=?6M_xP3$Y11`_6yX|f$)&Dy75-eFS+iwdtsFBmJ9d((5=$a+%M+^|0r#a~!*V@VL z>-h8x(W6Ho}dxlFASPsaK2c50?!I%eK#N?fJ#O|h5nRja!D!I77dx0okrQE zA?Jy0O!vLopH?~7z-(|k;5KpLZ>k0Vv1MbV+HfdB%tiaSD{7)IyXYz3#9>ulLX?5W-mY$kDYLwmN%Y=A_=6*f)EVq7hA z8Tk}^K@4;&LL1@g`MJ#71SiubALPO^+$#wY#kd|Dzg{e~#s(?kP1*6dvgxbIogfxM-+Z7JcPT)yHrR4UmA{J7!t07F zWZ;@~cE}{Cvi!%{{$-PUvik%UQ$|Y^qc|Nm@kLTLVe+jz$f^IK6n&YJ6r zuKX5u3&(jOtU2?sK<;uI+hq2?NtDjV8iZBo3hb`y{y8<62lfqd2X7jZozA|iX#zh$ zT)_J5@x&2i0)jGTpl14W_!m>MDi@GM#SicUet;aC0SOjLQ-+z6XOuFT@8)^7z`|=t zQ|e<#0}k4OVoLiy?{POOz=uX-a?;!59ezh(Xg1pY3(k-j35$B3kofBBJofUw?UbEc zwQ|80V53MSp}p24neAGhH;1Loz{XUqiysm50PkRqa0m^1E9M~&fXf|DMzjm>fl4mC z29G%*w~vgBKbk#ob!vBY2W`Y~GA|q8FdljQR>pB*^e8BvI#DMeGJGL2$2* zt^bvrVrg3}bhbbB++vp#Jy5adMU6p5`4$HPa4AW}ar6EG;Bz zVEW>CD-$0cqUXsS{G)xm(+Ta1velICD#{$iU?B~z5*H&b0DOvi4H`5{>OrCYI|~-j zQLh~YOL(d0C~@xj7q$7v)rKEQQQy(E1(f;~rhN#Kr9F#~7T`_oBvv6xB~DpyKy7qO zr4KunY@cU6D%qOOqOe%m)>VA*UL^{W;=~nKl1bNK1RAht$&U`WngnA4Px(-)b015? zq=(YWa2|21Q(mf&HN3HTZ|2{ejgT-Tt8nzF%snvOpZVsP{vM||x-xVIo6>}Zgh*cJ zZkweZQ(JN<&H0ZwSB}^eEG*5wu6i^U=h$f|f2=yo3xlnk^=Ls`197apr-*qs@W#hk zT(UzGYo{t22jf|Hv;NGpOW|7rY2ZNUm=WRghO)UZ?UOznyQ8%-eeNly`|$j?SH@om z&Q4L@R48x$^Eh8L|Oezt|J@xc+p#w}8mzWf!5XuF{oekf4Y;URWIeVFF?rW*ZGZ0L_LA&Y0m2Hf z$KVH}S$%OCo+`~1P&1^Wa+054B?-#DgNyd*SMb}X))$n{nM7kxFPn9RzDC;$sGRqd zWTsym`x)e3YAGfUYzvI0ej9Q7W?T~l2#gVnBSb!>Im|3BH zt7S42k$)Np6aLlEMw_~Lm)DTm=$ebzsd6zf&->$_fEd*!V$VutrrSsA?18@>9& zLB{xylp53NJ`v%b2+9IlsLHRDqwB5|nd?g*QlOpYT>O}Tj?GG>&|F?W`Brhh7Q4(` zp5~8@n)Bu!+=-eUu~j^VvEB`}pA*l?Po`Yk?xh=QKQF{%nF6znL|-$&$zVuu%Pytg zD^4FwutI<>R;3>L9Mts{Y`9QfY;|0~P#+v=D&A(Vp=RmW&4raIn=A#}1~UUS!0+OE z-pT#`Vr|yt#_wE^XtS-(LX)W*dc8|A8i4x_Nm32NSSV8TjByQY`isdKuueqOf!}u`+CoxElEAA0lhKH zQ%`JwF=Ad{EDOkhO}f%MFQ}G`aF&v?+!?QG-vMd_%TAEa zsT6o%1DvRm56gifS29pb247Se%c2S+_3xCG_4}bHfU~*r|9vgx+}Ct$Y1Qn}!l8>hU~m zNlL5bQMPG!&+)r61_;Kw;U?(EgyOU6O-;^DZr zajpP)V_!)0c0X1bcScnR7Y?5EppYbrru}M#ZHpWIZ8V$itL;i?%J=`9Dd{c61@_im z30k&khfK!( zX6O4Z!`oH2753f9qv$yK9PL}N&?uKE4fBr_iA~A7L-J*e<5JOg(;NLZb%PmmKp9N7%yQjew=&{HN??MCa=CUWjsC- zJj)2l_%7xW%`-VI>iXez3`jg&ze+rKK&L)dpuUbkJ#Sw1$v!>nrhsV`)0g4EVRN*{N_|Q9v@5fNs5E7Pb*|&yU(fB|-o~-O_}%-^U>j8(PM1>E zkP(hIJ7hCX)=+i&yDvC853MHQFC0nel&0-Kp@27ytu>Tms}2Slg(A4G5kl2L=sw)L ziCf1)-zRp%?M-txeqE~>fB}*;JJ^RKzTEXYFtpOzbA*jB!6fEeVa9`AVrga7%8@M2 zZreT^8^RL|k0NmxAX2_W^n_9C9PJBxZ9L$Ef}D#=p{pEb0sW@}ZW6v*l#VQc02eJ9 z7pcGn%nhNj6mWUOlP3Wqlkxg+$}^lYVoO@8z~8klQLmwV^z{%*%u!GMg}v$Df%aNaY0??6&0dM`!;Ra3I@^lBxz0?9o3pG+3~bccaaQt6p51W|8&B{&Nct7RIH`~2 zou*g)2+G3E+g}ONpd}LR_OUCJ5a4`VnjE%os|P=PL9`I?WU)nH+uya(bF!o!#`A!1 z?FiTeC;tIEV>7;qVB5R;v*RSg#`dM|k2Nk+B`rbqTHx5;m#Q~JTl9f(Q;o4v7H4Pp zQlA@dkA_pFTimiY6smjDg)Fg3nJ7Ovr`+JiIicB@84|c$fJmRwhmUW-bo^wti=<_TK zHZzdqHW_S$_^{bHmzp^kT&02*XFN6K$iFmYSGYMMj7L38O7ozmEk-4R8h}JYXvtIY z!Bsa!jQTF_RmLoj$a<&^aGfqCL71}@Zs_m z6?Gcdo`(;a?<=7u*Sc(w7I%Aq`s?$&y)?f&dpS|cIXIude`5d1N(+p?$+8G9z@_gK zpXGgdT!>c}5ExE9^F?uc&l{#mPpb+bf0uFx^p5dCP6{y%8rdgk&^Gg zH5rI!*pl*;&Ihn~fV>lFFn=*>IO$$`>hxCbDGN#3=Qf-QD!;B6gq5Zjuzc^>S6u8H zN33yLRK2R!@x1Q;9Ewa`#tkA7f9MbEGOqrt=bF)3?@I_r^JKj2sZ-NR;iEqQVJ2qe z0Ojp#oIuWANQ0@wy*pe=-*o!?)NyPtZ3*HTBTLEqjF#}D(}NGb@8zn#_BrW!J0=|| z_~t^9aPlGte@OVboNIs9J9KvBZ4yYQ9*2-(64nCYG%TpSiuL}^g%dvO&z)EiBu?p1 zrR$J;N)Ve+4D3ah<@}#>5+d07135KB+ei#A`;ugxZK_tCFs`NUhb=le0}%2cVl3HE zvMy%0&ln9ywm%vOk^dTw-VI~g;KnW^8P#%hQaaVh6qBmTrbglk>6#@1XRjB`hDRSX zF!p>~__d<(0>urFrhCvlLZe(bE`mSYiAGqFT!hg6X?a z<5l^Bmp1oXi-*&P2&%vLdPER?_}p#ExM2PJEs)E`zQt_GbxXiL2@DR@*I{htR#%#i zPjG!YD^3k1Dhv8w%w*Q`D>yx+Y8_FnP{pLXaK4>-cDClYzZ_#?0=+*nS0fi_YKdd8 zQ>2(;0^k039NP>|H7Z0B_P8Q-&Zf|GvNY*3=6ZhzEublk->wP%2Pb%9+#PsdL^T6N z!6N_gK!|HW7hKV5Dmi3bzr5vFj}frDC~a1|F&O-D@prg$3FKXIC3#7C{ zT1v7FSiM0y^1LhfPqHOIn*fyZ>g1-N`xr!yiU8;N$tGvg1#5g3Ct3n*9`!Q`OAn&F zvHvD2Fcc-)5WO8^M`C z)fY=msq7stPIWS64bY*>{>?Ea$P6x47r~_rw zwK(B}xvc3^-jc?2$+nC)wI~F9l~30ofLh;TdNL5U$&`0zG69r31MHOKyCLuxT4d3Xi(P4?ZCAEWra?jok}U;<$9U+`2}i| zc%L6YB`9@p_6C{NjpU_*D^Ri>B6YuCu7%&OMoSu8a&w+m+XI-q;&ztS7lph%wZSdD zvA@cc7SfS3%Bd)7`dd(pUMN%ML|SIb{??CFe}j)n^RFLtEEQhcF7o;T%ZvFqMtjbz z$?$oSve!$Cp7-Zxy1FLi6qCi@?#tfm9_&kfGF&_XI}cCVF)rTnFkQbunHCbAs9k4bbgk}0QKxXmR?xrS2pm)s>NuK`LkTn|CtLu~$+Lg1f@ zcV<6|{3jF60CG6#)M+S_;-!BVo_*}Yt^Y_1L89@+=W(U?P^`kdQ>c6LvwnpJDa0i} zst{Uxh@4o`@l1G}I*-_|HCKsrTzmKZ}N3{1vS)mdby(Uxh*6 z1Ah8{7tx|aPGtKWZDzW(sUojyFQK&@P~g}6t9*?DnyLri%G7VZ=~FIr-*Vl`G1xWS z2ba#Ck|DL+?0Iz?as4M*+NxS)2HrIoeWYT-&Ckz)tKn^fI*;wZ1=O<=B;YWAg9?N6W{{)f>a= ziJJ|!jC{|yk0~8DUUaW-HNKmjC77*>QQF;61`o>Ibi0=6`Eeu|hAV7hv*)rS62@#5 z=5wu=AJvm0lE;WL@nb^;ve>6`WEIpi^;zXs@Y*W zFih13J=6t>edp#!%Fn3^9i_k;{KlTo8RMt>(pJ<&(s9{f1(hcpZlzzds0{4d2SzTd zkJg8)q51^R5dQ)cF;-LX5NFq&%iW_d#FE~Sj?2l5&eKk2w;$!o5;nGTDOnDCd5}0H zMeiW`|BwDi4LpplDkP3?G^QCTjkFvRqK6wT;MSyftV^YUHxuF}x^N~1c_w{L-6PEE z+v^@2AqRSM@6d@~6%olEKF&Cf9zGU0b)wjqk6>}6ecDupiI*SxUbV;NUkP0z4(?*r z@*f9K$=~d(N2M^=8@VBSnEA3FWzIjV^1TiW9#0RCesAv`hw|xHZsremwmvscgW2+s z>g-`H5ibn)uqxMeccSrXS;HI|d!zO;!-dwC18=P*^tJ!rS0hP`*Rw}jzP7G`dHKOm{VSoecOsL$%p>_w=` z9Pfb%Q@s{Ty;#*yZc>2#2svwe6@>NCwWT-;Kfkp{bvO21szIu#451cTf>#eQ-+^kc z!Xj9E=+^b>7Ehs07>e1Jsl1!i#t@o07d#1c1mV^{jsg33F`RjE%i!;lHxJn@;&|#V zLZU;=OM!jPT!NBEs6i-vV@!VbvRo-QOQIBO&r)m;InbG#Us~wb3bN-M*#F@^-u5!m zW9AF}3kEuPXW{Di_em3$jl+rgAV#{*6+D&+*Z>~RNWOs~i9}tdv*>Ncg{6x2!;drX z=>MF2lZ}@=97<^Vb2RmAmS4y(S^91Un&KfHW+S^lP8d= zQ-vGtVYVBS>7g0$xcx?X_vHk1T03Vi#D~=veOR_U^}w8@J&nBXjn|+6HgC>eOBcTT zw*@|ksc4L=>IGBF{d>)N|DKl6UeB5(OZYTWzfRLr?P{p996e$3 z6}|%T?(`WIqVO1d3`Z4fDZvtVS&2#*D0JiTW8x&NQmrc2&kat~Y?HR17uC_tyY6Af zjT0c(WZ@Fb;v3iPeltf>j?zIQDpmdm7JqZ+BRt3j+!6GSX7Ibyyxl%0EACOE zDz*?V;pvxKQ~`37YOT`=wyb`xfxqeVtGotVB8aX9h)hR4Y`4`U7UzADk)rb}J$1Mq>#*L~ZhEiXGaV<2=TV~y(B|an`1MAbYLy~F{(CT& zybv4m7#Z$O;Fd~A95Hl<$`3;F=FaN?={%6nj7EG;hA)HI3nC>Y`gWVK7QyumFRly;!`fuhioI@pgjtJw$ghn)d9lFVzD zHeOCO5M?tH81-6w?otr$tSm}sRqyvlI-+W=`^K-H#-Zs$qR_%`!HiSg#XULq913gi zuYPW!^jf()`Kh9FL6=)m^-nQxn{M0_0OS$Zs@Hz^)XV=ZhF!e@!}>*|@IHO|8W8zG zQK^6(A>vaiDUKvhy>J4(@jBZ?SEXv%Tq5^wVgpF2gFi1-upf+e*jiyU(%T)K1K&5I z)nOtBvG+CAcgF6UW)-%UD1M0{mmj`RWvrjO^Y^qbb@x|+`GBtX2_f{GX~Zr5-$uxu zgL|hJxuIMO3#~}QPY5SG1lvsJX-|;|3Bvz_3Vf$SXe_wWZ2kVI(s~{?df{eQNa|kN z<@E25YBo)l@$gqF&{lO8uF5U7>oTIX<9%;dH<8?|yy0YPuD$p<@-e(uWh%wm2`5oF zx;`E@<#NOgSXwB!m8it5Y<7*R|p8 zJ!11*y>ntt_qT3Baxlt+8B+z(-W4Vm!1TH4;w1*L3WkbPh7Bo7!l(Hm4cXTR^aqol z#OKl<@Qtu{ae@^^|K^Lp0jw~|34h-~KY0nJ%VG5eyGarpxHBoWh>O1^3}yiJYxoy> z%KQ)6-Sh7B+M?7DY}|W9LnyZ)4g@?<&aA+QsFCnz#8^ZI+)ApMa-}SBtt0-iU2u%Msz7Uh{t$I=g*|Pm*T`AeU0}Zyt4-wSc8F; zcw!ohL0P0*83lfye6?!qQacP(3U9zfRV8YRtRRNkv+#ed-B%wybEsyy|JEg{yb+N+ zBL6Eo^~+g4irEBFT+r+2BIWuTr|H}uT|&k4b0g@2JE0ijjM;Km1hV0WeN#34QIyNu zF@b|JDuWs#o<|eqZ7mCANCQcTi*0@a2jw49H%~@4(S{pq2;z%`g~T~LB5n^ZSN4pX zODK+1ya~n}zTy3VIY^FrV5OsO^gJvleYMCgDQ5vwPRuQ=K^c zuVV;;DS7uHC}b(?(-Zk+)xwM3STOP1gR37N?tJ36?%w5(riQfbrIQp7rcn$jrcVr3>I|jd)))t>fbg5} zVP2!AUz_N7?9#E{N|r2ooK}f|$||Ys`UySOAbDF*?5lL}*gukssy|QEQ-Dr8W*1U~ z95n*M1yj)v_~R2$Eb^Q1Y1qW|k#KYVe{Gj1a#2{TQqi zK5y+=q9!rH2Z?uTj`baNRLXRY-#kl)wxmgT5!sS6G5m=YpBLFN_yMU?feuBGN?q9 z+r}XpI$0wMvp<@#l!YZ1d!YiTIa3SQY8xlGEZbw)@SmGgYY_-f7=0oF+i&X*eS#JJ ztuzQj(1dr-3s5OJ95#DO6-%QjXYr{AN-0a9d{%N zdj?(jNAZIDs*$avlv(Y~=ynQo;|YxvKE|R!95ym0+{mRvq5sFY)%sFGjeaV1`?DRm zRej*bwZ;YH>ZS~HRpb?FY(8rLuUV`565Bu`9WcUq>%I4SYxD2M;5~V9hRsO`@ntQ5kXbYf&YcnG+G8Z8C(Mdbpy~t0r2Fmv<3*~- zQp~7G2Dp3A?KlR9J<9uT+f#P%HP`K_14`qydw$(aCtMrFN8Hq|3l0YaM*Jv=LATm+ zU9tz~WB8dK2)~1pb#k^d6Zt$+SAhfCLKGq8qR)~{N~W!jJdKxw`uJ5CigW*;{Dh8P z>wRa4&yaC_^<$cFN^=_q`)kq`F@oArl4|y9U8x=v&+0&fe;dllmuuFdNiJ{hXQF^d zl{GbgE>Y-W&qw3!RJ!*eq!OoaZVGH)4TDxboeuAbGp;!x-b~|n`u`&6Zg0n$Ar7w} z*xF3%7${Bq7*01Nz7lM)K-^1!o$&r^&B!k5Ra#-V-!z$`L+i0ckhXDF5Aq@jC2@Sg zB5#Fb3HGTjG)qzSJaDq+js0`Ibppmn9mDUj=KJlcfx50rO|dK*-o%eK^dK0z9{0Xl z+dO3bF%TcRoo;OKosb4~H(p6g=f-n|!A)&-(;B)$UOQU9L9yfaHP0;BN?)jr`i?{9 z68s}eY{zGI%ScUAG^x^YZzVPFa0)h-K2Qa49ia-iP}^YWTFT+xcyN-r$hJW%-{?sR zZ))wd8P`dXtIFMLpB4-Bab@q*qMn89pW%wfas!uN$&KI;>kG;A_^MZ8P zHwQf@)`;caN>rYjh@-@Xa~9g#@Rv87QfXAmlW7{`GJNUVEim%X0%>oWom zA4WbOJMOf{xw(eCEGl~1c2@%_`_({|%zl*-&fjCd=6L)Crl)#wVN)d5z;EMQJMbGuuaM>HijKkS;V}ra?J2Tc_M?9b1s(AXZn4OiyynMxvLodNlm?#VX z*s!24T|Ws}8pfpz#m34>eKD)I9TmaNKoYAl!CVDLuwfsjE5f6EVm;T*d)W#i$C|Mo zGVk(*+Kw?Y6&5371xkg5z-X_=Y02K3175+%V6Rm;Kr_X;hA0_fPi7}=pjBUuPpjlM zTx?LLu!gZ@@0`4OzW6}l49uA#Ajr;%y0qc@br?S^0`Nx|F3Cu|i}L_kio;qQP-<_+^9KDWxclUwD`(+VeNRM~%;7f^&A zJ2vS@3uzi$=#f>*FA}d8Tls~ARQg6|zRHYH$VE4?Oq^U(QxO3E*(L5ria4m`nb^VB z_Y1sI`9Q5CUU)-zDqeed!um96_XG3)vw6yZxSu9|{D{u{o4=uQ{zNw~8BJln4qLe&;P_>O z_9JIaK=qekg_?}M^UdG^k^4(N$H!#MsRUtz1sg#wa=N34C=7vA_bf}6$>@Y33zUFY?zxLp^xMHRe&`> z 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%0D`0X@w@Xv8UY<^ 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≧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

6Mjmo0wYt(iqT|F$R2(LD{! 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

PlxvW;% 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≪3TzrJ;Y{o?>e=?4w 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 z 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 z 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

6b80EoegZtaESCx&nY<}mMGK^@fn)ObK;Y4< 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

%ONI?j~6ZCb=3wH}e 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 o97qG8y!&Fu1H3CYK820!GC* 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 literal 0 HcmV?d00001 diff --git a/web/src/main/webapp/v2/src/assets/fonts/nanum/nanum-gothic-v8-korean-800.svg b/web/src/main/webapp/v2/src/assets/fonts/nanum/nanum-gothic-v8-korean-800.svg new file mode 100644 index 000000000000..ad5f1dd9034f --- /dev/null +++ b/web/src/main/webapp/v2/src/assets/fonts/nanum/nanum-gothic-v8-korean-800.svg @@ -0,0 +1,498 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/src/main/webapp/v2/src/assets/fonts/nanum/nanum-gothic-v8-korean-800.ttf b/web/src/main/webapp/v2/src/assets/fonts/nanum/nanum-gothic-v8-korean-800.ttf new file mode 100644 index 0000000000000000000000000000000000000000..4bf036ca46579ab2413c2abfa0207be5ff14f340 GIT binary patch literal 1261632 zcmbrn2Vk66l{Wm|`_9|T^xnHhBWXq&Nu#b&u_d`kmV1+Xieo#r69|E9h*?@F!K4s+ zU}?K-e!dVpPU0jGLQQ}r%kHupV1Ynb>YC0jOXAV@+;>KjW5WLX?;pq0XWo0yIrp6B zJm=hNj&K}j=T31vcVcc+sq4U#PkoAWy^z7H`wkx4f8w@l|2~H2uj9Dx%?EFIS;F?5 zGsn5BKjApO_sSDj9lPOElb`3@04fX6Rz zu8&=H^%eUMxyBPe=3HO@8@$$gHC~Y3Zmh@e<0+T9`q;~Eyyt@t{sHel%W{mbf$+yKVoVDF!}?urwieB&R##kqUg1%Ji~+?y6}wKXe=tPWkeT|^ zWKE!cuKo~5x!V>WA+7Xj{9Kp|oa1@FUw1r0-oxqS9o*=stG`q!b(XUpu}D(69zNGQ zNV5@il&Z7=tO{%Rem1^(!fK!&8)b#1P@1jvmB#OmEvK5!x zM*fj(qo3mpcDb5j809btOOp3tcDYKaw7@RsPUVJ4H?9;V9x+{c(X*=+*}2v!sngAS z@{gkSHK+4ynz(e2t0Wh{PN(UYxwYIJcd({TObiS_&2w`t50n0LWkS}i%i>YZ6IE5W zJ6bA_mT5U!j*gl=J);=Oxj-Oc67yklCpU@#VO&mEe?JE2tUw%&3th{%)(f3wB0&~x zutg%7ka{XNO42KjtO-DJ)%5bC5yAv%Cza~*qsA|!g-SI|zNJsNWXZiTNG0bwr$mFJ z0V+GEyb=w~x@FnDpsjPul4n<#iq3VWN<$+ND!Ep9WEz@u%ZjW1<3W9pylSWH8uBP# zbP9^&bDy^>s`ClaJL(l0FaMop6U?W+q6>oS3$lCECGXq`C3;*YPaV8s6fy_q5_>~|u78R6{SoR($%DEi>3uerMrCEUY_n-j;g6Ml z`AgpA9}2GO=vvk8 z@wBh%>Ri?C^`-lro!4cXX0I2Dm27{pQYqea`KO*)dIz@CvG_Uq4E+|@1M8dTURCQJi}ibc zH$=WT^rInqZiu{L=wm~4D4DcR&gef*kyK~r{JbsZ2^M~8Bf4#}fIm|2V-RQ%{$!T) zKPbVON<>;RK*xpA3)WJ0_V+KaMcpt!ENo{5|1aP__7Kudzvzzxw)&BU@+> zbgb$K_}eFn{l{{z56z|Qs^pB+MhARvQ|E6L{T};Zpb%8?W?LJsbAGZ{KV+uDzcCF zb3x8?)-8(qBjjBiN8XKC0a;pd!+M2untlyV5H@H@NRbp_^Zxyt1yP=|^V0b2+SQ`X ze3VKje)ktQ{pO@7D8?%<96R>g8&n0?apF2%)^&Ujh;FwLd;}LUa4{B?*p>XSbf$+~ zz7dq*2(Sily>!~NiL2Mnj!V3KN){W}RHR20^@iUbJ9gofh9Zb3e{<7c{O*KAaiQJZ zo2f(-TpKrB%Vje0P@7YJbNZ1q?N86752s(5w)M)ZWh%F&c_SY0C>g}yN(%^#SdmS0 zf$M?<8*VBNS7eFNPO81WIPr;gg6Z3d2!q1tO7Li-LO+NJ5P!#M_vZcwbin?7@o^-pPbZ>WmiTOsNJ;m;xa?iWJigUjrTVR+7ztIU>liKtxf3gLg~9AwjZk@I#Y}uj2l|b#NMIo)g6cUcpbW zxx#jq@yk8A?(Q7^zQMZ1BaSTodhvDSt@Imk&gP?>3Rl7d5si*6&!bA1ilx`tH2F$R zvk~5=AM=aXDuSZ(otg&-WMJ_TIz<1O^CNPm&$(^a1${fMfi(eqO(!b+;T%x9F zg000S*b_eDdjycj&Y;*REWE$3xuScVl2{_S-cf7XKCcrFg19t!*r5z!*}g|J#(fBf zgNjZE2JHHTq{(kr)ZoRkrs7)Ni(jA${YS2gD?Om4QqfkJ_Q>0%dilKwM+fcXf7 z6J^)EP=SkHfRAo2aabZQ+g#_O#1>HwzJ+guJUCxqg(X9nHFZ_GV}82WlAA4?8g)@Y zcb6+&p7NHFOv}JT*jaKD*)GZEplD8McKMSB{vul_+iZcbEGXM$RW`hKDN^0oTiUZ@ zKI!ZBspeWcb4I<3=cpgrT+O}wJXgkwO3hV|S8u7FuG*^Af!5JiO}=@O_D{}C9-ic% zpCmtnI>7xZOR`y^of*IY=4i*1W!Ys(K_EiY4zLPYXeurAv$vbuF&#uTYaHAi41kecjG zdJ4mZUPF?MZf~VM-qV}jkT4zifMjpoS!~f{aHkbfB4$8~n za>iRocw~K}De0knIM?klMc&+`s-n{$=v?0&?JZ^X=pifx|KbyL4QwrgbgOi~nPn(Z zfwub}5K>0nq86JK^p$p&~1q;wJ?Ll==9&<5Gzy*~t z6ZXeou?&YX1(^r|J#OSrONN`2Mw-eZ-^gCw?`m%^n6OCI-qP0L8C*L&6P=1FF1(~W z$q`)=jrt2VXVzKSF`gr-1e}g!6SY0Mh+9=$J=8aC0NV3*2f5xZE7~Sa{jiOX4{qx_ z1#Jv2ewuc|wY6})+~9exK>8nwWVm=-=Gg4c7)FrUsSG>qyxdX2L;;yt++gsNxzGmm zWRVw>%6IT=c1u%XJ`DKN!aAvaJso7I|&2%cEtGtb9rZXH2yEZQ<-l=$b>u5GT zzNge*bHxh&%EZ9+kB{ zHdMtVf9=%i?j0X~-+SgwQFGHnihbT8D~>4ab`0_ zbhYo9?F<#VL&3I`r)6SCxoi7)ZdEnbTL_fa?d|krqb`3UW7^YkuRW6UdfPJrU%K5N z>_~aNsrF5gfvtnt!E)B_Y-#U`cC7D>g}c{v_G~M5S-)TM##_U_T-ad`=lqUrIu0xAUHlYnqyJ=C+1LYZ-QAf2tn0x{Bp&DFB}2n2 zmVzEb9DuPQ)UyBp@82{u*jWRNBbi~-XJDLxOE`eWda5n~^bzW2tE&SaVJQ!(Fk5@g zp8w9)7Rt-EM*pc{Y!oK;XN;|Wa&j2m41805IJxKE@a zFos1KSo#E5SwxfmC( zIZMIOAmxHwPKA_|3zB$V)C}<RZSVz z56OzYS`(G}p{5K0QkfjLE}kb}M_OHkuj;Nj82IWc>7)9b&g*)DqiEuAQ*+g2wu z00?($Yu4VrzCZC?qOC1qk9v&~^_6F`ErXSE#86~&_?q6fRq0%-i8!Vnlti1XNqn?> z`r?i4iCD?-M(l}pSYT@LetwGnfEx!_u%El~Jhy;JNYWbEM@_Nk`Zsc0qR|QV%omJs z{i-bpTI%T_*%u`Cpgq`~WWIR>UI*mM*+e(#z7&&#?ps(uj^}_R5Y(LjrVt4e1yHBR z(3r_HkJN~QK7X~+0lHuXwO1=E-iaYG0q-$3#=>cSq^&@%CREH`;inv-lyl=kuwBuU znT**oly~PR7J3syrnxS6?NI+!v+W&ohX+ejJvsaBz31Ps?VZO*Ysc^2y7BEthU;&L zl#*_bFVdOu2L8=7JULK7)W$n=aW6TY9q;RK%q8Qd&n}1BM>D-wtnWyKO8M5}>@}ln zPOi%vzJz=4p~0hf@7{Lzv60^0f8k2^4)>;0m62#PH5~2s_gy*c_UU}2G{Vuv`r=dc z`}8Zw?!sK#c`gLmY9(P*m=kzG2s;7g&MC@DdIO%X0vl@Jg%U|FMc+mu;YW6yCKaAu zq3ObC{i#tw)Al=55!|VBzk#GKDJstT;5Uy}1^uHR)dkI@&p0LRV!^JGP7;O%%wafD z42Mzq-Q4(@l))(8nh|liA|<~eAt-Zsrez6QZvE2;T(Z!%6Tvs&K(J|KhE5AlGaH7c zS>zSdymu)PyY%4!fKBsE->zEP9%%{2N=fJ2@5r=e%28bnw#G+W+6U66Jv&;e+D!T_ zO$&CduLL`bXE5}lKsf4OVVd&<mW#hlO&%P7IYhf-@k#OmhLz?D=Rp$opLIGp$C81- z2VS0-KA^F>7cT%IxA(kd`XwrMP(9Roi54E-0b%8fU~;Bwi) z;`cw8RMpN-A;N|M9^h<&<8qdjU6QCeD^{Y)veYF*dyyk-67nmC#)!}!i&SDFWb6UG z*VQ*V7T$dNs=?|NZ{In1sAw0cof`J`ZEe+EDmSs}4ohj4l?=1h^UYkZLL%(GLwFLYOX&1y`{mJ@aF9rnHVl5mu7kHEtAye(L zb;|_I76+~fb6cVbuJp>tK3w5aL5uu$=j?2f*;+u_!NH}vn+6}H8m#71*bDn zAjn$oJZD2v985J$20*~F8i0aE66|b3?L5D1FpVqw!C;>)#U{yX>;$I;hJMiAwgJ zE>U(>1&!J-{+B}rg?zw5bAgbS`Zv1QcKZFDYr89J z%YJ`(O>wYq?D*{)W^X?}K5_i*v)fOT=S#B(ySoq0mdmq;DqRO>J2A*Di%-%lO2K{( z6#tp1i;+9$Tsn&97S;tLdp5D`+$_iDVrge*x%y(UHQ<01{Vg8nJMaRks>x4Q5&jug zTRT2ftF->E{!|)BLmxp2DT5y$XYzU*#!_?G zB6_FI^)-n+jzX2hrI-L+P$Wn0hPSXdL54%EL0wjsVq6O%JGF{XX&&s-3jPE>rz55$ zU!w)|&8N1sf^>)A#4`IQ?0KIBwGJe<~$T1-l zviY4r0j%(F*6DJ+w2N@CX}S650rHcBrK71cW0&3)0&Ze*=Tirr$0Nky;7M87(8`T)n1w#NEXY(^JPym znzivZMH4{u?N@DrY)Dj4JBmsmnsB8C`iC+sm9lH1tZh-in=&gKF`|KQ)@i?45_TgqLFyv73;`16vI=G&urVWmVDo1DD~pnSE7jX zM@;*p*0h6XbR8Of#{-TPw2XusEG@3hVtgJ&1r{vevYQ1ea=&Vf15QzF(a;J&zwML+?c(R@kOo2=SG&0Qlug3bTDi8G=Jm#6`Cv*;+48vTIbC0& zw-F(mgh_+%YYsqzrC1|rw%9C>Wch)_=WVinKv(!X?%`nx2qgaqZNmxC_utK{+I~&r z-|>DbYx_*mmeU1MqlJtAf^-`p)Kqx+;Onvbb|Lp zkvN@5pGxzeOrwk%o#}XlTH4xmQY;zvA z%a1)M8`nCCT)&vM5L^%WD?>BtUnB#Dsn_@8(mq_;#HABl>V6UB3b=*@Nqh>3&JRr2 z&pDWAE_8vp1jp=W)l)EEFXop;i2(ar{Y(Wn;Lkw)n+%7L^M+*O>yMKO3zc}LBojc` z!X%0|FKD)lzh43rYOt!=P%JF@L>je z1_#;g=OlxF6pMF@rd;$}cbpB3$`kwt=snyRH_1(*|7S*Q{Zx@wE8>G|Dn;O0PUxYL9A` z(BsSPQ7ezoGS!r0wvy+oX`!0tBkQSRY=c{zsZCSK*ltR6_5{=A)^1*MZNLiY+1G_i z^Ma<*?gQOa*5@4p--*(dWY*V)&A$$Ik;B0XN!LHY2q&_s{t1@Il1-Aa&X9g#S9$#p ze_(5e-71b>$oe{6e%Yq_N8WMw-4K4y;xPAoLo?@@Jy>l!jMP@GNDg+7k=mAKm}v|W zXT!lVbF^xyQ!85eFk0I_XK91})VlM$u*zV-uZ{a5y_!A&i$mKSKp$S>Y%I8fJH&Fd zN=|TOOMax<0NQ>leEv?8Ynp|QWHA`2URMhZtZ_fzz zql1J|dX05!L8>T;V1TS^#j3Hea71oU1n2r(VO?jWYtwbB#1T&+pE12IL66N>ue^d$ z#j<)$|C)A3F4a5MZ&Qn?hIFoK>)u@Q+U8^`8cxOZYy!Zyhps;MLnEGuY91T$5PK-& zOQh#8;n~H{&`w_9QYe)pEl)FWSPrBD4nA6QKkKG$x7Lp7J{W~xjuI4@?>t-5i1skK z9c_v%DX~x$!-|+I%x%g4EhR!Ll{u@D;$8-e3|oC&QWwA+XnS?hJDKR+GMI=DY^l03 z$%uT^pN~1+vAnlDGL(a?1%21UAtRC^cMuY#PXaf^b&$z5@_HXJlk zBTxf)xd(+vWMv{uCl-so&{T@RNaJSZ)aSn>5woZUt6~akV`LY4KHe!uk{Q>vuSg7T z=}k;}MSZUZf`37kj&===l)d?w+Zk&SG@nELz*{Ddtt%w_#LqPI!Uf!Fe%OU>@t-J}1G#vJ~PWfK99k77AHt z^kpzlz!JD5TOUmBET%yZ%dIHM<@x144J=bjM>6pE0;NzY|tKZX_^ueOs$ovoT z2I@kq&%|PA8b+t7kDiY9Hx1UV}Nw6`4#`@^8=$<{+T464e z)v7vx<}rcjQeXkyxU_PXJE72X+RISAL>9oV1soxT(#j$$n!Fl8(nt@NJ!N=W zLhnL-83&5^sTS`E{V)kE9x0nF|iS=Dm$EbE-G ziu6{EFh>1Wf0u=?UtFm7v~0?$Xs9BxGd5f3n-)Ur65X2z6R$YtZpp-C$8Jr!?LgNE z9D=7@8~vWsMEKZ->DfJ$PL9SR$knIz^}qHVs>7@0oM^zf`W+vn$5wAkRdb%XRWqBQ zN5*34JX}1RvWPi`1F1xKU-(q`gW=DFpACzp@M!p!@Z;gdun>ND@iUM?*qbtp1RTBP z_PhkjUvhg4V)QLshrHdIGSUc?fu&_7Hi#$7uUpZUykAq+w)X0(x?7XoyFKWgzGAgs+Pq)YXGlKwiQ$8li#99qI!_ER?@kSWU^FBCOa;^3Y3?^MsV>zt?Md_ zIqoO8ZX9kjSJM-T4}!(?@ueI=XTj~Te6(C!Ho!Wz8twCFw!>;%rv6wfW`llXmuFoB zD<$dAJH}FK0r6MReJKEuH?B?nwRLJnTuSb*#Pqd0kdD^2Xd+57J1b;7@n8x>F%XsB5NF zf1fq$87LIB6jX28Yl_>~#2k#p&LGJ7OtWOM>33K=Bv{X$#iYLobu>|Ya}v$zHCCth z>(;1IR+r7an&_QKA6mdGo|(!3k}zv%vmOmOV9uAl?pXanUG|cmSC02%A+~^K7^bSl zI+mANM;5MFAZ8x&a^|tAgGP-BOJk{KYgMWLq|x$X_NvkGgA=Lb#G&!=L%9E0vMcFy z;wIIVbU4s6P%4$@j}8qToyYx=p~1ssTfD25O4Tayc%_y~;vU1CS}f95N-Qupb*3C+ z$gSq*V;(+unj2jYpLt>YGSh_?8J6FUb|}S==vi0XK!)5y)@qH-n?_qyyXLn)YF{PnAJO0^Cbj3fBA$|V2QgJetl5& zcuH1rVA)QXlR61DlP!c5MIab0FGaQn7(TxY3RfUC(Xmz6&bF#fzn<45#k{zaP4C`lg#7dTo}HWBt>dNk@gl1utOJ_3 z1||;v(&{s=Dam9{n53CkU;M+la7_36v2_K8Ww9W4oK2wNWC=}REhFyqEg3wjHAg1w&L+Z& zXSB6_tkr`ZC!jgybviEuDT#)(gv%LMB7LQ{DX7hbwBjgz7r^)g8r&0XUD*Rp=d*!d z1!y3^mw*i(A@5|>ek2y)-;h{bHvdMTWKEl}LWYUh|HJSM$ZrR+rNB~LlV(7*H^Md< zS$bsc{A91EFOx-MhB)PRPkDB`w=f*Ih1x=~h%C$4V`M8U1|jKSbY|e+0r+0;@x0yw zfzM{zCAVr*ZP5Q(g_VHk7ayYz@&fQUoUARSIGszWEE+2w1jx8FZeHSKL6>8NSee91 z3eo7aTzSqm=cNf4A0?W~I1U_;wcWa`d7`eiVQb+~!R#01oauL{FFQikX)2i0FQ(hW z+Nv3n)>KoeACHX%4TQkOMXZ#ckvh01Kp%$}O+!q|2zi%?b~yqpajKUynG)%yqP9zx z=_duri7bX*do5nr4I;IO-BmJm*=3tte;2tLcXmhz^d!FlS8e6WHQgEFLh+ohI$t{%AVD&d)a>R7wj1ZE-rqV`~d?`a>bgF49E_fXC-Gp zXBZ_buWF3DF=_^fntLRw?nc}Mk7~I@3kflwSR(HbB;lk+m5<+}+MGvpabZE!k2r1W zJs(%7b`o!1QpSRnrZTSKEv&Gg24;M3B4C{zN| z%VG|IwqQ<*A?%%M=11PlN&FDdqJU7%@*|bHnJp zdLkYMnPK*tHo>L`TH^PPZZKuwE=iq121ad?8e)*Owzz})G_9ju0Xtp{%*g6WWIJB0 zQJT&&1=_9sviB z_Dvq!;gF4c^S~pp&j-CO7juqQ7cdJkEIUQD1PQrCII!Hz>Qi3c%L2<}t{Zb3AuPbq zwV|~g;eq}xx3|+HYjRegG`OJ>8tNL1vAmo;qtk%LDgmqNvhCVbh@3o z3vW|(R8r6!mstD&KSCdFcBmgXdmOt-S((#L#;on8{+aS*ZUB3r2PUzl-gC-BJwVl? zGpwYt4=93tR={Vm^Y?6Gl#Di@&&B$M1y;gBf274UvSN#ay=ZlCU5c*#=?+YGsUnSS zJXVAD(sRtW+0(tWkAR+5@&jwz2DcAJV}siVTGtHZq#NX(mUvslFd}X7_8#HyIyRmh zpFFv-1NW2TxZgc=x1k^aR@09IW;qT2u6Q%~d-)!tDcz zT6uiwr>x%sp6{cp$PegqSoC4eUsDvt?{^|lIoW8L*;+)# zQb#${Z1&P8eWgUQqa*1+`!3Nt5~+@k6dvpJPWC9#fi7Lg@*@bg0*d@9auT9KRe`{? zurrV$=VVWkTvh)n=_cd^K1PX+-$Rb$UG)r)^;NP~4L-#0dEq1cZelxv4+Y3ixR21E z1CPWXaFi@=;dboUVVqeBZ)5Fsl^7$=n&R31P!_3{nM%ppD7r7)f_>kn(c#xcbW?i; zS0YP((wa(l`+a%YCMrGfr8d7qNcvMP_)QP_F84wDeOxk7LvQ>JEoACG z=EIjf8?Fj>)!n=OC9Xxk|L3j+T8#XJtg)uo$raI0%RnJ6R5RV~avN!D!&U>9Dq1dv z)ifH|=f9aOj!<}MDO~dsBfI$}Ui-6>`SX+Tk?)cbOJJQ`OU<21F`2csjWQ(#gG^0J zvSZR)I{D$xi7@@=-uRD~80|~V;LpnY&(9#X_aJ2t^T+X7$Q=BihZf(WKTJh@Nwr^>7 zy0CsTT!dapw?ce=bQq-1vn>WSGnvF@nK{>S7j-R-oS{ss2a^$`OMVuMY5DP`A|(@< zj*fJuy)DzcCsToozX$}VD?qolr_=51Z~e;lRHnT>lWO1X^NslZ(9$mQEpiaPP6L$m zdDKE^)z z`A^LrJvYZb{F~prfLT1X_)hv9cJImPcHi(IS1e`|2@11BxKWfAA1 z2T7`axK4jM$KHtnwcvPzR4l!AS2##sCKe}mb{8{xSex(ct+mWtJsKGZYF>3?C72dZ z*o4-(R>>ugPbt)^z5HnGiV z?Hv}Q57scfWGeoo7i$V&--2&s)O3p;k7_r`XSHCqJC~R!c}B{EYrUDyh|fzU;f+T% z`{AqF*LFu=RmioL4TIQ!C&|1c84s(PUDL!)pWCo&x?`?=tmsXp6D<=1k@loZbS9j; zV*QD|hvU`Rj=|1SN31Wm3%fInpa;}wJ_bR(XYpTnJAE(AJH;KUsXkvMf{Jk>fo-(| zXQ^SJLwBIoB6F!k>Vql%gQ-uZK9hPjWlN=GheIBv$I&u~c@KT>4|X~I?%luo)ow?~xvTo}-tY7s>#Kh$gW0$j-$kbAmpBKA zuHMJ2w=0LFAR03CX?5Q*TLmNP_rPqM zPNmX37zHj8TD8m^M&8hD<2zps$6T6S4TMciGOw>X?Nbw@(}$h9)9CD-LFb+K_2VN~ zy7X8kS(zZkd_pslW+tJCdNelY4|T=Yts9?Cc-*0ZQss*Na<>}pPoAD0NxKW_?s)fA zFv}dWroZKruTB#gG(4!^2x2c(e?s4>#3ocVP1;gurC{pACiP4`~k%x0Hxen$&FUxGUwNu1&+~hhF3NMS{uI$%!|%9v9=3ldg{3o zeaElAu|_`cm>3>fWj`dR{c6H-^r$0f`jaZO*F)aIzYM)s60--=aLh@P##vZWI`2(8 zD=dyz$UU#Q>NVsr`RA*=MbFHREBCxEF_G9quYK;h{q@J*m|UHB^P9=!SGun5ggigZ z9i$h?ZxKPGjat1~GUv?WCU2hL*ntAbLKuf^&B{UT60J@i`#d}jUCvaZYI z8@{kzJm`5Iji9rpAi1L6`qS*Jl)JeDypQ~v^8(ryK|-?rAS4XnNmFyF<0(Fc%+P^z*Wv$#7Vdl<a0=NO+fDS)K91>?W!?)H*w)`{lGW*~ z>O5GvrS3oa&3cO$>hv7&+R1BW!#E~6B3{zr_5R+DgVjtMBzHBpho1v?+kyS^hwtYK z43|X_tx>aTX({#3^&ju&`&l#JnTd%S)4AToo7b3R9nRi!vQC~en#Q_qYX&yyb&-8t zC%R5`@i<0?Ntji#*nwSaUoJ{;%qlK+HO_co=+uu60xSQ4;V&N=Q|-+$BAro+uosqJ zG#ox=XT8AYx3npe{$33`<5NMW+NStIs}hOn91hoL7pM{)=xWhLQNB}?MeXMuak2jT z!nK|4S(GGA(czg+Y66NtF7Sf^Ptd8Hf2==FT?7i*a$j|EzS$vk89&|8;N}*8JpX9eB&=S zE^f4aZ6o0~ZqLlD-FWXty79)yOvgsD@z&tXy&E6h_?3+ckZ9n(3qF=BkNmxytXWo~WLx^3|$7f^40g z)WiBMYuYJ5aN&d7Ke?T5XG$I6VtCa%m%A_bIF>-Jv9Ya^Pi{zq4$BNA?lyIk?MP_!fA`cTL;gF(||$1y#^9iYD?zrr?Vq{${^ zsg&e7`M3;T3i3X8f}A1@&anl_JPM}FWP`N`3Bcnv)+Lh${Z755J(envFQ6sn4Vp^c z?2`^83uqq>c-DBdJ9XDuQ^L}`g}Z|9g;OtZGu)c<9Qs$zR4V9{V^?<0IgdMe=Qy67 zZEaOiZRKrhZP1RTTNZsGyWp5Z0JD*YY#FRsL)r-3!yhVA-keNpG_I3a-<@zc6+pZ>T`b)A6r>F0v1wtQ|M zIkBV^mQyaAysn{|4r&!Dpd8#c!(r2Fg3eu17Mm%3wjM!96cBoRWL8n@uVFiEzT6%X z%!sdk4qY&JX=+un2VJM#0gSm*m-PvEG;_Bn2*2K@iN*vApReUM^GUc_AGe9yd7c}? z41&k=Pv>bVKboJ*-P*%?>t=9(F+D8NVNVKh%!4y?v1r5gM@; ztaa8w!^dK7jj5&Cp2|!7rxkClmC6cPmNt9wp!o?aAY+myUD9vGTEncu!5dq>=DQS4 zm!Dh>A@C=kbesmD`7Dpd~8Gt1X?D{hs!87v2%FT9<-NXR7a z&g~1I2-7fImsT)h87OT_oBtPSbpfgMGI6bH>4xw!5FU@LlF5!_RrL#+4iVnU?dG%S z@D0K2c5&A{#taY08Eq#u-}bxIYjrY zrf!h6IYo`u9|+VY$1K^NfNb9h*?!L#ZW!e;OSbt!OGCCl+91}{y@EaLCo?WdJ9Ll* z`1%96h#>-*LA38-qKz$!_H7N(rkQAkhG-w!iOqR9tA*RZ?Ma-2QFJCU0PJi*HU?OZkY3 z<8f%OV$Rkqh)b!MXe$Hb7C>&K)`U8*2Ak1b+IKgWc4%3IZ*GV%uEM!XmT`Ju#R47G z)V{wuV1Zy)+F6`#px|NACb?%y`yk<4xgC5FmYe1Fa7V2Z0?xSI>mazA`$*SKU2p07 zd6#W%*S%e|tE*PTQ333@zJ4b38V*qHKby-HS2Ii&Qze@N5nxBrh# zct<2h(z&pE2FFEbByE*Djjl6o%Ip3gTQI!B9t5Mcu--JR_YimDJc}_1N8Pt{(^B_n z_gwdV-H&$*-QDAbaQM(6aFYFJT&_VT+;LF!{SRd_g-B%oel!a+0dHjjRz6uE`wAxt zv;gs1l5CQY4R>ojSq@T7G>9&)CQfXIUSN==^D`jd{|~0W?1ih9o-{vLe=h?gr6Ri} zyK#25Ug*Hi-1^4A#OldqtA91D{==~Pe_yitn=Eh9+Sc0e7GLe?I3VdYP5OJm97Qgn z*L3mkC2b5%GonPB2LIlM!AF-3{4=nlw(9Y#sq91Jveue>IaE_aJx2h zaE57Po?*hXV`Cu(|7xzA^tb4At$wfmsQwk*rt5;02k0T&^_lCtuYcfrTkv}JxtMLo z>vnu(2j4%rR_KV9}vjv1abm_dmoaC#=-%f zWDyil3a41?S+KZzfJ`9Fi{C}Uum^DgfAKcU5dJrj^#51#@P7iU*G*Z$;5w-HJ)jDH z&WORyuL@f0Is}U<-`*Cf>0J^~1rKQ;fBecd>gM zKfO(>*HO+Ol5iZT%=fFdnB>2aJKmpjj}!b3PU z5d~qZjq}nx#|rvZO0hyez)>bIiT3%VmkpZB!DDvU zKwkbgfv8h(t@G@3ul2+>@3hI|vW>j`rC!|zoZ%zu-R^}wNb~N?MV^{xC&JzM(l0~q zd%0EoYQWt|ZXMUtFadS-YM0v97Kym}Fu!x7qvIShK}->e9p+@=h2=S7y)hD{0p^z` z3U#c2uikDP%Dc>OT?PtF)Xy3ii~JGYcio~R;`>w}>JU7$nsQKKSc}kncfznhfQ=X9 zg?29k0h*Co74(n&~Dlck*lE1L3w_t$y zVj$g;kqdzRh2onNlS3!;3 znhvX&1OM>gd;bPKm7o>I53b6KM3b*_@aP;JT(h}gQa&jL^7CuQ1Lb$@MKkCYhv*t! zzoR6m0`(`Oxyfoy<_&q?E-IPIXlnH}xbWM!DBnv>?6=-)W#ToXR^wg|^2jQ3?<#WZDzb{>tW79R!65e<S@|3Qf(plGdZZaP2Dke4A(1sCbr9eFEsceTyKgjJt zU6@DFD#?Xdfsk>FI7RE+3HK>%m9=~sk}$GTZvppkS;2)K-mq%T^vq1En)kl7u=dFK z)RE~-X8Op~_>r{*(%w2a*qR$~gwnpYb^S^F(*|wD^#kl4N_!=^&0+E%X!W}Cey)Rc z&0-^KZD=)G0o{t5e8v59_w#Q4Rc>cq%!BRO zXPz*B1v(u=J_(gsdP74Al*jZ3m?yLI@WGvFRF&&bGUkMQzS0^YyIonQ>~h!zn|r+iF3T5+ zI?{bGZFxP;DKgT9j(}lE`Wj7)hdjLy!A;x-+5+<~Gn0 zZjNs_z2UwM!UlfeQB)`g*qOLP1Ee@W2Hu1dviA*>#Bh1IHp~wX7jbs`e~9E(k-S1A zheeVXtKyW%i&fM;|4=25RLN~sa$}WTRVC9^QZ4pik4DRvTgam=WAj~w4pP(D|pjqbC?3oGmIvTu_o1XcEQ z_XvueiX=@X`{ zh<~rc7&qC5+qa`C7y(5c;S${71Ac!r+6aY9XqDJgK3^iidafTT+2`!X?Yy0N{iS@c z@d(JpvKcEOY}yXSXJv!9&$6UWy!cms|23QahDs|w-=@R9`pq}re84y1J?9(ORo|rN zoOjZD?KyzPhtV?oOL~wqfnYnp&`h7V{#hiCEle`uZg7ENdFWW_=F)8?-m0Uh$FetP zZ_DyDYiG^WUX*05(==E*vv&c_M-VJRH0y$GR5c(zCOs52m>pP8tRpf1OhJS0sK0>P zn@nsz`MQh0^ZKZUfA*_wZYZ4@+R)avVJMRxo-ej{l#6Yp4$8@9pDFozb?vpjs?XQw z1@YQaO(v`Vm$NqkY^%ER#@~HU`_sNlUbI=3ENinR%aT{w@$SS+Na7@p6KCIO><~x@ z&~XTRGvIEN0R4tgT4vgGzEB91C2g3}(o!htz7I=bI;FG?O#7dHo#L1OIrmAH?05+i zM|#?9-Fvos?m54EPQYpnz%?DTzT!1md_IfG3kcnwOJnSIu9R`)+HjmT8l_s;sUg@A zhdi%b7ewI1ScZ%pyh+aQM6U1T5jMH=XQz!hiRJ#(3*^w&vh8y4;eEHO} z(rzzc0wZ$B1> zHBzaD!{@wkj;zD$2k>ziLN5$q2OUD-99FYsjL4%bUwX<&jHSj>nFi{4!;BFLl@C7_ zPWjQuV^QINe29S^nnwZUO-P5+!nX=!__0(2Rb(EOYF1&rR1$@O+$;`+sXm9^1Z42> zXuLXLhoAXmf$`+pKrKj{V%OX(<9wC`I{_2!EYPP@q|forP9)Jv;THuGeg8Lk0&lVcSl~=S z_F141d=IbsPo&3xT6!!%3*)6R?h8~1GguWFl=KN>JRZPBtBh97&^w)F<7LEHT~=0Y zY z(kAXEK=FA2ceUafdWc<GR2t{7ehiL2iaqpb z@s9$B!7>-=r6`VQO~Gf%&)5nRrm>0H>9Swk#6#`&O{RF- z*P1t3f~)*cYD-D@>p>ErHjPR6BH2x4n39P+CmdAE&l=Sdm^IX`pd!D%jlcd4PL<~u z)S_X0Ann(H`nk_S6otzBQ-o-IHXDdMRYx2vMN#JDe%2}!%rhrTZ@w^#26tuQPoncnx#IF%fnzx&U zlc;UnsD-Q*o;RCGR?TU!4Ln6O~ zRpXY-ffO?A9^yVBa!QrDrV+UH6}cMDkFz%*g^*_u81jH}A=5zBEUc98)ySZnid6Wy z1(Flhfbly{ZAcYFTOe274w44t@Y0=~tpMj@YjBQfI>&NtEKPUj$Fz@WC24S+d`^?e z7YfnyMNVWeoH3fUx?|KifLE5A{CvAhi2-UTCWU9wM|3+0F8{Njga5!QdF4N-um+0a zG$^5{jx%p;wuIJJBUx_wkKLjgssd{wM-}`-aH<~42(G47c~~tE7u)GJD}gXA3pDCd zD>$u&h4lw=WpbrNc-LCQe;t61YG{$DCq16>>T0Zrn$^b2r(j=QuAI^nJv6FClpDAK z=xP@xUc3&AyoPiO&3P}#>l~Ly#?4LFrbRAS<<@@m6+aVw|r)pkd%`4V((7pGma*K-_8bb6!br73$ zKZ6VX<8C)Xf1a9xKu3va0mb;_61GnSSOC1n$_>M?(ZN$Fo&gMC7NnE^AAk0-+$7)ybRj67#frqck_5;1iucSR)yY7tWVONu(& zXwlsb8=sE?5R2s?Z&{5vtoLE(3q4un(m^;Vjc7zTrStAA8u1PolaKrr#*|)uOgXEC zECaC+M@9$s#l;3T@*Bim{m^Wl=2f4y$`>7(+Eexa0T?T5=0B@8wox$FUSAv;G*-w>0lga@@rv=l6RI$s{8t#wNETEhpT7P=by}_&%K7~70F5jk<#>edw6}t zViX6i?*$5HAoLnuj>4&W6CCLX$bI z@EI$|{gmUl3`gXLDutDxlG)AO2GNi@fUZoU zI3V6obdl%5a;Q9l3{U`DLBpU(J_Pq@FT(lZ@;SI(;1L>_+@D623aK?Uwl#fD zlCcIK?KJRv)Sn;XAYo!y5!w)eHi-b;%xWa1LE%*_9r#heONAl6 zm4*a!UZEExS1w&xAlPjFTr4E8IOy-|_Kx1prEpA9IDdqw5&d2f{r8%|a4-7UpGD_% z*A*j}q`n{lL~jlU2su|Etbi+A#vtRo`cts3!eP;r%fUbGgc9IX0LFdinb7)h`gd*$raSBzxP5fX8(rijmwiAFa0@A$a>J zxY0NZZv0b~4Izt9@#=#VoYx9@<1IA$Bz(QH^o6xlWVeBJyNaSg8)09t(3r0T`Q|U0 z7g;@T)Hf};DEB#Qg`bP_T3`a2*>(A|g>|{RzG`+|?v8H$fX)#(u#MSA)ekukV;UEn z%^VIau4(hn8&?MqFa}P|iieOFI3HJ!P!KVG zl!v7R=Do=s(izOBm9pAR^Y{k z39x%ePvqCz&lJ|%4d8=yfe+R~0mRF$w~+puhf640aOaa39W8$zbMhcAsa3>QF>gsF zi#b+geUWE1b8dF!toJ(RubjUkSMEnWjSD2p48pv(fS<8}*$N!`kY0v(k}u}GTdP6MlP1wu5dOWClLZcbRqW9~xGR4PB?3_L4 zWd3k=_93Tv{_Nkb`{aha-{5VC`8BWO(F7etANYG!*kfC2b5`Y?$`hh{unm9{8>oc# z0?2R)3C$(iuk0L`G|%hR^W~LHUHLgK53V2!$uaR?>0z!z;)-$%&ev4aS!TgOSYno- zq4~rGa8Y!d7k~ukr#E@o^o}eH`z^t#?4*`s1uS`6XY5B$o2&aU31PrnqYDQt1jD{;R$Y9q*yXPrNdCX$-7B|WDLTVPZH<(B5eMLo@ zl++*_Js$I{K~A7yPCQT1e6=v00UFy9z8xt4+6ox9j5z?qZe~x@Vb?Qlpj+F4>PxI8 zMV65|^)LlY)qDuR9t-VlN?dq5G=H@b{&p^h)<9FH1U{>yea|2dzV(^?QlSi;EYBIHCc1eO26=pB`W^VvI58?RY ziBmx0dBZh1Bwoczr?Z3nKR8JHfXVbOJxDtO7%xQIe;(Wtgx*E0q4vaVxWL>Six23` z(C8z7y!PMV)G5o1z(5D-K*2k?f`QIq)oh69|1L99cH5jt(G?6;c6rPQhq@Mq>cq3~ zsH(X=uc)e`4~xcEnga|jL2hov+yK!GXk-zop`R z!V8t9#^tB+)nU+Sti-mF+Y1QYRf|fAIRU7k%g*#7T=TN?zxkE%#@ zfQ@kBNUs9AZnfFPv%f86t`0w({SCSRkLv5RCAa3L@PH`xwrWc-TU)6ihIle*!FlEm z_8OuIcTzk6tV_9l4NyfxnTp~$l%B{KD8f1BYW6+00@BM+dcqIQM!>%%sd@{>Mqv%G z$twYIY6aG%0_<ac>uj>mVkyb%><4sE0_vUQ`;lz?BT$4NU1kqVXhw!o=>N-`1 zLga_0%`1YPwWX!Cox%1kCWrz-Ywyw7-Qc6*ZqV#EhI`WVs6UO;_Qc{V--*Ei#yHem z0~zRqx$TF!AsuVM+rA=NF1{<&=0<0~Y-+4I7oCN83kGX3-ja*Zl8O9)wl6fNdvd!& zjMhSsMU2u)n46%#cbxqZK)~XVNXWv-m%?&!MZ$_DH95d`6_;D#oHIvlwre*d&TG_a z9Xn+Gk~5YK1hRO>8?Q0vUqA7QoAawW83zQ|eK`c!eSiQH{Kw@^M5TjXHj^5WC}refgSPtBF3219A3+3d%w-&_ygz}F zI`T>mF-JTqqgAbe%J)z-UZb`eRsUWRZYVF$L`q5`ney_6a0!{THd(FB#XuAv9393A zD>=|xQP-F}EFt#}fNTrcg!~dr3&YQ%V6cx49e2DNG|(yTCLkHX)B9 zIr-TKDT<`5$wfzOi`nS4EK|BPnuL(YagdJ__6%Mhg@olS2&gePR3ENF$b=#YMFCqj zA4~yhv>e)lmR_JCvV~w3ClFR~LcGtV-LG3`fkU#Ebrws=EGFMW`Q&?KtOoMBwG?6z z6M+`=5LFInQBR2Qvc*E6uIoI!g+e72{tfXKo*do+XEXXC=HrzuFrU1Rh%k{N0i|rD zNQr9^DRHfMFXAPHvui9WlghfrqIGI1R^nnFE8*_+lQ(DK6abs3p|FXd2%ZQbYd!$* zgvClCMEEfPq(eB-IiLxtk`umbZ7YUXfVky(7ytwf@~{pZvjyfe7xr@5e5C8lmTC(W z+jcjXiHwQn8RP8&bm%Oe=~fFgt0Tg1ffay_$gu*E5dd>!AuA^Q%Hk@O!2IgmM zE%`Wj1Pp9mP}ON&U$!<;Rh7USi3e+v!K!2$fT;#R0-U5sfRf9#hb#W|+h*|q->VG- zYVkG)7(jkh8BahJEo_C{cC>+BZ*vjn~`RvAM?Hh{e-_8p^H1}G?qfMRyk6dh>S&h&=XbEnD3II(>hL~aWskgr2ydkxf` zgMBc8vqxGE&I!U1JR21A3IHpxvL&4}90s=9oa_o;!@&kmXv2htQn`l0S<9ckIt zvh(?!y4%QlUUl2G``iC@T-6~)R~8ke z9jvQm9EMqb=`eQ>`=4+C+96_v?6`N3 zM}_Z=T=~G|AQO;SdWMkzG>}!48Y{(f83Y20cyztm1FiUMwz;Tept?AGS`p1-@L1qy z*(tmzl#`zcr^)!#va=W^4;?(W^~z^~@y!IYQ=Em&8dAGi1pg_p17bGJgxrd08JSW{ zD_E?=bU^{Vf@9#(gF%IkrZO((hgK~mC2+vZ4`)tt@M{qSId%~Go55`7&KD~Q;;fgQ z^Q(fBtP#Ep^Zqi~zC8C7pAD)ewla;`QhV5&GD@XjT9x6H0=nI46^sLKlY;oVnNj0(7RpHiUXE>~@iYJ}v?Uh@~ zJ2o6%Ee$m|L*0!rup|>T#i5mfk5-Tg6V!-t2Lq$ zlgXyT8;_@G2v*`r~^$ro)uw@M(ALl$;QlOHG#%biA1BUX*8>`<~0ikHr?iNGux^j zR0D)gtv0h^&J&lFnkCM_OOLL}?Feyd%ZWlCjc#=8-Sd=JR3od|+Im41^0C~wKWyfUPdoprS z27S^AR!C)8XuBX|mv#gWUIXXI=`teHquBYmA_wUE)B*Ye85O=jc3rnD9oCYkCu=6s zdzYg@v6hJD6qpZMlGU&VgUTE%uZ80w8d~C~TpFxZNl&RrTs4kmA6di*uv~q_;i!j3 z3-iuG2in($uZw4AA8I} zv__x9;WKI_mn~0JePU31U~G&E&fJwMfBdv4sck}Cg4_Ja_p-!Iz=571-l~O*#Bl%2 z*V*=7TXJ<{<5fwUEqPUA&wg2VW%^k z-oG5}3sR_t1ZxDc_M>N29*^6OjyQB60OERid9*5RGQyD)S2WEV-A>-af%BXhAUy~iQ8^5u#7csC}=8o z;+j*AdI96Ox^wgov8yKAI=XhP@UZU?d3+?0&W1MD<|fHX^4q}tl~{!L9od!ZBAXsa z{PxN52d*C}Tjd;Fzuq@CbHB~X-fVN`camgc{w}dV85LAnr~*Xt)n^rDWu;hyH)~S* zlhV+B>;iq5Cp?es+VS;LE$eiaBtuFq#2>XKC0eDfRGNvo-5HxLwiuQ4*c1c*i^Rfv zkyH>DK~l*fR01zz-BxZ{Qb|U;*RJgzeR2Ks<2y>*J64pB0F|1%sx~b_CA09S+Rtv@ z{Mp3sUp45-v~U61g35#!fI`P?B_D=DlaxXRlpU!24)o9{r6GTE0_nu_)Rws@g+fWC zHm)OAKqNe#pIgb$d(P3QSfGlj1f|~%u)bX}nZDKY>@}q2mrb{1*CUxaml38v=E(F1 zy^cIPD$EexAiS}hAQjelsOkhx;oVOvyk3vRgj5P5m7Y{eF1B?;!O9 z@)}81bB>&GQ2W9FNdoW^#PoDtD`j$z!Dj){6C+}UY!9a%?HC&B7`+f2+OVVP7e9~J zqqJ-pu5YZ`Skr$?ElK{e@1_Q_Ij@iTE3pdyReS&F=>3Ve1VO2So}T_Kt80(-V@xLs zYUxPFg?A@Z>Rt1dQaZa-aIi8MA(@(HwwzVl?KXnsG|+g6#vN1o=`vBOlUXcQfW+x+ z293^Y)oBbiX);t&k~En@^Ql!JRh~qmCgN@r!c-WgL~VpaogS_>Pnv}d7CChtd2LhY zRabRx5@v++q%FQ>xS<7TvZ$r{&fot&AY80{aMPv-6TcM%@~<ev#4S)+40bsDpwM3#=a zTxpvvI-fLH4R9gy&`r6xA1|U12eC2SmM=@CN3SD4&rwPE#?Hgr>z1R^cgM$97O3g5*H);)RWo00nQW}Cbr6CY7C~ZM$ zXJa_r>GL(tr$?R^Q0HrQ4i8qD6I)`Gh(b54&(}s_Z@=iOi zHoANJRyc)A%NebLbn$@42t#n=DrWmxYa&rA`d>krk8w2inX=UXa+Pc2@tSO(!zZzo z*9L9nH8th7V6AkpGnE>QL^?00pDkz8k!tueYtV~4D-@}mw;-SI5iGY3lBa_emBCwv?B)Bs?AQjlrg-;Kul(YDu~Whld9ThKI|Ai+M-l?eMDc zwAq{6~cBKd$ZNCxULp20S%C{-uaXw8jW~7el%J>x>EX;sZMEQSg$X! zIH6ILwzE;`jQEsLKGLc5MWlV%nwma7i-g1wlIW$+5%%A7H@`)$lx=DTOr zb#+Np;wMD6i^c77I$biO(bT?D?S_iMW=9<~{7fxo=qJVj6M=s6EJY?C5?FPzr5wpZV zhD8f?wm4`WwYZy1-aL1Xghy8l4XqdzUIN)pXKdl1TgkhF5o<5BPbgtOMm};J`VJF& zRmRt_)OtkTUnBfL_;c;aQDEJh!b-dC;XaKoSZ%RJtNofmbA5Y%aAbtYwThC)bghB> z(6)s57n|S`sM*xcTzeLMAnbK;w!~sKQ;*R~^&q4SWu!5k79E~UOsO5WLInWgDX}WG zZnsuxE%C@&l74?nX=(Cux)+gKG%B?CLxIk-wwW5{R6Wh?fxqahTYe9s-qbNX+_C9R z`DdrQZtD)N3pn0|VkQ4cSRiym(~`8b3hyVt+j$`I*4fAYzG_|ipp=)68?@!-v6+)# zI*u(xyJFK32Kd$eXBDu-SD@TOYB4AG=xUpl#(HUFB0Lpl!(ntES)LD}^BC8%uTi$!jU%`va z(e-UXt0CX3nd+H!AhW5_bsKjP+m@v~NIfiUXiM%oD+hCow&W}u43^W_Q<*~2o?01( z4wp8Wf!u2Nyy2|jn})Xye=*3Q4j|IC+@{WE+uBzuY!S9xVQXu%DazRhScRIJ;l{?x ztwMoW6>A(25?w?2~>Ub3|Q_J=%6k4MedJ61zSi?p|L&1!%?CVq- z6m_I2PwD)Xe0}quHr|(bV@&vq+LE|!uT%vkBR4?;>qtiVM<{5KIhs+t2G!rmse&;t zlfa?qw)t$3&pPsA%%>b!(ZZ}It!GPXYirclxtvCRz{iJ5epyr58IJH=HP^^-`?(X` zX+Sk14^*LsUPr48YF1G{KxX4#~&8$GmKZmtbc{md$!e+>0-XjUHt+ zT4Pzr>kX9|wKcMVj=H*mNXNW2ovt3Ra)>JkR>6do1n$rQH(c&E!8;gV$qP{NaSIcy zD;Sxw6)7gd25|p|*yd&Z^XH(9QwVSFZ+v5`aERRfeNju_+c*$tskUzz7#Qu^GMrx0 z`2D)9+*Jmx-HB`6^P|trD(t=Ot1VFOu6<}&cz78Ho?}v%J_U>S3y`??fS5pm*#I$l zXf4VDa0F^mLO=-&IxMBIg@tz$?1`CoT3B17@E2lnhiuMrPjIZOsjk=L4p~)d$;XAg zo0?4yor1fHjm^B0fxCEBrrNE8a@D1ML#rDaN~^r3(4t664*j~9$h0L^z%z71XS)Ys zEGm#s6Vy0ifXd?6NnuzVM%Zm)$G3Xe1kL2Xf&A0VJI$|?VJ(`lLGLu_vi--e1PRC4e_z=Obzw{F8U|$lE zqI2T~R$FdIM2(r%hOKNld6C1gY-&yv8$tF=L(NRYIbRPyE0v)b@B~%M{O$RAK7uBd8nsnXsEXr zjxwyg^fTra@*9vM1~ek^%CTcrEW*y)F707`Y#VUYjObRs2n4DH+6F4U;yKubp+Gij zilH6h=S;4QOQu$&8rH#mvI&rp0~Of~Nprx&JNW*ZP`o0$zAg|@+Lis`>ey>dRV!}j zUAPm2V|Q1D+EQcoZt)!idJbKhWaR+Y!9;2CJ6m-%YYAN0%IZm7$B@^PybR>u38*4kJrtXP=7 zg>(Y25{yWF0&!iitpx;|*q;%wM2T_&aU`%icc(f#Q^TbdaG=IgQOcexdNQ2q{Ouh8 zR{HI!b?@9W{kxIu;cE`0(+3V7&XVul^Uk{L;e+_}n#0+V-wD@{)z@D(&JeANlvP$# z!q4I(#mvVtL#05TrH6V>Fx^3RUBOWQ1*)wmKyOD zjhSM1mLByBf|R@`oFs>?VBjao6Ng`%H}Dv<{yZIc2t@)cQ4|(jZ^cB2=)!~H=`hy{ zz9w7-!$530+xXEh)|uSr}%ZqPwf`&hiTqVuDgP1-U)TD zuM=MH00WyBdk)GZK=PDnqClJ{qv3E>RnE1DhN2;rq@n`+!IO_W5g-Oykf2%sF=?#* zi9Q_7Cqjr2V1r9)1bhUvf*pG6jV0CMo43Dp2YK)HXP*^rUS2h(OH0X%mrW+YbUjg9 z8^s3XPmVpF1A%FhYhQ!%c0Mbo0;K6c=(*Or{xi!il2-n#v@zCPjj z@^iZf=Jx%Y{$ZX_W|(BwkgBQ*XDXomd@cMeEON-7*$wxy0yhg95V1GJwzSy&(9_jg zXY?Ez*wD1O&3m&%>ipQ)6-eL5bm2sONz<;XZLaRkA6+M{ZZ6$$qrZrKCa6AD4>0Za zXAo8MWVfoFNmD?Lrnx=c+zmfYb28~faSVl^7TjEMEXr|1SbrX%272T!A)WKXYwS8p zMbvJOLhY{HRj6N*wJ!uZH>XmYI|KPEiIzs8Bnh-zER8@}5?4eRSeE7Y)NN?>`C2#B z)osZ7eAx|iSRa89WCIjr!<}zd=ZzSR5GeD)kF2SQE>pF&^Oq?xI*TEI%LKr`Fra4c zDmGUL$nOVk@)>HIJACWw)@6h83#{)4h^DFSToXAycWJv!7QXG;kt#_g!uqY&Wc%v6 z>#v8(@uAL4#Q4y>#jZ#g5IYkE&u=J)olz<^ICUp)GMgQe(s6#0KgL6$`qEOK<$Pt$ z%|4WiM53%%E=0>)AVeMsK)^qyAwY_cp@Bi@tg)nwuw%lXh*8KyR(Hgdud==$65k!8 zD=WLRb;gP#1KXAq5AwzlA*89QYxW&EB9*jlvh7v-s%xF8jqY>HO2r&0@IjGMXwZQx zQAIo+%J0o^L-s~UfiH*;-wVk?p{gp{H%T3dNBsUse5u8W#))9(bp>nh91zW15t;Ae zeE-g&Gdn5{d~>bvf5^L+3B~1}&cwr7qx2sDLUYx8hbP8t6W3zuL_nS%DG;uhs3f{b zEYcd8ibw_{(~0smxeITiffR(IVYT}UC`4Foz;$`q>>1m&*jt4{@Ao_6h z3Z{JzdG)%wYa8asJ}%1j%vB;HM#O;p6q7QvUVEp2sWqNyPGGpQ`%`Q=kAVo zk9Tv}&SSh8`Xh8VH+KWVWw9kgOd;eVdt&$?@1D&GB7h@?5SL|0mfxM`5F2bdlun26 z77>0!%1_OFj@>+S=aK|`(~(-&(lU~AI8q}mE$dQ_&)D2^Lm^?fRK}mnY^g zT@83zu)*bSgmov{SR_$$>gGX%yK{^NoLLc_V3H{;5=aqqoJFRSNK37$6tq1*`FJ=C z0lvcGDpCsE38W9rm?In`fi@Hf12bR7a&n&a`}VD$InsM|x1SR(k!w?9AMNg6k{CoS zoMvAWUKeJ{H}2S3wdcTBKDN{M__7ozny`{?=<1k35mBhtE0r>a?0|hRgWZ<022Lx{ za~ch&muRJSV{I+8#W)G&p8>9V+00RYu-!Lxbww~r3u%Rvg-C~`myMzEAMHEPeqZNr zHtyTEapvkJr~PrWk$eZXg$Aulod3*kKg^uvj014k^~}II21+JFqbXWt{LFhA%l$D3t^LeGY$8I=XM)=*+<-Co6nq z=q1RZU2OY!FVW|w`@3bQE1WSJ$^YyYegYV_B6b_-)SHJi@gh!>ivLD zGB6Bns^*qrV{jIX3cXrYcD2-Ek*e(~tIX|eXmBG<;&E^?FQW;_0CayvQ#!k3K+R5& z0SJJJ0Ff(|iQe$~trIKWy9l#ib6fVeR6UlKj3GEDz>2o* zyjA5GIq1CyVmw{v@z4brTqKniZEDsaQOmRvo|kB4YN=HpkAnp``FLfeegQhnnn{p< z8=yh1OcBUKQx}DY$W~(9uy5anWfb8_;uHRTJNdov<0}@7qM3?%kN{2Sc|s;*Qy5K` zG7-3k*I=?%20E}Mn0TB?NZA@0RRvIk%kpXBM8&OO4%4ypGJr?O&?ZP>v&$NVhbN~d zg&UVtf*V0mgnyqJByTaX@SX=cIbk^KuJYK z!0qt_+RYt-wzfcrxm_x2XrLPfm^Njq7|)tD?jn|4Ol!^EFIa5|;eaSA{6`FjJQv1< z0w?q0UhOlFU_ujf;%FY_QD5gvh615e}Sg&qt61fJ4NAG1;H&*sH0 zVNV(uldKH8_GImLQ<=d&?uAZ12D?^kH+Xf@NT9nrg7V+o99Tg9X)dtfG2muXtQQC& zQ^0J{MPdGqa%s6CPge&+p*6v3vIj`8@o)Z2hs)iW@%uBKZdXUfFYI1Yh{%f3&6`J` z9`lRBQM-Pk)n;p*SU)lW)5}iGytu4f6iCIfq~%gkkd*ClR1^F~720xj!u=nJSWLm?T<`48@^_U&6e zGwErqDZ7hIO^rfl!&nu7mVDK5`>LfW!;2)jXvq$5P8#>@G3t*S6`oaAUosd>`mC!wGFf*wRm|q*1r!q(o!LN+=z<|~;&KfY_p>q) zBwk!z>WRdnmpM4jA=6tV%dg#e+CgrAj#C3k z46thfKU~3^l`ZegQrG7Co}(49tq~`I!Mvofu8zu8z} z-Sd+0n+=aFFNB47tqzVYS3yc__jzm)0d&LOKngr0@T64-ZoL|fnu|N5Ab83O506UB z5`~pBnK&yvl$G1l>2g%sXcRo&%aoSJ0K~Aa==}L}ZXE?K)TXY~!|5LW;k9J%-`;ww z`}V%yUx9zKTBl~o-74B&q05pARM+|$?TRsmTMhcrxI2 z+wI`SWU_AMwUS#UtVE(5H=Q!Ee%2IFR#Yeh@K6@3>g|PYX(u0VZ3UCI09n8b0I#nW znoXeP7exrShKNsqd{hJNW?F9oDWX}iE8ibvg^!R=l~?V*?uL4$+QTc23aMIlt;%RK zLJh=gO6>{#D{J=eU$czEM1HhKaLZIm8QB91ZTnqqN;p(O*!B}`ic74F%hPmu{~Dac z{Mw1za34($v;q3@#r#GblOYwD7#Z5!&1EjKx(aW54PrlQlce*Ttup?)oM+-fV zavqMOT-3@zjolUTit&ocienXzRmifgaTm+D+%9}D={n_l-u0eK;daI0g;TD_TyMB! zS<5L48`f4tU6$%dqQxNxU-@>Wn*uN%DlSl07l9Z{NC^ z14~+lZ+k2JUYFlbR&5ck^Ebn(rf`ej-yDW(^MCD}$f?60msbbEOp`w_e`DVQgOJP1 zllsKpRs@`SNfY_Q-A$~%6gI$z$nS}t{VhG-;)BkhDFAk3o|h)k^KC>E#Qzu@b$gWx zUYkw&D&j`1HAJ?N-$$FFIi5mgvZrH}L8Dh~Duoty%njssB*wl8(jr##0E`7D>fuiZ zfXGnz0>7f@8z5^OOZiP6yEbVud)-zjeWX`=>S6&;jY_T4v-N?X%Hp$HjBJTb649!a z(EBw~>Csx0vU11@AAl)D*qeiFG7==Dw&yp>Wk{D-N zTSe$8gpKIt0J`Glkf!+#YnRns^5z;e)Tf}d993f4&di(&`j3xm0=I z|21+(;T??(66sghx;a_%{!cI1zEF5a!FQ>Q(zUPMVo_rAwyN;PFP*#vwgy#~w$S<7 znH1D6{KQi-FY&^pzg9fwvxX`+apSV;V47j_S!t&(it`_gN}zPfkbyPn94<$zW6&Y# zm~fnNTyk({92XoH;ejOEIoWxv^HirKYH)ORIt=hD_0Ix@G(f35mC$$DJcd8|S0R#s zB%=fy!ypo1HK5XLp?wGda%dGxY)>n;t1T2&M2aE41x`poU7;d6ma|X~N+cvS#L0Df z{NQK2PFf-5w8tNCN+gC4fR510F5*e=y^oD=vucGNY_keoDxqU3c>(GmnaN+V(vH{+ z@fQ+~hmPRV^zG|-9^2z6U6swpuHPdJn|}=bOb4`LKhys<1C@Q3K0>K%!=MZE`7G~} zk|F6hlv0v*gH=46_9c^Xq}u z)U!H!%-(7rv`^SC*e}`T`KOocQVr8avhKEc8ynNx+uH2m?`~vU@xq+<83$S^o@g{|u|KLXkrL+>r-nw@< zrI|zcefP7YGq2O8Iom8c@(Og#A$MOwnzJ{WOu~OlG=seSB{@+IzzSB0zQ9b`8gdIURefgXlU2 zJJ>_Ij_D3|u;W4pi_b4~aGBh7qGJl);$lYUa7V|m(-@O#w<5ElEgPeymM+h1P_E6C z-D6ueBY%iR_3yh^Q9E4z7RS!L#iLpz0lT<0*} zVzPtrw5t{BPE(ohI96y^mGUx8CmhlOWzH|oapoh;3DWxvQv)1VTKAB{d&r(W+mZj3 zsg(0?N66751nz%zggkSE+<1g+I6``k5Y>@}BdnS`a_615Ql-BUSaeHnS-%b*A7I?D zWtRqnJt$s-%qIAIpJ*!*CjLPGf#(jqd_a=jf8fM{)A0D+1AjjtYdo<30NV)f?T6Q1 zhSy}V1B5?7G^YoNZqPLt8w4qGwGmyLt8KdN^)|_VSKDCQLv0t}v2+k#y3oey=mp+u zJkxfujn%bHw4G_=CfcUpb?z49fx))6!2`xypsGC@a#5)A=UYT6LP&FU6tTG zZVC%4LVdI4j8eW2Gl<^Z>nz%jV-3Kcqm&6R+It5293~qyl~-F$*D56ZgV0UqZL3o& zm1u0HgS4AY95!6obxA7Rw5Z&Y-#tb}@&^TxoH=49yhf_&&`O|}*(6g!hbkgd zTlAmQn|X;;X;mxuHj`9qH{PzdsHHM_iAq9P3G^t^HiMjhW)Z1|5Mx1VW6age^~`6; zP0uiK=$f~C_cj#Rs=7L7&vBADPM$gbi{pPg&OLaX96f&5adzWz(tDgV94E@-M1A~I zpPEJw;dZ#)gChH+F?ft{$52p@GLtB_m6hH2Y=9Yszj{7fEVf4*kDfmI+)+vM{-ZY@ zJpqs2J^J^fvTAsF|52{-Xg^%=_0vaRhIbUPql7<7H2eVRA0Vd(h;G0&5E}pyj%A51 z>&nKmTe1_`hq7m~uV*i2mHY9PL3j;cxtNvXNAgcEz(*81cyAis#V4}HShkgZPNIW9 zawf}7WT)WWi&@D%#-jt-?7&guJyPvqw4TmcK`*kNDCK!c#|I0@`j%M_65qyu2k{&M z2s=$niXP>Hq7K^;gDBI~W0Z;Q0IyWgXWNIFio5H4D5*a`uN9B*oV~5HeOB%dLKmr% zAop+P<^F)!MJj|{qfB&ioZ#v zdV&WxYB4Q9+kG`%_pJbs%s}P$Uu1Q6tswhXkiHcgSFkJAtQkV-?uOeSO7~ZF>)S}6 zjkKXeH=w#?CuJVdmJSYX8JrlD@h%0G)?I!>=^h&8k}aN=dKVWMHGVY=Z=!-WQA zMmPKHJUqYHaH&BVqc5Frkl-)nKb!N`26a$xyFoW7QKwJ@Z6Jc`ISV*S6Ura`FYZ@n z#SPvoc+R5ZJiAJRx3*+Mpeu3N(1V87?5_yTxduVsEHnuEp;}EMa_P)}Ebh5|4;EuH z`JKu1UD0oQ2%84|Tx=Tjb8H&)C$(l0ng$VOG5-zucp%3|*dQ|-nE%S!PkPB-@BQ8{ zdSCMX!Yl3a5{H*=BIoU#bxb*MQDc+#^<}eNLtW!tTo>BEBUcSZw?rqRTue8iV;LRc zW42b?pl!l7Z98L=>7Z7v_;iZCaNc&ocF}gprq1Z-hvvSj(!qzPZTKPSgbm-ze_np- zDiYP%vR7S|wdtZ#^*Us4{blT>Q6Z7Nz*ca=W3Lt#Pvrfg43_47?&324vpZ7cz9G3-sXQa?Ce*&VA=hGN$%wf7|XZ=oaCjzmSECf-h^ zvh0BHyplwfyV&3W*(!K1qMuJy6?oK80h+SoCX)?0(d)@ z+N8R+R&;bGsK0ZbzAB3uTaB#yX#D8p(PKv?>nGccM~@oYCf7@wKJql#l6Cmwx5poi zv+>q1wLaU*W?Fk&*NPGS&{I|hF&c<2fU8r)%X}GT3q6Mhj7``u2tiBJSqojCX4QKk z>A>a{xhMyS#jMFduMD2ovE5LmxK5@owSLWBrjwe0q1%=Gpi)KHfd++Qqgn=yWZi+V zS)r(cwh!)hM|9>VOUMs<9wSQToT$ybyInP;{GwFeYOt!oork{EF%XKiYp78CijefZ zV($n`&>YAn0-9WhRbxkZ9hqEIzRrCK1@Xrw(=${Mg{GAtS{&oQG)P6u1*yZ$%yUn@ z1Z81LOYJC1I=I?-H>FXD_9ctVw6lU=NZ;E0ztdzh)vRZ6$*@2*+KrLgY4@d{T-yE62${5&Y*a- zqIdvggEJTGW+h=L3c;5+}gH(RYa;*?AAj&2F}<%ygsO9IgiX9 zTsze5Onjc*dy{czAB-* zX>vGydz!6Ele9a{=$*GYNz%E)d99Ok;zw*w>9bODSbDpZ?Us@zDXD^zac(Ka`veq< zjxzFg*Es+08gS?=~py-H? z4R}R(1U}6@DF_t!4k%Ud2Cgf!1_u8I8W?PdhUf|0C_#cKK&^?*N}I%#)09zi*1SO5 z7#S5O{FPbrvQP|Q5%a=I&8EOmnQLvWMlFk}&8s)CQth~oz`=LE#s@`Kt80mA6R(6a zgX_~OA`Ppwku|06VWDGD7lVDi*s`2bsf>Nm_)43MQ*`M0$nBdHN@6fp7~(xnpuF$k zN*&ap)|F`owv|f_(hjZMJd~&#Acq%mKc0OAP0Cv)lNfiR5rMTiZzKd>;(F$xtn#If zcRE-ULF#^pG6)VOz!R!*ZSp)Od0z5{gp)`-d7*4kJ^CSux@Hj{5xFdS56I%V;p_#po-QakNGJwv05@TQ ztO!)H!oCrZT3vGAT%_$nPuqdvXmt2MTg$|nnwm8eE&XfP_WPQuAxG3CY+ICXmFjus{Sz-YaQrAqaemvSA$X5wx^LaqESdEA?xs>m;AGr-0CHVykwh~bbCn< zyhuo3le-x5KMZ+?A>U=lZicKvW|9EplA@@KP+dNoSQnY-o$8(L<#fqG2)}Z%Tuk;t zQYr>xxrqqLMo90rWF(T@)+^C&MkC^VktN;i5%vz2OR*#XrDIILGm$$?WRK~36WePd zCO9Mj`Eu)>aw5ks(^AC;WB^?!=$bG#HdndzuR`hq)fxUFB13$Hi1{LAha*GOKfv`s z3tbRtN!$EBkpsntsN8G{2wa0DB>=U10hwa|-4nGY>uMl+At{xp`SRX@Rlc4F`m{<( zIVaK9?AbY1sbUSn^VpG^yppJL&fK)9e1KjTNm)yInM|WrNm!+NKq+BmMvFu1g7OIx z#Y!d5smdyXRw*x6_wh29(;PpQmzA4~WM%5`uBV;^k-Lb?%1bD6RGU{((W!-HV>fdh zNoU=EYa*wc$i600-PG8`-ql3XP1iTEO{?~-BAHcWRWDWYEU>1B8HW3PIk+W$XV*dKtqGW6}MNgyDLZq zes8rXTqs>*V>uU96r))QgM|Y#V<1^5So+s6SCh9d)TPBk@UTO%70XgRoX-V$f*4&& z+>PW`lY;0$=e)%Y%p&3iDK;vh)L%7!Q_D;3QeGY1xnsOaqJ{=>GPQ8tAmhoeYpPmO zvGE8m;T#gBy1Z|2b)e^Srx%S+%#}3Zxj(~xSNUi2S6G(sfmS7Qv(se+w+G-yhF)G? z?sRv!HAWfBE4!3ZmQ$N-T4#`aUdFG)5cAQiX16??@;2-qr?gCV%JZ( zsT13OR9)ImWv?2tKwDwMW7uCuHq?>+IsyeA_`0sHcC=m@xV2%{;i-*^1krH`5Ua<- zgS29wQpLN-iW9lC-4R5{e!lLZ0sQHXjz?&G`?XYXYkz#8!K*b zxwegAmCdFKZ)}q?u&dp|RKO@1DouIG!3^u1z!@4R-0y(+z*YZ8a7G|9oL{ME*bMxU z+@_Vv4W^YqjG&EcF0JQ-jjJ`6M}XMwhZi9kr<<9VuJ7p*F}J?fmMW569?8+I$f>;J|_Bmi3H zQZt8awi~xtt?U}Bb@PqZ8UIoXMSg1uF?_*z=biUjJ1qCW&C+GQ$I@vbcP+LYKvyIh zoO(&7=~pWR^*sPQue#JkwGtEOolt>hFY{4Sm(||yBUT?ckc7W1O?Xxx%xR$3u9Fbh zLNQr)mUU!t0njlSeTMDVXWW@=hRe|KQ`vxPAJOh3+=Kg0?|XM2clSQBe;?VmUf;V4 zF8Ev5jE~0l$5`H8Vn1Pj&@QRAziVgh*Q92+<_@Yulf1MdyUV*{-N?D+WPILnO3$H&LH$Ht!@e`EZ;amkMHYsWu7&OxSr zV0?T4a`jU6wdhu^0}Y-VdYnZpp)P~ER@2=nT*k(rke2?BuffZI+&oqro0HK8!N>)z z7Vr{eOGd4*(GRQ}7^(vKncoU-zSkPam8H%5tq{>FavJy#e#)!Gy#LOX^#-X-KbuWV z?Y^J<<6o6>{a<<6V>1u&QW?*VLyJq{JGCQi{>tn~ZOus5@6V3Zn0!vX-syuTc6jwd zE+?QUGQLcjr735*ffbJ#De1xU*vbS_0hwizBO_#NQZ%^1~cc~n98?9Se5DQEkh z8H&fp%HyNQ9|4!|$HK5iD%EiKNnSWd*5MTzmdSsk;FMWjBM^2r8$;#0}sAW2(& zgM&V6T2k5u6n)%igo9`RBr3L$;@<031YnBmndljTl3;0f6zE*EEuR6RJ(XwUv0|@T ztSPlnHhp1W(VFeNqDRhe!9{F~u}8^6t1iWi)u@zJD2UYo+-xhJt39{B^WFunLwRrdRL-Dp`4` z>Beh!3q$7b7lDla2SG-a05X~a=6K))_&Vk*U*-8@0P!S)Nb1t;;c5b{mpZEnh)zW{ zxYOyTo+h@ci8Q6DILClX^;Ddph%@{~+FRda=#AC4)(_TC)KAq*vsUt+mz?pQ_p&i> zt9Qc7UFaoDZ?>16>?QS9Z*Q;HS}!R9JBw^7na37zKWONq`ZA_az!9yYAgaLJ>>T9{ z+8+#+`}1z?f~-MjMKo4mtMYycM_GeP0j$|<>M>K!nDd-DK8G{$(c9TaW}c_`qwQur z`MpA|hF)t#`!`e#c0{c(|4}djXKvvY>lGZo0y*>Pm2#0YuBygkH|!SmqPu6!)1`k4Q1=#+y%f5*FY6Mse*s(i_{wb0#yF| z_d(?a9j~zFjqxo-#`uOqyM&QN@~E(xsD^Z@$W7=Nz-(t;&T3_mt_T}xQMB~5unX%w z)a?Kku36Kc9UdAUALfRUnXAWQnZeAK%tS^qXeEqQZ)JIrm4m=c=?WbfWp@`G*>!BL^{>bZRVP&{2! zjf+#Fc}WQ5GotgBRgtOor8IXyaMHx+4p7hird>2IdasI%s7Sej|Ci6IWfCZ92s}OW zJn}TiE6VfA+R)Znq^vhwvqR{k`OykUg|&C#r+*SCf3A(@uqq*kbu*}_o9SkDlBTTw zj!v?xlXUJ1knX@pfDItOQXWrMGEBZX{Nv%bhq-%)zc9?+GECMDla68HA12meA{{2f z+kUx?yu6J#wpDFo72C+R&A7E(3%4;^q&H)!uIs2HvN~%W`_nq|LLJ#%cSjv-se=l7 zq%NjZPLOHB;@v~!43RKIPu$S9k;Le#-_fHRbB)Eu2Ep?F|FnGzU{vLm|NZWr_aiqX zGkHy3Bq5nRXYwNN%;Y^`LIx5-fDjUSgh12*ML^UBD`JthsjWq=R;i^}O1p6tu&uV( zZXesF+w@`g+iE-}&y`naLzUbhlKJxif+4cg}Ynzw zlF?C>x=ISdtv%g*6g997gvNEkARz0A)XV580)_IKo(jap1G1aPV+v{PCWSPm(zZmr z2D^~#i+X>>_KzuLwD#KrpaH05w9bJ|;WAqB`T?J#_VhPY<1s%*aBVvJn(aS821l&+ zYnc7-yuo9&@7qF8gsW+_9cz?onl;T**y_%WRMT9|`5oKX?Wz^|q-sTSikqkJ-Oa=6 zwbColt7cS2?`Qemq@$CpV6t;k)Pdc2Z}GkC-g|hMa69y4AKY;R+HEGFY9AW&`C4}6 zu}yibIFIEaCTCM+tPs&SifxG*M>E(|2HTLqG#Q;4VunrLm$T2cFR*WHUvQt!>>6ak zAd?4Y2E}FaSa3{iagBM#X2))fX|Cdn=pGv%J3J;`9%F$q)Z+Ho4%?)CgJU+^*x)|R z#=1aYBQ-rF;9n!7UhC6}R8un;j-p~Fip7l$&>%smBqbuQ1=U!qfp99nM}JF`@>EqK zh2g5S7iLG%7Am9RXT!=96H6$c-%`b_Hd-;0Vk>6Jw;qHn=8?n-Te5R7Gj~Ic#mb9k zqv7Hi6HQfxR6MI!YGz z?XK!ipI1Xm$V^z-pA}O>%S<&^wk3k^tr@cx0OHY@I+e%q4g&n)%vIW{jW#`$#vOJ^Fg;5s)7G$7{ zFt(0Nplek$f0(J$$##!@)-FxM0*RDD1oEV-h%oFFVc3y6Y+20I#ApXB3=9l`Ug5ls zE6FX`5Z%pV3q+H#YuTlE7=vs`G_;6I?(ROE5trPt4IKwJ)zoY{*x@<2xxRk$L65Vm zDl@aH%bD9zm!DJ9^{>g_`=Uh;;N@@3`lN6Fl-rO0GGo-0#B;r-btZi(?iS zyz-=xt-@$rW1UenW@Myri%PR@?66SOeFK)-D-HE}R*a$_Lb-7*P<`Yiel+Jru{KBQd;TBw~-%TZR@AiQ)QjZs=Hk9W=O zos=Q>wlW0Cq{&KhoQ79?(g3F9EFU1DHh<-od#0IUkeL;(qO9^h2YDrZ2$^8&+5km$fFbM(d zqBkH+dtWjLUWi(RTmFcl1sFYiFWz6@ROZL&{Hbs1^BQ99?A9ds&H4@RuX#%8)p4OU zFvu#rna3O0nTCIA5Fc$|Qw?lm19LPmV*@ictXkF0?@utAGN{i^* z7YUqrkb@O=r5~r@LmaBe;7|oSr&o%saeX{%`cPy=#9=URMtLd^%SsT$Kc*{_}KJ5F}mdBG_jaIy&}>v1w?)wwEG zNdN4w606FH_c7Zm_4bzWs(SN$YT)IeYeVAn*vyzHl(84fSg?%cmbuGBOg0J%%qy_e zp)rg~FB=<5)waOyjCq$C+Symz+0k~ktDQN)TMP39(Y4xu_SYDmV3a6GX%9uO+(S|p z1p7eQ5BHhG{ZIlHyb)u{7c&PcZIHcR+F(={?g$(8n-B;edd?Whdt&K>fgZ;K`k-Qa z-kU_Y;uBj`3Sp7ADql@{@+(_0KAZhyN~I7!q)Aw9*6-jBffrj90#`C>so0zZv`g;I z`azahpT&xhLR3_gaNCcbYfQ61-5onosPNJ!tb>;}tz2o^b$u4Zd|6810z}2T*g}y1sNYpWKk>l>ig_Q4Ed0nhB7Zs^?9vzJRHjd*J z>b{vDkCfmd7dtceb`8UE9|uC5sxm*mvm?dJ}XbT!#M?OAEs-SF2^2 z2)8-R1(l~X|qqfY>qJdWH>hN@kwwew>=%}%28nfK) zMk=2b6`_iTix-|LtxjYlYOeA>+^QvOV}v{|tgOwi`AFEea@SI|GV!rRi)$Ya1U!ou z%0mB)>RMmuucOtqAOA|Nt%;kCL+jO2O%{%1y|77m9>;`3L8#e?uN#G7eD$M69=v(G zjE0!2f;5e=@}eNQfC>lkZ6kAS^lS`noZYCA{VxBUUkduC{WJbqzeWjCgLcZZu<>J~ z-){GB6pFOjG~yq}`HIJL7~oNDIT^HUZqPs@ns>HTXy)!N?tquB7Jo3 zcdM!I0-Oan{QO!>4wc!WXb#5%AN2Wta*L%Hh8DiZ?vIpmK7Be|%3=3z=SZzmr6D_X zw{QTh$;p#r9~l#e$5_`GlhVf6*q%MNb8EB>2R9|`!&e{A8TM1h-MMuwE!9el<1b|7 zG`yd-_@_purlzDTKK30S^ZQ18Q$DG{$KKx0%=;bt{rgAuPwhXx|H^*7*}SfFo#>fb zcYNL1b(hv@=&@;?f87)wuB_8rc#atw+x7E@ew^X4io3AgoQ29yn`FPlKvl23j0pauV}WZ+f{FL*PK8QBKoq){vc zPY-GLt_$n`NrI=$#Ubk;#?Ll0v#c1u1|`Y92(zg5Am0|r zD9++Zv#0EEnP_ho%F2XhyCxgC_LySf)R-Q2O|4Bv+PZL*VYhwLEE|4gkrbNKFrc?F z4PEf%Ksg>(ee$OgrJ(Z&Onuhyp(CkIp{-4DrfSOg(2+7oAv)?sl>o9R?p=t_iu30*fUqAY zH?!E)UlG-Bco1R)&{@|mOJ3Cd97eiR7#%Z`cs)G4Ag_M+XP5_UO~a>>cEAO|yFYdP zA0kEn@1p4c9c0O?v2WMWvnFoD$ma}Zzg5Sq$;sEJ=@u~Q`mYug{97<|Bmfa)q9^GMTd4tFU;9?0X9S{`pZWG8C%S zP|Ot9c*5;B;c`4vMQ$3YtK#*|CyA_}D=|;|A&?d(wOqeeo^43Vva#zlQ^aCs-%8P6 zZ&9zrlXNBC<>DAB&#T+@1Z$!jU@>m9YLmAoe|mZGPg5KTS{f*_&sU&Q>vh)l`+} z;P0KqdsnJ-a@BljV$Q-269^HoV3Y{q5CO{^Iqm>n`^-jlfN?isEk&s{a#qZKyC zdF=>x7=b7hj3Q#-l!k+dks}L7&iban#A4q1rb8Q+l7HLvUq=WO4}m}dN}i3~h!7|q z1cBlQsCrb!0uqTgl>1q+ybc|%jj;;BU2^PX5X?GCik%I@&Vd1r`6Kg(irjzC_RraT z30iPFU?8iKlRk}U3@z}&9ncRuX8i6E9uYpp4tUf5EQg)RVIRq1y*aybL=Z@&G>}N$ z?lK+Nq}> zQ6J~?7H+C+ z$q8Z}T4lJQg86@sp(D{*42#>S*bxol^)K5qWF57>ei;r~n{|C`NzHsWt*x8SW6(&L zLvoj1V|vPDvc=3}kTeFlxWt*53~sQtGFFWuHh>2lMxCdt#pE;li1iwp9`IIWz*Tq(hn>6D8p8dr*kznn>#O(EapHL=pB6q6~X zsT5>vGGqX67Pu#94KxS-DRx>-Y<3aD{kb`wvbeydSiX?>Z!sej6#ftVdCW98HCm{^ zG`J_{yC=yK`Wc8qWd`lz@w^}QA;L~frUgUcV*FHUa?;bGlggk4E|@#HU@~~Duu=Gt z*M6q(2ZiEfAxkM_dI}lR>oA>>`>IIT02mBVir4B`ot$j+%4_6tS>hXz)(yVfi_avUy4z!7w4{W88^bV#zpbT*cSqW9`4&&gU z(a~O|RbmPPCFaKz1QSG}3IuV{Q3*;!t)_;tBp)@$iv|{pM|z6~7GY+Pcr82tfp|V` zCLn`VzQ^c0_Zs&UEY3KKxf8o?RtBzE$ zhpSk3)%q$?Q^met^_NxR(W(msNDppj*Y*kE)@VzWBJT@Fece`eISV6g)=Evzd zeJs#7)+Ywam{68j24WaWy)y7307nYao!UnzcVDVT0lCfJ=LmP*&ERd-#z$mKv11tA zhLNYs${QT-`crr3dGFD|sW*Tf~lh-KC%P2~ZV;oKsYng4j(In0`F?Z8= zlL#wKP4yx*(~DvD&YE#*r5~qOdh+x{-6`Tt@x|H(ZLd}WeWxyKXO;*8Pq>}Fp}x0X zs*mq}N0(xh$fNQ!V8x*jlxh%(M=6K#Hdrzb;ev?L7OQ4|2u+cK{4ZMHZ^jB=B0?3* z)z$|`FeYL)?tzOyB?$I(MpDOxDOz!{S z!O5>g6CDQ}I~+&TjUlNMN=KCwA8O}MUDz2em>6NGm4XSCN-)+EQL3r4)5Pl}9rNoX zt_BYl`r=ElL5kEzM0v5wNCOo{8j3YaT_mu;8z>H3u@UoS8($6i00Nue5ic%_DS=c~ ztqX=$hLe3h%2mxRE0#A-onW5W80>ka^g%O|n-?j4P~MNxq76?(Prv!-hwk_qoj&I5 z;>ur7PWn>l+i^vYmK!6|qmYHt^S;WPh~c7#TG&Vn^U;)1j2I=EL|Wg0@FVs24%D2> zWBc=%J&*k~kG+!j{XFqR9(yE@-IK=#^H^6NtIA`xJf;Vy4>R7FLtuX`u&0Grg-e2j zuJ{eeN5ncLuVRkCOaik+JK~#mlq+*fCHe41CU4By2;O%M>zb{Zs}Wt8St=@h@v}9W zaA*8R>WtqQ>5TsZb;h&biHy4AUlG4AYPzXC{tETRv*bx=8ZrZP#!oKjj7RITa=-V+ z%uxyZ5ZDCXA0Mug!%}eMje8UFC*(*}Xc^C77`?wX`46I4TD47HtId?GXp>(}ZSwvE zqm)B!^1HT=7MfYKO}@l&ec~2vfER7@2^Mp-O&&wraw{Wk^4SH&v2F5CEphYDlJ5Nt z4?C76Cw+mtn{Cn%w2fMox3X5Rdt>dfS`nSf#@h5+@gHm1U)Qp;wU=teCu`a9T6RY* z8>wZhYFT=1ajm$ZlllBwUo{IiGH;vyKl$xCT(d7IM-sIeYCg*QalXLUp>1O@zFfztrVgBWVbvZw2Ta}>YMCFi+ zdK*8=6OSorFSJMjDTjpf7Yd75(L#LEso<06vrqeI30!AsSK&2)qGp|for7SC0CCZU#cOD!}jRFjdv^x{w zhAan=hj}f}N`8S%0r)#d=SheFEqUb}-){;hED;$<)bPCd`duk0Xn3|7#UZg_ zZxSZK1h4ld=q;(19*bnj>?Z7#nJ+q`|Vb~B+>-t0m1uH(DJtGn3oT~F^iyX(@fH+N}Acipi|+_gdO-9nNJdgH40}!I8oH29FOuJ*aQ?4^9nU8I+m^ zUmd(OC|w(5+Xwdz9vM6}cy91JgKrP&OY!q!LCN-#Qza6>@5?3EN<@)Xkc!(&_LUqd zky4w4!IF|ep($0H%OQfh@t>H>i_>Zzf^2gPK7tYt9$x}p!qukcXWsg(%)(Gde^LTk z=}uP3r;BAHEG{gO7TjQ-e4w~M;CRG76e-WdVTFq6%p&s7jtc@n2wL3q< z3Zm`IZ7Wu^4cnkOkE*EmBiElb>(FI*n^~*))_p8F&ykqu$cuD58#QK( znx_Wmo@j$}!@YOy2qiAdLo;(FH8WSDnK^Hn_!OZ*f5KfyLvqrI(D7*N^TX5*Z8UT) z`!AiDI-b#OZKjTAGj%+tBb=e8rE;v-+5WO6EzQp37lp_{rDF##7Ud}v4i``a1wNQ{ z=s4rwPNR}fbbexRQQk)C zHrr;@b}+qarhGVkx4j5uBd~_0*=)am(xTT{*;|`F6S{0LOHcC>=MFyXOl51h z5o)a$9`l;EnOKjBnbOl^$-@;mmrQ;xwZc3KMlh4fC{K!q1xAHRDwS!xjpL1?9j3QY z$h2$LROaS#W=3)GwO-cS>m_Sg8D?gnpC+bDLg}K7o*gF#FCF&iqtgkMBSf z892gW5-V@Ejqoz2Q_+&}J>I>XU6!4;6@9dHIOwQ-w*090>>?ZuPRzIzW@R)zxh6tq z?`Z!G{n6`xOeBo|^xPS`cYf`R7#iXOVOjv2~kqoK!#6 zZO&DVjBHOLzIHlo>+pWY;_n&hnd$)^_jJE#?sxS2`$zhx`mglsP`GiRa5Gi)G!tc6OLXuA`W|m?_q{F9^PjyXK_VQ zXa$kGc8j!&-~VTlNlVSOcix8(I`Icwb#lwH({GEa&KJrb6pyL5^1Ue+FLPzG7;2|| zSjiFYsBQfwDO0G6M>O@fEkiYyH_nGjk`doH!+o@N44R}q+84d19;`8O^|+X;jN3D% zuG0yXsUpPtT#Coz<9)MzCb=}H)CJUg47fK8V--`1vQ(1Q$}-Sxv1Kmh25oO+LHdVg z7tE$;!eDn5f!$T5nt)JO7a(bm;r}BHokpe29hm~3QYl=e)`aWfQQ5}g-tYIOhXtte zt@NZI@LJFh^vq^0=z+c7p^~xYk1Vinic0Q8`J>`PkQ~3{4@H`0ITrpiWtQ;IDBfic zsf}(i?XnFG-{&&RBbl9Uow7q_|Bm|}vYHKlWU)?R_%KALHqB;$JF;2WF8t6dA1Gqz zt}I%)bLD}R;>uVw+>f(u;Apt)==Az7v2y_Gk-M{Z^6 zSX8#pl|RINr6Su9@0?u}CI95&ZL=-k=F(k7(tW6Dfe!?j_oq>&GpgYcN)Ff_X8#j75*Sk}Y z?Kx=5p{~}T9jkHRX)$fdl^Mt!!@Q;EFk$JfOe414jlus)O+obKh%SNIGd+Uff!`fp zlbbt^5XI}<-gK%-+~0Jx>2%Ytn>0I{7|Ik)T|2tiKXkF9U8lRmuA#{xHpDv_Dl1o! ze_q4=Gam&=Aclfu?2U2NVZsI7Z9>ffmJ$)1t~ala#Bf~}HuWqnZxuhk$xzwIq9iCp z#Djl`TGakjHN*DNsKB2nKW4tAZdkEkTQZNJ{#w1&pNh7xHa7ER3ZWE|`xo2q4z0bl zR@hFP*umq0Z_xY_=MAO%m3Dg^Vkf-vKGP|acpK@)??^GY&5meBIM#YuC@#M9&h_6L z{N12ON#dv%nZ8D$?CWrs%Du2I%A${I%5==$|t-)s9_ zn|Q8`?QCP+ZLAKn=KVkL|F>U!)z9wrAM>B_OS}E72j&HHhr8xQbSE>fWr_hl!wZC5 zke}GeE+%x*s;iS-m%FZY>BhrbuU_nW9gliMdR<)<>FuA)&D~F+J6I>)>~~hO&#z=h zRGGp&%m1P)*LIujUwCt@#n2QxZ>Q;p+^TWp zI!s?bp^Y0U0p+z#(Pb2aZa%dEfHgA ziU5_*&GxttyG7ZZ;|{o`M8P(06B}N%vCB5*0^T36NyTm(xD4)MO}|i6!+F9>1TNwH zn@n4{BbU;-aO6T7M>M0j^!g@X%;MHAF8I`G<5F$0Ag<3gl%(p&12pd=q9eA=Q5|_4 z(aVEs+-V4XH?B4JOAA_UkE!yCGS233?iHeWVxsw>85ISAgCD^~Z1!s;P36)-1iyZO6C8)rX?u8v`LHp_ya!%x}b7{TcGt9yyk7`Y#^O=z{2yjpjIX5 zmU7W>Ub=#xQYKER0P!>JuO(umEFfn0uBz{I6$A>#3W5ciPZ&-bMA?vIm_wc*%N{I} zxF}!6W)NM&RheO=wMU+jMHfDp#*3@67TrJv2Dz_KHWX+oTj?k(=N}~>m&voPC>;ep zoX`Emo-XFAg2|9enL+}R6h_b-*gU1oy0nxwfhAWzKHf>zXl#{SkW=6)kYoY>DxWY& zUYCI-8rXA&S%WxdxM~m&8yHDYGzYnmFgP;+F-k3S5Ti))jL1*pU3GGm2>GpA#pSoo z<5?FKVQhj$sWgGdh{(Cgn$JbUm_&R)BK_YvTZJcJuz5Y^TBOf5M%=?Igt#?c~M6ZJt!Qq6jXgL$g6U%eUrSkG3 z9+shJUMP%SQST~QF3c%(6$T2&3WJ5Z9~)SXBHn<3B(62zpxr%mAp;OEy0Uxs^okAM z-tk^Bx7Xb(78>NzFEoLrP7*>D3G{Em7xVgIUJ@zPv6ty=VcE((r? zCHKwLp0RzM;aYQee`SP@k|&CviQdq7PB|;&0^94_yspQwXcx9Q&3uA;k;5di&xU&D zgJaxuD#UUO2Sul(u|0Jlb!)1W%B7MrQ~X@IzTFzr^~?-a2Qa!g=2;wA|cu8vU;qNY@M@SwcfC58m6r?)>-RCtA^fJ z9<+G|YiFm`kf(92p{b>f5SNRKOC2Rec@Qq)JZ2x{wHFs}zNFZ#TGCitesR*eVohHy z`^KZHEuGIfXY45zcYky-uDWVYM^4p**Js48c_m}YQFU<6y`i)PbagH%g@)dO#`#JN zh)RDUUEGn*)~B;B)u0+@OW94m+#1Np)G+Ma&LsbKww=uAQ>)Adhe0eg_zfe5DZ|r- zvxZBCH{oaTuJRUG#&W6bm(R*qWUc3{d`W&2uQYynN){dAPcGpdoh-An!z^dmHH>oX zFxC{VVra0PSv9vx#P=zA)yyg}Ku_|j0AA0nLSxw~Mh|nVq-pvT7I=8os$tk*ZRIYK zeQU&zs`LVlD)KdeN$Q_=q6_P$ChAD*TBh?s8inK4px7B8l zg?;ynLZXVM{IR`z{E%<)Dl9t@z0@DSC1N`}fU9oRZ7bi1Nm2{Dje8BcHL&ROB_Hld+p3sQw;=Tg~2scc^=+m_0@Q(4#sP!IIQVu@Oy#oS_dvA0-) z4WP^+Vgk+^CT&cz5mIiYNn_rgmEEOzO?iHdjl2(oBXv!N`=D0RG^~Lr1`W&$%WY*Y zYY;bn{?+$(Gu-~}ZhremNCRliQrzu_ym{d+yxTOKD1;3Fx#s!ezGWj2F0ZTNjzLN1 zO$H1b?yr`A^SEjXXxp=Dv@4b~_C!>^tqW+u7z-F?`?3LUz{fU!p+@bHj+uL6NHE;b zg~~yY>QF{JH#odojmuJ@{Cd#&yH)r%ukjuSlP1F6^*l{IS;DJY<;KCm-l>uMMvjk2 zBV-Tu^-mSvS9rWox@5Rwc-J7EGMqDf$MB9pQ)*~}eYnqX9KIITK)eKh>nrFr%T2O4 zCEq6>mtTcxxFWwR>kIm8`cL&sZ}-2`FTUE(w)Y?D7x}~I`!TGPPqCKBANTi@N7h!4 zlc2p2wBnVcSDk7V;P8y@EhUkYa|V(S7@Jt6UXgi%^RB zPBk&Y6ZQz(*)nfsfv?6V>ZmXHZQnaSX}|BN@3c?q^0AfJqBc-Cz>W@_9{AmWG_ZB$ z*6yw1Rz9nInb(WaeC&vW-R)po)p$&vE}tnEbIaZ3ULKLrb&mvO=M0UFeJP|X>tt7< z2N7AYaJq1&P`Af$*dPY@^$r^7vP(kWi+z{-B+N_5?Q{2e`w)UF5gH{;Itsz(cv7V; zH1x@GA4O-wqzj`9bOFLAJ;2Ogj(sZFfNI}?l+ykbfJ|Zb7j3LqJfm7fCl=(bElfcc zXkas~OImE#mSW^zN%4&zP-i79;1Vi0-G91>Y7*Rd7*tR>qLKYwql&6j5GZ>Gmr0nXE%FtH#@$Y9oo${?qT$jAgeNZvKplLjUj#tmY!Fu+=J2iyZE2d)ihgn`@v@4y~BT*jk* z94`;!;l+X1=@D_qzyQzu?jZHMdqLEph8R%>GC?B>s!0|p7U`tykpGGaLnt)G&&3QX z9Hqsvx0>`X5|l{qje^!i=M>K0>;>gD8NUvDHg-_8XPo7_?Dye@*5&L8J^F^hEyF1H zqaTde%tpB`kGe(%yB(@~i{T(^&Dy)Uq01ygS09o-7{3|bPvtGQAdqyNQN0&&N@v!yCak1DbVnsgJw2toLQ; zMI+}vKOJSM8I~Cy;r8oYl6recUN9_X-c~Sfx)g3|i?EA%yvFYI_30Dok|I*$ab@)U zlCT~&IC(9dSl;KmG|K#_(vaIaGvr4UBOW&ZvFkL5j~h-I-T=xsFX3?@tnteuJg(7u z{a7I@JNO&NdH$mxLH2W8ei}&;#XS0e@&lsT?_+0uEXU{aAqVn-k~+j@hTa+y*9qJJPeH)ct)@UvF4xA8*J8t^wAxyX7mAxJ zM7|&fS0a26H1rtL&-ix6Mb>act}@l)DNn6k7SB~_Ueg;e%% z>K9T)B#^hoB#>4dYp&Dn^g1P{GoK%AByj}#4(!O=W>tnMDud#6xdu1;R=q5&%Ww&|?r zlIKm&6_3X3IqnhZlTv&(f=`d*lPex$m>(CN!x$yVi9uxuV{qYgqIHcP8gbxhT&LYH zjF0cX1!|mXLBsY_;rH()nvKf+g%=K^`tNTrQEY&BGlh!erBRKFt5x12Q7%+PDt7zM z!q45SGUg5uV@|1D=9Fb)P;ErT>Qr;^o@_bMuDANkx^+WOuH-srF|7Phls2cg>PDe- zAuqY~T5Jkpf5ok_lWNjY=G8D}G~P+z#P*tfHAiZs8a|Lmp6Q%y=|&`D{-<3u3bm#>!k& zX3Narg(lz(I;WlVa?W|xdBbTS`jwcQfX$MZ6RstQ7qNab;c$ZJP1u8PCllyRohRRE zOh_;~^F7*e!S4q+F(ypmUq#>+C5DazKTO~RkK7{IM3kMSWT(-75TeY@2N)Jt52UCy zaiHWvgA-4~y9rS%G^yxB!RPK%8CydwrLtPi&Vo{~)lscjsT!JxZo=03A6-JXMK`qJ znOc>$)#U9e)PXR`SCisy9kV+w?wH$gb%!>0hkJ*2hqPmd-$q(d zV^#9NV8L|3Oo8r2su2<1=rS-M6XSm7#XnXAetxUfk8u3<&2IPY*~9*! z=RbPH@Aa@#J?x&IhkL|{9@evV`&zbxFIsqeE&JYD_AnML+_vjBb{o8Y!%JZAk;~c4 z6-0$1pclNEnY;hJcg5%pN32H%7P~2OwTrB}a4u*IAU<-D5Jz8x|VVDTb z!(Y@1q!0i83s$|}3dqK~6%))Jw|`VL$s4diU2oEf#?(-W$!s=>jRpBhT8q(VHZcn~ zitpHc_Wvj2C(yB0FgP?+BwMxCfLXV^INX z1`POhwhg#FA|uae7-i+C8l{~`9w;iRB7!M2Fmfc}Ib@L~ol0#w<}`S9TDsX$J^1_6 z2|9y?bs8;nRL9LG~7x0f7h=7+buAWzS9CTdT4 zmJaV(@si+Htz9qu^Ufn)6Gz%f?# zQa(n3WicIRC9C`@juR*8QO{DH=Nvi4sAk0<<4trcK~zf+xTFfVni_+25Qhf>cm zL9ai)#JOQ(hUxl`_z1GCcA5Ph@|1ryS#XeFqJ#XB!Q!)+UV$3&V{51@j~<(&t!LHs zmnd-jx!wMZtT*>3X!t?i!xb|F^Y;dXub!{3ZzwM>AjQlS&^YFuG!!^HokyHfqLXQy z><#DJPEtcL*E#Ma!tF_?b`4(s*eS`*949y#AkvC5c(o$<8@b?boHS@Wb1=~cf|2ns zj&H9UE*k)?kO6mQ8Vs3ENg(dW%hP?V?=_q~Ri49cS=DE9$2E zdGYtl(r7T*CS@?$XSu#VMPhmiVlta%Rqd{Jt%!=L?mjM*?GQ?$P=S8^N#UQ*_w}uA zYpW-rxP>GL#h6x_-<0pqmuQ)+_mHKgndLS!(cR2WHeYKNF#*vkyO}4)&4|M{>z;GJ z<<`pX=kOA=nl#pRHI02Djpd}VAEz|3GrZw2#E=m>DNyL0d)&d(vnM)!A&Ktvo}UkeL#iGMU*g%%;&e z!)7rW9$iAvxRB3KRrV+!f1Y8nbtPxzAK}x_bCl`lZ<@^AW)nxp9x+<*@{6kA%ZswP z;QPp|IjUDSW9nEkwo8-f?bt6dg+|IJgm=ydgL|CL91?%3@NvW?77MTO7+1SCc{T+$ zNt;Lu?(w?w*~xq+=R^1y%{ZGX$yf)CZ-Ldp)ibLld3Da}G5R*U8q`iN=HI)#0q>kw zvrG0)duO~-0AJ?3H@q5|zmOVad`@p&#hW^MnD$=8qc%Tvwb#2kHD4p##}(iq_7FKB zED(8VV&XQu1-#^O#Vb>?9v%dy-ej&6q!>^I@=~M-Tnq4X5d(`j7`s;Hjr>|#-faH7 zFKA3S&W4>0m-6uj_EBRCbxLI17atA9(U}EN0JMbu3j6{54YlI0&fECVuMGQnKJ;t< z0`<^`DpEUqo$1M`R;>opz7849&zj8k-=L3QtFfjg?=xz&2DzlXBypK!7BRwgX>A%d zwVO;G#wYmfuM}c%X%o_Ip?@w;Wq%Q`Nuk=v(63J?+RPe54%*_{lC=q`NslJlEn3V( zFlm^ilcaBFMO75`5F-dURt}hkCaT#$r*Wu znV<1L^X4;>`I%{YuSGuKI^a1FI1oIbjd?wNVCKN=fr|&`4qQEO)8Q4W@{+!7|2%$8g&k#@-?(S@jMg$ zSVs@jB^U9iwX*t>l6q#<-1$ig5S~JSfPED&Pv6PzR0D)xhKJd3btaWwsMA$2)KESoRsMs0S?!Kk9`!{B-Mk6+ux^{#47=kD^Pd?xBc7rEj|&~ZL4OAu}<~|6U~fG)jwT-w*FGR z#$SJ>UR+ndz5b1Q$z0Fmni6I%VGq1h!b(fdmWck6sgnCjj+eYza;4%F|3n5MEz0 zJx%vadq?gp6J~Q~-Lu}=@!7+(Cuj8y-r38u*JhYBlJ-;0FKUuPA0g$EBZe zJaHwxsMq6D1aw6a?!EG?4{v-}iN8xpB;xL_E3LcF7rDFpad$t1yZiU*-MyRN-3q{4 z$;=4PR3E;(Mni16hA8LI3Qt8wMulfZfyYJPKNfo0fM0Bf!DtxxOC$c?zr<*OeOcMr zS((|{Y>?mL4^z1NVIK8>=cL}^r^r`njpVF6+*y5;oR!v4sNUixIID-lx467_8Kr(o zjO40rxL&<1w>;BPnzL+KPH9F~dG0dCw5Ap_7PYsUHTUYwUYbzgG3);}Eg>N_H6bC5 zd$s+z&x}V^t3jr^>q2#PO-&@IqH{Mq{mKQm>|J0+?-$2x^asT{AKC z?B=JMOsV;j;K5Dei8lqlG2;%^7za8?v5k^=gCBs*TMcbv=x0&c#vA{eWRbf0<0-!r zDx~$aImPTv`mSG=`Ng>C#B5qJo78{89D3D)1YWOwlvrqU=*msZPMPCfxzF*0h4YM0 z@Py^ds$GpsSVC(p)}2Z}Zt@MvCKIu7i?Yd0!u=PJPf|ijmdBDA*K%95PIfYvGBA8D zlU>bZZX=sDGLGgtGmY!k88e-laB8@kt)|1?06P$u8d5Et0!iF&Tw3J@M@}3uBtc^H z0oo6E@ajy-Z-!iackDK#g+rLej+v5=FF5oiGY0*qLT8Pv!+4xCzzVT7wi{esz^Fef z%4T2ZA>K#m`6K+=d__HUcWGWUS*Qz!j2=EzGWo_Z*X(qm6&=t&z0ls?(Gf;Mz`eI3 zWMW=6&ahO#U3j=q%EdQt;dtSTg|8Q0F1%J~u(HBJU?6qb^4PEQ z*v`BId5`41kf-U+V?}w`7<#0P{aYD3SN5HEdB zW%KWv#pYc6jps8mjKEVU7f_aZQs5Jzb8%~|kZmvmEOK`+tp&0qJ4{l%NrV)JL=`qy z6*%D(%VaZ|Ite9Qp_{})i^VyH>qgA-%G0MDJ%O!9JC;eJC?w%}=f51XHfbZ5lW2 zF&#GP=;cY%i>B92mrd79`sH?$$-W%3&$+ZQ{fDm9`h{1DTqp@a5d*y8B3*h*My@wA zUM#LPkG;`z&w7_@{XIS1`|10Bw)1`5q|moZI^7u=?#`0%_cPfwy(Oi-n(XWvUuj8i zO*ZCd#mOWJyHpg!z%KWOCgt?pWr;cIGA4Hh?;{U z+a)p|X7we0ERo%t$oz@yzZ2O%CbI7(vR4w>Wa7a@u{V*`VW_ANH5~jmzm%M;rGFWoPa}7!`#?GU*mYYh`JZvepc5EDF5fOVws+w99Jt?j6g|EeP?kGwjXk zijOYTM$`iqg|v;`%X1R4O_JHL8U`adJxk87P0%K+F`Fe*Zc&LXS#RmHYO->RKgU(_ z2{IE;a5M2oss*T;r;-PufC(5v{{H|nDDlH*?Dxci{BIF~rq+VlSHG3DDBUEO3tF1n zc$fz?3ezWf@kaYBhRmCn3q?b?$AY+#_X0%!ipZ&6k3 z>Fgw~#f3_j+g<6>KzNR-tHx6k#O^xHbUve0BbYBu zv?tZ%=hq~)PiPY|z7DIJ5Zk^89s(CKN6cfcVfZ2{_mIpc-9?lx3G_s`8!iEd@1nFg zg9$gZf8HO;(#Ci?i{UF=+6m?rn`5Ni-POvaJ#gdm)dsVWellJ3%%ne;F0R2YS_}&dq|=jDnHv_s%h~j~^sDIx z85NlOX*}3Plw&kG*a0&~FNifYV|mWGBwFl7rJ7lb_9_<0Y;CJ1%2ajR z*26ks3(;Lr-&B()6*7tT-NBA1RT?rZFfC}(;jlbe7R5QwGyiHnyRdtXikfk?8Y$ut z7Pl+vV(N(gss?Gr&FarNv6UPwkEz4*nD|o8+>*M;@}b7G%#7v}kb#XbBgGEcw6&;|?<_h#{4^fl9KJGa zq!mWT`AcnJn92Tm0EGG7De{jvD#p*B-iHDx@rUbVW#%E+PT`d zYOmIs>238*Wf`zk%R|_Q>KQU8?ZDQe` zq&d8Kqfk$OnBJPj57QfltA*^;(H+CJg@v`lJC2^x2_GiMiBS+Qp(hO|@sh)Fjv`nE zK~NArbt*>8QbUg7qd19MKsSMcSc-(gRjME19xQ$(sAvVF+A6ArC*6wqrK!4Gh4GXB z5Eo|NCYztf6tz$e%?iDo*3lEKU>(ql(oJhvr~eNw)+7pD#!lnYRO@;-B|U*kUG{g2 zQ_YdG)<*~`WXvds5&yKL`<24hvY5ga`}Y6E1q|&nnVv%pOpANCmAeePP=@`%yM+V7 z%dheEzFSF^yr#l6YhDLYY;8w5RO(!JcSi@<;SJ~A6)urmyxCTik|ICSMm0cR)Ii4qj(>otFFAHnp!m~JDZ!B0CG0Q4aO9WXXAlTDd43SM z!4i5M7^O$AdzLWD?<$i6ze^aU*n1WMp^0qxZ$D^27`oG99VPTKDtAh@281Bw{^o0# zo8ABwXe7D!tzZ8-5VB#OYym+=npMQZf@M6>@&I>>ohZ0*@AU4O-QsvDJ6ZZ->FcH8 zX(+TENgM2&?wjeG?bFa=zPT(Zki`O6(PnYEFV!^KIu9+_B zn#_WHHu{0V#x7azY8*VE&07hk>$%@y>LoGYUcyji@^N`8N>e==adA)#t{!_SoxpEA z;Y-wjphC^fNmxZvbw!0PQE8TFMg2XSdhS(_l?uijWu0$S7C`|PkNF}fz+ySZYZk49 z#XMS#`Pj!3M18_-2@(VHn%uT_bA^>@@-${k@$g`8dd+EZZ>)hahW>O(byCyJ1s3Kk zs>@mp0X4aYwwOUp6p_><846n~^GuS}xYmF=ajv^%xo?Y@{iiTE3S57UvP#1}u{r2z z(xlHva?n#t<)CD0HgZ);7D}*X4WrwIS6}0`jd3EsT`1`94+Ppu$(NX9>Vod3nVy`k>DgOq))dNt4pjOo8#>`1JV9xW?7&X$~|8o2Q#+nso|UT9PZ~DnxGu z3seLvrYmMDG_$;xHQroMVKP+|G>>bAT(T%MNIhIyQL_Wpnvk~e{>3m76sIQ(Cb-R4 z2{oAi-=Pcf$nmdz_Y9Pk4cy}ke`nib72y`(h6Q>sSk_jSl7cU#?d2&cM%LI^SLb$9;NdMQELgFk(6zy{L3C9!SG5NzrnI5j zQdnrI-k?cJccbznGD2?0Uosew&0+)`@0uE27M3r>8@~JWZT{VlX;i_Lj=%~k%s}8D zZg3Rm16l+JvJ}ck*aU|gFbp41g?M~3$ikM*$sI=XZREbUnhhO>FHZc^hY9D)^W@rw z?bWxr6VPeO%uW!n*Cyyhs1Hj>_!pj*brs|q4x)i=3>|HuGi)cF{qH$y$X*TYwdnse z$)W+$XEgvB`gKamuOy=$gZKPq?Hd64^vq)7Kp%P-tpNIRO169j=G}yS$oB*0%f&wA zA#8U4d#}l4axo7bqMPuc<$|)$U4z3Oa-QbQ`1v3Q@R-+bNM{JfN$D2oH4q0L%@a3Dr97wMvZZm*oU*L2g}6XD!n=gz$+FLvJn-Ftt;uZ$^C;o3 zqseVt{+jFOB3qSz2l9C6zKLIRO(^Wix2?CkhRYK$2aB0=xF$$2*1Dv><9bk8kjq5f zo@6HeE2)vV)vQknU1wOAfZ_3nl0(-CLi!V%?a?rVbk{PSL=Y0_>g)@4`{zVG)WN*U ztbGZ#S`Rq5ax_CWg|#BT1ylD)FNV2ZR3a$c0|Ms2Yr==14M&BQ5W2Z%-#+s_EcKpy zb`Fvf*v-33cQ@_!@1ELy-)>#{?%g|gj*nA&^11cR&D9)IvZk90F+#R*q;RTGDx^R3 zMGNKRrO3)hj!qrbnR}SI$I+vVrN7dndwd%!*v8)2#?0Fs+e){MY@6Dqy|kW9t!E?a zr`8`|e`UQUu%3zX`keLRT>4w-qRgQrNkNsy(t~)snyxpyEnZq8%ZR-g^TEDI5sBX2;(SZv57$*5e+(dMOUQF_gj2XJe z$IxF=_`T3zazZ$oo@Tjw&7Cs1mYUph|=? z?c=zTO~I8eB%gkcI%wEWq1E61Dd{u@!lp0N!L)T+jEp^Rx1SUdouD`0to=NyNL+(G zT!Vpl=al4ESGbYbn2^wJhhxxwW~arL~|SBQD<=I_SF7b7$br;GNTV&fKY^ z&{p*N$Ni$q@9_uxLI1RW#;==ez1k{%vy}yq5+mL57{#EG@*QdV;LJhsPM5#cc<`XH z)$h7fS1Xj3){@HIzqraNs0^H#n(I^%YioXpLR8Bb9gC%dKr48@!{==Nfz(OOd!*Em zh37rAhxFcLT0?5)DirpEiXB``g~$UgW%q7`9x<^U;k?Izyr->;@}6HH@A+c#>CbZA z`5AQQyL`fG$d+u2>dr~K{aMBOL3f^2b*DE*cUD$ahw2)6=3~Od?Ps7sZ5Ts!Sa_Dz zzD7iJ;e^l)^)U?}Idb)3_VB|8wvjPQkq@~Jc@6~*1rJRhnmIIk$Z+V;fdhN!qYqDP zN0!vrm)q`c7u&aEUsT0J1v^slPKCI?f>k)3Y1?hgmNk*Zj%2-)CGN-axHQ)Z&xyc^ z;ECxIGbePx;b|;4ogLN)cYE(1zgxO|H}l*bxI1|F^xZReYiA}{0OgqJiJ1w_c-o6; zVla)J7`}TVEp6iN;S<_X%)}ZcJTMXeDycpl(;1CLSo9!CJ`eK{yG0PHDRWYK%%MrB zZ}YEs6+0Q57iP%Gsu>gwDpGQ(z0`jeRYIOkMXj8!kT|wTp*VA8WrT)HEL@Co!C)fA zh9N@Yv|OD+%T=uzR3QIjiQ)+HFdW~R|+ttd}(_p*nRzx;Ww=zkAI zpL>fNNlmgns_1a@pN}Xyl?AzxTpOe44K*vdk=!WlfQ~0~?%E#Ve&L^A6ULzqljxXf zxKO-){qS%vp^%2 z3vsfztKMX)?<$_ux`Y)gTx22-ENUX5q_hW%TSyN5sPX=SXg{8I`UiBe$uX2wG1GtV z`ihG6_xk;Z==-57w{8^|RVOBC+D7ne^T@~x4tGbfv(xQxxI3N29c~9ZX#4Xob6xp& z=*rLkfd`3yYio$=$`|eS(-B>H0qFuDVtT zevNi_dQH8xwQdaPU+GLFiCbPTyY+MdBUr8jczNy*7}SFfj643kb3MUi^*?e_d$ z$rxAe2Wk_wDNz;%Fg#_ihuZavj7*AVWNJXPR8AHSvcjFOh|Eh+2qUb`V0fkL(@#E$ zD!Rd3wxPmcLDP5phg*5E-q<6V5;k(q1sD^lq3`f8{N#!}4UiALMdA%^G|T&!<^&xB zHVYaYWB)}l}e{*qTPaGRh7#{LG*>p^o)$m^_*?tPH^>m`UCyJ{^|aieqA_u3YJK6 zCOetQya|kt3Ft4OM7*S5vnB4l$-q-^F^^WE*m7>n`N2oS)Cj^ZC5VM;;CXZA%R^MW4o)Knw~HvLoR6iag6NBLe-L z?N6diivPB;KQdc1Bpro3af;;rJpQ!8op?dTt$L%?bkB$W$6x_2MtRkLS`1uHcSyrr z^9#|YI3c`x-bOqO-lvvGq{0hZ(6_kS!>LH7D_9`j?(wW#Sxur_S5{nHQc`B#;@DEU z#lK}_%hVPu+iEOrY{E>DR~xT1>a6B6)^w%p-7;~m45>|7pe$H+u}tH_x9Kv8o^F&$ z!F0Bzk>*o1ZqXPMi9lh5DU6wOzxOU)#iM#QT_8k)O8&v`kP;Xo5k{wY+}Wotn)Pz= zhG`S;SG;t+R92HA;rbh4!bBqb3*@_h7Ljb}hOlIh#7K5i95)7+O=rLuHj!Vp>i|El zQJVW*yZxi#H20vHs%8pTg0YuKYJVIdOPuH81zBQaRJ^%eoh@9Z!_p?mR7rIYv&64a z{o}%J@_nnSNOD%Wk6lHZZr`d^ZEdZ1=aoA2ve(w#6=q8)bG((b_9K?S?y=p$-O`V{ z0A$nR30ga$b=5JsE~hR~H&z#{yIKdf4DwS^B|uz_QXmupgkGMtuyNjydXJ1`6&dW9 z!glZ=Po1-9ye^9eyoXsNuv$4xfY9vjs-x7ku4}heI24z*sz3=59XN}Mr>tm|hn8Op^kN{L&hgSRuy@9MmL@#+tdOuG|laP{j@|5&mo|2*_YwfhLUqZ29Haf_tbM1Qq z8}2yK;Uw3pg}jD;L;m^;Qos;ac_GZoMJ`Iq1MEQA2En1*BRugnp^MD<>ZYdGv9_vHX5xXYZ*zFx6Rt$1B5)%@I zwjnOmjcFiF2(5yh#6VJ<_M@Q?8bP52%D=?@SPG?7p|sFKB>$iD-r2M{4)pUc8O_`o zFLTd%&+?peo-?OsK|M>UkK)zb0XA5ft3Pl+pIbSo7H(Tz&_0B}JPxMn=#si&sj$#e0av5V#ZVgXT(QM;&M z0C}i>PC?kE7)98PE%U$r9GDxMUOpa)jE}dKk$8<%trP)xw>34PB-s><`YKSa^1URp z^D+xj0rW*D`%fpk%gLOUz!n-zr*o{{vc(eR)oy9Jg$XUp*Ai%nwoJFow5TmU7ORrR ze&kuIE#eCnmMDZCZ}C|yzLw*vf*~UOG5uEwd#HrEBQoO*e)kWXUR;&p4;=OJwgG00UCG?apEr_a64;7OIQG=;; zcw5i9x=*s9j^!>O5hq@XnR>ncSBMywTM*uJd+Wte_S_OfvMh)^fpBq~1 z&C2q2Tyh8_QV@D&1JTb`47r>XKJz)D9ol2)YifFpDqa8Az(%_&$!5JmARr^W;CE=22$#ls~iDu5tqV8$;HMb9{ z(Tx*4)%s|K3(A-n7i+@lOtL&RvqX_HS+2ZgzNi1gv)lnbU%+Y{4*{x5A$`iEELZGV zLHcy7TyF#4pwfzj2b7Ihrg2CT^Uz9k15*}j7H( zq0n^1zr3Q7C8-c~PNGT*hHE&pC{qBdvK( zdBnu2^JN%~l|)AV-(Pra6&j;BW6oCLxbR$14s9G7+OearZy9fnr7*Y97vs(8FkUBu z9Olbl^F)Ia$%vwzVlG2%SxJ0DDF*Mqri>$n0f*XeuS_3g*lMym1CEkl@RFF4TcpY( z8Dpk&QRD8$%B;(psN++s%`uc1mDu+nIs~t`&U~|6kdG}DWGxqDSy7>=(%%yM&3TgS zdF2sft&W>e;1C5#e2BOOfyQ3pGeKibjkmS6t*xOUb(A=08L*7Uw)cicK}scft=<7l z!C@a!7HgT!VqeQ*wBS_))8N;#u4jpuEsp5fjGhU4EAVL4yjo^QK|!S-9p#h8Tevi_ zzLlhTThbZCM^k-DXFLxTl;cJGMequ#LZw+rIwh%5WCEc3-DHU47mFR&9zk9%x;4+> zg?Al8ew?KCxbjF+yVY6b0-BZ-p5bZIH1%U$rmjldxIF2h$hCgffm?ghgQTUi5dePD(8<7Zz?H zHxYzM#~g9=xOl zWy-MeACZXuNO{C8q2qU(IA%C|`@p)mD3lAWml@OH&IVmpk7wL^&MM|vgVqqE;%Y8A6v8*)u3dPv+>9%0evuG0B1DLyc!OdpfEJ%Yl>}@y8a%Z{a z3i?9Rb*zrQ5Fc^nF-8-$HgL)ijv>Za{1q-m2aosow@g8Up-IVayowK1zA>047ccx7 zjmg;(oQXeQykOL6%;FA}76f!DbcqJ@y$&Pmo#xDlKeyYzqYx!d>t*o$IX5(>@ch+3 z5^{C}phcjCex@hIcZ6DW7@i1PrZp_Axu%)Z%xhE{4H2APsjI58(f#p){$)mXJdqjq(^shJ?a$p zT@D1ixIHiC!3I%hZ7@Gu6tkmw(|KYzFPb--C(UOwU-opi7|mvR*?HLxnj*V0jlBfq zK+Ld5n8=4cN-7d=6L%LepF#8nP$C=v6l3rR$B#!%yfX71H0gShrchRx3!jZC)6nw! zC7bVqGKEePIbnp86XutGwIbuRqD;+AzT|!Kf2f-)6Wx{rxGibm^mya)_U$wz_hLO` z^}Iz@Un7b&;OMfL=qBwi7V24Nq@K~t&kP2DR8~Z(J-(ViO}J*hMuit9UojJkgT>>; z*Nat0BgHJQnE8rli{C1qFIHKKqs3zLEL{oU+BIBLPZ!VN$y~9jzNWaire1PWBg&QO z7$*oQ5s}lyZ?p^Q2nFQWE5! zr#c*6vYwkm7;?z#Zf3oF;>2#;u9pWH8+5t4i8mrFqyd@}#jqupS$IkE!PeYCW*N*K z3=c*C#yvGShofN$=c1)i>U#>!jAAbDY@83PVplDJR%U4pw1!)!Td%d=Xw@7EU;>h! zsVo?W476e{GJx0M5yWSr_|#16Jl@qRzhxG0&9!RisyG;KZ4D1fGWCyKna0j?GQmWo zWsMK5)6j&byqpSsm;HV@wu}Lm<~ToGsWRsxk9mCS&$z@nkHyj>$JuR_323E5u@DE( zEaJHaPrwtnNo?@bu(}o{)hY=(z^A%W=eNXLHuJ9#aF0et^GEb@7V!bz#aWlu*RKcb zk}Rst8NCC2367>SI+c7098EuwV+t~?(yEszh{1FY3UYYACN0yk_zL_YXa`NX>PHnC zrF@J=fpAx0LsMx$ss!=}kf&WxXqU41DAj&Nd+OFJ%(`5A{C9P7?IG8pXwN;uLu~VB z?i?fa*}>S3jEo*qp8;VS>Z4W8?o%n;a^pt;c$3R=#zz)eW!4(VyexzVXorA@e z3SUJ4)kRfBx3@=mN)^VLidmE!=PKqa3>6hr!Mxni@BjsvSP~tlv^-vZ;yo%KH~0P; zB+p#^$U9P=P`_OF5*(GA>ogNXW3USpFFt-QhISaW7|Wdkj5=``<9*AScr-yGP+<6s8kQA{y_B! zmFfp7rXn>q3Ln86Vc{|BV|kAS9~*dV{IPS7J^t9G$Mo`J^2PFt%@_MF9=>?b#pf@+ za`BCeKfU;yi*l=sYrFAW_0x;&t&6BkU(CJeyBNM0xfs1TdvWff?jrqVr|yq#XO`_V z+eN~-=eJ06co4_8Fd|{~frM2EuyejZATS${;_D9P0{|ZA%C&&1)q=;lfD}bzS|E&V z2=f8e%>7KbKkt6=-2HFgFIw*R-5n z?8QuMlw)m7I8>&EMj)t#%mRHw_Xs}r8id%F7R;M3zzAA9=J z(=R;z+SAvce*0;;_32k}$Id|eIRoDj26p`zNjA0dqM^4255UM{)irqC7zU-7V!Xue zA}n&n6VAT3@V%dL%C3l#Kc`w}o-I=xq*!MBP+WAeqK=*-N_$jmTP{CH)$meo?gOx!lu+>shEqcTs}*{X3{vNfE?YS5ZnvWM!_ zfmJeypNvhaI^tA%&)+n1Ui?*pG>>&f6MT6w{=8^BimpnHqPr-H{>ne$XRk+7b09QBa7C*|he?@jHo9=adXCyrY?|-F-y~{9ufqb=tpp z0Pzn6dM{=$mO*VlL61`uonb)cvl%xsR6!>@=X}8_<~ghJ<2C1Xr#i!#;WSeId}X?t zRnz(I#*IWPPwM%G7IM8yRlXdFN@$z_99FsE)(-Wu=|DQyjiYTvV3Z3H!(36@Xw%J4 zbV=L?v*+6*UcHZX_lM}izOq+l9roc=Gr&R z@8GcT&gE^}_*_MMEn~G0djKi2A9>hS&zC&n2RzSs#QmN-J)+;kN<7S?JFjE^qhnvy z{hLnwypBDG)fzh1qhrlFR;pt~4TJP*2A%VuVW?6tEGY$^90H-EPf@lSz4B zZB^Y(h}@2HBDa@lD(ssv!?PlfBE!SNQE;+V-wJnIbWIZkv@JW<2wVrIzk6Oy*=>~e zTGiL8#Hytflt9l$9V}?)*T!&HO}rP?iBSW9*UNA> zjW)sSMI9;_sZv_iQVOY<)SPNQ8*q#}4%|-Nz#}j12APdMZSjY^?e}z1p+&YA+m+7X zXHZi9gkCmc?t$W7utBTKo?#p~J-mdTn}Py3zu82@+z!Ah0m-BZ`cS%X*C213IJX_i_z}+(*C+ z$@_yvl{&AdFioa$cQ6%|9jX%1dZH$hwbyk{(o% z$U;`ivx>zrTdLiX|I)^KJl8&2t2Y^o=bDy?^K)ZrP~=(T@}wRet*S36Plz)iP5r{F ziN4~0M_)0EK$;iq_75jyDQSv!l#whq6ThLWX+u+nUXkVEceKXaz?=bL{(=h=G7+6^08iYAz9qGMwF#J-6KCjMYT z(_DmCU!0KW#V7FOn-f2n&`hZOc7Kt-!@u3X&##gFyzSWRmW$ZtM~YZq(NBv+p4&cS zl&NTu+44w>B+G8LrQH37Ta?|I?sE4d?vJ^jcWaa%KXt3ZZkmymFgBZuk6=Jn=_01d z*g5d4X`>b+(XK@}wc5N*yx)a-d>`vW1|b-1OGjJ zoEx9_#?J<)!3iPXU9*>2s@1)Q6j=BNXQox7v1B^gN8-)Ow#qDxHOsXaMXU06W&PhR zQS?23F{V&6dTqm>pr6~+O+Z}vkDb3vSII_OPTb1lk`z; zv+fceXPe?~=Y6EdmIremj65i93_dvi;IRkKJ$UIs^@H5`pbe4nsn?_j3Z7I<)kC}3 zuKiQ{Ke%5!yr1n4o@Otce(kiFce?s?@U(P#Y;5!E-RuM1&vd`u{mX7u7dEGUbqbBdkv`yV>Q?mEN{QM`AYN9WXEg(!|c@JB38 zhzA~&H(KAsyA2HMm;7Y3(D57!yzhH>*SJ=oSgn2pwkkjS=PhR?nnO0rlFEE4#&e>B~hahB~4+s zhe9E^)jTh_S+JQzF~tjCrHRNuc}2TRC1JIJtS&pc)u?4!W0t+THBBu_?$K6Rt2UWj z#=`p2T$5IoJ9JEC4pmhK*&(&jp_PMBXvHc2ol%X+j@%oYrFJN^4Xd%Sn^XAFt5jg2 z?Rik?G|Nub?AtlNQ=Hk!#&@!vyy4OsZjZD_+vnR=?d`!JhSw;f%6GYPa`N|)*&a89 z`yv?Yp6Pq4Z?G+3H)n|w`@#gfmO zE%~|mPvy_%&*i_BKcBCa1p{k|)0C^4@(qUkCQ0erU(u4u5h1dNP&fVni?~$tpm<~+ z6)Q*pdn&fKwxPR8cuXPL>V{68oMo&MMb>+Iu(ERSbZ^h;?NwFVPd9A5w+)e5?Y?Rr znUSI)GK(3w;(T;&$MuXNvs6#M_|;uIM@DvyI4j#o@wECfGkvX|l2+e3u})`H zKk7h_Vmv~FD)o3`5gJtKSW=b#5;_BAfKz`t7NKdUsxX)8%Qj~^OfYm7#Mcw(zNPp& zB0Li}bVM-iwD@vSN|ojlAvKStDSNT=?4`QhQk+{XTI{*@h&^go$<(&{0`eE}g?9FK zJM*;%+Qnjfd%L|@8X4&B9-;nhi%%QCT&1?UA=n@`Gz`QN8`zoAL6t!AdS>NW0EGQ)5wq z(J0$xg`DO|4Di2S24B?s4e}n`;+Mc=qvxD9%%;^#iDUX$UORUE*xSc6$GAswS*mzy0mo zrPuI7y#4m*+3B-0XJ^k|J3Dt)lXtfIZ1Ajf_H37?jlJCVdfSiMe%YpawvC-{V|TYP ze_N<+qD^Y+f4QIC-T!d^v;ES+e%9U3n)+FPS2gUFw#!!(C<+%TL{yr2_$?lpliyMu z>pItUsY@y{b#OFX`8PZ!7)$$m$q3E#y_w?3B%km+Wub zVLOWLerQ4@Xvou6YlB)ztHodmM?w&ha0m(}g7@>0xJmX2A;%3wL5%5I2^iiD1xe|= z*N7iznhM&-?M-*oaq#1nF{I8(@T0iEYIJz*76X>l>OTqt9)mrM2BT{6DqxRx5J$yu z4^i#E)0a5+8$aABVkw{6*aO@noH{klL(e@i#A7qMZKhLi*-~^Ps5dFMt$!okxKc`o zMNP+&WH@Z1fDz$hbqCVljt<0!{vn!n_S0RA1$9IZ@aCvOAs?ep!JSN++BGtRn>b7a zU&*eS1X2O~BIWjq_cq?O$q}(P9j&LkJ9h0hwI&s}FzBqgRwev@icpI6oLIg98yGd| z7w1AvHus*B|CB~45=9mby+JPna{krLG>gQ)maENOI zEIa@)3=BXF!7hT6f~jy4&?G)-!Y!9VV?!Dp2O(|>Kr9yq0EmR+i&>w9F$VPce1HC)=&*m$d(9mryvOBE$caiAWT{(^CqRjN$7X;IsfDSOMXf4 zTm5%wDlb}NM-9ZH=_k(HHYFxD>@y4`ts zg%Psb)m!qisNrgde;HwrSf_0wq?My&YBaqCkgMlY;gG{ zWpEh{OJI9m2ie@^bRJ8wE&07gvAhS!^pPq>HbAC7fiCJSZry)i);w!84b#9faf{Hv za<<^++0LZ!xmU55tO&U*p)id8C&iAk$tbxGbISD7HBr`j^sHkKhJzdDN0z(?e zQ^|RH8bS@mMo;{=Spw9`6Aq|MmJ+rRwdEH|SQs;hiSjb0mVJ5_)q`b9f7@;Pl7LDW zSyhVEw;D@*fc9B&AOWx}J(H>MUTWDrZr%TvL>nJ8SvjP9u_@-Zc~CU=+W0c5q9Y>i zwiBmr$#k+F7Qdw%4~su3$q|cET{w6JfQ#fS!v??Sr(IU1ammwQ2l9?vstBQ89U>7Sg zc6Awxq+N$8VwGQyu&WVv0J#iW3aEc@MJ|&B)u@ofT|GU-kTt3~EEWBVh%8>iUQerfXc#apB>__(V80`z=8V;2uqXHBo(opy2dwdoLO<3+L@nj`V z+q`m0c_&RNe}erurW}CA_Un!6S%>2}suE&I9U4$HR2DS4Gt0!?vOg>(f}4cUJ*(Rx_sHbPu9I) z-)Db=cf<6WVzVw8efVK#_wk{Zrt{r==mq>6`DKHj>Z7R_ z>c>JS5oSD^Q9s)gG-xzoOVlD-EIsr!Hv0X%_0j1-Uy+RMfWT*{z$`l29qpAHDgG>` zZ(GU0C!9LWL8BZ>?#zcd_!`DIL1L15Go`6zmG+>NsSaZPg?U0pUo2!mo6EO!#@md# zz5H?U=dr#Z-O@H^5rZA~VzA@I@=V9=80+{Ijdc`$g}Q;hqCComkSx18+Us?c%l3ov z(z7nqzqQC2ax8AmDf^+r@#$DNNw+FK!7wKL`Blco#_E+phL`F^arbWOM0=5@82AuF zZ?O;COt931(K-`aWTKj>VV0U)P)-5DEM})J6*FaU0h0=N-K@+iNWaCT0yVfPn|H|e zlikN|J>~ZE^N+Z{5JMvGX-pxhi!0}CVw$K?*VY$G_kG~M6-y76)9lo7PhoV1nS zE}?h#z4J+~R$+~-Q-P_hlHe7wp{P(}FlrxiXpMSMlX*{`d4D76PMDm{mJ8?aE^%}_ z_`w>LJ|Zp%9-&1Tx}296+wNTnzmivv;cTqD!I(>RJ!;?je40s@Y=*~K~nR{IttBNF&3C4X>;#OJNWRc3qc)f@jPF;FI!(tsIj z1PWo)J2y60Cp*3Tk9YHd!D9QrD8poYw(R?M{@t-HS^N*di@<2t<$?k}`&2Z;uvwM< zGYK`;n%8Qi=D8Ynu7*|DuuC~+-tl4V zRqaUP1g@BxUuDbKsIn$hT+v~sH&5%07ie_rac&KZxHZf!e2m-5Qf@0zJ;WrJ-dX2M znZ>EUvlDX=4&Z^d8wa^8JgD1E3IF{$C>d4k#&XAeW76E%TVwNM(%2YkD@`v|RP0Mw zDiqEz_(iRnFLheBG0QeQ3!ZMU5TCsT0Ct!~*fdjHk(UO-pkEhcUE5rPbjsH-3&J+Z0`4|35N(*|FIB#V0DpQ7@7-w7hVf#i;TnE}nsqib zbTY}kZ&iz!9NOZwo){*fNE2W`2^9Vhk4Smo0~6^6h`fI3_*IBR zzUWGhY<)}_*~$e{5wxkzuJp&15wD`u5ig+U*(SBQ-K^sCU@sAzNqzdXxY!|VM8S6# zX686AqYHo|l3D{cmv#kR*InWZE_Tdy&Lz$hc@%RQTn2%rovuv7q|q4!F{zJT1z8<~u1KW8j{Y8+4|0AzXI-BZKdh6>S3=!wU;tx8IXH)b%26y=1aEHCZ z#h|sZo0XzVrLnTRQY_{9L(@woCGD_2bmunxi;vyuWBYt8D|v4uQo`)ZzaG!{n0i+!=0U(8UT>^BN7 z&s#GT%XY_ezU`dk>iC3wkjP;fx#gu9gkHWW-Vbd(cCi z@v2xK{zDP9p1IS~OFR9^PW>8m>Q8bV-OXcA8)*Cch3%K?>S9aZsdadr0mJ3(*W>%% zr9A9;7aazNK_I?Fp46>zfGG$|9N%UA5w~>nmQzx#xx{^~)4OR|ul*-;{aD-HmxG$GQQ6>#dSNn1TIpUm}!5HVLbJW#MR28Fv8C1o{&QYHe?KoHd z!*k>v@Gd-L<#@}gsYe`dq3)w4ILb5_m7nY~>g+pT*{wEcRVX8VgV%e{7Z<2?MvcAL zX4Wyi^oIZkbTU2MLmdVP4SMXNN>eZ#8TBUWht)@q?kl0rX^q^MzWCOX0-`81#%_iM z>kE$t3pH+!`!2WilAC?P%|h-8y!e1yRqtj6NKZ-+l(N!d%CNF9(OcByVqO>H?8;Uv z;a#H78nB8*)*@>PCw08;in1Yf{>Lltux`t~b+M*E+1!rJ->Lnvn5mXZ6JK;8Vz%gf zTDAVkKetJ?#h;io=rKQ1lP_sD9eQF3r}UdTIb=vz4}I@`hhFY8YD+72ed@yfI4LdQ zjIM?JE!fcAAzTVNI@}MqMUR`g+)RV7Syl>V@X*&p`*_e$taD|!ye>(0QCw>k>Tt1{ zZL}0CH9X+B_|`L4wD?(>1y#s7@ZeL+`Sp#gdgHl`;xRm2+9(xUH*T~ROZqAbZ&I0u zVfCqdg+E|HBM)hkcM6KM>^`Z9`A=E1w!DAEETS!cc`cQ~lRVr%S-;<;(k<+gE$Sk* zWWMi-bt;whzj6PJY+F^n|G-DYW~!Wa@ye-@DyP5J%51@ejCfHc>oQf6+%N0ZjlVY} z%aji5b3H8&oISj_$NsfssdVwz6j1m#GVW$ zW~66`-_KxwknxF(Z)Qjj^2w6U45rE`$`CWk znbj7v&m6$Zd0f|+fa`a@-N5o1svE>&b3=oS4SG#xS9qu_A+Jpj-+OHFe#%~d;BY*jsGYXl zIE;2b5?49MxvvH5J6$Z_#hfmtcCjD1*pserxkQgE9aan$!#1;wR<;otWQn2@F-`HynIY+`RBkWsWXA+s?qVv$)$RvzMG&#?sj@ z`LU60=*d)0%?EZQq|kEi?gNXX`K5p7%rvWsS7pDFNt0#TDQ$@fVwB0j^{>0w-LB8N z#9c0?b9K8!m-i37EYr(=<7MCRvX6OR@xI}eruZd;ml+d6c)3vL0R2_${%=BB$2w)S z2h-7*Y<%9#`pk#TKQ&9TIn!Kj?lV7cegiMH78UA_Kka1Ccd}e!XBCm}S>_tqxkhGb z3^$4=Em$fch8yP^MS4Bch$YL)TXT&PEu0Vw&7F;no#sN7Zg^Dz#<^A~F<1J}dAB+T zGRgL#DV>B$Z{rt@h0)IyLX96OxQb4q;p7akB4&;lCB=*dZ)6y! z|1eLjwxUlue$bv2hZcU8fH}_s<{U&;&;C2Xru{I$(7ysNuQ#2|ak&n?&**G)V8>e9EOg3*Q{M# zbL8Kwz!{a|4m!8Lim^1t*m{cU((UqXNVcSC3p@L`_9IuahedFldqqV={4l_+mU#GbXGwY$s|_d<ey9$AKMhk_6%FB{`qn#Cs%~ZiJ=Na6Y-njkdAYps!PA7|Z()nSDuSFUsssWGql+ z9@&p|Fp`}0eAX*jzsZuCvU;*aZx+kSpfJz^nK@n4p_$NZ=vqh>3RQTujoNOoOle7+ z)k3qY&vn>!kLwYay28aoqEey_Efp-UqPjx7Ca|b*O%Pobf>7a-TDDM&M9+VDncvHP z>19{F>=`e6z{~FPvPmxsd0B&(c@Toue6WVyUBl!W_T`$N)cjA4^hyo;R1G^*!w%Q5 z-Ws;ChWSu=`s|Ibfh4x=!8X>@#@eiH9{ih7vuU7zc?;$AJdJOpE^$04zaZ~3Zt)>weTS6|!=dCfUlR3I{b&3W}T`)>%9Ldy-_!5#hkP%y>07oDcZO4H5uNaa93vS zC)oU6#I(1Y)nAGo_RLWK_GEg{Lg~Q)1#BvQd`xXni!PJfSkhWksFO^(L5oITxPDVn zXp-%)i8Z8U3v+ffO10b=k~YNRl>nNhJ{k1wbFu&Axx?@qQj* z>rcJE@v54HLoe6wPuqlMGxbkq3!0Y8$t z0C*q#X0spJLTC-M96P=Mu#|i)E*KinMV6LwYj2(>ECarz*dWg)j0>UTXvLwuZ-p6V z1+8~%t*Y93N9(5O_L`dQ(M^3rLw$uCX&=$XU#5$UpIO1?j$7f!QnKv(?m4u$J*U3A zytJ!6C%e9@th~EEhh_N-3u?`-+_bbjw}rzRyQOJJp%$A`Zewl1B2}OxAo>HLz(hbQ z1~=3|?*Nkr*!cm5C#3^T1LDAD(s|6`yxiB=+}$j4(usk(x`Iy>hz}L~X~ETkFBSZ% zKz(Nc+grf83RrysCev8~{55+{U>kt$9ulMlf&D~aZwTyj0{fuA&Is&)z_tjiSzx6o z)^A55jUjv-`~1on+kUiex^AXUnyq9}zQv=juClVOPcnm)D-x{ul*oQ8vgbth0g;^+ z*+G$Yip+~PK3lVmmD$)q+Zo$=o787xHfmVG%#4=)289cV0Jvn{Kt4BqQqeVq7tSd#=#9tSbJ8J9K z+hw&nOESqhU7I%-hA#Ahvn5wjnQJC)AMqH(w8g(6J_`25+Oo`rlkt;3xuwnwcMx;& zl{^b=ik<3UZkEPuM9+`j*soWKnslezoL6lYRl3c3Su*4ll{(e3*4T^Amv#2)KY@GL zqPT~i@htcwhz|9D5%|J`d2JgaT+y?fBTpq-S`Dk!%spOZVY4Y6dnz(>+EE8ovavn`_RzV zj$-C7W<}uJ_4{k+KA|dpdHwpWt$I8sLY)EJxh5f<_6~xNi}+iD?sdL_zVf=K>E6M=>wA5Oc=MCZgk=v!<^!PDb~~ni^@+AaU9`9QLY5EOX+eWE(+S0tMsL4 zk~bGz7Adt;&V7(_aEN@6a&_f*qy8#=cuFhpCXjo#tewJy?80YdSr^nx>dJ6)zQ!|CkH&S~1l+7_#f+BojL_`KS@8GCBJCyTmf z^b%H1-G6Vr9$jKxvaYal^T(fhqTI-2zs?|gBK!81rt>#)%iGW2KZV0!0d`FHKLaz6 z+k}I{v%#$W0oD~@9vIlLH_XC)6ZxzpzbjwNuc?WfzRQ)BeOv}e;&FyZ25E$f#Vf6D zVFZ%!YHsuO271H2(cbCanO==AEs!>yHj}2Brj=*CY3|!@bEoyHOlS=q7fdP0B$Zit z;;}+FkW4~2uu-_ZaWjN<019E9n#1lCf+V37EbIzE2S{38BJ1qzH>3q~#6_X|s!kWQ$bp$YEyUI>YxBMSJCEho{xcgm?f5%g2MJeE~+BeZyTOLpnQ<)zw}IGewS9Dl2;h!ZcS(?}|DSiPCw> zxl<9JMB)>JcQOd>&N~&s9XgaEJ5cc`pe7d|4i>=?T!M%smBYn75($tF*Z&jwL8{y) zDs2p!d~O<-U6g)zncltIVS3VL`?1rF62#)ib~{ba+3mmKuh`#yp2YiKB;K!Z@qXpK zi1!!vZ<{UKtZK_T$Kt=~<)yE1U}cmd=)k(r^bP6};g2tCH2XSoN4LlQ4Hv{D{W7y;5u_uOBQsrK#R2c}gjX;KQc=6{mFd`U00IJksuT zY+jNVURMsOH&~sc!7&|(9n+%VNaC0lHI!!R)V9gkLCx8)U3_ZcjTnK9gCj^VI^H?KLcDN{MFg(VgHCnAgGRGoMW zn{{K=36+ozP+W0&enhtS3%?Fpx`Het$btj9f$o$bHkj6j7&W7SX-Rx;vIqCEb4WT^d!cK2G(d%f%ebA^m8ooPncl7T0yH$6Sl!N2pbY@wXOO8>t z9L+uIJ1SYG$657waGcQ1qn7dT_{_Kz2GEITVsmty^`);nIzE1MU3#C|{60!dw!>bV zxxJ2+F;Fm8;35S$qAZ2mZ<<90eFovZ_$d!^aCb-E&W&tmao!5 ztQZ0kFNXJK~qN7z1ONvKNwS*?56GF;|qVEfYP4; zl)ix) zJE9&RznA{#f`=_n8CoW7+ zq5E_yFf}_RMW@*O6shUMQ&SIfHJx2UO?hpa>eJ9yPOzX{AU~y4s-ds^y5h1(VaaFV z2QDBI=Lovuxc(P)_Wupg95W0h=m+SM~q){}x71q0$jSECm793&S7T3s#%hIhf-a+~qh8YD*8S;_18Rd!mYL+vt zcJ2od-&tS=aq!+m9K7@8g>Mju{|yDi{|15h zKQWpP6Ns;dDZC>g;sF3UCxjPXMiSPt<=y1EKPgwau5N!eYsl`(7Woj7*`-$R-Medi z{Mh)pacP{aS@sb{#!}c7b%~dbkaTw)IkF4#RU0vd+$3yWAzvjjCR@T&`la4ckugk7 z(k~*pxpfJ@i&IqoEO^2Ediq0=%-S^xn0~2@-@6ywxLC&l{Jn5?TW$M+-ydC^)uZvA z{cx5<{C76nWiH}xDt_<56u);ex-a4PCX#+{Y|oB`UvXGJ53qh)h(;#AQ<8JF1*krS z!C@|BkFW`h1!skS30fNtFwX&Y;7s=!)^vuQxs%QroT29`Vd>s zm7o+Ojet6E2SZseqNODv6W)j+KlE&UwJQd&OQ6SG17PQb6>Fx&s|VaM>wq_xS_iZE zk^;lG9SK*d6(C+M+1dw3VnBT9j%_`eb$=?JIFX*3CC3BsR^NLF!2e7^>eKxl+kA1X z9+Qpvajd?ex}~slpV;%3%`R3`D0Q9a!*t(JV)C9X{hmZj?w`8raJH7`&lyb{Hzq^! zy?aMF>amq;PXH4hCxjW{KZDkZv#jeZD?ZE4eyHa|>_ZQez-Z6MLk(kWEE>g9mL>t) z;IAAy^iU8oeK{POnwS!&NK5o5Pfm=ou2D8huNsE^kb6~CXGw|EpB_q|NS8{|S$bBM zGyG8Wq3MTa9#Tz*XToB5I65po6drauhr7Ga!rqr0hN=y(<0zbS96EMtEX3u?e^W~SzKV&$j`x+gSV}+SaxG(vvPt%C&(7Of zYcgsoHKJkL7&gOPF-HlY`f5u!u0tS^*IJfU8a_GzTtIwJJ>;v(Jb>& zAJ0gH@MQpK)^JeSjf0oeYTFiHO@9U!Yqc9p>dFu7(dikg5Z2n>Of^#%9^Y(XYJ)yq zU(wZ2j?7%sp_5eh9e!Xt+n*-u_I;a80doF|tK!)wlX`gaj(u_ebs*utD)#Iif}^sa z%tVQxQ>a0aX|Hgna5-r7Y-AfZmu~LaEN<>5kq4j>a#v3d^W?A`pRb&*6+jQm%DQ4X z{04l&Kwad)TB)`+7KmU^MX+>N6uUlDyTV=3uIa9sE|t#}aFMrC`E~_%iCtFLu3au` zm&$mAyw$)8Z>5+fs1b$7L@flxQi9=x9x1L0(p+wDVkq2u)`Jy=DKl0IJ8NrVm8lP> znwf=bN}7MmlE!lAliPj1?I$~0PYu`B4xef*4OV1~4sd?C>Q?r}zeu-Ol zxOHhR{Agu4%i_*UODSkk;=h;6yIg1k+uT{^4H`4BJoQWlT$Y&dS65GUgSLFno}DD= zFeE)Ze2PXbg68JVNmeq+oRdsD$tLMinlNr17stm#J*=dMIWanht1q?Jgi%YP_w|Nw zZX`FFE9KIw30L@31ddAzH#19nF6TF#0mC7B7Y(_F8N*WsRr|Do1q_T{KV`UPP+2W5 zb}H|Yy%;p8*&CRq)GyYn4d{+D7>_P7KJPhnx~M^R#Z+aPppuq# zYJH~G*oM4cuhtlYW}SHEPszZ1!)AMhhfkkZ!l%1a!lye9-L`IZ*Z}2~UjY`l3nr!z z4M}6dQ$bV1W>&nJZ65W*TaA#05d)@Sr>D|iDOPUU#Mg*|8uLn1(@r&X=4Dr?X99r} zsgK;&7Al)46C0G#f}p#|w==L)47xZsgt*gHROH$zWv8bjVvbyvWh6_8cWQh@TBi&I zCF7eETas`|@ecYF#4uiUN$j?cmnA_&SHGgTk}SL|e@~S50paP?%0nc?Aw1Q|y8z-W zd`6b_Ek?Prw>B%ikx;_-m*wVc*s=JIEX%ce5Suo59BG>g?s>E#d(YEaU^t6gO=`7C z+D8``Uu8S!=R0U`e#6Lge%V}i_u2O~p~w=V>Pz_JADyW}^`#nrt7m-Qc!}~xUfKD@ zMT8*&iZ3Lc0xq39h5r+@+}_7ReXOLfp-=4Fy?dA>1WLhR+Kzn{EL6c7DwwB&RV)$I z4lXEXL(illsH<2NTsm1QmO^MR7GnJ)4{W_heLDhJPZr%VjRj?zY3Gddnsd&n3Kz2Q zQMSWbc=TwYbB8JmtUTkF)6=sc!xYMW3NCOq->jiZBn7A`0;G3hZUIpR^@=B15@K!v zIcl7%mKw-;X_B}ER|^u>K8$NrX!efCx(=)SE$m) z{uS8r>;FKWVF8dZW>s`SvoW``GX(lp4%Fp&8crVFTLOg8k5AR?t5NW~Tu;Tw@ZiEv zme*`lH{Jn`{}^PSF9hKX?h@X(D$8MpU%cpI8Sm`d-zO@1kn{yX`|!SU7Aj{Azt9!Cr^mnroOsUZo1G>$;UEWErL^QU+oC4o)V3-2X z>EW4SP2R!kgW|BW;NZam=ddah*)3^6<_Zmni9Tth5ovP0hzA8Ut*WqtP3|!|EpBK5-hdX2M@AMiR+IwNC*JhGhi} z8F1peGC-Ie&s47tb&;e~#XQ8tY<6~rSV@RELQESYyS51dYe19(fqF0cl9+~C=*bEc zzzQ5A$y-ia9*905HisXG;HUHeT?-!y4@HKeLz2%Kc8ZpQ+=6gHq##-VeD-wiY2WGD z(<+PQ(DWhksP9np(Ci^8dT9QTc&IzjV*$Ku!8LKnS#bK$q05~YK$pmd<7 z(m^QEg}*^IidG~%g*y4^3ucYR%svY%G<%J#&|;-cf&vC$gaW}JH$ok5lFF3xAy~BA}s}cj~*-r&G%aYIvk0+#``y8Wm0o=Y($ujr)6< zr`O*r_9o$zVA|0Bat6f&UQoQ2dQNn+&Tf`shUC^(^w^Lk5)*29npCjjfNv-;6owK` z56ui|e9nL~>LeGX4nq;e=m7=|J8%H{rOG^;)USkzitCr6JBpX$Zi*{eGHpqEs++0P zdooftsX?uYs4nwZin)q8EN^3xE!AOVz+wFmA}5CxB!?9ZLUn=0LXi$2g zvxbd}kD_vU0=>|ZPQLPK?!CSX!}WzZ0?};SK5Epc%WBA0)IE!A_V5J9*%j-7nn7#H;=eR?@*b zI0T!XpC6crvW93^RP;nybb9(8I^!o`7_3thTUq_q&aI+nE8BYe?PK)D5MrIt(J2*K z4%snzl!cD6hS+$IJTVd4GOKZCyL|c$IGJ(vcmTv;3ddQ$Qt~Zx&Fs29g$v!l^IVfAJ!I7jbLpY+vN{?}abh z7oUhBz4h$_3eubD^lYlmO9H(ci#qpWX@nAH_w@Gi5DWEigjlCfPR2v5n&U}JHMVD% zXH;9IKZ8MPLuv1R;S#e3P5U2Z4Ue+oN7=|=`xh>2>%1{(fIOYj5{@iv7i*VyW2Y z^Lkw&8>_c554G`TyL=Y{7s3~!7p5=FT+sMNqFBMSKe}JMFtXp}+COqZ6=@zCiV)-r zs;podQVtLLHY6$NDP)C$P)GmHW=fxdywxgLFNb=U^jO6j6`_HI_9}`P*S{tCSxS1w zL0@XbS3qANyel!^`q-Y4C75rldH-E*n=7T5DW}W!^0Hz}{_Z-XN#irxx824x zrf~qkOq3gn2>@;p)AoRqRx}h>)n^)*xiv$ za=^Gtjb{Mv+AWC;Al0R2*(NDwm(%O=vLYO8w#NBpPhVHkWLw zEwQN6)E(GYV#xDWuWQ)K{y;B(=2@=r&~@7@Z}3>nW>>{Dxvir;#pfP7obsm6%B4K8pcHvIT~^TDRGin)^HbZGpEYU`DEuR4;s5IINHrGFC72P@jn2-_6x}$H0w(ND z>c+_MwuQGcYrCr|yJ|BtYq~3|x@$9;%aoCuo}S}0>g~DC^xO=rHc2#A7Ygmd?ZS&e zYlxG)7K7(C(g<4C-DG06k@49zS;azCthkC*1sl;I1ZvDC;%>gu+`MZYwKb$ugYU~( zp}vVeu@4GzwWEVO)pAmnf+Ai_@TCXRMPF7ROC;iqFnD0ovx-?kDFv$H z4uRCpxFI+h6sd%HWkXgLm8XL>X5Zn!;qc+; z;pxLOhc!{}w0FiU!J>J^Xw7uZOpP?XVP=DP*jux~Y~E1gJ*);dLPWv$1031q#8`B= zd0T^m560!HgheT0#qa@IbOGVRm+(b3e6~0RxaX+vYO?+zYVSr26Ymf8p&>sidW{ z&S#uw=N}{ip9P}x!0sbQ4$zAT1UWhRKo3c~m0&=0^=VE!PkT;>POErwZ4r)HkBP^Q zIY&Grp%ID3;V%y=s{>_sxF~`JHS8jUbm@ZljuQfad;xkdQxTx zf@!_C%dA^wbu=~0=l=*cRlH0E-lEqT2~j+PGH#;DHh17FbN_CbD0nSfu|}g zNWHm&klQO2p`<;If+6+6#Ys`PGQf;1u^~(PV3a^}Rl5&5#FTmwbs7MRHe*UUF%Y$) za>Vvv3MW8QIQ`A}Y8g{FdKptV2K~cHAMsq?-o}Fjfr)0yDVH~~uvGTmM)3Say#xhXh)BS1gF#F)LEx!w;u};PA zElVeL-dSO%>zn_c&kceuN-MwIG_kmGnaOAWchw;sSaA|&H-uR&Y=JP(2!9bYPHteH z4gL+{2CP^hkzru!YG)s$n30hp!cM+=!H_lC$o!3=MzN90aQ%8khG1Ea$q?B474NZQ z+v)AXUD3|z&Y4b$BCu$d6ve>#F4mbP?Aj${b*l3Bg~ObMG@r|HNfODOc8WApBlNg1 z0f4RPdU4uPN_z=mD#FM4Tn!&h8OlN3UZECQbyA0|Dqx-NuB3!NnYR;@a?0q{a)C16 zZl`h9W@CafnX_$=!}Kwm?Ptm>X@$7gHDtZP{X?^@C*Al%$BWbd`9Qz zn9*7CN&u}UYI}!b2YJ8n50^_yu*M4v0@eGrvWBf)F)*v~c2;sbOF&vd=jc8?^XNl* zQJ>kB$(k}*StiTm^22S+rlT#E^f&a2{Cu0cxjo6@J9%u*sO+^Cs z366$GqodQKGozX)CQ${J*Hqmkj%Eu@;DH-e<@1BBC`58>3(}9B>VzKPHHC1b3ki&? z#z)h{)HJwS6_+#ufF?DVCamx3g*ye~T4U1Zm~yz64)K)d*{9;2hR^1Wuoo7-6ff7Y z@1tC|V29!NPK#XDM>wVpTg zWCzV9)Xd{PQ+lT7jFf2S37SuB=toYNDyDE1}RS-Y#g~^8HDsnRHHi zCPR}d-qn*4>+1PIBMUXMl1654WZFh1lO?!ZGs2fXJKYu!vv|Uu8IRNw_C!2U&%8(F zA>p?geOtm?M55~t*F%z6tdN9K?lz^irC7@ zQE¨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

9&q*_ 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

<$n6wh;p`IJAI@pkc?5^*(^e!P;)-MB3~1 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�My2Kiep= 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�tRbgC{@R1+UzYOs)l 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¬<% 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�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%0DIgsh&^1c{H9We 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

LS#20BX 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 literal 0 HcmV?d00001 diff --git a/web/src/main/webapp/v2/src/assets/fonts/nanum/nanum-gothic-v8-korean-800.woff b/web/src/main/webapp/v2/src/assets/fonts/nanum/nanum-gothic-v8-korean-800.woff new file mode 100644 index 0000000000000000000000000000000000000000..cb8e5bc5e49804527d2e46ba9421f9b4c5444bdd GIT binary patch literal 597164 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 z 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

ai>cn>O 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 z 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